Skip to main content

ATDD Platform - Acceptance Test Driven Development toolkit

Project description

ATDD

Acceptance Test Driven Development toolkit for structured planning and convention enforcement.

ATDD covers the full software lifecycle, not just code. It starts from a job to be done (e.g., user problem or goal), turns it into deterministic requirements, validates them with tests, and then drives implementation.

flowchart LR
    A[Job to be Done] -->|Planner| B[Wagon + Acceptance Criteria]
    B -->|Tester| C[RED Tests]
    C -->|Coder| D[GREEN Code]
    D -->|Tester| F[SMOKE Tests]
    F -->|Coder| E[REFACTOR]
    E -.->|feedback| B

    subgraph "ATDD Lifecycle"
        B
        C
        D
        F
        E
    end

Installation

From PyPI

pip install atdd

Upgrade

pip install --upgrade atdd

Uninstall (Consumer Repos)

If you want to remove ATDD entirely:

  1. Uninstall the package:
    python -m pip uninstall atdd
    
  2. Manually delete ATDD artifacts in the repo:
    .atdd/
    Managed blocks in CLAUDE.md, AGENTS.md, etc.
    

Uninstalling ATDD does not remove or revert any repo files.

For Development

git clone https://github.com/afokapu/atdd.git
cd atdd
pip install -e ".[dev]"
atdd --help

Quick Start

atdd init                      # Initialize ATDD + GitHub infrastructure
atdd gate                      # START EVERY SESSION WITH THIS
atdd new <slug>                # Create GitHub issue + WMBT sub-issues
atdd sync                      # Sync rules to agent config files
atdd validate                  # Run all validators

atdd gate is required. Tell your agent: "Run atdd gate and follow ATDD rigorously." Agents skip instruction files but can't ignore tool output. No gate = no guarantees.

What It Does

ATDD provides:

  1. Issue Tracking - GitHub Issues + Project v2 custom fields as source of truth
  2. Convention Enforcement - YAML-based conventions validated via pytest
  3. ATDD Lifecycle - Planner → Tester → Coder phase gates with state machine transitions
  4. Agent Config Sync - Keep ATDD rules in sync across AI agent config files
  5. Design System Compliance - Hierarchy, token, and adoption validators for frontend

Commands

Project Initialization

atdd init              # Bootstrap .atdd/, GitHub labels, Project v2 fields, CLAUDE.md
atdd init --force      # Reinitialize (overwrites existing)

Creates:

your-project/
├── CLAUDE.md              # With managed ATDD block
└── .atdd/
    ├── manifest.yaml      # Issue tracking
    └── config.yaml        # Agent sync + release configuration

Also sets up on GitHub:

  • Labels: atdd-issue, atdd-wmbt, atdd:RED, atdd:GREEN, atdd:SMOKE, atdd:REFACTOR, archetype labels
  • Project v2 custom fields: ATDD:Status, ATDD:Train, ATDD:Archetypes, etc.

Worktree Layout

Migrate your repo to a flat-sibling worktree layout where each branch lives alongside main/:

atdd init --worktree-layout         # Migrate repo into main/ subdirectory
atdd init --worktree-layout --force # Non-interactive

Resulting structure:

your-project/
├── your-project.code-workspace   # VS Code multi-root workspace (auto-generated)
├── main/                         # Primary checkout
├── feat-some-feature/            # git worktree: feat/some-feature
└── fix-login-bug/                # git worktree: fix/login-bug

Creating and removing worktrees:

cd main
git worktree add ../feat-my-feature -b feat/my-feature   # New branch
git worktree remove ../feat-my-feature                    # After merge

After adding or removing worktrees, run atdd sync to refresh the workspace file:

atdd sync   # Regenerates .code-workspace with current worktrees

Opening the Workspace

After migrating to worktree layout, always open the .code-workspace file instead of individual folders:

code your-project.code-workspace   # or: File → Open Workspace from File…

This gives you:

  • Branch-aware sidebar — each worktree folder shows its active branch in the Explorer
  • Git tracking per worktree — Source Control panel tracks changes independently per branch
  • Shared settings — editor config, extensions, and tasks apply across all worktrees
  • Auto-updatedatdd sync regenerates the workspace file when worktrees are added or removed

Do not open main/ directly. Without the workspace file, VS Code won't track sibling worktrees and you lose multi-branch visibility.

