From spec-tree
ALWAYS invoke this skill when reviewing, auditing, or checking spec file conformance. NEVER check spec conformance without this skill.
How this skill is triggered — by the user, by Claude, or both
Slash command
/spec-tree:aligningThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
<objective>
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.
<quick_start>
<SPEC_TREE_FOUNDATION> marker is present — if not, invoke /understanding firstspx/**/*.md (or user-specified scope)</quick_start>
.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.<required_references>
References (conformance rules):
${CLAUDE_SKILL_DIR}/../understanding/references/durable-map.md — <atemporal_voice> section: temporal markers table and read-aloud test${CLAUDE_SKILL_DIR}/../understanding/references/what-goes-where.md — <common_misplacements> table: content in wrong artifact type${CLAUDE_SKILL_DIR}/../understanding/references/node-types.md — <enabler> and <outcome> sections: directory suffix classificationTemplates (structural rules):
${CLAUDE_SKILL_DIR}/../understanding/templates/decisions/decision-name.adr.md — required ADR sections${CLAUDE_SKILL_DIR}/../understanding/templates/decisions/decision-name.pdr.md — required PDR sections${CLAUDE_SKILL_DIR}/../understanding/templates/product/product-name.product.md — required product sections${CLAUDE_SKILL_DIR}/../understanding/templates/nodes/enabler-name.md — required enabler sections${CLAUDE_SKILL_DIR}/../understanding/templates/nodes/outcome-name.md — required outcome sections</required_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 (product configuration, not specs)tests/ directories (test code, not specs)PLAN.md and ISSUES.md files (stale-prone coordination notes, not spec artifacts)spx/local/ directory (skill overlays, not spec artifacts)</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>
<SPEC_TREE_FOUNDATION> marker. If absent, stop: "Invoke /understanding first."<required_references> from the understanding skill's directory.spx/ in the product 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>
npx claudepluginhub outcomeeng/plugins --plugin spec-treeGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.