ALWAYS invoke this skill when reviewing, auditing, or checking spec file conformance. NEVER check spec conformance without this skill.
From spec-treenpx claudepluginhub outcomeeng/claude --plugin spec-treeThis skill is limited to using the following tools:
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.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Check Spec Tree files for conformance to templates, atemporal voice, and content placement rules. Report non-conformances as facts. Do not suggest fixes, rate severity, or prioritize findings.
</objective><quick_start>
<SPEC_TREE_FOUNDATION> marker is present — if not, invoke /understanding firstspx/**/*.md (or user-specified scope)</quick_start>
<principles>.enabler and .outcome are recognized node types. Only .adr.md, .pdr.md, .prd.md/.product.md are recognized decision/product files. Anything else is "unrecognized.".md file in scope. Do not skip files. Do not sample.<SPEC_TREE_FOUNDATION> marker must be present. If absent, stop and instruct the user to invoke /understanding first.<accessing_references>
All conformance rules come from the understanding skill, a sibling directory to this skill.
<skill_location>
The understanding skill is a sibling directory to this skill. Its files are at:
${SKILL_DIR}/../understanding/
</skill_location>
<what_to_read>
References (conformance rules):
${SKILL_DIR}/../understanding/references/durable-map.md — <atemporal_voice> section: temporal markers table and read-aloud test${SKILL_DIR}/../understanding/references/what-goes-where.md — <common_misplacements> table: content in wrong artifact type${SKILL_DIR}/../understanding/references/node-types.md — <enabler> and <outcome> sections: directory suffix classificationTemplates (structural rules):
${SKILL_DIR}/../understanding/templates/decisions/decision-name.adr.md — required ADR sections${SKILL_DIR}/../understanding/templates/decisions/decision-name.pdr.md — required PDR sections${SKILL_DIR}/../understanding/templates/product/product-name.product.md — required product sections${SKILL_DIR}/../understanding/templates/nodes/enabler-name.md — required enabler sections${SKILL_DIR}/../understanding/templates/nodes/outcome-name.md — required outcome sections</what_to_read>
<troubleshooting>If you cannot find understanding's files:
${SKILL_DIR}/../understanding/references/*.md</accessing_references>
<file_classification>
Classify each .md file in scope by its filename extension or parent directory suffix:
| Pattern | Classification | Template |
|---|---|---|
*.adr.md | ADR | decision-name.adr.md |
*.pdr.md | PDR | decision-name.pdr.md |
*.prd.md or *.product.md | Product | product-name.product.md |
Spec file inside *.enabler/ directory | Enabler | enabler-name.md |
Spec file inside *.outcome/ directory | Outcome | outcome-name.md |
Any other .md file | Unrecognized | None |
Spec file means the file whose name matches the directory slug. Example: auth.md inside 10-auth.enabler/. Other .md files in the directory (like CLAUDE.md) are not spec files — skip them.
Unrecognized includes directories with suffixes like .capability, .feature, .story. These are not Spec Tree node types. Report the classification failure as a finding.
Files to skip entirely:
CLAUDE.md files (project configuration, not specs)tests/ directories (test code, not specs)</file_classification>
<conformance_dimensions>
<structural_conformance>
Compare each classified file's ## headings against its template's ## headings.
Report as findings:
## Purpose but file does not## Problem where template expects ## PurposeDo NOT report:
</structural_conformance>
<language_conformance>
Read the <atemporal_voice> section from durable-map.md. It provides two checking mechanisms:
A. Temporal markers table — The left column lists specific phrases to find. Scan every line for matches.
B. Read-aloud test — "Read any sentence aloud. If it would sound wrong after the work is done, it's temporal." Apply to each non-template sentence.
Common temporal patterns caught by the read-aloud test that may not appear in the markers table:
Report as findings:
(ref: atemporal_voice)Do NOT report:
{1-3 sentences: what concern...})</language_conformance>
<placement_conformance>
Read the <common_misplacements> table from what-goes-where.md. For each row, check whether the file contains content that belongs elsewhere.
Key signals:
| Signal in file | Wrong location | Correct location |
|---|---|---|
| Architecture choice or technical approach | Spec | ADR |
| Product decision or user guarantee | Spec | PDR |
| Outcome hypothesis (WE BELIEVE THAT...) | ADR or PDR | Outcome spec |
| Implementation detail (code patterns, APIs) | Spec | Code |
| "How to build it" | Spec | ADR or code |
| Cross-cutting invariant | Child spec | Ancestor spec or PDR |
Report as findings:
(ref: what-goes-where)</placement_conformance>
</conformance_dimensions>
<workflow><SPEC_TREE_FOUNDATION> marker. If absent, stop: "Invoke /understanding first."<accessing_references> from the understanding skill's directory.spx/ in the project root.{scope}/**/*.md to find all markdown files. Exclude CLAUDE.md files and files inside tests/ directories.<file_classification>.<report_format>.<report_format>
## Alignment Report: {scope}
### {file path}
Classification: {type}
Structural:
- {finding}
Language:
- Line {N}: "{text}" — {rule violated} (ref: atemporal_voice)
Placement:
- {finding} (ref: what-goes-where)
---
{N} files checked. {M} findings across {K} files.
Formatting rules:
"0 findings."Classification: Unrecognized — {reason}</report_format>
<success_criteria>
<SPEC_TREE_FOUNDATION> marker verified present.md file in scope classified or reported as unrecognized</success_criteria>