Exact Brandkit state payloads
Write these complete JSON shapes into files under "$BRANDKIT_WORKDIR". Replace values only. Keep asset objects, arrays, key names, and nesting unchanged.
Visual axes
Use with state --action set_visual_axes:
{
"visual_axes": {
"restrained_expressive": 50,
"geometric_organic": 50,
"familiar_experimental": 50
}
}
Logo
Use with state --action approve_logo. For a user-supplied official logo, use the same logo object with lock_authoritative_logo and replace approval_summary with source_summary.
{
"approval_summary": "User selected the Northline symbol.",
"logo": {
"name": "Northline symbol",
"asset": {
"id": "replace-with-upload-or-job-id",
"url": "https://replace-with-exact-approved-logo.svg"
},
"geometry_fingerprint": "replace-with-logo-inspect-fingerprint"
}
}
logo.asset is always an object, never a URL string. It requires at least one durable locator: id, url, or an absolute local path. For a user-supplied local SVG, use:
{"path": "/absolute/path/to/official-logo.svg"}
Get geometry_fingerprint from logo-inspect --source <exact SVG URL or absolute path> before approval. This uses the same full-canvas-background handling as logo-export.
Palette
Use with state --action approve_palette. For a user-supplied official palette, use lock_authoritative_palette and replace approval_summary with source_summary.
{
"approval_summary": "User selected the Ink and Signal palette.",
"palette": {
"colors": [
{
"hex": "#101820",
"name": "Ink",
"role": "background"
},
{
"hex": "#F7F7F5",
"name": "Paper",
"role": "text"
},
{
"hex": "#00AEEF",
"name": "Signal Blue",
"role": "accent"
}
],
"gradients": []
}
}
palette.colors contains 2–12 color objects. Every hex value includes #.
Typography
Use with state --action approve_typography. For user-supplied official typography, use lock_authoritative_typography and replace approval_summary with source_summary.
{
"approval_summary": "User selected Fraunces with Inter.",
"typography": {
"display": {
"family": "Fraunces",
"source": "google:Fraunces",
"style": "normal",
"weight": 700
},
"body": {
"family": "Inter",
"source": "google:Inter",
"style": "normal",
"weight": 400
},
"font_links": [
"https://fonts.google.com/specimen/Fraunces",
"https://fonts.google.com/specimen/Inter"
]
}
}
Approved downstream element
Use with state --action approve_brandbook_element only after explicit approval:
{
"approval_summary": "User approved the primary poster.",
"required_slots": [
"logo",
"palette",
"typography"
],
"brandbook_element": {
"key": "poster-primary",
"kind": "poster",
"name": "Primary campaign poster",
"asset": {
"path": "/absolute/path/to/approved-poster.svg"
}
}
}