| name | define-brand-profile |
| description | Capture the user's brand identity — colour palette, fonts, logo, business name and registered address, tax/VAT IDs, contact details — into a reusable brand profile that every other skill in this plugin consumes. Use when the user wants to set up branding for their document templates, define their colour palette, or store business identity for invoice/letter generation. |
define-brand-profile
Capture brand and business identity once; reuse it across every template the plugin generates.
When to use
Auto-trigger when the user:
- Wants to "set up branding" for their templates.
- Provides a logo, palette, or business address and wants to store it for later use.
- Asks why generated templates are using placeholder branding (the answer: this skill hasn't been run yet).
If the user wants to infer their brand from a website rather than supply it manually, route them to extract-brand-from-site instead.
Inputs to gather
Don't demand everything in one shot — get what the user has, mark the rest as TBD, and let them top up later.
Visual identity
- Primary brand colour (hex)
- Secondary brand colour (hex, optional)
- Accent colour (hex, optional)
- Logo file path — local PNG/SVG. Copy into the brand profile dir; don't reference the user's source path.
- Heading font and body font — default to IBM Plex Sans / IBM Plex Serif if the user has no preference; both are open-source and widely available.
Business identity
- Business name (legal/registered)
- Trading name (if different)
- Registered address
- Tax ID / VAT number / company number as applicable
- Contact email, phone, website
Document defaults
- Default currency (ISO 4217 code)
- Default locale / date format (e.g.
en-IL, dd/mm/yyyy)
- Default footer line (e.g. small print, registration disclosure)
Storage
Resolve the data root:
DATA_ROOT="${CLAUDE_USER_DATA:-${XDG_DATA_HOME:-$HOME/.local/share}/claude-plugins}/programmatic-doc-generation"
mkdir -p "$DATA_ROOT/brand"
Write $DATA_ROOT/brand.json with the captured fields. Copy any supplied logo into $DATA_ROOT/brand/logo.<ext> and store the relative path inside brand.json so templates can resolve it.
If a brand.json already exists, merge rather than overwrite — preserve existing fields the user didn't update this run.
Schema for brand.json
{
"version": 1,
"updated_at": "ISO8601",
"visual": {
"palette": {
"primary": "#hex",
"secondary": "#hex",
"accent": "#hex"
},
"fonts": {
"heading": "IBM Plex Sans",
"body": "IBM Plex Sans"
},
"logo": "brand/logo.svg"
},
"business": {
"legal_name": "...",
"trading_name": "...",
"address":
After saving
- Confirm what was captured and what's still TBD.
- Mention that
new-typst-template and ingest-document-sample will now use this profile automatically.