Skill Tracer
Skills › gstack › ship › handoff.md

handoff.md

29 lines · ship/sections/handoff.md at 3f79d81

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1<!-- AUTO-GENERATED from handoff.md.tmpl — do not edit directly -->
2<!-- Regenerate: bun run gen:skill-docs -->

<!-- AUTO-GENERATED from handoff.md.tmpl — do not edit directly --> <!-- Regenerate: bun run gen:skill-docs -->

Raw lines 1 to 2
3## Step 18-H: Handoff without a PR (automation lanes)
4
5Replaces the pr-body section when the run must not open a PR (`--no-pr`, an
6automation lane, an unattended parent said so). Nothing here publishes. What an
7unattended run may do is docs/unattended.md#what-an-unattended-session-may-do.
8
91. Verify-only checks: write Step 16's per-lane pass/fail/skip counts, naming
10 `requires-remote` lanes, to `.gstack/tmp/ship-gate.json` as the pr-body
11 section does, then (with its Issue links flags; ask nothing):
12 ```bash
13 ~/.claude/skills/gstack/bin/gstack-issue-links --base <base> --out .gstack/tmp/issues.json
14 ~/.claude/skills/gstack/bin/gstack-ship-receipt write --base <base> --gate @.gstack/tmp/ship-gate.json --issues @.gstack/tmp/issues.json --out .gstack/tmp/ship-receipt.md
15 ```
162. Send the completion message, identifiers first, in this order: the `SHIP_RECEIPT:`
17 line and receipt block; `branch:` and `sha:` (`git rev-parse HEAD`),
18 pushed or `not pushed`; `inputs:` the plan or issue, the base SHA and the spend
19 cap; `before/after:` one row per claimed metric, measured on base and on this
20 SHA with the command used; `escalation:` the one condition that stops the merge
21 (a `requires-remote` lane, an open gate finding, an unverified claim) or `none`.
22 `issues:` its lines, unpromoted candidates and lookup failures.
23 Full thread ids (`jam_…`) cross-thread.
243. Skip Steps 19 and 21. Run Step 20 with `"version":null` when NO_VERSION applied, then
25 Step 22 with `--body .gstack/tmp/ship-receipt.md`.

Step 18-H: Handoff without a PR (automation lanes)

Replaces the pr-body section when the run must not open a PR (--no-pr, an automation lane, an unattended parent said so). Nothing here publishes. What an unattended run may do is docs/unattended.md#what-an-unattended-session-may-do.

  1. Verify-only checks: write Step 16's per-lane pass/fail/skip counts, naming requires-remote lanes, to .gstack/tmp/ship-gate.json as the pr-body section does, then (with its Issue links flags; ask nothing): ``bash ~/.claude/skills/gstack/bin/gstack-issue-links --base <base> --out .gstack/tmp/issues.json ~/.claude/skills/gstack/bin/gstack-ship-receipt write --base <base> --gate @.gstack/tmp/ship-gate.json --issues @.gstack/tmp/issues.json --out .gstack/tmp/ship-receipt.md
  2. Send the completion message, identifiers first, in this order: the SHIP_RECEIPT: line and receipt block; branch: and sha: (git rev-parse HEAD), pushed or not pushed; inputs: the plan or issue, the base SHA and the spend cap; before/after: one row per claimed metric, measured on base and on this SHA with the command used; escalation: the one condition that stops the merge (a requires-remote lane, an open gate finding, an unverified claim) or none. issues: its lines, unpromoted candidates and lookup failures. Full thread ids (jam_…) cross-thread.
  3. Skip Steps 19 and 21. Run Step 20 with "version":null when NO_VERSION applied, then Step 22 with --body .gstack/tmp/ship-receipt.md.
Raw lines 3 to 26
Runs code bin/gstack-issue-links :13
Runs code bin/gstack-ship-receipt :14
27### Multi-lane runs
29Lanes push a WIP commit after each step and gate a pushed SHA.

Multi-lane runs

Lanes push a WIP commit after each step and gate a pushed SHA.

Raw lines 27 to 29