brand-intent 0.1.0 → 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.0",
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",
@@ -1,4 +1,14 @@
1
- # Brand Intent / AI Skill
1
+ ---
2
+ description: Generate and validate on-brand content using Brand Intent files
3
+ ---
4
+
5
+ # Brand Intent
6
+
7
+ **Scope:** `$ARGUMENTS`
8
+
9
+ > If `$ARGUMENTS` names a purpose (e.g. "daily-bread", "event", "quote"): compose context from the five layers and generate content for that purpose.
10
+ > If `$ARGUMENTS` is "validate": read the most recent generated or provided content and run the validation checklist against the brand files.
11
+ > If `$ARGUMENTS` is empty: discover all `.identity`, `.brand`, `.purpose` files in the project, summarize the brand voice and list available purposes.
2
12
 
3
13
  You are working in a project that uses **Brand Intent**, an open file format for encoding brand identity, expression intent, and content composition rules across five composable layers. This skill teaches you how to read, compose, and validate Brand Intent files.
4
14
 
@@ -76,45 +86,25 @@ Contains: slot-to-position mappings in grid or flow mode.
76
86
 
77
87
  ## Composing Context for Content Generation
78
88
 
79
- When generating content for a specific purpose, compose your context by reading layers in order:
80
-
81
- ### Step 1: Read `.identity`
82
-
83
- Load the full identity. Pay special attention to:
84
- - `voice.always` and `voice.never`: these are your hard constraints
85
- - `voice.persona`: adopt this voice
86
- - `voice.register`: match this formality level
87
- - `pillars.avoid`: never generate content in these topic areas
88
- - `anti-audience`: never sound like you're addressing these people
89
- - `values`: use behavior statements to guide decisions when voice rules don't cover a situation
90
- - `positioning`: use when content needs to differentiate
91
-
92
- ### Step 2: Read `.brand`
93
-
94
- Load voice-constraints and content-defaults:
95
- - Enforce `sentence-max` on all generated text
96
- - Follow `headline-pattern` for headlines
97
- - Use `number-format` for numbers
98
- - Apply `density` from content-defaults
99
-
100
- ### Step 3: Apply `scope` from `.purpose`
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.
101
90
 
102
- The purpose file's `scope` narrows the composed upstream:
103
- - `audience:` only use language guidance from these audience blocks
104
- - `pillars:` restrict to this pillar scope (`primary`, `secondary`, or `all`)
91
+ ### Reading layers (internal, not shown to user):
105
92
 
106
- If no filter is specified, include everything.
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
107
98
 
108
- ### Step 4: Apply `context` from `.purpose`
99
+ ### Output format:
109
100
 
110
- 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.
101
+ For each brand that has the requested purpose:
111
102
 
112
- ### Step 5: Generate per-slot content
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)
113
106
 
114
- For each slot in the purpose:
115
- - Respect `maxLength` (hard character limit)
116
- - Use `samples` as structural reference (match the pattern, not the words)
117
- - 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.
118
108
 
119
109
  ## Validation Checklist
120
110