一键导入
ship-pr
Ship a feature branch: write docs, bump version, create PR with screenshots and evidence. Links Linear tickets if available. Use when ready to merge.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Ship a feature branch: write docs, bump version, create PR with screenshots and evidence. Links Linear tickets if available. Use when ready to merge.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Functional verification against the plan. Manually confirms every planned path works, takes screenshots, saves API examples as evidence for the PR. Use after /execute.
Build a plan to spec using Red/Green TDD. Writes tests first, confirms they fail, then implements. Supports --ticket mode for scoped execution with dependency checks and file-level scope guardrails. Use after /plan to implement a feature or fix.
Plan a feature or bug fix with deep engineering analysis. Explores the codebase, compares implementation alternatives, maps error paths, and produces test coverage diagrams — all before any code is written. Emits structured YAML tickets with dependency DAG and self-contained agent briefs. Optionally materializes to Linear and TODOS.md. Use when starting new work, breaking down a feature, or before any code changes. Strongly recommended as the first step before /execute.
Full sprint flow: /plan -> /execute -> /validate -> /review -> /ship-pr. Always runs /plan (which auto-detects small follow-ups via fast-path). Loops review/execute until clean. End result is a pushed PR.
Analyzes git state, TODOs, and project context to recommend which upstack skill to run next. Use when starting a session or unsure what to do.
Independent exploratory QA. Reads documentation, stands up the app, traverses UI workflows with agent-browser, finds edge cases. Use anytime to test app quality.
| name | ship-pr |
| description | Ship a feature branch: write docs, bump version, create PR with screenshots and evidence. Links Linear tickets if available. Use when ready to merge. |
| disable-model-invocation | true |
_UPD=$(~/.claude/skills/upstack/bin/upstack-update-check 2>/dev/null || .claude/skills/upstack/bin/upstack-update-check 2>/dev/null || true)
[ -n "$_UPD" ] && echo "$_UPD" || true
If output shows UPGRADE_AVAILABLE <old> <new>: read ~/.claude/skills/upstack/skills/upgrade/SKILL.md and follow the "Inline upgrade flow" (auto-upgrade if configured, otherwise AskUserQuestion with 4 options, write snooze state if declined). If JUST_UPGRADED <from> <to>: tell user "Running upstack v{to} (just updated!)" and continue.
Three-in-one: documentation, versioning, and PR creation. No confirmation pauses once the version is decided.
feat/short-description or fix/short-description based on the changes) and switch to it before continuing.gh CLI is available and authenticated.If any check fails (other than #2, which is auto-resolved): report and stop. Do not ask to continue.
Review and update these. Report each as UPDATED or NO CHANGE NEEDED (with reason):
docs/ folder or inline doc comments in changed files.Keep docs close to the code — update existing doc files rather than creating new ones where possible. At minimum, review each item above and report your finding.
AskUserQuestion — the ONLY interactive step: "Current version: [X.Y.Z]. Changes suggest [type]. Which version?
Update VERSION, package.json, or pyproject.toml (whichever exists). Update CHANGELOG.md.
evidence/screenshots/
is empty or missing: STOP and warn the user. Recommend running /validate
or capturing screenshots now.chore: bump to vX.Y.Zgh pr list --head "$(git branch --show-current)" --json number --jq '.[0].number'
gh pr create — the push already updated the PR. Optionally run gh pr comment <number> --body "..." summarizing the new changes.gh pr create. PR description includes:
evidence/api/ or link to collectionCloses ENG-xxx keyword format so Linear's GitHub integration auto-tracks PR completion- [ ] to - [x]).When embedding screenshots in the PR body, use ABSOLUTE GitHub blob URLs, not relative paths. Relative paths do not render in PR descriptions.
Format:

Construct the URL from:
gh repo view --json nameWithOwner --jq '.nameWithOwner' → owner/repogit branch --show-current → branch nameevidence/screenshots/Do NOT use relative paths like  — these are BROKEN in PR descriptions.
Report which step completed and which failed. Do NOT attempt to rollback.
Scan TODOS.md for Linear ticket references (patterns: [ENG-xxx](url), LINEAR: ENG-xxx, or bare ENG-xxx identifiers).
Include Closes ENG-xxx in the PR description for each relevant ticket. Linear's GitHub integration detects these keywords and:
# Check if linear CLI is available and authenticated
which linear 2>/dev/null && linear me 2>/dev/null
If authenticated, for each ticket referenced in TODOS.md:
linear issue update <issue-id> --add-link "<pr-url>"
If the CLI command fails: warn but do not block. The PR body keywords are the primary tracking mechanism.