<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Ivan’s Prompt.Build (PTB) Substack]]></title><description><![CDATA[Founder @ Prompt.Build (PTB). We built the Blueprint Engine - the missing layer that lets AI build complex apps without forgetting what it built. I share honest build notes, what breaks, and how we fix it. https://prompt.build]]></description><link>https://blog.prompt.build</link><image><url>https://substackcdn.com/image/fetch/$s_!wkAG!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a08b358-e984-49d9-ba0d-76f0c3d7867a_1280x1280.png</url><title>Ivan’s Prompt.Build (PTB) Substack</title><link>https://blog.prompt.build</link></image><generator>Substack</generator><lastBuildDate>Sun, 17 May 2026 10:41:39 GMT</lastBuildDate><atom:link href="https://blog.prompt.build/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Ivan Goh @ Prompt.Build]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[promptbuild@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[promptbuild@substack.com]]></itunes:email><itunes:name><![CDATA[Ivan Goh - Prompt.Build]]></itunes:name></itunes:owner><itunes:author><![CDATA[Ivan Goh - Prompt.Build]]></itunes:author><googleplay:owner><![CDATA[promptbuild@substack.com]]></googleplay:owner><googleplay:email><![CDATA[promptbuild@substack.com]]></googleplay:email><googleplay:author><![CDATA[Ivan Goh - Prompt.Build]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Vibe-Coding: 可能性と限界]]></title><description><![CDATA[&#20693;&#12425;&#12399; vibe-coding &#12395;&#12363;&#12394;&#12426;&#24375;&#27671;&#12391;&#12377;&#12290;&#12369;&#12428;&#12393;&#12418; &#12496;&#12483;&#12463;&#12456;&#12531;&#12489;&#12398;&#32080;&#21512;&#12289;&#12488;&#12540;&#12463;&#12531;&#28040;&#36027;&#12398;&#33192;&#24373;&#12289;&#12381;&#12375;&#12390; LLM&#12398;&#35492;&#12426;&#12364;&#31309;&#12415;&#37325;&#12394;&#12427;&#21839;&#38988; &#12399;&#29694;&#23455;&#12290;&#12371;&#12371;&#12391;&#12399;&#12289;&#23455;&#36939;&#29992;&#12391;&#20309;&#24230;&#12418;&#12406;&#12388;&#12363;&#12387;&#12390;&#12356;&#12427; 5&#12388;&#12398;&#35506;&#38988; &#12434;&#12414;&#12392;&#12417;&#12414;&#12377;&#12290;]]></description><link>https://blog.prompt.build/p/vibe-coding-kanousei-to-genkai</link><guid isPermaLink="false">https://blog.prompt.build/p/vibe-coding-kanousei-to-genkai</guid><dc:creator><![CDATA[Ivan Goh - Prompt.Build]]></dc:creator><pubDate>Fri, 10 Oct 2025 06:43:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EiL1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>&#20693;&#12399; <strong>Prompt.Build</strong> &#12398;&#20849;&#21516;&#21109;&#26989;&#32773;/CEO&#12289;Ivan &#12391;&#12377;&#12290;&#20197;&#21069;&#12399; <strong>BeyondRisk AI-6</strong> &#12392;&#12375;&#12390;&#12456;&#12531;&#12479;&#12540;&#12503;&#12521;&#12452;&#12474;&#21521;&#12369;&#12398;AI&#12471;&#12473;&#12486;&#12512;&#12434;&#20316;&#12387;&#12390;&#12356;&#12414;&#12375;&#12383;&#12290;&#12473;&#12500;&#12540;&#12489;&#37325;&#35222;&#12391;&#12289;&#26089;&#12356;&#27573;&#38542;&#12363;&#12425; vibe-coding&#31995;&#12398;&#12484;&#12540;&#12523;&#12434;&#21462;&#12426;&#20837;&#12428;&#12390;&#12365;&#12414;&#12375;&#12383;&#12290;&#12377;&#12372;&#12367;&#24375;&#27671;&#8212;&#8212;&#12381;&#12375;&#12390;&#12289;&#12414;&#12384;&#12414;&#12384;&#22987;&#12414;&#12387;&#12383;&#12400;&#12363;&#12426;&#12384;&#12392;&#12418;&#24605;&#12387;&#12390;&#12356;&#12414;&#12377;&#12290;&#128640; &#12371;&#12398;&#25237;&#31295;&#12399;&#12289;vibe-coding &#12391;&#26412;&#24403;&#12395;&#12503;&#12525;&#12480;&#12463;&#12471;&#12519;&#12531;&#12414;&#12391;&#25345;&#12387;&#12390;&#12356;&#12371;&#12358;&#12392;&#12375;&#12383;&#26178;&#12395;&#29694;&#22580;&#12398;&#12481;&#12540;&#12512;&#12364;&#30452;&#38754;&#12377;&#12427;&#30171;&#12415;&#12434;&#35352;&#37682;&#12375;&#12383;&#12418;&#12398;&#12391;&#12377;&#12290;<strong>&#20170;&#22238;&#12399;&#35299;&#27770;&#31574;&#12399;&#26360;&#12365;&#12414;&#12379;&#12435;</strong>&#12290;&#27425;&#22238;&#12289;&#20693;&#12425;&#12398;&#12450;&#12503;&#12525;&#12540;&#12481;&#12434;&#20849;&#26377;&#12375;&#12414;&#12377;&#12290;</p></blockquote><p>Also available in: <a href="https://blog.prompt.build/p/vibe-coding-the-promise-and-the-limits">EN</a> | <a href="https://blog.prompt.build/p/vibe-coding-a-promessa-e-os-limites">PT-BR</a></p><h2>Vibe-coding &#12364;&#24471;&#24847;&#12394;&#12371;&#12392;&#65288;&#20693;&#12425;&#12364;&#24375;&#27671;&#12394;&#29702;&#30001;&#65289;&#10024;</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EiL1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EiL1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EiL1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Generated image&quot;,&quot;title&quot;:&quot;Generated image&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Generated image" title="Generated image" srcset="https://substackcdn.com/image/fetch/$s_!EiL1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Vibe-coding</strong>&#65288;&#12420;&#12426;&#12383;&#12356;&#12371;&#12392;&#12434;AI&#12395;&#20253;&#12360;&#12390;&#20316;&#12425;&#12379;&#12427;&#12420;&#12426;&#26041;&#65289;&#12399; <strong>&#12501;&#12525;&#12531;&#12488;&#12456;&#12531;&#12489;&#12434;&#22311;&#20498;&#30340;&#12395;&#36895;&#12367;</strong> &#12375;&#12414;&#12377;&#12290;&#12476;&#12525;&#12363;&#12425;&#12391;&#12418;1&#12475;&#12483;&#12471;&#12519;&#12531;&#12391;&#8220;&#12381;&#12428;&#12387;&#12413;&#12356;&#8221;&#12450;&#12503;&#12522;&#12395;&#23626;&#12367;&#12290;&#12506;&#12540;&#12472;&#12364;&#31435;&#12385;&#19978;&#12364;&#12426;&#12289;&#12490;&#12499;&#12466;&#12540;&#12471;&#12519;&#12531;&#12364;&#21205;&#12365;&#12289;&#12501;&#12457;&#12540;&#12512;&#12420;&#12486;&#12540;&#12502;&#12523;&#12364;&#20006;&#12403;&#12289;&#38263;&#12356;&#35696;&#35542;&#12394;&#12375;&#12395;&#35211;&#12383;&#30446;&#12418;&#25539;&#12358;&#12290;</p><p>&#12373;&#12425;&#12395; <strong>idea &#8594; screen &#12398;&#36317;&#38626;&#12364;&#30701;&#12356;</strong>&#12290;&#12481;&#12465;&#12483;&#12488;&#12420;&#12527;&#12452;&#12516;&#12540;&#12420;&#24341;&#12365;&#32153;&#12366;&#12398;&#21069;&#12395;&#12289;&#12300;&#12371;&#12358;&#12375;&#12383;&#12356;&#12301;&#12434;&#20253;&#12360;&#12390;&#12377;&#12368;&#35211;&#12360;&#12427;&#12290;&#12384;&#12363;&#12425;&#35430;&#34892;&#22238;&#25968;&#12364;&#22679;&#12360;&#12427;&#12290;&#12524;&#12452;&#12450;&#12454;&#12488;&#12434;2&#26696;&#35430;&#12377;&#12289;&#12467;&#12531;&#12509;&#12540;&#12493;&#12531;&#12488;&#12434;&#24046;&#12375;&#26367;&#12360;&#12427;&#12289;&#12467;&#12500;&#12540;&#12434;&#12356;&#12376;&#12427;&#8212;&#8212;&#12456;&#12531;&#12472;&#12491;&#12450;&#12522;&#12531;&#12464;&#12398;&#24037;&#25968;&#12434;&#39154;&#12415;&#36796;&#12416;&#21069;&#12395;&#12290;</p><p>&#12375;&#12363;&#12418;&#20170;&#12399;&#12501;&#12525;&#12531;&#12488;&#23554;&#29992;&#12391;&#12418;&#12394;&#12356;&#12290;&#22810;&#12367;&#12398; vibe-coding &#12503;&#12521;&#12483;&#12488;&#12501;&#12457;&#12540;&#12512;&#12399; <strong>ready-made backend</strong> &#12434;&#19968;&#32210;&#12395;&#37197;&#32218;&#12375;&#12414;&#12377;&#12290;&#12383;&#12392;&#12360;&#12400; <strong>Supabase</strong>&#65288;managed/OSS&#65289;&#12290;<strong>auth / Postgres / RLS / storage / &#20351;&#12356;&#12420;&#12377;&#12356; SDK</strong> &#12364; Day 1 &#12363;&#12425;&#25539;&#12358;&#12290;&#12388;&#12414;&#12426;&#12289;&#12487;&#12514;&#12420;&#31038;&#20869;&#12484;&#12540;&#12523;&#12364;&#12463;&#12522;&#12483;&#12463;&#12384;&#12369;&#12398;&#27579;&#12391;&#12399;&#12394;&#12367;&#12289;<strong>&#31471;&#12363;&#12425;&#31471;&#12414;&#12391;&#8220;&#26412;&#29289;&#12387;&#12413;&#12356;&#8221;</strong> &#20307;&#39443;&#12395;&#12394;&#12427;&#12290;</p><p><strong>&#9989; &#35201;&#28857;:</strong> <strong>&#36895;&#24230;&#12539;&#21453;&#24489;&#12539;&#20849;&#26377;&#29702;&#35299;</strong> &#12395;&#24375;&#12367;&#12289;&#12375;&#12363;&#12418; <strong>&#21205;&#12367;&#12501;&#12523;&#12473;&#12479;&#12483;&#12463;&#12398;&#12503;&#12525;&#12488;&#12479;&#12452;&#12503;</strong> &#12414;&#12391;&#25345;&#12387;&#12390;&#12356;&#12365;&#12420;&#12377;&#12356;&#12290;</p><p>&#12383;&#12384;&#12375; <strong>UI&#23652;&#12434;&#36234;&#12360;&#12383;&#12392;&#12371;&#12429;</strong> &#12363;&#12425;&#38640;&#22258;&#27671;&#12364;&#22793;&#12431;&#12426;&#12414;&#12377;&#12290;</p><div><hr></div><h2><br>&#26412;&#30058;&#12391;&#20309;&#24230;&#12418;&#30452;&#38754;&#12377;&#12427;5&#12388;&#12398;&#21839;&#38988; &#9888;&#65039;</h2><h3><br>1) Vibe-coding &#12398;&#36895;&#12373; vs &#12496;&#12483;&#12463;&#12456;&#12531;&#12489;&#12398;&#8220;&#12377;&#12365;&#38291;&#8221;<strong>&#128295;</strong></h3><p>&#12356;&#12414;&#12393;&#12365;&#22810;&#12367;&#12398;&#12503;&#12521;&#12483;&#12488;&#12501;&#12457;&#12540;&#12512;&#12399; <strong>Supabase</strong> &#31561;&#12391; <strong>backend &#20184;&#12365;</strong> &#12391;&#12377;&#65288;auth / Postgres / RLS / storage / functions&#65289;&#12290;&#12394;&#12398;&#12391;&#35506;&#38988;&#12399;&#12300;&#12496;&#12483;&#12463;&#12456;&#12531;&#12489;&#12364;&#12394;&#12356;&#12301;&#12391;&#12399;&#12354;&#12426;&#12414;&#12379;&#12435;&#12290;<strong>&#39640;&#36895;&#12391;&#22793;&#12431;&#12427;UI</strong> &#12392;&#12289;<strong>&#12496;&#12483;&#12463;&#12456;&#12531;&#12489;&#12398;&#22865;&#32004;&#65288;contracts&#65289;</strong> &#12434;&#8220;&#26412;&#24403;&#12398;&#12525;&#12472;&#12483;&#12463;&#8221;&#12364;&#20986;&#12390;&#12365;&#12383;&#30636;&#38291;&#12363;&#12425; <strong>&#12393;&#12358;&#22107;&#12415;&#21512;&#12431;&#12379;&#12427;&#12363;</strong>&#12290;</p><p>&#29694;&#22580;&#12391;&#36215;&#12365;&#12364;&#12385;&#12394;&#30171;&#12415;:</p><ul><li><p><strong>&#128269; &#12469;&#12452;&#12524;&#12531;&#12488;&#12489;&#12522;&#12501;&#12488;(UI vs API).</strong><br><strong>customer_id vs customerId</strong>&#12289;UI&#12399; <strong>200</strong> &#12434;&#26399;&#24453;&#12375;&#12390;&#12356;&#12427;&#12398;&#12395; API &#12399; <strong>204</strong>&#12289;&#37197;&#21015;&#12398;&#24418;&#12364; <strong>{ data: [] } &#8594; []</strong>&#12290;&#12496;&#12483;&#12463;&#12456;&#12531;&#12489;&#12398;&#36605;&#12356;&#20462;&#27491;&#12391;&#12289;&#30011;&#38754;&#12364; <strong>id vs user_id</strong> &#12434;&#21462;&#12426;&#36949;&#12360;&#12390;&#12418;&#30446;&#12395;&#35211;&#12360;&#12427;&#12456;&#12521;&#12540;&#12399;&#20986;&#12394;&#12356;&#12290;</p></li><li><p><strong>&#129513; &#30011;&#38754;&#12398;&#38750;&#21516;&#26399;&#21270;</strong><br>&#12300;&#32232;&#38598;&#12301;&#30011;&#38754;&#12399;&#30452;&#12375;&#12383;&#12398;&#12395;&#12300;&#19968;&#35239;&#12301;&#12399;&#21476;&#12356;&#12487;&#12540;&#12479;&#24418;&#12398;&#12414;&#12414;&#12290;<strong>&#21336;&#19968;&#12398;&#12477;&#12540;&#12473;&#12539;&#12458;&#12502;&#12539;&#12488;&#12453;&#12523;&#12540;&#12473;</strong> &#12364;&#12394;&#12356;&#12392;&#12289;&#30011;&#38754;&#12372;&#12392;&#12395;&#24494;&#22937;&#12395;&#12474;&#12524;&#12427;&#12290;</p></li><li><p><strong>&#128452;&#65039;&#12473;&#12461;&#12540;&#12510;&#22793;&#26356;&#12364;&#34892;&#12365;&#28193;&#12425;&#12394;&#12356;</strong><br>&#12459;&#12521;&#12512;&#21517;&#22793;&#26356;&#12420; <strong>enum</strong> &#12398;&#32224;&#12417;&#20184;&#12369;&#12434;&#19968;&#12459;&#25152;&#12391;&#12420;&#12387;&#12390;&#12418;&#12289;&#20182;&#12398;&#12506;&#12540;&#12472;/&#38306;&#25968;&#12399;&#26087;&#20181;&#27096;&#12398;&#12414;&#12414;&#12290;<strong>migrations &#12434;&#26463;&#12397;&#12390;&#27969;&#12375;&#12289;pipeline &#12391;&#26908;&#30693;</strong> &#12375;&#12394;&#12356;&#38480;&#12426;&#36215;&#12365;&#12364;&#12385;&#12290;Supabase &#20844;&#24335;&#12418; <strong>&#8220;migrations + CI&#8221;</strong> &#12434;&#24375;&#12367;&#25512;&#22888;&#12290;</p></li><li><p><strong>&#127767; staging &#12392; prod &#12398;&#24046;</strong><br><strong>keys / base URL / storage &#12398; bucket / policy</strong> &#12364;&#19968;&#33268;&#12375;&#12390;&#12356;&#12394;&#12356;&#12290;<strong>preview &#12391;&#12399;OK&#8594;&#26412;&#30058;&#12391; 401/403/404</strong>&#12290;&#12356;&#12431;&#12422;&#12427;&#12300;&#25163;&#20803;&#12391;&#12399;&#21205;&#12356;&#12383;&#12301;&#26696;&#20214;&#12290;</p></li><li><p><strong>&#128268; &#12527;&#12540;&#12463;&#12501;&#12525;&#12540;&#12398;&#32257;&#12364;&#33030;&#12356;</strong>&#65288;jobs / webhooks / queues&#65289;<br>&#30011;&#38754;&#19978;&#12399;&#12300;<strong>Approve &#8594; Notify &#8594; Reconcile</strong>&#12301;&#12391;&#12418;&#12289;<strong>serverless functions / cron / webhook &#32626;&#21517;&#65288;Stripe, Slack, GitHub&#65289;</strong> &#12398;&#37197;&#32218;&#12399;&#33030;&#12356;&#12290;<strong>rate limit / retry / idempotency</strong> &#12399; prompt &#12384;&#12369;&#12391;&#12399;&#25285;&#20445;&#12391;&#12365;&#12394;&#12356;&#12290;</p></li></ul><blockquote><p>&#22806;&#37096;&#36899;&#25658;&#12364; <strong>3&#12316;5&#20491;</strong>&#65288;&#27770;&#28168;&#12539;&#12467;&#12511;&#12517;&#12491;&#12465;&#12540;&#12471;&#12519;&#12531;&#12539;ID&#12539;&#12473;&#12488;&#12524;&#12540;&#12472;&#12539;&#20998;&#26512;&#65289;&#12395;&#21040;&#36948;&#12375;&#12383;&#12354;&#12383;&#12426;&#12363;&#12425;&#12289;&#12489;&#12522;&#12501;&#12488;&#12364;&#22987;&#12414;&#12426;&#12420;&#12377;&#12356;&#12290;</p></blockquote><p><strong>&#9989; &#35201;&#28857;:</strong> &#12356;&#12414;&#12399; <strong>backend &#12398;&#26377;&#28961;</strong> &#12391;&#12399;&#12394;&#12367;&#12289;<strong>UI &#8596; API &#8596; data contracts &#12398;&#21516;&#26399;</strong> &#12364;&#12508;&#12488;&#12523;&#12493;&#12483;&#12463;&#12290;UI&#12398;&#22238;&#36578;&#12364;&#36895;&#12356;&#12411;&#12393; <strong>endpoint / schema / policy</strong> &#12399;&#12474;&#12524;&#12420;&#12377;&#12356;&#12290;&#29305;&#12395; CRUD &#12434;&#36234;&#12360;&#12383; <strong>payments / audit logs / 3rd-party APIs / background jobs</strong> &#12364;&#22679;&#12360;&#12427;&#12411;&#12393;&#12290;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rxVk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rxVk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rxVk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Generated image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Generated image" title="Generated image" srcset="https://substackcdn.com/image/fetch/$s_!rxVk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3><br>2) <strong>Supabase &#12408;&#12398;&#32080;&#21512; &#129513; &#8212;&#8212; &#8220;export &amp; continue&#8221; &#12391;&#12418;&#23436;&#20840;&#12395;&#33258;&#20998;&#12398;&#12467;&#12540;&#12489;&#12392;&#12399;&#35328;&#12356;&#20999;&#12428;&#12394;&#12356;&#29702;&#30001;</strong></h3><p>&#22810;&#12367;&#12398; vibe-coding &#12503;&#12521;&#12483;&#12488;&#12501;&#12457;&#12540;&#12512;&#12399; <strong>Supabase</strong>&#65288;managed/OSS&#65289;&#12391; <strong>Day 1 backend</strong> &#12434;&#29992;&#24847;&#12375;&#12414;&#12377;&#12290;<strong>Postgres + Auth + RLS + Storage + Edge/Functions + Realtime</strong>&#12290;&#12525;&#12464;&#12452;&#12531;/&#12486;&#12540;&#12502;&#12523;/&#12509;&#12522;&#12471;&#12540;/&#12501;&#12449;&#12452;&#12523;&#12414;&#12391;&#25968;&#26178;&#38291;&#12391;&#12290;&#31471;&#12363;&#12425;&#31471;&#12414;&#12391;&#8220;&#26412;&#29289;&#8221;&#12290;</p><div class="pullquote"><p>&#12383;&#12384;&#12375;&#20693;&#12425;&#12398;&#35211;&#26041;&#12399;&#12371;&#12358;&#12391;&#12377;&#65306;<br><strong>&#8220;&#26412;&#24403;&#12398;&#8221; vibe-coding &#12399;&#12289;&#12501;&#12525;&#12531;&#12488;&#12418;&#12496;&#12483;&#12463;&#12418; &#8220;&#33258;&#20998;&#12398;&#12467;&#12540;&#12489;&#8221; &#12434;&#20986;&#21147;&#12391;&#12365;&#12427;&#12409;&#12365;</strong></p></div><p>&#12496;&#12483;&#12463;&#12456;&#12531;&#12489;&#12364; <strong>provider &#12398;&#20013;</strong> &#12395;&#12354;&#12427;&#12392;&#12289;<strong>primitives &#12434;&#23436;&#20840;&#12395;&#12399;&#25152;&#26377;&#12391;&#12365;&#12394;&#12356;</strong>&#12290;&#12388;&#12414;&#12426; <strong>auth/session &#12398; shape&#12289;RLS policy &#12398;&#27969;&#20736;&#12289;SQL&#25313;&#24373;&#12289;storage &#12398; path/ACL&#12289;Realtime &#12398; channel&#12289;SDK &#12398;&#25369;&#21205;</strong> &#12395;&#32283;&#12425;&#12428;&#12427;&#12290;</p><p>&#12384;&#12363;&#12425; <strong>Lovable / Bolt / Replit</strong> &#12363;&#12425;&#12456;&#12463;&#12473;&#12509;&#12540;&#12488;&#12375;&#12390; <strong>Claude Code / Cursor / Codex</strong> &#31561;&#12391;&#32154;&#12369;&#12427;&#12392;&#12375;&#12390;&#12418;&#12289;&#22810;&#12367;&#12398;&#22580;&#21512;&#12381;&#12428;&#12399; <strong>provider &#20181;&#27096;&#12398; backend &#12434;&#20013;&#24515;&#12395;&#25454;&#12360;&#12383; frontend &#12467;&#12540;&#12489;&#12398;&#12456;&#12463;&#12473;&#12509;&#12540;&#12488;</strong>&#12290;&#24746;&#12356;&#12371;&#12392;&#12391;&#12399;&#12394;&#12356;&#65288;&#36895;&#12373;&#12398;&#20195;&#20767;&#65289;&#12364;&#12289;<strong>independence &#12391;&#12399;&#12394;&#12367; attachment</strong>&#12290;</p><p><strong>&#34920;&#12395;&#20986;&#12427;&#22580;&#38754;:</strong></p><ul><li><p><strong>&#12509;&#12540;&#12479;&#12499;&#12522;&#12486;&#12451;&#12398;&#24037;&#20107;</strong> &#12364;&#24460;&#12429;&#12395;&#22238;&#12427;&#12290;<strong>Postgres vanilla / RDS / Aurora</strong> &#12394;&#12393;&#12408;&#21205;&#12363;&#12377;&#38555;&#12289;<strong>policy / auth/session / storage semantics / SDK &#21628;&#12403;&#20986;&#12375;</strong> &#12398;&#24373;&#12426;&#26367;&#12360;&#12364;&#24517;&#35201;&#12290;</p></li><li><p><strong>Ops / observability</strong> &#12399; provider &#20181;&#27096;&#12398;&#12414;&#12414;&#12290;<strong>incidents / logs / metrics / quotas / runbooks</strong> &#12364;&#12381;&#12398;&#27969;&#20736;&#12395;&#20381;&#23384;&#12290;&#20055;&#12426;&#25563;&#12360;&#12399; <strong>&#20877;&#23398;&#32722;&#12392;&#12484;&#12540;&#12523;&#26367;&#12360;</strong> &#12434;&#20276;&#12358;&#12290;</p></li><li><p><strong>&#12459;&#12473;&#12479;&#12510;&#12452;&#12474;&#12398;&#22825;&#20117;</strong>&#12290;<strong>auth / queue / storage</strong> &#12398;&#20869;&#37096;&#12395;&#25163;&#12434;&#20837;&#12428;&#12383;&#12356;&#26178;&#12289;<strong>&#33258;&#20998;&#12398;&#12522;&#12509;/&#12452;&#12531;&#12501;&#12521;&#12391;&#29983;&#25104;&#12373;&#12428;&#12390;&#12356;&#12427;&#22580;&#21512;&#12398;&#33258;&#30001;&#24230;</strong> &#12395;&#12399;&#23626;&#12363;&#12394;&#12356;&#12371;&#12392;&#12364;&#12354;&#12427;&#12290;</p></li></ul><blockquote><p>&#20693;&#12425;&#12399; <strong>&#8220;&#21453;Supabase&#8221; &#12391;&#12399;&#12394;&#12367; &#8220;&#12503;&#12525;&#12458;&#12540;&#12490;&#12540;&#12471;&#12483;&#12503;&#8221;</strong>&#12290;Supabase &#12399; <strong>&#26368;&#36895;&#12398;&#31435;&#12385;&#19978;&#12370;</strong> &#12392;&#12375;&#12390;&#32032;&#26228;&#12425;&#12375;&#12356;&#12290;&#12383;&#12384;&#12289;<strong>&#32080;&#21512;</strong> &#12398;&#20107;&#23455;&#12399;&#26089;&#12417;&#12395;&#35211;&#31309;&#12418;&#12426;&#12289;<strong>&#20986;&#21475;</strong> &#12392; <strong>&#31227;&#34892;&#25126;&#30053;</strong> &#12434;&#35373;&#35336;&#12375;&#12390;&#12362;&#12367;&#12290;&#12354;&#12427;&#12356;&#12399;&#24517;&#35201;&#12395;&#12394;&#12387;&#12383;&#26178;&#12395; <strong>backend &#20596;&#12418;&#33258;&#20998;&#12398;&#12467;&#12540;&#12489;&#12392;&#12375;&#12390;&#29983;&#25104;</strong> &#12391;&#12365;&#12427;&#36947;&#12434;&#30906;&#20445;&#12375;&#12390;&#12362;&#12367;&#12290;</p></blockquote><p>&#23455;&#21209;&#30340;&#12395;&#12399;&#65306;&#36895;&#12373;&#12398;&#12383;&#12417;&#12395; <strong>Supabase &#12399;&#36960;&#24942;&#12394;&#12367;&#20351;&#12358;</strong>&#12290;&#12383;&#12384;&#12375; <strong>&#36867;&#12370;&#36947;&#65288;escape hatch&#65289;</strong> &#12434;&#25345;&#12388;&#12290;</p><ul><li><p><strong>auth / data &#12434;&#12452;&#12531;&#12479;&#12540;&#12501;&#12455;&#12540;&#12473;&#21270;</strong>&#65288;&#34180;&#12356; auth &#22659;&#30028; + data access layer&#65289;&#12290;</p></li><li><p><strong>storage / webhooks / queues</strong> &#12399;&#33258;&#20998;&#12398; <strong>functions</strong> &#12391;&#12521;&#12483;&#12503;&#12375;&#12390;&#12289;<strong>URL / &#32626;&#21517; / provider</strong> &#12434;&#24046;&#12375;&#26367;&#12360;&#21487;&#33021;&#12395;&#12290;</p></li><li><p><strong>&#25152;&#26377;&#27177;&#12364;&#37325;&#35201;</strong> &#12394;&#12425;&#12289;<strong>backend primitives &#12434;&#12467;&#12540;&#12489;/&#12452;&#12531;&#12501;&#12521;&#12392;&#12375;&#12390;&#20986;&#21147;</strong> &#12375;&#12289;<strong>&#32232;&#38598;/&#12524;&#12499;&#12517;&#12540;/&#20877;&#12487;&#12503;&#12525;&#12452;</strong> &#12364;&#12393;&#12371;&#12391;&#12418;&#12391;&#12365;&#12427;&#27969;&#12428;&#12434;&#29401;&#12358;&#12290;</p></li></ul><div><hr></div><h3><br>3) <strong>&#12487;&#12496;&#12483;&#12464;&#20013;&#12398;&#12488;&#12540;&#12463;&#12531;&#28040;&#36027;&#12364;&#33192;&#12425;&#12416;</strong> &#128293;&#128184;</h3><p>OpenAI / Anthropic &#12398; <strong>prompt caching</strong> &#12398;&#12424;&#12358;&#12394;&#21046;&#24481;&#12364;&#20986;&#12390;&#12365;&#12390;&#12418;&#12289;<strong>&#21453;&#24489;&#12487;&#12496;&#12483;&#12464;&#20013;&#12398;&#12488;&#12540;&#12463;&#12531;&#25903;&#20986;</strong> &#12399;&#12414;&#12384;&#35501;&#12415;&#12395;&#12367;&#12356;&#12290;<strong>&#12461;&#12515;&#12483;&#12471;&#12517;</strong> &#12399;&#21516;&#19968;&#25991;&#33032;&#12395;&#21106;&#24341;&#12434;&#21177;&#12363;&#12379;&#12427;&#12364;&#12289;&#23455;&#38555;&#12398;&#12523;&#12540;&#12503;&#12399; <strong>retry / tool calls / &#38750;&#23616;&#25152;&#30340;&#12394;&#32232;&#38598;</strong> &#12434;&#21547;&#12415;&#12289;<strong>&#22823;&#12365;&#12394;&#12467;&#12531;&#12486;&#12461;&#12473;&#12488;&#12398;&#20877;&#36865;</strong> &#12434;&#35480;&#30330;&#12377;&#12427;&#12290;&#32080;&#26524;&#12289;<strong>&#8220;&#23567;&#12373;&#12394;&#20462;&#27491;&#8221; &#21516;&#22763;&#12391;&#12418; 10&#12316;50&#215;</strong> &#12398;&#24046;&#12364;&#20986;&#12427;&#12371;&#12392;&#12364;&#12354;&#12427;&#12290;</p><p><strong>&#128293; &#12394;&#12380;&#20170;&#12418;&#29123;&#12360;&#32154;&#12369;&#12427;&#12363;:</strong></p><ul><li><p><strong>&#38750;&#27770;&#23450;&#30340;&#12394;&#32232;&#38598;</strong>&#12290;&#23567;&#12373;&#12394;&#25351;&#31034;&#12391;&#21608;&#36794;&#12501;&#12449;&#12452;&#12523;/&#22411;&#12414;&#12391;&#24195;&#12367;&#26360;&#12365;&#25563;&#12360;&#12289;&#27425;&#12497;&#12473;&#12391;&#12424;&#12426;&#22823;&#12365;&#12394;&#25991;&#33032;&#12434;&#20877;&#20966;&#29702;&#12373;&#12379;&#12427;&#65288;&#12461;&#12515;&#12483;&#12471;&#12517;&#12420;&#12463;&#12524;&#12472;&#12483;&#12488;&#12399;&#21177;&#12367;&#12364; <strong>wide diff</strong> &#12434;&#12394;&#12367;&#12375;&#12365;&#12428;&#12394;&#12356;&#65289;&#12290;</p></li><li><p><strong>retry / tool &#12398;&#31354;&#22238;&#12426;</strong>&#12290;<strong>rate limit / schema mismatch / tool &#12398; replanning</strong> &#12391;&#21516;&#12376;&#65288;&#12354;&#12427;&#12356;&#12399;&#12424;&#12426;&#22823;&#12365;&#12394;&#65289;&#25991;&#33032;&#12434;&#20877;&#12473;&#12488;&#12522;&#12540;&#12512;&#12290;<strong>cache miss</strong> &#12418;&#36215;&#12365;&#12427;&#12290;</p></li><li><p><strong>&#20385;&#26684;&#12471;&#12464;&#12490;&#12523;</strong> &#33258;&#20307;&#12364;&#12400;&#12425;&#12388;&#12365;&#12434;&#21453;&#26144;&#12290;<strong>usage/effort &#12505;&#12540;&#12473;</strong> &#12420; <strong>token tiers</strong> &#12395;&#21508;&#31038;&#12364;&#23492;&#12427;&#12398;&#12399;&#12289;&#23455;&#38555;&#12398;&#36000;&#33655;&#12364;&#12300;&#19968;&#30330;&#12391;&#27770;&#12414;&#12427;&#12301;&#12392;&#12300;&#25506;&#32034;&#30340;&#12395;&#20309;&#24230;&#12418;&#22238;&#12377;&#12301;&#12434;&#22823;&#12365;&#12367;&#25594;&#12428;&#12427;&#12363;&#12425;&#12290;</p></li></ul><p><strong>&#129335;&#8205;&#9794;&#65039; &#12393;&#12371;&#12364;&#30171;&#12356;&#12363;:</strong></p><ul><li><p><strong>&#20462;&#27491;1&#20214;&#12354;&#12383;&#12426;&#12398;&#12467;&#12473;&#12488;</strong> &#12434;&#35501;&#12417;&#12394;&#12356;&#12290;&#35211;&#12383;&#30446;&#12364;&#20284;&#12383;&#22793;&#26356;&#12391;&#12418;&#25313;&#25955;&#12398;&#20181;&#26041;&#12399;&#20840;&#28982;&#36949;&#12358;&#12290;</p></li><li><p><strong>&#8220;&#20182;&#12395;&#24433;&#38911;&#12394;&#12356;&#8221; &#12434;&#30906;&#35469;&#12377;&#12427;&#12384;&#12369;</strong> &#12391;&#12418;&#12467;&#12531;&#12486;&#12461;&#12473;&#12488;&#20877;&#28040;&#36027;&#12391;&#35506;&#37329;&#12364;&#36208;&#12427;&#12290;</p></li><li><p><strong>&#12499;&#12523;&#12489;&#20104;&#31639;</strong> &#12364;&#31435;&#12390;&#12395;&#12367;&#12356;&#12290;&#25903;&#20986;&#12399; <strong>&#20877;&#29983;&#25104;&#12398;&#22238;&#25968;&#12392;&#24195;&#12364;&#12426;</strong> &#12395;&#36861;&#38543;&#12375;&#12289;<strong>&#27231;&#33021;&#25968;</strong> &#12392;&#12399;&#27604;&#20363;&#12375;&#12394;&#12356;&#12290;</p></li></ul><p><strong>&#9989; &#35201;&#28857;:</strong> &#30171;&#12415;&#12399; <strong>&#37329;&#38989;</strong> &#12384;&#12369;&#12391;&#12394;&#12367; <strong>&#20104;&#35211;&#21487;&#33021;&#24615;&#12398;&#27424;&#22914;</strong>&#12290;&#12461;&#12515;&#12483;&#12471;&#12517;&#21106;&#24341;&#12364;&#12354;&#12387;&#12390;&#12418;&#12289;<strong>&#12300;&#12371;&#12398;&#20462;&#27491;&#12399;&#12356;&#12367;&#12425;&#65311;&#12301;&#12434;&#35211;&#31309;&#12428;&#12427;&#23433;&#23450;&#12375;&#12383;&#21336;&#20301;</strong> &#12364;&#38283;&#30330;&#32773;&#20596;&#12395;&#12394;&#12356;&#12290;</p><div><hr></div><h3><br>4)<strong> &#26376;&#38989;&#12469;&#12502;&#12473;&#12463;&#12399;&#20693;&#12425;&#12398;&#20316;&#12426;&#26041;&#12395;&#21512;&#12431;&#12394;&#12356;</strong>&#128467;&#65039;&#9201;&#65039;</h3><p>&#22810;&#12367;&#12398;&#12503;&#12521;&#12483;&#12488;&#12501;&#12457;&#12540;&#12512;&#12399; <strong>&#26376;&#38989;&#65291;&#12488;&#12540;&#12463;&#12531;&#19978;&#38480;</strong>&#12290;&#12391;&#12418;&#22810;&#12367;&#12398;&#12481;&#12540;&#12512;&#12399; <strong>&#26376;&#20013;&#12378;&#12387;&#12392;&#20316;&#12425;&#12394;&#12356;</strong>&#12290;&#30331;&#37682;&#12375;&#12390; <strong>5&#12316;10&#26085;</strong> &#38598;&#20013;&#30340;&#12395;&#12499;&#12523;&#12489;&#12289;&#12487;&#12514;&#12434;&#20986;&#12375;&#12289;<strong>Cursor / Claude Code</strong> &#12394;&#12393;&#12398;AI&#12467;&#12540;&#12489;&#12450;&#12471;&#12473;&#12479;&#12531;&#12488;&#12395;&#12456;&#12463;&#12473;&#12509;&#12540;&#12488;&#12375;&#12390;&#12289;&#19968;&#26086;&#27490;&#12417;&#12427;&#12290;&#12518;&#12540;&#12470;&#12540;&#12364;&#27442;&#12375;&#12356;&#12398;&#12399; <strong>&#12459;&#12524;&#12531;&#12480;&#12540;&#12391;&#12399;&#12394;&#12367;&#12289;&#12414;&#12392;&#12414;&#12387;&#12383;&#20316;&#26989;&#21336;&#20301;&#12395;&#23550;&#12377;&#12427;&#20104;&#28204;&#21487;&#33021;&#12394;&#25903;&#25173;&#12356;</strong>&#12290;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RkFV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RkFV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RkFV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png" width="666" height="444.1524725274725" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:666,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Generated image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Generated image" title="Generated image" srcset="https://substackcdn.com/image/fetch/$s_!RkFV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>&#129504; &#20309;&#12364;&#36763;&#12356;&#12363;:</strong></p><ul><li><p><strong>&#36938;&#12435;&#12391;&#12356;&#12427;&#26399;&#38291;&#12395;&#12418;&#25903;&#25173;&#12358;</strong>&#12290;&#38598;&#20013;&#36913;&#12364;&#32066;&#12431;&#12427;&#12392;&#27531;&#12426;&#12399;&#26410;&#20351;&#29992;</p></li><li><p><strong>&#35211;&#31309;&#12426;&#12364;&#25955;&#12425;&#12363;&#12427;</strong>&#12290;&#23567;&#12373;&#12394;&#20462;&#27491;&#12391;&#12418;&#24819;&#23450;&#20197;&#19978;&#12395;&#12488;&#12540;&#12463;&#12531;&#12434;&#39135;&#12358;&#12371;&#12392;&#12364;&#12354;&#12427;&#12290;<strong>&#12479;&#12473;&#12463;&#21336;&#20385;</strong> &#12364;&#19981;&#26126;&#30637;</p></li><li><p><strong>&#20385;&#20516;&#12398;&#21336;&#20301;&#12364;&#12474;&#12524;&#12390;&#12356;&#12427;</strong>&#12290;&#36023;&#12387;&#12390;&#12356;&#12427;&#12398;&#12399; <strong>&#26178;&#38291;&#65288;1&#12534;&#26376;&#65289;</strong> &#12391;&#12354;&#12387;&#12390; <strong>&#20181;&#20107;&#65288;&#12499;&#12523;&#12489;&#35430;&#34892;/&#20877;&#29983;&#25104;&#22238;&#25968;/&#12487;&#12503;&#12525;&#12452;&#21487;&#33021;&#12394;&#25104;&#26524;&#65289;</strong> &#12391;&#12399;&#12394;&#12356;&#12290;</p></li><li><p><strong>&#12467;&#12531;&#12486;&#12461;&#12473;&#12488;&#20999;&#26367;</strong>&#12290;&#12450;&#12471;&#12473;&#12479;&#12531;&#12488;&#12395;&#12456;&#12463;&#12473;&#12509;&#12540;&#12488;&#12375;&#12383;&#24460;&#12418;&#12289;&#20351;&#12387;&#12390;&#12356;&#12394;&#12356;&#12469;&#12502;&#12473;&#12463;&#12395;&#35506;&#37329;&#12373;&#12428;&#12427;&#12290;</p></li></ul><p><strong>&#9989; &#12518;&#12540;&#12470;&#12540;&#12364;&#26412;&#24403;&#12395;&#27442;&#12375;&#12356;&#12418;&#12398;:</strong></p><ul><li><p><strong>&#26376;&#12391;&#12399;&#12394;&#12367;&#8220;&#12499;&#12523;&#12489;&#26399;&#38291;&#8221;&#12395;&#35506;&#37329;</strong>&#65288;&#20363;&#65306;<strong>3&#12316;7&#26085;&#12497;&#12473;</strong>&#65289;&#12290;</p></li><li><p><strong>&#26126;&#30906;&#12394;&#20316;&#26989;&#21336;&#20301;</strong>&#65288;&#20363;&#65306;<strong>N regenerations / M contract checks / &#12487;&#12503;&#12525;&#12452;&#21487;&#33021;&#12394;1&#12499;&#12523;&#12489;</strong>&#65289;&#12290;</p></li><li><p><strong>&#12506;&#12490;&#12523;&#12486;&#12451;&#12394;&#12375;&#12391;&#19968;&#26178;&#20572;&#27490;</strong>&#12290;&#27490;&#12417;&#12390;&#12289;&#24460;&#12391;&#25147;&#12387;&#12390;&#12289;<strong>&#32154;&#12365;&#12363;&#12425;&#20877;&#38283;</strong>&#12290;</p></li></ul><blockquote><p>&#12300;&#12499;&#12523;&#12480;&#12540;&#12399; <strong>&#26376;</strong> &#12391;&#12399;&#12394;&#12367; <strong>&#12473;&#12503;&#12522;&#12531;&#12488;</strong> &#12391;&#32771;&#12360;&#12427;&#12290;&#12302;&#12371;&#12398;&#27231;&#33021;&#12434;&#21205;&#12363;&#12375;&#12390;&#12289;&#12356;&#12387;&#12383;&#12435;&#27490;&#12417;&#12427;&#12303;&#12290;<strong>&#26009;&#37329;&#12418;&#8220;&#38598;&#20013;&#12499;&#12523;&#12489;&#12395;&#25173;&#12358;&#8221; &#24418;</strong> &#12391;&#12354;&#12427;&#12409;&#12365;&#12290;&#12301;</p></blockquote><p><strong>&#9989; &#35201;&#28857;:</strong> <strong>&#12479;&#12473;&#12463;&#12395;&#27839;&#12387;&#12383;&#20104;&#28204;&#21487;&#33021;&#12394;&#35506;&#37329;</strong> &#12364;&#24517;&#35201;&#12290;<strong>&#30701;&#26399;&#38598;&#20013;&#8594;&#19968;&#26178;&#20572;&#27490;</strong> &#12398;&#27969;&#12428;&#12395;&#21512;&#12431;&#12379;&#12427;&#12290;<strong>&#26376;&#38989;&#65291;&#12488;&#12540;&#12463;&#12531;</strong> &#12399;&#23567;&#35215;&#27169;&#26696;&#20214;&#12391;&#12418;&#21106;&#39640;&#12539;&#19981;&#36879;&#26126;&#12395;&#24863;&#12376;&#12373;&#12379;&#12364;&#12385;&#12290;</p><div><hr></div><h3><br>5) <strong>&#8220;&#35492;&#12426;&#12398;&#31309;&#12415;&#37325;&#12394;&#12426;&#8221;&#8212;&#8212;&#23567;&#12373;&#12394;LLM&#12511;&#12473;&#12364;&#38634;&#12384;&#12427;&#12414;&#21270;&#12377;&#12427;&#29702;&#30001;</strong> &#127744;</h3><p><strong>&#12510;&#12523;&#12481;&#12473;&#12486;&#12483;&#12503;&#12398;&#12503;&#12525;&#12531;&#12503;&#12488;</strong> &#12399; <strong>&#23567;&#12373;&#12394;&#35492;&#12426;&#12434;&#22679;&#24133;</strong> &#12375;&#12364;&#12385;&#12290;<strong>&#22806;&#37096;&#12363;&#12425;&#12398;&#12501;&#12451;&#12540;&#12489;&#12496;&#12483;&#12463;</strong> &#12394;&#12375;&#12395; <strong>&#33258;&#24049;&#20462;&#27491;&#65288;self-correction&#65289;</strong> &#12395;&#38972;&#12427;&#12398;&#12399;&#23433;&#23450;&#12379;&#12378;&#12289;&#12416;&#12375;&#12429;&#36074;&#12434;&#33853;&#12392;&#12377;&#12371;&#12392;&#12418;&#12290;<strong>&#12510;&#12523;&#12481;&#12479;&#12540;&#12531;</strong> &#12391;&#12399;&#12289;<strong>&#25991;&#33032;&#12398;&#22793;&#21205;</strong> &#12392; <strong>&#38750;&#27770;&#23450;&#24615;</strong> &#12364;&#26032;&#12383;&#12394;&#19981;&#25972;&#21512;&#12434;&#29983;&#12415;&#12289;<strong>&#35492;&#12426;&#12364;&#32047;&#31309;</strong> &#12377;&#12427;&#12290;</p><p><strong>&#129514; &#12356;&#12414;&#36215;&#12365;&#12427;&#29702;&#30001;:</strong></p><ul><li><p><strong>&#33258;&#24049;&#20462;&#27491;&#12398;&#38480;&#30028;</strong>&#12290;&#12514;&#12487;&#12523;&#33258;&#36523;&#12398;&#20986;&#21147;&#12384;&#12369;&#12434;&#25163;&#25499;&#12363;&#12426;&#12395;&#30452;&#12377;&#25163;&#27861;&#12399;&#20449;&#38972;&#24615;&#12364;&#20302;&#12367;&#12289;<strong>&#25512;&#35542;&#12434;&#24746;&#21270;</strong> &#12373;&#12379;&#12427;&#12465;&#12540;&#12473;&#12418;&#12290;</p></li><li><p><strong>&#23455;&#34892;&#38291;&#12398;&#38750;&#27770;&#23450;&#24615;</strong>&#12290;&#28201;&#24230;&#12434;&#19979;&#12370;&#12390;&#12418;&#20986;&#21147;&#12399;&#25594;&#12428;&#12427;&#12290;<strong>N&#12473;&#12486;&#12483;&#12503;&#30446;&#12398;&#20462;&#27491;</strong> &#12364; <strong>N+1</strong> &#12391;&#21029;&#12398;&#12474;&#12524;&#12434;&#20316;&#12427;&#12290;</p></li><li><p><strong>&#38263;&#25991;&#33032;&#12398;&#12489;&#12522;&#12501;&#12488;</strong>&#12290;&#32232;&#38598;&#12481;&#12455;&#12540;&#12531;&#12364;&#20280;&#12403;&#12427;&#12411;&#12393; <strong>&#28508;&#22312;&#30340;&#12394;&#12489;&#12522;&#12501;&#12488;</strong> &#12364;&#28316;&#12414;&#12426;&#12289;&#26908;&#20986;&#12539;&#24059;&#12365;&#25147;&#12375;&#12364;&#38627;&#12375;&#12367;&#12394;&#12427;&#12290;</p></li></ul><p><strong>&#129525; &#29694;&#22580;&#24863;&#12392;&#12375;&#12390;&#12399;:</strong></p><ul><li><p><strong>&#21517;&#21069;/shape/state</strong> &#12364;&#8220;&#12411;&#12412;&#8221;&#21512;&#12387;&#12390;&#12356;&#12427;&#12398;&#12395; <strong>&#23436;&#20840;&#19968;&#33268;&#12375;&#12394;&#12356;</strong>&#12290;&#12486;&#12473;&#12488;&#12420;&#12510;&#12452;&#12464;&#12524;&#12540;&#12471;&#12519;&#12531;&#12395;&#33030;&#12356;&#12514;&#12470;&#12452;&#12463;&#12364;&#12391;&#12365;&#12427;&#12290;</p></li><li><p><strong>&#8220;&#12418;&#12358;&#19968;&#22238;&#12362;&#39000;&#12356;&#8221;</strong> &#12364;&#21029;&#12398;&#21103;&#20316;&#29992;&#12434;&#29983;&#12415;&#12289;<strong>&#23433;&#23450;&#24615;&#30906;&#35469;</strong> &#12395;&#26178;&#38291;&#12434;&#28342;&#12363;&#12377;&#12290;</p></li><li><p>&#25968;&#26085;&#12383;&#12388;&#12392;&#12289;&#20803;&#12398;&#27231;&#33021;&#12391;&#12399;&#12394;&#12367; <strong>&#12489;&#12522;&#12501;&#12488;&#12381;&#12398;&#12418;&#12398;</strong> &#12434;&#12487;&#12496;&#12483;&#12464;&#12375;&#12390;&#12356;&#12427;&#12290;</p></li></ul><blockquote><p>&#12300;<strong>&#23567;&#12373;&#12394;&#19968;&#25163;&#12398;&#35492;&#12426;</strong> &#12364;&#36899;&#37782;&#12377;&#12427;&#12290;<strong>&#8220;&#12418;&#12358;&#19968;&#24230;&#38972;&#12416;&#8221; &#12375;&#12363;&#27494;&#22120;&#12364;&#12394;&#12356;</strong> &#12392;&#12289;<strong>&#30452;&#12375;&#12383;&#12356;&#26681;&#26412;</strong> &#12391;&#12399;&#12394;&#12367; <strong>&#12514;&#12487;&#12523;&#12398;&#30452;&#21069;&#12398;&#12511;&#12473;</strong> &#12434;&#36861;&#12356;&#12363;&#12369;&#32154;&#12369;&#12427;&#12371;&#12392;&#12395;&#12394;&#12427;&#12290;&#12301;</p></blockquote><p><strong>&#9989; &#35201;&#28857;:</strong> <strong>&#35079;&#25968;&#12479;&#12540;&#12531;&#12398;&#33258;&#24049;&#25913;&#21892;&#12523;&#12540;&#12503;</strong> &#12391;&#12399;&#29645;&#20107;&#12391;&#12399;&#12394;&#12367;&#26082;&#30693;&#12398;&#25369;&#21205;&#12290;<strong>contracts / tests / verification pass</strong> &#12392;&#12356;&#12387;&#12383; <strong>&#22806;&#37096;&#12398;&#12477;&#12540;&#12473;&#12539;&#12458;&#12502;&#12539;&#12488;&#12453;&#12523;&#12540;&#12473;</strong> &#12364;&#12394;&#12369;&#12428;&#12400;&#12289;<strong>&#8220;&#12418;&#12358;&#19968;&#22238;&#12503;&#12525;&#12531;&#12503;&#12488;&#8221;</strong> &#12399;&#35492;&#12426;&#12434; <strong>&#24195;&#12370;&#12364;&#12385;</strong>&#12290;</p><div><hr></div><h3><br>A special note: &#8220;Spec-driven agentic flows&#8221; &#12399;&#24517;&#35201;&#12384;&#12364;&#12289;&#12381;&#12428;&#12384;&#12369;&#12391;&#12399;&#36275;&#12426;&#12394;&#12356; &#128208;</h3><p>&#26368;&#36817;&#12399; <strong>spec-driven &#12394; agentic IDE / &#8220;software factory&#8221;</strong> &#12364;&#22679;&#12360;&#12390;&#12356;&#12414;&#12377;&#12290;&#20363;&#65306;<strong>Amazon Kiro</strong>, <strong>8090.ai</strong>&#65288;Chamath &#12398; &#8220;Software Factory&#8221;&#65289;&#12289;<strong>GitHub Spec Kit</strong>&#12290;&#26041;&#21521;&#24615;&#12399;&#27491;&#12375;&#12356;&#12290;<strong>PRD / spec / task</strong> &#12392;&#12356;&#12387;&#12383; <strong>&#27083;&#36896;</strong> &#12434;&#12523;&#12540;&#12503;&#12395;&#36275;&#12377;&#12371;&#12392;&#12290;</p><p><strong>&#21516;&#24847;&#28857;:</strong><br><strong>spec-driven &#12399;&#24517;&#35201;</strong>&#12290;&#12459;&#12458;&#12473;&#12434;&#28187;&#12425;&#12375;&#12289;&#12456;&#12540;&#12472;&#12455;&#12531;&#12488;&#12395; <strong>&#35336;&#30011;</strong> &#12434;&#19982;&#12360;&#12289;&#26126;&#30333;&#12394;&#12511;&#12473;&#12510;&#12483;&#12481;&#12434;&#28187;&#12425;&#12377;&#12290;</p><p><strong>&#29694;&#23455;&#12481;&#12455;&#12483;&#12463;:</strong><br>&#12381;&#12428;&#12391;&#12418; <strong>hallucination / non-determinism</strong> &#12399;&#28040;&#12360;&#12394;&#12356;&#12290;&#12450;&#12503;&#12522;&#12364;&#22823;&#12365;&#12367;&#12394;&#12427;&#12411;&#12393;&#12289;&#26085;&#12293;&#12398;&#32232;&#38598;&#12411;&#12393;&#12289;<strong>&#33258;&#24049;&#20462;&#27491;&#12523;&#12540;&#12503;&#12364;&#21454;&#26463;&#12375;&#12394;&#12356;</strong>&#12289;<strong>&#38263;&#25991;&#33032;&#12364;&#12489;&#12522;&#12501;&#12488;</strong> &#12377;&#12427;&#12289;<strong>&#23567;&#12373;&#12394;&#20462;&#27491;&#12364;&#21029;&#12398;&#19981;&#25972;&#21512;</strong> &#12434;&#29987;&#12416;&#12289;&#12399;&#26222;&#36890;&#12395;&#36215;&#12365;&#12427;&#12290;<strong>&#27083;&#36896;&#12399;&#21161;&#12369;&#12395;&#12394;&#12427;&#12364;&#32066;&#28857;&#12391;&#12399;&#12394;&#12356;</strong>&#12290;</p><p><strong>&#20693;&#12425;&#12398;&#12420;&#12426;&#26041;&#65288;&#23398;&#12403;&#65289;:</strong><br><strong>Prompt.Build</strong> &#12391;&#12418; <strong>PRD &#8594; tasks &#8594; contracts &#8594; code</strong> &#12398; <strong>spec-driven agentic flow</strong> &#12434;&#22238;&#12375;&#12390;&#12356;&#12414;&#12377;&#12290;&#12371;&#12428;&#12399; <strong>&#12511;&#12473;&#12510;&#12483;&#12481;&#12434;&#28187;&#12425;&#12377;</strong>&#12290;&#12383;&#12384;&#12289;<strong>&#12473;&#12465;&#12540;&#12523;</strong> &#12377;&#12427;&#12392; <strong>&#35492;&#12426;&#12398;&#32047;&#31309;</strong> &#12392; <strong>&#25991;&#33032;&#12489;&#12522;&#12501;&#12488;</strong> &#12399;&#20381;&#28982;&#12392;&#12375;&#12390;&#20986;&#12427;&#12290;&#12384;&#12363;&#12425; <strong>guardrails</strong> &#12364;&#35201;&#12427;&#12290;</p><blockquote><p>&#12300;<strong>Specs &#12399;&#24517;&#35201;&#26465;&#20214;&#12289;&#21313;&#20998;&#26465;&#20214;&#12391;&#12399;&#12394;&#12356;&#12290;</strong> &#36914;&#12416;&#12409;&#12365;&#26041;&#21521;&#12434;&#31034;&#12377;&#12364;&#12289;&#12450;&#12503;&#12522;&#12364;&#22823;&#12365;&#12367;&#12394;&#12426;&#32232;&#38598;&#12364;&#31309;&#12415;&#19978;&#12364;&#12427;&#26178;&#12395; <strong>&#12489;&#12522;&#12501;&#12488;&#12434;&#38450;&#12368;&#12398;&#12399; guardrails</strong> &#12384;&#12290;&#12301;</p></blockquote><p><strong>&#9989; &#35201;&#28857;:</strong><br><strong>specs + agents</strong> &#12399;&#27491;&#12375;&#12356;&#27425;&#12398;&#19968;&#27497;&#12290;&#12383;&#12384;&#12375; <strong>&#12381;&#12428;&#12384;&#12369;&#12391;&#12399;&#36275;&#12426;&#12394;&#12356;</strong>&#12290;<strong>Prompt.Build</strong> &#12391;&#12399; <strong>verification</strong> &#12392; <strong>portability guardrails</strong> &#12434;&#32068;&#12415;&#21512;&#12431;&#12379;&#12289;<strong>UI/API/schema &#12434;&#21516;&#26399;</strong> &#12373;&#12379;&#12289;<strong>&#12489;&#12522;&#12501;&#12488;&#12434;&#26412;&#30058;&#21069;&#12395;&#27490;&#12417;&#12427;</strong>&#12290;&#35443;&#32048;&#12399;&#27425;&#22238;&#12395;&#12290;</p><div><hr></div><h2>Quick FAQ &#10067;</h2><ol><li><p><strong>vibe-coding &#12392;&#12399;&#65311;</strong><br>&#12420;&#12426;&#12383;&#12356;&#12371;&#12392;&#12434;AI&#12395;&#20253;&#12360;&#12289;<strong>&#29305;&#12395;&#30011;&#38754;&#12414;&#12431;&#12426;</strong> &#12434;&#39640;&#36895;&#12395;&#20316;&#12387;&#12390;&#12418;&#12425;&#12358;&#12420;&#12426;&#26041;&#12290;<br></p></li><li><p><strong>vibe-coding &#12399;&#26377;&#21177;&#12391;&#12377;&#12363;&#65311;</strong><br><strong>&#12473;&#12500;&#12540;&#12489;/&#12487;&#12514;/&#12503;&#12525;&#12488;&#12479;&#12452;&#12500;&#12531;&#12464;</strong> &#12395;&#12399;&#26368;&#36969;&#12290;&#12383;&#12384;&#12375; <strong>&#30011;&#38754;&#12392;&#12496;&#12483;&#12463;&#12456;&#12531;&#12489;&#12398;&#25972;&#21512;</strong> &#12364;&#23849;&#12428;&#12427;&#12392;&#38627;&#12375;&#12367;&#12394;&#12427;&#12290;<br></p></li><li><p><strong>&#12487;&#12513;&#12522;&#12483;&#12488;&#12399;&#65311;</strong><br><strong>&#21517;&#21069; / &#12487;&#12540;&#12479;shape / &#12473;&#12486;&#12540;&#12479;&#12473;&#12467;&#12540;&#12489;</strong> &#12398;&#23567;&#12373;&#12394;&#19981;&#19968;&#33268;&#12364;&#31309;&#12415;&#37325;&#12394;&#12427;&#12290;<strong>&#20462;&#27491;&#12391;&#12488;&#12540;&#12463;&#12531;&#12364;&#24819;&#23450;&#20197;&#19978;&#12395;&#29123;&#12360;&#12427;</strong>&#12290;<strong>&#29305;&#23450;&#12398;backend provider &#12395;&#32283;&#12425;&#12428;&#12427;</strong> &#12371;&#12392;&#12418;&#12290;<br></p></li><li><p><strong>vibe-coding &#12399;&#28961;&#26009;&#12391;&#12377;&#12363;&#65311;</strong><br>NO&#12290;<strong>&#12488;&#12540;&#12463;&#12531;&#35506;&#37329;</strong>&#12290;&#23567;&#12373;&#12394;&#20462;&#27491;&#12391;&#12418; <strong>&#24195;&#12356;&#20877;&#29983;&#25104;</strong> &#12364;&#36208;&#12426; <strong>&#39640;&#12367;&#12388;&#12367;</strong> &#12371;&#12392;&#12364;&#12354;&#12427;&#12290;<br></p></li><li><p><strong>&#12393;&#12398;&#12484;&#12540;&#12523;&#12364;&#12300;&#12505;&#12473;&#12488;&#12301;&#12391;&#12377;&#12363;&#65311;</strong><br><strong>&#26412;&#24403;&#12398;&#12467;&#12540;&#12489;&#12392;&#12375;&#12390;&#12456;&#12463;&#12473;&#12509;&#12540;&#12488;</strong> &#12391;&#12365;&#12289;<strong>&#20182;&#29872;&#22659;&#12391;&#21205;&#12363;&#12379;&#12427;</strong> &#12418;&#12398;&#12434;&#12290;<strong>Portability &gt; &#12525;&#12468;</strong>&#12290;<br></p></li><li><p><strong>vibe-coding &#12399;&#12503;&#12525;&#12464;&#12521;&#12510;&#12434;&#32622;&#12365;&#25563;&#12360;&#12414;&#12377;&#12363;&#65311;</strong><br>&#32622;&#12365;&#25563;&#12360;&#12394;&#12356;&#12290;<strong>&#12487;&#12540;&#12479;&#12514;&#12487;&#12523;/&#12475;&#12461;&#12517;&#12522;&#12486;&#12451;/&#12487;&#12503;&#12525;&#12452;/&#23436;&#25104;&#12398;&#23450;&#32681;</strong> &#12399;&#20154;&#12364;&#27770;&#12417;&#12427;&#12290;<br></p></li><li><p><strong>&#12300;contract drift&#65288;&#22865;&#32004;&#12398;&#12474;&#12524;&#65289;&#12301;&#12392;&#12399;&#65311;</strong><br><strong>UI &#12392; API &#12398;&#26399;&#24453;&#12364;&#12474;&#12524;&#12427;</strong>&#12290;UI &#12399; <strong>customerId</strong> &#12434;&#26399;&#24453;&#12289;API &#12399; <strong>customer_id</strong> &#12434;&#36820;&#12377;&#12290;<strong>200 vs 204</strong>&#12290;&#35211;&#12383;&#30446;&#12399;&#21205;&#12356;&#12390;&#12356;&#12390;&#12418;&#12289;&#12354;&#12427;&#26085;&#22730;&#12428;&#12427;&#12290;<br></p></li><li><p><strong>&#12487;&#12496;&#12483;&#12464;&#20013;&#12395;&#12488;&#12540;&#12463;&#12531;&#28040;&#36027;&#12364;&#36339;&#12397;&#19978;&#12364;&#12427;&#12398;&#12399;&#12394;&#12380;&#12391;&#12377;&#12363;&#65311;</strong><br>&#23567;&#22793;&#26356;&#12364; <strong>&#21608;&#36794;&#12501;&#12449;&#12452;&#12523;&#12398;&#26360;&#12365;&#25563;&#12360;</strong> &#12392; <strong>&#22823;&#12365;&#12394;&#25991;&#33032;&#20877;&#36865;&#65288;tool calls&#65289;</strong> &#12434;&#35480;&#30330;&#12290;&#20284;&#12383;&#20462;&#27491;&#12391;&#12418; <strong>&#12467;&#12473;&#12488;&#12399;&#22823;&#12365;&#12367;&#12502;&#12524;&#12427;</strong>&#12290;<br></p></li><li><p><strong>&#26376;&#38989;&#12503;&#12521;&#12531;&#12364;&#20316;&#12426;&#26041;&#12395;&#21512;&#12431;&#12394;&#12356;&#12398;&#12399;&#12394;&#12380;&#12391;&#12377;&#12363;&#65311;</strong><br>&#22810;&#12367;&#12398;&#12481;&#12540;&#12512;&#12399; <strong>&#30701;&#26399;&#38598;&#20013;</strong> &#12391;&#20316;&#12427;&#12290;&#27442;&#12375;&#12356;&#12398;&#12399; <strong>&#12499;&#12523;&#12489;&#12454;&#12451;&#12531;&#12489;&#12454;/&#20316;&#26989;&#21336;&#20301;&#12398;&#35506;&#37329;</strong> &#12391;&#12354;&#12387;&#12390;&#12289;<strong>&#26376;</strong> &#12391;&#12399;&#12394;&#12356;&#12290;<br></p></li><li><p><strong>&#35492;&#12426;&#12398;&#31309;&#12415;&#37325;&#12394;&#12426;&#65288;compounded hallucination&#65289;&#12301;&#12392;&#12399;&#65311;</strong><br><strong>&#23567;&#12373;&#12394;AI&#12398;&#35492;&#12426;</strong> &#12364;&#27425;&#12398;&#8220;&#20462;&#27491;&#8221;&#12434;&#21628;&#12403;&#12289;<strong>&#21029;&#12398;&#22580;&#25152;&#12364;&#22793;&#12431;&#12426;</strong>&#12289;&#12420;&#12364;&#12390; <strong>&#38634;&#12384;&#12427;&#12414;</strong> &#12395;&#12394;&#12427;&#12290;<br></p></li><li><p><strong>Spec-driven &#12398;&#12456;&#12540;&#12472;&#12455;&#12531;&#12488;&#12501;&#12525;&#12540;&#12384;&#12369;&#12391;&#21313;&#20998;&#12391;&#12377;&#12363;&#65311;</strong><br><strong>&#21161;&#12369;&#12395;&#12399;&#12394;&#12427;</strong> &#12364; <strong>&#12381;&#12428;&#12384;&#12369;&#12391;&#12399;&#36275;&#12426;&#12394;&#12356;</strong>&#12290;<strong>&#25972;&#21512;&#24615;&#12434;&#23432;&#12427;&#12481;&#12455;&#12483;&#12463;</strong> &#12364;&#24517;&#35201;&#12290;<br></p></li><li><p><strong>&#12496;&#12483;&#12463;&#12456;&#12531;&#12489;&#12398;&#12525;&#12483;&#12463;&#12452;&#12531;&#12434;&#36991;&#12369;&#12427;&#12395;&#12399;&#65311;</strong><br><strong>auth &#12392; data &#12434;&#12503;&#12521;&#12460;&#12502;&#12523;&#12395;</strong>&#12290;<strong>provider&#22266;&#26377;&#12398;&#21628;&#12403;&#20986;&#12375;</strong> &#12434;&#20840;&#20307;&#12395;&#12400;&#12425;&#25746;&#12363;&#12378;&#12289;<strong>&#23652;&#12395;&#38281;&#12376;&#36796;&#12417;&#12427;</strong>&#12290;</p></li></ol><div><hr></div><h2>&#12394;&#12380;&#12371;&#12428;&#12434;&#26360;&#12356;&#12390;&#12356;&#12427;&#12398;&#12363;&#65288;&#12371;&#12398;&#20808;&#12398;&#35441;&#65289;&#128640;</h2><p>&#20693;&#12425;&#12364; <strong>Prompt.Build</strong> &#12434;&#31435;&#12385;&#19978;&#12370;&#12383;&#12398;&#12399;&#12289;vibe-coding &#12364;&#38283;&#12356;&#12383;&#21487;&#33021;&#24615;&#12434;&#24859;&#12375;&#12390;&#12356;&#12427;&#12363;&#12425;&#8212;&#8212;&#12381;&#12375;&#12390; <strong>&#12501;&#12525;&#12531;&#12488;&#12398;&#24460;&#12429;&#20596;&#12391;&#21516;&#12376;&#22721;</strong> &#12395;&#20309;&#24230;&#12418;&#24403;&#12383;&#12387;&#12383;&#12363;&#12425;&#12290;&#27425;&#22238;&#12399;&#12289;<strong>spec-driven</strong> &#12434;&#36234;&#12360;&#12390; <strong>machine-checkable &#12394;&#21336;&#19968;&#12398;&#22865;&#32004;&#12524;&#12452;&#12516;</strong>&#12289;<strong>atomic migrations</strong>&#12289;<strong>contract-aware tests</strong> &#12434;&#12393;&#12358;&#32068;&#12415;&#21512;&#12431;&#12379;&#12289;<strong>&#20877;&#29694;&#24615;/&#21487;&#25644;&#24615;/&#12473;&#12500;&#12540;&#12489;</strong> &#12434;&#20445;&#12385;&#12394;&#12364;&#12425; <strong>&#28961;&#39364;&#12394;&#12488;&#12540;&#12463;&#12531;&#12434;&#29123;&#12420;&#12373;&#12394;&#12356;</strong> &#12363;&#12434;&#20849;&#26377;&#12375;&#12414;&#12377;&#12290;</p><p>&#12371;&#12371;&#12395;&#25369;&#12370;&#12383;&#35506;&#38988;&#12395;&#24515;&#24403;&#12383;&#12426;&#12364;&#12354;&#12428;&#12400;&#12289;&#12380;&#12402;&#12354;&#12394;&#12383;&#12398;&#32076;&#39443;&#12418;&#32862;&#12363;&#12379;&#12390;&#12367;&#12384;&#12373;&#12356;&#12290;&#19979;&#12395; <strong>&#12467;&#12513;&#12531;&#12488;</strong> &#12434;&#27531;&#12377;&#12363;&#12289;&#12371;&#12398;&#12513;&#12540;&#12523;&#12395; <strong>&#36820;&#20449;</strong> &#12375;&#12390;&#12367;&#12384;&#12373;&#12356;&#65288;&#20840;&#37096;&#30446;&#12434;&#36890;&#12375;&#12390;&#12356;&#12414;&#12377;&#65289;&#12290;&#12501;&#12457;&#12525;&#12540;&#12450;&#12483;&#12503;&#12434;&#21463;&#12369;&#21462;&#12426;&#12383;&#12356;&#26041;&#12399; <strong>Subscribe</strong> &#12434;&#12393;&#12358;&#12382;&#12290;&#128276;<br><strong><br></strong>&#8212; Ivan, co-founder/CEO, Prompt.Build<em><br><a href="https://prompt.build">https://prompt.build</a></em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.prompt.build/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">&#26032;&#12375;&#12356;&#25237;&#31295;&#12398;&#36890;&#30693;&#12434;&#21463;&#12369;&#21462;&#12426;&#12383;&#12356;&#26041;&#12399;&#12289;<strong>Subscribe</strong> &#12434;&#25276;&#12375;&#12390;&#12367;&#12384;&#12373;&#12356;&#12290;</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Vibe-Coding: a promessa e os limites]]></title><description><![CDATA[Estamos muito otimistas com vibe-coding. Mas acoplamento de backend, queima de tokens e erros de alucina&#231;&#227;o que se acumulam s&#227;o reais. Aqui est&#227;o 5 problemas que seguimos enfrentando em produ&#231;&#227;o.]]></description><link>https://blog.prompt.build/p/vibe-coding-a-promessa-e-os-limites</link><guid isPermaLink="false">https://blog.prompt.build/p/vibe-coding-a-promessa-e-os-limites</guid><dc:creator><![CDATA[Ivan Goh - Prompt.Build]]></dc:creator><pubDate>Thu, 09 Oct 2025 15:50:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EiL1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Tamb&#233;m dispon&#237;vel em: <a href="https://blog.prompt.build/p/vibe-coding-the-promise-and-the-limits">EN</a> | <a href="https://blog.prompt.build/p/vibe-coding-kanousei-to-genkai">&#26085;&#26412;&#35486;</a></p><blockquote><p>Eu sou o Ivan, cofundador/CEO da <strong>Prompt.Build</strong>. Antes disso, fomos a <strong>BeyondRisk AI-6</strong> construindo sistemas corporativos de IA. Adotamos ferramentas de vibe-coding cedo para ganhar velocidade. Estou muito otimista - e acho que ainda estamos s&#243; no come&#231;o do que &#233; poss&#237;vel. &#128640; Este post registra as dores que vemos quando times de verdade tentam colocar apps em produ&#231;&#227;o com vibe-coding. <strong>Sem &#8220;solu&#231;&#245;es&#8221; aqui</strong>; no pr&#243;ximo post eu compartilho como estamos tentando atacar esses pontos.</p></blockquote><h2><br>O que o vibe-coding acerta (por que estamos otimistas)&#10024;</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EiL1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EiL1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EiL1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Generated image&quot;,&quot;title&quot;:&quot;Generated image&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Generated image" title="Generated image" srcset="https://substackcdn.com/image/fetch/$s_!EiL1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Vibe-coding</strong> - dizer para uma IA o que voc&#234; quer e deixar ela construir - <strong>acelera muito o frontend</strong>. Voc&#234; sai do zero para uma interface &#8220;de verdade&#8221; numa &#250;nica sess&#227;o: p&#225;ginas aparecem, navega&#231;&#227;o funciona, formul&#225;rios e tabelas surgem, e o design fica consistente sem brigar por detalhes.</p><p>Tamb&#233;m <strong>encurta o caminho de ideia &#8594; tela</strong>. Em vez de tickets, wireframes e repasses, voc&#234; descreve o que precisa e j&#225; v&#234; na hora. Esse ciclo r&#225;pido te faz experimentar mais: testar dois layouts, trocar componentes, ajustar o <strong>copy</strong> - antes de gastar dias de engenharia.</p><p>E n&#227;o &#233; mais s&#243; frontend. A maioria das plataformas de vibe-coding j&#225; vem com um <strong>backend pronto</strong> - muitas via <strong>Supabase</strong> (gerenciado ou OSS) - ent&#227;o voc&#234; ganha <strong>auth</strong>, <strong>Postgres</strong>, <strong>RLS</strong>, <strong>storage</strong> e um <strong>SDK</strong> redondinho j&#225; no dia 1. Isso faz com que demos e ferramentas internas fiquem &#8220;reais&#8221; de ponta a ponta, n&#227;o s&#243; cascas clic&#225;veis.</p><p>&#9989; Em resumo: vibe-coding brilha em <strong>velocidade</strong>, <strong>itera&#231;&#227;o</strong> e <strong>entendimento compartilhado</strong> - e, cada vez mais, em te levar r&#225;pido a um <strong>prot&#243;tipo full-stack</strong> funcional.</p><p>Mas quando voc&#234; sai da camada de <strong>UI</strong>, o &#8220;vibe&#8221; muda.</p><div><hr></div><h2><br>Os 5 problemas que seguimos vendo em produ&#231;&#227;o &#9888;&#65039;</h2><h3><br>1) Velocidade do vibe-coding vs lacunas no backend <strong>&#128295;</strong></h3><p>&#201; verdade: hoje a maioria das plataformas de vibe-coding j&#225; entrega um backend pronto (muitas com <strong>Supabase</strong> - <strong>auth</strong>, <strong>Postgres</strong>, <strong>RLS</strong>, <strong>storage</strong>, <strong>functions</strong>). Ent&#227;o o problema n&#227;o &#233; &#8220;n&#227;o ter backend&#8221;. &#201; a <strong>fia&#231;&#227;o entre a UI que muda r&#225;pido e os contratos do backend</strong> quando entra l&#243;gica de verdade.</p><p>Onde vemos a dor em produ&#231;&#227;o:</p><ul><li><p><strong>&#128269; Deriva silenciosa (UI vs API).</strong><br>Detalhinhos estouram tudo depois: <strong>customer_id vs customerId</strong>, UI espera <strong>200</strong> mas a API retorna <strong>204</strong>, ou a lista muda de <strong>{ data: [] }</strong> para s&#243; <strong>[]</strong>. Um ajuste r&#225;pido no backend pode fazer a tela ler os campos errados (<strong>id vs user_id</strong>) sem erro expl&#237;cito.</p></li><li><p><strong>&#129513; Telas saem de sincronia.</strong><br>Voc&#234; corrige &#8220;Editar Cliente&#8221;, mas &#8220;Pedidos&#8221; continua no <strong>shape</strong> antigo. <strong>Sem uma fonte &#250;nica da verdade</strong>, cada tela deriva um pouquinho do seu jeito.</p></li><li><p><strong>&#128452;&#65039; Altera&#231;&#245;es de schema n&#227;o chegam em todo lugar.</strong><br>Renomear coluna ou apertar um <strong>enum</strong> num ponto e, em outros, tudo segue no antigo - a menos que <strong>migrations</strong> saiam juntas e o <strong>pipeline</strong> pegue. A pr&#243;pria recomenda&#231;&#227;o do Supabase bate na tecla de <strong>migrations + CI</strong> para evitar exatamente essa classe de erro.</p></li><li><p><strong>&#127767; Diferen&#231;as entre staging e prod.</strong><br><strong>Keys</strong>, <strong>base URLs</strong>, <strong>buckets de storage</strong> ou <strong>pol&#237;ticas</strong> n&#227;o batem. No preview funciona; em prod d&#225; <strong>401/403/404</strong>. Cl&#225;ssico &#8220;no meu branch funcionou&#8221;.</p></li><li><p><strong>&#128268; Bordas de workflow s&#227;o fr&#225;geis (jobs, webhooks, filas).</strong><br>A UI pode dizer &#8220;<strong>Aprovar &#8594; Notificar &#8594; Conciliar</strong>&#8221;, mas conectar <strong>serverless functions</strong>, <strong>cron jobs</strong> e assinaturas de <strong>webhooks</strong> (Stripe, Slack, GitHub) &#233; fr&#225;gil. <strong>Rate limits</strong>, <strong>retries</strong> e <strong>idempot&#234;ncia</strong> n&#227;o se resolvem s&#243; com prompt.</p></li></ul><blockquote><p>Freq&#252;entemente os problemas aparecem quando o projeto tem <strong>3&#8211;5 integra&#231;&#245;es externas</strong> (pagamentos, comunica&#231;&#227;o, identidade, storage, analytics). Isso j&#225; &#233; o suficiente para iniciar deriva.</p></blockquote><p><strong>&#9989; Bottom line:</strong> entregar um backend j&#225; n&#227;o &#233; o gargalo; <strong>coordenar UI &#8596; API &#8596; contratos de dados</strong> &#233;. Quanto mais r&#225;pido a UI muda, mais f&#225;cil endpoints, schemas e pol&#237;ticas sa&#237;rem de compasso - especialmente quando as integra&#231;&#245;es passam do CRUD (<strong>pagamentos</strong>, <strong>audit</strong>, <strong>APIs de terceiros</strong>, <strong>jobs em background</strong>).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rxVk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rxVk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rxVk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Generated image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Generated image" title="Generated image" srcset="https://substackcdn.com/image/fetch/$s_!rxVk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3><br>2) <strong>Acoplamento ao Supabase &#129513; e por que &#8220;exportar &amp; continuar&#8221; ainda n&#227;o &#233; c&#243;digo realmente seu</strong></h3><p>Hoje muita plataforma de vibe-coding pluga no <strong>Supabase</strong> (gerenciado ou OSS) para ter um backend dia-1: <strong>Postgres + Auth + RLS + Storage + Edge/Functions + Realtime</strong>. &#201; um ganho enorme - login, tabelas, pol&#237;ticas e arquivos em horas, n&#227;o semanas, e demos ficam reais de ponta a ponta.</p><div class="pullquote"><p>Nossa vis&#227;o:<br>O &#8220;verdadeiro&#8221; vibe-coding deveria <strong>gerar c&#243;digo que &#233; seu - front-end e back-end</strong>.</p></div><p>Quando o backend vive dentro de um <strong>provider</strong>, voc&#234; n&#227;o &#8220;possui&#8221; totalmente os <strong>primitivos</strong>; voc&#234; fica preso &#224; forma como aquele provider implementa (<strong>shape de auth/sess&#227;o</strong>, <strong>estilo de pol&#237;ticas RLS</strong>, <strong>extens&#245;es SQL</strong>, <strong>caminhos/ACLs de storage</strong>, <strong>canais de Realtime</strong>, <strong>sem&#226;ntica do SDK</strong>).</p><p>Ent&#227;o, mesmo que voc&#234; <strong>exporte</strong> de uma plataforma (<strong>Lovable/Bolt/Replit</strong>) e continue no <strong>Claude Code/Cursor/Codex</strong> ou outro assistente, normalmente est&#225; exportando o <strong>frontend</strong> em volta de um backend no <strong>formato do provider</strong>. N&#227;o &#233; ruim - &#233; o custo natural de acelerar em cima de um stack &#243;timo - mas &#233; <strong>apego, n&#227;o independ&#234;ncia</strong>.</p><p><strong>Onde isso aparece:</strong></p><ul><li><p><strong>Trabalho de portabilidade</strong> l&#225; na frente. Migrar para <strong>Postgres &#8220;vanilla&#8221;/RDS/Aurora</strong> ou outro backend exige remapear <strong>pol&#237;ticas</strong>, <strong>auth/sess&#227;o</strong>, <strong>sem&#226;ntica de storage</strong> e chamadas do <strong>SDK</strong>.</p></li><li><p><strong>Ops/observabilidade</strong> ficam no formato do provider. <strong>Incidentes</strong>, <strong>logs</strong>, <strong>m&#233;tricas</strong>, <strong>cotas</strong> e <strong>runbooks</strong> seguem os padr&#245;es do provider; trocar implica <strong>reaprender</strong> e <strong>refazer tooling</strong>.</p></li><li><p><strong>Teto de customiza&#231;&#227;o.</strong> Nem sempre d&#225; para alterar internals de <strong>auth/queue/storage</strong> como voc&#234; faria se fossem <strong>gerados no seu reposit&#243;rio/infra</strong>.</p></li></ul><blockquote><p>N&#227;o somos &#8220;anti-Supabase&#8221; - somos <strong>pr&#243;-propriedade</strong>. &#201; um backend excelente para come&#231;ar r&#225;pido. S&#243; damos o alerta do <strong>acoplamento</strong> cedo para o time planejar <strong>portabilidade</strong> e <strong>rotas de sa&#237;da</strong> - ou optar por <strong>gerar/possuir mais do backend</strong> quando isso passar a importar.</p></blockquote><p><strong>Pr&#225;tica:</strong> use Supabase com confian&#231;a para <strong>velocidade</strong>, e mantenha <strong>sa&#237;das de emerg&#234;ncia</strong>:</p><ul><li><p>Trate <strong>auth</strong> e <strong>dados</strong> como <strong>interfaces</strong> (fronteira fina de auth + camada de acesso a dados).</p></li><li><p><strong>Envolva storage/webhooks/filas atr&#225;s das suas functions</strong> para poder trocar <strong>URLs/assinaturas/providers</strong>.</p></li><li><p>Se <strong>propriedade</strong> &#233; cr&#237;tica, mire um caminho onde o fluxo de vibe-coding possa <strong>emitir os primitivos de backend como c&#243;digo/infra</strong> que voc&#234; pode <strong>editar, revisar e redeployar</strong> em qualquer lugar.</p></li></ul><div><hr></div><h3><br>3) <strong>Queima de tokens no loop de depura&#231;&#227;o </strong>&#128293;&#128184;</h3><p>Mesmo com controles de custo mais novos como <strong>prompt caching</strong> (OpenAI, Anthropic), o <strong>gasto de tokens</strong> durante a <strong>depura&#231;&#227;o iterativa</strong> ainda &#233; dif&#237;cil de prever. O cache d&#225; desconto no <strong>contexto repetido</strong>, mas os <strong>loops reais</strong> incluem <strong>retries</strong>, <strong>tool calls</strong> e <strong>edi&#231;&#245;es n&#227;o-locais</strong> que reenviam <strong>contextos grandes</strong> - ent&#227;o dois &#8220;ajustes pequenos&#8221; podem variar <strong>10&#8211;50&#215; em tokens</strong> dependendo do que o modelo resolve tocar e de quanto contexto &#233; recarregado.</p><p><strong>&#128293; Por que a queima continua hoje:</strong></p><ul><li><p><strong>Edi&#231;&#245;es n&#227;o determin&#237;sticas.</strong> Um prompt pequeno &#224;s vezes dispara <strong>reescritas mais amplas</strong> em arquivos/tipos adjacentes, for&#231;ando reprocessar contextos maiores no pr&#243;ximo passo. (Vendors mitigam com caching/cr&#233;ditos, mas n&#227;o eliminam <strong>diffs largos</strong>.)</p></li><li><p><strong>Thrash de retry/tools.</strong> <strong>Rate limits</strong>, <strong>mismatches de schema</strong> ou <strong>re-planejamento de tools</strong> re-streamam o mesmo (ou maior) contexto. <strong>Cache ajuda</strong> mas n&#227;o cobre todos os caminhos nem todo <strong>cache miss</strong>.</p></li><li><p><strong>Sinais de pre&#231;o</strong> refletem a vari&#226;ncia. Plataformas migram para <strong>pricing por uso/esfor&#231;o</strong> ou por <strong>faixas de tokens</strong> justamente porque a carga oscila muito entre &#8220;uma tacada s&#243;&#8221; e &#8220;v&#225;rias passagens explorat&#243;rias&#8221;. Usu&#225;rios relatam <strong>estourar pools de tokens/cr&#233;ditos</strong> mais r&#225;pido que o esperado.</p></li></ul><p><strong>&#129335;&#8205;&#9794;&#65039; Onde a incerteza d&#243;i:</strong></p><ul><li><p>N&#227;o d&#225; para <strong>estimar com confian&#231;a o custo por corre&#231;&#227;o</strong> - mudan&#231;as &#8220;parecidas&#8221; podem abrir leques bem diferentes.</p></li><li><p>Voc&#234; <strong>paga s&#243; para confirmar &#8220;n&#227;o mudou mais nada&#8221;</strong>, porque a <strong>verifica&#231;&#227;o</strong> tamb&#233;m re-consome contexto.</p></li><li><p>Times sofrem para <strong>or&#231;ar a fase de build</strong> porque o gasto acompanha a <strong>quantidade e a amplitude das regenera&#231;&#245;es</strong>, n&#227;o apenas o n&#250;mero de features.</p></li></ul><p><strong>&#9989; Em resumo:</strong> a dor n&#227;o &#233; s&#243; <strong>custo</strong> - &#233; <strong>falta de transpar&#234;ncia e previsibilidade</strong>. Mesmo com descontos de cache, falta uma <strong>unidade est&#225;vel de trabalho</strong> para estimar &#8220;quanto custa arrumar isso?&#8221; durante a <strong>itera&#231;&#227;o ativa</strong>.</p><div><hr></div><h3><br>4)<strong> Planos mensais n&#227;o combinam com a forma como constru&#237;mos </strong>&#128467;&#65039;&#9201;&#65039;</h3><p>A maioria das plataformas vende <strong>planos mensais com limite de tokens</strong>. A maioria dos times <strong>n&#227;o constr&#243;i o m&#234;s inteiro</strong>. Inscrevem, codam forte por <strong>5&#8211;10 dias</strong>, entregam demo, <strong>exportam</strong> para um assistente de c&#243;digo (<strong>Cursor</strong>, <strong>Claude Code</strong>, etc.) e param. O usu&#225;rio n&#227;o quer &#8220;calend&#225;rio&#8221; - quer uma forma <strong>previs&#237;vel</strong> de pagar por um <strong>bloco de trabalho</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RkFV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RkFV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RkFV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png" width="666" height="444.1524725274725" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:666,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Generated image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Generated image" title="Generated image" srcset="https://substackcdn.com/image/fetch/$s_!RkFV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>&#129504; Por que isso atrapalha:</strong></p><ul><li><p>Voc&#234; <strong>paga por tempo ocioso</strong>. Depois da semana intensa, o resto do m&#234;s fica parado.</p></li><li><p><strong>Or&#231;amento vira bagun&#231;a.</strong> Um ajuste pequeno pode consumir mais tokens que o previsto; <strong>custo por tarefa</strong> n&#227;o &#233; claro.</p></li><li><p><strong>Unidade errada de valor.</strong> Voc&#234; &#233; for&#231;ado a comprar <strong>tempo (um m&#234;s)</strong> em vez de <strong>trabalho</strong> (tentativas de build, rodadas de regen, um resultado implant&#225;vel).</p></li><li><p><strong>Trocas de contexto.</strong> Depois de exportar para assistentes de c&#243;digo, voc&#234; ainda est&#225; pagando um plano que n&#227;o usa.</p></li></ul><p><strong>&#9989; O que o usu&#225;rio realmente quer:</strong></p><ul><li><p>Pagar por uma <strong>janela de build</strong>, n&#227;o por um m&#234;s - ex.: <strong>passes de 3&#8211;7 dias</strong>.</p></li><li><p><strong>Unidades claras de trabalho</strong> (ex.: <strong>N regenera&#231;&#245;es</strong>, <strong>M verifica&#231;&#245;es de contrato</strong>, <strong>um build implant&#225;vel</strong>).</p></li><li><p><strong>Sem penalidade por pausar.</strong> Parar, voltar depois e <strong>retomar de onde parou</strong>.</p></li></ul><blockquote><p>&#8220;Builders n&#227;o pensam em meses. Pensam em <strong>sprints</strong> - &#8216;faz essa feature funcionar e pausa&#8217;. O pre&#231;o deveria refletir isso: <strong>pagar por um foco de build</strong>, n&#227;o por uma folha de calend&#225;rio.&#8221;</p></blockquote><p><strong>&#9989; Em resumo:</strong> o usu&#225;rio precisa de <strong>pricing previs&#237;vel e alinhado &#224; tarefa</strong> - pagar pelo trabalho feito em <strong>rajadas curtas</strong> e depois pausar. <strong>Mensal + tokens</strong> faz projetos simples parecerem caros e dif&#237;ceis de planejar.</p><div><hr></div><h3><br>5) <strong>Erros de alucina&#231;&#227;o que se acumulam: por que pequenos deslizes viram bola de neve </strong>&#127744;</h3><p><strong>Prompting em m&#250;ltiplas etapas</strong> pode <strong>amplificar erros pequenos</strong>. Modelos raramente se <strong>autocorregem</strong> de forma confi&#225;vel sem <strong>feedback externo</strong>; em muitos casos, &#8220;<strong>self-correction</strong>&#8221; at&#233; degrada a qualidade. Em cen&#225;rios de <strong>m&#250;ltiplos turnos</strong>, erros tendem a <strong>se acumular</strong> conforme o contexto muda e a <strong>n&#227;o-deterministicidade</strong> introduz novas inconsist&#234;ncias.</p><p><strong>&#129514; Por que isso acontece hoje:</strong></p><ul><li><p><strong>Limites da autocorre&#231;&#227;o.</strong> Estudos mostram que autocorre&#231;&#227;o intr&#237;nseca (o modelo se consertar a partir da pr&#243;pria sa&#237;da) &#233; pouco confi&#225;vel e pode <strong>piorar o racioc&#237;nio</strong>.</p></li><li><p><strong>N&#227;o-determinismo entre execu&#231;&#245;es.</strong> Mesmo com configura&#231;&#245;es &#8220;determin&#237;sticas&#8221;, sa&#237;das variam; ent&#227;o um <strong>fix no passo N</strong> pode criar um novo desencontro no <strong>passo N+1</strong>.</p></li><li><p><strong>Deriva em contextos longos.</strong> Quanto maior a cadeia de edi&#231;&#245;es, mais <strong>deriva latente</strong> acumula e mais dif&#237;cil fica detectar/reverter.</p></li></ul><p><strong>&#129525; Como isso aparece no dia a dia:</strong></p><ul><li><p><strong>Nomes, shapes e estados</strong> &#8220;quase&#8221; batem - mas nunca 100% - criando um <strong>mosaico fr&#225;gil</strong> sob testes e migrations.</p></li><li><p>&#8220;<strong>Pedir de novo para corrigir</strong>&#8221; dispara <strong>efeitos colaterais</strong> em outro canto, e voc&#234; gasta ciclos <strong>validando estabilidade</strong> em vez de entregar.</p></li><li><p>Depois de alguns dias, voc&#234; est&#225; <strong>depurando a pr&#243;pria deriva</strong>, n&#227;o a feature original.</p></li></ul><blockquote><p>&#8220;Um pequeno passo em falso pode virar cascata. Se sua &#250;nica ferramenta &#233; &#8216;<strong>pedir de novo</strong>&#8217;, voc&#234; acaba <strong>perseguindo o &#250;ltimo erro do modelo</strong> em vez de <strong>corrigir a causa real</strong>.&#8221;</p></blockquote><p><strong>&#9989; Em resumo:</strong> <strong>alucina&#231;&#227;o acumulada</strong> n&#227;o &#233; exce&#231;&#227;o - &#233; comportamento conhecido de <strong>loops multi-turno e auto-refin&#225;veis</strong>. Sem uma <strong>fonte externa da verdade</strong> (<strong>contratos, testes, verifica&#231;&#245;es</strong>), &#8220;s&#243; <strong>prompta de novo</strong>&#8221; costuma <strong>espalhar o erro</strong> em vez de <strong>sel&#225;-lo</strong>.</p><div><hr></div><h3><br>Uma nota especial: &#8220;fluxos agentic orientados por especifica&#231;&#227;o&#8221; s&#227;o necess&#225;rios, mas n&#227;o bastam &#128208;</h3><p>Estamos vendo uma nova leva de <strong>IDEs agentic orientadas por specs</strong> / &#8220;<strong>f&#225;bricas de software</strong>&#8221;. Exemplos: <strong>Amazon Kiro</strong>, <strong>8090.ai</strong> (a &#8220;Software Factory&#8221; do Chamath) e o <strong>Spec Kit do GitHub</strong>. A tend&#234;ncia &#233; certa: adicionar <strong>estrutura</strong> - <strong>PRDs</strong>, <strong>specs</strong>, <strong>tarefas</strong> - dentro do loop.</p><p>No que concordamos:<br><strong>Fluxos orientados por specs s&#227;o necess&#225;rios.</strong> Reduzem <strong>caos</strong>, d&#227;o <strong>plano</strong> para agentes e diminuem <strong>desencontros</strong> &#243;bvios.</p><p>Realidade:<br>Eles n&#227;o apagam <strong>alucina&#231;&#227;o</strong> nem <strong>n&#227;o-determinismo</strong> - especialmente conforme o <strong>app cresce</strong> ou quando voc&#234; <strong>edita dia ap&#243;s dia</strong>. <strong>Loops de autocorre&#231;&#227;o</strong> muitas vezes <strong>n&#227;o convergem</strong>, <strong>contextos longos derivam</strong>, e <strong>pequenos fixes</strong> podem continuar criando <strong>inconsist&#234;ncias</strong>. <strong>Estrutura ajuda</strong>; n&#227;o encerra o problema.</p><p>Como fazemos (e o que aprendemos):<br>Na <strong>Prompt.Build</strong>, tamb&#233;m rodamos <strong>fluxos agentic orientados por spec</strong> (<strong>PRD &#8594; tarefas &#8594; contratos &#8594; c&#243;digo</strong>). Isso <strong>reduz mismatch</strong>. Mas, em escala, voc&#234; ainda v&#234; <strong>erros acumulados</strong> e <strong>deriva de contexto</strong> se n&#227;o adicionar <strong>guardrails</strong>.</p><blockquote><p>&#8220;<strong>Specs s&#227;o necess&#225;rias, n&#227;o suficientes.</strong> Elas <strong>apontam</strong> o modelo na dire&#231;&#227;o certa; os <strong>guardrails</strong> impedem que ele <strong>derive</strong> quando o app cresce e as edi&#231;&#245;es se acumulam.&#8221;</p></blockquote><p><strong>&#9989; Em resumo:</strong><br><strong>Specs + agentes</strong> s&#227;o o pr&#243;ximo passo certo - mas <strong>n&#227;o bastam sozinhos</strong>. Na Prompt.Build, vamos al&#233;m de fluxos orientados por specs com <strong>verifica&#231;&#245;es</strong> e <strong>guardrails de portabilidade</strong> para manter <strong>UI/API/schema em compasso</strong> e segurar a <strong>deriva</strong> antes de chegar &#224; produ&#231;&#227;o. Vou detalhar como no pr&#243;ximo post.</p><div><hr></div><h2>FAQ r&#225;pido&#10067;</h2><ol><li><p><strong>O que &#233; vibe-coding?</strong><br>Descrever para a IA o que voc&#234; quer e ela construir a maior parte do app - especialmente as <strong>telas</strong> - bem r&#225;pido.<br></p></li><li><p><strong>Vibe-coding &#233; bom?</strong><br>Sim para <strong>velocidade</strong>, <strong>demos</strong> e <strong>prototipagem</strong>. Fica puxado quando a <strong>UI</strong> e o <strong>backend</strong> param de concordar.<br></p></li><li><p><strong>Quais os contras?</strong><br>Pequenos desencontros se acumulam (<strong>nomes</strong>, <strong>shapes de dados</strong>, <strong>status codes</strong>), corre&#231;&#245;es podem <strong>queimar muitos tokens</strong> e voc&#234; pode ficar <strong>preso a um provider</strong> de backend.<br></p></li><li><p><strong>Vibe-coding &#233; &#8220;de gra&#231;a&#8221;?</strong><br>N&#227;o. Voc&#234; <strong>paga por tokens</strong>. Um ajuste pequeno pode disparar uma <strong>regen ampla</strong> e <strong>custar mais</strong> do que esperava.<br></p></li><li><p><strong>Qual ferramenta &#233; &#8220;a melhor&#8221;?</strong><br>Escolha a que deixa <strong>exportar c&#243;digo de verdade</strong> e <strong>rodar em outro lugar</strong> depois. <strong>Portabilidade</strong> importa mais que o logo.<br></p></li><li><p><strong>Vibe-coding vai substituir programadores?</strong><br>N&#227;o. Pessoas ainda decidem o <strong>modelo de dados</strong>, <strong>regras de seguran&#231;a</strong>, como <strong>implantar</strong> e o que &#233; &#8220;<strong>pronto</strong>&#8221;.<br></p></li><li><p><strong>O que &#233; &#8220;deriva de contrato&#8221;?</strong><br>Quando <strong>UI e API</strong> param de bater - uma espera <strong>customerId</strong>, a outra manda <strong>customer_id</strong>; uma retorna <strong>200</strong>, a outra espera <strong>204</strong>. Parece tudo bem at&#233; <strong>quebrar</strong>.<br></p></li><li><p><strong>Por que os tokens disparam na depura&#231;&#227;o?</strong><br>Uma mudan&#231;a pequena pode fazer a IA <strong>reescrever arquivos pr&#243;ximos</strong> e <strong>reenviar contextos grandes</strong> em <strong>tool calls</strong>. Duas corre&#231;&#245;es <strong>parecidas</strong> podem <strong>custar bem diferente</strong>.<br></p></li><li><p><strong>Por que planos mensais n&#227;o encaixam no jeito que a gente trabalha?</strong><br>A maioria dos times trabalha em <strong>rajadas curtas</strong> (poucos dias), n&#227;o o m&#234;s inteiro. Querem <strong>pagar por janela de build</strong> ou por <strong>bloco claro de trabalho</strong> - n&#227;o por um <strong>m&#234;s de calend&#225;rio</strong>.<br></p></li><li><p><strong>O que s&#227;o &#8220;erros de alucina&#231;&#227;o acumulados&#8221;?</strong><br>Um <strong>errinho de IA</strong> leva a outro &#8220;fix&#8221;, que <strong>muda outra coisa</strong>, e os erros viram <strong>bola de neve</strong>.<br></p></li><li><p><strong>Fluxos agentic orientados por spec s&#227;o suficientes?</strong><br><strong>Ajudam muito</strong>, mas <strong>n&#227;o sozinhos</strong>. Voc&#234; ainda precisa de <strong>checks</strong> para <strong>manter tudo alinhado</strong>.<br></p></li><li><p><strong>Como evitar lock-in de backend?</strong><br>Trate <strong>auth</strong> e <strong>dados</strong> como <strong>pe&#231;as plug&#225;veis</strong>. N&#227;o <strong>espalhe chamadas espec&#237;ficas do provider</strong> por todo lado; <strong>concentre numa camada</strong> para poder <strong>trocar depois</strong>.</p></li></ol><div><hr></div><h2>Por que estou escrevendo isso (e o que vem depois) &#128640;</h2><p>Fundamos a <strong>Prompt.Build</strong> porque adoramos o que o vibe-coding <strong>destravou</strong> - e porque batemos nas <strong>mesmas paredes</strong> depois do <strong>frontend</strong>. No pr&#243;ximo post, vou mostrar como vamos al&#233;m de fluxos agentic por especifica&#231;&#227;o com uma <strong>camada &#250;nica de contrato verific&#225;vel por m&#225;quina</strong>, <strong>migrations at&#244;micas</strong> e <strong>testes sens&#237;veis a contrato</strong> - para que os builds fiquem <strong>reprodut&#237;veis</strong>, <strong>port&#225;veis</strong> e <strong>r&#225;pidos</strong> <strong>sem desperdi&#231;ar tokens</strong>.</p><p>Se voc&#234; j&#225; bateu em alguma dessas, quero ouvir - deixa um <strong>coment&#225;rio</strong> abaixo ou <strong>responde este e-mail</strong> (eu leio todos). E, se quiser o pr&#243;ximo cap&#237;tulo, <strong>assina</strong> para cair direto na sua caixa. &#128276;<br><strong><br></strong>&#8212; Ivan, co-founder/CEO, Prompt.Build<em><br><a href="https://prompt.build">https://prompt.build</a></em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.prompt.build/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Se quiser receber atualiza&#231;&#245;es quando sair um novo post, clique em <strong>Inscrever-se</strong>.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Vibe-Coding: The promise and the limits]]></title><description><![CDATA[We&#8217;re very bullish on vibe-coding. But backend coupling, token burn, and compounding hallucination errors are real. Here are 5 problems we keep hitting in production.]]></description><link>https://blog.prompt.build/p/vibe-coding-the-promise-and-the-limits</link><guid isPermaLink="false">https://blog.prompt.build/p/vibe-coding-the-promise-and-the-limits</guid><dc:creator><![CDATA[Ivan Goh - Prompt.Build]]></dc:creator><pubDate>Tue, 07 Oct 2025 14:51:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EiL1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><em>I&#8217;m Ivan, co-founder/CEO of Prompt.Build. Before this, we were BeyondRisk AI-6 building enterprise AI systems. We adopted vibe-coding tools early to move faster. I&#8217;m very bullish - and I think we&#8217;re still at the very beginning of what&#8217;s possible. &#128640; This post documents the pains we keep hitting when real teams try to ship production apps with vibe-coding. <strong>No fixes in this post</strong>; I&#8217;ll share how we attempt to tackle them in my next post.</em></p></blockquote><p>Also available in: <a href="https://blog.prompt.build/p/vibe-coding-kanousei-to-genkai">&#26085;&#26412;&#35486;</a> | <a href="https://blog.prompt.build/p/vibe-coding-a-promessa-e-os-limites">PT-BR</a></p><h2>What vibe-coding gets right (why we&#8217;re bullish) &#10024;</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EiL1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EiL1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EiL1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Generated image&quot;,&quot;title&quot;:&quot;Generated image&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Generated image" title="Generated image" srcset="https://substackcdn.com/image/fetch/$s_!EiL1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!EiL1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b858b2f-c6f2-4b20-a5e0-8445fe94fbe5_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Vibe-coding - telling an AI what you want and letting it build - makes frontends <strong>fast</strong>. You can go from nothing to a real-looking app in one session: pages show up, navigation works, forms and tables appear, and the design looks consistent without long debates.</p><p>It also shrinks the path from <strong>idea &#8594; screen</strong>. Instead of tickets, wireframes, and handoffs, you describe what you need and see it <strong>right away</strong>. That quick loop makes you try more: test two layouts, swap components, tweak the copy <strong>before</strong> you spend days of engineering time.</p><p>And it&#8217;s <strong>no longer frontend-only</strong>. Most modern vibe-coding platforms wire in a ready backend - often via Supabase (managed or OSS) - so you can get auth, Postgres, row-level security, storage, and a clean SDK <strong>up on day one</strong>. That means demos and internal tools can feel &#8220;real&#8221; end-to-end, not just clickable shells.</p><p><strong>&#9989; Bottom line:</strong> vibe-coding shines at <strong>speed, iteration, and shared understanding</strong> - and increasingly, at <strong>getting you to a functioning full-stack prototype demo quickly</strong>.</p><p>But once you leave the UI layer, the vibe changes.</p><div><hr></div><h2><br>The 5 problems we keep hitting in production &#9888;&#65039;</h2><h3><br>1) Vibe-coding speed vs <strong>backend gaps &#128295;</strong></h3><p>It&#8217;s true: most vibe-coding platforms now ship with a <strong>ready backend</strong> (often Supabase - auth, Postgres, RLS, storage, functions). So the issue isn&#8217;t &#8220;no backend.&#8221; It&#8217;s the <strong>wiring</strong> between the fast-changing UI and the backend contracts once real logic appears.</p><p>Where we keep seeing production pain:</p><ul><li><p><strong>&#128269; Silent drift (UI vs API).</strong><br>Tiny differences blow things up later: <code>customer_id</code> vs <code>customerId</code>, UI expects <strong>200</strong> but the API returns <strong>204</strong>, or a list changes from <code>{ data: [] }</code> to just <code>[]</code>. A quick backend tweak can make the screen read the wrong fields (<code>id</code> vs <code>user_id</code>) without an obvious error.</p></li><li><p><strong>&#129513; Screens fall out of sync.</strong><br>You fix &#8220;Edit Customer,&#8221; but &#8220;Orders&#8221; still uses the old data shape. Without one source of truth, each screen drifts a bit in its own way.</p></li><li><p><strong>&#128452;&#65039; Schema changes don&#8217;t land everywhere.</strong><br>Rename a column or tighten an enum for one place, and other pages/functions keep the old version - unless migrations ship <strong>together</strong> and the pipeline catches it. Supabase&#8217;s own guidance pushes migrations + CI to avoid exactly this class of errors.</p></li><li><p><strong>&#127767; Staging vs prod differences.</strong><br>Keys, base URLs, storage buckets, or policy switches aren&#8217;t the same. Preview works; prod throws 401/403/404. Classic &#8220;it worked on my branch&#8221; fire drill.</p></li><li><p><strong>&#128268; Workflow edges are brittle (jobs, webhooks, queues).</strong><br>The UI can say &#8220;Approve &#8594; Notify &#8594; Reconcile,&#8221; but wiring <strong>serverless functions</strong>, cron jobs, and <strong>webhook signatures</strong> (Stripe, Slack, GitHub) is brittle. Rate limits, retries, and <strong>idempotency</strong> aren&#8217;t handled by a prompt.</p></li></ul><blockquote><p>We often see issues happening once a project has <strong>3-5 external integrations</strong> (payments, comms, identity, storage, analytics). That&#8217;s enough to trigger drift.</p></blockquote><p><strong>&#9989; Bottom line:</strong> shipping a backend <strong>isn&#8217;t</strong> the blocker anymore; <strong>coordinating UI &#8596; API &#8596; data contracts</strong> is. The faster the UI iterates, the easier it is for endpoints, schemas, and policies to fall out of sync - especially as integrations grow beyond CRUD (payments, audit logs, third-party APIs, background jobs).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rxVk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rxVk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rxVk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Generated image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Generated image" title="Generated image" srcset="https://substackcdn.com/image/fetch/$s_!rxVk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!rxVk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb269dbd0-ad32-4a60-b86a-dfddab49d4c7_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3><br>2) <strong>Supabase coupling </strong>&#129513; and why &#8220;export &amp; continue&#8221; still isn&#8217;t code you truly own</h3><p>Most modern vibe-coding platforms wire into <strong>Supabase</strong> (managed or OSS) for a day-one backend: <strong>Postgres + Auth + RLS + Storage + Edge/Functions + Realtime</strong>. That&#8217;s a huge win - login, tables, policies, and files in <strong>hours, not weeks</strong>, and demos feel real end-to-end.</p><div class="pullquote"><p>Our view, though: <br><strong>True vibe-coding should generate code you own - front-end </strong><em><strong>and</strong></em><strong> back-end.</strong></p></div><p>When the backend lives inside a provider, you don&#8217;t fully &#8220;own&#8221; the primitives; you <strong>bind</strong> to how that provider implements them (auth/session shape, RLS policy style, SQL extensions, storage paths &amp; ACLs, Realtime channels, client SDK semantics).</p><p>So even if you <strong>export</strong> from a platform (Lovable/Bolt/Replit) and continue in Claude Code/Cursor/Codex or another assistant, you&#8217;re typically exporting <strong>front-end code</strong> around a <strong>provider-shaped backend</strong>. That&#8217;s not bad - it&#8217;s the natural cost of moving fast on a great stack - but it&#8217;s <strong>attachment</strong>, not independence.</p><p><strong>Where this shows up:</strong></p><ul><li><p><strong>Portability work later.</strong> Moving to vanilla Postgres/RDS/Aurora or a different backend means remapping policies, auth/session handling, storage semantics, and SDK calls.</p></li><li><p><strong>Ops/observability stay provider-shaped.</strong> Incidents, logs, metrics, quotas, and runbooks follow the provider&#8217;s patterns; swapping means retraining and re-tooling.</p></li><li><p><strong>Customization ceiling.</strong> You can&#8217;t always modify the underlying auth/queue/storage internals the way you would if they were <strong>generated into your repo/infra</strong>.</p></li></ul><blockquote><p><strong>We&#8217;re not anti-Supabase - we&#8217;re pro-ownership.</strong> It&#8217;s an excellent <strong>fast-start backend</strong>. We just call the <strong>coupling</strong> early so teams can plan <strong>portability</strong> and <strong>exit paths</strong> - or decide to generate/own more of the backend code when it matters.</p></blockquote><p><strong>Practical take:</strong> use Supabase confidently for speed, <em>and</em> keep escape hatches:</p><ul><li><p>Treat <strong>auth and data</strong> as interfaces (thin auth boundary + data-access layer).</p></li><li><p>Wrap <strong>storage/webhooks/queues</strong> behind your functions so URLs/signatures/providers can change.</p></li><li><p>If ownership is critical, target a path where your vibe-coding flow can <strong>emit the backend primitives as code/infrastructure</strong> you can edit, review, and redeploy anywhere.</p></li></ul><div><hr></div><h3><br>3) <strong>Token-burn</strong> during the debugging loop &#128293;&#128184;</h3><p>Even with newer cost controls like <strong>prompt caching</strong> from OpenAI and Anthropic, token spend during iterative debugging is still hard to predict. Caching discounts repeat context, but real-world loops still include retries, tool calls, and non-local edits that re-send large context - so two &#8220;tiny fixes&#8221; can differ by 10&#8211;50&#215; in tokens depending on what the model decides to touch and how often context is reloaded.</p><p><strong>&#128293; Why the burn persists today:</strong></p><ul><li><p><strong>Non-deterministic edits.</strong> A small prompt often triggers broader rewrites across adjacent files or types, forcing larger contexts to be re-processed on the next pass. (Vendors mitigate with caching/credits, but they don&#8217;t eliminate wide diffs.)</p></li><li><p><strong>Retry/tool thrash.</strong> Rate limits, schema mismatches, or tool re-plans re-stream the same (or larger) context. Caching helps but doesn&#8217;t cover every path or cache miss.</p></li><li><p><strong>Pricing signals reflect the variance.</strong> Platforms are shifting to <strong>usage/effort-based</strong> or <strong>token-tier</strong> pricing precisely because workload can swing widely between &#8220;one and done&#8221; and &#8220;multiple exploratory passes.&#8221; Users frequently report blowing through token or credit pools faster than expected. </p></li></ul><p><strong>&#129335;&#8205;&#9794;&#65039; Where the uncertainty bites:</strong></p><ul><li><p>You can&#8217;t reliably forecast <strong>cost per fix</strong> - the same-looking change can fan out unpredictably.</p></li><li><p>You pay just to confirm <strong>&#8220;nothing else changed,&#8221;</strong> since verification itself re-consumes context.</p></li><li><p>Teams struggle to <strong>budget the build</strong> phase because spend tracks the <em>number and breadth</em> of regeneration rounds, not just feature count.</p></li></ul><p><strong>&#9989; Bottom line:</strong> the pain isn&#8217;t only expense - it&#8217;s <strong>lack of transparency and predictability</strong>. Even with caching discounts, developers lack a stable unit of work to estimate &#8220;how much will this fix cost?&#8221; during active iteration.</p><div><hr></div><h3><br>4)<strong> Monthly subscription plans</strong> don&#8217;t match how we build &#128467;&#65039;&#9201;&#65039;</h3><p>Most platforms sell <strong>monthly plans with token limits</strong>. Most teams don&#8217;t build all month. They <strong>sign up, build hard for 5&#8211;10 days</strong>, ship a demo, <strong>export to an AI code assistant</strong> (Cursor, Claude Code, etc.), and stop. Users don&#8217;t want a calendar - they want a <strong>predictable way to pay for a chunk of work</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RkFV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RkFV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RkFV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png" width="666" height="444.1524725274725" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:666,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Generated image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Generated image" title="Generated image" srcset="https://substackcdn.com/image/fetch/$s_!RkFV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!RkFV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a668f77-6718-4b06-a1e3-f8f69776097a_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>&#129504; Why this hurts users:</strong></p><ul><li><p><strong>You pay for idle time.</strong> After the push week, the rest of the month sits unused.</p></li><li><p><strong>Budgeting is messy.</strong> A small fix can eat more tokens than expected; cost per task isn&#8217;t clear.</p></li><li><p><strong>Wrong unit of value.</strong> You&#8217;re forced to buy <em>time</em> (a month) instead of <em>work</em> (build attempts, regen rounds, a deployable outcome).</p></li><li><p><strong>Context switches.</strong> After exporting to code assistants, you&#8217;re still paying for a plan you don&#8217;t need.</p></li></ul><p><strong>&#9989; What users actually want:</strong></p><ul><li><p><strong>Pay for a build window</strong>, not a month - e.g., 3&#8211;7 day passes.</p></li><li><p><strong>Clear units of work</strong> (e.g., N regenerations, M contract checks, one deployable build).</p></li><li><p><strong>No penalty for pausing.</strong> Stop, come back later, pick up where you left off.</p></li></ul><blockquote><p>&#8220;Builders don&#8217;t think in months. They think in sprints - &#8216;get this feature working, then pause.&#8217; Pricing should match that: pay for a focused build, not for a calendar page.&#8221;</p></blockquote><p><strong>&#9989; Bottom line:</strong> users need <strong>predictable, task-aligned pricing</strong> - pay for the work you do in short bursts, then pause. Monthly + tokens makes simple projects feel expensive and hard to plan.</p><div><hr></div><h3><br>5) <strong>Compounded Hallucination Errors: </strong>Why Small LLM Mistakes Snowball &#127744;</h3><p>Multi-step prompting can <strong>amplify</strong> small mistakes. LLMs often fail to reliably self-correct without external feedback; in many cases, &#8220;self-correction&#8221; loops can even <strong>degrade</strong> the answer quality. In multi-turn settings, errors tend to <strong>compound</strong> as context shifts and non-determinism introduces fresh inconsistencies. </p><p><strong>&#129514; Why this happens today:</strong></p><ul><li><p><strong>Self-correction limits.</strong> Studies show intrinsic self-correction (model fixes itself from its own output) is unreliable and can worsen reasoning.</p></li><li><p><strong>Non-determinism between runs.</strong> Even &#8220;deterministic&#8221; settings yield variable outputs across attempts, so a fix in step N may introduce a new discrepancy in step N+1.</p></li><li><p><strong>Long-context drift.</strong> The longer the edit chain, the more latent drift accumulates and the harder it is to detect or reverse it.</p></li></ul><p><strong>&#129525; What it feels like for teams:</strong></p><ul><li><p>Names, shapes, and states keep <strong>almost</strong> matching - but not quite - creating a patchwork that&#8217;s brittle under tests and migrations.</p></li><li><p>&#8220;Re-ask to fix&#8221; triggers <strong>new</strong> side effects elsewhere, so you burn cycles verifying stability instead of shipping.</p></li><li><p>After a few days, you&#8217;re debugging <strong>the drift itself</strong>, not the original feature.</p></li></ul><blockquote><p>&#8220;One small wrong turn can cascade. If your only tool is &#8216;ask again,&#8217; you can end up chasing the model&#8217;s last mistake instead of fixing the real one.&#8221;</p></blockquote><p><strong>&#9989; Bottom line:</strong> compounding hallucination isn&#8217;t a rare edge case - it&#8217;s a known behavior of multi-turn, self-refining loops. Without an external source of truth (contracts, tests, verification passes), &#8220;just prompt again&#8221; often spreads the error instead of sealing it.</p><div><hr></div><h3><br>A special note: &#8220;Spec-driven agentic flows&#8221; are necessary, but not enough &#128208;</h3><p>We&#8217;re seeing a new wave of <strong>spec-driven, agentic IDEs / &#8220;software factories.&#8221;</strong> Examples include <strong>Amazon Kiro</strong>, <strong>8090.ai</strong> (Chamath&#8217;s &#8220;Software Factory&#8221;), and <strong>GitHub&#8217;s Spec Kit</strong>. The trend is right: add structure - PRDs, specs, tasks - into the loop.</p><p><strong>What we agree with:</strong><br>Spec-driven flows are <strong>necessary</strong>. They cut chaos, give agents a plan, and reduce obvious mismatches.</p><p><strong>Reality check:</strong><br>They don&#8217;t erase <strong>hallucinations</strong> or <strong>non-determinism</strong>&#8212;especially as apps grow or when you&#8217;re editing day after day. Self-correction loops often don&#8217;t converge, long contexts drift, and small fixes can still create new inconsistencies. Structure helps; it doesn&#8217;t end the problem.</p><p><strong>How we do it (and what we&#8217;ve learned):</strong><br>At Prompt.Build, we also run <strong>spec-driven agentic flows</strong> (PRD &#8594; tasks &#8594; contracts &#8594; code). This <strong>reduces</strong> mismatch. But at scale, you still see <strong>compounded hallucination errors</strong> and <strong>context drift</strong> unless you add guardrails.</p><blockquote><p>&#8220;Specs are necessary, not sufficient. They point the model in the right direction; guardrails keep it from drifting when the app gets big and the edits pile up.&#8221;</p></blockquote><p><strong>&#9989; Bottom line:</strong><br>Spec-driven agents are the right next step - but <strong>not enough on their own</strong>. At Prompt.Build, we go beyond spec-driven flows with <strong>verification and portability guardrails</strong> to keep UI/API/schema in lockstep and stop drift before it reaches prod. I&#8217;ll break down how we do this in my <strong>next post</strong>.</p><div><hr></div><h2>Quick FAQ &#10067;</h2><ol><li><p><strong>What is vibe-coding?</strong><br>Using AI to describe what you want and having the tool build most of the app for you - especially the screens - very quickly.<br></p></li><li><p><strong>Is vibe-coding good?</strong><br>Yes for speed and quick demos and prototyping. It gets tricky when the screens and the backend stop agreeing with each other.<br></p></li><li><p><strong>What are the downsides?</strong><br>Little mismatches pile up (names, data shapes, status codes), fixes can burn a lot of tokens, and you can get tied to one backend provider.<br></p></li><li><p><strong>Is vibe-coding free?</strong><br>No. You pay for tokens. A tiny fix can trigger a big re-generation and cost more than you expect.<br></p></li><li><p><strong>Which tool is &#8220;best&#8221;?</strong><br>Pick the one that lets you export real code and run it elsewhere later. Portability matters more than the logo.<br></p></li><li><p><strong>Will vibe-coding replace programmers?</strong><br>No. People still decide the data model, security rules, how things are deployed, and what &#8220;done&#8221; looks like.<br></p></li><li><p><strong>What is &#8220;contract drift&#8221;?</strong><br>When your UI and API stop matching - one expects <code>customerId</code>, the other sends <code>customer_id</code>; one returns 200, the other expects 204. Things look fine until they break.<br></p></li><li><p><strong>Why do tokens spike while debugging?</strong><br>A small change can make the AI rewrite nearby files and re-send large context in tool calls. Two similar fixes can cost very different amounts.<br></p></li><li><p><strong>Why don&#8217;t monthly plans fit how people build?</strong><br>Most teams work in short bursts (a few days), not all month. They want to pay for a build window or a clear chunk of work - not for a calendar month.<br></p></li><li><p><strong>What are &#8220;compounded hallucination errors&#8221;?</strong><br>A tiny AI mistake leads to another &#8220;fix,&#8221; which changes something else, and the errors snowball over time.<br></p></li><li><p><strong>Are spec-driven agent flows enough?</strong><br>They help a lot, but not by themselves. You still need checks to keep things aligned.<br></p></li><li><p><strong>How do I avoid backend lock-in?</strong><br>Treat your auth and data like plug-in parts. Don&#8217;t scatter provider-specific calls everywhere; keep them in one place so you can move later.</p></li></ol><div><hr></div><h2>Why I&#8217;m writing this (and what&#8217;s next) &#128640;</h2><p>We founded Prompt.Build because we love what vibe-coding unlocked - and we kept hitting the same walls after the frontend. In my <strong>next post</strong>, I&#8217;ll share how we go <strong>beyond spec-driven agentic flows</strong> with a single, machine-checkable contract layer, atomic migrations, and contract-aware tests - so builds stay reproducible, portable, and fast without wasting tokens.</p><p>If you&#8217;ve hit any of these issues, I&#8217;d love to hear your story - <strong>leave a comment below</strong> or just <strong>reply to this email</strong> (I read every one). And if you want the follow-up, <strong>subscribe</strong> so it lands in your inbox. &#128276;<br><strong><br></strong>&#8212; Ivan, co-founder/CEO, Prompt.Build<em><br><a href="https://prompt.build">https://prompt.build</a></em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.prompt.build/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">If you&#8217;d like updates when new post drops, hit <strong>Subscribe.</strong></p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>