atdd
Acceptance Test-Driven Development (Outside-In TDD)
Philosophy
Core principle: We only build what the outside needs. Start at the user-facing boundary — an API endpoint, CLI command, or UI interaction — and let the outer behavior drive every design decision inward.
Two feedback loops run simultaneously: an outer acceptance test that defines "done" for the feature, and inner unit tests that drive each layer's implementation. Mocks aren't just test isolation — they're the mechanism for discovering what the next layer inward needs to do before it exists.
See double-loop.md for the loop mechanics and acceptance-tests.md for what makes a good acceptance test.
Anti-Pattern: Inside-Out Guessing
Don't start by building domain logic or infrastructure hoping it'll compose into the right feature. Building bottom-up means you're guessing what the outer layer will need.
The acceptance test is the anchor. Every design decision flows from it.
Workflow
1. Planning
More from maxmurr/agents-skills
submit-pr
Submit implementation as a pull request. Runs tests, creates a PR with the Linear issue linked, and posts the PR URL as a comment on the Linear issue. Use when implementation is complete and user wants to open a PR, submit work, or create a pull request.
2index-knowledge
Generate hierarchical AGENTS.md + CLAUDE.md knowledge base for a codebase. Creates root + complexity-scored subdirectory documentation with both file types.
2tdd
Test-driven development with red-green-refactor loop. Use when user wants to build features or fix bugs using TDD, mentions "red-green-refactor", wants integration tests, or asks for test-first development.
1prd-to-issues
Break a PRD into independently-grabbable Linear issues using tracer-bullet vertical slices. Use when user wants to convert a PRD to issues, create implementation tickets, or break down a PRD into work items.
1write-a-prd
Create a PRD through user interview, codebase exploration, and module design, then submit as a Linear issue. Use when user wants to write a PRD, create a product requirements document, or plan a new feature.
1start-issue
Kick off implementation of a Linear issue. Fetches the issue and its parent PRD, creates a git branch using Linear's suggested branch name, and presents a consolidated context summary ready for development. Use when starting work on a Linear issue, picking up a ticket, or when user says "start issue TEAM-123", "work on TEAM-123", or "pick up TEAM-123".
1