@event4u/agent-config 2.7.0 → 2.8.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.
Files changed (39) hide show
  1. package/.agent-src/personas/cmo.md +122 -0
  2. package/.agent-src/personas/customer-success-lead.md +126 -0
  3. package/.agent-src/personas/growth-pm.md +134 -0
  4. package/.agent-src/personas/revops.md +125 -0
  5. package/.agent-src/skills/activation-design/SKILL.md +160 -0
  6. package/.agent-src/skills/churn-prevention/SKILL.md +156 -0
  7. package/.agent-src/skills/content-funnel-design/SKILL.md +170 -0
  8. package/.agent-src/skills/deal-qualification-meddic/SKILL.md +165 -0
  9. package/.agent-src/skills/editorial-calendar/SKILL.md +161 -0
  10. package/.agent-src/skills/expansion-playbook/SKILL.md +171 -0
  11. package/.agent-src/skills/forecast-accuracy/SKILL.md +157 -0
  12. package/.agent-src/skills/fundraising-narrative/SKILL.md +189 -0
  13. package/.agent-src/skills/funnel-analysis/SKILL.md +26 -2
  14. package/.agent-src/skills/gtm-launch/SKILL.md +165 -0
  15. package/.agent-src/skills/messaging-architecture/SKILL.md +184 -0
  16. package/.agent-src/skills/onboarding-design/SKILL.md +158 -0
  17. package/.agent-src/skills/pipeline-strategy/SKILL.md +159 -0
  18. package/.agent-src/skills/positioning-strategy/SKILL.md +177 -0
  19. package/.agent-src/skills/retention-loops/SKILL.md +161 -0
  20. package/.agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  21. package/.agent-src/skills/voice-and-tone-design/SKILL.md +163 -0
  22. package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  23. package/.claude-plugin/marketplace.json +17 -2
  24. package/CHANGELOG.md +45 -169
  25. package/README.md +2 -2
  26. package/docs/architecture.md +2 -2
  27. package/docs/archive/CHANGELOG-pre-2.7.0.md +185 -0
  28. package/docs/catalog.md +19 -3
  29. package/docs/contracts/adr-gtm-context-spine.md +115 -0
  30. package/docs/contracts/command-surface-tiers.md +5 -0
  31. package/docs/contracts/context-spine.md +50 -12
  32. package/docs/contracts/cross-wing-handoff.md +3 -3
  33. package/docs/contracts/persona-schema.md +20 -3
  34. package/docs/guidelines/gtm-handoff.md +114 -0
  35. package/package.json +1 -1
  36. package/scripts/lint_context_spine_usage.py +4 -1
  37. package/scripts/schemas/persona.schema.json +5 -0
  38. package/scripts/schemas/skill.schema.json +2 -2
  39. package/scripts/skill_linter.py +177 -3
