<< All versions

Skill v1.0.0

currentAutomated scan100/100
swingerman/engineer/consistency-check
──Details
PublishedOctober 25, 2026 at 10:07 PM
Content Hashsha256:f46e4f5bf653be93...
Git SHA23be25afcf6d
──Files
Files (1 file, 5.2 KB)
SKILL.md5.2 KBactive
SKILL.md · 74 lines · 5.2 KB

version: "1.0.0" name: consistency-check description: 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".


consistency-check

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.

When to use

Before major pipeline transitions and as a CI gate.

  • Feature scope — /engineer.consistency-check <slug> — one feature's artifacts
  • Project scope — /engineer.consistency-check --project — project-wide invariants

Not for: fixing inconsistencies (run the suggested fix skill); within-one-artifact ambiguity (clarify); code risk (crap-analyzer).

Workflow

  1. Resolve + load — resolve the methodology root + manifest via ${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.

1.5. Run the mechanical checks first — ${CLAUDE_PLUGIN_ROOT}/scripts/dae_ontology.py <feature-dir> (or --project). It executes every constraint that is a set operation over structured data — enumerations, functional properties, parent/child inverses, cycle detection, AC↔scenario coverage closure, Principle 7 disjointness — deterministically. Take its findings as given; do not re-derive them by reading the artifacts. They are tagged in the tables below as (ontology). See ${CLAUDE_PLUGIN_ROOT}/references/ontology.md.

  1. Run the judgment checks (below) — the rows the script cannot decide.
  2. Report — errors first, then warnings; each with location + a suggested fix (which skill to run). Do not apply fixes.
  3. Handoff — emit a summary.

Feature-scope checks

CheckSeverity
feature.md slug matches folder name (ontology)error
feature.md mandatory frontmatter present; status: ready ⇒ autonomy_level set (ontology)error
acs.md AC IDs unique + sequential; ac_count matches actual (ontology)error
Every AC has a covering @AC-N spec scenario; no scenario tags an AC that doesn't exist (ontology)error
acs.md ACs in domain language (implementation-leakage heuristic)warning
acs.md ACs cover the feature.md outcomewarning
relevant_adrs reference ADRs that existerror
spec.md and .build/spec.json agreeerror
plan.md Charter Check: every ⚠️ deviation has a matching amendmenterror
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) (ontology)error
tracker_ref resolves on the configured trackerwarning
Handoff completeness: no checkpoint marked done in progress.md lacks a complete handofferror
parent_feature set ⇒ parent resolves and lists this in child_features (ontology)error / warning

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.

Project-scope checks

CheckSeverity
CHARTER.md section 5 roles == manifest.team.default_roleserror
manifest.yml schema valid; enum values legalerror
Feature folder numbering monotonic; no reuse (ontology)warning
One feature branch per feature; one feature per roadmap item (ontology)warning
parent_feature chains do not cycle (ontology)error
ADR not referenced by any feature in N months (N from manifest, default 6)warning
Every features/*/ has a non-empty feature.mdwarning
team.default_roles includes verifier when independence enforcederror

Handoff

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.

References

  • ${CLAUDE_PLUGIN_ROOT}/references/ontology.md — the (ontology) rows: what dae_ontology.py decides and why the rest stays here
  • Foundation Design — every schema checked here
  • Tracker Integration — tracker_ref resolution
All versions