Brewdoc Overview

Brewdoc is a documentation toolkit plugin (a set of utilities for working with documents) for Claude Code. It keeps documentation in sync with the codebase, optimizes content for LLM consumption, and exports documents to ready-made formats.

The -setup naming rule

A -setup suffix marks a skill that installs a mechanism you afterwards use instead of the skill β€” project-local hooks, or a generated /memory-sync command. Recurring tools you run again and again keep bare names (md-to-pdf, publish, my-claude). Every -setup skill shares one canonical mode set, in this order: status | install | upgrade | enable | disable | uninstall | purge. No argument means status when it is installed and install when it is not. Every brewdoc skill β€” -setup and bare tool alike β€” is user-invoked only: user-invocable: true plus disable-model-invocation: true, so the model never fires any of them on its own and none of their descriptions occupy its context. That holds for all 28 skills in the suite, and it is a deliberate trade about context cost rather than an oversight β€” see the FAQ.

Installation

Install prompt

If Claude refuses to run the commands, paste the prompt below directly into the chat.
Execute these commands in this Claude Code session, one by one, show full output for each, do not skip any, do not summarize:

1. claude plugin marketplace add https://github.com/kochetkov-ma/claude-brewcode
2. claude plugin install brewdoc@claude-brewcode

After all commands succeed, run `/reload-plugins`. If `/reload-plugins` is unavailable, tell me to type `exit` and run `claude` again. Run the commands now.

Install the entire suite:

Install prompt

If Claude refuses to run the commands, paste the prompt below directly into the chat.
Execute these commands in this Claude Code session, one by one, show full output for each, do not skip any, do not summarize:

1. claude plugin marketplace add https://github.com/kochetkov-ma/claude-brewcode
2. claude plugin install brewcode@claude-brewcode
3. claude plugin install brewdoc@claude-brewcode
4. claude plugin install brewtools@claude-brewcode
5. claude plugin install brewui@claude-brewcode

After all commands succeed, run `/reload-plugins`. If `/reload-plugins` is unavailable, tell me to type `exit` and run `claude` again. Run the commands now.

Skills (recipes)

Brewdoc contains 5 skills, each handling a separate documentation task.

πŸ”„

docsync-setup

Track doc staleness by frontmatter date, not INDEX files. Installs three project-local hooks that watch touched Markdown and nag once when a doc goes stale. Modes: status, install, upgrade, enable, disable, uninstall, purge β€” plus the extras sync (--all forces every in-scope doc), reread, frontmatter.

πŸ“‹

My-Claude

Generate documentation about your Claude Code installation. Three modes: internal (local configuration), external (hooks and context architecture), research (search across forums, GitHub, marketplaces).

🧠

memory-sync-setup

Generator: analyzes the target repo, then writes a project-local /memory-sync skill into it β€” repo-specific batches, checkable-fact catalogue, non-growth sync, independent verify. Modes: status, install, upgrade, enable, disable, uninstall, purge.

πŸ“‚

md-to-pdf

Convert Markdown to professional PDF. Two engines: reportlab (lightweight) and weasyprint (full CSS support). Style customization, test mode, LLM preprocessing.

πŸ”—

Publish

Publish text, markdown, JSON, files, or a whole multi-file site (directory or .zip) to brewpage.app. Interactive namespace and password selection. Owner token saved locally for later delete. Needs jq (and zip for directory uploads).

Commands

CommandPurposeModelArguments
/brewdoc:docsync-setupTrack and fix stale project docs via hookssonnet[status|install|upgrade|enable|disable|uninstall|purge] [sync [--all]|reread|frontmatter]
/brewdoc:my-claudeGenerate documentation about Claude Code installationopus[ext [context]] | [r <query>] β€” no args = internal installation docs
/brewdoc:memory-sync-setupGenerate a project-tailored /memory-sync skill into the target repoopus[status|install|upgrade|enable|disable|uninstall|purge] [fine-tune-prompt]
/brewdoc:md-to-pdfConvert Markdown to PDFsonnet<file.md> [--engine name] ["prompt"] | styles | test | no args = help
/brewdoc:publishPublish to brewpage.app β€” returns public URLhaiku<text|file_path|directory_path|zip_path> [--ttl N] [--entry filename]

Architecture

Brewdoc has a minimal architecture compared to Brewcode:

brewdoc/
β”œβ”€β”€ .claude-plugin/
β”‚   └── plugin.json              # Plugin manifest
β”œβ”€β”€ hooks/
β”‚   └── hooks.json               # no hooks registered ({"hooks":{}})
└── skills/
    β”œβ”€β”€ docsync-setup/           # Doc-staleness tracker
    β”œβ”€β”€ my-claude/               # Installation documentation
    β”œβ”€β”€ memory-sync-setup/       # Memory-sync generator (references/: SKILL.md.template, memory-guide, agent-audit, hard-sync)
    β”œβ”€β”€ md-to-pdf/               # PDF conversion
    └── publish/                 # brewpage.app publishing

Brewdoc ships no runtime hooks of its own β€” docsync-setup installs project-local hooks on demand, into the target project, not into brewdoc itself. Skills in the main conversation use ${CLAUDE_SKILL_DIR} to access their own files.

Brewdoc vs Brewcode

Brewdoc is a set of documentation utilities: sync, memory sync, PDF export. Each skill is self-contained and independent of the others.

Brewcode covers the project’s own engineering surface: conventions, rules, domain agent teams, semantic code search and deep review β€” 9 skills, 5 agents, 2 lifecycle hooks.

Both plugins install from the same claude-brewcode marketplace but operate independently.

Artifact metadata

Every artifact a brewdoc -setup skill installs now carries the same provenance fields, resolved from the plugin’s own .claude-plugin/plugin.json and never hardcoded β€” never the literal unknown.

SurfaceFields, in orderNotes
.md frontmatterdoc_type (llm | user | skip, unquoted), version (β€œX.Y.Z”), generated_by (β€œplugin:skill”), last_updated (β€œYYYY-MM-DD”)After the file’s own keys. doc_type never appears in JSON
JSON artifacts (config.json, etc.)version, generated_by, last_updatedSame three snake_case keys at the top level, on every writing mode

/brewcode:setup-status reads these fields back across all eleven -setup skills and reports a setup installed at an older plugin version as stale. docsync-setup is the reference implementation this canon was modelled on β€” see its doc page for the full mechanics.

πŸš€

Latest Release

Download, changelog, and installation instructions.

πŸ“–

Installation Guide

Full setup, update, and troubleshooting instructions.

πŸ”—

View on GitHub

Source code, README, and configuration files.