ticket-pipeline · git:20261006.876cce4 · 2026-10-06 · sha256 b3f47277feef5b58
ticket-pipeline git:20261006.876cce4A
Immutable. This exact content never changes and is served at /api/v1/blob/b3f47277feef5b58.
--- name: ticket-pipeline description: Use when running a ticket from discovery through a draft PR. Sequences how, plans, verify-loop, TDD, verification, review, optional interrogate, then pr. license: MIT disable-model-invocation: true --- # Ticket pipeline Run a ticket from discovery through a **draft** pull request. `safety-overrides` beat every step. Put evidence in the PR body under the headings this skill names. Then run the status script. Do not argue in prose about which steps are done: ```text python <this-skill>/scripts/pipeline_status.py --pr-body BODY.md ``` Re-run until the script prints `missing: 0`. ## Sequence 1. **how** — build a mental model before changing code. Heading: `## How`. 2. **writing-plans** — plan in the pull request body. Heading: `## Plan`. 3. **verify-loop** — define the deterministic check, run it red (`VERIFY_FAIL`), then iterate. 4. **test-driven-development** — if the check is a test: failing test, then minimal code. Heading: `## TDD` (include `red-green`). 5. **verification-before-completion** — paste fresh `verify-loop` runner output. Heading: `## Evidence`. 6. **code-review** — Standards and Spec axes on the branch diff. Heading: `## Code review`. 7. **interrogate** — required for one-way doors (money movement, schema or data migrations, auth, data deletion, infra or prod config, licences). Heading: `## Interrogate`, or write `N/A (two-way door)`. 8. **pr** — draft pull request body. Run `pr/scripts/check_pr_body.py`. Ticket links are `Refs #N` only. ## Hard rules (also in safety-overrides) - Draft PRs. Never mark ready. Merge only as `trust_level` in safety-overrides allows. - Push only this branch. Rewrite with `--force-with-lease` only. - No production credentials, live infrastructure, runtime package installs, or secret-using CI jobs. - No tracker or chat writes from a ticket. - Skip a blocking approval gate only with `Ruling: what / why` in the PR body. ## Stacked pull requests When one ticket is too large for a single reviewable PR, split it into layers: - One concern per layer. Dependencies belong in the same layer or a lower one. - Open the next layer while the lower one is still in review. - Merge bottom-up. When merging through the API, use the asynchronous merge endpoint for stacks. - Prefer `gh stack` for cascading rebases. If stacks are unavailable, chain pull requests with plain base-branch targeting.