作成日: 2026-03-06
ステータス: Draft(CLAUDE.md への転記用)
Brain(Claude Code / Codex)が Butler Layer と協調して動作するための行動規範。
この内容を CLAUDE.md に記載することで、Brainが毎回ルールを読み直さなくてもよくなる。
以下のIntentに該当するタスクは、自分で実行せず必ずButlerに委任する。
| Intent | 説明 |
|---|---|
bootstrap_context |
プロジェクト情報・コンテキストの収集 |
collect_logs |
ログ・状態情報の収集 |
triage |
障害・失敗事象の一次切り分け |
deploy |
サービスのデプロイ |
restart |
サービスの再起動 |
health_check |
ヘルスチェック・状態確認 |
commit_push |
git commit / push |
record_to_trilium |
Triliumへの作業記録 |
update_sop |
SOPの修正・更新 |
Butlerが手順を知らない場合でも自分でやらない。 delegation_mode: "teach_if_unknown" で委任し、need_input が返ってきたら手順を教える。
理由:
Intentドメインのタスクは必ず butler__submit_task でTask Contractを作る。
{
"task_id": "uuid(生成する)",
"intent": "deploy",
"target": {
"service": "mcp",
"environment": "prod",
"compose_dir": "/home/docker/docker_setup/trilium"
},
"constraints": {
"implicit_scope": ["docker", "git_read"],
"require_approval_for": ["git_push", "destructive"],
"max_minutes": 15
},
"delegation_mode": "teach_if_unknown",
"success_criteria": [
"docker compose ps で対象コンテナが Up",
"health endpoint が 200"
],
"evidence_required": ["executed_commands", "key_outputs", "error_head_tail"],
"requested_by": "claude_code",
"requested_at": "(現在時刻ISO8601)"
}
implicit_scope に入れるもの(触っていいシステム):
"trilium": Triliumアクセスを伴うタスク"docker": Docker操作を伴うタスク"git_read": git fetch/log/diff等の読み取り"git_write": git add/commit(pushはrequire_approval_forへ)"shell_read": ファイル読み取り・状態確認系require_approval_for に入れるもの(確認が必要な操作):
"git_push": 常に確認"git_commit": 必要に応じて(通常はcommit_pushのintentで一括)"destructive": rm系・docker prune等"docker_down": サービス停止Butler から need_input が返ってきた時、butler__teach で手順を返す。
必ずこの構造化JSONで返す。自然言語で返さない。
{
"task_id": "(対象のtask_id)",
"steps": [
{"kind": "cmd", "value": "git pull"},
{"kind": "cmd", "value": "docker compose pull"},
{"kind": "cmd", "value": "docker compose up -d"},
{"kind": "check", "value": "health_url returns 200"}
]
}
step kind:
cmd: シェルコマンド実行check: 検証コマンド実行。value は必ず実行可能なシェルコマンドで書く(exit code 0 = pass)。success_criteria に対応する check stepを必ず含めることwait: 待機(例: "30s")butler__get_status で返ってくる Result Contract の status に応じて行動する。
| status | 意味 | Brainの行動 |
|---|---|---|
ok |
全criteria達成 | 証跡を確認して次のアクションへ |
need_input |
手順不足・情報不足 | butler__teach で手順を返す |
blocked |
承認拒否・ポリシー違反・外部依存停止 | 証跡を見て原因判断。必要なら update_sop |
failed |
実行済みだがcriteria未達 | error_head_tail を見て判断。必要なら update_sop |
triage の結果契約は「診断コマンドの実行結果・収集された証跡・エラーパターンの列挙」を返す。原因の解釈・対処の決定はBrainが証跡を読んで判断する。Butlerはこの判断を代行しない。
以下の場合は update_sop Intent でTask Contractを送る。
blocked / failed の原因がSOPの陳腐化と判断した場合{
"task_id": "uuid",
"intent": "update_sop",
"target": {
"sop_id": "(修正対象のsop_id)",
"reason": "手順が誤っていた(具体的な理由)"
},
"constraints": { "require_approval": false },
"steps": [
{"kind": "cmd", "value": "修正後の手順1"},
{"kind": "cmd", "value": "修正後の手順2"}
],
"requested_by": "claude_code",
"requested_at": "ISO8601"
}
butler__teach で自然言語の説明を返す(構造化JSONのみ)ButlerLayer_アーキテクチャ定義書_v0.3.mdButlerLayer_契約通信仕様書_v0.3.md