Implement
Explicit-invoke skill (run via /implement) that implements a piece of work from an existing spec (docs/specs/ or a release-plan step) or set of tickets (docs/tickets/ or GitHub issues labeled ready-for-agent) — using a task branch off master (never committing directly to master), TDD where reasonable seams exist, regular type-checking and test runs, a code-review pass, and a confirmed commit. Also tracks progress on the linked release-plan step (Not Started/In Progress/Done/Postponed), refreshes stale docs/analyze/ documentation, and — with separate confirmation for each of commit/push/PR/branch-deletion — pushes, opens a PR, and after merge closes the linked issue and cleans up the branch. Does not auto-trigger from conversation; the user must run /implement.From its SKILL.md
npx -y skills add uluserdar/claude-ecosystem --skill implementAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
8.1 KB, as published. Nobody here has run it
implement
Implement the work described by the user, sourced from a spec (docs/specs/
or a docs/release-plans/references/.../*.md step doc) or a set of tickets
(docs/tickets/ or GitHub issues labeled ready-for-agent).
Instructions
-
Identify the spec or ticket(s) to implement, and resolve their links:
- If the user names a file or issue, read it directly.
- If the user just says "implement this" right after a
to-specsorto-ticketsrun in this conversation, use that output. - If nothing is in scope, ask the user which spec or ticket(s) to implement rather than guessing.
- Release-plan link: if the spec file lives at
docs/release-plans/references/{plan}/{phase}/{step}.md, capture{plan},{phase}, and{step}from that path. Otherwise, only ask if the user implies a plan is involved. If no plan is linked, skip steps 3 and 10 below silently — do not invent a plan reference. - Issue link: use a directly given issue URL/number if there is one;
otherwise, if the ticket looks GitHub-sourced, try
gh issue list --search "<title>" --label ready-for-agentto find it. If no issue is found (or the project has no GitHub remote), skip steps 11 and 12 below silently.
-
Ensure the target project's
CLAUDE.mddocuments this skill's git workflow policy: look for a## Git Workflow (implement skill)marker heading (createCLAUDE.mdif it doesn't exist yet). If the heading is already present, do nothing — this step is idempotent, same pattern ascreate-analyze's## Project Analysismarker. If absent, add it with exactly this content:## Git Workflow (implement skill) - The main branch is `master`. Direct commits to `master` are never made. - Before any code changes for a task begin, a new branch is created from `master` (naming: `task/<short-kebab-description>`, or `feature/…`/`fix/…` when the change's nature is clear) and all work happens there. - Commits happen only after explicit user confirmation. - Pushing the branch happens only after explicit user confirmation. - Opening a pull request happens only after explicit user confirmation. - Merging is always performed by the user, never by the agent. - After a merge, the local and remote task branch are deleted only after explicit user confirmation. -
If a release-plan step was resolved, mark it in progress: in the main plan doc (
docs/release-plans/{plan}.md), change that step's line to- [ ] [Step {phase}.{step}: {title}](references/{plan}/{phase}/{step}.md) (In Progress)— only the status word changes; leave the checkbox, link, and title exactly as they are. Touch no other step. -
Check the current branch. If it's
master, create and check out a new task branch frommasterbefore touching any code (naming:task/<short-kebab-description>, orfeature/…/fix/…when the change's nature is clear). If already on a non-masterbranch, keep using it — don't create another one. -
Use the
/tddskill where reasonable, pre-agreed test seams exist — don't force TDD onto glue code, config, or wiring that has no natural seam. -
Run type-checking regularly as you go, and run single test files regularly rather than waiting until the end.
-
Run the full test suite once, at the end, before considering the work done.
-
Once implementation is done, use the
/code-reviewskill to review the work. -
Ask the user for explicit confirmation before committing. If confirmed, commit the work to the current task branch.
-
If a release-plan step was resolved, update its status:
(Done)if the step's acceptance criteria are met by the commit, or(Postponed)with a stated reason if work stops incomplete. Never touch other steps or the plan's phase/step structure — if implementation surfaces new steps or scope the plan doesn't cover, tell the user and point them atcreate-plan/plan-writerto extend it; do not edit structure here. -
Check whether the target project's
CLAUDE.mdhas a## Project Analysismarker heading (added bycreate-analyze). If it doesn't, skip this step silently — there's nothing to refresh. If it does, map the files touched by this implementation's commit(s) toproject-analyze's categories (schema/migration files → database; API/route/handler files → backend, andsystem/api-documentation.mdif present; UI/component files → frontend; test files → test; broad structural changes → system). If any category's docs look impacted, tell the user which docs look stale and why, then invoke theanalyzersubagent directly via theAgenttool — not through theproject-analyzeskill wrapper — passing that scoped category list, the same wayplan-writerdoes when it detects a gap. Model: readagentModel["analyzer"]from.claude/claude-ecosystem-settings.json, falling back toagentModel.default; pass whichever resolves as themodelparameter, or omitmodelentirely if neither is set. -
Ask the user for explicit confirmation before pushing the branch.
- If declined: stop here. Tell the user push/PR/merge is on them, and
that re-running
/implementlater will pick up post-merge cleanup. - If confirmed: push the current branch, then ask the user for a
separate explicit confirmation before opening a PR.
- If declined: stop here. Tell the user the branch is pushed and the PR/merge is on them.
- If confirmed:
gh pr create, includingCloses #<n>in the body when an issue was linked in step 1 (so GitHub auto-closes it on merge). Report the PR URL back to the user.
- If declined: stop here. Tell the user push/PR/merge is on them, and
that re-running
-
If an issue was linked in step 1, check whether the work has been merged:
- Look up the PR for the current branch with
gh pr view --json state,mergedAt. If no PR is found for the branch, ask the user directly whether it's already been merged some other way. - If not merged: skip cleanup and tell the user it's pending a merge.
- If merged: close the linked issue if it's still open
(
gh issue close <n> --comment "Implemented and merged in <branch>."), then ask for explicit confirmation to delete the branch. If confirmed, delete it both locally (git branch -d <branch>) and on the remote if it exists (git push origin --delete <branch>).
- Look up the PR for the current branch with