Generate branded Office templates from design tokens
Project description
TokenMoulds
Generate branded Office templates from design tokens. Point it at a brand, get publication-quality Word, PowerPoint, Excel, LibreOffice, and Google Workspace templates — with embedded fonts, baseline grids, and OOXML compliance validation.
Install
pip install tokenmoulds
Quick Start
Generate templates from brand inputs:
tokenmoulds --org-id="acme" \
--font-pair="inter-roboto" \
--primary-color="#2563EB" \
--secondary-color="#DC2626" \
--locale="GB" \
--brand-tone=0.3 \
--generate-templates --generate-odf
Or from a DTCG token file:
tokenmoulds --org-id="acme" \
--tokens-file="design.tokens.json" \
--generate-templates
What It Does
~30 brand inputs (colors, fonts, tone) produce 4,576 derived design tokens across 11 output formats. Every template ships with:
- WCAG AAA accessible contrast ratios
- Embedded fonts with ODTTF obfuscation
- Baseline grid-snapped typography via modular type scales
- ISO 29500 (OOXML) and ODF schema compliance
- Zero macros — all styling baked into document structure
Output Formats
| Format | Extension | Highlights |
|---|---|---|
| Word | .dotx |
276 themed paragraph, character, and table styles |
| PowerPoint | .potx |
Theme colors, embedded fonts, table styles, layouts |
| Excel | .xltx |
Themed cell styles and number formats |
| Writer | .ott |
110 ODF styles with page geometry |
| Impress | .otp |
ODF presentation template |
| Calc | .ots |
ODF spreadsheet template |
| Draw | .otg |
ODF drawing template |
| Google Docs | .dotx |
Optimized for Google Workspace import |
| Theme | .thmx |
Standalone Office theme package |
MCP Server
For AI-assisted document creation via Claude, Cursor, or other MCP clients:
tokenmoulds mcp-server
28 tools for brand extraction, template generation, document creation, validation, and cache management. See the MCP tool catalog.
Python API
from tokenmoulds.pipeline import BuildConfig, build
result = build(BuildConfig(
org_id="acme",
output_formats=["potx", "dotx", "xltx"],
brand_inputs={
"font_pair": {"sans": "Inter", "serif": "Roboto Slab"},
"base_colors": {"primary": "#2563EB", "secondary": "#DC2626"},
"locale": "US",
"brand_tone": 0.5,
},
))
for fmt, data in result.artifacts.items():
open(f"acme.{fmt}", "wb").write(data)
Architecture
TokenMoulds uses a single canonical build pipeline:
Design Tokens → DesignResolutionEngine → DocumentIR → Emitters → Validated Packages
- DTCG pipeline: W3C Design Tokens Community Group format with 5-layer resolution (core/fork/org/group/personal)
- Design engine: Modular type scale, baseline grid, OpenType features, tone/density adaptation
- Document IR: Format-agnostic intermediate representation
- 11 emitters: Each produces a complete, valid package
- Validation: In-process ISO 29500 schema checking via openxml-audit
See ADR 027 for the full convergence story.
Development
git clone https://github.com/BramAlkema/TokenMoulds.git
cd TokenMoulds
python -m venv venv && source venv/bin/activate
pip install -e ".[dev]"
python -m pytest tests/ -v --tb=short # 1,629 tests
Contributing
See CONTRIBUTING.md for development guidelines, code conventions, and how to submit changes.
Documentation
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tokenmoulds-3.0.2.tar.gz.
File metadata
- Download URL: tokenmoulds-3.0.2.tar.gz
- Upload date:
- Size: 510.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b132c36fa50fd9d5ee54d40598d4444f1dc1cc11799f448d84aee2fff5ef643
|
|
| MD5 |
9117a951ebba85995b5c81490377eae0
|
|
| BLAKE2b-256 |
bf3ca2e5d3bd30e94d1b22ff95da267d750a3552d84611d8d3b47ed5cfc10e93
|
Provenance
The following attestation bundles were made for tokenmoulds-3.0.2.tar.gz:
Publisher:
06-publish-pypi.yml on BramAlkema/TokenMoulds
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tokenmoulds-3.0.2.tar.gz -
Subject digest:
4b132c36fa50fd9d5ee54d40598d4444f1dc1cc11799f448d84aee2fff5ef643 - Sigstore transparency entry: 1131626319
- Sigstore integration time:
-
Permalink:
BramAlkema/TokenMoulds@c08d022105353a9d1f357e1b0c73490e656bf426 -
Branch / Tag:
refs/tags/v3.0.2 - Owner: https://github.com/BramAlkema
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
06-publish-pypi.yml@c08d022105353a9d1f357e1b0c73490e656bf426 -
Trigger Event:
release
-
Statement type:
File details
Details for the file tokenmoulds-3.0.2-py3-none-any.whl.
File metadata
- Download URL: tokenmoulds-3.0.2-py3-none-any.whl
- Upload date:
- Size: 586.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef66e823675de52d6639787ea143e2fdc47aa79720a58a4e96b338269fd02247
|
|
| MD5 |
70cc6e95a34ec9c3c6468cdc55197b0f
|
|
| BLAKE2b-256 |
046f82699746f9d6956b953f14b4d2c05785ffb8e703553212cc00ae03ce325b
|
Provenance
The following attestation bundles were made for tokenmoulds-3.0.2-py3-none-any.whl:
Publisher:
06-publish-pypi.yml on BramAlkema/TokenMoulds
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tokenmoulds-3.0.2-py3-none-any.whl -
Subject digest:
ef66e823675de52d6639787ea143e2fdc47aa79720a58a4e96b338269fd02247 - Sigstore transparency entry: 1131626499
- Sigstore integration time:
-
Permalink:
BramAlkema/TokenMoulds@c08d022105353a9d1f357e1b0c73490e656bf426 -
Branch / Tag:
refs/tags/v3.0.2 - Owner: https://github.com/BramAlkema
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
06-publish-pypi.yml@c08d022105353a9d1f357e1b0c73490e656bf426 -
Trigger Event:
release
-
Statement type: