BrandDocs is a set of agent skills that learn your existing Word, PowerPoint and Excel templates and generate new on-brand documents from them. Unlike generic AI document generators, it preserves brand, structure, styles and formulas by construction.
FAQ
brand-docs is a Claude Code plugin with 3 hand-picked skills for content work, indexed on Flowy. Install it with the command on its page. It includes brand-docx, brand-pptx, brand-xlsx. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
> /plugin marketplace add ferdinandobons/brand-docs> /plugin install brand-docs@brand-docs
BrandDocs is a set of agent skills that learn your existing Word, PowerPoint and Excel templates and generate new on-brand documents from them. Unlike generic AI document generators, it preserves brand, structure, styles and formulas by construction. Built for Claude Code, Codex and compatible AI agents.
BrandDocs is an open-source agent-skill bundle that learns a company's existing Office templates and generates new on-brand documents from them. Point it at one branded .docx, .pptx, or .xlsx; it extracts the brand (theme colors and fonts, named styles, the document's structure, layouts, cover anchors, logos and tables) into a portable Brand Profile. From then on, every document it generates is built from the original template shell and uses only the artifacts the template actually defines. Each format stays in its own lane: there is no cross-format conversion.
The core guarantee: off-brand output is impossible by construction. No generator ever writes a literal style name, hex color, or font: those live only in the Brand Profile, and
verifyrefuses a profile that points at anything the template doesn't contain.
| Question | Answer |
|---|---|
| Input | Existing company .docx, .pptx, or .xlsx templates |
| Output | Same-format on-brand Word documents, PowerPoint decks, and Excel workbooks |
| Works with | Claude Code, Codex, compatible AI agents, or the direct Python CLI |
| Best for | Repeatable reports, decks, workbooks, proposals, memos, briefs, and internal document workflows |
| Privacy model | Local-first; no cloud service is required, and real templates are git-ignored |
| Speed | First run on a new template: up to ~15 min end to end (extract + model comprehension + visual QA); every later document from the saved profile: seconds |
| Current release | v0.10.1 alpha |
| Skill | Format | Generates |
|---|---|---|
brand-docx | Word .docx | reports, letters and memos in the template's structural order |
brand-pptx | PowerPoint .pptx | decks from the template's real masters & layouts, with native charts, diagrams & merged tables |
brand-xlsx | Excel .xlsx | workbooks: named-region fills with formulas preserved and brand number formats |
All three share one engine and expose the same verbs: extract โ comprehend (optional, model-driven) โ verify โ generate, plus the learning verbs learn / propose-overrides / refine that fold QA findings and user feedback back into the profile. Details โ documentation/SKILLS.md.
Several templates, one brand? extract --blend folds a second same-format template into a saved profile at the value-fact level: it fills gaps and corroborates agreements, the primary template wins every conflict, and the brand guarantee is untouched because artifact pointers never cross templates. compare-profiles reports brand drift (theme colors, fonts, off-theme usage) between any two saved profiles and exits non-zero on drift, so it can gate brand coherence in CI.
Two-phase by design: the deterministic engine works with no model at all (extract / verify / generate, fully offline); the model-assisted verbs sit ON TOP and can only NAME captured facts - every proposal is validated fail-closed, so the brand guarantee never depends on a model being right.
Published only after proof: generation preflights the profile and shell, writes to a same-directory temporary file, and atomically publishes the requested output only after deterministic QA passes. XLSX also preserves formulas and raw worksheet extensions such as sparkline groups; extension loss is a blocking QA error.
BrandDocs runs locally and needs a few things installed before first use:
requirements.txt (python-docx, python-pptx, openpyxl, lxml, Pillow):
pip install -r requirements.txt
bash scripts/setup_visual_qa.sh
Generation still runs without them (it degrades gracefully to deterministic-only QA, level L0), but install them so the visual gate stays on.Check what's present at any time with python scripts/brandkit/cli.py doctor. Per-OS commands and the full setup โ documentation/INSTALLATION.md.
The three skills share one Python engine (scripts/brandkit/), so install the whole repository (copying a single skill folder on its own won't work). After either install below, set up the prerequisites so the engine can run, then verify with python scripts/brandkit/cli.py doctor.
The plugin loads all three skills plus the shared engine together:
/plugin marketplace add ferdinandobons/brand-docs
/plugin install brand-docs@brand-docs
Clone the repo and symlink the three skills into your Codex skills directory, so each skill's engine in scripts/brandkit/ travels with it:
git clone https://github.com/ferdinandobons/brand-docs.git ~/.codex/brand-docs
cd ~/.codex/brand-docs && python3 -m venv .venv && . .venv/bin/activate && pip install -r requirements.txt
mkdir -p ~/.codex/skills
for s in brand-docx brand-pptx brand-xlsx; do ln -s ~/.codex/brand-docs/skills/$s ~/.codex/skills/$s; done
Restart or reload the agent if the skills don't appear immediately.
Git-submodule install and updating instructions are in documentation/INSTALLATION.md.
With an AI agent (the intended experience). Describe what you want and attach a template:
"Use this company Word template and write a report on the history of Napoleon."
The agent activates brand-docx, extracts (or reuses) a Brand Profile, fills the template shell in its structural order, runs QA, and returns the file. PowerPoint (brand-pptx) and Excel (brand-xlsx) work the same way.
How long does it take? The FIRST run on a new template is the slow one: extraction, the optional model comprehension, content authoring and the visual QA gate (plus any repair round) can take up to ~15 minutes end to end with an AI agent. Every later document from the saved profile takes seconds. Still a fraction of formatting the document by hand, and you get a faithful file instead of an approximate one.
Direct CLI (the engine, for tests & debugging). No template at hand? Try the
shipped synthetic example: examples/templates/branddocs_template.docx (also
.pptx / .xlsx).
# 1) Extract the brand from a template into a reusable Brand Profile
python scripts/brandkit/cli.py extract --name <your_company> --template examples/templates/branddocs_template.docx --scope project
# 2) Verify the profile (fails if a role points at a missing artifact)
python scripts/brandkit/cli.py verify --name <your_company> --scope auto --qa auto
# 3) Generate a new on-brand document from structured content
python scripts/brandkit/cli.py generate --name <your_company> --input idoc.json --output out.docx --scope auto --qa auto
The input (idoc.json) is an IntermediateDocument of brand-agnostic typed blocks (no styles, colors or fonts); the Brand Profile resolves all of that.
Alpha, maturing. Stability is per format: Word (brand-docx) is robust - the reference implementation, verified end-to-end on real templates with a 900+ test suite, three QA lanes and frozen byte-identity anchors; PowerPoint and Excel share the engine and are catching up to docx parity. The profile schema (1.2.0) is frozen and additive: profiles keep working across releases. Full status table โ documentation/SKILLS.md.
documentation/Latest release: v0.10.1. See CHANGELOG.md.
NOTICE.CITATION.cff..claude-plugin/
marketplace.json
plugin.json
.github/
DIRECTORY_SUBMISSIONS.md
ISSUE_TEMPLATE/
bug_report.yml
config.yml
feature_request.yml
PULL_REQUEST_TEMPLATE.md
workflows/
ci.yml
.gitignore
assets/
hero.jpg
hero.svg
hero.webp
CHANGELOG.md
CITATION.cff
CODE_OF_CONDUCT.md
commands/
brand-extract.md
brand-generate.md
brand-list.md
brand-verify.md
CONTRIBUTING.md
CONVENTIONS.md
docs/
.nojekyll
index.html
llms.txt
robots.txt
sitemap.xml
documentation/
ARCHITECTURE.md
DEVELOPMENT.md
INSTALLATION.md
PLUGIN_WORKFLOW.md
README.md
ROADMAP.md
SKILLS.md
USAGE.md
evals/
skill_eval_set.json
examples/
builders/
_brandlib.py
build_branddocs_docx.py
build_branddocs_pptx.py
build_branddocs_xlsx.py
README.md
templates/
branddocs_template.docx
branddocs_template.pptx
branddocs_template.xlsx
LICENSE
NOTICE
pyproject.toml
README.md
REFLECTIONS.md
requirements-ci.txt
requirements.txt
ruff.toml
scripts/
brandkit/
__init__.py
cli.py
common/
__init__.py
appearance.py
color.py
links.py
profilemd.py
text.py
typography.py
doctor.py
formats/
__init__.py
catalog.py
docx/
__init__.py
cover.py
extract.py
generate.py
roles.py
structure.py
styles.py
typography.py
pptx/
__init__.py
extract.py
generate.py
structure.py
typography.py
xlsx/
__init__.py
extract.py
generate.py
package.py
structure.py
typography.py
grid/
__init__.py
model.py
ir/
__init__.py
components.py
model.py
ooxml/
__init__.py
chart.py
fields.py
idempotency.py
names.py
pack.py
profile/
__init__.py
blend.py
compare.py
comprehension.py
overrides.py
reconcile.py
resolver.py
schema.py
store.py
qa/
__init__.py
checker.py
checks_deterministic.py
gate.py
model.py
report.py
visual.py
README.md
cli.py
corpus_benchmark.py
setup_visual_qa.sh
SECURITY.md
skills/
brand-docx/
examples/
intermediate-document.example.json
reference/
block-catalog.md
comprehension.md
extraction.md
generation.md
idoc.schema.json
profile-schema.md
qa.md
visual-audit.md
scripts/
cli.py
SKILL.md
brand-pptx/
reference/
comprehension.md
visual-audit.md
scripts/
cli.py
SKILL.md
brand-xlsx/
reference/
comprehension.md
visual-audit.md
scripts/
cli.py
SKILL.md
tests/
fixtures/
builders/
build_complex_docx.py
build_complex_pptx.py
build_complex_xlsx.py
complex/
acme_complex.docx
acme_complex.pptx
acme_complex.xlsx
test_appearance_apply_pptx.py
test_appearance_apply_xlsx.py
test_appearance_refactor_anchor.py
test_appearance_verify_pptx_xlsx.py
test_check_registry.py
test_compare_profiles.py
test_comprehension.py
test_corpus_benchmark.py
test_cover_synthesis.py
test_doc_drift.py
test_docx_complex_fidelity.py
test_docx_fixes.py
test_examples_kitchen_sink.py
test_fixture_determinism.py
test_generation_report.py
test_integration_verify.py
test_ir_model.py
test_no_proprietary.py
test_numbering_fidelity.py
test_overrides_learn.py
test_overrides_resolver.py
test_overrides_schema.py
test_pptx_fixes.py
test_profile_blend.py
test_profilemd.py
test_qa_structural_diffs.py
test_reference_sync.py
test_regression_findings.py
test_review_hardening.py
test_security.py
test_skill_eval_set.py
test_smoke.py
test_toc_refresh.py
test_typography_capture_pptx_xlsx.py
test_typography.py
test_visual_qa.py
test_xlsx_complex_fidelity.py
test_xlsx_comprehension.py
test_xlsx_fixes.pyยฉ 2026 Flowy ยท Free and open source
Built for Claude Code ยท Not affiliated with Anthropic