atomic-commitlisted
Install: claude install-skill damusix/atomic-claude
<trigger>
- "write a commit", "commit message", "generate commit"
- Staging changes for commit
- Ship verbs delegating message format
</trigger>
Write commit messages terse and exact. Conventional Commits. No fluff. Why over what.
## Rules
**Subject line:**
- `<type>(<scope>): <imperative summary>` — `<scope>` optional
- Types: `feat`, `fix`, `refactor`, `perf`, `docs`, `test`, `chore`, `build`, `ci`, `style`, `revert`
- Imperative mood: "add", "fix", "remove" — not "added", "adds", "adding"
- ≤50 chars when possible, hard cap 72
- No trailing period
- Match project convention for capitalization after the colon
**Body (only if needed):**
- Skip entirely when subject is self-explanatory
- Add body only for: non-obvious *why*, breaking changes, migration notes, linked issues
- Wrap at 72 chars
- Bullets with `-`, not `*`
- Reference issues/PRs at end: `Closes #42`, `Refs #17`
**Omit from commit messages:**
- "This commit does X", "I", "we", "now", "currently" — the diff says what
- "As requested by..." — use `Co-authored-by:` trailer instead
- "Generated with Claude Code" or any AI attribution
- Emoji (unless project convention requires)
- Restating the file name when scope already says it
## Examples
<examples>
<example>
Diff: new endpoint for user profile with body explaining the why
- Bad: `feat: add a new endpoint to get user profile information from the database`
- Good:
```
feat(api): add GET /users/:id/profile
Mobile client needs slim profile