brand-intent 0.1.1 → 0.1.2

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brand-intent",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "An open file format specification for making brand intent machine-readable.",
5
5
  "author": "Christophe Stoll <christophe@stoll.studio>",
6
6
  "license": "MIT",
@@ -86,45 +86,25 @@ Contains: slot-to-position mappings in grid or flow mode.
86
86
 
87
87
  ## Composing Context for Content Generation
88
88
 
89
- When generating content for a specific purpose, compose your context by reading layers in order:
89
+ When generating content for a specific purpose, read all layers silently (do not dump file contents or context notes to the user), then lead with the generated content.
90
90
 
91
- ### Step 1: Read `.identity`
91
+ ### Reading layers (internal, not shown to user):
92
92
 
93
- Load the full identity. Pay special attention to:
94
- - `voice.always` and `voice.never`: these are your hard constraints
95
- - `voice.persona`: adopt this voice
96
- - `voice.register`: match this formality level
97
- - `pillars.avoid`: never generate content in these topic areas
98
- - `anti-audience`: never sound like you're addressing these people
99
- - `values`: use behavior statements to guide decisions when voice rules don't cover a situation
100
- - `positioning`: use when content needs to differentiate
93
+ 1. **Read `.identity`** — voice.always/never (hard constraints), persona, register, pillars.avoid, anti-audience, values, positioning
94
+ 2. **Read `.brand`** — voice-constraints: sentence-max, headline-pattern, number-format, register
95
+ 3. **Apply `scope` from `.purpose`** — audience and pillar filters narrow the upstream context
96
+ 4. **Apply `context` from `.purpose`** — slot-specific instructions, follow literally
97
+ 5. **Generate per-slot content** — respect maxLength, use samples as structural reference (match pattern, not words), follow context instructions
101
98
 
102
- ### Step 2: Read `.brand`
99
+ ### Output format:
103
100
 
104
- Load voice-constraints and content-defaults:
105
- - Enforce `sentence-max` on all generated text
106
- - Follow `headline-pattern` for headlines
107
- - Use `number-format` for numbers
108
- - Apply `density` from content-defaults
101
+ For each brand that has the requested purpose:
109
102
 
110
- ### Step 3: Apply `scope` from `.purpose`
103
+ - If multiple brands exist, show the **brand name** as a heading
104
+ - Show each **slot** with its generated content — nothing else
105
+ - After the content, show a **compact validation summary** (pass/fail per rule, only call out failures in detail)
111
106
 
112
- The purpose file's `scope` narrows the composed upstream:
113
- - `audience:` only use language guidance from these audience blocks
114
- - `pillars:` restrict to this pillar scope (`primary`, `secondary`, or `all`)
115
-
116
- If no filter is specified, include everything.
117
-
118
- ### Step 4: Apply `context` from `.purpose`
119
-
120
- Read the `context` block. This contains slot-specific instructions that cannot be derived from identity or brand. Follow them literally; they are precise, not general.
121
-
122
- ### Step 5: Generate per-slot content
123
-
124
- For each slot in the purpose:
125
- - Respect `maxLength` (hard character limit)
126
- - Use `samples` as structural reference (match the pattern, not the words)
127
- - Follow the `context` instructions for this slot
107
+ Do NOT show: layer contents, file paths, context notes, voice constraint values, scope details, or step-by-step reasoning. The user wants content, not process.
128
108
 
129
109
  ## Validation Checklist
130
110