Performs an entire task lifecycle from research to shipping upon explicit trigger.
Install
mkdir -p .claude/skills/do-srid && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/11855" && unzip -o skill.zip -d .claude/skills/do-srid && rm skill.zipInstalls to .claude/skills/do-srid
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Do a task end-to-end — implement, PR, CI loop, ship. ONLY invoke when the user explicitly types `/do` or `$do`; never auto-select from a natural-language request, even one that sounds like an end-to-end task.Key capabilities
- →Research tasks and create a branch.
- →Implement code changes.
- →Pass CI and open a PR.
- →Ship changes end-to-end.
- →Support `--no-git` for in-place working tree extension.
How it works
The skill automates the entire development lifecycle from research to shipping, including branching, implementation, CI, and PR creation, with options for review pauses and no-git workflows.
Inputs & outputs
When to use do
- →Implement a new feature end-to-end
- →Perform a full task cycle from research to PR
- →Execute a task without manual git steps
About this skill
Do Workflow
Take a task and do it top-to-bottom: research, branch, implement, pass CI, open a PR, and ship. (Under --no-git, extend the working tree in place — no branch, commit, or PR.)
Mostly autonomous. Do NOT use AskUserQuestion at any point (except during the --review planning pause). Make sensible default choices and keep moving. If the user wants to skip specific steps, they can say so in the prompt — honor it.
Arguments
Parse the arguments string: [--review] [--no-git] [--minimal] [--from <step-id>] <task description or issue-url>
The workflow is forge-aware: it auto-detects whether the repo lives on GitHub or elsewhere during the sync step (see Forge Detection). Only GitHub has an active code path today — Bitbucket/other forges gracefully skip PR-related steps. Tracking: srid/agency#10.
--review: Pause after research for user plan approval viaEnterPlanMode/ExitPlanMode, then continue autonomously. (hickey/lowy now runs post-implement on a concrete diff, so there's no plan-approval moment attached to that step anymore — the review point is pre-implement, before any code is written.)--no-git: Extend the working tree in place — do not create a branch, commit, push, or touch any PR. Research, implement, check, docs, police, fmt, and test all run; git-mutating steps (branch, commit, create-pr) are skipped. Use this when you have uncommitted local work and want the agent to build on it without taking over git state. Feedback from a Bitbucket user in #26.--minimal: Skip the steps whose value is disproportionate on trivially-scoped diffs: docs, hickey+lowy, police, and evidence. The remaining flow runs in order: sync → research → branch → implement → check → fmt → commit → test → create-pr → ci → done. Use this when the change is obviously confined (one-line bug fix, typo, config tweak) and structural review / docs sync / quality gate / PR evidence are overkill — PR comments on small/doruns frequently note this. The four skipped steps each recordstatus="skipped"withreason="--minimal".--from <step-id>: Start from a specific step (see entry points below)
Results Tracking
Every step is bookended by two scripts/do-results calls: step-start <name> before the work begins, and step-end <status> <verification> [reason] after verification. This is what keeps per-step timing accurate — collapsing both into a single end-of-step call produces zero-second durations and worthless timing tables. The script tracks workflow state and emits the final timing table during done.
Trust the script's stdout. Every mutation echoes a one-line confirmation. Treat that line as your confirmation that the write succeeded; the script is the only public surface, and whatever it persists internally is private.
Lifecycle the script tracks intrinsically:
- Step
status—passed,failed, orskipped. Askippedstep must include areason(e.g."non-github forge: bitbucket","--no-git","--minimal","no check command configured"). active— state enum (not a boolean). Set toworkingwhen the workflow starts (sync),waitingwhen the agent is idle waiting for an external process (e.g. background CI), back toworkingwhen that process returns, andfalsewhen done is reached. The stop hook uses this:workingblocks exits;waitingandfalseallow them.- Workflow
status—completedwhen done finishes,failedif halted. Informational.
Workflow fields /do also stashes via set (the script doesn't interpret these — it just remembers them):
forge—github,bitbucket, orunknown. Populated byscripts/steps/syncafter forge detection.noGit—trueorfalse. Reflects the--no-gitflag. Git-mutating steps (branch, commit, create-pr) skip withreason="--no-git"when set.
Commands (invoke with the full path, e.g. .../skills/do/scripts/do-results ...):
init— initialize the workflow's lifecycle skeleton. Echoesinit: startedAt=<ts>.step-start <name>— call before step work. Echoespending: <name>.step-end <status> "<verification>" ["<reason>"]— call after verification. Echoesrecorded: <name> <status> (steps=<count>, pending=<none|name>).step <name> <status> "<verification>" <startedAt> <completedAt> ["<reason>"]— single-call form used byscripts/steps/syncwherestartedAtwas captured in shell. Echoesrecorded: <name> <status> (steps=<count>). Agent code should preferstep-start/step-end.set <field> <value>— set an arbitrary top-level field. Used both for lifecycle (set active waiting,set status completed) and for /do-specific values that sync stashes (set forge github,set noGit false). Echoesset: <field>=<value>.
Discipline:
- Bookend every step with
step-startat the top andstep-endat the bottom. Callingstep-endwithout a priorstep-startis an error; callingstepwithnowfor both timestamps collapses duration to 0 — neither pattern is allowed. Exceptions:syncis recorded byscripts/steps/syncitself, and skipped steps (duration always 0) may use back-to-backstep-start/step-end skipped. - Don't run
dateyourself or guess timestamps —do-resultsresolves UTC internally.
Progress tracking
Drive Claude Code's native todo UI via the TaskCreate tool so the user sees a live checklist of the workflow. At the start of sync (or the chosen --from entry point), seed a task list with the step names in order:
sync, research, branch, implement, check, docs, fmt, commit, hickey+lowy, police, test, create-pr, ci, evidence, done
Emit all TaskCreate calls as parallel tool_use blocks in a single assistant turn — one model round-trip, not one per task. The seeded steps have no addBlocks / addBlockedBy dependencies, so there is nothing to serialize on. Sequential seeding (15 round-trips before any real work) is a regression: it adds latency to every /do invocation and clutters the transcript with 15 wrapper turns of "Task #N created successfully" before sync even starts.
Under --minimal, omit the four steps the flag skips (docs, hickey+lowy, police, evidence) from the seeded list — the user explicitly opted out of them, so they shouldn't clutter the human-facing checklist. The seeded list becomes 11 items in --minimal runs. (Run-inherent skips like --no-git and forge skips stay in the list — see the Skipped steps rule below.)
The scripts/do-results lifecycle still records --minimal-skipped steps with status="skipped" and reason="--minimal" via back-to-back step-start / step-end calls — that's what keeps the final timing table and completed-status logic correct. The task UI is independent of that recording.
At each step boundary, update task state alongside the scripts/do-results script call — they are not redundant. The script's state drives the stop hook; the task list is the human-facing UI. Miss either and the workflow is inconsistent.
Rules:
- Flip to
in_progresswhen a step starts,completedwhen it verifies. One stepin_progressat a time. - Retries stay
in_progress. Ifcheck,test, orciloop through their retry budget, do not bounce the task state back topendingor flicker it — leave itin_progressuntil the step finally verifies (or the retries exhaust and the workflow fails). --from <step>entry points: still seed the full list (minus any--minimalomissions). Mark steps earlier than the entry point ascompletedimmediately after seeding, so the checklist shows a consistent view regardless of entry point.- Skipped steps that stay in the list (e.g.
branch/commit/create-prunder--no-git, or PR steps on non-GitHub forges) go straight tocompleted. Record the skip with a back-to-backscripts/do-results step-start <name>/scripts/do-results step-end skipped ... "<reason>"; the task list just shows the step as done.--minimalskips are not in this category — they're omitted from the seeded list entirely (see above), so there's no task entry to flip. - Failure: if retries exhaust and the workflow halts, leave the failing step
in_progress, markdonecompletedafter the failure summary is written, and runscripts/do-results set status failed.
Steps
sync
Run the scripts/steps/sync script in this skill's directory, passing true or false for --no-git:
.../skills/do/scripts/steps/sync <noGit>
The script:
-
Fetches
originand pinsorigin/HEAD -
If
--no-gitis not set and the branch is behind origin (ahead-count 0), fast-forwards withgit pull --ff-only. Under--no-git, fetching happens but the working tree is not touched — uncommitted work is preserved. -
Prints the dirty-tree hint to stderr (no pause) when the tree is dirty and
--no-gitis not set:Dirty tree detected. Continuing will create a fresh branch on top of these changes. If you wanted the agent to extend your WIP in place without touching git, re-run with
--no-git. -
Classifies the forge from
git remote get-url origin—github.com→github,bitbucket.(coversbitbucket.organd self-hosted servers likebitbucket.juspay.net) →bitbucket, otherwiseunknown. -
Calls
scripts/do-results init <forge> <noGit>thenscripts/do-results step sync passed .... -
Prints
forge=<value>,branch=<value>,defaultBranch=<value>on stdout for downstream steps.
Only github has an active code path today. Both bitbucket and unknown cause forge-dependent steps (PR creation, PR comments, PR edits, CI status) to skip gracefully. Bitbucket support is planned — see srid/agency#10.
Verify: Script exited 0 and printed forge=, branch=, `defaul
Content truncated.
When not to use it
- →When the user does not explicitly type `/do` or `$do`.
- →When constant user interaction and approval are required at every step.
- →When amending, rebasing, or force-pushing commits is desired.
Limitations
- →Only invokes when explicitly typed `/do` or `$do`.
- →Does not use `AskUserQuestion` outside the `--review` planning pause.
- →Never amends, rebases, or force-pushes commits.
How it compares
This skill provides an end-to-end autonomous workflow for development tasks, handling all steps from research to PR and shipping, unlike manual execution of each stage.
Compared to similar skills
do side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| do (this skill) | 0 | 2mo | Review | Advanced |
| github-workflow-automation | 11 | 2mo | Review | Advanced |
| github-actions-templates | 7 | 3mo | No flags | Intermediate |
| hooks-automation | 3 | 4mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by srid
View all by srid →You might also like
github-workflow-automation
ruvnet
Advanced GitHub Actions workflow automation with AI swarm coordination, intelligent CI/CD pipelines, and comprehensive repository management
github-actions-templates
wshobson
Create production-ready GitHub Actions workflows for automated testing, building, and deploying applications. Use when setting up CI/CD with GitHub Actions, automating development workflows, or creating reusable workflow templates.
hooks-automation
ruvnet
Automated coordination, formatting, and learning from Claude Code operations using intelligent hooks with MCP integration. Includes pre$post task hooks, session management, Git integration, memory coordination, and neural pattern training for enhanced development workflows.
cli-commands
windmill-labs
MUST use when using the CLI.
dev
atopile
LLM-focused workflow for working in this repo: compile Zig, run the orchestrated test runner, consume test-report.json/html artifacts, and discover/debug ConfigFlags.
toolhive-release
stacklok
Creates ToolHive release PRs by analyzing commits since the last release, categorizing changes, recommending semantic version bump type (major/minor/patch), and triggering the release workflow. Use when cutting a release, preparing a new version, checking what changed since last release, or when the user mentions "release", "version bump", or "cut a release".