mcpField
D
definition-of-done

definition-of-done

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

definition-of-done について

Definition of Doneは、業務要件と任意の技術要件をもとに、milestones.yamlへ受け入れ基準と終了チェックリストを追加するスキルです。計画成果物があるチームが、各マイルストーンの完了条件を明確にするために使います。

主な機能

  1. 01要件をマイルストーンに対応付け
  2. 02検証可能な機能基準を作成
  3. 03適用可能な非機能基準を追加
  4. 04テストとドキュメントの要件を整理
  5. 05終了チェックリストの追加とバックアップ

活用シーン

  1. 01マイルストーンに受け入れ基準を追加
  2. 02業務要件を提供段階に対応付け
  3. 03技術要件から測定可能なゲートを設定
  4. 04マイルストーンの完了状況を確認

インストール

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

$npx skills add https://github.com/validkeys/sherpy --skill definition-of-done

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

同梱ファイルexamples/definition-of-done.yaml

詳細

完了の定義

既存の milestones.yaml を拡張し、各マイルストーンに詳細な受け入れ基準を追加します。「計画では X を構築すると書かれている」状態から「X が完了したと確実に判断できる」状態へのギャップを埋めます。要件から直接導き出した、汎用的なチェックリストではない任意項目の acceptance_criteria フィールドと exit_checklist フィールドを各マイルストーンに追加します。

前提条件

  • {base_directory}/implementation/milestones.yaml(/implementation-planner の出力)
    • id、name、description、success_criteria を含むマイルストーン定義が必要です
    • スキルによって、任意項目の acceptance_criteria フィールドと exit_checklist フィールドが追加されます
  • {base_directory}/requirements/business-requirements.yaml(/business-requirements-interview の出力)
  • 任意:NFR 由来のゲートに使用する {base_directory}/requirements/technical-requirements.yaml

使用方法

/definition-of-done [base-directory]

ディレクトリが指定されていない場合は、現在のディレクトリ内で implementation/milestones.yaml を探して自動検出します。

見つからない場合は、ユーザーに「計画成果物はどこにありますか?」と尋ねます。

続行する前に、ユーザーがパスを指定するまで待ちます。base_directory として保存します。

プロセス

ステップ 1:ベースディレクトリの特定と成果物の読み込み

ディレクトリパラメーターが指定されていない場合は、現在のディレクトリに implementation/milestones.yaml が存在するか確認します。

  • 見つかった場合は、現在のディレクトリを base_directory として使用します
  • 見つからない場合は、「計画成果物はどこにありますか?」と尋ね、ユーザーの回答を待ちます

base_directory が決定したら、次の処理を行います。

{base_directory}/implementation/milestones.yaml を読み込み、各マイルストーンの id、name、description と、deliverables または tasks の参照を抽出します。

{base_directory}/requirements/business-requirements.yaml を読み込み、各機能要件を、それを実現する可能性が最も高いマイルストーンに対応付けます。この判断にはマイルストーン名と説明を使用し、タスクレベルの詳細を推測しないでください。

{base_directory}/requirements/technical-requirements.yaml が存在する場合は、読み込んで非機能要件(パフォーマンス目標、セキュリティ要件、テストカバレッジのしきい値)を抽出します。

ステップ 2:マイルストーンごとの受け入れ基準を導き出す

各マイルストーンについて、次の 5 つのカテゴリで基準を作成します。

1. 機能要件 マイルストーンの完了時に満たされている必要がある、具体的で観察可能な動作です。このマイルストーンに対応付けられたビジネス要件から導き出してください。各基準は次の条件を満たす必要があります。

  • あいまいさなく検証できること(「ユーザーがメールアドレスとパスワードでログインできる」✓、「ログインが機能する」✗)
  • 可能な場合は要件 ID に関連付けること
  • 「Given/When/Then」形式、または現在形の宣言文で記述すること

