skills/do-work/SKILL.md
Core execution loop for implementing tasks. Use when asked to 'do work', 'implement', 'build this', 'fix this', 'plan execute clear', 'plan then execute', 'work loop', or when working through a plan or backlog item.
npx skillsauth add arndvs/ctrlshft do-workInstall 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.
Output "Read Do Work skill." to chat to acknowledge you read this file.
Pipeline position: /grill-me → /write-a-prd → /architect → /prd-to-issues → /do-work → shft
Emit a session-start event so the HUD tracks this work:
source ~/dotfiles/bin/write-hud-state.sh
write_hud_event "info" "do-work: started — $TASK_SUMMARY"
Replace $TASK_SUMMARY with a short description. Emit again after each commit (do-work: committed — <message>) and at session end (do-work: completed).
Read any referenced plan, PRD, or GitHub issue. If none provided, clarify the task with the user before proceeding.
If the task has not already been planned, create a plan for it. Break large tasks into vertical slices (tracer bullets) — each slice should touch all layers end-to-end rather than building layer by layer.
Skip this step if a plan or PRD already exists.
Read a sample existing file of the same type before creating new ones — follow the conventions already established in the codebase.
For backend code: use red/green/refactor, one test at a time in a tracer-bullet style.
Do not write all tests upfront — write one, make it pass, then move to the next.
For frontend code: implement directly without TDD.
Run the project's feedback loops until they pass cleanly. Auto-detect from the workspace:
test, typecheck, type-check, lint scripts. Run with the project's package manager (npm/pnpm/yarn/bun).test, lint, phpstan scripts. Run with composer run.test, lint, check targets. Run with make..husky/ or .pre-commit-config.yaml exists, the commit step will trigger them automatically.If no feedback loops are detected, tell the user and ask what validation commands to run.
Once validation passes, commit the work using the atomic-commits skill (one logical change per commit, conventional commit message).
If this is the final slice and the work is ready for review, run the pr-preflight skill end-to-end before pushing. Preflight audits main..HEAD, so the commit must exist before it can inspect the diff. This catches the class of issues that iterative Copilot reviews find one-at-a-time, so review is one pass instead of many.
Skip this step when using Commit mode for intermediate checkpoints — preflight runs once before the final push, not on every checkpoint.
After preflight passes, use the atomic-commits skill in Ship mode — push and open a PR.
If this is one phase of a multi-phase plan, or if context usage is over 40%, follow the standard handoff protocol (@~/dotfiles/instructions/handoff.instructions.md) — commit all work, persist the remaining plan to working/, and provide the pickup command.
Include @-references to research.md, PRD issues, and key files modified this session.
development
Use when implementing UI, checking dark/light mode, or validating animations — adds a visual feedback loop via browser screenshots so frontend changes are verified, not assumed.
development
Use when Claude Code sessions had many manual approval ("press 1") prompts or when auditing hook permissions; identifies which Bash commands required approval.
tools
Use after merging a PR or during periodic cleanup to archive plan-mode files by linking them to merged PRs.
testing
Use when stress-testing a plan against the project's domain model — grills the design, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise.