# Impl

> 機能やバグ修正を最初から最後まで実装するためのエージェントです。実装内容を理解し、期待されるアウトプットと検証方法を定義してから実装を進めます。 例: - <example> Context: ユーザーが新機能の実装を依頼している。 user: "新しいアノテーション機能を実装してください。" assistant: "実装内容を理解し、期待されるアウトプットと検証方法を定義してから実装を進めます。" <commentary>実装タスクのため、implエージェントを使用して実装プロセスを進めます。</commentary> </example>

- Skill: `tbsten/impl` (Agent Skill)
- Install (CLI): `npx skillmds@latest add tbsten/impl`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tbsten/impl/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tbsten (https://skillmd.com/u/tbsten)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tbsten/impl

---


# Implementation Task Command

このコマンドは、機能やバグ修正を最初から最後まで実装するためのエージェントです。

## 実行フロー（必ずこの順序で実行）

### Step 1: 実装内容を把握する

**実行手順**:
1. ユーザーから提供された実装内容（`$1`）を読み込む
2. 実装内容を分析して以下を理解:
   - 何を実装するか（機能、バグ修正、リファクタリングなど）
   - なぜ実装するか（目的、背景）
   - どのように実装するか（アプローチ、技術スタック）
3. 関連する既存コードを確認:
   - `codebase_search` で関連するコードを検索
   - `read_file` で関連ファイルを確認
4. タスク名を英語で考える（kebab-case推奨）
   - 例: `add-combine-to-annotation`, `fix-property-matching`, `refactor-api-generation`

**確認すべき内容**:
- 実装する機能の詳細
- 関連する既存のコードやアーキテクチャ
- 使用する技術やライブラリ
- 依存関係や制約事項

### Step 2: 期待されるアウトプット・検証方法を定義する

**実行手順**:
1. `.local/task-{タスク名}/` ディレクトリを作成
   - ツール: `run_terminal_cmd` で `mkdir -p .local/task-{タスク名}`
2. `.local/task-{タスク名}/01_期待されるアウトプットと検証方法.md` ファイルを作成
   - ツール: `write` を使用

**ファイルの内容**:

```markdown
# 期待されるアウトプットと検証方法 {タスク名}

## 期待されるアウトプット

{期待されるアウトプット}

## 検証方法

{検証方法}
```

**記載内容のガイドライン**:

- **期待されるアウトプット**:
  - タスク実装後にできるようになる機能の詳細を簡潔に記載
  - 具体的な動作や挙動を説明
  - 入力と出力の例を含める

- **検証方法**:
  - タスク実装後、どのようにテストするかを具体的に記載
  - `integrationTest` や `dev` モジュールを積極的に使用
  - 明らかに不必要と考えられる場合以外は、必ず以下を追加:
    - 「`.github/workflows/pull-request.yml` を参考に、CI をローカルでエミュレートする。」
  - その他タスクの内容に応じて以下を含める:
    - ファイルを確認する方法
    - コマンドを実行する方法
    - テストコードを作成して実行する方法

**検証方法の例**:
- `integrationTest/app/src/commonTest/` にテストコードを用意し、`./gradlew jvmTest` を実行してテストが成功することを確認する。
- `integrationTest/app/build/generated/ksp/jvm/jvmMain/kotlin` に出力された自動生成ソースのファイル内容を確認する。
- `.github/workflows/pull-request.yml` を参考に、CI をローカルでエミュレートする。
- `dev` モジュールを使用して実際の動作を確認する。

### Step 3: 実装する

**実行手順**:
1. `todo_write` を使用して実装タスクを分割
   - 大きなタスクは複数の小さなタスクに分割
   - 各タスクに明確な目標を設定
2. 実装を進める:
   - `codebase_search` で関連コードを検索
   - `read_file` で既存コードを確認
   - `write` または `search_replace` でコードを実装
   - 必要に応じて `grep` でパターンを検索
3. 各タスク完了時に `todo_write` でステータスを更新

**実装時の注意事項**:
- 既存のコードスタイルに従う
- 適切なエラーハンドリングを実装
- コメントを適切に追加
- テストコードも同時に実装

### Step 4: 検証を実施する

**実行手順**:
1. Step 2で定義した検証方法を順番に実行
2. 各検証項目を確認:
   - `run_terminal_cmd` でコマンドを実行
   - `read_file` でファイル内容を確認
   - `grep` でパターンを検索
3. 検証が失敗した場合:
   - 問題を特定
   - 修正を実施
   - 再度検証

**検証コマンドの例**:
```bash
# リントチェック
./gradlew ktlintCheck

# テスト実行
./gradlew jvmTest
cd integrationTest && ./gradlew jvmTest

# ビルド確認
./gradlew build
```

### Step 5: 実装内容のサマリーを作成する

**実行手順**:
1. `.local/task-{タスク名}/02_実装内容サマリー.md` ファイルを作成
   - ツール: `write` を使用

**ファイルの内容**:

```markdown
# 実装内容 {タスク名}

{実装内容の説明（$1から引用）}

## 実装内容サマリー

{実装内容サマリー}

## 実装していないこと

{実装していないこと}
```

**記載内容のガイドライン**:

- **実装内容サマリー**:
  - 簡単な説明と重要なファイル・差分内容を記載
  - 変更されたファイルのリスト
  - 主要な変更点の説明
  - 実装アプローチの説明

- **実装していないこと**:
  - 今回は実装しなかったが、考えられる追加機能などを記載
  - そのままコピペしてAI Agentに共有できるように簡潔に記載
  - 多くても200文字程度で、いくつかリストアップ
  - 将来の改善点や拡張性についても記載

## エラー処理とトラブルシューティング

### 実装中にエラーが発生した場合
1. エラーメッセージを詳細に確認
2. `codebase_search` で関連するコードを検索
3. `read_file` で既存の実装を確認
4. 問題を特定して修正

### 検証が失敗した場合
1. エラーメッセージを確認
2. `run_terminal_cmd` で `--info` または `--stacktrace` フラグを付けて詳細ログを取得
3. 問題を特定して修正
4. 再度検証を実施

### 実装内容が不明確な場合
1. ユーザーに確認を求める
2. 既存のコードを参考にする
3. 類似の実装を `codebase_search` で検索

## 実行チェックリスト

実装時は、以下のチェックリストを確認:

- [ ] 実装内容を理解した
- [ ] 関連する既存コードを確認した
- [ ] タスク名を決定した
- [ ] 期待されるアウトプットと検証方法を定義した
- [ ] 実装タスクを分割した（必要に応じて）
- [ ] 実装を完了した
- [ ] 検証を実施した
- [ ] すべての検証が成功した
- [ ] 実装内容のサマリーを作成した

