oliverspec-ship
Skill0 starsChanged 3 months agoMITView on GitHub
Ship a babysat OliverSpec project — merge every PR in its GitHub stack bottom-up and move the Linear project to Completed. Use when the user wants to ship, finish, close out, merge, /oliverspec ship, or oliverspec-ship after oliverspec-babysit has cleared the stack.
In this repository9 other files it gives its agents.
- babysitSkill
- dashboard-uiSkill
- factorySkill
- lab-notebookSkill
- oliverspec-applySkill
- oliverspec-babysitSkill
- oliverspec-exploreSkill
- oliverspec-proposeSkill
- oliverspec-scopeSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 2 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 40
If no open PRs exist but the project has unmerged work, say so and stop.
- Very specific: line 50
If anything fails this check, stop — report which PRs aren't ready and tell the user to run oliverspec-babysit first.
- Distinctive: line 56
If the stack should only partially ship (user asked for a subset), merge the deepest ready contiguous group only, and report which PRs …
- Very specific: line 57
After merges, gh stack sync --prune to fast-forward trunk and clean up merged local branches/worktrees
- Very specific: line 58
Verify: gh pr list for the affected branches should show them merged.
- Very specific: line 92
If the stack isn't ready, stop and hand back to oliverspec-babysit rather than merging anyway
- Very specific: line 93
Ask before merging if the user only asked to "check" or "review" status rather than explicitly ship/merge/finish
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Ship a finished OliverSpec project: merge its GitHub stack bottom-up and mark the Linear project Completed.
This is the last step of the workflow — it commits to trunk and closes the Linear project. Only run it once the stack is actually clean.
Stacks are GitHub stacked pull requests (gh stack), not Graphite.
Input
- Linear project name (or infer from conversation / recent apply/babysit)
- Optional: subset of PR numbers (default = the project's full open stack)
Announce: Shipping OliverSpec project: <name>.
Steps
1. Discover the PR set
- Resolve the Linear project (
list_projects/get_project) - Load tickets (
list_issueswithproject); for each,get_issueto find its git branch name and any linked PR - Collect open PRs: issue
links/ attachments pointing at GitHub PRs,gh pr listfiltered to those branches, andgh stack view --json(orgh stack checkout <stack-number>first if the stack isn't checked out locally) - Build the working set: all non-merged, non-closed PRs for this project's tickets
If no open PRs exist but the project has unmerged work, say so and stop. If everything is already merged, skip straight to step 4 (project status).
2. Verify the stack is actually ready
For every PR in the set, gh pr view <n> --json statusCheckRollup,reviews,reviewDecision,mergeable,mergeStateStatus:
- No unresolved actionable review threads
- Real CI is green (stack merge-readiness / merge-queue-position statuses don't count either way)
mergeableis true and there are no pending rebase/conflict states
If anything fails this check, stop — report which PRs aren't ready and tell the user to run oliverspec-babysit first. Do not force a merge past red CI or unresolved comments.
3. Confirm and merge bottom-up
- Show the merge plan: stack number, PR order bottom-to-top, base branch each targets
- Merge with
gh stack mergestarting from the bottom of the stack — a mid-stack merge always takes everything below it with it, so merging the top PR merges the whole stack in one call when it's all ready - If the stack should only partially ship (user asked for a subset), merge the deepest ready contiguous group only, and report which PRs remain open
- After merges,
gh stack sync --pruneto fast-forward trunk and clean up merged local branches/worktrees - Verify:
gh pr listfor the affected branches should show them merged;git worktree listshould have no leftover worktrees for merged branches
4. Close out Linear
- For each ticket whose PR just merged,
save_issueto move it to Done (or the team's completed-equivalent fromlist_issue_statusesif the name differs) - Move the Linear project status to Completed (
save_projectwithid= the project andstate: "Completed") — only when every in-scope ticket is merged/Done. If some tickets remain open (partial ship), leave the project at its current state and say why - Optionally add a closing comment/link on the project or PRD/TRD noting the shipped PRs
5. Final summary
## OliverSpec Ship Complete
**Project:** <name> (<url>) — status: Completed
**Stack:** #<stack-number>
| Ticket | Title | PR | Merged into |
|--------|-------|----|--------------|
| LEM-123 | ... | url | main |
### Not shipped (if partial)
- <ticket/PR — reason>Guardrails
- Verify before merging — CI green and comments clean, same bar as
oliverspec-babysit's completion criteria. If unsure, re-run babysit instead of forcing it - Merge bottom-up with
gh stack merge— never merge PRs individually out of order; a mid-stack merge takes everything below it - GitHub stacks, not Graphite — never
gt gh stack sync --pruneafter merging to fast-forward trunk and remove stale branches/worktrees- Move tickets to Done, then the project to Completed — only mark the project Completed when its in-scope tickets are actually merged; a partial ship leaves the project status alone
- Never push directly to trunk outside of
gh stack merge's own merge commits - If the stack isn't ready, stop and hand back to
oliverspec-babysitrather than merging anyway - Ask before merging if the user only asked to "check" or "review" status rather than explicitly ship/merge/finish
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

