engineer/skills/consistency-check/SKILL.md
Use to validate DAE artifacts for schema correctness and cross-artifact consistency. Triggers — "/engineer.consistency-check", "check consistency", "validate the artifacts", "are the specs and ACs in sync", "audit this feature".
npx skillsauth add swingerman/atdd consistency-checkInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Cross-artifact validation for DAE — the methodology's take on Speckit's /analyze. Read-only: reports inconsistencies and suggests fixes; never mutates. Any agent may run it (mechanical validation, not judgment-heavy verification). checkpoint: null.
Before major pipeline transitions and as a CI gate.
/engineer.consistency-check <slug> — one feature's artifacts/engineer.consistency-check --project — project-wide invariantsNot for: fixing inconsistencies (run the suggested fix skill); within-one-artifact ambiguity (clarify); code risk (crap-analyzer).
${CLAUDE_PLUGIN_ROOT}/scripts/dae_resolve.py (see references/resolving.md). Feature scope: load every artifact in features/NNN-<slug>/ + CHARTER.md. Project scope: load CHARTER.md + every feature.md frontmatter. For identifier lookups (does symbol X actually exist in the code?), prefer LSP find-definitions / workspace-symbols when an LSP MCP capability is available; fall back to grep + Read otherwise. See ${CLAUDE_PLUGIN_ROOT}/references/code-lookup.md.| Check | Severity |
|-------|----------|
| feature.md slug matches folder name | error |
| feature.md mandatory frontmatter present; status: ready ⇒ autonomy_level set | error |
| acs.md AC IDs unique + sequential; ac_count matches actual | error |
| acs.md ACs in domain language (implementation-leakage heuristic) | warning |
| acs.md ACs cover the feature.md outcome | warning |
| relevant_adrs reference ADRs that exist | error |
| spec.md and .build/spec.json agree | error |
| plan.md Charter Check: every ⚠️ deviation has a matching amendment | error |
| Validation method honored? — if feature.md declares a non-default validation_method, plan.md's Test strategy section must reference it (canary phase, dashboard names, rollback trigger, etc. as relevant) | warning |
| Verification handoffs: agent_id ≠ implementer's (Principle 7) | error |
| tracker_ref resolves on the configured tracker | warning |
| Handoff completeness: no checkpoint marked done in progress.md lacks a complete handoff | error |
| parent_feature set ⇒ parent exists and lists this in child_features | error |
The handoff-completeness check is the after-the-fact sweep for handoff-as-gate
(Foundation Design Section 5): run ${CLAUDE_PLUGIN_ROOT}/scripts/dae_handoff.py <feature-dir> — it flags any checkpoint marked done with a missing,
interrupted, or unmet-exit_criteria handoff.
| Check | Severity |
|-------|----------|
| CHARTER.md section 5 roles == manifest.team.default_roles | error |
| manifest.yml schema valid; enum values legal | error |
| Feature folder numbering monotonic; no reuse | error |
| ADR not referenced by any feature in N months (N from manifest, default 6) | warning |
| Every features/*/ has a non-empty feature.md | warning |
| team.default_roles includes verifier when independence enforced | error |
Emit per ${CLAUDE_PLUGIN_ROOT}/references/handoff-summary.md. checkpoint: null; artifacts: []. Feature scope → handoff in that feature's handoffs/; --project scope → handoff in .engineer/handoffs/. Any errors → human_action_needed: yes. recommended_next: resolve via clarify / feature-edit / plan, then re-run.
tracker_ref resolutiondata-ai
Use immediately after a PR is merged to clean up the local feature branch and resync main. Triggers — "/engineer.post-merge", "did we merge", "did we push", "PR merged", "post-merge cleanup", or right after a `gh pr merge` succeeds in the same session.
data-ai
Use to drive a bug fix from first report through close, with a "why didn't we catch it?" loop at the end. Triggers — "/engineer.fix", "a bug came in", "this is broken", "a user reported X", "there's a defect", "we have a regression", "this needs a fix", "another report", "more issues", "still failing", "validation failed again", "another bug", "next defect", "more fixes".
testing
Use mid-task when the working thread is lost — after a context compaction, a long agent run, or coming back to a feature unsure of the role, the current checkpoint, or the next action. Triggers — "/engineer.reorient", "reorient", "re-anchor", "what should I be doing right now", "I lost track", "where was I".
development
Use to check a feature's code against the charter's architecture rules — dependency layering, cycles, forbidden patterns, file naming, file size. Triggers — "/engineer.arch-check", "architecture check", "check architecture fitness", "does this follow the charter", "check layering".