| name | commit |
| description | One-shot conventional commit; bundled scripts adaptively gather diff context, draft the message, and stage+commit — pass `ask` to confirm first or add a hint for the title. |
| model | inherit |
| disable-model-invocation | true |
| color | lightcoral |
Commit
Commit the current changes with a conventional message. Two bundled scripts own
every git inspection and mutation — run no other git commands.
Arguments: the optional word ask (confirm mode) and/or a message hint for
the title (e.g. /commit ask fix null check in auth). Without ask, resolve
all ambiguity yourself and pause for nothing.
Steps
1. Gather
{base_directory}/gather.sh
Prints branch, extracted task number (NONE if none), status, sensitive files
(auto-excluded later), full diffstat, recent commits, and an adaptively sized
diff. Read it once — never re-run git to "see more"; the script already chose
what matters.
If it prints NOTHING_TO_COMMIT, say so and stop.
2. Draft
Compute every field silently from the blob:
- Type —
feat (new functionality), fix (corrects behavior), refactor
(restructure, no behavior change), docs (only .md), test (only tests),
chore (config/deps/tooling), style (formatting), ci (CI config).
Mixed signals → pick the dominant one.
- Task number —
TASK_NUMBER from the blob. If NONE, omit the (scope)
and the Refs: trailer entirely. Never invent one, never leave one blank.
- Title — imperative mood, total header ≤72 chars. Base on the hint if given.
- Description — 1–3 specific sentences: what changed and why.
Write it to a temp file:
cat > /tmp/commit-msg.txt <<'EOF'
{type}({task-number}): {title}
{description}
Refs: {task-number}
EOF
3. Commit
Default (no ask): run immediately, with no narration between tool calls.
With ask: show the draft message and the status list, then ask
"Commit this? (yes / edit / only / cancel)". Apply any edit or file
selection, then run.
{base_directory}/commit.sh /tmp/commit-msg.txt [file ...]
No file args → stages everything. File args (ask mode) → stages only those.
Either way the script drops sensitive files and commits with hooks running.
- Hook failure → report the script output and stop. No workarounds.
NOTHING_STAGED → everything was excluded as sensitive; report and stop.
Report
≤3 lines: the commit header, anything excluded as sensitive, confirmation that
it's committed. Do not re-print the message body.
You Must NOT
- Run
git add or git commit yourself — the scripts own all mutation.
- Use
--no-verify or bypass hooks in any way.
- Push to remote or run tests — not this skill's job.
- Ask questions in default mode —
ask is the only interactive path.