diff --git a/.agents/skills/brand-discovery/SKILL.md b/.agents/skills/brand-discovery/SKILL.md index 5ba79b92..3fb61529 100644 --- a/.agents/skills/brand-discovery/SKILL.md +++ b/.agents/skills/brand-discovery/SKILL.md @@ -111,13 +111,23 @@ Schema: After writing, confirm: "Module X saved. State updated. Next: Y." +**Terminal module (90_SYNTHESIS.md):** when writing the final synthesis, +set `inProgressModule` to `"90_SYNTHESIS.md"` and `nextModule` to `null` +in `state.json`. After writing, set `completedModules` to include +`"90_SYNTHESIS.md"` and confirm: "Brandbook complete. All modules saved." + ## Multi-founder mode When more than one founder participates, write each founder's answers to -`founders/{participant}.md` instead of the main module files. After all -founders complete a module, run a reconciliation pass: summarise -convergences and divergences in the module file, flag "productive tensions" -for the group alignment workshop. +`founders/{participant}.md` instead of the main module files. Validate the +`participant` name before writing: accept only alphanumeric characters and +hyphens (e.g. `founder-a`, `anna`); reject names containing path separators +(`/`, `\`, `..`) or special characters. Validate `moduleFile` against the +enumerated module sequence (10 through 90 only). Validate `outputPath` to +ensure it is an absolute path within the project directory — reject relative +paths and paths that escape via `..` segments. After all founders complete a +module, run a reconciliation pass: summarise convergences and divergences in +the module file, flag "productive tensions" for the group alignment workshop. ## Anti-Patterns diff --git a/.agents/skills/brand-discovery/references/40_personality-archetype.md b/.agents/skills/brand-discovery/references/40_personality-archetype.md index 5b5ba29e..d58a4c39 100644 --- a/.agents/skills/brand-discovery/references/40_personality-archetype.md +++ b/.agents/skills/brand-discovery/references/40_personality-archetype.md @@ -21,8 +21,7 @@ ### Three adjectives the founder uses most naturally to describe the brand's character -### One brand or public figure the founder admires but the brand should NOT become -(and specifically what to avoid) +### One brand or public figure the founder admires but the brand should NOT become (and specifically what to avoid) ### One brand or public figure whose personality register the brand aspires to diff --git a/.agents/skills/brand-discovery/references/90_SYNTHESIS.md b/.agents/skills/brand-discovery/references/90_SYNTHESIS.md index 1bce2f12..c1a5d635 100644 --- a/.agents/skills/brand-discovery/references/90_SYNTHESIS.md +++ b/.agents/skills/brand-discovery/references/90_SYNTHESIS.md @@ -11,7 +11,17 @@ --- -## 1. The Why (from Module 10) +## Raw + + + +--- + +## Synthesis + +### 1. The Why (from Module 10) > **Core belief:** @@ -21,7 +31,7 @@ --- -## 2. Positioning (from Module 20) +### 2. Positioning (from Module 20) > **Positioning statement:** > For **[target client]** who **[situation]**, **[brand name]** is the @@ -32,7 +42,7 @@ --- -## 3. Audience (from Module 30) +### 3. Audience (from Module 30) > **Ideal Client Profile (one-paragraph portrait):** @@ -42,7 +52,7 @@ --- -## 4. Kapferer Brand Identity Prism +### 4. Kapferer Brand Identity Prism | Facet | Content | |---|---| @@ -55,7 +65,25 @@ --- -## 5. Voice & Tone summary (from Module 50) +### 4b. Aaker Brand System (from Module 40) + +> **Primary archetype** (Mark & Pearson): + +> **Secondary archetype** (if present): + +> **Aaker brand identity** — four dimensions: +> - *Brand as product:* +> - *Brand as organisation:* +> - *Brand as person (personality):* +> - *Brand as symbol:* + +> **Brand associations** (3–5 key associations the brand should own): + +> **Brand equity signals** (what clients would lose if this brand disappeared): + +--- + +### 5. Voice & Tone summary (from Module 50) > **Voice statement (one paragraph):** @@ -66,7 +94,7 @@ --- -## 6. Narrative assets (from Module 60) +### 6. Narrative assets (from Module 60) > **Trueline:** @@ -74,7 +102,7 @@ --- -## 7. Founder / organisation brand boundary (from Module 70) +### 7. Founder / organisation brand boundary (from Module 70) > **What the founder brand owns:** @@ -82,7 +110,7 @@ --- -## 8. Tensions resolved (record any module-to-module conflicts and how they were settled) +### 8. Tensions resolved (record any module-to-module conflicts and how they were settled) | Tension | Module A | Module B | Resolution | |---|---|---|---| @@ -90,13 +118,13 @@ --- -## 9. Open questions deferred to next session +### 9. Open questions deferred to next session --- -## 10. Practical next steps +### 10. Practical next steps diff --git a/.agents/skills/competitive-platform-analysis/SKILL.md b/.agents/skills/competitive-platform-analysis/SKILL.md index 2877d323..bb975a97 100644 --- a/.agents/skills/competitive-platform-analysis/SKILL.md +++ b/.agents/skills/competitive-platform-analysis/SKILL.md @@ -6,6 +6,7 @@ description: >- counts as a competitor, which tier they belong to, and which sources to mine. First step in the three-skill competitive pipeline; precedes benchmark-methodology. +origin: community --- # Competitive Platform Analysis @@ -110,7 +111,7 @@ report: that pressures at the edges. - **Aspirational** — players the client is not competing with today but whose brand or commercial maturity sets the bar to aim at. -- *(Watch also for substitutes:* no-code/AI tools, in-house teams, generalist +- *(Watch also for substitutes: no-code/AI tools, in-house teams, generalist freelancers — note as a threat vector, not a profiled competitor unless materially relevant.)* diff --git a/.agents/skills/competitive-report-structure/SKILL.md b/.agents/skills/competitive-report-structure/SKILL.md index c20f1d73..8f61f68a 100644 --- a/.agents/skills/competitive-report-structure/SKILL.md +++ b/.agents/skills/competitive-report-structure/SKILL.md @@ -6,6 +6,7 @@ description: >- profiles, benchmarking matrix, white-space analysis, strategic recommendations, and team alignment trigger questions. Final step in the three-skill competitive pipeline. +origin: community --- # Competitive Report Structure @@ -72,8 +73,10 @@ the detail. ### 4. Benchmarking matrix The full **competitors × dimensions** table — the quantitative spine. Rows = -competitors (grouped by tier), columns = the nine dimensions. Include the -client's own honest self-assessment as a row for contrast. Use a **heatmap** +competitors (grouped by tier), columns = the nine benchmark dimensions (note: +dimension 9 — strategic tension — has two poles: Memorability and Hireability; +represent them as two separate sub-columns rather than averaging them). Include +the client's own honest self-assessment as a row for contrast. Use a **heatmap** (color or symbol scale) so strength/weakness patterns are scannable. Do **not** add a blended total column — report dimensions separately (per the bias controls). Call out the columns where the client leads and where it trails. diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index d7090d46..3c8b45ae 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -11,7 +11,7 @@ { "name": "ecc", "source": "./", - "description": "Harness-native ECC operator layer - 64 agents, 262 skills, 84 legacy command shims, reusable hooks, rules, selective install profiles, and production-ready workflows for Claude Code, Codex, OpenCode, Cursor, and related agent harnesses", + "description": "Harness-native ECC operator layer - 64 agents, 269 skills, 84 legacy command shims, reusable hooks, rules, selective install profiles, and production-ready workflows for Claude Code, Codex, OpenCode, Cursor, and related agent harnesses", "version": "2.0.0", "author": { "name": "Affaan Mustafa", diff --git a/skills/brand-discovery/SKILL.md b/skills/brand-discovery/SKILL.md index c5e59358..faf8eadc 100644 --- a/skills/brand-discovery/SKILL.md +++ b/skills/brand-discovery/SKILL.md @@ -112,13 +112,23 @@ Schema: After writing, confirm: "Module X saved. State updated. Next: Y." +**Terminal module (90_SYNTHESIS.md):** when writing the final synthesis, +set `inProgressModule` to `"90_SYNTHESIS.md"` and `nextModule` to `null` +in `state.json`. After writing, set `completedModules` to include +`"90_SYNTHESIS.md"` and confirm: "Brandbook complete. All modules saved." + ## Multi-founder mode When more than one founder participates, write each founder's answers to -`founders/{participant}.md` instead of the main module files. After all -founders complete a module, run a reconciliation pass: summarise -convergences and divergences in the module file, flag "productive tensions" -for the group alignment workshop. +`founders/{participant}.md` instead of the main module files. Validate the +`participant` name before writing: accept only alphanumeric characters and +hyphens (e.g. `founder-a`, `anna`); reject names containing path separators +(`/`, `\`, `..`) or special characters. Validate `moduleFile` against the +enumerated module sequence (10 through 90 only). Validate `outputPath` to +ensure it is an absolute path within the project directory — reject relative +paths and paths that escape via `..` segments. After all founders complete a +module, run a reconciliation pass: summarise convergences and divergences in +the module file, flag "productive tensions" for the group alignment workshop. ## Anti-Patterns diff --git a/skills/brand-discovery/references/40_personality-archetype.md b/skills/brand-discovery/references/40_personality-archetype.md index 5b5ba29e..d58a4c39 100644 --- a/skills/brand-discovery/references/40_personality-archetype.md +++ b/skills/brand-discovery/references/40_personality-archetype.md @@ -21,8 +21,7 @@ ### Three adjectives the founder uses most naturally to describe the brand's character -### One brand or public figure the founder admires but the brand should NOT become -(and specifically what to avoid) +### One brand or public figure the founder admires but the brand should NOT become (and specifically what to avoid) ### One brand or public figure whose personality register the brand aspires to diff --git a/skills/brand-discovery/references/90_SYNTHESIS.md b/skills/brand-discovery/references/90_SYNTHESIS.md index 1bce2f12..c1a5d635 100644 --- a/skills/brand-discovery/references/90_SYNTHESIS.md +++ b/skills/brand-discovery/references/90_SYNTHESIS.md @@ -11,7 +11,17 @@ --- -## 1. The Why (from Module 10) +## Raw + + + +--- + +## Synthesis + +### 1. The Why (from Module 10) > **Core belief:** @@ -21,7 +31,7 @@ --- -## 2. Positioning (from Module 20) +### 2. Positioning (from Module 20) > **Positioning statement:** > For **[target client]** who **[situation]**, **[brand name]** is the @@ -32,7 +42,7 @@ --- -## 3. Audience (from Module 30) +### 3. Audience (from Module 30) > **Ideal Client Profile (one-paragraph portrait):** @@ -42,7 +52,7 @@ --- -## 4. Kapferer Brand Identity Prism +### 4. Kapferer Brand Identity Prism | Facet | Content | |---|---| @@ -55,7 +65,25 @@ --- -## 5. Voice & Tone summary (from Module 50) +### 4b. Aaker Brand System (from Module 40) + +> **Primary archetype** (Mark & Pearson): + +> **Secondary archetype** (if present): + +> **Aaker brand identity** — four dimensions: +> - *Brand as product:* +> - *Brand as organisation:* +> - *Brand as person (personality):* +> - *Brand as symbol:* + +> **Brand associations** (3–5 key associations the brand should own): + +> **Brand equity signals** (what clients would lose if this brand disappeared): + +--- + +### 5. Voice & Tone summary (from Module 50) > **Voice statement (one paragraph):** @@ -66,7 +94,7 @@ --- -## 6. Narrative assets (from Module 60) +### 6. Narrative assets (from Module 60) > **Trueline:** @@ -74,7 +102,7 @@ --- -## 7. Founder / organisation brand boundary (from Module 70) +### 7. Founder / organisation brand boundary (from Module 70) > **What the founder brand owns:** @@ -82,7 +110,7 @@ --- -## 8. Tensions resolved (record any module-to-module conflicts and how they were settled) +### 8. Tensions resolved (record any module-to-module conflicts and how they were settled) | Tension | Module A | Module B | Resolution | |---|---|---|---| @@ -90,13 +118,13 @@ --- -## 9. Open questions deferred to next session +### 9. Open questions deferred to next session --- -## 10. Practical next steps +### 10. Practical next steps diff --git a/skills/competitive-platform-analysis/SKILL.md b/skills/competitive-platform-analysis/SKILL.md index 97633807..bb975a97 100644 --- a/skills/competitive-platform-analysis/SKILL.md +++ b/skills/competitive-platform-analysis/SKILL.md @@ -111,7 +111,7 @@ report: that pressures at the edges. - **Aspirational** — players the client is not competing with today but whose brand or commercial maturity sets the bar to aim at. -- *(Watch also for substitutes:* no-code/AI tools, in-house teams, generalist +- *(Watch also for substitutes: no-code/AI tools, in-house teams, generalist freelancers — note as a threat vector, not a profiled competitor unless materially relevant.)* diff --git a/skills/competitive-report-structure/SKILL.md b/skills/competitive-report-structure/SKILL.md index cc81a078..8f61f68a 100644 --- a/skills/competitive-report-structure/SKILL.md +++ b/skills/competitive-report-structure/SKILL.md @@ -73,8 +73,10 @@ the detail. ### 4. Benchmarking matrix The full **competitors × dimensions** table — the quantitative spine. Rows = -competitors (grouped by tier), columns = the nine dimensions. Include the -client's own honest self-assessment as a row for contrast. Use a **heatmap** +competitors (grouped by tier), columns = the nine benchmark dimensions (note: +dimension 9 — strategic tension — has two poles: Memorability and Hireability; +represent them as two separate sub-columns rather than averaging them). Include +the client's own honest self-assessment as a row for contrast. Use a **heatmap** (color or symbol scale) so strength/weakness patterns are scannable. Do **not** add a blended total column — report dimensions separately (per the bias controls). Call out the columns where the client leads and where it trails.