commit
Stage, split, and write conventional git commits. Enforces type(scope): description format, 72-char subject line, why-not-what body, and coherent atomic units.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Stage, split, and write conventional git commits. Enforces type(scope): description format, 72-char subject line, why-not-what body, and coherent atomic units.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Standalone adversarial analysis module. Generates the strongest honest case against an artifact or decision. Invokable directly by any caller — not only Reviewer. Challenger mode controls whether challenge is open (no spec) or spec-bound (against a declared spec artifact). Do NOT invoke to issue a verdict or score — that is Grader's job. Do NOT invoke when the goal is to produce or implement a fix — that is Executor's job.
Root cause investigation using structured analysis methods. 5-whys, fishbone, fault-tree. Knowledge-graph-leveraged when Nexus is available. On-demand.
API lifecycle management. Version, deprecate, audit contracts, enforce backward compatibility. Four modes: --version, --deprecate, --contract, --audit.
Gateway routing engine. Reads the active platform package and capability gateways to determine which modules are relevant to the current wave. Assembles multi-module context using Economy placement rules. Produces delta proposals (ADDITIVE/COSMETIC → Specify --patch, BREAKING → Executor halt). Writes only to product space — never touches .wabblespec/ (I11).
Finalizes a completed execution by aggregating all receipts into one delivery receipt, bumping the version, and appending a changelog entry. A task is not done until Archive runs.
Writes experimental implementation of a module change from an approved Blueprint. For AUGMENT type: completes a modified copy of the existing module. For NEW type: completes Factory stubs. All output goes to .wabblespec/state/experiments/augments/. Never touches production module space.
| name | commit |
| description | Stage, split, and write conventional git commits. Enforces type(scope): description format, 72-char subject line, why-not-what body, and coherent atomic units. |
You turn staged changes into clean, conventional, atomic commits. Not just a message — the right scope, the right type, the right split. A commit is a unit of meaning. You enforce that.
Commit reviews the current git state, identifies logical groupings of changes, produces conventional commit messages for each group, and either applies them or presents them for human confirmation. It enforces: type(scope): description format, 72-char subject line limit, "why not what" body convention, and atomic commit boundaries.
Commit activates:
stage | split | write | audit (default: write — assumes changes already staged)| Situation | Reference |
|---|---|
| Commit receipt write | engine/shared/references/script-delegation-contract.md → receipt-writer.py --type generic for the base, then --extra-json for the module-specific fields defined in modules/l7/commit/schemas/commit-receipt.schema.json |
Receipt: .wabblespec/state/receipts/commit-{timestamp}.json
{
"mode": "string",
"commits_produced": [
{
"type": "string",
"scope": "string or null",
"breaking": false,
"subject": "string",
"body": "string or null",
"footer": "string or null",
"files_included": ["list"],
"applied": true
}
],
"total_commits": 0,
"dry_run": false,
"verdict": "PASS | WARN | FAIL",
"committed_at": "ISO-8601"
}
verdict: FAIL when the staged changes cannot be committed due to a hook failure or staged state issue. verdict: WARN when the changeset was split and human review is recommended before applying.
Step 1 — Review working tree. Identify unstaged changes. Group by logical unit (same feature, same fix, same refactor). Stage each group separately.
Step 2 — Report grouping. Surface the proposed grouping for human confirmation before staging. Do not auto-stage without confirmation.
Step 1 — Analyze staged changes. Identify whether staged changes span multiple logical concerns (e.g., a bug fix and a feature in the same diff). If they do: propose a split.
Step 2 — Produce split plan. List proposed commits with their file subsets. Present for confirmation. Never split and apply without human approval.
Step 1 — Infer scope. If no scope is declared: infer from the primary directory or module of changed files (e.g., files in modules/l6/copy/ → scope copy; files in .wabblespec/engine/shared/schemas/ → scope schemas).
Step 2 — Select type. Apply rules/conventional-commits.md type selection. Types: feat, fix, chore, docs, refactor, test, perf, style, ci, build. When in doubt between feat and refactor: if behavior changes for users → feat. If behavior is unchanged → refactor.
Step 3 — Write subject line.
type(scope): description; append an exclamation mark before the colon for breaking changesStep 4 — Write body (if non-trivial).
Step 5 — Write breaking change footer (if applicable).
BREAKING CHANGE: {description of what breaks and what consumers must do}
Step 5b — Decision trailer (non-obvious choices only).
When the commit implements a non-obvious architectural choice — one where a future reader would reasonably question why approach A was chosen over B — append a Decision: trailer:
Decision: chose <approach> over <alternative> because <constraint or evidence>
Use only when the why would not be recoverable from the diff or CLAUDE.md. One trailer per commit maximum. Do not use for routine choices where the diff is self-explanatory.
Step 6 — Apply or return.
If dry-run: output message(s) to receipt only.
If not dry-run and not split: apply commit.
If split: present for confirmation before applying.
Review the last N commits (default: 10) for convention compliance. Emit findings per commit: type valid, scope present, subject ≤72 chars, body present when complex diff, breaking changes flagged.
fix(auth): fix auth.ts — drop auth.ts)Non-atomic commits: A commit that mixes a bug fix and a feature is not atomic. Enforce split when this is detected. Do not commit mixed concerns under one message.
"What" bodies: A body that says "Changed the authentication handler to use PKCE" is a what. The corresponding why is "PKCE is required for public clients (mobile) per OAuth 2.0 Security BCP." Enforce why.
Subject case: Commit subjects are lowercase after the type prefix. No title case, no sentence case.
Skipping hooks: Commit never passes --no-verify. Hook failures are surfaced to human for investigation, not bypassed.