Fast, safe commit-and-push orchestration.
<output_language>
Default all user-facing deliverables, saved artifacts, reports, plans, generated docs, summaries, handoff notes, commit/message drafts, and validation notes to Korean, even when this canonical skill file is written in English.
Preserve source code identifiers, CLI commands, file paths, schema keys, JSON/YAML field names, API names, package names, proper nouns, and quoted source excerpts in their required or original language.
Use a different language only when the user explicitly requests it, an existing target artifact must stay in another language for consistency, or a machine-readable contract requires exact English tokens. If a localized template or reference exists (for example *.ko.md or *.ko.json), prefer it for user-facing artifacts.
</output_language>
- Create one or more Conventional Commits from current repository changes.
- Treat the current checkout root as the repo boundary even when the current directory is inside a linked Git worktree.
- Push successfully created commits automatically, with no confirmation step between commit and push.
- Use the fast helper first to reduce repeated repository discovery and parallelize read-only inspection.
<instruction_contract>
| Field | Contract |
|---|---|
| Intent | Commit and push requested repository changes in one safe operation. |
| Trigger | Activate only when the user clearly wants commit plus push together. |
| Scope | Own fast preflight, current/all change selection, logical commit grouping, targeted staging/commits, current-branch push, optional multi-branch propagation, conflict resolution, and reporting. |
| Authority | User and project instructions outrank this skill; helper output, git diffs, hooks, branch state, and remote output are execution evidence. |
| Evidence | Use fast helper inventory, git status/diffs, hook output, branch/upstream data, and explicit arguments before mutation. |
| Tools | Use Bash and repository-local helper scripts; subagents, when used, stay read-only and final git mutations stay with the main integrator. |
| Loop | No optimization loop. One deterministic pass per request: preflight, group, commit, push, propagate, report. Retry only when a failed check inside the requested scope yields new evidence; stop when every intended commit and push target succeeds or a material conflict decision blocks. |
| Output | Korean report of commits created, repositories pushed, skipped or failed push targets, and remaining local changes. |
| Verification | Run the validation rule checks, confirm all commits succeeded before push, and read final push/status output. |
| Stop condition | Stop when all intended commit groups and branch propagations have succeeded and every intended push target is pushed, or when a conflict requires a user decision under the escalation rule. |
</instruction_contract>
<routing_rule>
Use git-maker when the user wants commit + push in one operation.
Use a neighboring skill instead when:
- the user asks only to commit → use
git-commit - the user asks only to push/sync commits → use
git-push - the user asks to rebase/reset/amend/rewrite history → do not use
git-makerunless commit+push is also explicitly requested and the history operation is separately authorized
</routing_rule>
<trigger_conditions>
Positive triggers:
- "commit and push"
- "commit and push these changes"
- "/git-maker"
- "make a commit and push it"
- "save and push my changes"
- Korean request meaning "commit and push"
- Korean request meaning "save the changes and upload them"
git-maker,git-maker current, orgit-maker ALL, optionally followed by&& <branch>targets
Negative triggers:
- "commit these changes" →
git-commit - "push my commits" →
git-push - "rebase this branch" → not this skill
Boundary trigger:
- "commit this, then maybe push" → use
git-commitbecause push is conditional, not automatic
</trigger_conditions>
| Script | Purpose |
|---|---|
scripts/git-maker-fast.mjs inspect [start_dir] [--jobs N] |
Fast preflight: pruned repo discovery, parallel repo status, file inventory |
scripts/git-maker-fast.mjs push [--force] [repo...] |
Push explicit repos without rediscovering; non-interactive; protected force-push guard |
scripts/git-commit.mjs [--repo path] "msg" [files...] |
Commit staged or selected files in one repository |
scripts/git-push.mjs [--force] |
Legacy/discovered safe push fallback |
scripts/repo-discover.mjs [start_dir] |
Legacy repo discovery fallback |
scripts/repo-status.mjs [repo] |
Legacy status fallback |
<worktree_support>
Linked Git worktrees are valid execution contexts.
- Resolve each checkout with
git rev-parse --show-toplevel; never assume.gitis a directory or collapse linked worktrees togit-common-dir. - Preserve each checkout root as its own index, branch, staging, commit, and push boundary.
- Continue from
worktree|linkedunless detached HEAD or another explicit safety rule blocks the run.
</worktree_support>
<support_file_read_order>
Read only what is needed:
rules/speed-and-automation.mdwhen the user asks for speed, the repo set may be large, or multiple repositories may be present.rules/agent-parallelism.mdwhen Claude Code/Codex subagents can split read-only grouping, message drafting, or safety review.rules/commit-and-push-policy.mdbefore staging/committing or when argument mode, grouping, safety, or push behavior is unclear.rules/validation.mdbefore reporting the run or skill refactor complete.
</support_file_read_order>
<argument_validation>
Parse the invocation as [scope] [--force] [&& target-branch ...]. Scope tokens and target branches are control syntax, not commit filters.
| Argument | Meaning |
|---|---|
| missing | same as current: include only changes attributable to this session, verify against git state, group logically |
current / CURRENT |
include only changes attributable to this session; never silently absorb pre-existing user or other-agent changes |
ALL / all |
include all uncommitted changes, group logically, leave no file behind |
--force |
remove from commit arguments and pass only to push (--force-with-lease, blocked on main/master) |
&& <branch> |
after the source push succeeds, apply the newly created commit set to that named branch, resolve reasonable conflicts, verify, and push; repeat left-to-right for every target |
| other text | treat as a filter for repo discovery, file selection, staging, and commit message generation |
Stop if an explicit filter does not match actual git state.
Treat shell-style separators as invocation syntax even when the request is plain language rather than a literal shell command. Accept any scope-token casing (all, ALL, current, CURRENT). Reject empty target segments, duplicate targets, the source branch itself, detached HEAD, and branch names that fail git check-ref-format --branch.
</argument_validation>
Phase 1. Fast preflight
Run scripts/git-maker-fast.mjs inspect . --jobs 4 first. Use its repo, worktree, staged/unstaged/untracked, and file inventory output to determine scope and logical groups. If it fails or lacks detail, use scripts/repo-discover.mjs and scripts/repo-status.mjs.
Phase 2. Group and commit
Partition selected changes into one logical change per commit, use targeted staging, and commit sequentially per repository:
scripts/git-commit.mjs "<type>[scope]: <Korean subject>" path/to/file1 path/to/file2
scripts/git-commit.mjs --repo path/to/repo "<type>[scope]: <Korean subject>" path/to/file1
Use Korean neutral result-summary subjects after the Conventional Commit type/scope. Never include secrets or unrelated changes, bypass hooks, or push after a failed commit. Follow rules/commit-and-push-policy.md.
Phase 3. Push automatically
After every intended commit succeeds, push without confirmation. Prefer the preflight repo list:
scripts/git-maker-fast.mjs push /absolute/repo/path
scripts/git-maker-fast.mjs push --force /absolute/repo/path
Use scripts/git-push.mjs [--force] only as fallback.
Phase 4. Propagate to requested branches
For each && <branch> target, apply only the ordered commits created by this run in a clean linked worktree, resolve intent-preserving conflicts autonomously, validate, and push before continuing left-to-right. Ask one focused question only when resolution requires a material behavior, architecture, security, migration, or deployment-policy decision; preserve a recoverable state and do not start later targets. Follow rules/commit-and-push-policy.md for exact selection, propagation, and escalation rules.
Phase 5. Report
Report:
- commits created and messages
- repositories pushed
- target branches updated and pushed
- conflicts resolved automatically, checks run, or the exact decision required from the user
- skipped or failed push targets
- any remaining local changes or blockers
- Parallelize read-only inspection with
inspect --jobs N; readrules/agent-parallelism.mdbefore delegating complex grouping or review. - Never parallelize mutations against one index. Subagents stay read-only; the main integrator owns staging, commit, propagation, and push.
- Push only after every intended commit succeeds.
| Category | Rule |
|---|---|
| Commit first | All commit groups must succeed before push. |
| Automatic push | Do not ask whether to push after successful commits. |
| Branch propagation | Apply only commits created by this run to && targets, in order, and push each verified target automatically. |
| Conflict ownership | Resolve conflicts autonomously when intent is recoverable; ask only at a material product/architecture decision boundary. |
| Safety | Never force push to main or master; never push from detached HEAD. |
| Upstream | If no upstream exists, push with -u origin <branch>. |
| Reuse preflight | Prefer git-maker-fast.mjs push [repo...] to avoid duplicate discovery. |
| Worktrees | Linked worktrees are supported; use checkout root paths, not the common git dir. |
| Agent boundaries | Subagents may review and propose, but the main integrator owns staging, commit, and push. |
| Validation | Run rules/validation.md checks before final reporting. |
| Category | Avoid |
|---|---|
| Push confirmation | asking "want to push?" after commits succeed |
| Partial push | pushing before all intended commit groups are done |
| Blanket staging | git add . unless ALL mode intentionally includes everything and grouping remains explicit |
| Unsafe history | amend, rebase, reset, raw --force, or --no-verify without explicit request |
| Broad conflict guessing | silently choosing among materially different behaviors or deleting intentional target-branch work to finish a propagation |
| Secrets | committing credentials, tokens, private keys, or unrelated user changes |
/git-maker→ current-session changes only, grouped, committed, and auto-pushed./git-maker ALL→ every uncommitted change grouped, committed, and pushed./git-maker current && dev && deploy/staging→ current-session commits propagated and pushed left-to-right with autonomous reasonable conflict resolution./git-maker && dev→ defaultcurrentscope, then verified propagation todev./git-maker --force→ normal commit, then--force-with-lease; blocked onmain/master.- Linked-worktree invocation → operate at that checkout root and push its named branch.
commit these changes→ do not activate; route togit-commit.
Run the target quick validator, focused corpus validator, assets/evals/git-maker-cases.jsonl binary scenario check, helper syntax/runtime checks, and the repository skill verification gate described by rules/validation.md. This deterministic workflow uses no improvement loop; finish only when critical cases pass and residual warnings are stated.