Drive feature development using Outside-In TDD with Hexagonal Architecture. Design emerges through inline code, in-memory fakes, interface extraction, and deferred I/O. Use when building features, writing tests, or structuring backend services. Triggers on: TDD, outside-in, hexagonal, ports and adapters, emergent design, acceptance test, component test, walking skeleton, in-memory fakes, component, contract test, adapter, fast tests, sub-second feedback. Language-agnostic (Go, Rust, Python, TypeScript, Java, C#).
Drives feature development using Outside-In TDD and Hexagonal Architecture to produce emergent design with fast, in-memory tests.
npx claudepluginhub a5c-ai/babysitterThis skill is limited to using the following tools:
README.mdreferences/folder-structure.mdreferences/glossary.mdreferences/methodology.mdreferences/testing-strategy.mdSTARTER_CHARACTER = 🔴🟢
Build features by driving design from the outside in. Every feature starts with a failing acceptance test. Design emerges through disciplined Red-Green-Refactor cycles. Infrastructure is deferred until the domain API is proven.
Unlike inside-out TDD with mocks, this approach tests behavior at the boundary — not implementation details — making the suite refactor-friendly by design. See methodology.md.
For canonical terms used throughout, see references/glossary.md.
Outer loop (Acceptance test): Write a failing test scoped at the service/system boundary. This test exercises integration across Bounded Contexts using in-memory adapters. It defines "done."
Inner loop (Red-Green-Refactor): Cycles inside a Bounded Context to make the outer test pass. Drop into this loop only to implement what the acceptance test demands.
Every feature starts from the outside in. The acceptance test drives the process.
Acceptance and component tests are the primary instruments. Unit tests are the exception.
See testing-strategy.md for full definitions, the testing matrix, and contract test patterns.
| Fast | Slow | |
|---|---|---|
| Large Scope | Acceptance & Component — daily driver | E2E — minimize |
| Small Scope | Unit — use sparingly | Contract — CI only |
Sub-second feedback is non-negotiable. If tests take seconds, the team stops refactoring and the system decays.
Follow this sequence strictly within each Bounded Context:
The sequence is non-negotiable. Each step collects evidence about what the adapter actually needs. See methodology.md for detailed rationale and the walking skeleton.
The Domain Layer is the center. All I/O lives behind adapter interfaces at the boundary.
Dependency Rule: Infrastructure(adapters) → Application(ports) → Domain (outer depends on inner, never reverse)
I/O Classification Rule: if it does not do I/O and does not run out-of-process → belongs inside the hexagon; otherwise → adapter.
Port-referenced types must live inside the hexagon. If a port signature references a type in the adapter layer, the hexagon depends outward — a violation.
Naming:
For[Something] (e.g., ForCalculatingTaxes, ForGettingTaxRates)[Something]Adapter (e.g., WebUIAdapter, SQLDatabaseAdapter)See folder-structure.md for full folder structure, private/public hexagon split, cross-hexagon dependency rule, adapter design patterns, and test seams.
Use in-memory fakes for all adapter boundaries. Never mocks or stubs for domain-level testing.
Fakes are real implementations backed by simple data structures (maps, lists). They have actual behavior. Mocks only verify call sequences — they couple tests to implementation details and break on every refactor.
Contract tests verify the real adapter matches the fake's behavior. See testing-strategy.md.
For new projects or major new components: build a minimal end-to-end implementation first to pay integration cost upfront. Once upright, pivot to the emergent design workflow. See methodology.md.
Wires all adapter interfaces at startup. Used in two contexts:
The same business logic runs in both contexts — only the adapters differ.
Difficulty writing a test is a design signal, not a skill problem:
Do not fight the tests. Reshape the code until the test is easy to write.
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use for discovering, retrieving, and improving prompts.
Search, retrieve, and install Agent Skills from the prompts.chat registry using MCP tools. Use when the user asks to find skills, browse skill catalogs, install a skill for Claude, or extend Claude's capabilities with reusable AI agent components.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.