원클릭으로
ship
// Run the full ship flow — verify quality, ensure test coverage, update artifacts, smoke test, push, create PR, and merge when CI is green. Trigger when user says "ship", "ship it", "fix and ship", or asks to push and merge a branch.
// Run the full ship flow — verify quality, ensure test coverage, update artifacts, smoke test, push, create PR, and merge when CI is green. Trigger when user says "ship", "ship it", "fix and ship", or asks to push and merge a branch.
Resolve all open GitHub issues. Each issue becomes exactly one shipped PR. Trigger when user says "process issues", "work through issues", "resolve issues", "handle open issues", "fix all issues", or asks to resolve GitHub issues end-to-end.
Use when a user wants to run Bashkit, write scripts for Bashkit, use Bashkit as an LLM tool/runtime, call Bashkit from Rust/Python/JavaScript/TypeScript, use its CLI, understand supported builtins/languages, or find practical Bashkit examples, docs, packages, and resources.
| name | ship |
| description | Run the full ship flow — verify quality, ensure test coverage, update artifacts, smoke test, push, create PR, and merge when CI is green. Trigger when user says "ship", "ship it", "fix and ship", or asks to push and merge a branch. |
| user_invocable | true |
| metadata | {"internal":true} |
Run the full ship flow: verify quality, ensure test coverage, update artifacts, smoke test, then push, create PR, and merge when CI is green.
This skill implements the complete "Shipping" definition and Pre-PR Checklist from AGENTS.md. When the user says "ship" or "fix and ship", execute ALL phases below — not just the push/merge steps.
$ARGUMENTS - Optional: description of what is being shipped (used for PR title/body context and to scope the quality checks)main or masterHEAD is detached and the current task has local changes ready to ship, create a branch first instead of stoppingReview the changes on this branch (use git diff origin/main...HEAD and git log origin/main..HEAD) and ensure comprehensive test coverage:
cargo test --all-features and check for failuresspecs/005-security-testing.mdjust testReview the changes and update project artifacts where applicable. Skip items that aren't affected.
specs/): if the change adds/modifies behavior covered by a spec, update the relevant spec file to stay in syncspecs/006-threat-model.md): if the change introduces new attack surfaces, external inputs, authentication/authorization changes, or data handling — add or update threat entries using the TM-<CATEGORY>-<NNN> format and add // THREAT[TM-XXX-NNN] code comments at mitigation pointsspecs/009-implementation-status.md): if feature status changed, update the status tablecrates/bashkit/docs/): if the change affects public APIs, tools, or features — update the relevant guide markdown filesReview all changed code for opportunities to simplify:
If simplification changes are made, loop back to Phase 2 to verify tests still pass.
Analyze all changed code for security vulnerabilities:
specs/006-threat-model.md)unsafe blocks for soundness; prefer safe alternativesIf security issues are found, fix them, add regression tests, and update specs/006-threat-model.md if a new threat category is identified.
Review all changed code for shortcuts, lazy abstractions, and premature compromises. This is a greenfield project — correctness and clean design matter more than compatibility or speed of delivery. Take the time to find better abstractions.
StringOrList enum is a parser leak; a Pattern type is a domain concept. Prefer the latter.Other(String) buckets. Each variant should guide the caller's recovery logic.pub field or function lets outside code break a module's assumptions, tighten visibility. Constructors and accessors exist to protect invariants, not to be "nice".If design issues are found, refactor, update tests (loop back to Phase 2), and update specs if the change alters documented behavior.
Smoke test impacted functionality to verify it works end-to-end:
just run with relevant commands, verify outputjust run-script <file> to verify behaviorruff check crates/bashkit-python && ruff format --check crates/bashkit-pythonIf smoke testing reveals issues, fix them and loop back to Phase 2 (tests must still pass).
git fetch origin main && git rebase origin/main
just pre-pr
just fmt to auto-fix, then retry oncegit push -u origin <current-branch>
Check for existing PR:
gh pr view --json url 2>/dev/null
If no PR exists, create one:
gh pr createIf a PR already exists, update it if needed and report its URL.
gh pr checks (poll every 30s, up to 15 minutes)gh pr merge --squash --autoAfter successful merge:
$ARGUMENTS context helps scope which tests, specs, and smoke tests are relevant./ship to validate and merge.Part of #N instead of Closes #N or Fixes #N. Only use closing keywords when every task in the issue is complete. Premature closure hides remaining work.