返回 ppt-master
README.md
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
66 lines MARKDOWN