Agent skill

Atdd

by swingerman in swingerman/engineer

A skill your agent uses to drive feature work through the Acceptance Test Driven Development workflow — Given/When/Then specs before code, a project-specific test pipeline, and two parallel test…

MITAuto-check passedTesting & QA

Install Atdd

skills CLI
$ npx skills add swingerman/engineer --skill atdd -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install swingerman/engineer atdd --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/swingerman/engineer.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/atdd .claude/skills/atdd && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
atdd
GitHub stars
154
Token cost
~2.8k tokens
SKILL.md length
1,149 words
Files
1
Skills in repo
27
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses to drive feature work through the Acceptance Test Driven Development workflow — Given/When/Then specs before code, a project-specific test pipeline, and two parallel test…

  • Works in 7 steps: Understand the Feature → Write GWT Acceptance Specs → Generate the Test Pipeline → …
  • Drive feature work through the Acceptance Test Driven Development workflow — Given/When/Then specs before code
  • SKILL.md covers Core Principle, Workflow, Rules and Anti-Patterns to Watch For, plus 1 more section
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Atdd is an agent skill from swingerman/engineer. Use to drive feature work through the Acceptance Test Driven Development workflow — Given/When/Then specs before code, a project-specific test pipeline, and two parallel test streams (acceptance + unit). Triggers — "/atdd", "build a feature", "implement a feature", "add functionality", "start development", "write acceptance tests", "write specs", "use ATDD", "use TDD with acceptance tests".

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering End-to-end testing and Test-driven development. The repository describes itself as: Disciplined Agentic Engineering — a methodology kit for Claude Code: acceptance-test-first specs, explicit checkpoints, and autonomy you can actually leave running. The engineer… The licence is MIT.

When your agent uses it

  • Drive feature work through the Acceptance Test Driven Development workflow — Given/When/Then specs before code
  • A project-specific test pipeline
  • Two parallel test streams (acceptance + unit)
  • Build a feature

Example prompts

  • “build a feature”
  • “implement a feature”
  • “add functionality”
  • “/atdd”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Understand the Feature
  2. Write GWT Acceptance Specs
  3. Generate the Test Pipeline
  4. Run Acceptance Tests (Red)
  5. Implement with TDD
  6. Review Specs for Leakage
  7. Iterate

What it can do on your machine

Read from SKILL.md and the folder at commit 32947eb. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are gherkin and markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Atdd loads about 2.8k tokens when it runs. Until then it costs about 100 tokens; SKILL.md has 1,149 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~100
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from swingerman/engineer at commit 32947eb, republished under its MIT licence (© swingerman). 1,149 words, ~2,750 tokens.

