Skip to content

プロンプト分解 — 平坦なスナップショットを層構造へ

プロンプトは全条件を1つのコンテキストに同居させる。アーキテクチャは各条件を、それを最もよく 永続化 できる層へ分配する。良いプロンプトが持つ7つの条件は、5層が保持するために設計された7つの関心事と同じものである。

このドキュメントについて

本ドキュメントは、三層モデル (03-architecture)、Doctrine 層 (07-doctrine-and-intent)、Memory 層 (08-memory-and-knowledge) を前提に、それらを束ねる問いを扱う。毎回手で書くのをやめたとき、プロンプトの各部分は実際どこに棲むのか?

良いプロンプトには論理構造がある — 役割、前提、目的、入力、処理、出力形式、例示。
良いシステムは同じ構造を持つが、各部分は「最もよく永続化・再利用できる層」へ外部化されている。
設計・Skills・MCP・設定は、プロンプトの代替ではない — それらは、プロンプトの条件が永続的に棲みつく「住所」である。

対象読者: 同種のプロンプトを繰り返し書いていて、何を プロンプトから抜き出して CLAUDE.md / Skill / MCP / サブエージェントに移すべきか、そして どの層 に各部分が属するかを判断したいエンジニア。

このページの位置づけ

01-visionWHY — なぜブレない参照先が必要か)
02-reference-sourcesWHAT — 何を参照先とするか)
03-architectureHOW — どう構成するか)
04-ai-design-patternsWHICH — どのパターンをいつ選ぶか)
05-solving-ai-limitationsREALITY — 現実の制約にどう向き合うか)
06-physical-aiEXTENSION — 三層モデルを物理世界へ拡張する)
07-doctrine-and-intentDOCTRINE — AIは何を基準に判断し行動すべきか)
08-memory-and-knowledgeMEMORY — エージェントは何を記憶し、どう接続するか)
本ページ(DECOMPOSITION — プロンプトは層へどう分解されるか)

