From specpilot
Implement the next ticket from the Ready column and ship it. Use this when the user runs /specpilot.implement or asks to implement, build, or ship the next ticket.
How this skill is triggered — by the user, by Claude, or both
Slash command
/specpilot:specpilot.implementThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Implement the next ticket from the **Ready** column and ship it.
Implement the next ticket from the Ready column and ship it.
Works with tickets created by either
/specpilot.refine(board-first) or/specpilot.specify(spec-first) — both land in Ready with a linked spec branch.
$ARGUMENTS may contain:
--once — process one ticket then stop--dry-run — show which ticket would be picked, do nothing--from <step> — resume from a specific step: implement, review, test, ship, mergeRead .specpilot.json from the project root. If missing, tell the user to run /specpilot.setup first and stop.
From config, identify:
role: "spec" — read-only during implementrole: "feature" — implement, test, build, and ship theseimplement, test, build, and waitForCI flagsgh project item-list <projectNumber> --owner <owner> --format jsonstatus exactly matches config.statuses.ready (read from .specpilot.json — do NOT hardcode "Ready" or any other string)assignee is set in config, additionally filter by that assignee--dry-run, print the ticket title and stopconfig.statuses.inProgress value)config.github.assignee using gh project item-edit with the assignee field (if assignee is set in config)012-feature-name)specsDir/member/012-feature-name/, specsDir/012-feature-name/). Use whichever location contains the spec files.spec.md, plan.md, and tasks.mdFor each feature repo (role: "feature"):
git checkout main && git pull origin maingit checkout -b <branch-name> (same branch name as the spec branch)Run /speckit.implement <branch-name> from speckit.workspaceDir.
Only repos with implement: true (default) receive code changes.
Repos with implement: false still get a PR but no speckit changes.
Review changes in each feature repo for:
.specify/memory/constitution.md exists in the spec location)Apply any fixes found.
For each feature repo:
test is set → run it (up to 3 attempts, apply fixes on failure)build is set → run it (up to 3 attempts, apply fixes on failure)For each feature repo with changes:
git add -A && git commit -m "<ticket title>"git push origin <branch-name>gh pr create --title "<ticket title>" --body "Closes #<issue-number>"PRs are now open. Ask the user before proceeding:
"PRs are ready. Would you like to: 1. Test it yourself first (I'll wait) 2. I'll test it for you using Playwright 3. Proceed directly to CI check and merge"
For each open PR:
If waitForCI: false → skip, proceed to merge
If waitForCI: true → actively monitor CI status:
gh pr checks <pr-number> --repo <owner>/<repo> to get the current statusDo NOT stop or hang after pushing. You must actively run the gh pr checks command repeatedly until you get a definitive result (pass or fail).
Merge feature repos first, then spec location last:
gh pr merge <number> --squash --delete-branchIf spec is a folder inside the project (not a separate repo), commit and push directly to main instead.
Post a comment on the GitHub Issue:
PRs merged:
- [repo-name#N](url)
- [spec-repo#N](url)
config.statuses.done in the GitHub Projectconfig.github.assignee is still assigned to the ticket--once, stopProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
npx claudepluginhub eduardo-caua/cogloop --plugin specpilot