Step 0: Gather context
Run these Bash commands before proceed:
git status -sb-- worktree stategit diff HEAD-- staged + unstaged changesgit branch --show-current-- current branchgh repo view --json defaultBranchRef -q '.defaultBranchRef.name'-- default branchgit log --oneline -5-- recent commits for style
Prerequisites
- Verify inside git repo
- Verify git remote exist:
git remote -v-- if none, stop + explain
Your task
Run full commit-and-push flow below in one response.
Phase 0: Pre-flight -- verify review skill ran
- Check if review skill invoked this session:
/simplify-- small fixes/tweaks/improve-codebase-architecture-- refactors (prefer this;/request-refactor-planis deprecated)/improve-codebase-architecture-- cleanup (oversized files, shallow modules, tangled deps)/prototype-- redesign module or layout (prefer this;/design-an-interfaceis deprecated)/visual-review-- browser-based review for frontend/visual diffs
- If frontend diff and
/visual-reviewhas not run: run/visual-reviewor record explicit skip reason before pushing. - If NONE ran: warn -- "Lifecycle requires review skill before shipping. Recommend:
/simplifyfor small changes,/improve-codebase-architecturefor cleanup,/visual-reviewfor frontend changes." - Proceed only if review skill ran or user confirm skip
Phase 1: Scope confirmation
- Inspect status + diff above
- If worktree has unrelated changes, ask user which files belong -- no default
git add -A - Show file list grouped by category for confirm before proceed
Phase 2: Branch strategy
- If on default branch -> make new branch
type/description(e.g.feat/add-commit-push-command) + switch - Else stay on current branch
- Check existing PR:
gh pr list --head $(git branch --show-current) --json number,url --jq '.[0]'-- if PR exist, tell user (push update it)
Phase 3: Categorized commits
Analyze changed files, group by purpose into conventional commit types:
| Type | Matches |
|---|---|
docs |
*.md, SKILL.md, REFERENCE.md, comments-only changes |
test |
*.test.ts, *.test.tsx, *.spec.ts, EVAL.ts, agent-evals/ |
refactor |
restructure without behavior change |
style |
formatting, whitespace, lint-only fixes |
fix |
bug fixes, error corrections |
feat |
new features, components, endpoints |
chore |
config, deps, build scripts, tooling |
perf |
perf improvements |
ci |
CI/CD pipeline changes |
build |
build system changes |
Each category with files:
- Stage only relevant files explicit paths:
git add <file1> <file2> ...-- nevergit add -Aorgit add . - Commit:
type(scope): terse description- Infer scope from dir/module
- Lowercase first letter, 5-72 chars, no trailing period
- Include
Co-Authored-Bytrailer
- Next category
File fit multiple categories -> pick most specific.
Phase 4: Pre-push review
- Show what push:
git log --oneline origin/<branch>..HEAD 2>/dev/null || git log --oneline -5 - Confirm commit count + branch target with user before push
Phase 5: Push
- Push with tracking:
git push -u origin $(git branch --show-current) - Never force push --
--force-with-leaseOK when needed (after rebase)
Phase 6: Verify and summarize
- Run
git status+git diffto confirm clean worktree - If anything uncommitted, warn user
- Summarize: branch name, commits made, remote URL, remaining user actions
Safety
- Never stage unrelated changes silent
- Never push without confirm scope when worktree mixed
- Never force push --
--force-with-leaseOK when needed (after rebase) - No git remote reachable -> stop + explain blocker