Cross-validate YAML implementation artifacts against intent constraints for coverage, compartmentalization, audience separation, and structural completeness
Scanned 9/10/2026
Install to Claude Code
npx -y skills add kapilvirenahuja/garura --skill validate-implementation-design --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Validate Implementation Design?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/kapilvirenahuja-validate-implementation-design)More formats (shields.io, HTML) on the badges page.
---
name: validate-implementation-design
description: Cross-validate YAML implementation artifacts against intent constraints for coverage, compartmentalization, audience separation, and structural completeness
user-invocable: false
model: sonnet
allowed-tools: Read
deprecated: true
deprecated_note: '#434 ProductOS realignment — superseded by the command model; retained for Phase E reference, not installed'
---
# validate-implementation-design
Model-invocable skill for cross-validating YAML implementation design artifacts against intent constraints and failure conditions.
## Purpose
Read and evaluate YAML implementation artifacts (features.yaml, architecture.yaml, tech.yaml, scenarios.yaml, plan.yaml) against intent constraints and failure conditions. Returns a structured validation_result with per-check outcomes and classified issues. Does NOT modify any artifact.
You DO the validation. You do NOT modify any artifact or decide what happens next.
## Input
Receive from agent:
- `features_path` — (required) Full path to features.yaml
- `architecture_path` — (required) Full path to architecture.yaml
- `tech_path` — (required) Full path to tech.yaml
- `scenarios_path` — (required) Full path to scenarios.yaml
- `plan_path` — (required) Full path to plan.yaml
## Process
1. **Read all artifacts.** Read all five paths. If any artifact is not found, return structured failure identifying the missing artifact(s). All five must be present to proceed.
2. **Check status.** If all artifacts are LOCKED, return structured failure: "All artifacts are already LOCKED — no validation needed."
3. **Run validation checks.** Run all 14 checks below. Each check maps to a specific constraint or failure condition.
---
### V1 — Features artifact has no tech refs
Scan `features.yaml` — specifically the `identity`, `invariants`, `scope`, and `features` sections (including all `behaviors` and `constraints` sub-fields) — for technology names, SDK references, database product names, hosting platform names, library names, or deployment patterns. The features artifact must describe behaviors, invariants, and scope only — no technology-specific terms.
- **PASS:** Zero technology references found in features.yaml
- **FAIL:** One or more technology references found (list each field path and value)
---
### V2 — architecture.yaml has concrete tech names
Scan the `stack` section of `architecture.yaml` for vague technology references — terms like "a relational database," "a web framework," "an LLM provider," "a hosting platform," or any unnamed technology placeholder. Every `stack` entry must have a specific `technology` value (e.g., "React 19", "Python 3.12", "Claude Sonnet 3.5"). Check `platforms` and `integrations` sections similarly for named providers.
- **PASS:** Every stack component names a concrete technology; every platform and integration names a specific provider
- **FAIL:** One or more vague technology references found (list each `stack[].technology` or `platforms[].platform` value that is vague)
---
### V3 — tech.yaml has project structure with file paths
Verify `tech.yaml` has a `project_structure` section with at least one entry in `directories` or `key_files`, and that each entry has a non-empty `path` field. Also verify the `components` section has at least one component with a non-empty `key_files` list.
- **PASS:** `project_structure` is present with at least one directory or key file; at least one component has key_files
- **FAIL:** `project_structure` is absent or empty, or no component has key_files (describe the gap)
---
### V4 — tech.yaml has libraries with versions
Verify `tech.yaml` has a `libraries` section with at least one entry, and that every library entry has a non-empty `version` field. A library entry with a missing or blank `version` is a violation.
- **PASS:** `libraries` section is present with at least one entry; every entry has a non-empty version
- **FAIL:** `libraries` section is absent, or one or more library entries are missing `version` (list the library names)
---
### V5 — scenarios.yaml has feature back-links on every scenario
Scan every scenario within every group in `scenarios.yaml`. Each scenario must have a `feature_ref` field that references a feature ID defined in `features.yaml`. A scenario with a missing, blank, or unresolvable `feature_ref` is a violation.
- **PASS:** Every scenario has a `feature_ref` that resolves to a feature in features.yaml
- **FAIL:** One or more scenarios are missing `feature_ref` or reference a non-existent feature ID (list the scenario IDs)
---
### V6 — scenarios.yaml feature_gates covers all features in features.yaml
Extract all feature IDs from `features.yaml.features`. Extract all `feature_ref` values from `scenarios.yaml.feature_gates`. Every feature that appears in features.yaml must have a corresponding entry in `scenarios.yaml.feature_gates`. A feature with no gate entry means it has no defined completion criteria.
- **PASS:** Every feature ID in features.yaml has a corresponding entry in scenarios.yaml feature_gates
- **FAIL:** One or more feature IDs from features.yaml are absent from scenarios.yaml feature_gates (list the missing feature IDs)
---
### V7 — plan.yaml has no scenario descriptions, only IDs in scenario_gate
Scan the `execution_order` section of `plan.yaml`. For each entry, inspect the `scenario_gate` field. The `scenario_gate.scenario_ids` must contain only scenario ID values (e.g., "SC-AUTH-001") — not scenario descriptions, titles, or copied text from scenarios.yaml. Any scenario description appearing in plan.yaml is a compartmentalization violation.
- **PASS:** All `scenario_gate.scenario_ids` values are scenario ID strings only
- **FAIL:** One or more scenario_gate entries contain descriptive text instead of IDs (list the offending execution_order entries)
---
### V8 — No audience collision across artifacts
Check each artifact for content that belongs to a different artifact's audience:
- `features.yaml` (product stakeholders) must not contain architecture or technology content
- `architecture.yaml` (architects) must not contain feature behavior descriptions or scenario content
- `tech.yaml` (implementers) must not contain business goals, market context, or scenario descriptions
- `scenarios.yaml` (validators) must not contain implementation details, file paths, or architecture decisions
- `plan.yaml` (implementers) must not contain scenario descriptions — only IDs
- **PASS:** No audience collision detected
- **FAIL:** One or more audience collisions found (list artifact, field path, and offending content)
---
### V9 — plan.yaml summary cumulative count matches total scenarios
In `plan.yaml`:
- Sum all `scenario_gate.count` values across all entries in `execution_order`. This is the declared scenario total.
- Check `summary.total_scenarios` — it must equal the sum computed above.
- Check `summary.per_feature` — for each entry, `cumulative_scenarios` must equal the running total of scenario counts up to and including that sequence position.
- **PASS:** `summary.total_scenarios` equals sum of all `scenario_gate.count` values; cumulative counts are correct
- **FAIL:** Mismatch found (state the computed value, the declared value, and the discrepancy)
---
### V10 — plan.yaml every feature has observable exit gate
For every entry in `plan.yaml.execution_order`, verify the `exit_gate` field has a non-empty `description` and `observable: true`. An exit gate referencing process steps ("complete the tests", "finish the code") instead of observable outcomes ("user can log in via OAuth, session persisted") is a violation. Also check `prerequisites.exit_gate` exists.
- **PASS:** Every execution_order entry has an exit gate with observable: true and a concrete description; prerequisites has an exit gate
- **FAIL:** One or more entries lack an exit gate, have observable: false, or have vague process-step descriptions (identify the entry)
---
### V11 — Every scenario appears in exactly one feature_gate scenario_gate
Cross-check `scenarios.yaml` and `plan.yaml`:
1. Extract all scenario IDs from `scenarios.yaml` (every `scenario.id` across all groups).
2. Extract all scenario IDs referenced in `plan.yaml.execution_order[*].scenario_gate.scenario_ids`.
3. Every scenario ID from scenarios.yaml must appear in exactly one plan.yaml scenario_gate — not zero, not two.
- **PASS:** Every scenario ID from scenarios.yaml appears in exactly one plan.yaml scenario_gate
- **FAIL:** Scenario IDs appearing in zero plan gates (not mapped) or in multiple plan gates (list the IDs and their occurrences)
---
### V12 — plan.yaml has at least 2 features in execution_order
Verify `plan.yaml.execution_order` contains at least 2 entries (each entry represents one feature slice). A plan with fewer than 2 features in execution order is structurally incomplete.
- **PASS:** `execution_order` has 2 or more entries
- **FAIL:** `execution_order` has fewer than 2 entries (state the actual count)
---
### V13 — architecture.yaml has agentic PCAM section (if product has agentic components)
Inspect `architecture.yaml`. If `agentic` is present as a non-empty section, verify it contains all four PCAM sub-sections (`perception`, `cognition`, `action`, `memory`) each with at least one entry. If `agentic` is absent or null, check whether any `stack`, `platforms`, or `integrations` entry suggests an agentic component (e.g., an LLM, Claude, GPT, agent framework). If agentic signals exist in the stack but the `agentic` section is absent, that is a violation.
- **PASS:** No agentic signals detected (non-agentic product), OR agentic section is present with all four PCAM sub-sections populated
- **FAIL:** Agentic signals detected in stack/platforms but `agentic` section is absent, OR `agentic` section is present but missing one or more PCAM sub-sections (identify what's missing)
- **SKIP:** If this check is not applicable (no agentic signals at all and no agentic section), mark as PASS with note "Non-agentic product — check not applicable"
---
### V14 — features.yaml blast_radius present on every feature
Scan every entry in `features.yaml.features`. Each feature must have a `blast_radius` field present. The field CAN be null or have empty arrays — the field's existence is what matters. A feature entry with no `blast_radius` key at all is a violation.
- **PASS:** Every feature entry has a `blast_radius` field (value may be null or empty)
- **FAIL:** One or more features are missing the `blast_radius` field entirely (list the feature IDs)
---
4. **Classify issues.** For each failed check, classify severity:
- `blocker` — Constraint violation or failure condition triggered (any V1–V14 FAIL)
- `warning` — Content is present but sparse, ambiguous, or borderline
- `suggestion` — Improvement opportunity that does not block locking
5. **Determine ready_for_lock.** `true` only if all 14 checks pass AND no blocker-severity issues exist.
## Output
```yaml
validation_result:
ready_for_lock: true|false
checks:
- check_id: "V1"
name: "Features artifact has no tech refs"
status: "PASS|FAIL"
details: "{description of findings}"
- check_id: "V2"
name: "architecture.yaml has concrete tech names"
status: "PASS|FAIL"
details: "{description of findings}"
- check_id: "V3"
name: "tech.yaml has project structure with file paths"
status: "PASS|FAIL"
details: "{description of findings}"
- check_id: "V4"
name: "tech.yaml has libraries with versions"
status: "PASS|FAIL"
details: "{description of findings}"
- check_id: "V5"
name: "scenarios.yaml has feature back-links on every scenario"
status: "PASS|FAIL"
details: "{description of findings}"
- check_id: "V6"
name: "scenarios.yaml feature_gates covers all features"
status: "PASS|FAIL"
details: "{description of findings}"
- check_id: "V7"
name: "plan.yaml has only scenario IDs in scenario_gate"
status: "PASS|FAIL"
details: "{description of findings}"
- check_id: "V8"
name: "No audience collision across artifacts"
status: "PASS|FAIL"
details: "{description of findings}"
- check_id: "V9"
name: "plan.yaml summary cumulative count matches total scenarios"
status: "PASS|FAIL"
details: "{description of findings}"
- check_id: "V10"
name: "plan.yaml every feature has observable exit gate"
status: "PASS|FAIL"
details: "{description of findings}"
- check_id: "V11"
name: "Every scenario appears in exactly one feature_gate scenario_gate"
status: "PASS|FAIL"
details: "{description of findings}"
- check_id: "V12"
name: "plan.yaml has at least 2 features in execution_order"
status: "PASS|FAIL"
details: "{description of findings}"
- check_id: "V13"
name: "architecture.yaml has agentic PCAM section"
status: "PASS|FAIL|SKIP"
details: "{description of findings}"
- check_id: "V14"
name: "features.yaml blast_radius present on every feature"
status: "PASS|FAIL"
details: "{description of findings}"
issues:
- message: "{description of issue}"
check_id: "{V1-V14}"
severity: "blocker|warning|suggestion"
```
**IMPORTANT**: This skill produces validation results. The calling agent receives this output and decides what to do next. Do NOT instruct the agent to return or stop.
## Constraints
- NEVER modify any artifact — read-only across all five inputs
- NEVER approve lock (ready_for_lock: true) when any check has FAIL status or blocker-severity issues exist
- ALWAYS return all 14 checks with status, even if the check passes trivially
- ALWAYS list every individual violation in the issues array — do not summarize multiple violations into a single issue
- V13 may return PASS with a "not applicable" note for non-agentic products — this is not a skip in the ready_for_lock sense
## Version
| Field | Value |
|-------|-------|
| Version | 2.0.0 |
| Category | analysis |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!