Why Use This
This skill provides specialized capabilities for axone-protocol's codebase.
Use Cases
- Developing new features in the axone-protocol repository
- Refactoring existing code to follow axone-protocol standards
- Understanding and working with axone-protocol's codebase structure
Install Guide
2 steps - 1
- 2
Install inside Ananke
Click Install Skill, paste the link below, then press Install.
https://github.com/axone-protocol/contracts/tree/main/.github/skills/conventional-commits
Skill Snapshot
Auto scan of skill assets. Informational only.
Valid SKILL.md
Checks against SKILL.md specification
Source & Community
Updated At Jan 18, 2026, 11:58 AM
Skill Stats
SKILL.md 149 Lines
Total Files 1
Total Size 0 B
License NOASSERTION
---
name: conventional-commits
description: Guide for writing conventional commit messages. Use when committing changes, writing commit messages, or reviewing commit history.
license: BSD-3-Clause
metadata:
author: axone.xyz
version: "1.0"
---
# Conventional Commits
This skill helps you write commit messages following the [Conventional Commits](https://www.conventionalcommits.org/) specification, adapted to Axone protocol preferences.
## When to use this skill
Use this skill when you need to:
- Write commit messages for changes
- Review or improve commit messages
- Structure commits for a pull request
## Commit Message Format
```text
<type>(<scope>): <verb> <subject>
```
One line only. No body. No footer (except for breaking changes).
## Subject Line Rules
- **Imperative mood, present tense**
- **Short, dense, unambiguous**
- **Describes the intent**, not the implementation
- **One line only**
- No capitalization at start
- No period at end
## Verb Selection
> ⚠️ **Avoid weak verbs**: `add`, `remove`, `change`, `update`, `modify`
Use **precise, action-oriented verbs**:
| Verb | Use When |
| - | - |
| `enforce` | Adding constraints or rules |
| `introduce` | Bringing in new concepts/APIs |
| `implement` | Building out functionality |
| `prevent` | Blocking undesired behavior |
| `fix` | Correcting bugs |
| `refactor` | Restructuring without behavior change |
| `clarify` | Improving readability/naming |
| `align` | Making consistent with standards |
| `tighten` | Strengthening validation/constraints |
| `harden` | Security or robustness improvements |
| `validate` | Input/state verification |
| `handle` | Managing edge cases |
| `support` | Enabling new use cases |
| `ensure` | Guaranteeing invariants |
| `document` | Documentation work |
## Type
| Type | Description | Triggers |
| - | - | - |
| `feat` | New feature | Minor version bump |
| `fix` | Bug fix | Patch version bump |
| `docs` | Documentation only | No release |
| `style` | Formatting, whitespace | No release |
| `refactor` | Code restructuring | No release |
| `perf` | Performance improvement | Patch version bump |
| `test` | Adding/updating tests | No release |
| `build` | Build system, dependencies | No release |
| `ci` | CI/CD configuration | No release |
| `chore` | Maintenance tasks | No release |
## Scope
- **Mandatory when it adds clarity**
- Short, meaningful, domain or component oriented
- Use contract names **without `axone-` prefix**: `gov`, `logic`
- Other examples: `workflow`, `dependabot`, `README`, `make`, `deps`
- **If unsure, omit it**
## Examples
See [examples](./assets/examples.md) for comprehensive good and bad examples.
Quick reference:
```text
feat(gov): introduce quadratic voting mechanism
fix(handlers): prevent overflow in vote counting
refactor(state): clarify storage key naming
test(gov): validate error paths for unauthorized access
build(deps): enforce abstract-sdk 0.26.1
```
## Granularity
Rule: **One commit = one intention**
| Instead of... | Prefer... |
| - | - |
| One big mixed commit | Multiple focused commits |
| `feat: implement X and fix Y` | Two separate commits |
| Tests bundled with feature | Separate `test:` commit |
| Build changes with feature | Separate `build:` commit |
## What to Avoid
- ❌ Generic messages hiding what changed
- ❌ Explanations or rationale in the message
- ❌ Marketing language or inflated wording
- ❌ Multiple intentions in one commit
- ❌ Vague subjects like "improve", "update", "fix issue"
## Breaking Changes
Use `!` after type/scope:
```text
feat(msg)!: restructure ExecuteMsg variants
refactor(api)!: enforce stricter validation schema
```
## Commit Linting
Commits are validated using [commitlint](https://commitlint.js.org/). Ensuring lint passes is **mandatory**.
Validate locally:
```bash
npm i -g @commitlint/cli @commitlint/config-conventional
echo "feat(gov): introduce voting mechanism" | commitlint --extends @commitlint/config-conventional
```
## Quick Checklist
Before committing, verify:
- [ ] Uses a strong, precise verb
- [ ] Subject describes intent clearly
- [ ] Scope is present if it adds clarity
- [ ] One intention per commit
- [ ] No generic or vague wording
- [ ] Commit message passes linting