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 agentmods add instructions/precisionutilityguild/docforge/claude-mdgit clone --depth 1 https://github.com/PrecisionUtilityGuild/docforgeWhat 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 | $0.00935 | $0.00935 |
| Opus 5 | $0.00467 | $0.00467 |
| Sonnet 5 | $0.00187 | $0.00187 |
| Haiku 4.5 | $0.00093 | $0.00093 |
Grade C, and why
docforge CLAUDE.md scanned grade C with 1 finding 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 yesterday.
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.
Recursive force deletehighDestructive command
rm -rf with a variable or a broad path is one typo away from removing the wrong tree.
npm run build # rm -rf dist && tsc — clean How it starts
The opening of the file, as written. The whole thing — 65 lines — stays where its author put it; the contents beside it link to each section on GitHub.
typstmcp — codebase notes for Claude
What this is
Two products in one repo (see README.md for the full picture):
- DocForge — an MCP server (stdio) for agent-driven PDF production via Typst.
Engine spec: DOCFORGE.md. Entry point
src/index.ts→dist/index.js. - Forge — a Slack agent (Bolt) that drives DocForge over MCP as a stdio child
process, not in-process (
src/forge/mcp-client.ts;FORGE_MCP=offforces the in-process fallback). Product spec: FORGE.md. Entrydist/slack/app.js.
Other docs: AUDIT.md (security/correctness audit log),
HARDENING.md,
.cursor/skills/docforge/SKILL.md (agent-facing tool usage guide).
Stack
- TypeScript,
strict, NodeNext ESM — relative imports need the.jssuffix. - Node ≥ 20. Runtime deps:
@modelcontextprotocol/sdk,@slack/bolt,ajv,zod. - Typst 0.14.2 pinned (
TYPST_VERSION_PINinsrc/config.ts); thetypstbinary must be on PATH.@previewpackages are vendored invendor/typst-packages/so compiles need no network. - vitest, eslint (flat config + typescript-eslint), prettier (enforced in CI-style
via
format:check).
Commands (verified 2026-07-13)
npm run build # rm -rf dist && tsc — clean
npm test # vitest run — 73 files / 546 tests, ~10 s wall
npm run lint # eslint — clean
npm run format:check # prettier — clean (use `npm run format` to fix)
npm run check:typst # asserts local typst matches the 0.14.2 pin
npm run check:packages # asserts vendored @preview packages present
Heavier gates (documented in README, not run during bootstrap):
npm run release:qa (full local release gate), npm run test:visual (golden-PNG
regression over 24 templates), npm run forge:smoke. Slack dev loop: npm run slack
(needs .env from .env.sample with bot + app tokens).
Layout
src/— engine (compile/,templates/,validation/,qa/,repair/,lint/,sandbox/,security/,versioning/), Slack agent (slack/), the Slack→engine bridge (forge/), transcript→template-data mappers (workflow-mappers/).templates/<id>/— 21 built-in Typst templates, each withmain.typ,components.typ,theme.typ, a JSON schema/README/sample, and agolden-page1.pngfor visual regression. 3 more live inmarketplace/.tests/— flat*.test.tsfiles, vitestdescribe/it, shared helpers intests/helpers.ts(e.g.templateDir()). Tests import from../src/**/*.js(compiled-style specifiers, resolved by vitest).scripts/*.mjs— release/QA/dev tooling; syntax-checked bynpm run check:scripts.
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.
- yesterday First seen · 65 lines · 935 tokens per session scan C 7eba169d6d5f
docforge CLAUDE.md is an instructions file published in the GitHub repository PrecisionUtilityGuild/docforge (1 stars, last pushed 1mo ago), licensed MIT. It adds 935 tokens to every session, about $0.0047 per session on Opus 5. A static security scan graded it C with 1 finding (recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other instructions, from other repositories
docs-to-pdf CLAUDE.md
Instructions for jean-humann/docs-to-pdf, covering claude development guide for docs-to-pdf, project overview, development environment setup, using mise (recommended) and install mise (if not already installed).
prfaq CLAUDE.md
Instructions for punt-labs/prfaq, covering how i write code, mandatory reading, no "pre-existing" excuse, standards and development workflow.
nutrient-dws-client-typescript AGENTS.md
Instructions for PSPDFKit-labs/nutrient-dws-client-typescript, covering agents.md, rules, definition of done and where to look.
nutrient-dws-client-typescript CLAUDE.md
Instructions for PSPDFKit-labs/nutrient-dws-client-typescript: Canonical agent instructions live in @AGENTS.md — read it first.
pdfnative-mcp AGENTS.md
Instructions for Nizoka/pdfnative-mcp, covering agents.md — pdfnative-mcp, 1. tool catalogue (28 tools), 2. decision tree, 3. token-frugal responses and 4. output modes & environment.
pdfnative-mcp CLAUDE.md
Instructions for Nizoka/pdfnative-mcp, covering claude.md, what this is, commands, architecture map and non-negotiable conventions.