Agent skill

Docs Writing

by rust-dd in rust-dd/tako

Conventions for writing and maintaining tako documentation pages under website/content/docs/.

MITAuto-check passedBackend & APIs

Install Docs Writing

skills CLI
$ npx skills add rust-dd/tako --skill docs-writing -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install rust-dd/tako docs-writing --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/rust-dd/tako.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/docs-writing .claude/skills/docs-writing && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
docs-writing
GitHub stars
162
Token cost
~2.8k tokens
SKILL.md length
443 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
MIT

At a glance

Conventions for writing and maintaining tako documentation pages under website/content/docs/.

  • Works in 3 steps: Trigger map — which template to use → Frontmatter schema (mandatory) → Page templates
  • Tasks that involve Markdown
  • SKILL.md covers 1. Trigger map — which…, 2. Frontmatter schema…, 3. Page templates and Configuration ## TLS /…, plus 1 more section
  • Calls bun

What it does

Docs Writing is an agent skill from rust-dd/tako. Conventions for writing and maintaining tako documentation pages under website/content/docs/. Page templates (transport / extractor / middleware / plugin / concept / tutorial / guide / reference), the frontmatter schema, meta.json sidebar wiring, RustExample-backed examples, and the audit-script contract. Invoke whenever a new public type ships and needs a docs page, or when fixing rot in an existing page.

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering Markdown, Realtime and WebSockets and gRPC and Protobuf. It works with gRPC, OpenAPI, GraphQL and Rust. The repository describes itself as: Multi-transport Rust web framework: HTTP/1.1, HTTP/2, HTTP/3, WebSocket, SSE, gRPC, TCP/UDP and Unix sockets behind one router, on Tokio or Compio. The licence is MIT.

When your agent uses it

  • Tasks that involve Markdown
  • Tasks that involve Realtime and WebSockets
  • Tasks that involve gRPC and Protobuf

Example prompts

  • “Use the docs-writing skill to convention for writing and maintaining tako documentation pages under website/content/docs/”
  • “/docs-writing”

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Trigger map — which template to use
  2. Frontmatter schema (mandatory)
  3. Page templates

What it can do on your machine

Read from SKILL.md and the folder at commit 7fa9c80. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • bun

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Docs Writing loads about 2.8k tokens when it runs. Until then it costs about 106 tokens; SKILL.md has 443 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~106
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from rust-dd/tako at commit 7fa9c80, republished under its MIT licence (© rust-dd). 443 words, ~2,824 tokens.

