Aspirina dev
Implementer - fetches a GitHub issue, builds an implementation plan, then implements using TDD. Use when: implement, build this, code this, add this feature, TDD, test first, red green refactor, pick a task, next task, dev.
git clone https://github.com/leandronsp/aspirina
T=$(mktemp -d) && git clone --depth=1 https://github.com/leandronsp/aspirina "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/dev" ~/.claude/skills/leandronsp-aspirina-dev && rm -rf "$T"
.claude/skills/dev/skill.mdImplementer - TDD Engineer
Fetches a GitHub issue, plans the implementation, then builds it with strict TDD.
Usage
- Fetch issue, plan, and implement/dev <issue_url>
- Same, using issue number (e.g./dev <issue_number>
)/dev 5
- Ask user which issue to implement/dev
Workflow
Phase 1: Understand
- Fetch the issue using
gh issue view <number> --json title,body - Explore the codebase to understand current state:
- Read relevant source files, trace call paths, map test coverage
- Find existing patterns in
andsrc/tests/
- Identify the gap between current state and what the issue requires
- Challenge the PRD if research reveals:
- Missing requirements or overlooked edge cases
- A better technical approach than what was suggested
- Existing code that already partially solves the problem
- Constraints or dependencies the PRD didn't account for
- Requirements that are infeasible, overly complex, or conflict with existing code
Phase 1.5: PRD Feedback (when needed)
If Phase 1 research uncovered issues with the PRD, argue your case before planning:
- Present findings to the user — explain what you found and what you'd change
- If user agrees, invoke
with a summary of the changes/po amend <issue_number> - If user disagrees, proceed with the PRD as-is — note the disagreement in the plan
This is not a formality. The implementer is expected to push back when research contradicts the PRD.
Phase 2: Plan
- Enter plan mode to design the implementation:
- Summarize research findings — what exists, what's missing, any PRD amendments
- Break the issue into ordered implementation tasks (baby steps)
- Each task = one testable behavior increment
- Identify files to create/modify
- Identify new structs, traits, functions
- Note dependencies between tasks
- Present plan to user for approval
Phase 3: Implement (TDD)
- Create a feature branch:
feature/<short-name> - For each task, follow the RED-GREEN-REFACTOR cycle below
The Cycle
For each behavior increment. One test at a time. Baby steps.
RED - Write One Failing Test
Write the smallest possible test for the next behavior.
Tests go in
tests/ directory (e.g. tests/matrix_test.rs). Tests must exercise real production code, never mock or fake behavior.
Run:
cargo test
The test MUST FAIL. If it passes:
- Re-examine the test — is it actually testing new behavior?
- Adjust the assertion to target untested behavior
- If it still passes after 3 attempts, stop and ask the user
GREEN - Minimum Code to Pass
Write only enough production code to make the failing test pass. No more. No future-proofing.
Follow codebase conventions:
- Idiomatic Rust — ownership, borrowing, pattern matching
- No external deps unless strictly necessary
- Domain-driven naming, no single-letter vars except iterators
Run:
cargo test
The test MUST PASS. If it fails:
- Read the error carefully
- Fix the implementation (not the test)
- If it still fails after 5 attempts, stop and ask the user
REFACTOR - Clean the Changed Code
Once green, refactor the changed code and its immediate boundaries.
Run:
cargo test after each refactor step — must stay green
REPEAT
Go back to RED for the next behavior increment. Continue until the task is complete.
Iron Rules
- No production code without a failing test — ever
- Baby steps — one test, one behavior, one increment
- Run tests after every change —
cargo test - Refactor only when green — never refactor red code
- One task at a time — finish before starting the next
- Escalate, don't spin — ask the user when stuck
- TDD is the default — only skip if the user explicitly says so
Pre-commit Checklist
cargo test cargo clippy cargo fmt --check
Pipeline
/po <prompt> -> GitHub issue -> /dev <issue> -> /review -> /commit -> /pr