---
name: implement
model: opus
description: "実装パイプラインを開始する．コーディング → テスト → リファクタリングの順で 3 つのエージェントを実行し，必要に応じて人間の確認を挟む．"
argument-hint: "<タスク内容>"
---

あなたはオーケストレーターです．
GUIDE_05（エージェント運用ルール）を読み，パイプラインのルールを理解した上で以下の手順を実行してください．

## 前提確認 (Pre-check)

1. 現在のブランチを確認する（`git branch --show-current`）
2. `main` ブランチにいる場合，GUIDE_04 に従い作業ブランチを作成する
   - GUIDE_04 のブランチ命名規則に従い，適切なプレフィックスとタスク内容を表す英単語 2〜4 語（kebab-case）でブランチ名を決定する
3. 実装対象のタスクを確認する: $ARGUMENTS

## Phase 1: コーディング (Coder)

coder エージェントに以下を委譲する:

「以下のタスクを実装してください: $ARGUMENTS」

Coder の出力（実装サマリー）を記録し，ユーザーに提示する:

「**Phase 1（コーディング）が完了しました．**

{Coder の実装サマリー}

ブラウザや実機で動作を確認してください．
- **OK** → 次のフェーズ（テスト）に進みます
- **NG** → 問題点を教えてください．修正します」

ユーザーの OK を得るまで Phase 2 に進まないこと．
NG の場合は coder エージェントに修正を委譲し，再度確認を依頼する．

## Phase 2: テスト (Tester)

tester エージェントに以下を委譲する:

「直前の実装に対するテストを仕様ベースで作成・実行してください．

実装サマリー:
{Coder の出力}」

Tester の出力（テストサマリー）を記録し，テスト結果に応じて分岐する:

- **全テスト成功**: テストサマリーを表示し，自動的に Phase 3 に進む．
- **テスト失敗あり**: ユーザーに以下を提示し，判断を仰ぐ．

「**Phase 2（テスト）でテスト失敗がありました．**

{Tester のテストサマリー}

テスト失敗の原因を判断してください:
- **仕様の問題** → 仕様の修正方針を教えてください
- **実装の問題** → coder エージェントに修正を委譲します
- **テストの問題** → tester エージェントに修正を委譲します」

ユーザーの指示に従い対応した後，再度テストを実行して全テスト成功を確認してから Phase 3 に進む．

## Phase 3: リファクタリング (Refactorer)

refactorer エージェントに以下を委譲する:

「直前の実装・テスト後のコードをリファクタリングしてください．

実装サマリー:
{Coder の出力}

テストサマリー:
{Tester の出力}」

Refactorer の出力（リファクタリングサマリー）を記録し，確認を挟まず Phase 4 に進む．

## Phase 4: ドキュメント更新 (Documentation)

GUIDE_05 の「Phase 4: ドキュメント更新」に記載されたチェック観点に従い，`docs/`, `CLAUDE.md`, `docs/PROGRESS.md` を必要に応じて更新する．進捗を記録する場合は GUIDE_05「進捗記録の運用ルール（CLAUDE.md / PROGRESS.md）」に従う（CLAUDE.md は最新 1 行に上書き，`docs/PROGRESS.md` に詳細を末尾追記．`git log` で取れる詳細は書かない）．

Phase 4 の結果を `.claude/commit-context.md` に書き出す:

```markdown
# commit-context
- docs_updated: true/false
- claude_md_updated: true/false
- progress_md_updated: true/false
- note: （更新不要の理由や更新内容の要約）
```

ドキュメントを更新した場合のみ，ユーザーに提示する:

「**Phase 4（ドキュメント更新）が完了しました．**

{更新したドキュメントの一覧と変更内容の要約}

確認をお願いします．
- **OK** → `/commit` でコミットできます
- **NG** → 修正点を教えてください」

更新不要と判断した場合は，確認を挟まず完了処理に進む．

## 完了処理 (Finalization)

「全フェーズが完了しました．`/commit` でコミットしてください．」