メタ情報
この章で固定するものプロンプトの7つの論理条件から5層への対応、条件の住所を決める2つの軸(種類と揮発性)、毎回すべてをプロンプトに書き直すアンチパターン
扱わないことプロンプトエンジニアリングの技法そのもの(言い回し、Few-shot 構成)、平坦なプロンプトが劣化する内部的理由(→ 姉妹サイト なぜ
依存03-architecture(対象となる層)、07-doctrine-and-intent(Doctrine 層)、08-memory-and-knowledge(Memory 層)
誤用ポイント「設計 vs プロンプト」を二者択一と捉えること。層はプロンプトの 代替 ではなく、各条件を 永続化 して書き直さずに済ませるための住所である

ドキュメントシリーズにおける位置づけ

ドキュメント中心的な問い
03-architectureコンポーネントを どこに 配置するか?
07-doctrine-and-intentAIは 何を基準に 判断するか?
08-memory-and-knowledgeエージェントは 何を記憶し、どう接続するか?
09-prompt-decompositionプロンプトの構造は 層へどう分解されるか?

既存のプロンプトフレームワーク — 分解はすでに常識である

プロンプトを構成要素へ分解する発想自体は新しくない。広く使われるフレームワークはどれも、良いプロンプトを「複数の関心事の束」として扱うことを促す。

フレームワーク構成要素向いているユースケース
RTFRole / Task / Format日常的なタスクや素早いプロトタイピングに最適
CO-STARContext / Objective / Style / Tone / Audience / Responseビジネス向けの文書作成や、トーン・対象読者を意識した出力に有効
CRISPEContext / Role / Instructions / Steps / Parameters / Example複数ステップを要する複雑な業務や、エージェント的な振る舞いを求めるときに有用
Anthropic(Claude)Clear and Direct / Examples / Let Claude Think (CoT) / XML TagsClaude を使う際の最も強力な組み合わせの一つ

TIP

Anthropic(Claude)特有の推奨、特に XML Tags + Examples + Think は、Claude を使用する際の最も強力な組み合わせの一つである。Context Engineering の観点からも、単なるプロンプト記述を超えた 「情報の構造化」 として機能する — そしてこの「構造化」こそが、本ページが層構造へと押し進める起点になる。

これらのフレームワークは分け方こそ違えど、いずれも 役割・文脈・目的・処理・出力形式・例 といった同じ関心事を指している。本シリーズはこれらを統合し、出力が変動しうる独立な軸として7つに整理する。

7条件対応するフレームワーク要素
役割RTF: Role / CRISPE: Role / Anthropic: 人格規定
前提CO-STAR: Context, Audience / CRISPE: Context, Insight
目的CO-STAR: Objective / CRISPE: Statement / Anthropic: Clear and Direct
入力(各フレームワークでは暗黙。Anthropic: XML Tags で入力を区切る)
処理・制約RTF: Task / CRISPE: Instructions, Steps, Parameters / Anthropic: Think
出力形式RTF: Format / CO-STAR: Style, Tone, Response
例示・検証CRISPE: Example / Anthropic: Examples (multishot)

IMPORTANT

これらのフレームワークはいずれも 単一プロンプト内の書き方 である。関心事を一度の入力にどう並べるかを整えるが、整えた関心事はセッションが終われば消え、次回また書き直すことになる。

本ページが立てる問いはその先にある — これらの関心事を 前提として、層構造として、永続・再利用できる形にどう構造化するか? まず関心事に名前を与え(次節の7条件)、次にそれぞれを最もよく永続化できる層へ分配する。

プロンプトの7条件

良いプロンプトは単一の指示ではなく、複数の独立した論理条件の束である。1つの段落として書かれていても、そこには分離可能な7つの関心事が含まれている。上記のフレームワークが分け方を変えながら指していたのも、結局この束である。

NOTE

この7条件への分解と後述の5層対応は、本シリーズ独自の体系化である。プロンプトエンジニアリング文献にも役割・目標・制約・形式といった類似の分解は複数存在するが、この正確な7分類と層対応は「普遍的な標準」ではなく 本アーキテクチャにおける推奨分解 として読んでほしい。

#条件何を規定するか
1役割の設定AIのアイデンティティと視点
2前提・背景条件共有知識と状況の基盤
3目的・目標条件達成すべき明確な成果
4入力条件処理対象のデータ・状態
5処理・制約条件推論ステップとルール
6出力形式条件生成される結果の構造とデータ型
7例示・検証条件期待される結果の例と検証方法

なぜこの7つなのか

7条件は恣意的な分類ではなく、出力が変動しうる独立な軸を尽くしたものである。各条件は、指定されないとモデルが暗黙に埋めてしまう問い1つに対応する — 埋められた軸は、そのまま非決定性(毎回ぶれる箇所)になる。

指定しないと…モデルが暗黙に決めてしまうもの
役割どの視点・語彙・判断基準で答えるか
前提何を共有知識とみなすか
目的何をもって「成功」とするか
入力何を処理対象とするか
処理・制約どのルールを守り、何を禁止とするか
出力形式結果をどの構造で返すか
例示・検証正否をどう判定するか

NOTE

なぜ モデルがこの軸を自分で決められず暗黙に埋めてしまうのか(原理)は本サイトの範囲外である。LLM がトークンの統計パターンに反応し、指定の弱い軸を事前分布から埋める仕組みは姉妹サイトが扱う(末尾「さらに深く」参照)。

核心テーゼ — プロンプトは平坦なスナップショット

単発のプロンプトでは、7つの条件すべてが 1つのコンテキストウィンドウに同居 している。1ターンには便利だが、すべての条件が揮発性を帯びる。セッションが終われば消え、次回また書き直すことになる。

システム設計はその逆をする。各条件を取り出し、それを最もよく永続化・再利用できる層へ外部化 する。プロンプトは消えるのではなく、痩せる。安定した部分が別の場所に棲むようになるからだ。

IMPORTANT

「設計 vs プロンプト」は誤った二者択一である。5層はプロンプトを書くことの代替ではなく、プロンプトの条件を 再利用のために収める住所 である。本サイトのすべての層は、あるプロンプト条件を毎ターン述べ直さずに済むようにするために存在している。

対応関係 — 7条件から5層へ

プロンプト条件本質主な住所(層)具体物
役割の設定アイデンティティ・視点Agent / Identitysystem prompt の人格規定、CLAUDE.md の冒頭、.claude/agents/*.md、Agent ID / DID
前提・背景条件共有知識の基盤Memory + SkillsCLAUDE.md(プロジェクト恒久)、SKILL.md(ドメイン)、memory files / KG(関係性・履歴)
目的・目標条件達成すべき成果Doctrineミッション・意図の記述、判断基準
入力条件処理対象データ・状態MCPMCP server tools、ファイル / API / DB の取得
処理・制約条件推論ステップとルールDoctrine(制約) + Skills(手順)RFC 2119 ラダー(MUST / SHOULD)、SKILL.md の手順、ガードレール
出力形式条件結果の構造・型Skillsdocx / pptx / xlsx の format skill、スキーマ、テンプレート
例示・検証条件期待結果と検証Skills(例) + Doctrine(基準) + Agent(検証)SKILL.md の例、合格基準、サブエージェント品質ゲート

対応は厳密な1対1ではない点に注意。処理・制約条件 は Doctrine(制約 = 何が起きてはならないか)と Skills(手順 = どう実行するか)に割れる。前提・背景条件 は Memory(関係性・履歴の文脈)と Skills(安定したドメイン知識)に割れる。1つのプロンプト条件が複数の層へ分散しうる — ここから第二の軸が導かれる。

第二の軸 — 揮発性が住所を決める

第一の軸は 種類(上の表)。第二の軸は その条件をどれだけ長く持続させたいか である。同じ条件でも、寿命によって着地点が変わる。

寿命棲む場所
セッション限り(揮発)プロンプト本文そのまま「今回のこのファイル、今日の特定の依頼」
プロジェクト恒久CLAUDE.md / Skills / Doctrineコーディング規約、標準の出力形式、エージェントの役割
横断・関係性Memory(KG、memory files)「前回どう決めたか」、システムをまたぐエンティティの関係

「前提」に単一の住所がない理由はここにある。今回のセッションだけ真の前提はプロンプトに残る。プロジェクト全体で真の前提は CLAUDE.md へ。過去の作業への 関係性 が本質の前提は Memory へ。判断するのは「前提はどの層か」ではなく、「この前提はどれだけ持続するか」である。

7条件を1つずつ辿る

役割の設定 → Agent / Identity。 プロンプトごとに1回述べる役割(「あなたは慎重なレビュアーである」)は、システムレベルでは system prompt の人格、CLAUDE.md の冒頭、または .claude/agents/ のサブエージェント定義になる。AgentID 時代には検証可能な識別子(DID)になる。役割は「一文」をやめ、エージェントが既定で何者か になる。

前提・背景条件 → Memory + Skills。 プロジェクトで安定した共有事実は CLAUDE.md や Skill に、過去の作業への 関係性 が本質の事実は Memory に棲む(08 参照)。見分け方: 前提が「何が真か」なら Skills 寄り、「何が起きたか」なら Memory 寄り。

目的・目標条件 → Doctrine。 達成すべき成果と「十分良い」の基準は、まさに Doctrine 層が保持するもの(07 参照)。毎プロンプトで目的を繰り返しているなら、それはプロジェクトの意図が Doctrine に固定されていないサインである。

入力条件 → MCP。 プロンプト内の「これがデータです」は、システムレベルではデータと状態をオンデマンドで 取得する MCP ツールになる(03 参照)。入力をプロンプトに貼るのは平坦化された形であり、MCP 境界がその永続的な形である。

処理・制約条件 → Doctrine + Skills。 この条件は割れる。制約(何が決して起きてはならないか、境界)は Doctrine に棲み、RFC 2119 の強度ラダー(MUST / SHOULD / MAY)で読まれる。手順(段階的なレシピ)は Skill の SKILL.md に棲む。

出力形式条件 → Skills。 「この列でテーブルを返せ」「.docx を生成せよ」「このスキーマに合わせよ」は、まさに format skill が符号化するもの(docx / pptx / xlsx skill が典型例)。形式は「記述される」ことをやめ、再利用可能なテンプレートになる。

例示・検証条件 → Skills + Doctrine + Agent。 具体例は SKILL.md に棲む。合格基準 は Doctrine であり、RFC 2119 ラダーで表現される。検証する行為そのもの は Agent 層の責務 — 検証ステップやサブエージェント品質ゲートである。

アンチパターン — 毎回すべてを書き直す

本章が防ごうとする失敗様式は、7条件すべてを永遠にプロンプトに残すこと — 役割・規約・形式・例を毎リクエストに貼り直すことである。

WARNING

平坦なプロンプトのコストは入力の手間だけではない。プロンプトが肥大すると LLM の 構造的 挙動が劣化する。安定した指示が今回の依頼と注意を奪い合い、中盤の内容が失われ、先頭のルールが減衰する。処方箋は「より長いプロンプト」ではなく、各安定条件をその層へ移すこと であり、これにより今回のプロンプトは「本当に今回新しいもの」だけを運ぶ。

条件を外部化すべきサインは単純だ。2回以上タイプした こと。毎セッション述べ直す役割は CLAUDE.md へ。毎回記述する形式は Skill へ。繰り返す制約は Doctrine へ。過去の作業についての前提は Memory へ。

設計判断 — いつ条件を外部化するか

IMPORTANT

プロンプト条件の外部化は 設計判断であり、反射ではない。条件の寿命がセッションを超え、かつ繰り返しのコストが層で維持するコストを上回ったときに、その条件を層へ移す。

外部化すべきシグナル:

  • ✅ 同じ役割・制約・形式を多数のプロンプトで述べ直している
  • ✅ その条件が自分だけでなくチーム全員に同一に当てはまるべきである
  • ✅ 述べ忘れると結果が静かに変わってしまう
  • ✅ その前提が本質的に過去の決定への 関係性 である(→ Memory)

プロンプトに残すべきシグナル:

  • ❌ 今回の1リクエストでのみ真である
  • ❌ 毎回変わる(実際のタスク、今日の特定の入力)
  • ❌ 層に固定すると、将来の異なる作業を過剰に縛ってしまう

関連ドキュメント

🔗 さらに深く: なぜ平坦なプロンプトは劣化するのか

本ページは分解の 構造 (What/How) — どの条件がどの層に行くか — を扱った。「なぜ LLM がこの分解を強いるのか」「なぜすべてを1つのプロンプトに残せないのか」を理解したい場合は、姉妹サイトがコンテキストウィンドウのロード階層の仕組みから説明している。


前へ: 08-memory-and-knowledge

次へ: Concepts 全体像

Released under the MIT License.