2. 非機能要件 このマイルストーンの成果物に適用されるパフォーマンス、セキュリティ、信頼性、アクセシビリティの要件です。technical-requirements.yaml に NFR が存在する場合は、そこから抽出してください。このマイルストーンの範囲でテスト可能な NFR のみを含めてください。初期の基盤マイルストーンにシステム全体の SLA を適用しないでください。

3. テスト要件 このマイルストーンを完了とみなす前に必要なテストカバレッジです。

  • 新たに導入したモジュール/関数のユニットテストカバレッジ
  • 新たに越えるサービス境界がある場合の統合テスト
  • 提供するユーザー向けフローの E2E シナリオ
  • 回帰テスト:既存のテストが破損していないことの確認

4. ドキュメント要件 このマイルストーンで求められるドキュメント成果物です。

  • 複雑なロジックのインラインコードコメント
  • 新しいエンドポイントの API ドキュメント
  • セットアップ/使用方法に変更がある場合の README 更新
  • 構造に変更がある場合のアーキテクチャ図の更新

5. ワイヤーフレーム要件(UI マイルストーンのみ) このマイルストーンに UI コンポーネント(.tsx、.jsx、.vue ファイル)を作成または変更するタスクが含まれる場合は、次を追加します。

  • このマイルストーンのすべてのページについて、ワイヤーフレームのレビューと承認
  • コンポーネントの状態(空、読み込み中、エラー、成功)のドキュメント化
  • ワイヤーフレームに照らしたユーザーフローの検証 ux/wireframe-spec.yaml が存在し、has_ui_changes が true の場合にのみ、このセクションを含めてください。

6. 完了チェックリスト コードレビュー/マイルストーン承認で使用する、簡潔で具体的なチェックリストです。クイックリファレンスとして、上記の内容を「はい/いいえ」で確認できる項目にまとめます。

ステップ 3:マイルストーン間のゲートを特定する

要件が複数のマイルストーンにまたがる場合(例:「エンドツーエンド暗号化」に m1、m3、m5 での作業が必要な場合)は、マイルストーン間のゲートとして記載します。その要件全体を検証できるのは、その要件に関与する最後のマイルストーンのみです。中間の各マイルストーンに cross_milestone_note を追加してください。

ステップ 4:milestones.yaml を受け入れ基準で更新する

既存の {base_directory}/implementation/milestones.yaml ファイルを最後まで読み込みます。

milestones 配列内の各マイルストーンに、任意フィールドを 2 つ追加します。

  1. acceptance_criteria オブジェクト(5 つのカテゴリを含む):
acceptance_criteria:
  functional:
    - criterion: "[verifiable statement]"
      requirement_ref: "BR-FUNC-001"
  non_functional:
    - criterion: "[measurable threshold]"
      requirement_ref: "NFR-PERF-002"
  testing:
    unit: "[coverage expectation]"
    integration: "[test expectations or N/A]"
    e2e: "[E2E expectations or N/A]"
    regression: "All existing tests pass"
  documentation:
    - "[specific artifact]"
  cross_milestone_notes:
    - "[spanning requirement note]"  # if applicable
  1. 3~10 個の二択チェックを含む exit_checklist 配列:
exit_checklist:
  - "[ ] [Functional check with requirement ref]"
  - "[ ] All tests pass (≥X% coverage)"
  - "[ ] [Documentation check]"
  - "[ ] PR approved by at least one reviewer"

重要: milestones.yaml の既存フィールドはすべて保持してください。

  • version、project、generated、business_requirements、technical_requirements
  • ordering_strategy と ordering_rationale を含む meta セクション
  • 既存のすべてのマイルストーンフィールド:id、name、description、dependencies、estimated_duration、tasks_file、success_criteria
  • 存在する場合は任意の project_metadata

拡張した milestones.yaml を {base_directory}/implementation/milestones.yaml に書き戻します。

バックアップ戦略: 上書きする前に、タイムスタンプ付きで {base_directory}/implementation/milestones.yaml.backup にバックアップを作成します。

ステップ 5:ギャップ分析

milestones.yaml の更新後、以下の内容をインラインで報告します。

## Definition of Done Enhancement Complete

