.claude/skills/conventional-commits/SKILL.md
Conventional Commits standard — commit message format, types, scopes, breaking changes, and examples. Use when creating git commits, reviewing commit history, or writing commit messages.
npx skillsauth add punkfuncgames/tetris-clone conventional-commitsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Spec: Conventional Commits 1.0.0 Enforced: ALL commits in this repository MUST follow this format.
<type>(<scope>): <subject>
[optional body]
[optional footer(s)]
| Rule | Requirement |
|------|-------------|
| type | Required. Lowercase. One of the allowed types below. |
| scope | Optional but encouraged. Lowercase kebab-case. Module or area affected. |
| subject | Required. Imperative mood, lowercase start, no period, max 72 chars. |
| body | Optional. Wrap at 100 chars. Explain what and why, not how. |
| footer | Optional. BREAKING CHANGE: <desc> or Refs: #<issue>. |
| breaking | Append ! after type/scope: feat(idle)!: remove legacy prestige API |
| Type | When to Use | Example |
|------|-------------|---------|
| feat | New feature or capability | feat(wallet): add currency cap support |
| fix | Bug fix (root cause, not workaround) | fix(bigdouble): correct infinity comparison operators |
| test | Adding or updating tests only | test(wallet): add TryConsumeAll edge case coverage |
| refactor | Code change that neither fixes a bug nor adds a feature | refactor(pool): extract spawn logic to dedicated method |
| perf | Performance improvement | perf(idle): batch production calculations per frame |
| docs | Documentation only (TESTING_GUIDE, ARCHITECTURE_GUIDE, etc.) | docs(core): add async test patterns section |
| style | Formatting, whitespace, naming (no logic change) | style(core): apply consistent field naming convention |
| build | Build system, CI/CD, assembly defs, packages | build(ci): add parallel test jobs to PR workflow |
| chore | Maintenance tasks (gitignore, editor config, tool setup) | chore: add commitlint config |
| revert | Revert a previous commit | revert: revert feat(wallet): add currency cap support |
feat (new) or fix (broken)testrefactorperfbuildchoreUse the module name in lowercase kebab-case as scope:
| Scope | Module |
|-------|--------|
| core | Core/MVC, Composition, Extensions, Attributes |
| idle | IdleModule (production, upgrade, prestige, boost, automation, offline, multiplier, time) |
| wallet | WalletModule |
| save | SaveModule |
| ui | UIModule |
| audio | AudioModule |
| camera | CameraModule |
| gamestate | GameStateModule |
| input | InputModule |
| scene | SceneModule |
| asset | AssetModule |
| localization | LocalizationModule |
| steam | SteamModule |
| pool | PoolModule |
| stats | StatsModule |
| undo | UndoModule |
| floating-text | FloatingTextModule |
| formula | FormulaModule |
| log | LogModule |
| bootstrap | Bootstrapping |
| unlock | UnlockConditionModule |
| bigdouble | Math/BigDouble |
| ci | CI/CD, GitHub Actions |
| editor | Editor scripts, inspectors |
Multiple scopes: If a commit spans multiple modules, use the primary module as scope. If truly cross-cutting, omit scope.
# GOOD
feat(idle): add offline progress calculation
fix(wallet): prevent negative currency on concurrent consume
test(pool): add spawn/despawn lifecycle tests
refactor(core): extract disposable tracking to base class
build(ci): split test jobs for parallel execution
# BAD
feat(idle): Added offline progress calculation # past tense
fix(wallet): Fixes negative currency bug. # capitalized, period, third person
Updated tests # no type, past tense, vague
refactor: refactored some stuff # vague, past tense
WIP # not conventional, no type
Initial plan # not conventional, no type
Two ways to indicate:
# Option 1: ! after type/scope
feat(idle)!: replace IProductionService with IProductionEngine
# Option 2: Footer
feat(idle): replace IProductionService with IProductionEngine
BREAKING CHANGE: IProductionService renamed to IProductionEngine.
All consumers must update their constructor injections.
Use when the subject alone doesn't explain the why:
fix(bigdouble): correct infinity comparison operators
Comparison operators (<, >, <=, >=) returned incorrect results
when either operand was infinity. The mantissa-based comparison
path did not account for special float values.
Refs: #19
When AI assists with code:
feat(wallet): add multi-currency transaction support
Co-Authored-By: Claude <[email protected]>
Merge commits from GitHub PRs are exempt from this format (GitHub generates them). But PR titles SHOULD follow conventional commit format since they become the merge commit message when squash-merging.
refactor commit followed by a feat commit| Pattern | Why It's Forbidden |
|---------|--------------------|
| WIP | Not conventional, not descriptive |
| Initial plan | Not conventional, no type |
| fix stuff / update things | Too vague |
| Merge branch 'x' into y (manual) | Use git merge --no-edit or let GitHub handle it |
| Past tense subjects | Must be imperative |
| Subjects starting with capital letter | Must be lowercase |
development
WalletModule reference — currency management with BigDouble support, reactive properties, caps, lifetime stats, and persistence. Use when working with currencies, wallets, or financial systems.
development
UnlockConditionModule reference — composable unlock conditions using ScriptableObjects with AND/OR/NOT logic, stat/currency/upgrade/prestige/gamestate/boolean checks, reactive service layer with progress tracking. Use when implementing unlock systems, gating, or progression requirements.
development
UndoModule reference — command pattern with undo/redo stacks, command merging, and reactive state. Use when implementing undo/redo, undoable actions, or command patterns.
tools
Unity UI Toolkit reference — UXML documents, USS styling, MVVM pattern (ViewModel + Presenter), custom VisualElements, responsive layout, animations, performance guidelines, and complete Figma-to-UI-Toolkit property mapping. Use when building or modifying UI with UI Toolkit, creating UXML/USS files, writing ViewModels or Presenters, designing screens/panels/components, or converting Figma designs to UI Toolkit.