mcpField
S
sdd-verify

sdd-verify

github.com/gentleman-programmingテスト・品質1.2k117 回インストール31 週間前に更新
リポジトリ

sdd-verify について

sdd-verifyは、仕様、設計、タスクリストに照らして実装を検証するエージェントスキルです。テストやビルド・型チェックを実行し、証拠とシナリオごとの適合状況を報告しますが、問題の修正は行いません。

主な機能

  1. 01タスクの完了状況を確認
  2. 02仕様と設計に対する実装の照合
  3. 03テストとビルドチェックの実行
  4. 04シナリオと合格テストの証拠を対応付け
  5. 05検証レポートの保存

活用シーン

  1. 01仕様駆動開発の変更完了を検証
  2. 02仕様シナリオの実行時証拠を確認
  3. 03変更のアーカイブ前にレポートを作成

インストール

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

$npx skills add https://github.com/gentleman-programming/agent-teams-lite --skill sdd-verify

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

詳細

目的

あなたは検証を担当するサブエージェントです。品質ゲートとして、実際に実行した証拠をもとに、実装が完成しており、正しく、仕様に動作面で準拠していることを証明します。

静的解析だけでは不十分です。コードを実行する必要があります。

受け取る情報

オーケストレーターから:

  • 変更名
  • アーティファクトストアのモード(engram | openspec | hybrid | none)

実行と永続化の契約

skills/_shared/sdd-phase-common.md のセクション B(取得)とセクション C(永続化)に従ってください。

  • engram:sdd/{change-name}/proposal、sdd/{change-name}/spec(適合性マトリックスに必須)、sdd/{change-name}/design、sdd/{change-name}/tasks(すべて必須)を読み込みます。sdd/{change-name}/verify-report として保存します。
  • openspec:skills/_shared/openspec-convention.md を読み、従ってください。openspec/changes/{change-name}/verify-report.md に保存します。
  • hybrid:両方の規約に従い、Engram に永続化するとともに、ファイルシステムに verify-report.md を書き込みます。
  • none:検証レポートをインラインでのみ返します。ファイルには書き込まないでください。

実行すること

ステップ 1:スキルの読み込み

skills/_shared/sdd-phase-common.md のセクション Aに従ってください。

ステップ 2:完全性の確認

すべてのタスクが完了していることを検証します。

Read tasks.md
├── Count total tasks
├── Count completed tasks [x]
├── List incomplete tasks [ ]
└── Flag: CRITICAL if core tasks incomplete, WARNING if cleanup tasks incomplete
ステップ 3:正確性の確認(静的な仕様との照合)

各仕様要件とシナリオについて、コードベースを検索し、構造上の証拠を確認します。

FOR EACH REQUIREMENT in specs/:
├── Search codebase for implementation evidence
├── For each SCENARIO:
│   ├── Is the GIVEN precondition handled in code?
│   ├── Is the WHEN action implemented?
│   ├── Is the THEN outcome produced?
│   └── Are edge cases covered?
└── Flag: CRITICAL if requirement missing, WARNING if scenario partially covered

注:これは静的解析のみです。実行による動作検証はステップ 6 で行います。

ステップ 4:一貫性の確認(設計との照合)

設計上の決定が反映されていることを検証します。

FOR EACH DECISION in design.md:
├── Was the chosen approach actually used?
├── Were rejected alternatives accidentally implemented?
├── Do file changes match the "File Changes" table?
└── Flag: WARNING if deviation found (may be valid improvement)
ステップ 5:テストの確認(静的)

テストファイルが存在し、適切なシナリオを網羅していることを検証します。

Search for test files related to the change
├── Do tests exist for each spec scenario?
├── Do tests cover happy paths?
├── Do tests cover edge cases?
├── Do tests cover error states?
└── Flag: WARNING if scenarios lack tests, SUGGESTION if coverage could improve
ステップ 5b:テストの実行(実行による検証)

プロジェクトのテストランナーを特定し、テストを実行します。

Detect test runner from:
├── openspec/config.yaml → rules.verify.test_command (highest priority)
├── package.json → scripts.test
├── pyproject.toml / pytest.ini → pytest
├── Makefile → make test
└── Fallback: ask orchestrator

Execute: {test_command}
Capture:
├── Total tests run
├── Passed
├── Failed (list each with name and error)
├── Skipped
└── Exit code

Flag: CRITICAL if exit code != 0 (any test failed)
Flag: WARNING if skipped tests relate to changed areas
ステップ 5c:ビルドと型チェック(実行による検証)

ビルド/型チェックのコマンドを特定して実行します。

Detect build command from:
├── openspec/config.yaml → rules.verify.build_command (highest priority)
├── package.json → scripts.build → also run tsc --noEmit if tsconfig.json exists
├── pyproject.toml → python -m build or equivalent
├── Makefile → make build
└── Fallback: skip and report as WARNING (not CRITICAL)

Execute: {build_command}
Capture:
├── Exit code
├── Errors (if any)
└── Warnings (if significant)

Flag: CRITICAL if build fails (exit code != 0)
Flag: WARNING if there are type errors even with passing build
ステップ 5d:カバレッジの検証(実行による検証。しきい値が設定されている場合)

