Problem
Implementation is the only phase of the ticket lifecycle with no governing skill. The next-steps menu after plan / design-and-plan defines its implement options as "no skill invocation; implement manually" — sound in-session, where the conversation still carries the ticket and ratified design decisions, but a fresh session handed "Implement path/to/plan.md" is ungoverned: nothing resolves the ticket contract, enforces task order or per-task acceptance criteria, runs the closing quality gates, presents post-implementation next steps, or emits lifecycle events (#984, #985) during the longest phase of the flow. Cross-session and cross-harness handoffs (plan under one model or harness, implement under another) therefore behave differently from same-session implementation.
Proposed solution
A user-invocable implement-plan skill as the canonical implementation path for both same-session and handoff invocation, composed from the existing shared artifacts (ticket-source resolution, lifecycle-events partial, option format) rather than duplicating them:
- Resolves the plan — explicit path, else already-in-context (same-session), else the newest
*_plan.md in the ticket's artifact directory — announcing the resolved path and timestamp before executing, and asking when none is found. Resolves the ticket — explicit source, else the branch manifest's stored ticket_url, else plan provenance. The ticket's acceptance criteria are the contract; the plan is the mechanism.
- Executes tasks in plan order against per-task acceptance criteria, raising material divergences to the user rather than silently rerouting, then runs the plan's Verification gates. The plan artifact stays read-only; progress is carried by lifecycle events, not artifact mutation.
- Emits lifecycle events (
skill.started, per-task skill.progress, skill.completed, input.requested/input.received at the closing menu).
- Closes with its own next-steps menu (review branch / orchestrated review / create PR) whose review recommendation is made from the observed diff, not predicted at plan time.
The next-steps-after-plan partial collapses its two implement options into one 🚀 Implement option that renders an implement-plan invocation; work-triviality calibration survives as a ➕ context line on that option.
Acceptance criteria
Must have
Problem
Implementation is the only phase of the ticket lifecycle with no governing skill. The next-steps menu after
plan/design-and-plandefines its implement options as "no skill invocation; implement manually" — sound in-session, where the conversation still carries the ticket and ratified design decisions, but a fresh session handed "Implement path/to/plan.md" is ungoverned: nothing resolves the ticket contract, enforces task order or per-task acceptance criteria, runs the closing quality gates, presents post-implementation next steps, or emits lifecycle events (#984, #985) during the longest phase of the flow. Cross-session and cross-harness handoffs (plan under one model or harness, implement under another) therefore behave differently from same-session implementation.Proposed solution
A user-invocable
implement-planskill as the canonical implementation path for both same-session and handoff invocation, composed from the existing shared artifacts (ticket-source resolution,lifecycle-eventspartial, option format) rather than duplicating them:*_plan.mdin the ticket's artifact directory — announcing the resolved path and timestamp before executing, and asking when none is found. Resolves the ticket — explicit source, else the branch manifest's storedticket_url, else plan provenance. The ticket's acceptance criteria are the contract; the plan is the mechanism.skill.started, per-taskskill.progress,skill.completed,input.requested/input.receivedat the closing menu).The
next-steps-after-planpartial collapses its two implement options into one 🚀 Implement option that renders animplement-planinvocation; work-triviality calibration survives as a➕context line on that option.Acceptance criteria
Must have
implement-planresolves plan and ticket with zero arguments in a fresh session on a planned branch, and announces the resolved plan path and timestamp before executingemit-eventhelpernext-steps-after-planpartial offers three options, with Implement rendering animplement-planinvocation carrying plan and ticket pathscomplexity-classification.mdrow updated;next-steps-after-review's separate findings-flow wording is a different flow and stays)