fix(skills): address coderabbitai + cubic-dev-ai review findings

- marketplace.json: update skill count 261 → 265
- 90_SYNTHESIS.md (both copies): add required ## Raw / ## Synthesis
  wrappers per module contract; add Aaker brand system section (4b)
  covering archetype, identity, associations, equity (Module 40 output)
- brand-discovery/SKILL.md: add terminal module handling for 90_SYNTHESIS
  (nextModule=null, completedModules includes 90); add path traversal
  validation rules for participant, moduleFile, outputPath in multi-founder
  mode
- competitive-platform-analysis/SKILL.md (both copies): fix malformed
  markdown emphasis (stray * after "substitutes:")
- competitive-report-structure/SKILL.md (both copies): clarify heatmap
  column for dimension 9 — two poles (Memorability + Hireability) must be
  represented as separate sub-columns, not averaged
- 40_personality-archetype.md (both copies): join split heading onto one line
- 60_narrative-story.md, 70_founder-tension.md (both copies): add trailing
  newline at EOF

Duplicate .agents/ ↔ skills/ copies are intentional (Codex mirror);
.agents/ strips `origin: community` per Codex allowlist.
This commit is contained in:
Eryk Orłowski 2026-06-10 17:33:49 +02:00
parent fe37e5426a
commit 2f17184cce
11 changed files with 119 additions and 39 deletions

View File