Issue Management

Issues are the source of truth, backed by GitHub Issues with Project v2 custom fields.

atdd new <slug>                              # Create parent issue + WMBT sub-issues
atdd new <slug> --archetypes be,contracts    # Specify archetypes
atdd new <slug> --train <id>                 # Assign to train
atdd list                                    # List all issues
atdd update <N> --status <STATUS>            # Update status (swaps labels automatically)
atdd update <N> --status COMPLETE --train <id>  # COMPLETE runs gate tests, artifact + release verification
atdd update <N> --status COMPLETE --force   # Bypass gate/artifact/release checks (train still enforced)
atdd close-wmbt <N> <WMBT_ID>               # Close a WMBT sub-issue
atdd archive <N>                             # Close parent + all sub-issues

State machine transitions:

INIT → PLANNED → RED → GREEN → SMOKE → REFACTOR → COMPLETE
         ↕         ↕      ↕      ↕       ↕
       BLOCKED   BLOCKED BLOCKED BLOCKED BLOCKED → OBSOLETE

Archetypes: db, be, fe, contracts, wmbt, wagon, train, telemetry, migrations

Each archetype includes gate tests in the issue template (e.g., fe issues get GT-020 for TypeScript architecture and GT-021 for design system compliance).

Agent Config Sync

Sync ATDD rules to agent config files using managed blocks that preserve user content:

atdd sync                  # Sync all enabled agents from config
atdd sync --agent claude   # Sync specific agent only
atdd sync --verify         # Check if files are in sync (for CI)
atdd sync --status         # Show sync status for all agents

Supported agents:

Agent File
claude CLAUDE.md
codex AGENTS.md
gemini GEMINI.md
qwen QWEN.md

Configure which agents to sync in .atdd/config.yaml:

version: "1.0"
sync:
  agents:
    - claude      # Enabled by default
    # - codex     # Uncomment to sync AGENTS.md
    # - gemini    # Uncomment to sync GEMINI.md
    # - qwen      # Uncomment to sync QWEN.md

ATDD Gate (Bootstrap Protocol)

Agents often skip instruction files. The gate solves this by injecting rules via mandatory tool output.

atdd gate              # Show gate verification info
atdd gate --json       # Output as JSON

Protocol:

  1. Run atdd gate first
  2. Agent must confirm: which files were loaded, the reported hash, key constraints
  3. If files are missing/unsynced: run atdd sync then atdd gate again

Why this works: Gate output is mandatory tool output — agent can't ignore it. Proves which ATDD files were actually loaded and forces consistency across all agents.

Validation

Four validator phases matching the ATDD lifecycle:

atdd validate              # Run all validators (two-stage: fast then platform)
atdd validate planner      # Planning validators (wagons, trains, URNs, WMBTs)
atdd validate tester       # Testing validators (contracts, telemetry, test naming)
atdd validate coder        # Implementation validators (architecture, boundaries, design system)
atdd validate coach        # Coach validators (issues, registries, release, gate completion)
atdd validate --quick      # Fast smoke test
atdd validate --no-split   # Single-pass execution (skip two-stage split)
atdd validate --coverage   # With coverage report
atdd validate --html       # With HTML report

By default, atdd validate runs in two stages: fast file-parsing tests in parallel, then API-bound platform tests sequentially with shared session fixtures.

Release Versioning

ATDD enforces release versioning via coach validators. Configure the version file and tag prefix in .atdd/config.yaml:

release:
  version_file: "pyproject.toml"   # or package.json, VERSION, etc.
  tag_prefix: "v"

Validation (atdd validate coach) requires:

  • Version file exists and contains a version
  • Git tag on HEAD matches {tag_prefix}{version}

CI Release Workflow

atdd init generates two GitHub Actions workflows:

Workflow Trigger Purpose
atdd-validate.yml push, PR, issues Run ATDD validators
publish.yml workflow_run (after validate succeeds on main) Tag + publish

Release flow:

  1. Agent bumps version on PR branch (feat/ → MINOR, fix/ → PATCH)
  2. PR merges to main
  3. atdd-validate.yml runs validators
  4. publish.yml triggers automatically: reads version → creates git tag → publishes

Consumer repos get tag creation out of the box. To add platform-specific publishing (PyPI, npm, Docker), extend the generated publish.yml with your own publish steps. See the atdd toolkit's publish.yml as a PyPI example.

