takt/builtins/ja/OUTPUT_CONTRACT_STYLE_GUIDE.md
nrslib 2c7bd4834f Faceted Prompting リネーム: stances→policies, report_formats→output_contracts
5つの関心を Persona, Policy, Instruction, Knowledge, Output Contract に統一。
ディレクトリ、YAMLキー、ソースコード、テンプレート、テスト、ドキュメントを全面更新。
2026-02-07 20:04:09 +09:00

9.0 KiB
Raw Permalink Blame History

出力契約 スタイルガイド

このガイドは output-contracts/ のファイルを作成・編集する際のルールを定義する。

テンプレート

templates/reports/ にテンプレートファイルを用意している。新規作成時は参照して使う。

テンプレート 用途
plan.md タスク計画(標準 / 拡張)
architecture-design.md アーキテクチャ設計
review.md 汎用レビュー結果
security-review.md セキュリティレビュー(重大度付き)
validation.md 最終検証結果
summary.md タスク完了サマリー

出力契約とは

エージェントが出力するレポートの構造定義。ピースYAMLの report.format フィールドで使用する。

項目 内容
目的 エージェント出力の構造を統一し、後続ムーブメントで機械的に参照可能にする
配置 Phase 2 メッセージの ## Instructions 内({{outputContract}}
対象 1つのレポートファイル
判断基準 「この出力は後続ムーブメントが {report:filename} で参照するか?」→ YES

実際の配置先

出力契約は src/shared/prompts/{lang}/perform_phase2_message.md{{outputContract}} に展開される。

## 実行コンテキスト(作業ディレクトリ)
## 実行ルール(ソース変更禁止、レポートのみ)
## Piece Context
## Instructions
  "レポートとして回答してください。ツールは使えません。"
  {{outputContract}}  ← ★ 出力契約がここに展開される

Phase 2 はツール使用不可。エージェントは Phase 1 のセッションを引き継いだ上で、テキスト出力のみでレポートを作成する。

インストラクションとの違い

インストラクション 出力契約
目的 何をすべきかの手順 出力の構造定義
配置 Phase 1 {{instructions}} Phase 2 {{outputContract}}
読者 エージェント(実行時) 後続ムーブメントのエージェント(参照時)
形式 自由文 + 箇条書き ```markdown コードブロック

書き方ルール

全体構造

出力契約は以下の構造を持つ。

1. ```markdown コードブロック(フォーマット本体)
2. 認知負荷軽減ルール(該当する場合)

出力契約本体

必ず ```markdown コードブロックで囲む。

\`\`\`markdown
# レポートタイトル

## 結果: APPROVE / REJECT

## サマリー
{1-2文で結果を要約}

## 詳細
...
\`\`\`

プレースホルダー

  • {波括弧} でプレースホルダーを記述
  • エージェントが実行時に埋める内容の説明を簡潔に
# 良い例
{1-2文で結果を要約}
{タスクの1行要約}
{影響するモジュールや機能}

# 悪い例
{ここにサマリーを記述してください。サマリーは1-2文で簡潔に書いてください。}  ← 冗長

結果ステータス

レビュー系レポートは結果ステータスを持つ。使用するステータスを / で列挙する。

パターン 用途
APPROVE / REJECT 二値判定AI Review、Security Review 等)
APPROVE / IMPROVE / REJECT 三値判定Architecture Review 等)
完了 固定値Summary 等)

テーブル

構造化データはテーブルで記述する。

# 検証テーブル(チェックリスト形式)
| 観点 | 結果 | 備考 |
|------|------|------|
| 仮定の妥当性 | ✅ | - |

# 問題テーブル(番号付き)
| # | カテゴリ | 場所 | 問題 |
|---|---------|------|------|
| 1 | 幻覚API | `src/file.ts:23` | 存在しないメソッド |

# ファイルテーブル
| 種別 | ファイル | 概要 |
|------|---------|------|
| 作成 | `src/file.ts` | 概要説明 |

テーブルの頻出カラム:

カラム 使い方
# 連番
スコープ 「スコープ内」/「スコープ外」
場所 `src/file.ts:42` 形式
結果 /
重大度 High / Medium / Low
種別 作成 / 変更 / 削除

認知負荷軽減ルール

レビュー系レポートには認知負荷軽減ルールを付加する。出力契約本体の ``` の後に記述する。

