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/ai 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 the user wants to run the project's lint + types + build sequence as a gate before pushing, opening a PR, or merging. Invoked by chained dev skills between phases. Trigger phrases - "/quality-gate", "run the quality gate", "check it builds".
tools
Use when the user wants to verify a PR's feature works at runtime by booting the dev server, exercising the affected UI via Chrome DevTools MCP, and posting a screenshot summary back to the PR. Idempotent — skips if `verified` or `verify-failed` is already on the PR. Trigger phrases - "/pr-verify", "verify this PR", "runtime check the pr".
testing
Use when the user wants a security-focused review pass on a PR with findings actioned as commits on the same branch. Trigger phrases - "/pr-security-review", "security review and fix".
testing
Use when the user wants to open a pull request for an already-pushed branch that implements a specific issue. Idempotent — returns the existing PR if one is already open for the branch. Trigger phrases - "/pr-open", "open the pr", "create pr for this branch".