@@ -0,0 +1,177 @@
1
+ ---
2
+ name: positioning-strategy
3
+ description: "Use when locking the market frame — category, segment, alternative, point-of-view — before messaging, launch, or pricing rides on it. Triggers on 'who are we for', 'opposable audit'."
4
+ status: active
5
+ tier: senior
6
+ source: package
7
+ domain: product
8
+ context_spine: [product, customer-segment]
9
+ ---
10
+
11
+ # positioning-strategy
12
+
13
+ ## When to use
14
+
15
+ - A category sentence is missing or contested and the next artefact (messaging, launch, pricing page) is about to inherit the ambiguity.
16
+ - The team can name what the product **does** but cannot name **who it is for**, **against what alternative**, or **what it refuses to be**.
17
+ - An opposable-positioning audit is needed: every claim has to survive *"a reasonable competitor would argue the opposite"*.
18
+
19
+ Do NOT use for peer-versus-peer feature comparison (route to
20
+ `competitive-positioning`), copy generation (route to
21
+ `messaging-architecture`), or pricing-tier construction.
22
+
23
+ ## Cognition cluster
24
+
25
+ - **Mental model 1 — First-principles thinking.** Strip the category to
26
+ the underlying job: who fires what, to make what progress, under
27
+ what pressure. Inherited category labels are the trap; the unit of
28
+ positioning is the job, not the label. See
29
+ [`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 1.
30
+ - **Mental model 30 — Inversion.** For every positioning claim, ask
31
+ *"what would a competitor with a credible alternative argue against
32
+ this?"* A claim that has no opposable counter is either trivially
33
+ true or invented — drop it. See `mental-models.md` § 30.
34
+ - **Context-spine — product + customer-segment.** Read the **product**
35
+ slot for non-goals and the **customer-segment** slot for the ICP
36
+ shape before locking the frame. Positioning that contradicts either
37
+ slot fails its own audit. See
38
+ [`context-spine`](../../../docs/contracts/context-spine.md).
39
+
40
+ ## Procedure
41
+
42
+ ### Step 0: Frame the job
43
+
44
+ Write one sentence: *"\<Segment\> hires \<category\> to make progress
45
+ in \<situation\>, when motivated by \<pressure\>, expecting
46
+ \<outcome\>."* If you cannot finish the sentence, route to
47
+ [`customer-research`](../customer-research/SKILL.md); positioning
48
+ without job-evidence is invention, not earning.
49
+
50
+ ### Step 1: Lock the four anchors
51
+
52
+ Each anchor is one sentence; ambiguity here propagates.
53
+
54
+ 1. **Category.** *"We are a \<category\>."* The category must be a
55
+ noun that the segment already uses to describe the budget line
56
+ the purchase comes out of — not a coined term.
57
+ 2. **Segment.** *"For \<segment\>."* Specific enough that a single
58
+ buyer recognises themselves; broad enough that the segment has
59
+ shared switch-events.
60
+ 3. **Alternative.** *"Instead of \<alternative\>."* Name the
61
+ single most-likely incumbent — usually a manual workflow, a
62
+ spreadsheet, or a competing product. *"Doing nothing"* counts.
63
+ 4. **Point of view.** *"Because \<load-bearing belief\>."* The
64
+ belief must be opposable — a credible peer holds the opposite.
65
+
66
+ ### Step 2: Validate via the opposable audit
67
+
68
+ For every anchor, write the **strongest counter** a credible peer
69
+ would make. Validate each anchor against the rule *"a credible peer
70
+ holds the opposite"* — if no counter exists, the anchor is
71
+ unfalsifiable (either trivially true or invented) and must be
72
+ replaced before continuing.
73
+
74
+ The four counters become the **assumption ledger**: explicit beliefs
75
+ the positioning rides on. Each gets a re-evaluation trigger (event +
76
+ metric + threshold) the team will watch for.
77
+
78
+ ### Step 3: Identify non-goals
79
+
80
+ Write three sentences in the form *"We are not for \<adjacent
81
+ segment\>, even though \<surface similarity\>, because \<reason
82
+ grounded in the product slot\>."* Non-goals are how positioning
83
+ earns its category — without them every prospect looks like a fit
84
+ and the segment dissolves.
85
+
86
+ ### Step 4: Stress-test the frame
87
+
88
+ For each anchor, walk the chain *"if this is true, then…"* through
89
+ two consequences. If a consequence contradicts the product slot,
90
+ the segment slot, or a shipped commitment, the anchor is wrong —
91
+ fix the anchor, not the consequence.
92
+
93
+ ### Step 5: Hand back
94
+
95
+ Hand the four anchors + assumption ledger + non-goals to
96
+ [`messaging-architecture`](../messaging-architecture/SKILL.md) for
97
+ primary-message construction. Do **not** write copy inside this
98
+ skill — that is `messaging-architecture`'s job.
99
+
100
+ ## Related Skills
101
+
102
+ **WHEN to use this**
103
+
104
+ - The unit of work is the four-anchor frame, not a copy block.
105
+ - A category sentence is contested and the next artefact rides on it.
106
+ - An opposable audit is overdue and the team is shipping claims on faith.
107
+
108
+ **WHEN NOT to use this**
109
+
110
+ - Peer-vs-peer ours-vs-theirs verdict table — route to
111
+ [`competitive-positioning`](../competitive-positioning/SKILL.md).
112
+ - Primary message + supporting proofs construction — route to
113
+ [`messaging-architecture`](../messaging-architecture/SKILL.md).
114
+ - Fundraising "why now / why us" framing under capital constraint —
115
+ route to [`fundraising-narrative`](../fundraising-narrative/SKILL.md).
116
+ - Pricing-tier construction or unit-economics modelling — route to
117
+ [`unit-economics-modeling`](../unit-economics-modeling/SKILL.md).
118
+
119
+ ## When the agent should load this
120
+
121
+ - "Wer sind wir eigentlich für?"
122
+ - "Lock the positioning before we write the launch deck."
123
+ - "Brauche eine Category-Sentence für die Pricing-Page."
124
+ - "Run an opposable-positioning audit on the homepage frame."
125
+ - "Welche Alternative ranken wir uns gegen — Doing Nothing oder ein konkreter Wettbewerber?"
126
+
127
+ ## Output
128
+
129
+ 1. **`positioning.md`** — the four anchors (category · segment ·
130
+ alternative · point-of-view), one sentence each, opposable.
131
+ 2. **`assumption-ledger.md`** — one row per anchor: the strongest
132
+ peer-counter, the load-bearing belief, the re-evaluation trigger
133
+ (event + metric + threshold).
134
+ 3. **`non-goals.md`** — three sentences naming adjacent segments the
135
+ product refuses to serve, each grounded in the product slot.
136
+
137
+ ## Gotcha
138
+
139
+ - A category sentence the segment does not already use is a coined
140
+ term, not a category — the segment will route around it.
141
+ - *"Doing nothing"* is the most common alternative and the most
142
+ often skipped. If the buyer's status quo is free, the alternative
143
+ is free, and the positioning has to clear that bar.
144
+ - A positioning frame without non-goals expands until everyone is a
145
+ prospect; that is the failure mode, not the success state.
146
+
147
+ ## Do NOT
148
+
149
+ - Do NOT invent a category to differentiate — earned categories
150
+ beat coined categories; category theatre is the council Q1
151
+ out-of-scope.
152
+ - Do NOT collapse positioning into a tagline; the four anchors are
153
+ the artefact, the tagline is a downstream compression.
154
+ - Do NOT decide pricing tiers from positioning — hand off to
155
+ pricing / unit-economics work.
156
+
157
+ ## Runnable example
158
+
159
+ Mid-market HR analytics tool, contested category:
160
+
161
+ - Frame: *"\<HR leaders at 200–2000-person companies\> hire
162
+ \<workforce-analytics\> to make progress in \<board-quarter
163
+ retention reporting\>, when motivated by \<exec ask for cohort
164
+ attrition\>, expecting \<one-click roll-up by tenure band\>."*
165
+ - Anchors — **category:** workforce analytics. **Segment:** HR
166
+ leaders at 200–2000-person, growing-headcount companies.
167
+ **Alternative:** a manually maintained spreadsheet plus the
168
+ HRIS-vendor's basic report. **Point of view:** *retention beats
169
+ acquisition as the lever in this segment*.
170
+ - Assumption ledger — peer counter to point of view: *"acquisition
171
+ velocity dominates at \< 500 headcount."* Re-evaluation trigger:
172
+ new-hire-rate > 30 % year-on-year AND retention-flat → revisit.
173
+ - Non-goals — *"We are not for enterprise (5000+); not for
174
+ workforce-planning (capacity modelling); not for engagement-survey
175
+ tooling."* Each grounded in the product slot's non-goals list.
176
+ - Hand-off: four anchors → `messaging-architecture` for primary
177
+ message + audience-by-message matrix.
@@ -0,0 +1,161 @@
1
+ ---
2
+ name: retention-loops
3
+ description: "Use when designing product-led retention — habit formation, trigger-action-reward, network vs single-user loops. Triggers on 'why don't users come back', 'design a habit loop'."
4
+ status: active
5
+ tier: senior
6
+ source: package
7
+ domain: product
8
+ context_spine: [product, customer-segment, funnel-stage]
9
+ ---
10
+
11
+ # retention-loops
12
+
13
+ ## When to use
14
+
15
+ - D30 retention is flat or declining and the team cannot name a single product loop that pulls the user back — retention is treated as marketing's problem, not the product's.
16
+ - A new feature shipped but did not move retention — there is no closed loop between trigger, action, and reward, so the feature is a destination, not a habit.
17
+ - The product depends on a network effect that has not been instrumented as a loop — invites, content, or data are produced but the loop that pulls the next user back is unwritten.
18
+
19
+ Do NOT use to fix days 0–30 onboarding friction (route to
20
+ `onboarding-design`), classify churn causes (route to
21
+ `churn-prevention`), or design human-led account-expansion plays
22
+ (route to `expansion-playbook`).
23
+
24
+ ## Cognition cluster
25
+
26
+ - **Mental model 14 — Meadows leverage points.** A retention loop
27
+ is a feedback structure: the leverage sits in the loop's
28
+ *gain* (how strong the reward is) and *delay* (how long until
29
+ the reward lands), not in the surface UI. Pick the leverage
30
+ point — gain or delay — over surface polish. See
31
+ [`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 14.
32
+ - **Mental model 8 — Compounding.** A loop with even small gain
33
+ per cycle compounds across cohorts; a one-time activation
34
+ bump does not. Verify which loops compound before investing
35
+ cycles into them. See `mental-models.md` § 8.
36
+ - **Mental model 18 — Pull vs. push.** A trigger the user pulls
37
+ (intrinsic need surfaced by the product) compounds; a trigger
38
+ the vendor pushes (marketing notification firing) decays the
39
+ channel and trains the user to mute. See `mental-models.md` § 18.
40
+ - **Context-spine — product + customer-segment + funnel-stage.**
41
+ Read the **product** slot for which capability can carry a loop
42
+ (a loop is only as strong as the action it routes through), the
43
+ **customer-segment** slot for which segments have the latent
44
+ need the loop addresses, and the **funnel-stage** slot for where
45
+ the loop sits relative to activation and paid. See
46
+ [`context-spine`](../../../docs/contracts/context-spine.md).
47
+
48
+ ## Procedure
49
+
50
+ ### Step 0: Inspect — name the current loops, if any
51
+
52
+ Inspect the product. For each suspected loop, write the closed
53
+ form: *"\<trigger\> → \<action\> → \<reward\> → \<trigger again\>."*
54
+ If the loop cannot be written closed, it is not a loop; it is a
55
+ funnel ending. Inspect whether the reward arrives quickly enough
56
+ to reinforce the action — verify the delay against the segment's
57
+ attention cycle.
58
+
59
+ ### Step 1: Classify each loop as single-user vs network
60
+
61
+ 1. **Single-user loop** — trigger and reward both originate from
62
+ the same user (a daily-summary email triggered by yesterday's
63
+ activity).
64
+ 2. **Network loop** — trigger or reward involves another user
65
+ (a teammate's comment, a partner's reply, a customer's reaction).
66
+
67
+ Network loops compound harder but require minimum-viable-network
68
+ density; below density they look broken. Classify before investing.
69
+
70
+ ### Step 2: Audit the gain and the delay per loop
71
+
72
+ For each loop:
73
+
74
+ 1. **Gain per cycle** — what observable utility does the user
75
+ receive (information, social affirmation, time saved, reduced
76
+ error)? Gain measured as the user's revealed willingness to
77
+ repeat the action.
78
+ 2. **Delay** — time from trigger to reward. A delay longer than the
79
+ segment's attention window kills the loop regardless of gain.
80
+ 3. **Decay** — does the loop weaken when the user already has the
81
+ reward? Most product loops decay; design the next loop before
82
+ the first decays.
83
+
84
+ ### Step 3: Pick the binding loop and isolate it
85
+
86
+ Of the loops named, pick the one whose gain × frequency × eligible
87
+ segment-size is largest. **Verify** the loop is intrinsic-pull, not
88
+ vendor-push: confirm the trigger originates from a user action or
89
+ state, not from a marketing schedule. A push-trigger labelled as a
90
+ loop will burn the channel.
91
+
92
+ ### Step 4: Design the missing step, not the missing UI
93
+
94
+ If the binding loop is broken, the broken step is almost always:
95
+ *trigger missing*, *action too far from trigger*, *reward delayed*,
96
+ or *no path back to next trigger*. Design the missing **step**, not
97
+ a UI tweak. UI tweaks polish a loop that already closes; they do
98
+ not close an open one.
99
+
100
+ ### Step 5: Hand back
101
+
102
+ Hand the loop inventory, the binding-loop selection with gain /
103
+ delay / decay, and the step-level redesign to the implementing
104
+ team and to
105
+ [`activation-design`](../activation-design/SKILL.md) — activation
106
+ is the loop's first cycle, and the activation event must complete
107
+ the first cycle of the binding loop. Retention work without a named
108
+ loop is rearranging notifications.
109
+
110
+ ## Related Skills
111
+
112
+ **WHEN to use this**
113
+
114
+ - Designing or auditing product-led retention loops.
115
+ - Selecting the binding loop and redesigning its missing step.
116
+
117
+ **WHEN NOT to use this**
118
+
119
+ - Days 0–30 onboarding milestones — route to
120
+ [`onboarding-design`](../onboarding-design/SKILL.md).
121
+ - Cause-classification of churn events — route to
122
+ [`churn-prevention`](../churn-prevention/SKILL.md).
123
+ - Human-led expansion plays — route to
124
+ [`expansion-playbook`](../expansion-playbook/SKILL.md).
125
+ - Activation-event selection (first cycle of the binding loop) —
126
+ route to [`activation-design`](../activation-design/SKILL.md).
127
+
128
+ ## When the agent should load this
129
+
130
+ - "Why don't users come back?"
131
+ - "Design a habit loop for feature X."
132
+ - "Is this loop single-user or network?"
133
+ - "Welcher Loop tr\u00e4gt eigentlich unsere Retention?"
134
+
135
+ ## Output
136
+
137
+ 1. **`loop-inventory.md`** — every named loop in closed form: trigger → action → reward → next trigger, with single-user vs network tag.
138
+ 2. **`gain-delay-audit.md`** — per-loop gain · delay · decay · eligible-segment size · revealed repeat-rate.
139
+ 3. **`binding-loop-redesign.md`** — selected loop, the broken step, and the redesign in step terms (not UI terms).
140
+
141
+ ## Gotcha
142
+
143
+ - A loop whose reward arrives outside the segment's attention window will look broken even when gain is high; delay kills loops more often than gain does.
144
+ - A network loop below minimum-viable density behaves like an open funnel; instrumenting it and designing it before density is theatre.
145
+ - *"Notifications fire daily"* is not a loop; it is a push schedule. A loop needs a closed return path from reward to next trigger that the user — not the vendor — closes.
146
+
147
+ ## Do NOT
148
+
149
+ - Do NOT invest in surface UI on a loop that does not close; the loop closes by adding a step, not polishing one.
150
+ - Do NOT instrument network loops as single-user loops; the metric will look broken until the network reaches density.
151
+ - Do NOT design more than one binding loop at a time; concurrent loop changes destroy the signal.
152
+
153
+ ## Runnable example
154
+
155
+ Mid-market collaboration tool, D30 retention 41 %, two suspected loops named.
156
+
157
+ - Loop inventory — *(L1)* user receives daily summary → opens product → reviews changes → leaves a comment → teammate notified (network). *(L2)* user creates a doc → bookmark surfaces in nav → user reopens (single-user).
158
+ - Gain–delay audit — L1 gain medium, delay 24 h (within attention window), decay low (network refreshes); L2 gain low, delay 0, decay high (bookmark stale within a week).
159
+ - Binding loop — L1 selected (gain × frequency × segment-size dominates). Broken step: *"teammate notified"* fires but does not route teammate back to the originating doc — the loop opens.
160
+ - Redesign — add teammate-return path: notification deep-links into the doc at the commented passage; **verify** with cohort A/B at 4-week horizon. Predicted: D30 +6 pp ± 3 pp.
161
+ - Hand-off — loop inventory + redesign → eng team; activation event redefinition (one comment + one teammate notified) handed to `activation-design`.
@@ -149,7 +149,7 @@ worktree → delegated-skill consumes the input shape declared in its
149
149
  `## Input` (or `## When the agent should load this`) block. The
150
150
  handoff is auditable; `lint_handoffs.py` validates the chain.
151
151
 
152
- **Example chain (W3 launch):** `positioning` (worktree A) →
152
+ **Example chain (W3 launch):** `positioning-strategy` (worktree A) →
153
153
  `messaging-architecture` (worktree B, consumes positioning's
154
154
  `positioning-statement.md`) → `gtm-launch` (worktree C, consumes
155
155
  both prior artifacts). Each worktree carries one branch; the chain
@@ -0,0 +1,163 @@
1
+ ---
2
+ name: voice-and-tone-design
3
+ description: "Use when shaping brand voice — voice attributes, tone-by-context matrix, consistency review. Triggers on 'define our voice', 'why does our copy sound different on every surface'."
4
+ status: active
5
+ tier: senior
6
+ source: package
7
+ domain: product
8
+ context_spine: [product, customer-segment]
9
+ ---
10
+
11
+ # voice-and-tone-design
12
+
13
+ ## When to use
14
+
15
+ - A team is producing copy across multiple surfaces and the same segment hears three different brands per quarter — name the voice so the surfaces converge.
16
+ - An audience-by-message matrix exists but each audience cell currently reads in a different tone, breaking the recognition signal across the segment.
17
+ - A new senior persona (CMO, founder, head-of-content) is asking for a voice-and-tone artefact that downstream writers can defend against.
18
+
19
+ Do NOT use to copy-edit individual assets (out of scope — that is a
20
+ writer's job), draft the message stack (route to
21
+ `messaging-architecture`), or pick channel-specific tactics like
22
+ subject lines or ad creative formats (channel-agnostic skill).
23
+
24
+ ## Cognition cluster
25
+
26
+ - **Mental model 13 — Occam's Razor.** The simplest voice the
27
+ segment can recognise across surfaces is the voice that survives
28
+ contact with three writers under deadline. A five-attribute voice
29
+ that no one remembers is brand-theatre. See
30
+ [`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 13.
31
+ - **Mental model 15 — Signal vs. noise.** Voice is the
32
+ identification signal embedded in copy — without distinctiveness
33
+ it is noise that competes with every peer's noise. Cut to the
34
+ three attributes that *only* the segment hears as us. See
35
+ `mental-models.md` § 15.
36
+ - **Context-spine — product + customer-segment.** Read **product**
37
+ for the proofs the voice must carry (a voice that promises what
38
+ the product cannot back is fiction); read **customer-segment**
39
+ for the listening-register the audience already lives in. See
40
+ [`context-spine`](../../../docs/contracts/context-spine.md).
41
+
42
+ ## Procedure
43
+
44
+ ### Step 0: Inherit the positioning frame and audience matrix
45
+
46
+ Identify the locked positioning anchors from
47
+ [`positioning-strategy`](../positioning-strategy/SKILL.md) and the audience matrix
48
+ from [`messaging-architecture`](../messaging-architecture/SKILL.md).
49
+ Voice without positioning is style; voice without an audience matrix
50
+ is broadcast.
51
+
52
+ ### Step 1: Analyze the inherited voice
53
+
54
+ Read 6–10 recent assets across the largest surface set the team
55
+ ships on. For each, note the *register* (formal · conversational ·
56
+ technical · playful) and one *line that sounds like us* (or *like
57
+ anyone*). The output is an honest audit: what voice is currently
58
+ shipping, not what the team intends to ship.
59
+
60
+ ### Step 2: Pick three voice attributes — and three only
61
+
62
+ Three attributes, each phrased as *"\<we are\> X, not Y."* The
63
+ *not Y* is non-trivial: it names the credible adjacent voice the
64
+ team is choosing against, not a strawman. Examples of the shape
65
+ (not vocabulary):
66
+
67
+ - *"Precise, not pedantic."*
68
+ - *"Confident, not boastful."*
69
+ - *"Concrete, not buzzword."*
70
+
71
+ A four-attribute voice will collapse to three under deadline; pick
72
+ the three now.
73
+
74
+ ### Step 3: Build the tone-by-context matrix
75
+
76
+ Tone modulates voice; voice is constant. For each context — error
77
+ copy, marketing surface, sales follow-up, onboarding, executive
78
+ summary, support reply — fill: *what the audience is feeling · what
79
+ the surface must do · which voice attribute leads · what tone
80
+ amplifier or muter applies.* The matrix is the tool writers
81
+ actually reach for; the three attributes are the spine they hang
82
+ the tone on.
83
+
84
+ ### Step 4: Validate against the recognition signal
85
+
86
+ Validate the voice on three checks:
87
+
88
+ 1. **Distinctiveness.** Write the same sentence in three credible
89
+ peer voices. Verify the team's voice is recognisable as distinct
90
+ on first read — not on the second read after explaining the
91
+ attributes.
92
+ 2. **Proof-coverage.** Confirm the voice does not promise what the
93
+ product (from the spine) cannot back. *"Calm"* without an
94
+ uptime story is fiction. Verify each attribute against a proof.
95
+ 3. **Survives-deadline.** Hand the artefacts to a writer who was
96
+ not in the room. If the writer cannot reproduce the voice on a
97
+ 30-minute draft, the voice is documented for the room, not the
98
+ surface.
99
+
100
+ ### Step 5: Run the consistency review
101
+
102
+ Re-audit the assets from Step 1 against the locked attributes and
103
+ tone matrix. Mark each line *consistent · slipping · contradiction.*
104
+ Slipping is a writer-coaching problem; contradiction is a re-write.
105
+ The review surfaces the load-bearing surfaces that need a re-pass,
106
+ not a punitive list.
107
+
108
+ ### Step 6: Hand back
109
+
110
+ Hand the artefacts to writers across the surfaces, to
111
+ [`editorial-calendar`](../editorial-calendar/SKILL.md) for cadence
112
+ mapping, and to [`release-comms`](../release-comms/SKILL.md) for
113
+ launch-surface voice review.
114
+
115
+ ## Related Skills
116
+
117
+ **WHEN to use this**
118
+
119
+ - The unit of work is the *voice* (three attributes + tone-by-context matrix), not a single line of copy.
120
+ - Surfaces are diverging in tone and the segment cannot recognise the brand across them.
121
+ - A team needs an artefact that a writer on deadline can actually use.
122
+
123
+ **WHEN NOT to use this**
124
+
125
+ - Drafting the message stack (primary message + proofs) — route to [`messaging-architecture`](../messaging-architecture/SKILL.md).
126
+ - Cadence and content-debt management — route to [`editorial-calendar`](../editorial-calendar/SKILL.md).
127
+ - Copy-editing individual assets — out of scope; that is a writer's craft.
128
+ - Launch-wave announcement copy — route to [`release-comms`](../release-comms/SKILL.md).
129
+
130
+ ## When the agent should load this
131
+
132
+ - "Define our voice — three attributes, no more."
133
+ - "Mach uns einen Tone-by-Context matrix, der Schreibern auf Deadline hilft."
134
+ - "Why does our copy sound different on every surface?"
135
+ - "Run a voice consistency audit on last quarter's assets."
136
+ - "Pick the *not-Y* for each voice attribute."
137
+
138
+ ## Output
139
+
140
+ 1. **`voice-attributes.md`** — three attributes in the *"X, not Y"* shape, with the proof-from-spine that backs each.
141
+ 2. **`tone-by-context.md`** — one row per surface context, with audience feeling, surface job, lead attribute, and tone amplifier / muter.
142
+ 3. **`consistency-review.md`** — audit of 6–10 recent assets, each line marked consistent · slipping · contradiction, with re-pass list ranked by surface load.
143
+
144
+ ## Gotcha
145
+
146
+ - A voice that pleases the room is usually below the noise floor — agreement is consensus, not distinctiveness.
147
+ - The *not-Y* is the work. *"Confident, not boastful"* is meaningful; *"confident, not weak"* is filler.
148
+ - Tone-by-context matrices over-amplify when the surface is high-stakes — a calm voice in error copy is the discipline, not the failure.
149
+
150
+ ## Do NOT
151
+
152
+ - Do NOT exceed three attributes — the fourth collapses on the first deadline.
153
+ - Do NOT prescribe channel-specific tactics or copywriting rules; tactics live with the channel owner.
154
+ - Do NOT promise voice attributes the product cannot back — *"effortless"* without an integration story is fiction the support queue will pay for.
155
+
156
+ ## Runnable example
157
+
158
+ Mid-market HR analytics tool, positioning locked (retention beats acquisition), audience matrix has HR director · CFO · IT-security:
159
+
160
+ - Voice attributes — *"Precise, not pedantic."* · *"Confident, not boastful."* · *"Concrete, not buzzword."*
161
+ - Tone-by-context — *Error copy:* audience scared, lead with *precise*, mute *confident*. *Marketing surface:* audience curious, lead with *concrete*, amplify *confident*. *Onboarding:* audience uncertain, lead with *precise*, amplify warmth modifier.
162
+ - Consistency review — 8 of 10 surveyed assets *consistent*; 1 *slipping* (CEO blog leans pedantic); 1 *contradiction* (homepage hero contradicts *not buzzword* with "synergistic"). Re-pass list: homepage hero (load-bearing surface, prioritised).
163
+ - Hand-off → writers across surfaces; `release-comms` voice-reviews the GA-wave announcement.
@@ -39,7 +39,7 @@ schema_version: 1
39
39
  # CI guard: a release bump of `package.json` must update this value
40
40
  # in lockstep — see scripts/check_template_pin_drift.py (road-to-
41
41
  # portable-runtime-and-update-check P3.3).
42
- agent_config_version: "2.3.0"
42
+ agent_config_version: "2.7.0"
43
43
 
44
44
  # --- Project identity ---
45
45
  project:
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Shared agent configuration \u2014 skills for AI coding tools (Claude Code, Augment, Cursor, Cline, Windsurf, Gemini CLI).",
9
- "version": "2.7.0",
9
+ "version": "2.8.0",
10
10
  "keywords": [
11
11
  "agent-config",
12
12
  "skills",
@@ -42,6 +42,7 @@
42
42
  "strict": false,
43
43
  "skills": [
44
44
  "./.claude/skills/accessibility-auditor",
45
+ "./.claude/skills/activation-design",
45
46
  "./.claude/skills/adr-create",
46
47
  "./.claude/skills/adversarial-review",
47
48
  "./.claude/skills/agent-docs-writing",
@@ -78,15 +79,17 @@
78
79
  "./.claude/skills/chat-history-show",
79
80
  "./.claude/skills/check-current-md",
80
81
  "./.claude/skills/check-refs",
82
+ "./.claude/skills/churn-prevention",
81
83
  "./.claude/skills/code-refactoring",
82
84
  "./.claude/skills/code-review",
83
85
  "./.claude/skills/command-routing",
84
86
  "./.claude/skills/command-writing",
85
87
  "./.claude/skills/commit",
86
88
  "./.claude/skills/commit-in-chunks",
87
- "./.claude/skills/composer-packages",
88
89
  "./.claude/skills/competitive-positioning",
90
+ "./.claude/skills/composer-packages",
89
91
  "./.claude/skills/compress",
92
+ "./.claude/skills/content-funnel-design",
90
93
  "./.claude/skills/context",
91
94
  "./.claude/skills/context-authoring",
92
95
  "./.claude/skills/context-create",
@@ -108,6 +111,7 @@
108
111
  "./.claude/skills/data-flow-mapper",
109
112
  "./.claude/skills/database",
110
113
  "./.claude/skills/dcf-modeling",
114
+ "./.claude/skills/deal-qualification-meddic",
111
115
  "./.claude/skills/decision-record",
112
116
  "./.claude/skills/deep-reading-analyst",
113
117
  "./.claude/skills/defense-in-depth",
@@ -121,10 +125,12 @@
121
125
  "./.claude/skills/dto-creator",
122
126
  "./.claude/skills/e2e-heal",
123
127
  "./.claude/skills/e2e-plan",
128
+ "./.claude/skills/editorial-calendar",
124
129
  "./.claude/skills/eloquent",
125
130
  "./.claude/skills/error-handling-patterns",
126
131
  "./.claude/skills/estimate-ticket",
127
132
  "./.claude/skills/existing-ui-audit",
133
+ "./.claude/skills/expansion-playbook",
128
134
  "./.claude/skills/fe-design",
129
135
  "./.claude/skills/feature",
130
136
  "./.claude/skills/feature-dev",
@@ -144,12 +150,15 @@
144
150
  "./.claude/skills/fix-refs",
145
151
  "./.claude/skills/fix-seeder",
146
152
  "./.claude/skills/flux",
153
+ "./.claude/skills/forecast-accuracy",
147
154
  "./.claude/skills/form-handler",
155
+ "./.claude/skills/fundraising-narrative",
148
156
  "./.claude/skills/funnel-analysis",
149
157
  "./.claude/skills/git-workflow",
150
158
  "./.claude/skills/github-ci",
151
159
  "./.claude/skills/grafana",
152
160
  "./.claude/skills/grill-me",
161
+ "./.claude/skills/gtm-launch",
153
162
  "./.claude/skills/guideline-writing",
154
163
  "./.claude/skills/implement-ticket",
155
164
  "./.claude/skills/incident-commander",
@@ -192,6 +201,7 @@
192
201
  "./.claude/skills/memory-promote",
193
202
  "./.claude/skills/memory-propose",
194
203
  "./.claude/skills/merge-conflicts",
204
+ "./.claude/skills/messaging-architecture",
195
205
  "./.claude/skills/migration-architect",
196
206
  "./.claude/skills/migration-creator",
197
207
  "./.claude/skills/mobile-e2e-strategy",
@@ -203,6 +213,7 @@
203
213
  "./.claude/skills/multi-tenancy",
204
214
  "./.claude/skills/okr-tree-modeling",
205
215
  "./.claude/skills/onboard",
216
+ "./.claude/skills/onboarding-design",
206
217
  "./.claude/skills/openapi",
207
218
  "./.claude/skills/optimize",
208
219
  "./.claude/skills/optimize-agents-dir",
@@ -224,9 +235,11 @@
224
235
  "./.claude/skills/php-coder",
225
236
  "./.claude/skills/php-debugging",
226
237
  "./.claude/skills/php-service",
238
+ "./.claude/skills/pipeline-strategy",
227
239
  "./.claude/skills/playwright-architect",
228
240
  "./.claude/skills/playwright-testing",
229
241
  "./.claude/skills/po-discovery",
242
+ "./.claude/skills/positioning-strategy",
230
243
  "./.claude/skills/prepare-for-review",
231
244
  "./.claude/skills/project-analysis-core",
232
245
  "./.claude/skills/project-analysis-hypothesis-driven",
@@ -258,6 +271,7 @@
258
271
  "./.claude/skills/research",
259
272
  "./.claude/skills/research-deep",
260
273
  "./.claude/skills/research-report",
274
+ "./.claude/skills/retention-loops",
261
275
  "./.claude/skills/review-changes",
262
276
  "./.claude/skills/review-routing",
263
277
  "./.claude/skills/rice-prioritization",
@@ -315,6 +329,7 @@
315
329
  "./.claude/skills/validate-feature-fit",
316
330
  "./.claude/skills/verify-completion-evidence",
317
331
  "./.claude/skills/voc-extract",
332
+ "./.claude/skills/voice-and-tone-design",
318
333
  "./.claude/skills/websocket",
319
334
  "./.claude/skills/work"
320
335
  ]