ワンクリックで
go
Wrap up a finished dev task — commit and push.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Wrap up a finished dev task — commit and push.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Explore intent and design before building new features or behavior changes. Skip for clear-scope fixes, refactors, docs, or code questions.
Turn external context into a prioritized, project-grounded suggestion list. Trigger on "suggest improvements", "ideas for X", or pastes of news/PRs/articles.
Audit recent sessions to find repeated workflows worth packaging. Use on "self improve" or "audit my workflows".
Run clawpatch, triage findings, write a prioritized bug list. Trigger on "run clawpatch", "clawpatch bug hunt", "scan for bugs".
| name | go |
| description | Wrap up a finished dev task — commit and push. |
Inspect git, write a commit message, stage, commit, push. Common path runs entirely in the parent agent via two co-located bash helpers. Subagent fallback only kicks in for huge diffs so they don't poison parent context.
SKILL_DIR = this SKILL.md file's directory (announced as "Base directory for this skill" when the skill loads). The two helpers live alongside this file at ${SKILL_DIR}/inspect.sh and ${SKILL_DIR}/commit.sh. Always invoke them through ${SKILL_DIR} — never a hardcoded .claude/skills/go/... path, which only resolves when the skill happens to be installed in the current project and breaks on global/plugin installs.
Inspect. Run bash ${SKILL_DIR}/inspect.sh. Parse the JSON blob on stdout. Branch on exit code:
1 → print "nothing to do", stop.2 → print Refusing to commit. Secrets found: followed by secretsFound[] (each entry is path:pattern-id). If the match is clearly a documentation example or test fixture, defang the offending line (replace with an obvious placeholder like <example-key>) and re-run bash ${SKILL_DIR}/inspect.sh — the scan reads git diff HEAD, so worktree edits take effect without re-staging. Only stop unconditionally when a match looks like a real secret.0 → continue.Push-only shortcut. If files.length == 0 AND ahead > 0, the working tree is clean but unpushed commits exist. Run git push (use -u origin HEAD if no upstream). Print Pushed <ahead> commit(s) on <branch>. Stop.
Prune junk. Drop any path from files[] matching the denylist (see "Denylist" below). Exception: keep any path the user explicitly named in their /go prompt — user wins. After pruning:
ahead > 0 → fall back to the push-only shortcut (step 2). Surface the dropped paths so the user understands why no new commit was made.ahead == 0 → stop with nothing to do (all changes were junk: <paths>).Gate on size. If (pruned files.length) > 30 OR diffStatBytes > 50000 → delegate to the subagent (see "Huge-diff fallback" below). Otherwise continue on the common path.
Common path: write message + commit. Synthesize a one-line conventional-commit message from the pruned files[] (and your knowledge of recent edits). Format type: short summary where type is one of feat fix docs chore refactor test perf style build ci. Then run:
bash ${SKILL_DIR}/commit.sh "<message>" <path1> <path2> ...
Parse the JSON from stdout:
pushed:true → print Committed <sha> on <branch>.pushed:false → print Committed <sha> on <branch>; push failed: <pushError>.If the script exits 3 (bad message) — fix the prefix and retry. Exit 4 — you passed no paths; recover by re-running with the pruned files[]. Exit 5 is push-failure (already handled by the JSON branch above). Exit 6 — the project's format step failed; fix the underlying error and retry.
Done. Don't re-run git status to double-check. inspect.sh and commit.sh are the source of truth.
node_modules/, dist/, build/, .next/, coverage/..DS_Store, Thumbs.db, *.log.A path the user named explicitly in their /go prompt overrides both tiers.
When (pruned files.length) > 30 OR diffStatBytes > 50000, the diff is too big to safely review in the parent's context. Spawn one general-purpose Agent (foreground) with the prompt below, passing the already-collected files[] and diffStatBytes as context so the subagent doesn't re-derive them. Print its summary verbatim.
Context already gathered by the parent:
files: <the pruned files[] array as JSON>diffStatBytes:Finish a dev task in this project. Report back in under 80 words.
- The parent already ran
git status,git diff HEAD, andgit log @{u}..HEAD. Treat thefileslist above as the changeset.- Abort if anything in the diff smells like a secret (the parent already scanned with regex; this is a second pair of eyes).
- Run the project's format command from the repo root if one is configured (e.g.
bun run format/npm run format); skip otherwise. If it exits non-zero, surface the error and stop — do not commit.- Commit — keep it to one commit:
- Stage by specific path (never
git add -A/git add .).- Message style
type: short summary(feat:,fix:,docs:,chore:). HEREDOC. Never--no-verify. Never--amend.git push. If no upstream, set it with-u. Never force-push.- Report: commit SHA and branch.
inspect.sh (regex against added lines of git diff HEAD, per-file). Removing an obsolete secret is allowed; adding one is hard-blocked. Content regexes are skipped for *.md / *.mdx / *.txt / *.rst (false-positive floor in design docs/READMEs was too high); the filename .env scan still applies to all paths.commit.sh before any git mutation.git add -- "$@"). Never -A / ..--force / +refs.--no-verify or --amend.git checkout -b. If a /go commit lands on a feature branch, that branch came from an earlier step (e.g. the harness "branch first on the default branch" rule, or /one-shot), not from /go. When the current branch has no upstream, commit.sh pushes with git push -u origin HEAD — that publishes the current branch as a new remote branch, but does not create a local branch.commit.sh runs the project's format command before staging when both bun and a scripts.format entry are present; a missing formatter is skipped with a stderr note. Format failures hard-abort the commit (exit 6). Whole-repo scope; unrelated drift may surface on the next /go.