write-tests について
write-tests は、ローカルのコード変更に対するテスト作成を調整し、重要なビジネスロジックを重点的にカバーするエージェントスキルです。変更分析とカバレッジレビュアーを活用し、単純な単一ファイルには別の手順を用います。
主な機能
- 01ローカル変更とテスト環境の分析
- 02重要なビジネスロジックのテスト
- 03複数ファイルのテスト作業をエージェントに委任
- 04カバレッジ検証とテストスイート実行
- 05既存テストの維持
活用シーン
- 01機能実装後のテスト追加
- 02複数ファイルにわたるロジック変更のカバー
- 03リファクタリング後のテストカバレッジ確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ neolabhq/ context-engineering-kit --skill write-testsインストール後、Claude Code で/write-testsを入力して読み込まれたか確認します。
詳細
ローカルの変更をテストでカバーする
ユーザー引数
ユーザーは、対象とするテストやモジュールを指定できます。
$ARGUMENTS
何も指定されていない場合は、現在の git diff に含まれる未コミットの変更をすべて対象にします。すべてコミット済みの場合は、最新のコミットを対象にします。
コンテキスト
新機能の実装や既存コードのリファクタリングを行った後は、ビジネスロジックの変更がすべてテストでカバーされていることを確認することが重要です。このコマンドでは、カバレッジ分析と専門エージェントを使用して、ローカルの変更に対するテスト作成を自動で進めます。
目標
ローカルコードの変更に含まれる重要なビジネスロジックを、包括的にテストでカバーします。
重要な制約
- 重要なビジネスロジックに注力する — すべての行を 100% カバーする必要はありません
- 既存のテストを維持する — 新しいテストだけを追加し、既存のテストは変更しないでください
- 「変更の複雑さを分析する」 —
- 変更されたファイルが 2 つ以上ある場合、または 1 つのファイルに複雑なロジックが含まれる場合は、自分でテストを書かず、エージェントのオーケストレーションだけを行ってください。
- 変更されたファイルが 1 つだけで、変更が単純な場合は、自分でテストを書いてもかまいません。
ワークフローの手順
準備
-
利用可能であれば sadd スキルを読む
- 利用可能な場合は、エージェントを管理する際のベストプラクティスを把握するため、sadd スキルを読んでください。
-
テスト基盤を確認する
- @README.md と package.json(または同等のプロジェクト設定ファイル)を読みます。
- テストとカバレッジレポートを実行するコマンドを特定します。
- プロジェクトの構成とテストの規約を把握します。
-
すべてのテストを実行する
- 全テストスイートを実行して、ベースラインを確認します。
分析
haiku エージェントを使って、手順 4〜5 を並行して実行します。
-
個別のテスト実行を確認する
- 成功するテストファイルを任意に 1 つ選びます。
- haiku エージェントを起動し、このテストファイルだけを実行する適切なコマンドを見つけるよう指示します。
- 個別のテストを確実に実行できるまで、試行を繰り返すよう依頼します。
- エージェントの作業が完了したら、テストファイルが存在する場合は、そのファイルを指定して実行してみます。
- これにより、エージェントがテストを個別に実行できることを確認します。
-
ローカルの変更を分析する
git status -uを実行し、未追跡ファイルを含む変更ファイルをすべて特定します。- 未コミットの変更がない場合は、最新のコミットで変更されたファイルの一覧を取得するために
git show --name-statusを実行します。
- 未コミットの変更がない場合は、最新のコミットで変更されたファイルの一覧を取得するために
- ドキュメントや設定ファイルなど、コード以外のファイルを除外します。
- 変更された各ファイルに対して個別に haikue エージェントを起動し、ファイルの内容と変更の複雑さを分析して、短い要約を作成するよう指示します。
- 実際にロジックが変更されたファイルの一覧を抽出します。
テストの作成
単純な単一ファイルのフロー
変更されたファイルが 1 つだけで、変更が単純な場合は、自分でテストを書いてもかまいません。次のガイドラインに従ってください。
- テスト作成のベストプラクティスを把握するため、TDD スキルを読みます。
- 対象ファイル {FILE_PATH} を読み、ロジックを理解します。
- 既存のテストファイルを確認して、パターンとスタイルを把握します。存在しない場合は作成します。
- 変更をカバーするために追加すべきテストケースを分析します。
- 特定したすべてのケースについて、包括的なテストを作成します。
- 前に特定したテストコマンドを実行します。
- すべてのテストが成功するまで、問題を修正して繰り返します。
テストは次の条件を満たすようにしてください。
- 明確で保守しやすい
- プロジェクトの規約に従っている
- 実装ではなく動作をテストする
- エッジケースとエラー経路をカバーする
複数ファイルまたは複雑なファイルフロー
変更されたファイルが複数ある場合、または1つのファイルに複雑なロジックが含まれている場合は、変更内容を網羅するために専門エージェントを使用する必要があります。次のガイドラインに従ってください。
-
review:test-coverage-reviewerエージェントを並行して起動する(Sonnet または Opus モデル)- 変更されたファイルごとにカバレッジレビュアーエージェントを1つ起動します
- 各エージェントに次の情報を提供します。
- コンテキスト:このファイルで変更した内容(git diff)
- 対象:分析する特定のファイル
- リソース:README と関連ドキュメントを読む
- 目標:追加が必要なテストスイートを特定する
- 出力:重要なビジネスロジックに必要なテストケースの一覧
- すべてのカバレッジレビューレポートを収集します
-
テストファイル作成用の
developerエージェントを並行して起動する(Sonnet または Opus モデル)- テストが必要な変更ファイルごとに開発者エージェントを1つ起動します
- 各エージェントに次の情報を提供します。
- コンテキスト:このファイルのカバレッジレビューレポート
- 対象:テストを作成する特定のファイル
- テストケース:カバレッジレビュアーエージェントが提示した一覧
- ガイダンス:テスト作成のベストプラクティスを確認するため、利用可能であれば TDD スキルを読む
- リソース:README とテストの例を読む
- コマンド:このファイルのテストを実行する方法
- 目標:特定されたすべてのケースを網羅する包括的なテストを作成する
- 制約:既存のロジックは変更せず、新しいテストを追加する(明らかに壊れている場合を除く)
-
カバレッジを検証する(反復)(Sonnet または Opus モデル)
- ファイルごとに
review:test-coverage-reviewerエージェントを再度起動します - 次の情報を提供します。
- コンテキスト:元の変更と追加した新しいテスト
- 目標:重要なビジネスロジックがすべてカバーされていることを検証する
- 出力:確認結果、または不足しているカバレッジの一覧
- ファイルごとに
-
必要に応じて反復する
- まだカバレッジが不足しているファイルがある場合は、手順5に戻ります
- 不足があるファイルに対してのみ、新しい開発者エージェントを起動します
- まだ不足している箇所について、具体的な指示を提供します
- 重要なビジネスロジックがすべてカバーされるまで続けます
- 最終検証
- テストスイート全体を実行し、すべてのテストが成功することを確認します
- 利用可能であれば、カバレッジレポートを生成します
- 既存のテストでリグレッションが発生していないことを確認します
成功基準
- 変更されたファイル内の重要なビジネスロジックがすべてテストでカバーされている ✅
- すべてのテスト(新規および既存)が成功する ✅
- テストの品質がカバレッジレビュアーエージェントによって検証されている ✅
エージェント指示テンプレート
カバレッジレビュアーエージェント(初期分析)
Analyze the file {FILE_PATH} for test coverage needs.
Context: This file was modified in local changes:
{GIT_DIFF_OUTPUT}
Your task:
1. Read the changed file and understand the business logic
2. Identify all critical code paths that need testing:
- New functions/methods added
- Modified business logic
- Edge cases and error handling
- Integration points
3. Review existing tests (if any) to avoid duplication
4. Create a list of test cases needed, prioritized by importance:
- CRITICAL: Core business logic, data mutations
- IMPORTANT: Error handling, validations
- NICE_TO_HAVE: Edge cases, performance
Output format:
- List of test cases with descriptions
- Priority level for each
- Suggested test file location
開発者エージェント(テスト作成)
Create tests for file {FILE_PATH} based on coverage analysis.
Coverage review identified these test cases:
{TEST_CASES_LIST}
Your task:
1. Read TDD skill (if available) for best practices on writing tests
2. Read @README.md for project context and testing conventions
3. Read the target file {FILE_PATH} and understand the logic
4. Review existing test files for patterns and style
5. Create comprehensive tests for all identified cases
6. Run the tests: {TEST_COMMAND}
7. Iterate until all tests pass
8. Ensure tests are:
- Clear and maintainable
- Follow project conventions
- Test behavior, not implementation
- Cover edge cases and error paths
Test command: {TEST_COMMAND}
カバレッジレビュアーエージェント(検証)
Verify test coverage for file {FILE_PATH}.
Context: Tests were added to cover local changes in this file.
Your task:
1. Read the changed file {FILE_PATH}
2. Read the new test file(s) created
3. Verify all critical business logic is covered:
- All new functions have tests
- All modified logic has tests
- Edge cases are tested
- Error handling is tested
4. Identify any gaps in coverage
5. Confirm test quality (clear, maintainable, follows TDD principles)
Output:
- PASS: All critical business logic is covered ✅
- GAPS: List specific missing test cases that need to be added