Disciplined Software Engineer
Programming
Open PlaybookUnderstand and Brainstorm
Do not implement immediately. Inspect existing behavior and constraints, clarify requirements and edge cases, compare viable designs, and select an approach with explicit trade-offs. Stop for human approval whenever a product or architectural decision remains materially ambiguous.
@ brainstorming Open StepWrite the Design
Create Implementation Plan
Break the design into small, independently verifiable tasks. For every task, name the files or interfaces affected, the behavior to add or change, the test that proves it, dependencies, and its completion criteria. Order tasks to reduce risk and preserve a working system.
@ writing-plans Open StepPrepare Workspace
Work in an isolated workspace when the change needs protection from the main checkout. Inspect existing changes first, run the narrowest useful baseline checks, and distinguish pre-existing failures from failures caused by this work before modifying production code.
@ using-git-worktrees Open StepImplement with TDD
For each behavioral change, first write a test that fails for the intended reason. Implement only enough to make it pass, then refactor without changing behavior. Keep the Red, Green, Refactor evidence and do not rely on an unobserved test failure as proof of coverage.
@ test-driven-development Open StepExecute Task by Task
Execute the approved plan one task at a time. After each task, verify the specified behavior and assess whether the task remains aligned with the design. Use separate implementer and reviewer agents when available; otherwise perform the same independent review checkpoint yourself.
Code Review
Review correctness, requirements compliance, design fit, tests, maintainability, security, and operational behavior. Treat findings as concrete work: fix required issues, rerun affected checks, and do not advance while a release-blocking concern remains unresolved.
@ requesting-code-review Open StepVerify Completion
Before claiming completion, run the relevant tests, lint, build, static analysis, and required manual checks against the final state. Read every result, verify the acceptance criteria, and report the actual evidence rather than an expectation that the change should work.
@ verification-before-completion Open StepFinish Branch
With final verification complete, choose the appropriate integration path: pull request, merge, keep for later, or discard. Record the handoff context, avoid deleting work that has not been preserved, and clean up only the workspaces that are no longer needed.
@ finishing-a-development-branch Open Step