tracer-bullets について
tracer-bulletsは、複数の層を通る小さな機能単位を構築・検証してから拡張する開発手法です。早期のフィードバックが必要な作業向けで、単純な作業や分解済みの作業は対象外とします。
主な機能
- 01機能をエンドツーエンドの単位で構築
- 02各単位を次へ進む前に検証
- 031回のエージェントセッションに収まる単位
- 04最初の機能で実装パターンを確立
- 05適用する作業と省略する作業の判別
活用シーン
- 01CRUD機能を段階的に実装・検証する
- 02インポートやウィザードを端から端までの手順に分割する
- 03全バックエンドまたは全UIを先に作る進め方を避ける
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill tracer-bulletsインストール後、Claude Code で/tracer-bulletsを入力して読み込まれたか確認します。
詳細
トレーサーバレット
すべてのレイヤーを通る垂直スライスとして機能を構築し、次のスライスに進む前に各スライスを検証します。『The Pragmatic Programmer』の教えに従い、できるだけ早くフィードバックを得ます。水平レイヤーを個別に構築する(すべてのエンドポイント、次にすべての UI、最後にすべてのテスト)ことは避けます。まず薄い垂直パスを1つ構築して動作を検証し、その後に拡張します。
単一レイヤーの変更、1ファイルのバグ修正、またはタスクトラッカーですでに順序付けされた垂直スライスに分解されている作業では省略します。
クイックリファレンス
| 原則 | 実践 |
|---|---|
| 水平より垂直 | すべての機能を1つのレイヤーで進めるのではなく、すべてのレイヤーを通るスライスを1つ構築します |
| 次に進む前に検証 | 次のスライスに進む前に、テストが通り、ページが描画され、往復処理が動作することを確認します |
| 1セッションにつき1スライス | 各スライスは1回のエージェントセッションで完了できる規模にします |
| 最初の機能でパターンを確立 | 最初の CRUD で規約を確立すれば、以降の CRUD はより速く進みます |
| 構築前に確認 | タスクトラッカーですでに作業がスライスに分解されている場合があります |
| 単純な場合は省略 | 単一レイヤーの作業や、実証済みのパターンにはこの手順は不要です |
CRUD 機能のスライス
| スライス | 範囲 | 検証内容 |
|---|---|---|
| 1 | バックエンド/API + テスト(UI なし) | データレイヤーが動作し、規約が確立され、テストで証明される |
| 2 | 実データを使った一覧ページ | データが DB -> サーバー -> 描画されたページへ流れる |
| 3 | 作成ダイアログ | 完全な往復処理:フォーム -> サーバー -> DB -> 更新 |
| 4 | 編集 + 削除 | 完全な CRUD サイクル、変更パターン、確認ダイアログ |
| 5 | E2E テスト | 機能全体を固定します |
CRUD 以外への応用
原則は同じで、スライスが異なります。
- インポートフロー:1行を解析 -> 1行を表示 -> 検証 + 重複排除 -> 確認 + 確定
- ダッシュボード:実データを使ったウィジェットを1つ -> 空の状態/オンボーディング状態 -> すべてのウィジェットを含むレイアウト
- 検索/パレット:エンティティタイプを1つ -> すべてのエンティティタイプ -> クイックアクション
- 複数ステップのウィザード:最初のステップをエンドツーエンドで完成 -> ステップを1つずつ追加 -> 最終送信
よくある間違い
| 間違い | 正しいパターン |
|---|---|
| UI を作る前にすべての API エンドポイントを構築する | エンドポイント、その UI、テストを1つずつ構築してから、次に進みます |
| バックエンドをテストする前に UI に着手する | スライス1はテストを含むバックエンドのみとし、まずデータレイヤーを証明します |
| 作成/編集/削除 UI 全体を一度に構築する | まず作成ダイアログ(スライス3)、次に編集 + 削除(スライス4)を行います |
| スライス間の検証を省略する | 次のスライスに着手する前に、テストを実行して出力を確認します |
| 1セッションでは大きすぎるスライスを作る | さらに分割します。1セッションで完了できないスライスは大きすぎます |
| 単純な単一レイヤーの作業にトレーサーバレットを適用する | 1つのコンポーネント、1つのユーティリティ、または実証済みのパターンでは省略します |
委任
- サブタスクに分解する:コードを書く前に、プロジェクトのタスクトラッカーを使って順序付けされた垂直サブタスクを作成します
- 各スライスを分離する:各スライスをサブエージェントに委任し、失敗の影響を抑え、コンテキストを新鮮に保ちます
- CRUD 以外の作業でスライスの境界を見つける:すべてのレイヤーを通る最小のパスをスライス1として選び、その後に拡張します
参考資料
参考ファイルはありません。出典:Tracer Bullets: Keeping AI Slop Under Control
コメント
Markdown 対応