mcpField
D
duck-triage

duck-triage

github.com/sprngrテスト・品質882 回インストール3 週間前に更新
リポジトリ

duck-triage について

duck-triageは、バグの重大度を評価し、テストのカバレッジ不足を見つけるエージェントスキルです。既存テストと証拠を確認して実行可能なチェックを提案し、実装の判断はユーザーに委ねます。

主な機能

  1. 01バグ重大度の分類
  2. 02テストカバレッジ不足の分析
  3. 03証拠を起点とするトリアージ
  4. 04最小限の実行可能なチェックの提案
  5. 05テスト品質と境界値のチェックリスト

活用シーン

  1. 01報告されたバグの優先順位付け
  2. 02プルリクエスト前のテスト計画
  3. 03エラー経路や境界値テストの不足確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sprngr/rubber-duck --skill duck-triage

インストール後、Claude Code で/duck-triageを入力して読み込まれたか確認します。

同梱ファイルreferences/GUARDRAILS.md

詳細

テストカバレッジとバグのトリアージ 🦆。テストで見逃されているものを見つけます。重要なバグを分類します。簡潔で実用的な表現を保ちます。

目的

最小限の実行可能なチェックで、バグの重大度を分類し、不足しているテストカバレッジを明らかにします。

方針のガードレール(スキル固有)

references/GUARDRAILS.md の共通ガードレールを引き継ぎます。

スキル固有の追加事項:

  • 重大度とテストの方向性を提案します。実装やテスト作成を行うかどうかはユーザーが決定します。

起動条件

テストカバレッジの計画、バグの重大度のトリアージ、PR 前のテストに関する提案に使用します。

手順

1. コンテキストの確認(再現手順や仕様がない場合)
  • コンテキストが不完全な場合は、的を絞った確認質問を1〜3個します

  • 根拠が不足している場合は、前提を明示します

  • 再現手順や仕様が不足している場合は、まず的を絞った確認質問を1つします。

根拠が不足している場合は、次の明示的なマーカーを含めます:

  • missing evidence: に続けて、不足している情報(ログ/再現手順/リリース期間/影響範囲)を簡潔に列挙します
2. ダックラダーを適用する(テスト計画)

新しいテストを求める前に、次を確認します:

  1. この動作は、すでに信頼できるテストでカバーされていますか?
  2. 新しいファイルやテストスイートを作らずに、既存のテストを拡張できますか?
  3. 回帰時に失敗する、最小限の実行可能なチェックは何ですか?
3. トリアージのワークフロー

バグの重大度を判定する場合:

  1. まず証拠を集めます:再現用の成果物、失敗する経路、既存のテストカバレッジの一覧。
  2. 報告された動作を再現します。
  3. 重大度マトリックス(以下)に基づいて分類します。
  4. 回帰か、以前から存在する問題かを確認します。
  5. 既存のテストカバレッジがあるか確認します。ない場合は、カバレッジ不足を要因として明記します。
  6. 出力:重大度+簡潔な根拠+追加すべきテスト。

バグの重大度分類:

レベル基準対応例
🔴 P0 — Criticalデータ損失、セキュリティ侵害、全ユーザーが利用不能直ちにホットフィックス金額の誤送信、API 認証の回避
🟠 P1 — High主要機能の故障、回避策ありスプリントの優先課題特定のロケールで検索が機能しない
🟡 P2 — Medium機能の一部が故障、UX が低下次のイテレーションアイコンの位置ずれ、クエリの遅延
🔵 P3 — Low表示上の問題、エッジケース、誤字バックログカンマの欠落、ラベルの大文字・小文字
⚪ P4 — Informationalあると便利だが、バグではない検討提案、機能強化

テストカバレッジを分析する場合:

次のテストが不足している場合に指摘します:

  • テストのないパブリック API
  • 検証されていない副作用関数
  • エラーパス(ハッピーパスだけでなく、分岐カバレッジも確認)
  • 外部依存関係(モックなし)
  • コントラクトテストのないパブリックインターフェース

テスト品質チェックリスト:

  • テストが実装ではなく動作を検証している
  • テストが決定的である(乱数や時刻に依存しない)
  • テストが独立している(暗黙の実行順序に依存しない)
  • テスト名が関数ではなくシナリオを表している
  • アサーションが具体的である(「真」ではなく「42と等しい」)
  • エラーパスをテストしている(「例外をスローする」「拒否される」「エラーを返す」)

エッジケースを見つけるためのフレームワーク(すべての入力/出力で確認):

  • 空(ゼロ、""、[])
  • Null/undefined/欠落
  • 要素が1つ(境界)
  • 最大値/最小値
  • 無効な型
  • 並行アクセス
  • キャッシュ状態(ヒット、ミス、古いデータ)
  • タイムアウト/境界値

提案するテストシナリオ:

  • ハッピーパス(機能ごとに1つ)
  • 最初の失敗ケース
  • 境界ケース(0、最大値、null、空)
  • 並行ケース(2つの呼び出しを同時に実行)
  • 復旧ケース(失敗 → 再試行 → 成功)
  • 回帰ケース(既存のバグに修正がある場合)

最小限の実行可能なチェックのルール:

  • 分岐、ループ、パーサー、金銭、セキュリティ関連の経路など、単純でないロジック変更には、実行可能なチェックを1つ残す必要があります:
    • 対象を絞ったテストを1つ、または
    • テストフレームワークの導入が大掛かりな場合は、アサーション形式の自己チェック/デモを1つ。
  • 既存のテストカバレッジがある場合、単純な1行の変更には新しいテストが不要なこともあります。
  • 簡潔さを理由に、重要な保護策を決して取り除いてはいけません:
  • 変更によって信頼境界の検証、セキュリティ制御、データ損失防止、アクセシビリティ要件、または明示的なユーザー要件が弱まる場合は、その変更を拒否し、制約を維持する安全な代替案のみを提示します。
4. 出力

重大度+簡潔な根拠+追加すべき具体的なテスト。

関連するテストのパスを含めるか、存在しない場合は明示的に「needs test」と記載してください。

書式ルール(固定):

  • テストを提案する場合は、明示的に needs test: を付けた行を使用します(シナリオごとに1行)。
  • 既定の対象範囲は、リスクと変更範囲に応じて needs test: を1~3行とします(高リスクまたは複数の領域にまたがる変更の場合のみ3行)。
  • 不確実なケースでは、重大度を見直すために必要な最小限の資料を示す missing evidence: の行を1行含めます。

バグ報告の形式:

  • 1行のタイトル:「コンポーネント:発生する問題」
  • 再現手順(実行可能な手順を番号付きで記載)
  • 期待される結果と実際の結果(それぞれ1行)
  • 重大度+根拠
  • 関連テスト(パス)または「needs test」

PR 前と PR 内:

  • PR 前:テストすべき内容を提案します(duck-triage の範囲)。
  • PR 内:不足しているテストをインラインで注記します(duck-review の 🧪 test: プレフィックス)。

境界

  • トリアージでは対応方針を推奨します。実装やテストの作成には、範囲を限定したうえでユーザーの明示的な承認が必要です(引き継ぎが承認に代わることはありません)。
  • PR 内のインラインレビューコメントは duck-review を通じて行います。

コメント