ship - Pull Request Stage
Invariants
- Always advance the task to
Ready To ShipinTASKS.mdand re-read the tracker to confirm the row moved before handoff. A stale tracker blocks downstream and headless sessions. - Self-heal when intermediate stages were skipped: never abort because the task is not in
Approved. Detect the current section, record aSkipped Stageslist, and disclose it in the PR body and handoff text. - Run available pre-ship checks before creating a pull request.
- Do not auto-merge.
- Keep released-version work for the
releasestage.
Runtime adapters may expose this stage as a slash command, menu action, or natural-language skill invocation. The portable stage name is ship.
Workflow
- Read
AGENTS.md. - Resolve the task ID and read the task document.
- Compute
Skipped Stagesby checking for durable artifacts (see table below). Do not infer skipped stages from the currentTASKS.mdsection — the tracker is exactly what goes stale, so trusting it would re-introduce the bug. - Pre-ship checks are still useful; missing artifacts do not block ship, only get disclosed.
- Run pre-ship checks documented by the project or task.
- Review changed files for unintended edits and secrets.
- Create or reuse an appropriate branch.
- Create a pull request with links to the task document, test report, and the
Skipped Stagesdisclosure. - Move the task to
Ready To ShipinTASKS.md, removing the row from whichever prior section it currently sits in. - Re-read
TASKS.mdand verify the task row is now underReady To Shipand absent from prior sections. If the row is not in the expected section, the move was missed — perform the edit now before handoff.
(This is a verification against the model forgetting the step, not against Edit failing. The check is cheap and catches the most common cause of stale trackers.)
Skipped Stages Detection
Detect from durable artifacts, not from tracker section. The tracker may be stale; the artifacts are the ground truth.
| Stage | Counts as "ran" when this artifact exists |
|-------|-------------------------------------------|
| implement | task doc contains an Implementation Notes section |
| simplify | task doc contains a Quality Gate Notes section with Result: PASS or FAIL |
| test | docs/testing/{ID}-{task-name}.md exists |
| document | docs/learnings/{ID}-{task-name}.md exists, or feature/guide docs were updated for this task |
A stage with no artifact is "skipped". List skipped stages in the PR body and handoff.
Pre-Ship Checks
Run available project checks, such as:
pnpm build
pnpm typecheck
pnpm lint
pnpm test
Use the commands that exist in the target project. If a command is unavailable, record that it was skipped and why.
Pull Request Body
## Summary
- {Change summary}
## Verification
- {Command or report}
## Skipped Stages
- {Comma-separated list, or "None"}
## Workflow References
- Task: docs/task/{ID}-{task-name}.md
- Test report: docs/testing/{ID}-{task-name}.md or N/A
- Feature docs: {path or N/A}
Handoff
Ship preparation complete for task {ID}
Task status: Ready To Ship (verified in TASKS.md)
Skipped stages: {list or "None"}
PR: {url}
Next stage after merge: release