ship
Commit, push, and create a PR with
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Commit, push, and create a PR with
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Catch up on what shipped across Platform Engineering / SRE / Observability / Cloud Native — CNCF, Kubernetes, OpenTelemetry, Go / Rust / TypeScript releases, and influential practitioner blogs. Use when the user asks for the "latest", "this week", "catch-up", "trends", "what's new", or wants a weekly report or blog draft in this space. Combine with `/loop` or `/schedule` for recurring runs.
Analyze source code for improvements across security, correctness, performance, refactoring, code smells, and best practices. Supports Go, TypeScript, and Python with language-specific checks.
| name | ship |
| description | Commit, push, and create a PR with |
Commit changes, push, and create a Pull Request with a clean ## What / ## Why description. Match whatever conventions the host repository already uses (language, scope prefixes, commit style) — this skill never imposes its own.
main (fall back to master if main does not exist). Store as BASE_BRANCH.git diff $BASE_BRANCH...HEAD --name-only — list changed filesgit diff $BASE_BRANCH...HEAD — inspect the actual changesgit log $BASE_BRANCH..HEAD --oneline — all commits on this branchgit log --oneline -20 on $BASE_BRANCH — learn the repo's commit/PR title styleauth:, feat(api):, web/ui:). Pick the dominant top-level directory or package when changes span multiple areas. If the repo does not use scopes, skip this.-s), only commit already-staged files.git add -A or git add .) and commit with a message matching the project's style.Co-Authored-By lines unless the project's existing history uses them.git ls-remote --heads origin $(git branch --show-current)
git push -u origin $(git branch --show-current)git pushNever switch branches. All operations happen on the current branch.
Re-read git log $BASE_BRANCH..HEAD --oneline and the full diff to understand what the PR achieves as a whole — the title describes the PR, not just the latest commit.
{type}({scope}): summary or {scope}: summary (e.g. feat(auth):, fix(api):, refactor(web):, docs:, chore:). Otherwise write a plain imperative summary.Write ## What and ## Why sections. ## What is a decision tool, not a description or summary — a reviewer or future engineer should be able to decide whether this PR matters to them without reading the diff.
## What
<One sentence: what problem disappears when this PR is merged?>
## Why
<What prompted this? What risk, pain, or requirement makes this necessary?>
## What rules:
## Why rules:
Before proceeding to Step 7, review EVERY sentence in ## What against all 4 filters below.
If ANY filter matches ANY sentence, rewrite that sentence and re-run the check.
Do NOT proceed to Step 7 until all sentences pass all filters.
Filter 1 — Function/method/API name:
Does the sentence mention a specific function, method, callback, API, class, or variable name
(e.g. set_after_send, useEffect, handleClick, SecretStore::open)?
→ Remove it. Describe the outcome instead.
Filter 2 — "How" verb: Does the sentence use verbs like "migrate to", "refactor into", "move X into Y", "replace X with Y", "consolidate into", "extract into", "split into"? → These describe structural changes (how), not goals (what). Rewrite to describe what the user/system gains.
Filter 3 — Technical mechanism: Does the sentence describe WHERE or HOW the code runs (e.g. "in the callback", "at the middleware layer", "via a cron job", "using a goroutine")? → Remove the mechanism. Describe the behavior change.
Filter 4 — Diff-readable: Could the reader learn this information just by reading the diff? → If yes, it's "how" and should not be in What.
Examples:
set_after_send callback" — function name (filter 1) + "move into" (filter 2) + "callback" (filter 3)fmt.Errorf with liberrors.Wrap across the repository layer" — function names (filter 1) + "replace with" (filter 2) + "repository layer" (filter 3)Create the PR as draft by default. Use --assignee @me.
If the user specified:
--reviewer flags--draftmainAfter PR creation, print the PR URL.
/ship # commit all, push, draft PR to main
/ship -s # staged files only
/ship -b release/v1.0 # target a release branch
/ship -r reviewer1,reviewer2 # assign reviewers
/ship -o # create as open (not draft)
/ship -s -o # combine options