ワンクリックで
ship
session-indexer ship pipeline: issue → implement → review → merge → close. Usage: /ship [--yes|-y] [issue-number | title]
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
session-indexer ship pipeline: issue → implement → review → merge → close. Usage: /ship [--yes|-y] [issue-number | title]
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
Read-only bug audit of the current branch vs a base ref. Dispatches subagents per stack (Go, JS/TS, etc.), consolidates findings, produces a prioritized report. Does not fix. Usage: /find-bugs [base-ref]
Multi-model PR review with parallel fan-out. Three Ollama models (Cloud `:cloud` by default, local fallback) review the full PR diff in parallel; Claude acts as Arbiter, using vote count as a confidence prior to confirm/escalate/dismiss findings, then applies a single consolidated fix commit. Auto-merges (squash) when no fixes were reverted and the PR is mergeable; otherwise leaves it for manual review. Usage: /fix-review [PR-number]
Subjects every non-trivial decision to a fresh-context adversarial review before it stands. Use when correctness matters more than speed, when working in unfamiliar code, when stakes are high (production, security-sensitive logic, irreversible operations), or any time a confident output would be cheaper to verify now than to debug later.
Self-learning system — log mistakes/wins, run retrospectives, promote patterns to hard rules, and coach on workflow quality. Usage: /self-learn [log|retro|status|init|tips]
Systematic bug diagnosis — reproduce, isolate, hypothesize, verify, fix. Usage: /debug [what's broken]
Generates a project-specific /find-bugs skill with stack-specific security and correctness checklists. Run once per project. Usage: /generate-find-bugs
SOC 職業分類に基づく
| name | ship |
| description | session-indexer ship pipeline: issue → implement → review → merge → close. Usage: /ship [--yes|-y] [issue-number | title] |
/ship → auto-select next open issue (asks confirmation)
/ship --yes → auto-select and proceed, skip UI prompts
/ship -y → same as --yes
/ship {issue-id} → ship a specific issue by number
/ship {issue title} → find by title, then ship
/ship --yes {issue-id} → skip UI prompts (technical ambiguities always ask)
→ resolve issue (fetch title + description)
→ analyze ambiguities (scan description + codebase → ask decisions before coding)
→ mark in-progress
→ code-generator (implement → tests → review agents → simplify → docs → PR)
→ /fix-review (multi-model rounds + Claude Arbiter — does NOT merge)
→ merge PR (/ship owns the merge)
→ post comment (summary: what changed, PR link)
→ close issue
→ log to /self-learn (if installed)
→ final report
One command. Pauses only for genuine technical decisions before coding.
Flag detection: Check for --yes / -y anywhere in arguments. Set YES_MODE=true, strip flag.
Argument classification (after stripping flags):
#N → gh issue view {N} --repo valpere/session-indexer --json number,title,body,urlYES_MODE:
gh issue list --repo valpere/session-indexer --assignee @me --state open \
--json number,title,url,milestone,labels --limit 10
Prefer issues in the active milestone. Within milestone, prefer priority:high / urgent labels.
If YES_MODE=false, present top candidate and wait:
Suggested: #{number} — {title}
Milestone: {milestone} | {url}
Proceed? [Y / pick another / cancel]
If YES_MODE=true, print selection and proceed immediately.
gh issue list --repo valpere/session-indexer --state open --search "{title}" \
--json number,title,url --limit 10
One close match → use directly. Multiple → present up to 5. None → stop.
Extract ISSUE_NUMBER, ISSUE_TITLE, ISSUE_BODY, ISSUE_URL.
If issue is not open: stop — "Issue #{N} is already closed."
Print:
Shipping: #{ISSUE_NUMBER} {ISSUE_TITLE}
{ISSUE_URL}
Mark in-progress:
gh issue edit {ISSUE_NUMBER} --repo valpere/session-indexer --add-label "in-progress"
Before touching any code, scan the issue body and codebase for decisions that must be made first. Runs even in YES_MODE — technical decisions are not UI prompts.
Scan for:
For each ambiguity:
Format:
Before I start coding, I need to resolve {N} decision(s):
1. {Ambiguity title}
Context: {one sentence}
A) {option} — {tradeoff}
B) {option} — {tradeoff}
Zero ambiguities: print "No ambiguities — proceeding." and continue.
Agent(code-generator):
"Implement: {ISSUE_TITLE}
Issue body:
{ISSUE_BODY}
Issue URL: {ISSUE_URL}
Implementation pipeline:
1. Git worktree for isolation
2. Implement the feature/fix
3. Run: go vet ./... && go test -race ./...
4. Launch test-generator for new hooks/utils/services — skip if changeset is
migrations, components, docs, or .claude config files only
5. Re-run go test -race ./... after test generation
6. Parallel review: static-analysis + security-reviewer
7. Apply review findings
8. code-simplifier → docs-maintainer
9. Create PR (include '{ISSUE_URL}' in body)
10. Return PR number + URL"
Wait for completion. On error or no PR: print error, stop.
Extract PR_NUMBER, PR_URL, BRANCH_NAME.
Mark in-review:
gh issue edit {ISSUE_NUMBER} --repo valpere/session-indexer \
--add-label "in-review" --remove-label "in-progress"
gh pr diff {PR_NUMBER} --repo valpere/session-indexer --name-only
If every changed file matches *.md, *.txt, docs/**, .github/**/*.md →
skip /fix-review, go to STEP 3. Print:
Skipping /fix-review — PR is docs-only. Code Review Pyramid has nothing to evaluate.
Mixed PRs (any code file present): /fix-review runs. When in doubt, run it.
/fix-review {PR_NUMBER}
Multi-model rounds + Claude Arbiter. Does NOT merge — STEP 3 owns the merge.
Collect summary (fixed / skipped / open). If unresolved items remain, note them and continue.
gh pr merge {PR_NUMBER} --repo valpere/session-indexer --squash --delete-branch
If checks pending: gh pr merge {PR_NUMBER} --repo valpere/session-indexer --auto --squash --delete-branch
then poll every 30s (max 30 min).
If conflicts: stop — "PR #{PR_NUMBER} has merge conflicts. Resolve and re-run."
Timeout: 30 min. If still open: ask user to merge manually, then re-run /ship {ISSUE_NUMBER}
to complete the tracker update.
Verify:
gh pr view {PR_NUMBER} --repo valpere/session-indexer --json state,mergedAt --jq '{state,mergedAt}'
gh issue comment {ISSUE_NUMBER} --repo valpere/session-indexer --body "$(cat <<'EOF'
## Shipped — PR #{PR_NUMBER}
**Summary:** {one-paragraph description of what changed and why}
**Key changes:**
- {file or component}: {what changed and why}
**Tests:** {what was added or verified}
**PR:** {PR_URL}
EOF
)"
If the call fails: warn and continue.
gh issue close {ISSUE_NUMBER} --repo valpere/session-indexer \
--comment "Shipped in PR #{PR_NUMBER}."
On failure: warn, ask user to close {ISSUE_URL} manually.
Skip silently if .claude/skills/self-learn/ doesn't exist in this project.
/self-learn log's Step 1 is written for interactive human invocation
("Ask the user: what happened?") — /ship runs this step itself, without
a human in the loop, so do not wait for input. Classify and log
directly using what you already observed during this run, following the
self-learn LOG step's own field schema and "if the user describes the
event, classify it yourself" allowance:
/fix-review escalations → win/fix-review caught something that should have been prevented earlier
(wrong pattern, missed edge case, convention violation) → mistakeIf the log call fails or /self-learn isn't installed, don't block the
pipeline on it — note it in the final report's Warnings and move on.
## /ship complete — #{ISSUE_NUMBER} {ISSUE_TITLE}
Issue: {ISSUE_URL} (closed)
PR: {PR_URL} (merged, branch deleted)
/fix-review: {fixed} fixed · {skipped} skipped · {open} still open
Pipeline:
✓ Issue resolved + ambiguities cleared
✓ Code generated (code-generator)
✓ go vet ./... && go test -race ./... passed
✓ test-generator ran (or skipped — docs/migrations only)
✓ static-analysis | security-reviewer
✓ code-simplifier + docs-maintainer
✓ PR created + /fix-review (multi-model + Arbiter)
✓ PR merged (squash)
✓ Completion comment posted
✓ Issue closed
Append Warnings for any skipped items or non-fatal failures.
/ship owns the merge (STEP 3), not /fix-review./ship.