name: pkg-ship description: Implement a roadmap package end-to-end — read spec, branch in a worktree, implement with tests, sweep for stale call sites, open PR, fix CI, resolve conflicts. invocation: /pkg-ship <pkg-name>
/pkg-ship <pkg-name>
End-to-end package implementation skill. Codifies the spec → branch → implement → test → PR sequence that has shipped pkg42, pkg43, pkg54a-d, pkg55-A.0/A.1, pkg63, pkg67, pkg70, pkg72, pkg74, pkg82, pkg83, pkg84, pkg85-B, pkg85-C this project.
When to use
When the owner says "implement pkg88" or "start on pkg43" or hands you a spec to land. NOT for: research-only sessions (use /architect instead), spec-filing without implementation (use /file-followup), or hardware-verification of an already-merged PR (use /verify).
Step 0 — Worktree & pyd hygiene preamble (MANDATORY)
Before any code:
cd <repo-root>(or the active repo path the owner referenced — never silently switch worktrees per CLAUDE.md §Build & Verification).pwd && git rev-parse --show-toplevelto confirm location.- Scan for shadow
.pydfiles that could mask fresh builds:
Should produce no output. If shadows exist, DELETE them before proceeding. See memoryGet-ChildItem -Path . -Filter "astroray*.pyd" -Recurse -Force | Where-Object { $_.FullName -notmatch "(\\build_cuda\\|\\build_tcnn\\|\\\.claude\\worktrees\\)" } | ForEach-Object { $_.FullName }stale_pyd_locationsfor the failure mode. - Confirm main is current:
git fetch origin && git log -1 --oneline origin/main.
Step 1 — Read the spec
Read .astroray_plan/packages/<pkg-name>*.md end-to-end. Specifically capture:
- Frontmatter:
Track,Status,Depends on,Estimated effort - Goal section (before/after)
- Specification phases — your scope is the first non-done phase
- Acceptance criteria — write them down; each must trace to a measured number in the final PR body
- Non-goals — they bound what NOT to widen into
- Open design questions — STOP and ask the owner if any are blocking; do not silently pick
If the spec frontmatter says Status: research signed off — not yet ready to implement or similar, abort the skill and surface that the spec needs promotion or owner answers first.
Step 2 — Create worktree
git worktree add "<repo-root>\.claude\worktrees\<pkg-name>" -b <pkg-name> main
Then enter it:
EnterWorktree path="C:\\Users\\hgcom\\OneDrive\\Astroray\\Astroray_repo\\Astroray\\.claude\\worktrees\\<pkg-name>"
Verify with pwd + git rev-parse --show-toplevel per CLAUDE.md §Build & Verification. ABORT if either is wrong.
Step 3 — Implement with tests
Standard implementation discipline:
- Follow the spec's "Files to create" + "Files to modify" lists literally; don't widen scope.
- Cite every non-trivial algorithm per CLAUDE.md §6 (paper + permissively-licensed reference).
- Match existing code style (CLAUDE.md §3 — surgical changes).
- For multi-week packages, the spec defines phases. Implement only the phase(s) you were dispatched for. Don't try to land all phases in one session.
- Write tests alongside implementation (per the spec's acceptance criteria). Don't defer tests "for later".
Step 4 — Pre-push call-site sweep (CRITICAL — captures pkg63 / motion-vectors / OptiX-denoiser CI failure pattern)
Before opening a PR, audit for stale call sites of every signature you changed:
# List every public function/class signature you changed
git diff origin/main --name-only -- '*.h' '*.hpp' '*.py' | ForEach-Object {
git diff origin/main -- $_ | Select-String "^[-+].*\b(class|struct|def|void|int|float|auto)\b" | Out-Host
}
Then for each changed signature, Grep the entire repo to find call sites. Treat tests, mocks, stubs, and Python bindings as first-class call sites. If any call site uses the old signature, update it in the same commit as the signature change — NOT in a follow-up CI fix.
This is the cheapest 30-second check that has caught a recurring failure mode (per /insights analysis: 25+ buggy first-pass implementations across the project history).
Step 5 — Run the full local test suite
cmake --build build_cuda --config Release -j 8
pytest tests/ --ignore=tests/test_wavefront_parity.py -v --tb=short -x
The --ignore=tests/test_wavefront_parity.py is current (pkg55-B Phase B' is mid-flight); drop it once Phase B' lands. The -x halts at the first failure so you can fix it before continuing.
Address any failures BEFORE pushing. CI will run the same tests; a green local run usually means green CI.
Note: the chronic test_disney_clearcoat_adds_gloss flake (issue #276) and the ReSTIR test_spatial_reduces_mse flake (pkg79 territory) are known-flaky; don't block on them but DO note them in the PR body so reviewers know.
Step 6 — Commit, push, open PR
git add <files-changed>
git commit -m "feat(<pkg-name>): <one-line headline>"
git push -u origin <pkg-name>
gh pr create --base main --head <pkg-name> --title "feat(<pkg-name>): <headline>" --body "<body>"
PR body must include:
- Each acceptance criterion from the spec marked ✓ with measured number
- A "Verification" section listing the tests run + their results
- Citations of the references used per CLAUDE.md §6
- Any known flakes encountered (with a note that they're pre-existing per issue #N)
Step 7 — Wait for CI, fix failures
gh pr checks <pr-number> --watch
If CI fails:
- Identify the failure (build error, test failure, lint error)
- Re-run the call-site sweep from Step 4 — most CI fails are stale callers
- Fix in a follow-up commit with message
fix(<pkg-name>): <what failed> - Push; repeat until green.
Step 8 — Resolve merge conflicts if any
If gh pr view <pr-number> shows "Behind" or there are merge conflicts:
- Rebase against current main:
git fetch origin && git rebase origin/main - State the conflict resolution explicitly before committing (per CLAUDE.md §PR & Git Workflow): "Conflict in
<file>between my change (X) and the new main change (Y). Resolution: <one-line>." - Resolve,
git add -pto confirm only the intended change is staged,git rebase --continue,git push --force-with-lease.
Step 9 — Hand off for owner review
When CI is green:
- Mark the PR ready for review.
- Surface the PR number + headline numbers in your final response.
- Do NOT auto-merge unless the owner explicitly authorized it. Implementation packages with C++/CUDA changes go through owner review.
Out of scope for this skill
- Hardware-verification gates on RTX (use
/verifyafterward) - Multi-package coordination (use
/dispatch-nextor/close-round) - Spec-filing without code (use
/file-followup) - Cross-package architecture review (use
/architect)
Failure modes / when to STOP
- Spec has unresolved owner-preference questions → STOP, surface them, wait
- Acceptance criterion requires hardware you don't have (RTX) → STOP, hand off to
/verifyinstead - Implementation would require a non-trivial algorithm with no cited reference → STOP, file research note per CLAUDE.md §6, hand back
- A 5th+ ambiguity surfaces mid-implementation → STOP, surface it; CLAUDE.md §1 over silent decisions
Next.js App Router Expert
Development
A skill that turns Claude into a Next.js App Router expert.
README Generator
Development
Creates professional and comprehensive README.md files for your projects.
API Documentation Writer
Development
Generates comprehensive API documentation in OpenAPI/Swagger format.