Download SKILL.mdSave it as .claude/skills/atdd/SKILL.md (or your agent's skills folder).
name
atdd
description
Use to drive feature work through the Acceptance Test Driven Development workflow — Given/When/Then specs before code, a project-specific test pipeline, and two parallel test streams (acceptance + unit). Triggers — "/atdd", "build a feature", "implement a feature", "add functionality", "start development", "write acceptance tests", "write specs", "use ATDD", "use TDD with acceptance tests".

Acceptance Test Driven Development

Enforce the ATDD workflow for feature development. This methodology is adapted from Robert C. Martin's acceptance test approach.

Core Principle

"The two different streams of tests cause Claude to think much more deeply about the structure of the code." — Robert C. Martin

Two test streams constrain development:

  • Acceptance tests define WHAT the system does (external observables)
  • Unit tests define HOW the system does it (internal structure)

Both must pass. Neither alone is sufficient.

Workflow

Follow these steps strictly, in order. Do not skip steps.

Before Step 1, create one TodoWrite todo per step of this workflow (Steps 1–7), all at once — the full list up front, as a roadmap. Flip each todo to in_progress / completed as you go. See ${CLAUDE_PLUGIN_ROOT}/references/progress-indicator.md.

Step 1: Understand the Feature

Before writing anything, understand what is being built:

  • Ask clarifying questions about the feature's purpose
  • Identify the domain language (what terms do users/stakeholders use?)
  • Determine success criteria: what observable behavior proves it works?
  • Scope it: "just enough specs for this sprint" — do not design the whole system
Step 2: Write GWT Acceptance Specs

Write the feature's spec.md in standard Gherkin (DAE Foundation §7):

gherkin
Feature: <feature name>

Scenario: <behavior being specified>
  Given <precondition in domain language>
  And <another precondition if needed>
  When <the action the user/system takes>
  Then <observable outcome>
  And <another observable outcome if needed>

Scenario Outline: <a behavior with varying data>
  Given <a step with a <parameter>>
  ...

  Examples:
    | parameter | expected |
    | value     | result   |

spec.md is markdown — prose and headings around the Gherkin are fine; the parser ignores non-Gherkin lines.

Migrating from the legacy ;=== .txt format? Run the converter: dae_gherkin_convert.py specs/feature.txt features/NNN-slug/spec.md. The .txt format is deprecated; new specs are Gherkin spec.md.

Format rules:

  • Scenario: names one behavior; Scenario Outline: + Examples: for varying data
  • Given sets preconditions; When the action (one per scenario, ideally); Then the observable outcome
  • And continues the previous keyword
  • Use natural domain language, never implementation language

The spec-leakage rule — CRITICAL:

Specs must describe external observables only. Never reference:

  • Class names, function names, method names
  • Database tables, columns, queries
  • API endpoints, HTTP methods, status codes
  • Framework-specific terms (controllers, services, repositories)
  • Internal state, variables, data structures
  • File paths or module names
BAD:  Given the UserService has an empty userRepository
GOOD: Given there are no registered users

BAD:  When a POST request is sent to /api/users
GOOD: When a new user registers with email "bob@example.com"

BAD:  Then the database contains 1 row in the users table
GOOD: Then there is 1 registered user

Present specs to the user for approval before proceeding. Specs are co-authored, but the human has final approval — ferociously defended.

Step 3: Generate the Test Pipeline

The pipeline's front end is portable and shipped — you don't generate it:

  1. Parser — dae_gherkin.py parses spec.md → .build/spec.json, the fixed JSON IR (see the engineer plugin's references/spec-ir.md).

Invoke the pipeline-builder agent to generate the project-specific half:

  1. Generator — reads .build/spec.json, produces executable test files for the project's framework (pytest, Jest, JUnit, Go testing, RSpec, etc.)
  2. Step handlers — bind each step's exact text to system internals.

The generator must have deep knowledge of the system internals. This is NOT Cucumber — it produces complete, runnable tests that call into the system, not stubs requiring manual fixtures.

pipeline-builder also generates a runner so the user can run:

# parse spec.md → IR → generate tests → run tests
./run-acceptance-tests.sh
Step 4: Run Acceptance Tests (Red)

Run the generated acceptance tests. They should fail — this confirms the specs describe behavior that doesn't exist yet.

If they pass, either:

  • The behavior already exists (specs are redundant — revise or remove)
  • The generator is not testing the right thing (fix the pipeline)
Step 5: Implement with TDD

Now implement the feature using standard TDD:

  1. Write a failing unit test for the smallest piece of the feature
  2. Write minimal code to make it pass
  3. Refactor
  4. Repeat until the acceptance tests pass

Faster iteration with impact analysis: if the project has acceptance.impact_analysis: on, the runner's impact-run mode (dae_impact.py select) runs only the scenarios your change affects — use it for the tight TDD loop. The full acceptance run still gates Step 5's completion: do not mark the feature done until every scenario passes a full run.

Both streams must pass:

  • Unit tests verify internal correctness
  • Acceptance tests verify external behavior matches specs
Step 6: Review Specs for Leakage

After implementation, invoke the spec-guardian agent to review all spec files for implementation details that may have crept in during development.

If leakage is found, clean the specs back to domain language.

Step 7: Iterate

Return to Step 1 for the next feature. Each iteration adds specs only for the current feature — never design the whole system upfront.

Rules

These rules govern how spec files and the pipeline are handled. They are non-negotiable.

Show full SKILL.md (468 more words)Show less
Spec file discipline
  • Never modify a spec.md without explicit user permission. Specs are the user's contract. Always ask before changing them.
  • If a step is ambiguous, report the ambiguity rather than guessing. Let the user clarify.
Pipeline discipline
  • Never modify generated test files in .build/generated/. Only delete and regenerate them by re-running the pipeline from spec.md.
  • .build/ is gitignored — the IR and generated tests are artifacts. The project-specific generator and step handlers ARE committed source.
  • Before running the pipeline, check modification dates: if spec.md is newer than .build/spec.json or the generated tests, re-parse and regenerate before running.
  • Clear state before each test. Generated tests must reset all application state before each scenario execution to ensure isolation.
Failure handling
  • On test failure, report the source spec.md and the failing scenario name. Traceability back to the spec is critical.
  • If a scenario cannot be translated into a test, still generate it as a failing test that documents the desired behavior. Report to the user which scenario and why it could not be fully translated.
  • Mock non-deterministic behavior (random numbers, timestamps, etc.) in generated tests to ensure reproducibility.
Before pushing
  • Before a git push, ask the user whether acceptance tests should be run. Do not push without confirming both test streams pass.

Anti-Patterns to Watch For

"Let me just write the code first"

No. Specs first, always. The spec-before-code hook will warn about this.

"The specs are too high-level to test"

Then the specs need to be more specific. Break the feature into smaller observable behaviors. Each spec should describe one concrete scenario.

"Let me add implementation details so the generator is easier to write"

This is the perverse incentive. Fight it. The generator should be smart enough to map domain language to system internals. If it can't, improve the generator — don't pollute the specs.

"We only need acceptance tests, unit tests are redundant"

No. Two streams constrain development differently. Acceptance tests alone leave internal structure unchecked. Unit tests alone miss integration.

File Organization

DAE stores specs and pipeline artifacts per feature folder:

project-root/
├── features/
│   └── NNN-slug/
│       ├── spec.md              # acceptance specs (standard Gherkin) — committed
│       └── .build/              # GITIGNORED (regenerated)
│           ├── spec.json        #   — the IR (from dae_gherkin.py)
│           └── generated/       #   — the generated acceptance tests
├── acceptance/                  # project-specific pipeline — committed
│   ├── generator.*              #   — emits tests from the IR
│   └── handlers.*               #   — step handlers bound to system internals
└── run-acceptance-tests.sh      # pipeline runner — committed
What to commit vs. gitignore

Commit these (source of truth):

  • features/NNN-slug/spec.md — the acceptance specs
  • acceptance/generator.* — the project-specific generator
  • acceptance/handlers.* — the step handlers
  • run-acceptance-tests.sh — the pipeline runner script

Gitignore these (regenerated from spec.md):

  • features/*/.build/ — the IR and generated tests

Add to the project's .gitignore:

.build/

The parser (dae_gherkin.py) is portable and shipped with the plugin — it is not part of the project's committed source.

Project CLAUDE.md integration

After setting up the pipeline, add an Acceptance Tests section to the project's CLAUDE.md (or create one if it doesn't exist). This ensures Claude Code understands the ATDD setup in every session:

markdown
## Acceptance Tests

Acceptance specs are `spec.md` files (standard Gherkin) under
`features/NNN-slug/`.

### Pipeline

spec.md → dae_gherkin.py → .build/spec.json (IR) → generator → tests


1. **Parse:** `dae_gherkin.py` — `spec.md` → `.build/spec.json` (portable, shipped)
2. **Generate:** [generate command] — reads the IR, produces tests in `.build/generated/`
3. **Run:** [test command] — executes the generated tests

Full pipeline: `./run-acceptance-tests.sh`

### Rules

- Never modify a `spec.md` without explicit permission.
- Never modify generated tests — only delete and regenerate via the pipeline.
- `.build/` is gitignored — do not commit the IR or generated tests.
- Before a push, run the full acceptance test pipeline.
- On failure, report the `spec.md` and the failing scenario name.

Adapt the commands and paths to match the project's language and test framework. The pipeline-builder agent generates this CLAUDE.md section automatically when creating the pipeline.

© swingerman, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/atdd of swingerman/engineer.

Open the folder on GitHubat commit 32947eb

Compare with similar skills

Atdd next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Atdd compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Atdd this skillswingerman/engineer154—~2.8kAutomated safety check: PassMIT
TDD WorkflowhellangleZ/burn-in-cceverywhere-ralph11211 repos~2.4kAutomated safety check: PassNone
Bmad Testarch Atddbmad-code-org/bmad-method-test-architecture-enterprise1043 repos~893Automated safety check: PassCustom licence
Agentic TDDreticlehq/reticle1.2k—~1.2kAutomated safety check: PassApache-2.0
Openspec Plus TDDelastic/terraform-provider-elasticstack2101 repos~4.7kAutomated safety check: PassApache-2.0
Bmad Tea Testarch Atddchenjackle45/SayIt1141 repos~225Automated safety check: PassMIT

Similar skills

  • TDD Workflow

    hellangleZ/burn-in-cceverywhere-ralph

    A skill your agent uses when writing new features, fixing bugs, or refactoring code.

    112 GitHub starsUsed in 11 repos~2.4k tokens
    Testing & QAAuto-check passed
  • Bmad Testarch Atdd

    bmad-code-org/bmad-method-test-architecture-enterprise

    Generate red-phase acceptance test scaffolds using the TDD cycle.

    104 GitHub starsUsed in 3 repos~893 tokens
    Testing & QAAuto-check passed
  • Agentic TDD

    reticlehq/reticle

    Applies red-green TDD to behavior unit tests cannot reach, by stating the expected outcome against the running app with Reticle before writing the feature.

    1.2k GitHub stars~1.2k tokensUpdated today
    Testing & QAAuto-check passed
  • Openspec Plus TDD

    elastic/terraform-provider-elasticstack

    Official

    MANDATORY skill that activates whenever code is written to implement an OpenSpec change task.

    210 GitHub starsUsed in 1 repo~4.7k tokens
    Testing & QAAuto-check passed
  • Bmad Tea Testarch Atdd

    chenjackle45/SayIt

    Generate failing acceptance tests using TDD cycle. An agent skill from chenjackle45/SayIt.

    114 GitHub starsUsed in 1 repo~225 tokens
    Testing & QAAuto-check passed
  • TDD Workflow

    affaan-m/ECC

    新機能の作成、バグ修正、コードのリファクタリング時にこのスキルを使用します。ユニット、統合、E2Eテストを含む80%以上のカバレッジでテスト駆動開発を強制します。

    274k GitHub starsUsed in 2 repos~2k tokens
    Testing & QAAuto-check passed

More from swingerman/engineer

All 27 skills in this repo
  • Crap Analyzer

    swingerman/engineer

    A skill your agent uses to produce a risk-based refactor + test plan for recently-changed code on a diff/branch/PR by computing CRAP (complexity × untested) on changed methods.

    154 GitHub stars~1.2k tokensUpdated 14 days ago
    Auto-check passed
  • Atdd Mutate

    swingerman/engineer

    A skill your agent uses to add a third validation layer to the ATDD workflow — after acceptance tests verify WHAT and unit tests verify HOW, mutation testing verifies the tests actually catch bugs.

    154 GitHub stars~2.7k tokensUpdated 14 days ago
    Auto-check passed
  • Fix

    swingerman/engineer

    A skill your agent uses to drive a bug fix from first report through close, with a "why didn't we catch it?" loop at the end.

    154 GitHub stars~3k tokensUpdated 14 days ago
    Auto-check passed
  • Harden

    swingerman/engineer

    Use after a feature passes Light Verify (CP7), to prove the tests actually catch bugs and, where the code warrants it, to formally check its invariants — Checkpoint 8.

    154 GitHub stars~1.8k tokensUpdated 14 days ago
    Auto-check passed
  • Next

    swingerman/engineer

    Use at the start of a work session, or any time the question is "what should I pick up now" across the whole project.

    154 GitHub stars~3k tokensUpdated 14 days ago
    Auto-check passed
  • Post Merge

    swingerman/engineer

    Use immediately after a PR is merged to clean up the local feature branch and resync main.

    154 GitHub stars~1.4k tokensUpdated 14 days ago
    Auto-check passed

Categories

Questions about Atdd

What does Atdd do?

A skill your agent uses to drive feature work through the Acceptance Test Driven Development workflow — Given/When/Then specs before code, a project-specific test pipeline, and two parallel test…. Atdd is an agent skill from swingerman/engineer. Use to drive feature work through the Acceptance Test Driven Development workflow — Given/When/Then specs before code, a project-specific test pipeline, and two parallel test streams (acceptance + unit).

When should I use Atdd?

Atdd fits situations like: drive feature work through the Acceptance Test Driven Development workflow — Given/When/Then specs before code; A project-specific test pipeline; two parallel test streams (acceptance + unit); build a feature.

How do I install Atdd in Claude Code?

Run `npx skills add swingerman/engineer --skill atdd -a claude-code`. Or copy the skill folder (skills/atdd in swingerman/engineer) into .claude/skills/atdd in your project. Claude Code loads it when a task matches its description.

How do I install Atdd in Codex?

Run `npx skills add swingerman/engineer --skill atdd -a codex`. Or copy the skill folder (skills/atdd in swingerman/engineer) into .agents/skills/atdd in your project. Codex loads it when a task matches its description.

Can I use Atdd in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add swingerman/engineer --skill atdd -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/atdd, .gemini/skills/atdd, .github/skills/atdd and .opencode/skills/atdd in your project.

What does Atdd need to run?

SKILL.md names no scripts, command-line tools or credentials: Atdd is instructions for the agent only.

Does Atdd access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Atdd safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Atdd use?

Atdd is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Atdd use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Atdd?

Skills that share tags, products or a category with Atdd: TDD Workflow (hellangleZ/burn-in-cceverywhere-ralph, 112 stars), Bmad Testarch Atdd (bmad-code-org/bmad-method-test-architecture-enterprise, 104 stars), Agentic TDD (reticlehq/reticle, 1.2k stars) and Openspec Plus TDD (elastic/terraform-provider-elasticstack, 210 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Atdd?

swingerman (a GitHub user) maintains it in swingerman/engineer, which has 154 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on September 23, 2026.

Source: swingerman/engineer on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.