| 1 | # Brand Identity Presets |
| 2 | |
| 3 | This directory holds **brand-only templates**: identity bundles (color / typography / logo / voice / icon style) without an SVG page roster. Strategist locks the brand's identity segment as truth; Executor designs pages freely under those constraints. |
| 4 | |
| 5 | Brand is one of four template kinds in the library — alongside |
| 6 | [`styles/`](../styles/) (direction/method defaults), [`layouts/`](../layouts/) |
| 7 | (brand-neutral structure), and [`decks/`](../decks/) (a recurring application |
| 8 | with integrated identity and structure). The shared kind and workspace model |
| 9 | lives in the parent [`README.md`](../README.md). |
| 10 | |
| 11 | ## How brands are consumed |
| 12 | |
| 13 | Brand application follows the parent README's Default Stage-1 |
| 14 | [`generate-pptx`](../../workflows/generate-pptx.md) template-choice contract. |
| 15 | Its Brand choices come only from `brands_index.json`; no |
| 16 | directory scan or bare-name match is allowed. A supplied exact root appears in |
| 17 | the same selector, defaults Stage 1 to template mode, and preselects that |
| 18 | specific candidate only when it is the sole supplied root. |
| 19 | Registered exact roots are `library`; other exact roots remain `explicit`. The conditional |
| 20 | [`apply-template-workspace`](../../workflows/stages/apply-template-workspace.md) |
| 21 | stage owns path normalization, portable-root installation, multi-kind fusion, |
| 22 | same-kind conflict resolution, and provenance after Stage 1 and before Stage 2. Template-aware |
| 23 | reading begins in final Stage 2 from the installed project-local copy. This file owns |
| 24 | only the Brand schema. Quick applies a supplied exact Brand root directly and |
| 25 | otherwise uses free design. |
| 26 | |
| 27 | ## Creating a new brand |
| 28 | |
| 29 | Enter the fixed Create Template route, which dispatches the Create Brand child workflow: |
| 30 | |
| 31 | ``` |
| 32 | Read skills/ppt-master/workflows/create-template.md, which dispatches `kind: brand` to skills/ppt-master/workflows/create-template/create-brand.md |
| 33 | ``` |
| 34 | |
| 35 | Three input paths are supported: brand asset (logo / brand site URL / branded PPTX / brand PDF), verbal spec dictated in chat, or empty skeleton for the user to fill in later. |
| 36 | |
| 37 | ## Workspace structure |
| 38 | |
| 39 | Every brand uses the same workspace routing as layout and deck templates. Brand identity remains roster-free; omit empty optional directories instead of adding placeholder files. |
| 40 | |
| 41 | ``` |
| 42 | templates/brands/<brand_id>/ |
| 43 | ├── templates/ |
| 44 | │ └── design_spec.md # required — brand identity spec |
| 45 | ├── images/ # optional — logos and visual assets |
| 46 | │ ├── logo.<ext> # optional — primary logo |
| 47 | │ └── <brand>_wordmark.svg # optional — alternate lockups and visual assets |
| 48 | ├── icons/ # optional — branded icon overrides |
| 49 | └── exports/ # normally absent; real local derived artifacts only; Git-ignored |
| 50 | ``` |
| 51 | |
| 52 | Logo filenames are descriptive, not contractual — `templates/design_spec.md` §IV lists exact `../images/...` paths and usage contexts. Single-lockup brands typically ship one logo; dual-lockup brands ship separately named files. |
| 53 | |
| 54 | `templates/design_spec.md` carries a YAML frontmatter block with `kind: brand` and is the single source of truth for the brand identity. The six required sections are: I Brand Overview / II Color Scheme / III Typography / IV Logo / V Voice & Tone / VI Icon Style. |
| 55 | |
| 56 | ## Discovery index |
| 57 | |
| 58 | [brands_index.json](./brands_index.json) is a slim machine-readable map (`brand_id → { summary, primary_color }`). Refresh it with `register_template.py --kind brand <brand_id>` after a brand is created or edited. Registration rejects incomplete frontmatter, mismatched IDs, page SVGs, missing required identity sections, invalid or inconsistent colors/provenance, and broken workspace-local asset references. |
| 59 | |
| 60 | The Default Stage-1 template controls read this index as their complete |
| 61 | registered-brand catalog; chat discovery reads the same file and returns exact |
| 62 | workspace roots. Choosing an entry and submitting Stage 1 runs installation. |
| 63 | Exact directory |
| 64 | paths and validated Create Template handoffs remain supported, while a bare ID |
| 65 | never resolves implicitly. |
| 66 |