この週は新しい知識をほぼ学ばない。代わりに、すでに持っているもの(~/.agent/ の組織)を試験の語彙で説明し直す。配点にすると D1(27%)+D3(20%)=ほぼ半分をこの「翻訳作業」でカバーする。
Claude Agent SDK = Claude Code の中身(エージェントループ・ツール群・サブエージェント機構)を、自分のアプリに組み込めるライブラリとして切り出したもの。W1で自作した40行ループの「業務用完成品」と思えばよい。
run_tool() を自分で書いた。Agent SDK では Read/Write/Bash/Grep/Glob などの実装が最初から入っている今週のメイン作業。以下の表を実際にファイルを開きながら埋め直す(左の用語を見て、右の実物を自分の言葉で説明できたら合格)。
| 試験用語 | 開いて確認する実物 | 確認ポイント |
|---|---|---|
| coordinator(コーディネーター) | rules/lead-worker-orchestration.md | 「Leadは判定・分解・委譲・統合のみ。自分で実行しない」の一文が coordinator の定義そのもの |
| hub-and-spoke | 同上の「Worker間の直接通信は禁止(必ずLeadを介す)」 | 禁止の理由を3つ言う:観測性・エラー処理の一元化・情報統制 |
| AgentDefinition | agents/ の任意の1本(例: verification-agent.md) | frontmatter の description / model / tools が「型定義」。descriptionが起動条件を決めている |
| allowedTools | 同上の tools: 行 | verification-agent が Read/Grep/Glob/Bash だけ=読み取り専用に絞られている理由(役割外ツールの誤用防止) |
| isolated context(コンテキスト分離) | rules/audit-independence.md の盲検原則 | 「他の監査の判定を見せない」が実現できるのは、サブエージェントが親の履歴を継承しない仕様のおかげ |
| explicit context passing(明示的な文脈渡し) | CLAUDE.md の「怠惰な委譲の禁止」 | 「ファイルパス・行番号・変更内容を含めて委譲」=子は白紙で生まれるから |
| parallel Task calls(並列起動) | CLAUDE.md バッチ処理パターン | 「独立タスクは1メッセージで最大5並列」=1応答に複数Task呼び出しを同梱する試験の正解パターン |
| structured handoff | rules/handoff-memory.md の引き継ぎテンプレ | 「確証済み/未確証/残り」の3分割=会話ログを読めない相手に渡す構造化サマリー |
| --resume / fork_session | Agent tool の subagent_type: "fork"、/checkpoint | 「ツール結果が古いなら要約→新規」の判断は handoff-memory の運用と同じ |
表を上から3つずつ、ファイルを実際に開いて「これが◯◯か」と声に出す。1日3行×3日で終わる。終わったらD1ページのチェックリストを更新。
試験で最頻出の対立軸「プロンプト=確率的 / hook=決定論的」を、自分の環境で動いている本物のhookで確認する。
# 実物を読む(15分)
cat ~/.agent/hooks/larc-approval-gate.sh # 実行前ブロック型(PreToolUse)
cat ~/.agent/hooks/git-identity-guard.sh # 実行前ブロック型
cat ~/.agent/scripts/hooks/session-budget-breaker.js # 実行後監視型(PostToolUse)
読みながら確認する3点:
D3の中核。自分のマシンには3階層が実在するので、見て覚える。
# 自分の環境の3階層を目で見る(10分)
ls -la ~/.claude/CLAUDE.md # ① ユーザー階層(自分専用・git共有されない)
ls -la ~/.agent/CLAUDE.md # ② プロジェクト階層(リポジトリ内・共有される)
ls -la ~/.agent/rules/ # ③ ルール分割(.claude/rules/ 方式の実物)
# いま何が読み込まれているか(試験に出るコマンド)
# Claude Code のセッション内で:
/memory
rules/ のYAML frontmatter に paths: ["**/*.test.*"] を書くと該当ファイル編集時だけ読み込まれる——うちが2026-05にやった path-scoped 化そのもの@import は「分割整理」のための機能。読み込まれれば消費トークンは同じ(削減の魔法ではない——feedbackメモで実証済みの知見が試験でも正しい)SKILL.md の frontmatter で試験に出るのは3つだけ。
| 設定 | 意味 | 典型的な出題シーン |
|---|---|---|
context: fork | スキルを隔離された子コンテキストで実行(出力が本会話を汚さない) | 「コードベース解析のような冗長な出力を出すスキルはどう設定?」 |
allowed-tools | スキル実行中に使えるツールを制限 | 「破壊的操作をさせたくないスキルには?」 |
argument-hint | 引数なしで起動されたとき必要パラメータを促す | 「引数必須のスキルで入力漏れを防ぐには?」 |
置き場所のルールも一緒に:チーム共有=プロジェクトの .claude/commands/・.claude/skills/(git配布)、個人=~/.claude/ 側。「スキル vs CLAUDE.md」は「オンデマンドの手順 vs 常時適用の標準」で切る(rules/extension-layer-decision.md の6問フローチャートの質問4がこれ)。
impact-assessment.md(LOW=直接実装、HIGH=research→plan→implement)の判定表が上位互換なので、そちらで覚えてよいclaude -p "…"(非対話モード。無いとジョブが入力待ちで永久ハング)/--output-format json+--json-schema(機械可読な出力の強制)/CLAUDE.md にテスト標準・レビュー基準を書いてCIに文脈を渡す-p 一択私(Claude)に「W2演習やる」と言えば伴走する。新規の練習用リポジトリを1つ作ってやるのが安全(本物の ~/.agent/ は触らない)。
.claude/rules/test-style.md に paths: ["**/*.test.*"] を付け、テストファイル編集時だけ発動することを確認するcontext: fork + allowed-tools 付きのスキルを1本作り、本会話が汚れないことを確認する${VAR})でMCPサーバーを1つ設定する(Week 3 の予習を兼ねる)