Use when validating ID consistency, checking for orphan references, or during gate validation. Also triggers when asking 'are all IDs connected', 'check traceability', 'find broken links', or 'verify the requirements chain'.
From pmnpx claudepluginhub etusdigital/etus-plugins --plugin pmThis skill uses the workspace's default tool permissions.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides implementation of event-driven hooks in Claude Code plugins using prompt-based validation and bash commands for PreToolUse, Stop, and session events.
This skill validates traceability — the ability to trace each requirement or feature from business objective (BO-#) through design (PRD-F-#, US-#, JOUR-#, FS-#) to implementation (impl-#). It detects:
This is a READ-ONLY validation skill. It runs in a forked context (Explore agent) with no write access. It returns a report of violations for the orchestrator or user to remediate.
Reference: .claude/skills/orchestrator/dependency-graph.yaml
BLOCKS: None — this is a validation tool. ENRICHES: None.
This skill validates the traceability chain. It supports two chains depending on the work mode:
ACT/JTBD/JOUR/UC/EDGE → BO-# → O-# → SOL-# → PRD-F-# → US-# → FS-{name}-# → impl-#ACT/JTBD/JOUR/UC/EDGE → SOL-# → FB-# → US-# → impl-#It scans existing documents and reports orphan IDs, broken links, and missing cross-references.
The expected ID chain is:
ACT-# / JTBD-# / JOUR-# / UC-# / EDGE-# (Ideation Coverage)
↓
BO-# (Business Objective)
↓
O-# (Opportunity)
↓
SOL-# (Selected Solution Direction)
↓
PRD-F-# (Product Requirement / Feature)
↓ ↘
US-# (User Story) JOUR-# (User Journey)
↓ ↗
FS-[name]-# (Feature Spec)
↓
impl-# (Implementation Item / Task)
Note: JOUR-# links to PRD-F-# through the Features column in journey steps. This creates a parallel traceability path: PRD-F-# → US-# (behavioral spec) AND PRD-F-# → JOUR-# (experience spec). Both paths converge at FS-# for implementation.
When Feature mode artifacts are detected (docs/ets/projects/{project-slug}/features/ contains feature-brief-*.md), validate this chain instead:
ACT-# / JTBD-# / JOUR-# / UC-# / EDGE-# (Ideation Coverage)
↓
SOL-# (Selected Solution Direction)
↓
FB-# (Feature Brief Item)
↓
US-# (User Story, scoped)
↓
impl-# (Implementation Item / Task)
Feature mode rules:
features/{feature-slug}/user-stories.md must reference FB-# (not PRD-F-#)features/{feature-slug}/impl-plan.md must reference US-# from the same slugEach ID should have:
Scan docs/ets/projects/{project-slug}/ for all ID patterns:
| Pattern | Regex | Location (Product mode) | Location (Feature mode) |
|---|---|---|---|
| ACT-# | ACT-\d+ | opportunity-pack.md | opportunity-pack.md |
| JTBD-# | JTBD-\d+ | opportunity-pack.md | opportunity-pack.md |
| BO-# | BO-\d{3} | project-context.md, prd.md | N/A |
| O-# | O-\d+ | ost.md | optional |
| SOL-# | SOL-\d+ | solution-discovery.md | solution-discovery.md |
| PRD-F-# | PRD-F-\d{3} | prd.md | N/A |
| FB-# | FB-\d+ | N/A | features/{feature-slug}/feature-brief.md |
| US-# | US-\d{3} | user-stories.md | features/{feature-slug}/user-stories.md |
| JOUR-# | JOUR-\d{2} | user-journey.md | N/A |
| UC-# | UC-\d+ | opportunity-pack.md | opportunity-pack.md |
| EDGE-# | EDGE-\d+ | opportunity-pack.md | opportunity-pack.md |
| NG-# | NG-\d+ | opportunity-pack.md, prd.md | opportunity-pack.md, feature-brief.md |
| FS-[name]-# | FS-[a-z]+-\d{3} | feature-spec-*.md | N/A |
| impl-# | impl-\d{3} | implementation-plan.md (authority), execution-status.yaml (optional projection) | features/{feature-slug}/impl-plan.md |
For each ID found, record:
Also compare the IDs found in documents against docs/ets/projects/{project-slug}/state/coverage-matrix.yaml when it exists:
meta.last_completed_step or meta.next_recommended_step contradict the actual coverage, flag the checkpoint as inconsistentworkflow_version requires solution discovery and no SOL-# exists, fail the chainCreate a directed graph:
For each ID:
O-# feed at least one SOL-#?SOL-# feed PRD-F-# or FB-#?For each NG-# found in upstream docs (opportunity-pack.md, feature-brief.md, prd.md):
"NG-{N} says '{statement}' but {doc} contains '{contradicting text}'"=== NG VIOLATIONS === sectionSeverity: NG violations are HIGH severity — they indicate the team is building something explicitly excluded from scope.
Special cases:
scope: deferred_to_v2 — still a violation if found in current-phase docs. Deferred means "not now," not "maybe."scope: conditional — check if the condition is met. If not met, treat as violation. If met, skip.Return a structured violation report:
Traceability Validation Report
Generated: [timestamp]
Scan Scope: docs/ets/projects/{project-slug}/
IDs Extracted: [count per type]
ACT-#: N
JTBD-#: M
BO-#: K
NG-#: J
PRD-F-#: L
US-#: P
FS-#: Q
impl-#: R
=== VIOLATIONS SUMMARY ===
Total Violations: Z
By Type:
Orphans: X
Broken Links: Y
Dead Ends: W
NG Violations: V
[etc.]
=== VIOLATIONS DETAIL ===
ORPHAN: US-001 (docs/ets/projects/{project-slug}/user-stories.md:42)
Description: "User can upload profile photo"
Issue: No upstream PRD-F-# reference
Remediation: Add "PRD-F-005" as upstream requirement
BROKEN LINK: FS-auth-003 (docs/ets/projects/{project-slug}/design/feature-spec-auth.md:88)
Description: "OAuth integration"
Issue: References US-999 which does not exist
Remediation: Update reference to existing US-# (e.g., US-012)
DEAD END: PRD-F-002 (docs/ets/projects/{project-slug}/prd.md:54)
Description: "Dark mode support"
Issue: No FS-#, US-#, or impl-# references
Remediation: Either (a) implement, or (b) descope from current phase
MISSING JOURNEY: PRD-F-003 (docs/ets/projects/{project-slug}/prd.md:67)
Description: "User onboarding flow"
Issue: Must Have feature not referenced in any JOUR-# step
Remediation: Add JOUR-# entry covering this feature's user experience
=== NG VIOLATIONS ===
NG VIOLATION: NG-1 (docs/ets/projects/{project-slug}/discovery/opportunity-pack.md:95)
Statement: "The system must NOT accept .xlsx files"
Contradicted by: docs/ets/projects/{project-slug}/features/{feature-slug}/user-stories.md:28
Contradicting text: "User uploads an Excel (.xlsx) file and sees a preview"
Severity: HIGH
Remediation: Either (a) remove the contradicting behavior from user-stories, or (b) create an ADR overriding NG-1
=== SUMMARY ===
✓ Pass: All IDs traceable
✗ Fail: Z violations found (see remediation steps above)
Completeness: X% (Y of Z expected IDs have full downstream)
docs/ets/projects/{project-slug}/| Violation | Root Cause | Remediation |
|---|---|---|
| Orphan US-# | Feature added without PRD-F-# | Write PRD-F-# or link to existing one |
| Broken Link | Typo in ID reference | Fix ID reference (e.g., US-101 → US-010) |
| Dead End PRD-F-# | Feature defined but never designed | Either (a) design and implement, or (b) move to backlog |
| Dead End FS-# | Feature spec written but never implemented | Create sprint task / impl-# item |
| Orphan impl-# | Implementation task without spec | Link to upstream FS-# or remove task |
For each EDGE-# found in discovery artifacts:
Report edge_resolution findings in the traceability report output. The CALLER (validate-gate or orchestrator) is responsible for persisting edge_resolution updates to coverage-matrix.yaml based on this report. check-traceability remains read-only.
docs/ets/projects/{project-slug}/.guides/id-scheme.md — Complete ID naming and traceability rulesdocs/ets/projects/{project-slug}/ids.yml — Centralized ID registry (optional, for validation)No input validation required — this skill scans whatever documents exist.
Minimum: at least product-vision.md (with BO-#) and one downstream document for meaningful traceability check.
The output is a traceability report. Validate:
docs/ets/projects/{project-slug}/| Error | Severity | Recovery | Fallback |
|---|---|---|---|
| No documents found | Info | Report "No documents to validate" | Exit cleanly |
| Only Phase 1 docs exist | Info | Report partial chain (BO-# only) | Note: "Downstream phases not yet generated" |
| ID format ambiguous | Low | Flag for user review | Skip ambiguous match |