Borrowing it
Nothing to install: this file belongs to kavo-labs/kavo. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/kavo-labs/kavo/main/.claude/skills/conventions/SKILL.mdgit clone --depth 1 https://github.com/kavo-labs/kavoWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/kavo-labs/kavo/conventions)<a href="https://agentmods.dev/skills/kavo-labs/kavo/conventions"><img src="https://agentmods.dev/badge/skills/kavo-labs/kavo/conventions/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/kavo-labs/kavo/conventions"><img src="https://agentmods.dev/badge/skills/kavo-labs/kavo/conventions.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00038 | $0.00598 |
| Opus 5 | $0.00019 | $0.00299 |
| Sonnet 5 | $0.00008 | $0.00120 |
| Haiku 4.5 | $0.00004 | $0.00060 |
Grade A, and why
conventions scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 55 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Commit and branch conventions
One type vocabulary is shared across three surfaces in this repo — an
issue's label, its branch prefix, and the Conventional Commit prefix used for
work on it:
| Type | Meaning | Issue label |
|---|---|---|
feat |
New capability | type:feat |
fix |
Bug fix | type:fix |
chore |
Tooling, deps, housekeeping | type:chore |
test |
Test coverage work | type:test |
docs |
Documentation | type:docs |
refactor |
Code restructuring, no behavior change | type:refactor |
perf |
Performance improvements | type:perf |
ci |
CI/build pipeline changes | type:ci |
Creating a branch from an issue
An issue's type: label is also its branch prefix. Off an up-to-date main:
git checkout main && git pull --ff-only
git checkout -b <type>/<issue-number>-<short-slug>
If the issue has no type: label, ask the user which one applies before
branching; do not guess.
Writing commit messages
Commits follow Conventional Commits using the same type vocabulary:
<type>(<scope>): <subject> (e.g. feat(core): add cursor pagination), scope
optional but preferred when the change is package-scoped. Subject line under
~72 chars, imperative mood. Add a short body only when the "why" isn't
obvious. A breaking change adds ! right before the colon —
type(scope)!: subject — instead of (or alongside) a BREAKING CHANGE:
footer.
When a change spans more than one package, comma-separate the scopes with no
space — type(scope1,scope2): subject (e.g. fix(core,nest): align pagination defaults) — rather than picking one package to name or writing separate
commits for what is really one logical change.
commitlint.config.mjs additionally accepts build, revert, and style
as commit types, since @commitlint/config-conventional supports them out of
the box. They have no issue label or branch prefix — those three surfaces
stay pinned to the eight types above — so use them only for a commit message
on work already branched and labeled under one of those eight.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago Changed · +13 lines d648322dfd92
- 7d ago First seen · 42 lines · 38 tokens per session scan A 7169f09c83f1
conventions is a skill published in the GitHub repository kavo-labs/kavo (14 stars, last pushed today), licensed MIT. It adds 38 tokens to every session and 598 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-02.
Other skills, from other repositories
create-pr
Creates a GitHub PR with a Linear-ticket-prefixed title and a decision-led, narrative description for prisma-next. Use when the user wants to create a pull request, open a PR, or submit changes for review.
review-implement-phase
Implements triaged review actions, commits focused fixes, and posts Done plus resolves threads. Use when the user wants only the implementation phase of the review-framework workflow.
review-triage-phase
Produces canonical review actions from fetched review state and renders action markdown. Use when the user wants only triage/action-planning for the review-framework workflow.
multiline-commit-messages
Use single-quoted strings for multiline git commit messages in the Shell tool. Prevents heredoc escaping failures that produce garbled commit messages.
commit
Use when making any git commit. Always pass why the changes were made as the argument; when no reason was stated, pass the request that prompted the changes instead — never an invented why.
changelog-generator
Quick Reference - Parse conventional commits and generate categorized changelog.