add-delivery-validation
Product validation: Requirements 100% implemented, prerequisites exist, acceptance criteria pass.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Product validation: Requirements 100% implemented, prerequisites exist, acceptance criteria pass.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | add-delivery-validation |
| description | Product validation: Requirements 100% implemented, prerequisites exist, acceptance criteria pass. |
Skill for PRODUCT validation — checks whether requirements were 100% implemented.
/add-done (final gate)/review (complementary)Difference from code-review:
| code-review (Technical) | delivery-validation (Product) |
|---|---|
| IoC, SOLID, security | RF/RN implemented? |
| Type contracts | Acceptance criteria passing? |
| Build compiles? | Functionality works end-to-end? |
| Technical patterns | Implicit dependencies created? |
Runtime arm — /add.qa: this skill validates delivery statically (reads the code/docs, checks the RF/RN checklist). /add.qa (the playwright plugin, opt-in) is the runtime arm of the same goal — it drives the running app to prove functional delivery against about.md acceptance criteria (and UX fidelity vs design.md), producing a _tests/run-NNN/qa-validation-NNN.md audit. Use them together when the feature has UI: this skill confirms the requirements exist in code; /add.qa confirms they actually work in the browser.
code-review instead)about.md# Identify current feature
FEATURE_ID=$(bash .codeadd/scripts/status.sh)
# Load specification
cat docs/features/${FEATURE_ID}/about.md
cat docs/features/${FEATURE_ID}/plan.md 2>/dev/null # Contracts (prose)
cat docs/features/${FEATURE_ID}/tasks.md 2>/dev/null # Tick state (## Acceptance Checklist)
Extract from about.md:
Extract contracts from plan.md (prose) + tick state from tasks.md → ## Acceptance Checklist:
From plan.md (prose): routes, services, DTOs, guards, migrations, queues — as defined in the plan.
From tasks.md → ## Acceptance Checklist: a checklist where each item ends with (RFNN/RNNN) reference and carries [ ]/[x]/[!] tick state set by add.build/add.autopilot validators.
Map each ## Acceptance Checklist item to the corresponding RF/RN from about.md. Use ## Requirements Coverage from tasks.md as a derived index — every RF/RN must have coverage by ≥1 item from ## Acceptance Checklist.
IF tasks.md or ## Acceptance Checklist does NOT exist (legacy feature, pre-PRD0014):
For EACH requirement, create a verifiable item:
## Requirements Checklist
### Functional Requirements
- [ ] **RF01:** [description] → [how to verify]
- [ ] **RF02:** [description] → [how to verify]
### Business Rules
- [ ] **RN01:** [condition] → [expected result]
- [ ] **RN02:** [condition] → [expected result]
### Acceptance Criteria
- [ ] [criterion 1] → [how to test]
- [ ] [criterion 2] → [how to test]
For EACH requirement, analyze implicit dependencies:
## Prerequisites Analysis
### RF01: "Check product tier before allowing download"
**Dependency analysis:**
1. Does Product need a `tier` field? → [VERIFY in model]
2. Is there a flow to assign tier? → [VERIFY endpoints]
3. Is tier already populated? → [VERIFY data]
**Status:**
- [ ] tier field exists on Product → ✅/❌
- [ ] Assignment flow exists → ✅/❌
- [ ] Data is consistent → ✅/❌
Key questions for each requirement:
For EACH item in ## Acceptance Checklist, cross-check tick state vs reality:
| Item (with RF/RN ref) | Tick state | Expected (from plan.md) | Found | Status |
|---|---|---|---|---|
| Route POST /billing/webhook/:provider returns 200 (RF02) | [x] | WebhookController.handleWebhook() | POST /webhook (fixed) | ⚠️ DIVERGENT |
| Service WebhookNormalizerService is provider-agnostic (RF02) | [!] | generic, provider-agnostic | StripeWebhookService | ❌ MISSING |
| DTO WebhookEventDto exposes {provider, payload, signature} (RF02) | [ ] | {provider, payload, signature} | WebhookDto {payload} | ⚠️ DIVERGENT |
Status per item:
[x] AND implementation matches plan.md prose[x] but implementation differs from plan.md (validator was wrong OR drift after tick)[!] (validator already marked failure) OR tick [ ] still pending[x] but code does not exist — blocks delivery; reopen tickMandatory cross-reference: Do all RF/RN from ## Requirements Coverage (tasks.md §1) have a corresponding item in ## Acceptance Checklist (tasks.md §4)?
For EACH checklist item (about.md + tasks.md → ## Acceptance Checklist):
grep -r "[key-term]" apps/ libs/ --include="*.ts")Output: validation-report.md
# Delivery Validation: [Feature]
**Date:** [date] | **Status:** ✅ APPROVED / ❌ BLOCKED
## Summary
| Total | Implemented | Partial | Missing | Prerequisites OK |
|-------|-------------|---------|---------|------------------|
| N | N | N | N | true/false |
---
## Functional Requirements
| ID | Requirement | Status | Note |
|----|-------------|--------|------|
| RF01 | [desc] | ✅ | Implemented at `path:line` |
| RF02 | [desc] | ❌ | Not found |
---
## Business Rules
| ID | Rule | Status | Note |
|----|------|--------|------|
| RN01 | [cond] → [result] | ✅ | Logic correct |
| RN02 | [cond] → [result] | ⚠️ | Missing edge case X |
---
## Prerequisites Analysis
| Requirement | Prerequisite | Status | Required Action |
|-------------|--------------|--------|-----------------|
| RF01 | tier field on Product | ❌ | Create field |
| RF01 | Assignment flow | ❌ | Create endpoint |
---
## Acceptance Criteria
- [x] [Criterion 1] - Passed
- [ ] [Criterion 2] - Failed: [reason]
---
## Identified Gaps
### Gap 1: [Title]
**Requirement:** RF01
**Problem:** [gap description]
**Impact:** [what does not work]
**Action:** [what needs to be done]
---
## Decision
**Status:** ✅ APPROVED / ⚠️ NEEDS WORK / ❌ BLOCKED
**If BLOCKED:**
- [ ] Implement [gap 1]
- [ ] Implement [gap 2]
**If APPROVED:**
Feature ready to merge.
| Severity | Meaning | Blocks merge? |
|---|---|---|
| ✅ Implemented | Requirement 100% met | No |
| ⚠️ Partial | Implemented but incomplete | No — may merge if documented (TODO for non-critical RN) |
| ❌ Missing | RF or critical RN not implemented | Yes — feature incomplete / incorrect behavior |
| 🔗 Prerequisite Missing | Dependency does not exist | Yes — cannot work without it |
Consolidated view of the add-pro ecosystem - commands, skills, relationships and dependencies. Loaded by /add as source of truth.
Source of truth for ADD doc rules, depth floors, IDs, refs, validation gate. Load before any doc write.
Use when running agent-judged QA validation (read-PNG by default; the playwright plugin adds live driving) — the Level C judge rubric, severity taxonomy, dual-judge (@ux-agent review ∥ @qa-agent) method, report schema/template, and the config.json/screens.json formats. Consumed by /add.qa and both judges.
Use when a state-materializing command starts or is asked to upgrade — reads the setup receipt, compares the recorded contract against the shipped one, executes the declared upgrade deltas sequentially, and rewrites the receipt even on a verified-current no-op. Consumed by /add.qa-setup STEP 1.5 and STEP 11.
Internal skill for developing ADD framework artefacts (commands, skills, agents, scripts). Use when add-framework--plan analyzes viability of new framework features, when add-framework--build implements framework artefacts, or when creating/modifying commands, skills, or agents. Always use this skill before proposing or implementing changes to the framework itself.
Use when building, styling, or theming UI components, pages, layouts, dashboards, charts, tables, or forms for SaaS products.