brandspec 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,218 @@
1
+ # brandspec workshop
2
+
3
+ A Brand Identity forge. Through dialogue — pressure, refinement, and sharpening — produce a complete `brand.yaml` and brand assets.
4
+
5
+ Compatible spec: brandspec v0.x
6
+
7
+ ## Related Resources
8
+
9
+ - Repository: https://github.com/brandspec/brandspec
10
+ - SaaS: https://brandspec.tools
11
+
12
+ ## Specification Knowledge (MUST READ)
13
+
14
+ The following files define how `brand.yaml` works. Read these before facilitating:
15
+
16
+ - `../schema/spec/core.md` — Core fields: essence, tagline, personality, voice structure (tone + principles)
17
+ - `../schema/spec/tokens.md` — Token format, color system (oklch, variants, dark mode), typography, spacing, radius, export mapping
18
+ - `../schema/spec/assets.md` — Asset structure, roles, variants, file naming, logo system patterns
19
+ - `../schema/spec/guidelines.md` — Guidelines structure, linting rules, severity levels
20
+ - `../schema/v0.1.0.yaml` — JSON Schema for validation
21
+
22
+ ## Purpose
23
+
24
+ Brand Forger — forge a Brand Identity through dialogue with the user, producing a standalone brandspec repository.
25
+
26
+ The workshop is a forge. Apply pressure to raw material, refine it, put an edge on it. The resulting `brand.yaml` becomes a SSoT of Consistent Polymorphism — ensuring the same brand appears with different faces at every touchpoint.
27
+
28
+ ## Deliverables
29
+
30
+ The workshop populates the `brandspec/` directory created by `brandspec init`.
31
+
32
+ ```
33
+ brandspec/ ← inside your project
34
+ ├── brand.yaml # SSoT — everything expands polymorphically from here
35
+ ├── assets/ # brand assets (logos, icons, etc.)
36
+ └── _workshop/ # process records (keep for AI resumability)
37
+ ├── decisions.yml
38
+ ├── memo.md
39
+ └── session.md
40
+ ```
41
+
42
+ ## Flow
43
+
44
+ 4 phases. See [`flow.md`](flow.md) for details.
45
+
46
+ ```
47
+ Discovery → Concept → Visual Identity → Documentation
48
+ ```
49
+
50
+ ## Activation Triggers
51
+
52
+ Activate this skill on utterances like:
53
+
54
+ - "I want to create a brand identity"
55
+ - "Let's define a brand"
56
+ - "I want to create a brandspec"
57
+ - "Let's decide on colors and logo"
58
+ - "I want to define the brand direction"
59
+
60
+ ## Initialization Sequence
61
+
62
+ 1. **Ask session language**: Ask the user which language they prefer for the workshop session. Record as the first decision (`session_language`). Conduct the entire session in that language from this point forward.
63
+ 2. Confirm brand name
64
+ 3. Read `_workshop/position.yml` to determine current position
65
+ 4. Load the corresponding phase `.md`
66
+
67
+ ## Session Language
68
+
69
+ The workshop supports any language. The session language is determined at initialization and recorded in `decisions.yml`:
70
+
71
+ ```yaml
72
+ - id: "d001"
73
+ timestamp: "..."
74
+ phase: 0
75
+ step: "init"
76
+ key: "session_language"
77
+ value: "en" # or "ja", "zh", "ko", "fr", etc.
78
+ rationale: "User preference"
79
+ ```
80
+
81
+ **Rules:**
82
+ - All facilitator dialogue, questions, and explanations MUST be in the session language
83
+ - `brand.yaml` field keys remain English (they are part of the spec)
84
+ - `brand.yaml` values (essence, tagline, personality, etc.) are written in the session language unless the user prefers otherwise
85
+ - `decisions.yml` values follow the session language
86
+ - On session resume, read `session_language` from decisions and continue in that language
87
+
88
+ ## State Management
89
+
90
+ ```
91
+ _workshop/
92
+ ├── position.yml # current phase/step
93
+ ├── decisions.yml # confirmed decisions (append-only)
94
+ ├── memo.md # working notes (overwritable)
95
+ └── session.md # session handoff summary
96
+ ```
97
+
98
+ ### position.yml
99
+
100
+ ```yaml
101
+ phase: 1 # 1-4
102
+ step: "product" # step within phase
103
+ mode: "facilitation" # facilitation | execution
104
+ revision: 1 # +1 when backtracking
105
+ updated: ""
106
+ completed_at: null # ISO date when workshop finishes
107
+ ```
108
+
109
+ ### decisions.yml
110
+
111
+ ```yaml
112
+ decisions: []
113
+ # Decision schema:
114
+ # - id: "d001"
115
+ # timestamp: "ISO 8601"
116
+ # phase: 1
117
+ # step: "product"
118
+ # key: "product_essence"
119
+ # value: "..."
120
+ # rationale: "..."
121
+ # supersedes: null # or "d00X" if overriding a previous decision
122
+ ```
123
+
124
+ ## Operating Modes
125
+
126
+ | Mode | AI Role | When |
127
+ |------|---------|------|
128
+ | facilitation | Present options, user decides | Exploring, direction unclear |
129
+ | execution | AI works autonomously | Direction is clear |
130
+
131
+ Switch via user utterance:
132
+ - "Show me options" / "Let me decide" → facilitation
133
+ - "You decide" / "Just do it" → execution
134
+
135
+ ## Phase Details
136
+
137
+ See files in `phases/`:
138
+
139
+ - [`phases/01-discovery.md`](phases/01-discovery.md) — Discovery
140
+ - [`phases/02-concept.md`](phases/02-concept.md) — Concept
141
+ - [`phases/03-visual.md`](phases/03-visual.md) — Visual Identity
142
+ - [`phases/04-documentation.md`](phases/04-documentation.md) — Documentation
143
+
144
+ ## Key Rules
145
+
146
+ 1. **Record all decisions in decisions.yml** (use `supersedes` to reference overridden decisions)
147
+ 2. **Update position.yml at each step completion**
148
+ 3. **Use memo.md for working hypotheses and candidates (overwrite OK)**
149
+ 4. **Update session.md at session end (for handoff)**
150
+ 5. **Never advance phases without user approval**
151
+ 6. **Increment revision in position.yml when backtracking**
152
+
153
+ ## Flow Control Guidance
154
+
155
+ ### Phase 3.2 Colors: Progressive Defaults
156
+
157
+ Colors is the most complex step. To reduce user burden, use a progressive approach:
158
+
159
+ 1. Ask the user to decide only the primary and secondary direction
160
+ 2. AI auto-generates the rest (surfaces, semantics, destructive) from the primary hue
161
+ 3. Present the full palette: "Does this look right? Anything to adjust?"
162
+ 4. Handle individual adjustments if needed, otherwise proceed
163
+
164
+ Only walk through subsections 3.2.1–3.2.5 if the user requests detailed control.
165
+
166
+ ## Session Resume Algorithm
167
+
168
+ When context is lost (new session, different AI, long gap), fully restore using this procedure:
169
+
170
+ ```
171
+ 1. Read position.yml → get current phase / step / mode / revision
172
+ 2. Read decisions.yml → load all decisions
173
+ 3. Resolve supersedes chains:
174
+ - Collect decisions where supersedes != null
175
+ - For each key, keep only the latest (non-superseded) decision
176
+ 4. Reconstruct current state from active decisions:
177
+ - Phase 1 complete? → product_essence, primary_user, positioning
178
+ - Phase 2 complete? → personality, voice, name, tagline
179
+ - Phase 3 complete? → mood, colors, typography, logo
180
+ 5. Check session_language decision → continue session in that language
181
+ 6. Read session.md for supplementary context (not required)
182
+ 7. Present state summary to user:
183
+ "Restored your previous session.
184
+ Current: Phase {N}, Step {step}
185
+ Confirmed: {summary of active decisions}
186
+ Next action: {step description}
187
+ Continue?"
188
+ ```
189
+
190
+ This algorithm enables full restoration from `decisions.yml` + `position.yml` alone. `session.md` is supplementary context, not required.
191
+
192
+ ## Session Start Example
193
+
194
+ ```
195
+ Let's start the brandspec workshop.
196
+
197
+ First — what language would you like to use for this session?
198
+ (e.g. English, 日本語, 中文, etc.)
199
+ ```
200
+
201
+ After language is confirmed:
202
+
203
+ ```
204
+ Great. Let's forge your brand.
205
+
206
+ Current status:
207
+ - Phase: Discovery
208
+ - Step: product
209
+
210
+ Tell me about your product.
211
+ What are you building? What problem does it solve?
212
+ ```
213
+
214
+ ## Session End
215
+
216
+ 1. Record progress summary in `session.md`
217
+ 2. Note next actions clearly
218
+ 3. Report completion to user
@@ -0,0 +1,181 @@
1
+ # Workshop Flow
2
+
3
+ ## Overview
4
+
5
+ ```
6
+ ┌─────────────────────────────────────────────────────────────────┐
7
+ │ brandspec workshop │
8
+ ├─────────────┬─────────────┬─────────────────┬───────────────────┤
9
+ │ Phase 1 │ Phase 2 │ Phase 3 │ Phase 4 │
10
+ │ Discovery │ Concept │ Visual Identity │ Documentation │
11
+ ├─────────────┼─────────────┼─────────────────┼───────────────────┤
12
+ │ • product │ • personality│ • mood │ • defaults confirm│
13
+ │ • users │ • voice │ • colors │ • yaml generation │
14
+ │ • context │ • naming │ • typography │ • final review │
15
+ │ │ • tagline │ • logo │ │
16
+ └─────────────┴─────────────┴─────────────────┴───────────────────┘
17
+ ```
18
+
19
+ ## Output
20
+
21
+ Workshop populates the `brandspec/` directory created by `brandspec init`:
22
+
23
+ ```
24
+ brandspec/
25
+ ├── brand.yaml # source of truth
26
+ ├── assets/ # brand assets
27
+ └── _workshop/ # process records
28
+ ├── position.yml
29
+ ├── decisions.yml
30
+ ├── memo.md
31
+ └── session.md
32
+ ```
33
+
34
+ ## [Phase 1: Discovery](phases/01-discovery.md)
35
+
36
+ **Goal**: Understand what we're branding
37
+
38
+ ### Steps
39
+
40
+ 1. **product** - What is the product? What problem does it solve?
41
+ 2. **users** - Who are the users? What do they need?
42
+ 3. **context** - Market position, competitors, constraints
43
+
44
+ ### Outputs
45
+
46
+ - Product essence statement
47
+ - User personas (brief)
48
+ - Competitive insights
49
+
50
+ ### Complete When
51
+
52
+ - [ ] Product can be explained in one sentence
53
+ - [ ] Target user is clearly defined
54
+ - [ ] Market position is understood
55
+
56
+ ---
57
+
58
+ ## [Phase 2: Concept](phases/02-concept.md)
59
+
60
+ **Goal**: Define brand personality and voice
61
+
62
+ ### Steps
63
+
64
+ 1. **personality** - Brand personality traits (3-5 adjectives)
65
+ 2. **voice** - Tone, principles, examples
66
+ 3. **naming** - Brand name (if not decided)
67
+ 4. **tagline** - Tagline or slogan
68
+
69
+ ### Outputs
70
+
71
+ - Personality traits
72
+ - Voice & tone guidelines
73
+ - Name (confirmed)
74
+ - Tagline options → final selection
75
+
76
+ ### Complete When
77
+
78
+ - [ ] Personality traits selected
79
+ - [ ] Voice principles documented
80
+ - [ ] Name confirmed
81
+ - [ ] Tagline selected
82
+
83
+ ---
84
+
85
+ ## [Phase 3: Visual Identity](phases/03-visual.md)
86
+
87
+ **Goal**: Create visual language
88
+
89
+ ### Steps
90
+
91
+ 1. **mood** - Visual direction, references, mood
92
+ 2. **colors** - Color palette (primary, secondary, etc.)
93
+ 3. **typography** - Font selection
94
+ 4. **logo** - Logo direction/concept
95
+
96
+ ### Outputs
97
+
98
+ - Mood references
99
+ - Color palette (oklch values)
100
+ - Typography selection
101
+ - Logo brief (actual logo creation may be external)
102
+
103
+ ### Complete When
104
+
105
+ - [ ] Color palette finalized
106
+ - [ ] Typography selected
107
+ - [ ] Logo direction documented
108
+
109
+ ---
110
+
111
+ ## [Phase 4: Documentation](phases/04-documentation.md)
112
+
113
+ **Goal**: Generate final deliverables into brandspec repository
114
+
115
+ ### Steps
116
+
117
+ 1. **defaults** - Confirm standard spacing/radius (customize if needed)
118
+ 2. **yaml** - Generate `brand.yaml` (+ register assets if any)
119
+ 3. **review** - Final review and approval
120
+
121
+ ### Outputs
122
+
123
+ - `brand.yaml` - Machine-readable spec (brandspec directory root)
124
+ - `assets/` - Brand assets (if any)
125
+ - `_workshop/` - Process records (decisions.yml, memo.md, session.md)
126
+
127
+ ### Complete When
128
+
129
+ - [ ] `brand.yaml` generated and valid
130
+ - [ ] User has reviewed and approved
131
+
132
+ ---
133
+
134
+ ## State Transitions
135
+
136
+ ```
137
+ Discovery ──[all steps complete]──> Concept
138
+ Concept ──[all steps complete]──> Visual Identity
139
+ Visual ──[all steps complete]──> Documentation
140
+ Documentation ──[approved]──────> COMPLETE
141
+ ```
142
+
143
+ ### Backtracking Rules
144
+
145
+ Going back to a previous phase is allowed. When backtracking:
146
+
147
+ 1. Increment `revision` in `position.yml` by 1
148
+ 2. New decisions MUST include `supersedes` referencing the previous decision ID
149
+ 3. When generating YAML in Phase 4, use only the latest (non-superseded) decisions
150
+ 4. Superseded decisions remain in `decisions.yml` (append-only is preserved)
151
+
152
+ ## Operating Modes
153
+
154
+ ### Facilitation Mode (Default)
155
+
156
+ AI presents options, user decides.
157
+
158
+ ```
159
+ AI: "Here are 3 personality directions:
160
+ a) Professional & Trustworthy
161
+ b) Playful & Approachable
162
+ c) Bold & Innovative
163
+ Which resonates?"
164
+
165
+ User: "b"
166
+
167
+ AI: [Records decision, moves forward]
168
+ ```
169
+
170
+ ### Execution Mode
171
+
172
+ AI makes decisions autonomously.
173
+
174
+ ```
175
+ User: "Just create a brand for a productivity app"
176
+
177
+ AI: [Runs through all phases]
178
+ [Presents complete brandspec for review]
179
+ ```
180
+
181
+ Switch with: "Let me decide" / "You decide"
@@ -0,0 +1,156 @@
1
+ # Phase 1: Discovery
2
+
3
+ ## Goal
4
+
5
+ Understand what we're branding before we brand it.
6
+
7
+ ## Steps
8
+
9
+ ### 1.1 Product
10
+
11
+ **Questions to answer:**
12
+
13
+ - What is the product/service/company?
14
+ - What problem does it solve?
15
+ - What makes it unique?
16
+ - What's the core value proposition?
17
+
18
+ **Facilitation prompts:**
19
+
20
+ ```
21
+ Describe your product in one sentence.
22
+ What would users miss most if it disappeared?
23
+ How is this different from alternatives?
24
+ ```
25
+
26
+ **Output: Product Essence**
27
+
28
+ A single sentence capturing the core of what this is.
29
+
30
+ ```yaml
31
+ # Example
32
+ product_essence: "AI-powered writing assistant that helps non-native speakers write confidently"
33
+ ```
34
+
35
+ ---
36
+
37
+ ### 1.2 Users
38
+
39
+ **Questions to answer:**
40
+
41
+ - Who is the primary user?
42
+ - What are their goals?
43
+ - What are their pain points?
44
+ - What's their context (B2B/B2C, technical level, etc.)?
45
+
46
+ **Facilitation prompts:**
47
+
48
+ ```
49
+ Who uses this? Paint a picture of your ideal user.
50
+ What's frustrating them right now?
51
+ Where do they encounter your product?
52
+ ```
53
+
54
+ **Output: User Definition**
55
+
56
+ ```yaml
57
+ # Example
58
+ primary_user:
59
+ who: "Non-native English speakers in professional settings"
60
+ goals:
61
+ - "Write emails that sound natural"
62
+ - "Avoid embarrassing mistakes"
63
+ pain_points:
64
+ - "Unsure if their writing sounds professional"
65
+ - "Existing tools feel like cheating"
66
+ context: "B2C, used during work hours"
67
+ ```
68
+
69
+ ---
70
+
71
+ ### 1.3 Context
72
+
73
+ **Questions to answer:**
74
+
75
+ - Who are the competitors?
76
+ - What's the market position?
77
+ - Are there constraints (regulatory, technical, budget)?
78
+ - What's the timeline/stage?
79
+
80
+ **Facilitation prompts:**
81
+
82
+ ```
83
+ What alternatives do users have today?
84
+ Where do you want to position relative to competitors?
85
+ Any constraints I should know about?
86
+ ```
87
+
88
+ **Output: Market Context**
89
+
90
+ ```yaml
91
+ # Example
92
+ competitors:
93
+ - name: "Grammarly"
94
+ position: "Mass market, feature-heavy"
95
+ - name: "Hemingway"
96
+ position: "Simplicity-focused"
97
+
98
+ positioning: "Premium feel, focused on confidence not correction"
99
+
100
+ constraints:
101
+ - "Launch in 3 months"
102
+ - "Small team, can't maintain complex brand"
103
+ ```
104
+
105
+ ---
106
+
107
+ ## Phase Complete Checklist
108
+
109
+ - [ ] Product essence defined (one sentence)
110
+ - [ ] Primary user identified
111
+ - [ ] Competitive context understood
112
+ - [ ] All recorded in `decisions.yml`
113
+
114
+ ## Transition to Phase 2
115
+
116
+ When all items are checked:
117
+
118
+ ```yaml
119
+ # Update position.yml
120
+ phase: 2
121
+ step: "personality"
122
+ mode: "facilitation"
123
+ ```
124
+
125
+ ## Example Session
126
+
127
+ ```
128
+ AI: Let's start with Discovery. Tell me about your product.
129
+ What are you building?
130
+
131
+ User: It's a SaaS for managing Brand Identity files.
132
+
133
+ AI: Interesting! What problem does this solve? Why would someone
134
+ choose this over just using Google Drive?
135
+
136
+ User: Designers hand off brand assets but they get lost,
137
+ outdated versions get used, there's no single source of truth.
138
+
139
+ AI: Got it. So the core value is "Single source of truth for brand assets."
140
+ Let me capture that:
141
+
142
+ Product essence: "Single source of truth for Brand Identity
143
+ that ensures teams always use the right assets."
144
+
145
+ Does that capture it?
146
+
147
+ User: Yes, but also add that it works with their existing tools.
148
+
149
+ AI: Updated:
150
+ "Single source of truth for Brand Identity that integrates
151
+ with existing design and development workflows."
152
+
153
+ [Records to decisions.yml]
154
+
155
+ Now let's talk about users. Who's buying and who's using?
156
+ ```