@ -111,13 +111,23 @@ Schema:
After writing, confirm: "Module X saved. State updated. Next: Y." 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 ## Multi-founder mode
When more than one founder participates, write each founder's answers to When more than one founder participates, write each founder's answers to
`founders/{participant}.md` instead of the main module files. After all `founders/{participant}.md` instead of the main module files. Validate the
founders complete a module, run a reconciliation pass: summarise `participant` name before writing: accept only alphanumeric characters and
convergences and divergences in the module file, flag "productive tensions" hyphens (e.g. `founder-a`, `anna`); reject names containing path separators
for the group alignment workshop. (`/`, `\`, `..`) 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 ## Anti-Patterns

View File

@ -21,8 +21,7 @@
### Three adjectives the founder uses most naturally to describe the brand's character ### 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 ### One brand or public figure the founder admires but the brand should NOT become (and specifically what to avoid)
(and specifically what to avoid)
### One brand or public figure whose personality register the brand aspires to ### One brand or public figure whose personality register the brand aspires to

View File

@ -11,7 +11,17 @@
--- ---
## 1. The Why (from Module 10) ## Raw
<!-- Module 90 consolidates outputs from Modules 1070; minimal new raw input is
collected here. Capture any final founder statements or corrections made
during the synthesis pass below. -->
---
## Synthesis
### 1. The Why (from Module 10)
> **Core belief:** > **Core belief:**
@ -21,7 +31,7 @@
--- ---
## 2. Positioning (from Module 20) ### 2. Positioning (from Module 20)
> **Positioning statement:** > **Positioning statement:**
> For **[target client]** who **[situation]**, **[brand name]** is the > 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):** > **Ideal Client Profile (one-paragraph portrait):**
@ -42,7 +52,7 @@
--- ---
## 4. Kapferer Brand Identity Prism ### 4. Kapferer Brand Identity Prism
| Facet | Content | | 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** (35 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):** > **Voice statement (one paragraph):**
@ -66,7 +94,7 @@
--- ---
## 6. Narrative assets (from Module 60) ### 6. Narrative assets (from Module 60)
> **Trueline:** > **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:** > **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 | | Tension | Module A | Module B | Resolution |
|---|---|---|---| |---|---|---|---|
@ -90,13 +118,13 @@
--- ---
## 9. Open questions deferred to next session ### 9. Open questions deferred to next session
<!-- Anything that couldn't be resolved with the current data. --> <!-- Anything that couldn't be resolved with the current data. -->
--- ---
## 10. Practical next steps ### 10. Practical next steps
<!-- 35 concrete actions the brand can take based on this brandbook. --> <!-- 35 concrete actions the brand can take based on this brandbook. -->

View File

@ -6,6 +6,7 @@ description: >-
counts as a competitor, which tier they belong to, and which sources to mine. counts as a competitor, which tier they belong to, and which sources to mine.
First step in the three-skill competitive pipeline; precedes First step in the three-skill competitive pipeline; precedes
benchmark-methodology. benchmark-methodology.
origin: community
--- ---
# Competitive Platform Analysis # Competitive Platform Analysis
@ -110,7 +111,7 @@ report:
that pressures at the edges. that pressures at the edges.
- **Aspirational** — players the client is not competing with today but whose - **Aspirational** — players the client is not competing with today but whose
brand or commercial maturity sets the bar to aim at. 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 freelancers — note as a threat vector, not a profiled competitor unless
materially relevant.)* materially relevant.)*

View File

@ -6,6 +6,7 @@ description: >-
profiles, benchmarking matrix, white-space analysis, strategic recommendations, profiles, benchmarking matrix, white-space analysis, strategic recommendations,
and team alignment trigger questions. Final step in the three-skill competitive and team alignment trigger questions. Final step in the three-skill competitive
pipeline. pipeline.
origin: community
--- ---
# Competitive Report Structure # Competitive Report Structure
@ -72,8 +73,10 @@ the detail.
### 4. Benchmarking matrix ### 4. Benchmarking matrix
The full **competitors × dimensions** table — the quantitative spine. Rows = The full **competitors × dimensions** table — the quantitative spine. Rows =
competitors (grouped by tier), columns = the nine dimensions. Include the competitors (grouped by tier), columns = the nine benchmark dimensions (note:
client's own honest self-assessment as a row for contrast. Use a **heatmap** 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** (color or symbol scale) so strength/weakness patterns are scannable. Do **not**
add a blended total column — report dimensions separately (per the bias add a blended total column — report dimensions separately (per the bias
controls). Call out the columns where the client leads and where it trails. controls). Call out the columns where the client leads and where it trails.

View File

@ -11,7 +11,7 @@
{ {
"name": "ecc", "name": "ecc",
"source": "./", "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", "version": "2.0.0",
"author": { "author": {
"name": "Affaan Mustafa", "name": "Affaan Mustafa",

View File

@ -112,13 +112,23 @@ Schema:
After writing, confirm: "Module X saved. State updated. Next: Y." 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 ## Multi-founder mode
When more than one founder participates, write each founder's answers to When more than one founder participates, write each founder's answers to
`founders/{participant}.md` instead of the main module files. After all `founders/{participant}.md` instead of the main module files. Validate the
founders complete a module, run a reconciliation pass: summarise `participant` name before writing: accept only alphanumeric characters and
convergences and divergences in the module file, flag "productive tensions" hyphens (e.g. `founder-a`, `anna`); reject names containing path separators
for the group alignment workshop. (`/`, `\`, `..`) 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 ## Anti-Patterns

View File

@ -21,8 +21,7 @@
### Three adjectives the founder uses most naturally to describe the brand's character ### 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 ### One brand or public figure the founder admires but the brand should NOT become (and specifically what to avoid)
(and specifically what to avoid)
### One brand or public figure whose personality register the brand aspires to ### One brand or public figure whose personality register the brand aspires to

View File

@ -11,7 +11,17 @@
--- ---
## 1. The Why (from Module 10) ## Raw
<!-- Module 90 consolidates outputs from Modules 1070; minimal new raw input is
collected here. Capture any final founder statements or corrections made
during the synthesis pass below. -->
---
## Synthesis
### 1. The Why (from Module 10)
> **Core belief:** > **Core belief:**
@ -21,7 +31,7 @@
--- ---
## 2. Positioning (from Module 20) ### 2. Positioning (from Module 20)
> **Positioning statement:** > **Positioning statement:**
> For **[target client]** who **[situation]**, **[brand name]** is the > 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):** > **Ideal Client Profile (one-paragraph portrait):**
@ -42,7 +52,7 @@
--- ---
## 4. Kapferer Brand Identity Prism ### 4. Kapferer Brand Identity Prism
| Facet | Content | | 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** (35 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):** > **Voice statement (one paragraph):**
@ -66,7 +94,7 @@
--- ---
## 6. Narrative assets (from Module 60) ### 6. Narrative assets (from Module 60)
> **Trueline:** > **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:** > **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 | | Tension | Module A | Module B | Resolution |
|---|---|---|---| |---|---|---|---|
@ -90,13 +118,13 @@
--- ---
## 9. Open questions deferred to next session ### 9. Open questions deferred to next session
<!-- Anything that couldn't be resolved with the current data. --> <!-- Anything that couldn't be resolved with the current data. -->
--- ---
## 10. Practical next steps ### 10. Practical next steps
<!-- 35 concrete actions the brand can take based on this brandbook. --> <!-- 35 concrete actions the brand can take based on this brandbook. -->

View File

@ -111,7 +111,7 @@ report:
that pressures at the edges. that pressures at the edges.
- **Aspirational** — players the client is not competing with today but whose - **Aspirational** — players the client is not competing with today but whose
brand or commercial maturity sets the bar to aim at. 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 freelancers — note as a threat vector, not a profiled competitor unless
materially relevant.)* materially relevant.)*

View File

@ -73,8 +73,10 @@ the detail.
### 4. Benchmarking matrix ### 4. Benchmarking matrix
The full **competitors × dimensions** table — the quantitative spine. Rows = The full **competitors × dimensions** table — the quantitative spine. Rows =
competitors (grouped by tier), columns = the nine dimensions. Include the competitors (grouped by tier), columns = the nine benchmark dimensions (note:
client's own honest self-assessment as a row for contrast. Use a **heatmap** 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** (color or symbol scale) so strength/weakness patterns are scannable. Do **not**
add a blended total column — report dimensions separately (per the bias add a blended total column — report dimensions separately (per the bias
controls). Call out the columns where the client leads and where it trails. controls). Call out the columns where the client leads and where it trails.