Skip to content
Testing
Skill

/arch-check

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

From plugin
atdd
16328 skills8 agents4 commands2 hooks

Claude Code

$ npx -y skills add swingerman/engineer --skill arch-check --agent claude-code

SKILL.md

arch-check.SKILL.md
name: arch-check
description: 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".

arch-check

Run the charter architecture fitness check — Checkpoint 7 (Light Verify), alongside `crap-analyzer`. Turns the charter's architectural vision from prose into an objective gate: `dae_arch.py` reads the manifest's `architecture:` rules and reports violations.

Read-only on the codebase — it reports, it does not fix.

When to use

Checkpoint 7, after the feature's code is implemented and refined. Also useful as a standalone audit (`--full`) of an existing project.

**Not for:** change-risk analysis (`crap-analyzer`); artifact consistency (`consistency-check`); fixing violations (that is a human/agent decision per violation).

Workflow

Step 0 — Entry gate

Verify the prior checkpoint is complete: run `${CLAUDE_PLUGIN_ROOT}/scripts/dae_handoff.py <feature-dir> --through 6`. On a non-zero exit, **stop** and surface the gap to the human.

Verify branch hygiene: run `${CLAUDE_PLUGIN_ROOT}/scripts/dae_branch.py <feature-dir>`. On a non-zero exit, **stop** and surface the message to the human — switch branches and re-invoke. The check honors the `git.manual: true` manifest opt-out.

After the gate passes, show the **pipeline breadcrumb**: run `${CLAUDE_PLUGIN_ROOT}/scripts/dae_progress.py <feature-dir>` and present its output to the human — it shows where this checkpoint sits in the DAE pipeline. The breadcrumb is advisory: a non-zero exit or a missing `progress.md` never blocks the skill. Then create one TodoWrite todo per workflow step below. See `${CLAUDE_PLUGIN_ROOT}/references/progress-indicator.md`.

Step 1 — Run the check

Run `${CLAUDE_PLUGIN_ROOT}/scripts/dae_arch.py <methodology-root>` (add `--full` for a whole-project audit). If it reports "no `architecture:` section", tell the user the charter has no machine-readable architecture rules yet and stop.

Step 1.5 — CRAP analysis

CP7 Light Verify is arch-check **plus** `crap-analyzer`. If crap-analyzer hasn't run on the current diff, run it now over the feature's changed code. Keep its summary for the handoff: max CRAP, the offenders over `quality_thresholds.crap_max`, and the command. It is external and writes no handoff of its own, so this is where CP8's refinement-advisor reads it.

Step 1.6 — Real-app run

Read `manifest.verify_app`. Unless it is `none`, invoke that project skill (`.claude/skills/<verify_app>/SKILL.md`) for this feature's feature-map rows: Launch → Doctor → Drive → Evidence → Cleanup, writing evidence to `features/<slug>/evidence/`. No row for this feature → add it first (see `${CLAUDE_PLUGIN_ROOT}/references/verify-app-skill.md`). A failing run is a verification failure, not a skip. For features created on or after the cutoff, `dae_handoff.py` refuses a CP7 handoff that has no `real_run` block with existing evidence files. Passing tests don't count. Older features pass with a warning.

Step 2 — Present violations

Group the violations by kind (layering first — it is the architectural-vision core). For each, show `file:line` and the rule. Do not auto-fix.

Step 3 — Triage with the human

For each violation, the human decides: a real break (fix the code), or a rule that no longer fits (amend `manifest.architecture` — and the charter prose). `dae_arch.py` exiting non-zero means Checkpoint 7's architecture-fitness exit criterion is unmet until the violations are resolved.

Step 3.5 — Runbook gate (if runbook.md exists)

If `features/<slug>/runbook.md` exists, check that every step blocking a deploy-related AC is `completed: true`. If any blocking step is open while its dependent AC is asserting `met: true`, surface it as a verification gap and refuse to mark CP7 complete. The runbook's `blocking_acs` list is the source of truth — see `engineer/skills/plan/references/runbook-template.md`.

Step 4 — Handoff

Emit a summary per `${CLAUDE_PLUGIN_ROOT}/references/handoff-summary.md`. `checkpoint: 7`; the `exit_criteria` block asserts the architecture-fitness criterion with `verified_by: tool` and the `dae_arch.py` exit status as evidence, and carries crap-analyzer's summary as a `crap_results` block (`max_crap`, `offenders: [{symbol, file, crap, coverage}]`, `command`). CP8's harden and refinement-advisor read that block. On an onboarded project it also carries the `real_run` block (`skill`, `evidence` paths) and a "feature works in the real app" criterion, `verified_by: tool`, quoting the observed result. `recommended_next`: "/engineer.harden (CP8)".

References

  • [Foundation Design](https://www.notion.so/3585ecdee0e2811bbc67ff4913c03207) —

the `architecture:` manifest section (§2); the Checkpoint Exit Contract (§8)

Read more
@swingerman
Ships withatdd

A methodology kit for engineering-led AI development — spec-driven, test-driven, charter-bound. ATDD + mutation testing + deterministic guardrails. AI agents do the typing. Engineers stay in charge of architecture, behavior contracts, and verification.

16328 skills8 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
163
Star history of swingerman/disciplined-agentic-engineering on GitHub, a chart by star-history.com

Other skills on atdd.

crap-analyzer

crap-analyzer

Use to produce a risk-based refactor + test plan for recently-changed code on a diff/branch/PR by computing CRAP (complexity ×…

@swingerman@swingermanInstall Skill
atdd

atdd

Use to drive feature work through the Acceptance Test Driven Development workflow — Given/When/Then specs before code, a…

@swingerman@swingermanInstall Skill
clarify

clarify

Use when a single DAE artifact has ambiguities to resolve. Triggers — "/engineer.clarify", "clarify this spec", "resolve…

@swingerman@swingermanInstall Skill
consistency-check

consistency-check

Use to validate DAE artifacts for schema correctness and cross-artifact consistency. Triggers — "/engineer.consistency-check",…

@swingerman@swingermanInstall Skill
discover-acs

discover-acs

Use when a Ready feature needs its acceptance criteria discovered before specs are written. Triggers — "/engineer.discover-acs",…

@swingerman@swingermanInstall Skill
discuss

discuss

Use when exploring a feature idea before committing, or revisiting a parked one. Triggers — "/engineer.discuss",…

@swingerman@swingermanInstall Skill

More skills from other plugins.

api-review

api-review

Produce the "Playwright 1.xx API Review" artifact for a range of commits - the public API additions and the breaking or behavior…

playwrighttoday100k
@microsoft@microsoftInstall Skill
add-e2e-selectors

add-e2e-selectors

Add reliable @grafana/e2e-selectors to interactive elements and key containers in the Grafana frontend. Use when adding e2e…

grafanatoday78k
@grafana@grafanaInstall Skill
promptfoo-evals

promptfoo-evals

Write, refine, run, and QA promptfoo evaluation suites: promptfooconfig.yaml, prompts, providers, vars, tests, assertions,…

@promptfoo@promptfooInstall Skill
deepeval

deepeval

DeepEval evaluation workflow for AI agents and LLM applications. TRIGGER when the user wants to evaluate or improve an AI agent,…

@confident-ai@confident-aiInstall Skill

Questions about arch-check.

Which coding agents can use arch-check?
arch-check installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.