<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>副業開発 | 週末起業ラボ</title>
	<atom:link href="https://shumatsu-lab.com/tag/%E5%89%AF%E6%A5%AD%E9%96%8B%E7%99%BA/feed/" rel="self" type="application/rss+xml" />
	<link>https://shumatsu-lab.com</link>
	<description>本業の隣で、もう一つのキャリアを</description>
	<lastBuildDate>Tue, 21 Jul 2026 00:49:29 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://shumatsu-lab.com/wp-content/uploads/2026/02/cropped-IMG_2742-32x32.jpeg</url>
	<title>副業開発 | 週末起業ラボ</title>
	<link>https://shumatsu-lab.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">252581404</site>	<item>
		<title>Claude Code /goal入門｜AI自走の完了条件</title>
		<link>https://shumatsu-lab.com/claude-code-goal-autonomous-development/</link>
		
		<dc:creator><![CDATA[ムラサキ]]></dc:creator>
		<pubDate>Thu, 04 Jun 2026 22:51:52 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[AIエージェント]]></category>
		<category><![CDATA[AI自走]]></category>
		<category><![CDATA[Claude Code]]></category>
		<category><![CDATA[副業開発]]></category>
		<category><![CDATA[完了条件]]></category>
		<guid isPermaLink="false">https://shumatsu-lab.com/?p=1709</guid>

					<description><![CDATA[Claude Codeを毎日触っていて、地味にストレスだったのが「続けて」の連打だ。AIがひと仕事するたびに手を止めて、また同じ指示を打つ。SE歴20年で本業も副業もClaude Code Max 5xで回している筆者で [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class="slb slb-tldr">
  <div class="slb-tldr__head">
    <span class="slb-mono slb-tldr__label">TL;DR / 三行要約</span>
          <span class="slb-mono slb-tldr__meta">10分 MIN READ · UPDATED 2026-06-03</span>
      </div>
  <ol>
          <li>完了条件を1文書くと、AIは条件を満たすまで自分でターンを回し続ける。</li>
          <li>customer-portalの4機能を、逐次プロンプトなしで完走させた実体験ベース。</li>
          <li>効く条件の核心は「検証結果を会話に出させる」一文。公式情報で裏取り済み。</li>
      </ol>
    <div class="slb-tldr__badges">
          <span class="slb-badge slb-badge--hi">
        RESULT — 4機能を自走完走      </span>
          <span class="slb-badge">
        TOOL — Claude Code      </span>
          <span class="slb-badge">
        COST — Max 5x      </span>
      </div>
  </div>
    



<p class="wp-block-paragraph">Claude Codeを毎日触っていて、地味にストレスだったのが「続けて」の連打だ。AIがひと仕事するたびに手を止めて、また同じ指示を打つ。SE歴20年で本業も副業もClaude Code Max 5xで回している筆者でも、この往復は効いた。</p>



<p class="wp-block-paragraph">/goalコマンドはこの往復を消す。完了条件を1文書くと、AIは条件を満たすまで自分でターンを回し続ける。実際にcustomer-portalの生産パイプラインを設計工程まで広げる4機能を、逐次プロンプトなしで完走させた。この記事は、その実体験で分かった「効く完了条件の書き方」を軸に、Anthropicの公式ドキュメントで裏を取りながらまとめる。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/03/murasaki_icon.png" alt="ムラサキ" class="speech-icon-image"/></figure><div class="speech-name">ムラサキ</div></div><div class="speech-balloon">
<p class="wp-block-paragraph">最初は半信半疑だった。でも一度走らせたら、詰まっても止まらず原因を追い続けるAIを横で見て、考え方が変わった。</p>
</div></div>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">/goalとは？「続けて」連打から解放される仕組み</a><ol><li><a href="#toc2" tabindex="0">「続けて」を何度も打っていた従来のClaude Code</a></li><li><a href="#toc3" tabindex="0">/goalの動作フロー：評価器が毎ターン完了判定するループ</a></li><li><a href="#toc4" tabindex="0">コスト感覚：自走で消費トークンはどう変わるか</a></li></ol></li><li><a href="#toc5" tabindex="0">完了条件の書き方：自走を成功させた実例</a><ol><li><a href="#toc6" tabindex="0">効いた条件の4要素</a></li><li><a href="#toc7" tabindex="0">最重要は「検証結果を会話に出させる」一文</a></li><li><a href="#toc8" tabindex="0">主観条件が引き起こす「止まれないループ」</a></li></ol></li><li><a href="#toc9" tabindex="0">「指示を出す人」から「仕事を設計する人」へ</a><ol><li><a href="#toc10" tabindex="0">曖昧な指示はAIにも人にも通じない</a></li><li><a href="#toc11" tabindex="0">完了条件を書く訓練が仕事の解像度を上げる</a></li></ol></li><li><a href="#toc12" tabindex="0">Agent View・/loopと組み合わせる（公式情報・筆者未検証）</a><ol><li><a href="#toc13" tabindex="0">claude agentsで並列セッションを一望する</a></li><li><a href="#toc14" tabindex="0">/loopとの違い：時間駆動 vs 完了駆動</a></li><li><a href="#toc15" tabindex="0">朝に仕込んで夕方確認するハーフオート運用</a></li></ol></li><li><a href="#toc16" tabindex="0">/goalが動かないときの前提条件</a><ol><li><a href="#toc17" tabindex="0">信頼ダイアログとフックシステム</a></li><li><a href="#toc18" tabindex="0">法人・チームのポリシーで無効化される</a></li><li><a href="#toc19" tabindex="0">バージョン確認とアップデート</a></li></ol></li><li><a href="#toc20" tabindex="0">今日から始める/goal活用ステップ</a></li><li><a href="#toc21" tabindex="0">よくある質問</a></li><li><a href="#toc22" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">/goalとは？「続けて」連打から解放される仕組み</span></h2>



<h3 class="wp-block-heading"><span id="toc2">「続けて」を何度も打っていた従来のClaude Code</span></h3>



<p class="wp-block-paragraph">通常のClaude Codeは1ターンごとに手を止める。テストを書いて、止まる。「続けて」。実行して失敗、止まる。「続けて」。長い作業ほど、この間に人が挟まる回数が増える。</p>



<p class="wp-block-paragraph">問題は手数だけじゃない。人が間に入るたびに集中が切れ、AIがどこまで進んだかを毎回読み直すことになる。タスクが大きいほど、この「Enterを押す係」の負担が重くなっていく。</p>



<h3 class="wp-block-heading"><span id="toc3">/goalの動作フロー：評価器が毎ターン完了判定するループ</span></h3>



<p class="wp-block-paragraph">/goalは完了条件をひとつ受け取り、その条件を満たすまでターンを自動で回す。Anthropicの<a rel="noopener" href="https://code.claude.com/docs/en/goal.md" target="_blank">/goalコマンド公式ドキュメント</a>によると、各ターンが終わるたびに小さく速い評価モデル（既定はHaiku）が「条件は満たされたか」を判定する。未達ならその理由を次ターンへの指示として渡し、もう一度ターンを始める。条件が満たされた瞬間にゴールは自動で解除され、Claudeは通常モードに戻る。</p>



<div class="wp-block-merpress-mermaidjs diagram-source-image"><pre class="mermaid">graph TD
  A["ターン実行"] --> B["評価器が判定"]
  B -->|"未達 理由を渡す"| A
  B -->|"達成"| C["ゴール自動解除"]
  B -->|"打ち切り句"| D["停止"]
  style A fill:#e8eef6,stroke:#9fb3cc
  style C fill:#e8f3ec,stroke:#9ec7ad
  style D fill:#f3ece8,stroke:#c7b09e
</pre><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/06/merpress.png" alt=""/></div>



<p class="wp-block-paragraph">筆者の実行では、途中で2回詰まった。1回目は<code>"use server"</code>ファイルでobjectをexportしてアクションが全滅したケース、2回目はagent-browserのclickがServer Actionを発火させなかったケース。どちらも/goalは「未達」と扱って継続させ、原因の特定から修正まで自走でやり切った。止まらず原因追及を続けるこの粘りが、人が「続けて」を打つ運用との一番の差だった。</p>



<h3 class="wp-block-heading"><span id="toc4">コスト感覚：自走で消費トークンはどう変わるか</span></h3>



<p class="wp-block-paragraph">正直に書くと、正確なトークン数は筆者の手元では計測していない。ただ確認手段はある。引数なしで<code>/goal</code>を打てば、その時点のターン数とトークン消費が出る。これが唯一の実測手段だ。</p>



<p class="wp-block-paragraph">体感はこうだ。「続けて」連打は人が間に入る分、自然にペースが制御される。一方/goalは人の入力なしで連続ターンが走るので、短時間に多くのターンが進み、消費は速い。判定役のHaiku分は、公式も本体ターンに比べて無視できる量だと明記しているので、評価器のコストは気にしなくていい。気をつけるべきは本体ターンの速度のほうだ。トークン単価そのものを詰めたい場合は、Opus・Sonnet・Haikuを役割で分ける<a href="https://shumatsu-lab.com/claude-code-cost-reduction-3tier-stack/">3層スタックでコストを半減させる手順</a>が効く。</p>



<h2 class="wp-block-heading"><span id="toc5">完了条件の書き方：自走を成功させた実例</span></h2>



<h3 class="wp-block-heading"><span id="toc6">効いた条件の4要素</span></h3>



<p class="wp-block-paragraph">公式ドキュメントは、長いターン数を越えても崩れない条件の要素を挙げている。測定可能な終了状態、それをどう証明するかの手段、途中で壊してはいけない制約だ。筆者が実際に走らせて完走した条件は、これに打ち切り句を足した形だった。</p>



<pre class="wp-block-code"><code>/goal customer-portalの生産パイプラインを設計工程まで拡張する。
レビュー収束性・承認フロー・改訂自由指示・設計工程の横展開の4機能を実装し、
npx tsc --noEmit がエラー0で、各機能を実際にsupabaseで確認した結果を会話に示し、
既存機能を壊さないこと。 or stop after 60 turns</code></pre>



<p class="wp-block-paragraph">要素を分解すると、こうなる。</p>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-check block-box">
<p class="wp-block-paragraph">測定可能な終了状態：「tsc がエラー0」。会話に証拠（コマンド結果）が残る終了点。<br>証明する手段：「supabaseで確認した結果を会話に示す」。検証を強制する一文。<br>壊してはいけない制約：「既存機能を壊さない」。暴走の歯止め。<br>打ち切り句：「or stop after 60 turns」。上限を切ってループの底を作る。</p>
</div>



<p class="wp-block-paragraph">条件は最長4,000文字まで書ける。短くまとめる必要はないので、終了状態・証明手段・制約を遠慮なく詰め込んでいい。</p>



<h3 class="wp-block-heading"><span id="toc7">最重要は「検証結果を会話に出させる」一文</span></h3>



<p class="wp-block-paragraph">4要素のなかで決定的だったのは、「supabaseで確認した結果を会話に示す」の一文だ。評価器は会話に出た内容しか見ない。コマンドを自分で叩いたりファイルを読んだりはしない。公式も評価器について、Claudeが会話で表に出したものしか判定できないと明記している。</p>



<p class="wp-block-paragraph">つまり「検証結果を会話に出させる」と書くことで、AI自身が検証ログを吐くよう仕向けられる。この一文がないと、AIは内部で「できたつもり」になっても、評価器にはそれが見えず判定が進まない。逆にこの一文があると、AIは証拠を会話に残しながら進むので、判定がきれいに通る。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon sbp-r"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/03/murasaki_icon.png" alt="ムラサキ" class="speech-icon-image"/></figure><div class="speech-name">ムラサキ</div></div><div class="speech-balloon">
<p class="wp-block-paragraph">「会話に出させる」を入れるか入れないかで、自走の安定感がまるで違った。評価器の目線で条件を書く、という発想が要る。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc8">主観条件が引き起こす「止まれないループ」</span></h3>



<p class="wp-block-paragraph">逆に入れてはいけないのが主観条件だ。筆者は「UXを良くする」のような条件は最初から外した。評価器が良し悪しを測れないからだ。</p>



<p class="wp-block-paragraph">公式が挙げる典型的な失敗例も「本番運用に耐える品質（production-ready）」型の条件で、検証可能な出力を生まないため達成判定が出ない。条件が甘すぎれば早すぎる解除、達成不能なら打ち切り句に当たるまで回り続ける。会話に証拠が出る客観条件だけが機能する&#8211;これは実際に走らせて骨身にしみた。</p>



<h2 class="wp-block-heading"><span id="toc9">「指示を出す人」から「仕事を設計する人」へ</span></h2>



<h3 class="wp-block-heading"><span id="toc10">曖昧な指示はAIにも人にも通じない</span></h3>



<p class="wp-block-paragraph">完了条件を書く作業は、要するに「終わりの定義」を言語化する作業だ。これはAI特有の話じゃない。曖昧な指示は人間の部下にも通じない。「いい感じにして」で動ける人はいない。</p>



<p class="wp-block-paragraph">AIの場合、曖昧さは別の形でも牙をむく。指示が緩いと、存在しない仕様を勝手に埋めてくることがある。プロンプトが育ちすぎて<a href="https://shumatsu-lab.com/claude-prompt-bloat-limit-design-principles/">888行プロンプトで起きた破綻</a>を一度経験すると、客観的に検証できる指示だけが効くという感覚が身につく。/goalの完了条件は、その感覚を毎回強制してくる。</p>



<h3 class="wp-block-heading"><span id="toc11">完了条件を書く訓練が仕事の解像度を上げる</span></h3>



<p class="wp-block-paragraph">「会話に証拠が出る客観条件だけが効く」という制約は、副業開発でそのまま武器になる。何をもって完了とするかを1文で書けるなら、その仕事は設計できている。書けないなら、まだ自分の中でゴールが曖昧だということだ。</p>



<p class="wp-block-paragraph">筆者がCLAUDE.mdとBUGS.mdを使い分ける運用に行き着いた経緯は<a href="https://shumatsu-lab.com/claude-code-personal-service-development/">個人サービスを作った正直な話</a>に書いたが、結局どれも同じ方向を向いている。AIを動かすほど、自分の指示の甘さが可視化される。/goalはその最先端で、「指示を出す人」を「仕事の終わりを定義する人」に変えていく。</p>



<h2 class="wp-block-heading"><span id="toc12">Agent View・/loopと組み合わせる（公式情報・筆者未検証）</span></h2>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p class="wp-block-paragraph">このセクションのAgent Viewと/loopは、筆者がまだ実際に動かしていない。公式ドキュメントの記載に基づき、/goalとの組み合わせ方を整理する。挙動の細部は手元で確認のうえ使ってほしい。</p>
</div>



<h3 class="wp-block-heading"><span id="toc13">claude agentsで並列セッションを一望する</span></h3>



<p class="wp-block-paragraph">複数のセッションを並列で回すと、ターミナルのタブが増えて、どれが終わったか分からなくなる。Anthropicは<a rel="noopener" href="https://claude.com/blog/agent-view-in-claude-code" target="_blank">Agent Viewの公式発表</a>で、<code>claude agents</code>コマンド（またはセッション内で左矢印）から全セッションを1画面に並べる仕組みを示している。各行に「どれが入力待ちか・作業中か・完了したか」が出る研究プレビュー機能だ。</p>



<p class="wp-block-paragraph">/goalを背景で走らせ、その進捗をAgent Viewで眺める、という組み合わせが想定できる。並列実行やHooksの基礎をまず固めたい場合は、<a href="https://shumatsu-lab.com/claude-code-powerup-guide/">/powerupで隠れ機能を体系的に学ぶ手順</a>から入ると地続きで理解しやすい。</p>



<h3 class="wp-block-heading"><span id="toc14">/loopとの違い：時間駆動 vs 完了駆動</span></h3>



<p class="wp-block-paragraph">/goalと混同しやすいのが/loopだ。公式の比較によれば、/goalは「前のターンが終わったら次が始まり、条件を満たすと止まる」完了駆動。/loopは「一定間隔で同じプロンプトを再実行する」時間駆動で、夜間テストや朝の定期チェックに向く。終わりが条件で決まる作業は/goal、決まった間隔で回したい作業は/loop、という切り分けになる。</p>



<h3 class="wp-block-heading"><span id="toc15">朝に仕込んで夕方確認するハーフオート運用</span></h3>



<p class="wp-block-paragraph">公式は、開いたセッションとは独立に夜間テストや朝の仕分けを走らせるスケジューリングにも触れている。背景セッションとAgent View、あるいは/loopを組み合わせれば、朝に仕込んで夕方に結果だけ見る運用が描ける。ただし筆者の今回の実行はインタラクティブな単一セッションで、ここまで完走させたところまでだ。背景＋並列の本格運用は未検証なので、組み合わせる際は小さく試してから広げてほしい。</p>



<h2 class="wp-block-heading"><span id="toc16">/goalが動かないときの前提条件</span></h2>



<h3 class="wp-block-heading"><span id="toc17">信頼ダイアログとフックシステム</span></h3>



<p class="wp-block-paragraph">/goalの実体は、セッション単位のStopフックのラッパーだ。だから<a rel="noopener" href="https://code.claude.com/docs/en/hooks-guide" target="_blank">公式のフックガイド</a>が示すフックシステムが動く環境が前提になる。具体的には、信頼ダイアログを承認したワークスペースでないと/goalは動かない。承認していない場合、コマンドが理由を表示してくれるので、無反応で悩むことはない。</p>



<h3 class="wp-block-heading"><span id="toc18">法人・チームのポリシーで無効化される</span></h3>



<p class="wp-block-paragraph">会社のmanaged policy設定でdisableAllHooksが有効になっていると、フックごと無効になり/goalも使えなくなる。チームや法人のClaude Codeで「コマンドが反応しない」場合は、まずこの管理ポリシーを疑うといい。これも公式のRequirementsに明記されている挙動だ。</p>



<h3 class="wp-block-heading"><span id="toc19">バージョン確認とアップデート</span></h3>



<p class="wp-block-paragraph">/goalもAgent Viewも比較的新しい機能で、Agent Viewの研究プレビューはv2.1.139以降が要件とされている。<code>claude --version</code>で確認し、古ければnpmで更新しておく。完了判定の精度はバージョンが上がるほど改善されているので、新しめに保つのが無難だ。</p>



<h2 class="wp-block-heading"><span id="toc20">今日から始める/goal活用ステップ</span></h2>



<p class="wp-block-paragraph">副業開発で試すなら、いきなり大物に当てず、小さく回して感覚を掴むのが近道だ。</p>



<div class="wp-block-cocoon-blocks-timeline timeline-box cf block-box not-nested-style cocoon-block-timeline"><div class="timeline-title">/goalを試す3ステップ</div><ul class="timeline">
<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP1</div><div class="timeline-item-content cf"><div class="timeline-item-title">連打タスクを1つ選ぶ</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph">今「続けて」を繰り返しているタスクを1つ特定する。テストを通すまで、リファクタが終わるまで、といった「終わりが言える」作業が向く。</p>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP2</div><div class="timeline-item-content cf"><div class="timeline-item-title">完了条件を1文で書く</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph">終了状態・証明手段・制約・打ち切り句を1文に詰める。とくに「結果を会話に示す」を入れて、AIに証拠を吐かせる。これが効く条件の核心。</p>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP3</div><div class="timeline-item-content cf"><div class="timeline-item-title">小さく走らせて消費を見る</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph">短い作業で走らせ、引数なしの/goalでターン数とトークン消費を確認する。自走のペース感を体で覚えてから、大きいタスクに広げる。</p>
</div></div></li>
</ul></div>



<h2 class="wp-block-heading"><span id="toc21">よくある質問</span></h2>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">/goalは普通のClaude Codeと何が違いますか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p class="wp-block-paragraph">通常はAIが1ターンごとに止まり、人が「続けて」と打ち直す。/goalは完了条件を満たすまでAIが自分でターンを回し続ける。各ターンの後ろで小さな評価器が条件を満たしたか判定し、未達なら自動で次のターンに入る。人がEnterを押す回数がゼロになるのが最大の違い。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">自走中にトークンを使いすぎませんか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p class="wp-block-paragraph">人が間に入らない分ターンが連続するので、消費は短時間で速く進む。引数なしの/goalを打てば、その時点のターン数とトークン消費が出るので途中で確認できる。条件末尾に「or stop after 60 turns」のような打ち切り句を入れておけば暴走は防げる。判定役のHaiku分は本体に比べて無視できる量だと公式も明記している。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">どんな完了条件だと失敗しますか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p class="wp-block-paragraph">「本番運用に耐える品質」のような主観的な条件は失敗する。判定する評価器は会話に出た内容しか見ないので、良し悪しを測れない条件は達成判定が出ない。「npm testがエラー0」「git statusがクリーン」のように、AIの出力に証拠が残る客観的な終了状態を書くこと。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">法人アカウントで/goalが使えないのはなぜですか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p class="wp-block-paragraph">/goalはフックシステムを使って動く。会社のmanaged policyでdisableAllHooksが設定されていると、フックごと無効になり/goalも使えない。また信頼ダイアログを承認していないワークスペースでも動かない。どちらの場合もコマンドが理由を表示するので、無反応で悩むことはない。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">/loopとはどう使い分けますか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p class="wp-block-paragraph">/goalは「条件を満たしたら止まる」完了駆動。/loopは「一定間隔で同じプロンプトを再実行する」時間駆動で、夜間テストや定期チェックに向く。終わりが条件で決まる作業は/goal、決まった間隔で回したい作業は/loop、と分けると迷わない。</p>
</div></dd></dl></div>



<h2 class="wp-block-heading"><span id="toc22">まとめ</span></h2>



<p class="wp-block-paragraph">/goalを実際に使って分かったのは、3つだ。</p>



<p class="wp-block-paragraph">ひとつ、完了条件を1文書くだけで、AIは詰まっても止まらず条件を満たすまで自走する。ふたつ、効く条件の核心は「検証結果を会話に出させる」一文で、評価器は会話しか見ないからここが決定的。みっつ、客観的に検証できる終了状態だけが機能し、主観条件は止まれないループを生む。</p>



<p class="wp-block-paragraph">まず手元で「続けて」を連打しているタスクを1つ選び、終わりを1文で書いてみる。それが書けたなら、その仕事はもうAIに渡せる。書けないなら、自分の中でゴールがまだ曖昧だというサインだ。/goalは、その曖昧さを毎回突きつけてくる道具でもある。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/03/murasaki_icon.png" alt="ムラサキ" class="speech-icon-image"/></figure><div class="speech-name">ムラサキ</div></div><div class="speech-balloon">
<p class="wp-block-paragraph">「Enterを押す係」から卒業すると、空いた時間で次の設計を考えられる。副業の時間は有限だから、この差は大きい。</p>
</div></div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1709</post-id>	</item>
		<item>
		<title>Claudeプロンプト888行の運用限界</title>
		<link>https://shumatsu-lab.com/claude-prompt-bloat-limit-design-principles/</link>
		
		<dc:creator><![CDATA[ムラサキ]]></dc:creator>
		<pubDate>Sat, 02 May 2026 06:21:47 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[AIライティング]]></category>
		<category><![CDATA[Claude]]></category>
		<category><![CDATA[Cocoon]]></category>
		<category><![CDATA[プロンプト設計]]></category>
		<category><![CDATA[副業開発]]></category>
		<guid isPermaLink="false">https://shumatsu-lab.com/?p=1158</guid>

					<description><![CDATA[2026年4月17日、3サイトの記事制作で使っているarticle_prompt.mdに従って記事を書かせたところ、AIが存在しない「成果物1・5・6」を勝手に創作した。実際の定義は「成果物2・3・4」の3つしかない。さ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">2026年4月17日、3サイトの記事制作で使っているarticle_prompt.mdに従って記事を書かせたところ、AIが存在しない「成果物1・5・6」を勝手に創作した。実際の定義は「成果物2・3・4」の3つしかない。さらに同じチャット内で、Cocoon独自ブロックのテンプレートも9箇所全てで逸脱させた。SE歴20年・Claude Code Max 5xプランで記事制作と自動化パイプラインを運用する筆者が、プロンプト肥大化で起きる破綻パターンと、Markdown＋ルールベース変換による改善方向を整理する。</p>



<p class="wp-block-paragraph">結論：プロンプトは問題発生のたびにルールを追加する運用では必ず肥大化する。2026年4月時点の筆者のプロンプトは888行・22セクション・65チェック項目で、AIが全体を一貫して追従できる限界に近い。モデルのバージョンを上げても解決しない。対策は「プロンプトの改修」だけでなく「AIに任せる範囲を狭める」方向に踏み込む必要がある。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/03/murasaki_icon.png" alt="ムラサキ" class="speech-icon-image" /></figure><div class="speech-name">ムラサキ</div></div><div class="speech-balloon">
<p class="wp-block-paragraph">この記事は、その壊れたAI応答を目撃した直後に書き始めました。リアルタイムの事例として残します。</p>
</div></div>



<div class="slb slb-tldr">
  <div class="slb-tldr__head">
    <span class="slb-mono slb-tldr__label">TL;DR / 三行要約</span>
          <span class="slb-mono slb-tldr__meta">9 MIN READ · UPDATED 2026.05</span>
      </div>
  <ol>
          <li>888行・22セクション・65チェック項目——肥大化でAIが6成果物創作・Cocoon 9箇所全逸脱が発生。</li>
          <li>解決策はAIに任せる範囲を狭めること。Markdown+Python変換器でテンプレ逸脱をゼロ化、120行削減。</li>
          <li>チェック項目は「追加1→削除1」セットで回す。運用基盤変更時に2〜3割は不要化できる。</li>
      </ol>
    <div class="slb-tldr__badges">
          <span class="slb-badge slb-badge--hi">
        RESULT — 888行→770行削減可能      </span>
          <span class="slb-badge">
        TOOL — Markdown+ルールベース変換      </span>
          <span class="slb-badge">
        COST — AI逸脱ゼロ化      </span>
      </div>
  </div>
    



  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">プロンプトが育ちすぎて何が起きたか</a><ol><li><a href="#toc2" tabindex="0">発生した具体事象①｜存在しない成果物番号を創作</a></li><li><a href="#toc3" tabindex="0">発生した具体事象②｜Cocoonブロックのテンプレ逸脱</a></li><li><a href="#toc4" tabindex="0">過去にも起きていたブロック構造崩れ・登録漏れ</a></li><li><a href="#toc5" tabindex="0">問題発生は「AI側の劣化」ではなく「プロンプト側の設計限界」</a></li></ol></li><li><a href="#toc6" tabindex="0">肥大化の軌跡｜0項目から70項目超までの成長曲線</a><ol><li><a href="#toc7" tabindex="0">問題発生のたびにルール追加で膨らんでいく構造</a></li><li><a href="#toc8" tabindex="0">運用基盤の変更（スプレッドシート→パイプライン）で一気に不要化</a></li><li><a href="#toc9" tabindex="0">現状の規模と「AIが読める限界」の体感値</a></li></ol></li><li><a href="#toc10" tabindex="0">AIが落ちるパターンの分類</a><ol><li><a href="#toc11" tabindex="0">取りこぼし｜指示が効かなくなる</a></li><li><a href="#toc12" tabindex="0">創作｜存在しない仕様を自己生成する</a></li><li><a href="#toc13" tabindex="0">構造崩れ｜テンプレ厳守の指示でも出力がズレる</a></li></ol></li><li><a href="#toc14" tabindex="0">壊さないための設計原則</a></li><li><a href="#toc15" tabindex="0">セルフチェックの現実的な運用</a><ol><li><a href="#toc16" tabindex="0">AIに65項目を全部チェックさせることの限界</a></li><li><a href="#toc17" tabindex="0">加算ではなく減算を前提にする発想の転換</a></li></ol></li><li><a href="#toc18" tabindex="0">今後のプロンプト運用ロードマップ</a><ol><li><a href="#toc19" tabindex="0">プロンプト本体とチェックリストを物理的に分離する</a></li><li><a href="#toc20" tabindex="0">チェック項目の定期棚卸しワークフロー</a></li><li><a href="#toc21" tabindex="0">小規模プロンプト×複数回呼び出しへの分割構想</a></li><li><a href="#toc22" tabindex="0">Markdown＋ルールベース変換方式への移行</a></li></ol></li><li><a href="#toc23" tabindex="0">よくある質問</a></li><li><a href="#toc24" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">プロンプトが育ちすぎて何が起きたか</span></h2>



<p class="wp-block-paragraph">今回発生した事象を具体的に記録する。同じパターンに気づいていないだけで、他の利用者にも起きているはずだ。</p>



<h3 class="wp-block-heading"><span id="toc2">発生した具体事象①｜存在しない成果物番号を創作</span></h3>



<p class="wp-block-paragraph">今回のAI応答には、article_prompt.mdに存在しない成果物番号が6つ出力された。正解は「成果物2：アイキャッチ画像テキストデータ」「成果物3：記事データ」「成果物4：既存記事対応リスト」の3つだ。AIが生成したのは次の通り。</p>



<figure class="wp-block-table"><table><thead><tr><th>AIが出力した成果物名</th><th>実際の定義</th></tr></thead><tbody><tr><td>成果物1: 記事データ（キー名付き形式）</td><td>成果物3の一部</td></tr><tr><td>成果物2: アイキャッチ画像テキストデータ（3パターン）</td><td>成果物2は存在するが3パターンは指示されていない</td></tr><tr><td>成果物3: スプレッドシート行（タブ区切り）</td><td>現行仕様に存在しない（旧Make運用時代の仕様）</td></tr><tr><td>成果物4: 既存記事対応リスト</td><td>正しい</td></tr><tr><td>成果物5: 画像一覧＋内部リンク設置指示</td><td>存在しない</td></tr><tr><td>成果物6: FAQ JSON-LD</td><td>成果物3のfaq_jsonldフィールドとして存在</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">特に深刻なのは「成果物3：スプレッドシート行（タブ区切り）」だ。これはMake経由でスプレッドシートにAI出力を流し込んでいた時代の古い仕様で、現行のAPIパイプライン移行後は廃止されている。AIはプロンプト本文の現行仕様ではなく、過去の痕跡か自己の学習データから古い形式を再構成した。</p>



<h3 class="wp-block-heading"><span id="toc3">発生した具体事象②｜Cocoonブロックのテンプレ逸脱</span></h3>



<p class="wp-block-paragraph">事象はこれだけでは終わらなかった。同じAIが本文HTMLを出力した際、Cocoon独自ブロックのテンプレートを9箇所全てで逸脱していた。最も分かりやすい例が吹き出しブロックだ。</p>



<p class="wp-block-paragraph">プロンプトの吹き出しテンプレートでは、JSON属性のキー名として<code>name</code>・<code>icon</code>・<code>iconid</code>・<code>id</code>・<code>index</code>の5つを明示している。またサイト別のアイコンURLも具体的に記載されている。にもかかわらずAIが出力したHTMLは次のようだった。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>プロンプトの指定</th><th>AIの出力</th></tr></thead><tbody><tr><td>JSON属性キー</td><td>name / icon / iconid / id / index</td><td>iconImage / iconName / balloonName</td></tr><tr><td>img src</td><td>shumatsu-lab.com/&#8230;/murasaki_icon.png（明記）</td><td>空文字</td></tr><tr><td>divクラス</td><td>speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon（9クラス）</td><td>speech-wrap sbs-right sbp-2 sbis-cn cf block-box（5クラス・一部創作）</td></tr><tr><td>本文pタグ</td><td>wp:paragraphブロックで囲む</td><td>プレーンテキスト直書き</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">JSON属性のキー名は完全に創作されている。プロンプトには<code>iconImage</code>や<code>iconName</code>という文字列は出現しない。AIが自己の学習データから別形式のCocoon記述を想起し、プロンプト内の正規テンプレートより優先して出力した。</p>



<p class="wp-block-paragraph">timeline・faq・icon-boxでも同じパターンの逸脱が起きた。特にfaqは5問分全てがプロンプトの正規テンプレートと構造が異なり、WordPress投稿後にバリデーションエラーが出た。</p>



<h3 class="wp-block-heading"><span id="toc4">過去にも起きていたブロック構造崩れ・登録漏れ</span></h3>



<p class="wp-block-paragraph">プロンプト肥大化による破綻は、実は以前から別の形で起きていた。Cocoon独自ブロック（FAQ・timeline・icon-box等）のclass名や属性を守れず、WordPress投稿後にブロックが崩れるケースが多発していた。</p>



<p class="wp-block-paragraph">また、記事更新時の変更履歴登録漏れも繰り返し発生した。本文中に「更新履歴を必ず追加する」と記載していても、AIが見落とす。問題が起きるたびにプロンプトへチェック項目や禁止パターンを追加してきた結果、現在は65項目まで膨らんだ。</p>



<h3 class="wp-block-heading"><span id="toc5">問題発生は「AI側の劣化」ではなく「プロンプト側の設計限界」</span></h3>



<p class="wp-block-paragraph">今回の事象は2026年4月16日にClaude Opus 4.7がリリースされた翌日に発生した。「4.7が4.6より指示を取りこぼしやすい」という解釈も成り立つが、1サンプルでモデル傾向を断定するのは早計だ。</p>



<p class="wp-block-paragraph">本質的な原因はプロンプト側にある。どれだけモデルが賢くなっても、888行の指示を完全に追従できる保証はない。問題発生のたびにルールを追加する運用を続ける限り、いずれ破綻する。プロンプト設計そのものを見直す必要がある。</p>



<h2 class="wp-block-heading"><span id="toc6">肥大化の軌跡｜0項目から70項目超までの成長曲線</span></h2>



<p class="wp-block-paragraph">65チェック項目に至るまでの経緯を整理する。同じ道を避けるための参考になるだろう。</p>



<h3 class="wp-block-heading"><span id="toc7">問題発生のたびにルール追加で膨らんでいく構造</span></h3>



<p class="wp-block-paragraph">最初はチェック項目ゼロから始まった。AIに記事を書かせ、出力に問題が出るたびに「次回から○○しないこと」というルールを1行追加する。この運用で最終的に70項目を超える規模まで膨らんだ。</p>



<p class="wp-block-paragraph">各項目は「発生実績のある問題への対策」なので削りづらい。削った瞬間に同じ問題が再発する恐怖がある。加算のみで減算がない運用になってしまう。</p>



<h3 class="wp-block-heading"><span id="toc8">運用基盤の変更（スプレッドシート→パイプライン）で一気に不要化</span></h3>



<p class="wp-block-paragraph">転機は運用基盤の変更だった。以前はAI出力をスプレッドシートに貼り付け、Makeで自動投稿する構成だった。タブ区切り形式・文字数制限・Make連携専用のルールが多数存在していた。</p>



<p class="wp-block-paragraph">WordPress REST APIへ直接投稿するパイプラインに移行した際、Make連携前提のルール群が不要になった。この棚卸しでチェック項目は2〜3割削減できた。重要なのは「不要ルールが2〜3割も残っていた」という事実だ。</p>



<h3 class="wp-block-heading"><span id="toc9">現状の規模と「AIが読める限界」の体感値</span></h3>



<p class="wp-block-paragraph">2026年4月時点のarticle_prompt.mdの規模。</p>



<ul class="wp-block-list">
<li>全888行・約72,000文字（およそ2.5万〜3万トークン）</li>



<li>22セクション</li>



<li>65項目のセルフチェック</li>



<li>バージョンv4.3（複数回のリファクタリングを経由）</li>
</ul>



<p class="wp-block-paragraph">Claudeのコンテキストウィンドウ1Mトークンに対しては微々たる量だが、「指示を正確に追従できる規模」という観点ではすでに限界付近だ。プロンプト側の複雑度が高ければ取りこぼしが発生する。</p>



<h2 class="wp-block-heading"><span id="toc10">AIが落ちるパターンの分類</span></h2>



<p class="wp-block-paragraph">運用で観測したAI応答の破綻パターンは3つに分類できる。タイプごとに原因と対策が異なる。</p>



<p class="wp-block-paragraph">AIモデル側だけでなく、Claude Codeのクライアント側に起因する詰みもあります。代表例として<a href="https://shumatsu-lab.com/claude-code-empty-text-block-error/">画像貼付で発生する400エラーの構造</a>を別記事で扱っています。</p>



<h3 class="wp-block-heading"><span id="toc11">取りこぼし｜指示が効かなくなる</span></h3>



<p class="wp-block-paragraph">プロンプトに書かれた指示が出力に反映されないパターンだ。長文インプットでは指示の一部が漏れやすい。プロンプト規模が大きいほどリスクは高まる。</p>



<p class="wp-block-paragraph">対策は「重要なルールを冒頭と末尾に配置する」こと。ただし重複するとプロンプト自体が肥大化するため、本当に重要な項目だけ冒頭に再掲する運用が現実的だ。</p>



<h3 class="wp-block-heading"><span id="toc12">創作｜存在しない仕様を自己生成する</span></h3>



<p class="wp-block-paragraph">プロンプトに明記されていない仕様を、AIが学習データやプロンプト内の曖昧な表現から再構成して出力する。厄介なのは創作内容がそれらしい形式を保つため、検知が難しいことだ。</p>



<p class="wp-block-paragraph">対策は「成果物の番号・名称・数をプロンプト冒頭で明示する」こと。article_prompt.mdでは1行目に「3つの成果物を出力してください」と書かれていたが、AIは最終的に6つ出力した。冒頭の明示だけでは足りず、出力テンプレート自体に「成果物2」「成果物3」「成果物4」の見出しを固定する対応が必要だ。</p>



<h3 class="wp-block-heading"><span id="toc13">構造崩れ｜テンプレ厳守の指示でも出力がズレる</span></h3>



<p class="wp-block-paragraph">Cocoon独自ブロックのclass名・属性・ネスト構造が1バイトでも違うと、WordPress投稿後にブロックが崩れる。「テンプレートを1文字も変えずにコピーする」と指示しても、AIが微妙に変形させる事象が繰り返し発生した。</p>



<p class="wp-block-paragraph">プロンプト内にテンプレート全文とサイト別アイコンURLが具体的に明記されているのに、AIはJSON属性キー名を別の単語に創作し、img srcを空文字で出力した。これは「指示を見落とした」のではなく「プロンプトより自己の学習データを優先した」結果だ。</p>



<p class="wp-block-paragraph">対策は「禁止パターン例をプロンプトに明記する」こと。「×こう書くのは間違い／◯こう書くのが正解」という具体例を並べるとAIの独自解釈を抑制できる。ただし例を増やすほどプロンプトが肥大化するトレードオフがある。この矛盾こそが、「AIに任せる範囲を狭める」改善へつながる。</p>



<h2 class="wp-block-heading"><span id="toc14">壊さないための設計原則</span></h2>



<p class="wp-block-paragraph">運用の中で身につく、プロンプトを壊さない設計原則をまとめた。当たり前に見えることばかりだが、実際には実行できていない部分が多い。</p>



<div class="wp-block-cocoon-blocks-timeline timeline-box cf block-box not-nested-style cocoon-block-timeline"><div class="timeline-title">プロンプトを壊さない設計原則</div><ul class="timeline">
<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">原則1</div><div class="timeline-item-content cf"><div class="timeline-item-title">運用基盤が変わったら即座に不要ルールを削る</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph">出力先・投稿フロー・連携ツールが変わったら、その前提で作られたルールは全て再評価する。筆者はMake→APIパイプライン移行でチェック項目を2〜3割削減できた。</p>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">原則2</div><div class="timeline-item-content cf"><div class="timeline-item-title">発生実績のないチェック項目は削除候補に回す</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph">必要性は認識していても、実行するには記事投稿時に「引っかかった項目」「引っかからなかった項目」を記録する仕組みが必要。そのデータなしに削減判断はできない。</p>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">原則3</div><div class="timeline-item-content cf"><div class="timeline-item-title">プロンプト内で同じ情報を複数箇所に書かない</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph">重複記載はメンテナンスコストと不整合リスクの両方を生む。1か所に集約し、他では参照マーカーで誘導する。</p>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">原則4</div><div class="timeline-item-content cf"><div class="timeline-item-title">重要なルールは冒頭と末尾の両方に配置する</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph">取りこぼし対策として効く。ただし再掲は本当に重要な項目に絞る。全項目を再掲するとプロンプト自体が倍加して逆効果になる。</p>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">原則5</div><div class="timeline-item-content cf"><div class="timeline-item-title">問題発生時だけでなく運用構造変更時にも見直す</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph">問題ベースの見直しでは機能追加の加算だけになる。運用構造の変更時に減算する機会を作る。この2タイミング両方で見直さなければ肥大化を止められない。</p>
</div></div></li>
</ul></div>



<p class="wp-block-paragraph">この「検証可能な指示だけが効く」原則を、完了条件として毎回強制する仕組みが/goalだ。<a href="https://shumatsu-lab.com/claude-code-goal-autonomous-development/" target="_blank">評価器に証拠を出させる完了条件の書き方</a>に、実際に効いた条件の4要素をまとめている。</p>



<h2 class="wp-block-heading"><span id="toc15">セルフチェックの現実的な運用</span></h2>



<p class="wp-block-paragraph">現状の65項目のセルフチェックは、AIに全項目チェックさせる前提で設計されている。だがこの前提自体が限界に近い。</p>



<h3 class="wp-block-heading"><span id="toc16">AIに65項目を全部チェックさせることの限界</span></h3>



<p class="wp-block-paragraph">今回の事象がそれを示している。AIは「成果物数は3つ」というプロンプト冒頭の前提すら守れず、Cocoonブロックテンプレートも9箇所全て逸脱させた。この状態で65項目のセルフチェックが機能していると考えるのは無理がある。</p>



<p class="wp-block-paragraph">実際にはAIが「セルフチェック済み」と主張しながら、一部項目しか確認していない可能性が高い。そうなると、65項目の存在意義そのものが成り立たない。</p>



<h3 class="wp-block-heading"><span id="toc17">加算ではなく減算を前提にする発想の転換</span></h3>



<p class="wp-block-paragraph">チェック項目を減らすことを運用の中心に据え直す必要がある。これまでは「問題発生→対策ルール追加」という加算型で動いており、削除の機会がなかった。加算を続ければいずれプロンプトは破綻する。</p>



<p class="wp-block-paragraph">逆の発想を導入する。新しいルールを追加するときは、不要になったルールを同時に1つ削る。追加と削除をセットで回せば、ルール総量の肥大化を防げる。筆者自身も完全には実行できていないが、今回の事象を機に減算の仕組み化を進める必要がある。</p>



<h2 class="wp-block-heading"><span id="toc18">今後のプロンプト運用ロードマップ</span></h2>



<p class="wp-block-paragraph">今回の事象を受けて、筆者がこれから試す運用改善は4つ。そのうち1つは、AIの構造崩れ問題を根本から解決する可能性がある。</p>



<p class="wp-block-paragraph">コンテキストを肥大化させないという方向では、<a href="https://shumatsu-lab.com/claude-code-obsidian-second-brain/">外部ナレッジベース側で知識を分離する構成</a>も同じ思想で動いている。プロンプト側を軽くする発想と対になる設計として参考になる。</p>



<h3 class="wp-block-heading"><span id="toc19">プロンプト本体とチェックリストを物理的に分離する</span></h3>



<p class="wp-block-paragraph">現状はarticle_prompt.md一本にプロンプト本体と65項目のチェックリストを同居させている。この肥大化が取りこぼしを招いている。</p>



<p class="wp-block-paragraph">検討中の案は、本体プロンプト（出力仕様・執筆ルール）とチェックリスト（出力後の自己検証項目）を別ファイルに分離し、AIに2段階で読み込ませる構成だ。本体を短く保ちながら、チェックは別リソースとして明示的に実行させる。</p>



<h3 class="wp-block-heading"><span id="toc20">チェック項目の定期棚卸しワークフロー</span></h3>



<p class="wp-block-paragraph">発生実績のないチェック項目を削除する。記事投稿時にAIがチェック結果を記録し、月次で「引っかかった項目」と「引っかからなかった項目」を集計する。データで削減判断できる状態にする。</p>



<h3 class="wp-block-heading"><span id="toc21">小規模プロンプト×複数回呼び出しへの分割構想</span></h3>



<p class="wp-block-paragraph">1本の巨大プロンプトで全工程を指示するのではなく、フェーズごとに小規模プロンプトを連鎖させる方式も検討している。「構成案生成」「本文執筆」「内部リンク設計」「セルフチェック」を別プロンプトで実行し、前段の出力を次段に渡す。</p>



<p class="wp-block-paragraph">欠点は情報伝達ロスと実装コスト。シンプルさを失う代わりに各フェーズでの指示追従性が上がる。Claude Codeでの<a href="https://shumatsu-lab.com/claude-code-personal-service-development/">CLAUDE.md＋BUGS.md運用の実例</a>で似た分割構造を試しているので、その知見を横展開できる。</p>



<p class="wp-block-paragraph">プロンプトを安定させることはキャッシュヒット率にも直結します。書き換えのたびにキャッシュが壊れる仕組みは<a href="https://shumatsu-lab.com/claude-code-cost-reduction-3tier-stack/">Prompt Cacheでトークンを10倍安くする方法</a>で詳しく整理しました。</p>



<h3 class="wp-block-heading"><span id="toc22">Markdown＋ルールベース変換方式への移行</span></h3>



<p class="wp-block-paragraph">今回の構造崩れ問題への最も本質的な対策はAIに任せる範囲を狭めることだ。AIには標準Markdown＋カスタムコンテナ記法で書かせ、Python側のルールベース変換器でCocoon HTMLに変換する。</p>



<p class="wp-block-paragraph">この方式のMarkdown記法はZennやQiitaが採用しているものと同じ考え方だ。吹き出しブロックは次のように書く。</p>



<pre class="wp-block-code"><code>:::balloon name=ムラサキ

この記事はその壊れたAI応答を目撃した直後に書き始めました。

:::</code></pre>



<p class="wp-block-paragraph">この3行をPython側の変換器が受け取り、サイト別の正規Cocoonテンプレートに機械的に展開する。アイコンURL・iconid・divクラス・JSON属性キーなど、AIが間違えやすい要素を変換器が自動で埋める。</p>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p class="wp-block-paragraph">メリットは「AIがCocoonテンプレートを逸脱する余地がゼロになる」こと。変換層はルールベースでAIを使わないため、コストもかからず精度も上がる。プロンプトからはCocoonテンプレート定義の約120行を削除でき、プロンプト全体を888行から770行程度に縮小できる。</p>
</div>
<div class="slb slb-before-after">
  <div class="slb-before-after__head">
    <span class="slb-mono slb-before-after__label">Markdown変換方式 導入効果</span>
          <span class="slb-mono slb-before-after__source">記事内数値より（プロンプト行数・Cocoon逸脱件数）</span>
      </div>
    <div class="slb-ba-row">
    <div class="slb-ba-metric">プロンプト行数</div>
    <div class="slb-ba-bar">
      <div class="slb-ba-before" style="width:100%"></div>
      <div class="slb-ba-after" style="width:87%"></div>
    </div>
    <div class="slb-ba-delta">-13%</div>
  </div>
    <div class="slb-ba-row">
    <div class="slb-ba-metric">Cocoonテンプレ逸脱件数</div>
    <div class="slb-ba-bar">
      <div class="slb-ba-before" style="width:100%"></div>
      <div class="slb-ba-after" style="width:0%"></div>
    </div>
    <div class="slb-ba-delta">-100%</div>
  </div>
    <div class="slb-before-after__legend">
    <span>■ BEFORE</span>
    <span>■ AFTER / <span style="background:var(--slb-hi);color:var(--slb-ink);padding:1px 4px;">GAIN</span></span>
    <span>Δ</span>
  </div>
</div>
    





<p class="wp-block-paragraph">実装の主要部分はPython製Markdownパーサー（markdown-it-py）の拡張機能で実現できる。工数見積は約3日（22時間程度）。現在使用中の9種のCocoon独自ブロックはすべてこの方式でカバー可能だ。wp:columnsやwp:groupのような利用頻度ゼロのブロックは当面対応せず、必要になったときに追加する。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/03/murasaki_icon.png" alt="ムラサキ" class="speech-icon-image" /></figure><div class="speech-name">ムラサキ</div></div><div class="speech-balloon">
<p class="wp-block-paragraph">この記事自体は現行ルール（Cocoon HTMLベタ書き）で出力しています。Markdown＋ルールベース変換方式は次のステップで実装予定です。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc23">よくある質問</span></h2>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">プロンプトはどれくらいの規模から肥大化リスクが出ますか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p class="wp-block-paragraph">セクション数が20以上、チェック項目が50を超えると、人間も全体を把握しきれなくなり、AIの取りこぼしや創作リスクが高まります。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">どのタイミングでプロンプトを棚卸しすべきですか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p class="wp-block-paragraph">問題が出たときに追加・修正する、出力先やワークフローが変わったときに見直すの2つが効果的です。実績のないチェック項目は削除候補に回すと、自動的にプロンプトが整理されます。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">Claude Opus 4.7は4.6よりプロンプトを取りこぼしやすいですか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p class="wp-block-paragraph">本記事の事例は4.7リリース直後の1サンプルで、4.7固有の傾向なのか偶発的なものなのか判断できません。モデルバージョンより、プロンプト側の肥大化が根本的な原因と考えるべきです。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">プロンプトを分割すべきですか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p class="wp-block-paragraph">1チャット内で完結するワークフローなら一体化のほうが情報ロスが少なくなります。複数フェーズに分解できるなら小規模プロンプト×複数回呼び出しのほうが安定します。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">MarkdownとCocoonの変換を自動化する方法はありますか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p class="wp-block-paragraph">AIにMarkdown（カスタムコンテナ記法含む）で書かせ、PythonでルールベースにCocoon HTMLへ変換するのが有効です。ZennやQiitaの :::name 記法と同じ手法で、AIの逸脱を防げます。</p>
</div></dd></dl></div>



<h2 class="wp-block-heading"><span id="toc24">まとめ</span></h2>



<p class="wp-block-paragraph">プロンプトが888行を超えたら、モデルのバージョンアップを待つより設計を見直すべき。長大なプロンプトは破綻する。</p>



<p class="wp-block-paragraph">今回の問題は、プロンプト運用の限界を示している。AIに複雑な構造ルールを守らせるより、Markdown＋ルールベース変換をPython側で機械的に処理する方が確実だ。次の記事では実装結果を公開する。</p>

]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1158</post-id>	</item>
	</channel>
</rss>
