void-commit-discipline

Enforces Conventional Commits format with mandatory rationale bodies and ASCII-only git messages.

Updated May 29, 2026
One-click install
npx skills add https://github.com/voidcorp-core/void-harness --skill void-commit-discipline-voidcorp-core
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: void-commit-discipline
Source: https://github.com/voidcorp-core/void-harness/tree/main/packages/core/skills/void-commit-discipline
Command: npx skills add https://github.com/voidcorp-core/void-harness --skill void-commit-discipline-voidcorp-core

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Git histories fill up with vacuous messages like "wip" or "fix bug" that destroy the project's narrative and make debugging, reviewing, and auditing painful. This Skill enforces a strict commit message discipline so every commit documents what changed and why. ## Core Features & Use Cases - Conventional Commits enforcement: Restricts messages to an allowed type list (feat, fix, refactor, test, docs, chore, build, ci, perf, style) with imperative, lowercase subjects under 72 characters. - Mandatory "why" bodies: Requires substantive commits (feat, fix, refactor, perf) to include a body explaining rationale, root cause, or spec links, plus footers for BREAKING CHANGE, issue references, and AI co-author trailers. - Bug-fix commit pairs: Splits bug fixes into a test: reproduce commit followed by a fix: commit so regression prevention is explicit in the git log. - Use Case: After finishing a feature with an AI pair, ask for a commit and receive a properly scoped message like feat(checkout): add discount code application to cart with a why-body, issue reference, and Co-Authored-By trailer. ## Quick Start Ask the agent to commit the current changes following the commit discipline so the message uses a conventional type, an imperative subject, and a body explaining why.

Frequently Asked Questions about void-commit-discipline

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I write a conventional commit message?

Use the format type(scope): subject, with an imperative lowercase subject under 72 characters and no trailing period. For feat, fix, refactor, or perf commits, add a blank line and a body explaining why the change was made, wrapped at 72 columns.

What commit types are allowed in Conventional Commits?

The allowed types are feat, fix, refactor, test, docs, chore, build, ci, perf, and style. Invented types like improve, tweak, or cleanup are rejected; pick one from the list or split the commit into multiple commits.

How should I commit a bug fix with tests?

A bug fix requires two commits: first `test: reproduce <bug summary>` containing the failing test, then `fix: <root cause description>` with the implementation. Combining them into one commit is rejected so regression prevention stays explicit in the git log.

How do I mark a breaking change in a commit message?

Add an exclamation mark after the type or scope, such as feat(api)!:, and include a `BREAKING CHANGE: <description>` footer explaining what consumers must migrate. Under SemVer this forces a major version bump.

Why are em dashes and emoji banned in commit messages?

The harness invariant requires English ASCII-only commit messages for portability across tooling and terminals. Use hyphens instead of em dashes; the companion hook no-emdash-no-emoji-in-commit-msg blocks violations at commit time.

Do AI-assisted commits need special attribution?

Yes, commits produced in pair with an AI agent must include a Co-Authored-By trailer, such as `Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>`, for authorship transparency in the git history.