**Project:** [name]
**Milestones Enhanced:** [n]/[n]
**Functional Requirements Mapped:** [n]/[n]

**Acceptance Criteria Added:**
- Functional: [n] criteria across [n] milestones
- Non-Functional: [n] NFR criteria
- Testing: [n] milestones with test requirements
- Documentation: [n] milestones with doc requirements

**Criteria Quality:**
[✓ / ✗] All functional criteria are verifiable (no vague language)
[✓ / ✗] NFR criteria tied to specific thresholds (not just "must be fast")
[✓ / ✗] Every milestone has at least one testing requirement
[✓ / ✗] Cross-milestone requirements identified

**Unmapped Requirements:** [none / list requirements not tied to any milestone]

**Updated File:** implementation/milestones.yaml
**Backup Created:** implementation/milestones.yaml.backup.[timestamp]

**Recommendations:** [none / list]

出力形式

拡張された milestones.yaml の構造

このスキルでは、既存の milestones.yaml 内の各マイルストーンに、任意フィールドを 2 つ追加します。

拡張前:

milestones:
  - id: m1
    name: "User Authentication"
    description: |
      Build authentication system...
    dependencies: [m0]
    estimated_duration: "5-6 hours"
    tasks_file: milestone-m1.tasks.yaml
    success_criteria:
      - "Users can sign up and log in"
      - "Password security meets requirements"

拡張後:

milestones:
  - id: m1
    name: "User Authentication"
    description: |
      Build authentication system...
    dependencies: [m0]
    estimated_duration: "5-6 hours"
    tasks_file: milestone-m1.tasks.yaml
    success_criteria:
      - "Users can sign up and log in"
      - "Password security meets requirements"

    # NEW: Detailed acceptance criteria added by /definition-of-done
    acceptance_criteria:
      functional:
        - criterion: "Users can create account with email and password"
          requirement_ref: BR-FUNC-001
        - criterion: "Users can log in and receive JWT token valid for 24h"
          requirement_ref: BR-FUNC-002
      non_functional:
        - criterion: "Passwords hashed using bcrypt with cost factor ≥12"
          requirement_ref: NFR-SEC-001
        - criterion: "/auth/login responds within 300ms for 95% of requests"
          requirement_ref: NFR-PERF-001
      testing:
        unit: "≥85% coverage for auth service and JWT utilities"
        integration: "Test auth service ↔ user database interaction"
        e2e: "Happy path: signup → login → protected access → logout"
        regression: "All existing tests pass"
      documentation:
        - "API documentation for /auth/signup, /auth/login, /auth/logout"
        - "Authentication flow diagram"
      cross_milestone_notes:
        - "Role-based access control foundation in m1, full RBAC at m2"

    # NEW: Exit checklist added by /definition-of-done
    exit_checklist:
      - "[ ] Users can sign up and log in (BR-FUNC-001, BR-FUNC-002)"
      - "[ ] Password security meets requirements (bcrypt ≥12, NFR-SEC-001)"
      - "[ ] All unit tests pass with ≥85% coverage"
      - "[ ] Integration tests cover auth ↔ database"
      - "[ ] E2E test covers full signup → login flow"
      - "[ ] API documentation complete"
      - "[ ] PR approved by at least one reviewer"
保持されるフィールド

既存の milestones.yaml の内容はすべて保持されます。

  • ルートメタデータ:version、project、generated、business_requirements、technical_requirements
  • meta セクション:ordering_strategy、ordering_rationale
  • すべてのマイルストーンフィールド:id、name、description、dependencies、estimated_duration、tasks_file、success_criteria
  • オプションのセクション:overview、project_metadata、risks_and_mitigation
バックアップファイル

変更前に、タイムスタンプ付きのバックアップが作成されます。

  • 場所:{base_directory}/implementation/milestones.yaml.backup.YYYYMMDD-HHMMSS
  • 内容:拡張前の milestones.yaml の完全な原本

例

完全な acceptance_criteria と exit_checklist を含むマイルストーン m1 については、/docs/specifications/milestones/example.yaml を参照してください。

コメント