shipyard
Skill1 starsChanged 4 months agoApache-2.0View on GitHub
Orchestrate a dependency-aware parent issue from its deterministic integration branch into one final PR. Use for issue-blueprint parent issues that need child worktrees, merges, final_check, checks, reviews, and PR routing.
3 other projects use a version of this.
Adopted by
Most recently taken up by
- itamaker/skillstheir own version, first seen Nov 8, 2026
- Crush-Rewards/claude-skillstheir own version, first seen Oct 20, 2026
- SeoungminKwon/claudeSkilltheir own version, first seen Jun 1, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- Crush-Rewards/claude-skills★ 0same name
- itamaker/skills★ 0same name
- SeoungminKwon/claudeSkill★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository19 other files it gives its agents.
- AGENTS.mdAGENTS.md
- agent-aeoSkill
- agent-memorySkill
- beanquerySkill
- ci-repairbaySkill
- delegated-developmentSkill
- ghSkill
- issue-blueprintSkill
- issue-workbenchSkill
- minifluxSkill
- og-imageSkill
- opSkill
- pencil-to-figma-migrationSkill
- pr-comment-sweepSkill
- pr-launchpadSkill
- repo-surveyorSkill
- review-checkpointSkill
- review-repairbaySkill
- skill-optimizerSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 2 are distinctive, and 3 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.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 32
Run scripts/inspect_parent_issue.py <parent_id> --json.
- Distinctive: line 39
Read only issue-linked or named material needed for runnable children.
- Distinctive: line 63
Run each repair group through the frozen-wave contract with Workbench children in parallel.
- Very specific: line 73
Default unspecified pytest runs to uv run pytest -q.
- Very specific: line 78
After every child is merged and final_check passes, run exactly one parent $review-checkpoint with mode=review_only, …
≈ “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
Shipyard
Execute an Issue Blueprint parent graph without duplicating child work. Workbench implements and repairs children; Review Checkpoint owns the review gate; CI and Review Repairbay own PR health; Launchpad creates the PR.
Inputs and mode
parent_issueis required as a GitHub issue number or URL.--integration-worktreeoptionally selects an existing absolute worktree path.- Normalize
parent_issueonce to numericparent_id, accepting123,#123, or a GitHub issue URL. Use onlyparent_idfor branch naming, inspection, and manifest commands. - Infer repository from the GitHub remote, base from the repository default, and the integration branch with
issue-workbench/scripts/branch_name.py integration <parent_id>. - Execute by default. Inspect-only behavior requires an explicit inspect, plan, dry-run, or report request.
Direct invocation owns $agent-memory; nested skills defer it to Shipyard.
State and ownership
- The parent issue is durable truth; child bodies define dependencies and PRs define durable implementation progress.
.context/shipyard-manifest.jsonis the single trusted local run artifact;manifest.pyalone validates handoffs, lifecycle transitions, validation, and review events..context/progress.mdonly points to it.- A child is
done-localafter its recorded branch is merged into the integration branch. Merging the final Shipyard PR makes that completion durable. - Load each nested skill once, immediately before first use. Query manifest coordination as
issue,head_sha,status, andchecks; inspect full diffs only for incomplete or surprising evidence or merge conflicts. - A frozen wave is one issue set plus
wave_base_sha: no child merges until every handoff isPASSwithoutneeds_child_fixand every retained base still matches; then all merge in ascending issue order. Pending or failed work keeps the whole wave unmerged. - Validation and review evidence are HEAD-bound; any code-changing repair invalidates evidence for the prior HEAD.
1. Preflight
- If provided, require an absolute integration worktree and enter it. Require a clean worktree, fetch remotes, and resolve the default and expected integration branches. Switch to an existing local/remote expected branch; otherwise rename a current non-default branch with no upstream, or create the expected branch from the remote/default base. Never rename the default branch.
- Run
scripts/inspect_parent_issue.py <parent_id> --json. Stop if it cannot resolve the parent, branch policy, graph,final_check, or runnable state; reportmode=default_branch_blockedrather than executing on the default branch. Initialize the manifest before launching children:
python3 <shipyard_dir>/scripts/manifest.py init <parent_id> <integration_branch> --base-branch <default_branch>
Read only issue-linked or named material needed for runnable children.
2. Run a frozen wave
- From the clean integration branch, select the ascending set of current runnable non-final children. Capture that exact set and
wave_base_sha=$(git rev-parse HEAD); neither may change before the complete wave is integrated. For each child, require an absent deterministic sibling path, then run
integration_child.py start <issue> --worktree-path <path> --integration-branch <integration_branch>to create a clean worktree on a new branch fromintegration_branchatwave_base_sha. A path removed after an earlier wave may be reused. Spawn children in parallel withfork_turns=noneusing this complete contract:Use $issue-workbench <child_issue> worktree_path=<absolute_child_worktree> handoff_mode=integration_branch integration_branch=<integration_branch>Workbench enters the prepared worktree and runs the child's native subagent review gate; it never creates the worktree or launches a PR. Do not probe running children or remove running, failed, conflicted, or otherwise unmerged worktrees; use absolute paths for mutations once multiple worktrees exist.
- Ingest every returned handoff directly into the canonical manifest through
manifest.py ingest-child --file <path>as it returns.manifest.pyvalidates it; never reconstruct or separately validate its JSON. Re-append durable child decisions through Agent Memory's append helper. - Enforce the frozen-wave barrier. Rerun an unmerged owning Workbench child for review fixes. If a defect belongs to a
done-localpredecessor, follow Repair waves. Stop on base drift; never refresh the wave base or children. - Merge the complete PASS wave with
integration_child.py merge ... --expected-head <head_sha>, recording each success throughmanifest.py merge-child --head-sha <head_sha>. Do not validate, re-inspect, reopen diffs, or print detail between merges. Preserve earlier successful merges if a later child conflicts; stop with that child's issue, branch, worktree, and conflicted files. - After the complete wave is merged and every merge is recorded, remove each child worktree with
git worktree remove <absolute_path>without--force, then delete its recorded local branch withgit branch -d <branch>. Retain and report any worktree or branch that cannot be removed safely. Never remove the integration worktree or any unmerged child branch. - Re-inspect dependencies. Before another non-final wave, run a wave check only for cross-child risk not covered by child checks. If
final_checkis next, skip wave validation; never rerun child checks immediately before it.
Repair waves
- Never continue work on a merged child branch. Group all child-owned findings from one completed review by issue, capture the current integration
HEADand issue set, then start one newissue-<n>-repair-<short-head>branch in a clean worktree per issue from that HEAD using existingbranch_slugandworktree_pathinputs. - Run each repair group through the frozen-wave contract with Workbench children in parallel.
- If an open implementation wave reports a defect owned by an already-merged predecessor, merge nothing from the open wave. Repair the predecessor in a fresh frozen repair wave, retire the old unmerged worktrees/handoffs without reusing them, and relaunch the entire invalidated wave from the new integration
HEADwith freshbranch_slug=retry-<short-head>branches and worktrees.
3. Final check
- Repeat frozen waves while non-final children become runnable. Stop before
final_checkwhen any non-final child remains blocked, pending, or missing with no independent runnable work. - Require exactly one
final_check. After every non-final child is merged, run its named complete integration commands directly on the clean integration branch. It is verification-only: do not launch a child, review it separately, or edit code. - Route failures to the child owning the failed criterion; ask only when ownership is unclear.
- Record PASS evidence with
manifest.py set-validation --file <event_file>. Reuse it only when its final issue andhead_shamatch the currentfinal_checkandHEAD.
Default unspecified pytest runs to uv run pytest -q; on failure, rerun only the failing slice with diagnostic verbosity. Record known readiness hangs instead of running a predictably blocked broad suite.
4. Exact-head review and PR
- Inspect only structural guards, compact diff statistics, and merge topology.
- After every child is merged and
final_checkpasses, run exactly one parent$review-checkpointwithmode=review_only,manifest_path=<absolute manifest>, and memory skipped. It alone runs the final native subagent review and writes review events. - Route findings as
child:<issue>,final_check,integration,stale,non_actionable, ortooling_unavailable. Child and final-check defects use a fresh Repair wave; Shipyard fixes only merge conflicts, PR body/progress, or final assembly. After any code fix, rerun final check and this exact-head gate. Do not loop on stale, non-actionable, or unavailable-tool findings. - A blocked or unavailable review stops publication. After any review-fix commit, rerun final-check commands and replace the SHA-bound validation event.
- Invoke nested
$pr-launchpadwithshipyard_manifest=<absolute manifest>and memory skipped; Launchpad alone validates manifest reuse at currentHEAD.
5. PR health
- Take one health snapshot after PR creation and choose exactly one repair owner. Before invoking it, capture
pre_repair_head=$(git rev-parse HEAD)and the blocker set. - For failing GitHub Actions, invoke nested
$ci-repairbaywith an explicit fix request and delegated authority to make scoped commits and push them. For actionable review threads, invoke nested$review-repairbayinclear-allmode with authority for scoped fixes, commits, pushes, replies, resolutions, and re-fetches. Skip nested memory boundaries and never run both owners concurrently. - Trust
status=PASS|BLOCKED|PENDINGunless missing or inconsistent. Return pending work; stop if the same owner returns the same status for the same blocker set at unchangedHEAD. - Compare current
HEADwithpre_repair_head. Remote-only thread changes leaveHEADunchanged: do not rerun code gates; take a fresh snapshot only when remote state changed. IfHEADchanged, require the repair owner to have committed and pushed it, rerunfinal_check, replace SHA-bound validation, rerun the exact-headmode=review_onlygate until the manifest accepts PASS, push/confirm that reviewedHEAD, then take a fresh snapshot without recreating the PR. - Continue one owner at a time until clear. Ignore resolved, outdated, informational, approval, summary, or waived unavailable checks; stop on unchanged repeated blockers, human approval, merge permission, or external-provider blockers.
Output
Inspect-only returns the parent URL, branch policy, child state/blockers/PR/next action, runnable set, and stop reason. Execution returns the parent and PR URLs, integration branch, manifest path, merged issues, checks, routing, and stop reason. Normal children use one compact line containing issue, head SHA, status, and checks; add branch, worktree, base, or diff details only for blockers or requested diagnostics.
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.

