Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add alexpialetski/doccraft --skill doccraft-configgit clone --depth 1 https://github.com/alexpialetski/doccraftWrote 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/alexpialetski/doccraft/doccraft-config)<a href="https://agentmods.dev/skills/alexpialetski/doccraft/doccraft-config"><img src="https://agentmods.dev/badge/skills/alexpialetski/doccraft/doccraft-config/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/alexpialetski/doccraft/doccraft-config"><img src="https://agentmods.dev/badge/skills/alexpialetski/doccraft/doccraft-config.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.00094 | $0.05052 |
| Opus 5.5 | $0.00038 | $0.02021 |
| Sonnet 5.5 | $0.00019 | $0.01010 |
| Haiku 4.5 | $0.00009 | $0.00505 |
Grade A, and why
doccraft-config 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 2mo 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 — 617 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Managed by doccraft —
doccraft updateregenerates this file. Local edits will be overwritten. Seedoccraft.jsonto override project-specific vocabulary and paths without touching this file.
doccraft — config
When to use
- After
doccraft init: run Analyse mode to tailor the freshly scaffoldeddoccraft.jsonto the project's actual subsystems, surfaces, and themes. - Any time you want to add or change a config field: run Edit mode with a plain-English request ("add slice:billing", "set maxStoryFiles to 10").
- Before invoking
doccraft-storyordoccraft-queue-auditwhen skill output references unfamiliar vocabulary — the config is probably stale.
Schema
The full JSON Schema for doccraft.json is embedded below. Use it for
validation in Edit mode instead of calling any CLI.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Doccraft configuration",
"description": "Configuration for doccraft skills and CLI behaviour. Managed by the doccraft-config skill — run `doccraft init` to scaffold, then invoke doccraft-config to tailor.",
"type": "object",
"properties": {
"$schema": {
"title": "JSON Schema URL",
"description": "Schema pointer consumed by IDE tooling for validation and hover tooltips. doccraft update keeps this in sync with the version stamp — do not edit manually.",
"type": "string",
"examples": [
"https://cdn.jsdelivr.net/npm/[email protected]/schema/doccraft.schema.json"
]
},
"version": {
"title": "Doccraft version",
"description": "The doccraft version this config was last written or updated by. doccraft update bumps this automatically via surgical edit.",
"type": "string",
"examples": [
"0.9.0",
"1.0.0",
"1.2.3"
]
},
"_hint": {
"title": "Authoring hint",
"description": "Reminder that doccraft-config is the recommended authoring tool for this file. The schema embedded in the skill matches the installed doccraft version — no CLI call required for edits.",
"type": "string",
"examples": [
"Edit with the doccraft-config skill (npx doccraft@latest llm exposes the schema)."
]
},
"docsDir": {
"title": "Docs directory",
"description": "Root folder for all doccraft planning docs, relative to the project root. Substituted into installed skill files and Cursor rule globs as docs at install time. Re-run `doccraft update` after changing this value.",
"type": "string",
"examples": [
"docs",
"design",
"planning",
".docs"
]
},
"story": {
"title": "Story skill configuration",
"description": "Vocabulary and identifier format consumed by the doccraft-story skill. Values here teach the skill your project-specific taxonomy without touching SKILL.md.",
"type": "object",
"properties": {
"areas": {
"title": "Story areas",
"description": "Subsystem or team tags used in story `area:<value>` frontmatter. Aligns with your conventional-commit scopes for traceability.",
"type": "array",
"items": {
"type": "string"
},
"examples": [
[
"cli",
"api",
"ui"
],
[
"backend",
"frontend",
"infra"
],
[
"auth",
"data",
"payments"
]
]
},
"slices": {
"title": "Product slices",
"description": "User-facing product surface tags used in story `slice:<value>` frontmatter. Leave empty for purely technical tools with no distinct product surfaces.",
"type": "array",
"items": {
"type": "string"
},
"examples": [
[
"auth",
"dashboard",
"billing"
],
[
"admin",
"onboarding",
"settings"
],
[]
]
},
"themes": {
"title": "Story themes",
"description": "Cross-cutting concern or delivery theme tags used in story `theme:<value>` frontmatter. Recur across multiple stories and help doccraft-session-wrap cluster related work.",
"type": "array",
"items": {
"type": "string"
},
"examples": [
[
"performance",
"security",
"dx"
],
[
"testing",
"docs",
"install"
],
[
"observability",
"reliability",
"compliance"
]
]
},
"status": {
"title": "Story status values",
"description": "Allowed values for the `status:` frontmatter field on stories. Doccraft-story validates frontmatter against this list and rejects unknown values. Defaults to the standard todo / in_progress / done lifecycle; extend if your project uses additional states (e.g. blocked, abandoned, parked).",
"type": "array",
"items": {
"type": "string"
},
"examples": [
[
"todo",
"in_progress",
"done"
],
[
"todo",
"in_progress",
"done",
"blocked",
"abandoned"
],
[
"planned",
"active",
"shipped",
"parked"
]
]
},
"urgency": {
"title": "Story urgency values",
"description": "Allowed values for the `urgency:` frontmatter field on stories. Defaults to the now / soon / later scale; some projects prefer to use tier names (p0..p4) directly here, or mix both forms.",
"type": "array",
"items": {
"type": "string"
},
"examples": [
[
"now",
"soon",
"later"
],
[
"p0",
"p1",
"p2",
"p3",
"p4"
],
[
"now",
"soon",
"later",
"p0",
"p1",
"p2"
]
]
},
"impact": {
"title": "Story impact values",
"description": "Allowed values for the `impact:` frontmatter field on stories. Defaults to the H / M / L scale; projects that prefer descriptive words (high / medium / low) or other taxonomies can override.",
"type": "array",
"items": {
"type": "string"
},
"examples": [
[
"H",
"M",
"L"
],
[
"high",
"medium",
"low"
],
[
"H",
"M",
"L",
"medium"
]
]
},
"id": {
"title": "Story identifier format",
"description": "Controls which `id:` values doccraft-story accepts. Validated on creation and edit.",
"type": "object",
"properties": {
"tiers": {
"title": "Priority tiers",
"description": "Ordered priority tier prefixes (e.g. `p0`, `p1`). doccraft-story and doccraft-queue-audit use these to group and sort work. Empty list disables tier conventions.",
"type": "array",
"items": {
"type": "string"
},
"examples": [
[
"p0",
"p1",
"p2",
"p3"
],
[
"p0",
"p1",
"p2",
"p3",
"p4"
],
[
"critical",
"high",
"normal"
]
]
},
"pattern": {
"title": "ID pattern",
"description": "Regex the story `id:` value must satisfy. Validated by doccraft-story on creation and edit. Use anchors (^ and $) to be precise.",
"type": "string",
"examples": [
"^(P\\d+(\\.\\d+)?|[a-z][a-z0-9-]+)$",
"^P\\d+$",
"^[a-z][a-z0-9-]+-\\d+$"
]
}
}
}
}
},
"queue": {
"title": "Queue configuration",
"description": "Labels for the named table sections in docs/queue.md. doccraft-queue-audit locates tables by heading text, not position.",
"type": "object",
"properties": {
"tables": {
"title": "Queue table labels",
"description": "Human-readable heading text for each queue table section. Change these if your project uses different headings.",
"type": "object",
"properties": {
"suggestedOrder": {
"title": "Suggested order table label",
"description": "Heading for the main prioritised work queue. doccraft-queue-audit searches docs/queue.md for a table under this exact heading.",
"type": "string",
"examples": [
"Suggested order",
"Next up",
"Sprint queue"
]
},
"platformSpikes": {
"title": "Platform spikes table label",
"description": "Heading for exploratory or research work not yet ready for the main queue.",
"type": "string",
"examples": [
"Platform spikes",
"Spikes",
"Research queue"
]
}
}
}
}
},
"queueAudit": {
"title": "Queue audit configuration",
"description": "Tuning knobs for the doccraft-queue-audit skill.",
"type": "object",
"properties": {
"laneFrom": {
"title": "Lane source tags",
"description": "Which frontmatter tag prefixes, in priority order, the audit uses to assign a story to a swimlane. First match wins. `area` is most common; set `slice` first for products that organise primarily by surface. `epic` groups the queue by the story `epic:` field (requires an epics extension that defines that field) — set it first to make the milestone/epic roadmap the primary ordering. See ADR 016.",
"type": "array",
"items": {
"type": "string",
"enum": [
"area",
"slice",
"epic"
]
},
"examples": [
[
"area",
"slice"
],
[
"slice",
"area"
],
[
"epic",
"area"
]
]
},
"scale": {
"title": "Audit scale limits",
"description": "Safety thresholds that cause the audit to pause for confirmation before applying large changes. Raise for bigger projects; lower for strict containment.",
"type": "object",
"properties": {
"maxStoryFiles": {
"title": "Max story files per audit run",
"description": "If a single audit pass would touch more than this many story files, it stops and asks for confirmation before applying.",
"type": "number",
"examples": [
5,
10,
20
]
},
"maxQueueReorderPct": {
"title": "Max queue reorder percentage",
"description": "If a reorder would move more than this percentage of Suggested order rows, the audit stops for confirmation. Range 0–100.",
"type": "number",
"minimum": 0,
"maximum": 100,
"examples": [
50,
25,
75
]
}
}
}
}
},
"packages": {
"title": "Monorepo package roots",
"description": "Ordered array of package directories that opt into doccraft planning. Each entry declares a path (relative to the project root) under which the same docs/ skeleton — stories, ADRs, queue, backlog — is scaffolded and managed. Declaration order is significant for the rendered package list in skill bodies. Absent or empty preserves single-root behaviour. Slugs (the last path segment of each declared path) must be unique. See ADR 014 in the doccraft repo for the convention.",
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"title": "Package directory path",
"description": "Path to the package directory containing the docs/ tree, relative to the project root. The last segment is used as the namespace slug for that package.",
"type": "string",
"examples": [
"packages/audio-engine",
"packages/ui-shell"
]
}
},
"required": [
"path"
]
},
"examples": [
[],
[
{
"path": "packages/audio-engine"
},
{
"path": "packages/ui-shell"
}
]
]
},
"extensions": {
"title": "Doccraft extensions",
"description": "Ordered array of project-local extension directories. Each entry declares a path (relative to the project root) to a directory containing an extension.yaml manifest. Extensions bake fragments into skill bodies at marker points and may scaffold supporting docs/ folders. Declaration order is significant — fragments concatenate in this order. See ADR 013 in the doccraft repo for the full mechanism.",
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"title": "Extension directory path",
"description": "Path to a directory containing extension.yaml, relative to the project root.",
"type": "string",
"examples": [
"./docs/.doccraft/extensions/business",
"./docs/.doccraft/extensions/model-hints"
]
}
},
"required": [
"path"
]
},
"examples": [
[],
[
{
"path": "./docs/.doccraft/extensions/business"
}
]
]
},
"sessionWrap": {
"title": "Session wrap configuration",
"description": "Controls which artifact categories doccraft-session-wrap considers in scope. Disabling a category prevents the skill from proposing that folder tree.",
"type": "object",
"properties": {
"capture": {
"title": "Capture categories",
"description": "Enable or disable each artifact category. Set to `false` for categories your project does not maintain.",
"type": "object",
"properties": {
"research": {
"title": "Research notes",
"description": "Allow doccraft-session-wrap to propose artifacts under docs/research/. Set false if your project does not maintain a research folder.",
"type": "boolean",
"examples": [
true,
false
]
},
"reference": {
"title": "Reference docs",
"description": "Allow doccraft-session-wrap to propose artifacts under docs/reference/. Set false if your project does not maintain a reference folder.",
"type": "boolean",
"examples": [
true,
false
]
},
"business": {
"title": "Business updates",
"description": "Allow doccraft-session-wrap to propose artifacts under docs/business/. Set false if your project does not maintain a business folder.",
"type": "boolean",
"examples": [
false,
true
]
}
}
}
}
}
}
}
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.
- 2mo ago First seen · 617 lines · 94 tokens per session scan A 763cbb00bd0b
doccraft-config is a skill published in the GitHub repository alexpialetski/doccraft (4 stars, last pushed 4mo ago), licensed MIT. It adds 94 tokens to every session and 5,052 once invoked, about $0.0004 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-08-31.
Other skills, from other repositories
review-finished-ad
Final QC gate for a rendered 9:16 video ad, run before it is published. One script checks what a machine can decide — exact 1080x1920 size, a hook that moves and speaks in the first second, no frozen stretches, no dead air, no black frames, the brand's real logo on the end card (never a favicon, never a redrawn or…
render-mosaic-grid-reveal
Render a 'mosaic-grid-reveal' video from a config — a real-DOM FULL-BLEED N×N mosaic of real product tiles that pops in one tile at a time (scatter order, ease-out-back overshoot), the grid clears, then the brand wordmark builds line-by-line followed by a sub-label, tagline, and CTA; frame-stepped via Playwright and…
review-work
Post-implementation gate review: run manual QA on the real surface yourself, then launch ONE gate reviewer (never a panel) to audit goal, constraints, code quality, security, missed context, and QA evidence. Use before a PR handoff or when the user explicitly asks to review completed work.
remove-deadcode
Remove unused code from this project with ultrawork mode, LSP-verified safety, atomic commits. Triggers: remove dead code, dead code, cleanup, remove unused.
visualize
Builds a self-contained HTML page (chart, table, diagram, dashboard) to show inline in a thread. Use before calling showhtmlpage, htmlpreview or htmlrender, or whenever an answer reads better as a page than as prose.
render-3d-character-explainer
Assemble an animated character-explainer video ad (77s, 9:16, any art style: Pixar-style 3D, claymation, anime, paper-cut, felt) on an "N types of X" listicle spine: one recurring human protagonist plus one persona character per list item. Given per-scene clips, a scene timing table and narration, it trims…