**認知負荷軽減ルール:**
- APPROVE → サマリーのみ5行以内
- REJECT → 問題点を表形式で30行以内

目的: 問題がない場合に冗長な出力を抑制する。後続ムーブメントの入力コストを下げる。


DO / DON'T

DO DON'T
```markdown コードブロックで囲む プレーンテキストで出力契約を書く
プレースホルダーは {簡潔な説明} 冗長な説明をプレースホルダーに入れる
テーブルで構造化データを表現 箇条書きの入れ子で複雑な構造を表現
認知負荷軽減ルールで出力量を制御 APPROVE でも REJECT と同量の出力を求める
ステータスの選択肢を明示APPROVE / REJECT ステータスの定義を曖昧にする
場所は `file:line` 形式 自然言語で場所を説明する

出力契約に書いてはいけないもの

  1. 実行手順: 「まず〜を確認し」等の手順はインストラクションの責務
  2. 判断基準の詳細: 「何をもって REJECT とするか」はペルソナまたはインストラクションの責務
  3. ピース固有のルーティング: 「REJECT の場合は fix ムーブメントへ」等

カテゴリ別パターン

計画系plan, architecture-design

  • 結果ステータスなし
  • セクション構造: 元の要求 → 分析結果 → 実装ガイドライン
  • テーブル: ファイル構成
# タスク計画
## 元の要求
## 分析結果
### 目的 / スコープ / 実装アプローチ
## 確認事項

レビュー系ai-review, architecture-review, qa-review, security-review, frontend-review, cqrs-es-review

  • 結果ステータス: APPROVE / REJECTまたは APPROVE / IMPROVE / REJECT
  • セクション構造: 結果 → サマリー → 検証テーブル → 問題テーブル
  • 認知負荷軽減ルール付き
# {種別}レビュー
## 結果: APPROVE / REJECT
## サマリー
## 確認した観点(テーブル)
## 問題点REJECTの場合テーブル

レビュー統合系review-summary

  • 複数レビューの結果を1つにまとめる
  • セクション構造: 総合判定 → 個別結果テーブル → 要注意の問題 → 改善提案

コーダー出力系coder-scope, coder-decisions

  • 結果ステータスなし
  • 実装前scopeと実装後decisionsのペア
  • コンパクト: 10-20行

検証系validation

  • 結果ステータス: APPROVE / REJECT
  • セクション構造: 結果 → 検証サマリーテーブル → 成果物 → 未完了項目
  • ビルド・テストの確認方法を含む

サマリー系summary

  • 結果ステータス: 固定値「完了」
  • セクション構造: タスク → 結果 → 変更内容テーブル → 確認コマンド
  • ピースの最終出力として使用

共通ルール

文体

  • プレースホルダー以外はそのまま出力される見出し・ラベル
  • 常体(「〜する」)
  • 簡潔に

ファイル命名

  • {role}.md または {role}-{modifier}.md
    • 例: plan.md, ai-review.md, coder-scope.md
  • ハイフン区切り
  • 英語小文字のみ
  • 番号プレフィックスを付けない(01-plan.md ではなく plan.md

番号プレフィックスはピース構造に依存するため、共有ファイルでは使用しない。番号はピースYAMLの report.name フィールドで付ける。

ファイルサイズ

種別 目安 上限
コーダー出力 10-20行 25行
レビュー 15-25行 30行
検証・サマリー 15-25行 30行
計画・設計 15-25行 30行

認知負荷軽減ルールを含む場合は +3-5行。


チェックリスト

  • 出力契約本体が ```markdown コードブロックで囲まれているか
  • プレースホルダーが {簡潔な説明} 形式か
  • レビュー系は結果ステータスAPPROVE / REJECT 等)が明示されているか
  • テーブルの場所カラムが `file:line` 形式か
  • 認知負荷軽減ルールが付加されているか(レビュー系)
  • 番号プレフィックスを付けていないか(ファイル名)
  • 実行手順が混入していないか(インストラクションの責務)
  • 30行以内に収まっているか認知負荷軽減ルール除く