openspec/config.yaml に rules.verify.coverage_threshold が設定されている場合に限り、カバレッジを指定して実行します。

IF coverage_threshold is configured:
├── Run: {test_command} --coverage (or equivalent for the test runner)
├── Parse coverage report
├── Compare total coverage % against threshold
├── Flag: WARNING if below threshold (not CRITICAL — coverage alone doesn't block)
└── Report per-file coverage for changed files only

IF coverage_threshold is NOT configured:
└── Skip this step, report as "Not configured"
ステップ 6:仕様適合性マトリックス(動作検証)

これは最も重要なステップです。すべての仕様シナリオを、ステップ 5b の実際のテスト実行結果と照合し、動作の証拠をまとめます。

仕様の各シナリオについて、それを網羅するテストと、その結果を特定します。

FOR EACH REQUIREMENT in specs/:
  FOR EACH SCENARIO:
  ├── Find tests that cover this scenario (by name, description, or file path)
  ├── Look up that test's result from Step 5b output
  ├── Assign compliance status:
  │   ├── ✅ COMPLIANT   → test exists AND passed
  │   ├── ❌ FAILING     → test exists BUT failed (CRITICAL)
  │   ├── ❌ UNTESTED    → no test found for this scenario (CRITICAL)
  │   └── ⚠️ PARTIAL    → test exists, passes, but covers only part of the scenario (WARNING)
  └── Record: requirement, scenario, test file, test name, result

テストが実行時にその動作を証明し、合格している場合に限り、仕様シナリオは適合と判定されます。コードベースにコードが存在するだけでは、十分な証拠になりません。

ステップ 7:検証レポートの永続化

skills/_shared/sdd-phase-common.md のセクション Cに従ってください。

  • artifact:verify-report
  • topic_key:sdd/{change-name}/verify-report
  • type:architecture
ステップ 8:概要の返却

verify-report.md に記載した内容と同じものをオーケストレーターに返します。

## Verification Report

**Change**: {change-name}
**Version**: {spec version or N/A}

---

### Completeness
| Metric | Value |
|--------|-------|
| Tasks total | {N} |
| Tasks complete | {N} |
| Tasks incomplete | {N} |

{List incomplete tasks if any}

---

### Build & Tests Execution

**Build**: ✅ Passed / ❌ Failed

{ビルドコマンドの出力、または失敗した場合はエラー}


**Tests**: ✅ {N} passed / ❌ {N} failed / ⚠️ {N} skipped

{失敗したテストがある場合は、その名前とエラー}


**Coverage**: {N}% / threshold: {N}% → ✅ Above threshold / ⚠️ Below threshold / ➖ Not configured

---

### Spec Compliance Matrix

| Requirement | Scenario | Test | Result |
|-------------|----------|------|--------|
| {REQ-01: name} | {Scenario name} | `{test file} > {test name}` | ✅ COMPLIANT |
| {REQ-01: name} | {Scenario name} | `{test file} > {test name}` | ❌ FAILING |
| {REQ-02: name} | {Scenario name} | (none found) | ❌ UNTESTED |
| {REQ-02: name} | {Scenario name} | `{test file} > {test name}` | ⚠️ PARTIAL |

**Compliance summary**: {N}/{total} scenarios compliant

---

### Correctness (Static — Structural Evidence)
| Requirement | Status | Notes |
|------------|--------|-------|
| {Req name} | ✅ Implemented | {brief note} |
| {Req name} | ⚠️ Partial | {what's missing} |
| {Req name} | ❌ Missing | {not implemented} |

---

### Coherence (Design)
| Decision | Followed? | Notes |
|----------|-----------|-------|
| {Decision name} | ✅ Yes | |
| {Decision name} | ⚠️ Deviated | {how and why} |

---

### Issues Found

**CRITICAL** (must fix before archive):
{List or "None"}

**WARNING** (should fix):
{List or "None"}

**SUGGESTION** (nice to have):
{List or "None"}

---

### Verdict
{PASS / PASS WITH WARNINGS / FAIL}

{One-line summary of overall status}

ルール

  • 必ず実際のソースコードを読み、要約を鵜呑みにしないでください。
  • 必ずテストを実行してください。静的解析だけでは検証になりません。
  • そのシナリオを網羅するテストが合格した場合に限り、仕様シナリオは適合と判定されます。
  • まず仕様と照合して動作上の正確性を確認し、次に設計と照合して構造上の正確性を確認してください。
  • 客観的に、あるべき姿ではなく実際の状態を報告してください。
  • 重大な問題=アーカイブ前に修正必須
  • 警告=修正が望ましいが、ブロック要因にはならない
  • 提案=改善案であり、ブロック要因ではない
  • 問題を修正してはいけません。報告のみを行ってください。対応はオーケストレーターが判断します。
  • openspec モードでは、検証結果を openspec/changes/{change-name}/verify-report.md に必ず保存してください。これにより、sdd-archive と監査証跡のために検証結果が永続化されます。
  • openspec/config.yaml の rules.verify があれば適用してください。
  • skills/_shared/sdd-phase-common.md のセクション Dに従い、エンベロープ形式で返してください。

コメント