Download SKILL.mdSave it as .claude/skills/docs-writing/SKILL.md (or your agent's skills folder).
name
docs-writing
description
Conventions for writing and maintaining tako documentation pages under website/content/docs/. Page templates (transport / extractor / middleware / plugin / concept / tutorial / guide / reference), the frontmatter schema, meta.json sidebar wiring, RustExample-backed examples, and the audit-script contract. Invoke whenever a new public type ships and needs a docs page, or when fixing rot in an existing page.

Docs writing — tako

The docs site lives under website/ (Fumadocs + Next.js + MDX, Bun, deployed to tako.rust-dd.com). Content is website/content/docs/. Sections with a single page live as a flat website/content/docs/<section>.mdx; sections with multiple pages live as website/content/docs/<section>/<name>.mdx plus a meta.json sidebar manifest. Folder-form sections today: getting-started/, concepts/, transports/, extractors/, middleware/, tutorials/, reference/. All of them carry an index.mdx overview except reference/, whose meta.json lists only migration-2-1, migration, features, api.

This SKILL is the per-page authoring contract. The audit script (website/scripts/docs-audit.ts) and the linter (website/scripts/lint-mdx.ts) enforce the rules under §2, §4, and §7.

When a section page outgrows a single MDX file (≈ 500 lines), promote it to folder-form: create <section>/index.mdx (move the overview content here) plus per-feature <section>/<name>.mdx pages, add a <section>/meta.json sidebar manifest, and remove <section>.mdx.

1. Trigger map — which template to use

Adding a public …          →  Page goes …                       →  Template
──────────────────────────    ───────────────────────────────       ─────────
transport / protocol       →  transports/<name>.mdx              →  §3.1 Transport
extractor                  →  expand extractors/<group>.mdx      →  §3.2 Extractor
                              (body / request-meta / auth / cookies)
middleware                 →  expand middleware/<group>.mdx      →  §3.3 Middleware
                              (auth / security / traffic / metrics)
plugin (TakoPlugin)        →  plugins.mdx (or plugins/<name>)    →  §3.4 Plugin
cross-cutting trait/idea   →  concepts/<name>.mdx                →  §3.5 Concept
end-to-end use case        →  tutorials/<name>.mdx               →  §3.6 Tutorial
request-handling guide     →  flat <name>.mdx                    →  §3.7 Guide
normative reference        →  reference/<name>.mdx               →  §3.8 Reference

Crate ownership (drives the crate: key and "which page" calls):

CrateOwns
tako-rsumbrella re-export (tako::*)
tako-rs-corerouting, handlers, middleware traits, body/request/response, state, signals, queue, GraphQL/gRPC/OpenAPI helpers
tako-rs-extractorsconcrete request extractors
tako-rs-serverHTTP/1.1, HTTP/2, HTTP/3, WebTransport, TLS, raw TCP/UDP/Unix, PROXY, compio variants
tako-rs-streamsWebSocket, SSE, file streaming, static files, raw QUIC
tako-rs-pluginsbundled middleware + plugins
tako-rs-macros#[tako::route] / #[tako::get] family
tako-rs-server-ptthread-per-core entry point

If a new type does not fit an existing section, stop and ask — adding a new top-level section is a sidebar decision, not a per-page one.

2. Frontmatter schema (mandatory)

Every page begins with frontmatter validated by zod in website/source.config.ts and re-checked by website/scripts/lint-mdx.ts.

yaml
---
title: <human-readable name>                 # required
description: <one sentence, 20-160 chars>     # required; comfort window 24-152
category: transport                           # concept | guide | transport | extractor | middleware | plugin | tutorial | reference
subcategory: diffusion                        # optional, free string
crate: tako-rs-server                         # optional; must match /^tako-rs(-[a-z]+)*$/
module_path: tako::server::serve_h3           # optional
since: 2.0.0                                   # optional; /^\d+\.\d+(\.\d+)?(-[a-z0-9.]+)?$/
status: stable                                # stable | experimental | deprecated
runtime: both                                 # tokio | compio | both — tako's dual-runtime axis
features: [http3, tls]                         # optional; cargo features needed (inline flow array)
replaced_by: <slug>                            # REQUIRED when status: deprecated
---

Current house convention: every page carries title, description, category, since: 2.0.0, status: stable. Add crate, runtime, and features on catalog pages (transports / extractors / middleware) where they are meaningful. description is the OG meta + search snippet — keep it one sentence, ≤ 152 chars to avoid the soft warning.

Show full SKILL.md (158 more words)Show less

3. Page templates

Each skeleton is modelled on a real page — open the cited page for the full house style before writing a new one.

3.1 Transport — base: transports/http.mdx
mdx
---
title: HTTP/3
description: …
category: transport
crate: tako-rs-server
runtime: tokio
features: [http3]
since: 2.0.0
status: stable
---

# HTTP/3

<one-paragraph what + when. State runtime support up front.>

## Serving it

```rust
// minimal serve example, real API names from tako-rs-server

Configuration ## TLS / certificates (if relevant)

Constraints <Callout type="warn"> for tokio-only / feature gates </Callout>

See also: /docs/concepts/runtimes, /docs/transports (catalog).


Use a `<Tabs items={['Tokio','Compio']}>` split only when the transport
ships on both runtimes with different entry points.

### 3.2 Extractor — base: `extractors/body.mdx`

Group page (body / request-meta / auth / cookies). One `##` section per
extractor: the real type name, what it pulls from the request, a handler
snippet, and the feature gate. Put a `<Callout type="warn">` on any
security-sensitive extractor (e.g. unverified JWT claims). Cross-link the
matching middleware (`/docs/middleware/auth`).

### 3.3 Middleware — base: `middleware/auth.mdx`

Group page (auth / security / traffic / metrics). Lead with the
middleware model (`.into_middleware()` vs `router.plugin(...)`), then one
`##` per middleware: constructor, what it does, ordering notes. Verify the
real type names against `tako-rs-plugins` — they differ from the README's
friendly names (`Csrf` not `CsrfMiddleware`, `CookieSigned` not
`SignedCookieJar`).

### 3.4 Plugin — base: `plugins.mdx`

Explain the `TakoPlugin` trait, the `plugins` feature, and the
plugin-vs-middleware split (a plugin can `install()` its own routes;
middleware only wraps the chain). Link to the four middleware group pages.

### 3.5 Concept — base: `concepts/architecture.mdx`

Cross-cutting explanation (architecture, request lifecycle, runtimes,
design philosophy). Prose + tables over code. No per-API depth — link out
to the catalog pages for that.

### 3.6 Tutorial — base: `tutorials/rest-api.mdx`

End-to-end, runnable. Prefer `<RustExample path="examples/…/src/main.rs" />`
over hand-written code. Walk the reader from empty `main` to a working
service; link each building block to its reference page.

### 3.7 Guide — base: `routing.mdx`

Flat top-level page for a request-handling topic (routing, state, streams,
queue, signals, observability, deployment). Task-oriented prose with
focused snippets.

### 3.8 Reference — base: `reference/features.mdx`

Normative: the cargo feature graph, migration ledger,
API index. Tables + exact, exhaustive content. The feature page must cover
every flag in the README "Feature Flags" table.

## 4. meta.json sidebar wiring

- **Top-level** `content/docs/meta.json` orders the whole sidebar and uses
  `"---Section title---"` string entries as group separators (e.g.
  `"---Transports---"`). Folder names (`transports`, `concepts`, …) and
  flat slugs (`routing`, `state`, …) are listed in display order.
- **Folder** `<section>/meta.json` is `{ "title": "...", "pages": [...] }`.
  List `index` first when the folder has an overview page.
- The audit **fails** if an `.mdx` file is not listed in its folder's
  `pages` array. Every new page must be added to the relevant `meta.json`.

## 5. MDX components

Registered globally in `website/mdx-components.tsx` — no import in MDX.

- **`Tabs` / `Tab`** — only for a genuine multi-variant split; the
  canonical tako case is Tokio vs Compio. A lone snippet is a plain
  fenced ```rust block, not a one-tab `Tabs`.
- **`Callout`** — `<Callout type="warn">…</Callout>` (`info | warn |
  error`). Use `warn`/`error` for security gotchas and tokio-only
  constraints.
- **`RustExample`** — `<RustExample path="examples/auth/src/main.rs" />`
  inlines a real workspace file verbatim. The path is relative to the
  **repo root** (`/Users/danixx/Desktop/tako`), not `website/`. The file
  must exist or the audit fails.

Internal links are **site paths**, never `.md`: top-level `foo.mdx` →
`/docs/foo`; `transports/http.mdx` → `/docs/transports/http`; folder index
`transports/index.mdx` → `/docs/transports`.

## 6. Examples must be real

Accuracy is the whole job. Read the crate source before writing — do not
invent signatures or type names. Prefer `<RustExample>` pointing at a real
file in `examples/` over a hand-written snippet. Keep tokio-only vs compio
support correct (the README transport matrix is the reference: HTTP/2 +
TLS, h2c, HTTP/3, WebTransport, raw TCP/UDP, Unix sockets, and PROXY protocol on both runtimes; only the raw QUIC helper `RawQuicSession` is tokio-only). When a
type's friendly name in the README differs from its exported name, document
the exported name and mention the catalog name once.

## 7. The audit-script contract

Run before every commit that touches docs:

```bash
cd website
bun run typecheck    # tsc --noEmit
bun run lint:mdx     # frontmatter zod schema (scripts/lint-mdx.ts)
bun run audit        # lint:mdx + meta coverage + RustExample + link graph
bun run build        # next build — MDX + zod schema, the source of truth
  • lint:mdx hard-fails on: missing title/description; description length outside [20, 160]; category / status / runtime outside their enums; crate not matching /^tako-rs(-[a-z]+)*$/; status: deprecated without replaced_by. It soft-warns when description is outside the [24, 152] comfort window.
  • audit runs lint:mdx, then hard-fails on: an .mdx file missing from its directory's meta.json pages; a <RustExample path> that does not exist; a broken internal /docs/... link.
New-page checklist
  1. Write content/docs/<…>.mdx with full frontmatter (§2) and an # H1 matching title.
  2. Add its slug to the relevant meta.json pages array (§4).
  3. Ground every example in real source; use <RustExample> for runnable files (§6).
  4. bun run audit && bun run build — both green before committing.

© rust-dd, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/docs-writing of rust-dd/tako.

Open the folder on GitHubat commit 7fa9c80

Compare with similar skills

Docs Writing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Docs Writing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Docs Writing this skillrust-dd/tako162—~2.8kAutomated safety check: PassMIT
Use Yaakmountain-loop/yaak19k—~1.9kAutomated safety check: PassMIT
SpikardGoldziher/spikard123—~799Automated safety check: PassMIT
Release WorkflowGoldziher/spikard123—~909Automated safety check: PassMIT
API ForgeEliasOulkadi/shokunin114—~2.9kAutomated safety check: PassMIT
API Protocol Securityzhaji2333/CkSKILLS113—~520Automated safety check: PassMIT

Similar skills

  • Use Yaak

    mountain-loop/yaak

    A skill your agent uses when the user mentions Yaak, a Yaak workspace, or the yaak command, or asks to call, hit, or smoke test HTTP/REST endpoints, save or organize API requests for reuse or manual…

    19k GitHub stars~1.9k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Spikard

    Goldziher/spikard

    Scaffold Spikard projects and generate code from OpenAPI, AsyncAPI, OpenRPC, GraphQL, and Protobuf schemas using the Spikard CLI or its MCP server.

    123 GitHub stars~799 tokensUpdated 4 days ago
    Backend & APIsAuto-check passed
  • Release Workflow

    Goldziher/spikard

    Release/publish the spikard Rust core crate and CLI end-to-end.

    123 GitHub stars~909 tokensUpdated 4 days ago
    Backend & APIsAuto-check passed
  • API Forge

    EliasOulkadi/shokunin

    Design REST/GraphQL APIs with OpenAPI 3.1, error handling, pagination, rate limiting, webhooks, and idempotency.

    114 GitHub stars~2.9k tokensUpdated 3 days ago
    Backend & APIsAuto-check passed
  • API Protocol Security

    zhaji2333/CkSKILLS

    当目标存在REST/GraphQL/gRPC/WebSocket接口、Swagger/OpenAPI文档、调试端点(actuator/console)、旧版本API、内部接口、微服务网关,或需要测试HTTP走私、DoS、速率限制时调用。负责API全方法测试、BOLA越权、GraphQL深度攻击、协议层漏洞挖掘。

    113 GitHub stars~520 tokensUpdated 23 days ago
    Backend & APIsAuto-check passed
  • System Design Communication

    HoangNguyen0403/agent-skills-standard

    Select how services talk: REST, gRPC, GraphQL, WebSocket, SSE, or webhook per hop, sync versus async per flow, service discovery mode, and DNS/edge routing.

    571 GitHub stars~894 tokensUpdated today
    Backend & APIsAuto-check passed

More from rust-dd/tako

  • Dev Rules

    rust-dd/tako

    General coding-style rules to apply to every project. An agent skill from rust-dd/tako.

    162 GitHub stars~810 tokensUpdated 6 days ago
    Auto-check passed

Categories

Questions about Docs Writing

What does Docs Writing do?

Conventions for writing and maintaining tako documentation pages under website/content/docs/. Docs Writing is an agent skill from rust-dd/tako. Conventions for writing and maintaining tako documentation pages under website/content/docs/.

When should I use Docs Writing?

Docs Writing fits situations like: tasks that involve Markdown; tasks that involve Realtime and WebSockets; tasks that involve gRPC and Protobuf.

How do I install Docs Writing in Claude Code?

Run `npx skills add rust-dd/tako --skill docs-writing -a claude-code`. Or copy the skill folder (.claude/skills/docs-writing in rust-dd/tako) into .claude/skills/docs-writing in your project. Claude Code loads it when a task matches its description.

How do I install Docs Writing in Codex?

Run `npx skills add rust-dd/tako --skill docs-writing -a codex`. Or copy the skill folder (.claude/skills/docs-writing in rust-dd/tako) into .agents/skills/docs-writing in your project. Codex loads it when a task matches its description.

Can I use Docs Writing in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add rust-dd/tako --skill docs-writing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/docs-writing, .gemini/skills/docs-writing, .github/skills/docs-writing and .opencode/skills/docs-writing in your project.

What does Docs Writing need to run?

Going by SKILL.md and its folder, Docs Writing needs the command-line tools its instructions call (bun).

Does Docs Writing access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Docs Writing safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Docs Writing use?

Docs Writing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Docs Writing use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Docs Writing?

Skills that share tags, products or a category with Docs Writing: Use Yaak (mountain-loop/yaak, 19k stars), Spikard (Goldziher/spikard, 123 stars), Release Workflow (Goldziher/spikard, 123 stars) and API Forge (EliasOulkadi/shokunin, 114 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Docs Writing?

rust-dd (a GitHub organization) maintains it in rust-dd/tako, which has 162 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 1, 2026.

Source: rust-dd/tako on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.