URN Graph UI

Visualize URN traceability as an interactive graph with search, family filters, and node inspection.

pip install atdd[viz]
atdd urn viz                           # Launch on default port 8502
atdd urn viz --port 9000               # Custom port
atdd urn viz --root wagon:my-wagon     # Subgraph from root
atdd urn viz --family wagon --family feature  # Filter families

Other Commands

atdd status                    # Platform status
atdd inventory                 # Generate artifact inventory
atdd inventory --format json   # Inventory as JSON
atdd registry update           # Update all registries
atdd --help                    # Full help

Project Structure

src/atdd/
├── cli.py                 # Entry point
├── coach/
│   ├── commands/          # CLI command implementations (issue.py, initializer.py, sync.py, gate.py)
│   ├── conventions/       # Coach conventions (issue.convention.yaml)
│   ├── overlays/          # Agent-specific additions
│   ├── schemas/           # JSON schemas (config, project fields, label taxonomy)
│   ├── templates/         # Issue templates, ATDD.md
│   ├── utils/             # Graph builder, URN resolver, repo utilities
│   └── validators/        # Coach validators (issues, registries, release, traceability)
├── planner/
│   ├── conventions/       # Planning conventions
│   ├── schemas/           # Planning schemas
│   └── validators/        # Planning validators
├── tester/
│   ├── conventions/       # Testing conventions
│   ├── schemas/           # Testing schemas
│   └── validators/        # Testing validators
└── coder/
    ├── conventions/       # Coding conventions (architecture, design system, boundaries)
    ├── schemas/           # Coder schemas
    └── validators/        # Implementation validators (architecture, design system compliance)

Development

Setup

git clone https://github.com/afokapu/atdd.git
cd atdd
pip install -e ".[dev]"

Run Tests

# All validators from source
PYTHONPATH=src python3 -m pytest src/atdd/ -v

# Specific phase
PYTHONPATH=src python3 -m pytest src/atdd/planner/validators/ -v

# With coverage
PYTHONPATH=src python3 -m pytest --cov=atdd --cov-report=html

Adding Validators

  1. Create src/atdd/{phase}/validators/test_{name}.py
  2. Write pytest test functions with @pytest.mark.{phase} marker
  3. Run atdd validate {phase}

Validators are auto-discovered by pytest.

Adding Conventions

  1. Create src/atdd/{phase}/conventions/{name}.convention.yaml
  2. Reference in validators via Path(__file__).parent.parent / "conventions" / "..."

Requirements

  • Python 3.10+
  • pyyaml, jsonschema
  • gh CLI (authenticated, with project scope for issue management)

Dev dependencies: pytest, pytest-xdist, pytest-html

License

MIT

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

atdd-1.44.0.tar.gz (704.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

atdd-1.44.0-py3-none-any.whl (854.9 kB view details)

Uploaded Python 3

File details

Details for the file atdd-1.44.0.tar.gz.

File metadata

  • Download URL: atdd-1.44.0.tar.gz
  • Upload date:
  • Size: 704.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for atdd-1.44.0.tar.gz
Algorithm Hash digest
SHA256 fc65b1830f85b7465d0a1fca21446e85e58139ef11bfa83a314f2cc53516c0e6
MD5 4f78d520357c1f2c3b2fc1ad9fc37715
BLAKE2b-256 840a607037bba3c9668146a9f7766689f12278c589fe4a4990a1cfac5b57ab69

See more details on using hashes here.

Provenance

The following attestation bundles were made for atdd-1.44.0.tar.gz:

Publisher: publish.yml on afokapu/atdd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file atdd-1.44.0-py3-none-any.whl.

File metadata

  • Download URL: atdd-1.44.0-py3-none-any.whl
  • Upload date:
  • Size: 854.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for atdd-1.44.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6e2af717e3158e2035b35d83dac41e95d1462ac23e715baa6c14d43508cf061b
MD5 d78ba5b4cc2578529af8d01e247f7f8c
BLAKE2b-256 98c0b8d32179cf4cb23aafe295149454bc3ec9e0ec333efcde6d8f64d036bd49

See more details on using hashes here.

Provenance

The following attestation bundles were made for atdd-1.44.0-py3-none-any.whl:

Publisher: publish.yml on afokapu/atdd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page