engineer/skills/atdd/SKILL.md
Use to write a feature's acceptance specs and generate its test pipeline — Checkpoint 3 of the DAE pipeline. The engineer-namespace entry point into the atdd plugin's acceptance workflow. Triggers — "/engineer.atdd", "write the spec", "Checkpoint 3", "formalize the ACs as specs", "generate the test pipeline".
npx skillsauth add swingerman/atdd atddInstall 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.
The DAE pipeline's Checkpoint 3 (Spec) entry point. AC discovery (Checkpoint 2,
discover-acs) decided what behaviors must work; this step formalizes them as
a standard-Gherkin spec.md and generates the project-specific test pipeline.
This skill is a thin bridge: the acceptance workflow itself lives in the
atdd plugin (atdd:atdd). engineer.atdd wraps it with the DAE checkpoint
contract — the entry gate in, the handoff out — so the acceptance pipeline is a
first-class checkpoint of the engineer pipeline rather than a separate detour.
Requires the atdd plugin. If it is not installed, tell the user to run
/plugin install atdd@disciplined-agentic-engineering and stop.
Checkpoint 3, after discover-acs (Checkpoint 2) has produced an approved
acs.md. Produces spec.md + the feature's .build/ pipeline.
Not for: AC discovery (discover-acs); planning (plan); using the
acceptance workflow outside a DAE feature folder (invoke atdd:atdd directly).
Verify the prior checkpoint is complete: run
${CLAUDE_PLUGIN_ROOT}/scripts/dae_handoff.py <feature-dir> --through 2. 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.
Invoke the atdd:atdd skill, scoped to this feature: write the feature's
spec.md in standard Gherkin from acs.md, then generate the test pipeline
(the pipeline-builder agent + the portable dae_gherkin.py parser). Present
spec.md to the human for approval — specs are the human's contract.
Emit a summary per ${CLAUDE_PLUGIN_ROOT}/references/handoff-summary.md.
checkpoint: 3; the exit_criteria block asserts Checkpoint 3's criteria
(Foundation Design Section 8) — spec.md parses to a valid IR, every AC maps to
≥1 scenario, spec-check passes — each with verified_by and evidence.
recommended_next: "/engineer.plan".
spec.md is the human's contract and gets human approval in Step 1. Once
approved, auto-dispatch /engineer.plan at autonomy medium/high;
confirm-then-dispatch at low. See
${CLAUDE_PLUGIN_ROOT}/references/handoff-dispatch.md. Don't bounce the
mechanical "ready to plan?" question back to the human after they already
approved the spec.
${CLAUDE_PLUGIN_ROOT}/references/handoff-dispatch.md — when to dispatch vs stopatdd:atdd — the acceptance workflow this skill bridges todata-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".