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/writing-kavo-docs/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/writing-kavo-docs)<a href="https://agentmods.dev/skills/kavo-labs/kavo/writing-kavo-docs"><img src="https://agentmods.dev/badge/skills/kavo-labs/kavo/writing-kavo-docs/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/writing-kavo-docs"><img src="https://agentmods.dev/badge/skills/kavo-labs/kavo/writing-kavo-docs.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.00067 | $0.01416 |
| Opus 5.5 | $0.00027 | $0.00566 |
| Sonnet 5.5 | $0.00013 | $0.00283 |
| Haiku 4.5 | $0.00007 | $0.00142 |
Grade A, and why
writing-kavo-docs 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 1mo 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 — 57 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Writing Kavo docs
Overview
Kavo's docs are dense and code-first, not tutorial-shaped. A page states the behavior, shows it in one runnable snippet, and links out for depth instead of restating it. REQUIRED SUB-SKILL: run humanizer:humanizer (file mode) on the finished prose before landing it — the voice rules below stop AI tells from being written; humanizer catches what slips through.
When to use
- Adding a new page under
docs/(feature, guide, reference, or andocs/internals/architecture/*note). - Editing prose in an existing
docs/**.mdfile. - Not for ADRs themselves — use
add-adrfor those; this skill is for the docs that describe behavior, not the decision record that justified it.
Voice, in one paragraph
Second person is rare; most pages describe the system ("Kavo stops actually deleting rows"), not the reader. Sentences run long and packed rather than choppy — subordinate clauses over "rule of three" bullet lists. Headers are sentence case, minimal, and often skipped entirely for a short page (soft-delete.md has zero ## headers). No "Overview" or "Introduction" throat-clearing paragraph — the first sentence is the first fact. No promotional adjectives (rich, powerful, seamless, robust) and no "-ing" tacked-on justification clauses. A page can end mid-fact, on a config note or a See [X](path) link — never on an upbeat summary.
Structural conventions
- One code block does the explaining. Show the entity/config/request once, real and copy-pasteable (an actual entity name like
Book, notEntity/Foo), then describe what it produces in prose. Don't add a second example that says the same thing a different way. - Tables for enumerations, not bullet lists: generated routes, config keys, operator mappings. See the routes table in
docs/getting-started/quick-start.md. - Cross-references are inline sentences that name what's on the other end, not "see also" appendices:
See [Soft delete, restore & purge](/internals/architecture/11-soft-delete) for the full behavior: unique-index caveats, cascades, and what's deliberately not built.The link text is the page title; the clause after the colon previews what the reader gets there, so they can decide whether to follow it. - Config-key references point at the anchor, not just the page:
`/guides/configuration/settings#softdelete`, matching the heading## deletewould produce. - Links are root-relative and extensionless (
/features/soft-delete, not./soft-delete.md), matching VitePresscleanUrls. - A page lives under the section its sidebar entry already has in
docs/.vitepress/config.mts— check the sidebar array before inventing a new section for one page. - Write the MDX dialect, not VitePress's. Docs7 compiles every page as MDX from the same
docs/folder, anddocs/.vitepress/docs7-compat.tsrewrites it for VitePress. Use<CodeGroup>with```bash pnpmtab labels, not::: code-group;<Danger>/<Warning>/<Tip>/<Note>, with an optional bold first line as the title, not::: danger; wrap<script setup>and Vue components in a{/* vitepress…*/}block. Never start a wrapped prose line with{or<.tests/docs-mdx.spec.tscompiles every page and fails otherwise.
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.
- 1mo ago Changed · +1 lines ff6e595188ba
- 1mo ago Changed 220e6988ea26
- 1mo ago First seen · 56 lines · 67 tokens per session scan A 04f38f729e79
writing-kavo-docs is a skill published in the GitHub repository kavo-labs/kavo (17 stars, last pushed today), licensed MIT. It adds 67 tokens to every session and 1,416 once invoked, about $0.0003 per session on Opus 5.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
nestjs-expert
Expert knowledge in NestJS framework, modular architecture, dependency injection, TypeORM/Prisma persistence, microservices transports, and enterprise-grade Node.js backend development. Use when the user mentions NestJS, Nest CLI, decorators, dependency injection, guards, interceptors, or backend microservices, or…
create-pr
Creates a GitHub PR with a Linear-ticket-prefixed title and a decision-led, narrative description for Prisma 8. Use when the user wants to create a pull request, open a PR, or submit changes for review.
draft-release-notes
Author the committed release-notes file for a Prisma 8 release (stable or 8.0.0-rc.N) by enumerating the merged PRs since the previous release v tag (stable or -rc.N), resolving opaque TML-NNNN: titles via Linear context (never copied verbatim), triaging public-worthiness, and writing categorized notes — breaking…
publish-npm-version
Cuts the next release of Prisma 8: bumps the root package.json version (on the v8 RC line: 8.0.0-rc.N → rc.N+1), propagates it to every workspace package, and opens a PR titled "chore(release): bump to ". When the maintainer merges the PR, the Publish to npm workflow runs automatically and ships the new version to npm…
record-upgrade-instructions
Record upgrade instructions alongside a Prisma 8 breaking-change PR, so downstream consumers (users of @internal/ and authors of Prisma 8 extensions) can apply the matching code translation automatically via the published upgrade skills. Use when you have refactored framework code and the test suite went red in…
triage-contributor-pr
Triage open pull requests from external contributors to prisma/orm and produce a per-PR verdict with evidence. Use when a maintainer asks to triage, evaluate, assess, or review the queue of incoming contributor PRs, to decide whether a fork PR is safe to run CI on, to check whether a PR is in scope for its version…