5つの関心を Persona, Policy, Instruction, Knowledge, Output Contract に統一。 ディレクトリ、YAMLキー、ソースコード、テンプレート、テスト、ドキュメントを全面更新。
4.5 KiB
4.5 KiB
ポリシー スタイルガイド
このガイドは policies/ のファイルを作成・編集する際のルールを定義する。
テンプレート
templates/policies/ にテンプレートファイルを用意している。新規作成時はコピーして使う。
| テンプレート | 用途 | 使用例 |
|---|---|---|
policy.md |
共有行動規範 | coding, review, testing |
ポリシーとは
複数のエージェントが共有する行動規範。user message(instruction 内)に配置される。
| 項目 | 内容 |
|---|---|
| 目的 | 複数エージェントが共有する行動規範 |
| 配置 | user message(instruction 内) |
| 対象 | 複数のエージェント |
| 判断基準 | 「複数のエージェントが同じルールに従うか?」→ YES ならポリシー |
ペルソナとの分離
このルール/知識は…
├── 特定のエージェントだけが必要 → ペルソナ(ドメイン知識)
├── 複数のエージェントが共有 → ポリシー
└── 特定のピースの実行手順 → instruction_template(ポリシーに書かない)
フォーマット
# {ポリシー名}
{1文の目的説明。「〜する。」で終わる}
## 原則
| 原則 | 基準 |
|------|------|
| ... | ... |
## {ルールカテゴリ1}
{自由形式: テーブル、コード例、箇条書き}
## {ルールカテゴリ2}
...
セクション詳細
目的説明(必須)
- 1文でポリシーの目的を宣言
- 体言止めまたは「〜する。」で終わる
# 良い例
速さより丁寧さ、実装の楽さよりコードの正確さを優先する。
# 悪い例
コーディングに関するルールです。 ← 曖昧
原則テーブル(必須)
- ポリシーの核心を5-10行のテーブルで表現
- 各行は「原則名 + 1行の基準」
ルールカテゴリ(1つ以上)
##で直接カテゴリを作る(###を挟まない)- テーブル、コード例、箇条書きを自由に使う
- ネストは
###まで(####は使わない)
DO / DON'T
| DO | DON'T |
|---|---|
| 複数エージェントに共通するルールを記載 | 特定エージェントにしか適用されない知識を含める |
| コード例で「良い例/悪い例」を示す | 抽象的な原則だけ列挙する |
| 目的説明は1文で簡潔に | 長い説明文を書く |
## でカテゴリを直接分ける |
#### 以下のネストを使う |
ポリシーに書いてはいけないもの
- 特定エージェント固有の知識: Architecture Reviewer だけが使う検出手法等
- ピース固有の概念: ムーブメント名、レポートファイル名
- ツール固有のパス:
.takt/reports/等の具体的なディレクトリパス - 実行手順: どのファイルを読め、何を実行しろ等
共通ルール
見出しの深さ
最大 ### まで。#### 以下は使わない。深くなる場合は構造を見直す。
コード例
- 「良い例/悪い例」のペアで示す
- コメントで
// REJECT// OK// APPROVEを付ける - 言語は対象プロジェクトに合わせる(TypeScript が主)
// REJECT - 問題の簡潔な説明
const bad = ...
// OK - 正しい理由の簡潔な説明
const good = ...
テーブル
判定基準テーブルは「基準 → 判定」の形式で統一する。
| 基準 | 判定 |
|------|------|
| 条件A | REJECT |
| 条件B | 警告 |
| 条件C | OK |
文体
- 体言止めまたは「〜する」の常体
- 丁寧語(です・ます)は使わない
- 簡潔に。冗長な説明は避ける
ファイル命名
{category}.md(例:coding.md,review.md,testing.md)- ハイフン区切り(スネークケース不可)
- 英語小文字のみ
- ディレクトリでグルーピングしない(フラット構造)
ファイルサイズ
| 目安 | 上限 |
|---|---|
| 60-250行 | 300行 |
チェックリスト
- 目的説明が1文で書かれているか
- 原則テーブルがあるか
- 複数のエージェントに適用可能な内容か
- 特定エージェント固有の知識が混入していないか
- ピース固有の概念が含まれていないか
- ツール固有のパスが含まれていないか
####以下のネストがないか