/plan-pull-request is not a gstack-shipped skill; it's a separately
installed global skill. Referencing it as a sibling in our SKILL.md
and docs/skills.md created a dangling dependency from the maintainer's
perspective. The skill stands on its own: it reads a real diff and
writes decomposition.md. Whatever pre-decision workflow the user runs
beforehand is the user's setup, not this skill's documented contract.
- Stripped "Relationship to /plan-pull-request" section from
plan-rollout/SKILL.md.tmpl
- Removed the "If invoked before code exists, point at /plan-pull-request"
redirect — now a simple "nothing to decompose, write a slice first" exit
- Reworded the docs/skills.md table row to describe what the skill does
on its own, no external pairing claims
- Tightened the description frontmatter accordingly
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Decomposition-as-artifact. Reads the working diff (committed + staged +
unstaged + untracked) plus SYSTEM.md if present, writes decomposition.md
with per-slice file lists, reader-time estimates, dependency edges, and
contract-graph reconciliation flags.
Positioned as the post-decision consumer to /plan-pull-request:
- /plan-pull-request decides shape in conversation (pre-code).
- /plan-rollout analyzes a real diff and writes the artifact (post-code).
Triggers narrowed to "decompose the diff" / "write a decomposition" /
"plan-rollout" to avoid collision with /plan-pull-request's pre-decision
triggers.
MVP boundaries (explicit):
- No rollout.md, no /spill-check, no /ship-/review integrations.
- No SYSTEM.md scaffolder — humans write the schema by hand or copy the
example.
- Reconciliation is informational, never blocking.
- Step 2 explicitly handles uncommitted working-tree state via
`git diff <base>` (not `<base>...HEAD`) plus
`git ls-files --others --exclude-standard` for untracked.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>