dev-implement/SKILL.md
Use when the user wants to implement a single AFK GitHub issue end-to-end with TDD. Stops after the implementation lands on the branch — does NOT open a PR or run the quality gate. Trigger phrases - "/dev-implement", "implement this issue", "ship issue N".
npx skillsauth add paulund/skills dev-implementInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Implement one issue with TDD on a branch and push the result. Scope ends at the push — opening the PR and verifying the build are separate jobs.
When invoked with arguments, the first line of the prompt may carry a context envelope as JSON:
{ "issue": 582, "branch": "agent/issue-582-foo" }
issue — when set, work on this specific issue. When omitted, pick the next ready one (Step 1).branch — when set, the worktree is already on this branch and node_modules is ready. When omitted, set up a new branch from main (Step 2).issue is omitted)gh issue list --label "planned,afk" --state open --json number,title,labels,body
Then verify blockers:
gh issue view <N> --json state
Rules:
hitl or blocked.Blocked by #N references resolve to an OPEN issue.p1 > p2 > p3).branch is omitted)main), pull latest.agent/issue-<N>-<slug>.planned, add in-progress.gh issue view <N> --json number,title,body,labels
Read the body fully. The acceptance criteria drive the TDD cycles. If acceptance criteria are ambiguous, stop and add the hitl label — do not guess.
Write one TodoWrite covering all RED→GREEN→REFACTOR cycles you plan. Don't churn TodoWrite entries before the first test.
For each acceptance criterion:
Tests verify behaviour through public interfaces, not implementation details.
Stage in logical groups. Commit messages should describe the why, not the what:
git add <files for one logical change>
git commit -m "<imperative summary>"
git push origin HEAD
Repeat per logical change. Anything you touched — including files modified during exploration that you decided to keep — must end up in a commit.
Pre-report verification — run this exact check before reporting Step 6:
git status --porcelain
The output must be empty. If it isn't:
git checkout -- <path>).git status --porcelain — repeat until empty.git push origin HEAD.Do not report success while git status --porcelain is non-empty. The next skill in the workflow (pr-open) will refuse to act on a dirty tree, and any orchestrator wrapping these skills will treat that refusal as a chain failure.
If you genuinely cannot decide what to do with a leftover modification (e.g. an unrelated drive-by edit), revert it. Drive-by edits don't belong in this issue's commits.
Output a JSON summary so any caller can pick up the result:
{ "issue": <N>, "branch": "<branch>", "commits": <count>, "filesChanged": <count> }
issue and branch are provided — never re-pick or re-checkout in that case.git status --porcelain before reporting and refuse to report success unless the output is empty.pr-open's job.gh issue list or git checkout main && git pull when both issue and branch are provided.hitl or blocked issues when picking manually.hitl to the current issue without stopping the run — surface ambiguity, don't paper over it.quality-gate's job.development
Use when implementing any logic, fixing any bug, or changing any behaviour. Use when you need to prove code works, when a bug report arrives, or when modifying existing functionality. Do NOT use for config changes, data migrations, or dependency updates.
development
Use when starting a new feature, when requirements are unclear, when asked to write code without a clear spec, or before any non-trivial implementation. Do NOT use for trivial bug fixes or one-line changes.
development
Use when you want authoritative, source-cited code free from outdated patterns. Use when building with any framework or library where correctness matters. Detects the stack from dependency files, fetches official documentation, implements following documented patterns, and cites sources for every framework-specific decision.
development
Use when preparing to ship a feature, release, or deployment. Use before merging to main, creating a release, or deploying to production. Do NOT use for CI-only changes or internal refactors that don't reach production.