@event4u/agent-config 2.6.1 → 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.
- package/.agent-src/commands/agent-handoff.md +1 -0
- package/.agent-src/commands/agent-status.md +1 -0
- package/.agent-src/commands/agents/audit.md +1 -0
- package/.agent-src/commands/agents/init.md +1 -0
- package/.agent-src/commands/agents/optimize.md +1 -0
- package/.agent-src/commands/agents.md +1 -0
- package/.agent-src/commands/analyze-reference-repo.md +1 -0
- package/.agent-src/commands/bug-fix.md +1 -0
- package/.agent-src/commands/bug-investigate.md +1 -0
- package/.agent-src/commands/challenge-me/vision.md +1 -0
- package/.agent-src/commands/challenge-me/with-docs.md +1 -0
- package/.agent-src/commands/challenge-me.md +1 -0
- package/.agent-src/commands/chat-history/import.md +1 -0
- package/.agent-src/commands/chat-history/learn.md +1 -0
- package/.agent-src/commands/chat-history/show.md +1 -0
- package/.agent-src/commands/chat-history.md +1 -0
- package/.agent-src/commands/check-current-md.md +1 -0
- package/.agent-src/commands/commit/in-chunks.md +1 -0
- package/.agent-src/commands/commit.md +1 -0
- package/.agent-src/commands/compress.md +1 -0
- package/.agent-src/commands/context/create.md +1 -0
- package/.agent-src/commands/context/refactor.md +1 -0
- package/.agent-src/commands/context.md +1 -0
- package/.agent-src/commands/cost-report.md +1 -0
- package/.agent-src/commands/council/default.md +1 -0
- package/.agent-src/commands/council/design.md +1 -0
- package/.agent-src/commands/council/optimize.md +1 -0
- package/.agent-src/commands/council/pr.md +1 -0
- package/.agent-src/commands/council.md +1 -0
- package/.agent-src/commands/create-pr/description-only.md +1 -0
- package/.agent-src/commands/create-pr.md +1 -0
- package/.agent-src/commands/e2e-heal.md +1 -0
- package/.agent-src/commands/e2e-plan.md +1 -0
- package/.agent-src/commands/estimate-ticket.md +1 -0
- package/.agent-src/commands/feature/dev.md +1 -0
- package/.agent-src/commands/feature/explore.md +1 -0
- package/.agent-src/commands/feature/plan.md +1 -0
- package/.agent-src/commands/feature/refactor.md +1 -0
- package/.agent-src/commands/feature/roadmap.md +1 -0
- package/.agent-src/commands/feature.md +1 -0
- package/.agent-src/commands/fix/ci.md +1 -0
- package/.agent-src/commands/fix/portability.md +1 -0
- package/.agent-src/commands/fix/pr-bot-comments.md +1 -0
- package/.agent-src/commands/fix/pr-comments.md +1 -0
- package/.agent-src/commands/fix/pr-developer-comments.md +1 -0
- package/.agent-src/commands/fix/refs.md +1 -0
- package/.agent-src/commands/fix/seeder.md +1 -0
- package/.agent-src/commands/fix.md +1 -0
- package/.agent-src/commands/grill-me.md +1 -0
- package/.agent-src/commands/implement-ticket.md +1 -0
- package/.agent-src/commands/jira-ticket.md +1 -0
- package/.agent-src/commands/judge/on-diff.md +1 -0
- package/.agent-src/commands/judge/solo.md +1 -0
- package/.agent-src/commands/judge/steps.md +1 -0
- package/.agent-src/commands/judge.md +1 -0
- package/.agent-src/commands/memory/add.md +1 -0
- package/.agent-src/commands/memory/load.md +1 -0
- package/.agent-src/commands/memory/mine-session.md +1 -0
- package/.agent-src/commands/memory/promote.md +1 -0
- package/.agent-src/commands/memory/propose.md +1 -0
- package/.agent-src/commands/memory.md +1 -0
- package/.agent-src/commands/mode.md +1 -0
- package/.agent-src/commands/module/create.md +1 -0
- package/.agent-src/commands/module/explore.md +1 -0
- package/.agent-src/commands/module.md +1 -0
- package/.agent-src/commands/onboard.md +1 -0
- package/.agent-src/commands/optimize/agents-dir.md +1 -0
- package/.agent-src/commands/optimize/augmentignore.md +1 -0
- package/.agent-src/commands/optimize/rtk.md +1 -0
- package/.agent-src/commands/optimize/skills.md +1 -0
- package/.agent-src/commands/optimize-prompt.md +1 -0
- package/.agent-src/commands/optimize.md +1 -0
- package/.agent-src/commands/orchestrate.md +1 -0
- package/.agent-src/commands/override/create.md +1 -0
- package/.agent-src/commands/override/manage.md +1 -0
- package/.agent-src/commands/override.md +1 -0
- package/.agent-src/commands/package-reset.md +1 -0
- package/.agent-src/commands/package-test.md +1 -0
- package/.agent-src/commands/prepare-for-review.md +1 -0
- package/.agent-src/commands/project-analyze.md +1 -0
- package/.agent-src/commands/project-health.md +1 -0
- package/.agent-src/commands/quality-fix.md +1 -0
- package/.agent-src/commands/refine-ticket.md +1 -0
- package/.agent-src/commands/research/deep.md +1 -0
- package/.agent-src/commands/research/report.md +1 -0
- package/.agent-src/commands/research.md +1 -0
- package/.agent-src/commands/review-changes.md +1 -0
- package/.agent-src/commands/review-routing.md +1 -0
- package/.agent-src/commands/roadmap/ai-council.md +1 -0
- package/.agent-src/commands/roadmap/create.md +1 -0
- package/.agent-src/commands/roadmap/process-full.md +1 -0
- package/.agent-src/commands/roadmap/process-phase.md +1 -0
- package/.agent-src/commands/roadmap/process-step.md +1 -0
- package/.agent-src/commands/roadmap.md +1 -0
- package/.agent-src/commands/rule-compliance-audit.md +1 -0
- package/.agent-src/commands/set-cost-profile.md +1 -0
- package/.agent-src/commands/sync-agent-settings.md +1 -0
- package/.agent-src/commands/sync-gitignore/fix.md +1 -0
- package/.agent-src/commands/sync-gitignore.md +1 -0
- package/.agent-src/commands/tests/create.md +1 -0
- package/.agent-src/commands/tests/execute.md +1 -0
- package/.agent-src/commands/tests.md +1 -0
- package/.agent-src/commands/threat-model.md +1 -0
- package/.agent-src/commands/update-form-request-messages.md +1 -0
- package/.agent-src/commands/upstream-contribute.md +1 -0
- package/.agent-src/commands/work.md +1 -0
- package/.agent-src/personas/cmo.md +122 -0
- package/.agent-src/personas/customer-success-lead.md +126 -0
- package/.agent-src/personas/growth-pm.md +134 -0
- package/.agent-src/personas/revops.md +125 -0
- package/.agent-src/skills/activation-design/SKILL.md +160 -0
- package/.agent-src/skills/churn-prevention/SKILL.md +156 -0
- package/.agent-src/skills/content-funnel-design/SKILL.md +170 -0
- package/.agent-src/skills/deal-qualification-meddic/SKILL.md +165 -0
- package/.agent-src/skills/editorial-calendar/SKILL.md +161 -0
- package/.agent-src/skills/expansion-playbook/SKILL.md +171 -0
- package/.agent-src/skills/forecast-accuracy/SKILL.md +157 -0
- package/.agent-src/skills/fundraising-narrative/SKILL.md +189 -0
- package/.agent-src/skills/funnel-analysis/SKILL.md +26 -2
- package/.agent-src/skills/gtm-launch/SKILL.md +165 -0
- package/.agent-src/skills/messaging-architecture/SKILL.md +184 -0
- package/.agent-src/skills/onboarding-design/SKILL.md +158 -0
- package/.agent-src/skills/pipeline-strategy/SKILL.md +159 -0
- package/.agent-src/skills/positioning-strategy/SKILL.md +177 -0
- package/.agent-src/skills/retention-loops/SKILL.md +161 -0
- package/.agent-src/skills/subagent-orchestration/SKILL.md +1 -1
- package/.agent-src/skills/voice-and-tone-design/SKILL.md +163 -0
- package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/.claude-plugin/marketplace.json +17 -2
- package/AGENTS.md +4 -4
- package/CHANGELOG.md +60 -2257
- package/README.md +59 -33
- package/docs/architecture/augment-projection.md +70 -0
- package/docs/architecture/claude-bundle.md +77 -0
- package/docs/architecture/compression.md +67 -0
- package/docs/architecture/multi-tool-projection.md +72 -0
- package/docs/architecture.md +32 -55
- package/docs/archive/CHANGELOG-pre-2.2.0.md +2138 -0
- package/docs/archive/CHANGELOG-pre-2.7.0.md +185 -0
- package/docs/catalog.md +19 -3
- package/docs/contracts/CHANGELOG-conventions.md +121 -0
- package/docs/contracts/adr-gtm-context-spine.md +115 -0
- package/docs/contracts/command-surface-tiers.md +145 -0
- package/docs/contracts/context-spine.md +50 -12
- package/docs/contracts/cross-wing-handoff.md +3 -3
- package/docs/contracts/mcp-cloud-scope.md +193 -21
- package/docs/contracts/mcp-phase-1-scope.md +1 -0
- package/docs/contracts/persona-schema.md +20 -3
- package/docs/decisions/ADR-007-agent-discovery-scopes.md +67 -0
- package/docs/guidelines/gtm-handoff.md +114 -0
- package/docs/setup/enterprise-and-offline.md +201 -0
- package/docs/setup/per-ide/augment.md +37 -25
- package/package.json +1 -1
- package/scripts/_bootstrap_tier_frontmatter.py +151 -0
- package/scripts/agent-config +146 -83
- package/scripts/hermetic-install.sh +235 -0
- package/scripts/install.py +8 -1
- package/scripts/lint_command_tiers.py +115 -0
- package/scripts/lint_context_spine_usage.py +4 -1
- package/scripts/mcp_server/__init__.py +5 -0
- package/scripts/schemas/command.schema.json +5 -0
- package/scripts/schemas/persona.schema.json +5 -0
- package/scripts/schemas/skill.schema.json +2 -2
- package/scripts/skill_linter.py +177 -3
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: onboarding-design
|
|
3
|
+
description: "Use when designing customer onboarding — time-to-first-value, milestone design, friction audit, drop-off diagnosis. Triggers on 'fix onboarding', 'why do new accounts churn fast'."
|
|
4
|
+
status: active
|
|
5
|
+
tier: senior
|
|
6
|
+
source: package
|
|
7
|
+
domain: product
|
|
8
|
+
context_spine: [product, customer-segment, funnel-stage]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# onboarding-design
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
- New accounts churn inside their first 30 days and the team cannot name which onboarding milestone they failed to reach — drop-off is treated as a single number, not a stage-by-stage signal.
|
|
16
|
+
- A new segment is being onboarded against an onboarding flow built for a previous segment — the milestones likely do not match the new segment's switch-event shape.
|
|
17
|
+
- Time-to-first-value is *"days, maybe weeks"* — the answer needs to be a number with a falsifiable definition, not a sentiment.
|
|
18
|
+
|
|
19
|
+
Do NOT use to onboard employees (that is the Wing-4
|
|
20
|
+
employee-onboarding program — different audience, different
|
|
21
|
+
contract), diagnose long-cycle churn (route to
|
|
22
|
+
`churn-prevention`), or run the full visitor → paid funnel (route
|
|
23
|
+
to `funnel-analysis`).
|
|
24
|
+
|
|
25
|
+
## Cognition cluster
|
|
26
|
+
|
|
27
|
+
- **Mental model 14 — Meadows leverage points.** Onboarding is a
|
|
28
|
+
high-leverage system: a change in the milestone *definition*
|
|
29
|
+
reshapes retention more than a change in the welcome email. Pick
|
|
30
|
+
the leverage point — milestone definition over surface polish.
|
|
31
|
+
See
|
|
32
|
+
[`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 14.
|
|
33
|
+
- **Mental model 16 — Leading vs. lagging indicators.**
|
|
34
|
+
Time-to-first-value and milestone-completion are leading; D30
|
|
35
|
+
retention is lagging. Onboarding decisions built on lagging
|
|
36
|
+
signals can only confirm churn after it lands. See
|
|
37
|
+
`mental-models.md` § 16.
|
|
38
|
+
- **Mental model 13 — Occam's razor.** When new accounts drop off,
|
|
39
|
+
the simpler explanation usually wins: *"the first milestone is
|
|
40
|
+
too far from the buyer's job to complete in one session"* beats
|
|
41
|
+
*"users do not understand our value proposition."* Pick the
|
|
42
|
+
simpler explanation; it changes the move. See
|
|
43
|
+
`mental-models.md` § 13.
|
|
44
|
+
- **Context-spine — product + customer-segment + funnel-stage.**
|
|
45
|
+
Read the **product** slot for what the segment can actually
|
|
46
|
+
configure unattended, the **customer-segment** slot for the
|
|
47
|
+
segment's job and switch-event, and the **funnel-stage** slot for
|
|
48
|
+
where activation sits relative to signup and paid. See
|
|
49
|
+
[`context-spine`](../../../docs/contracts/context-spine.md).
|
|
50
|
+
|
|
51
|
+
## Procedure
|
|
52
|
+
|
|
53
|
+
### Step 0: Inspect — pull the current onboarding shape
|
|
54
|
+
|
|
55
|
+
Inspect the actual funnel: signup → milestone-1 → milestone-2 →
|
|
56
|
+
activation → D30. For each transition pull conversion rate (with
|
|
57
|
+
band) and median time-to-transition for the last two cohorts.
|
|
58
|
+
Inspect whether the activation event correlates with paid retention;
|
|
59
|
+
if not, the activation event is mis-defined and Step 2 fixes it.
|
|
60
|
+
|
|
61
|
+
### Step 1: Define time-to-first-value with a falsifiable definition
|
|
62
|
+
|
|
63
|
+
Write the sentence: *"\<Segment\> reaches first value when
|
|
64
|
+
\<observable buyer action\> happens, by \<target hours / days\>
|
|
65
|
+
after signup."* The action must be observable in instrumentation,
|
|
66
|
+
must correlate with paid retention (Step 0 inspection), and must be
|
|
67
|
+
something the buyer accomplishes — not something the product
|
|
68
|
+
displays.
|
|
69
|
+
|
|
70
|
+
### Step 2: Design three milestones earning activation
|
|
71
|
+
|
|
72
|
+
Each milestone is a buyer action with a definition, a friction
|
|
73
|
+
audit, and a default outcome.
|
|
74
|
+
|
|
75
|
+
1. **Milestone definition** — one sentence in buyer-action form
|
|
76
|
+
(*"buyer has imported one record"*, not *"buyer has seen the
|
|
77
|
+
import screen"*).
|
|
78
|
+
2. **Friction audit** — name the three highest-friction steps the
|
|
79
|
+
buyer must clear; each gets a *cheapest-fix* hypothesis.
|
|
80
|
+
3. **Default outcome** — if the buyer does nothing, what does the
|
|
81
|
+
product do for them? A milestone with no default is a milestone
|
|
82
|
+
the busy half of the segment will miss.
|
|
83
|
+
|
|
84
|
+
### Step 3: Audit friction at each milestone
|
|
85
|
+
|
|
86
|
+
For each milestone, time the buyer journey: clicks, fields, decision
|
|
87
|
+
points, wait states. Tag each as *blocker* (cannot proceed without
|
|
88
|
+
it), *toll* (proceed but slow), or *fog* (buyer unsure what to do
|
|
89
|
+
next). Fog kills more onboarding than blockers — fog is silent.
|
|
90
|
+
|
|
91
|
+
### Step 4: Diagnose drop-off by segment × milestone
|
|
92
|
+
|
|
93
|
+
The drop-off is rarely uniform. Segment by segment × milestone;
|
|
94
|
+
the cell with the steepest below-band drop is the binding fix.
|
|
95
|
+
Two cells dropping at once usually means a shared upstream cause
|
|
96
|
+
(account-provisioning failure, ICP mismatch) — fix upstream, not
|
|
97
|
+
in the milestone.
|
|
98
|
+
|
|
99
|
+
### Step 5: Hand back
|
|
100
|
+
|
|
101
|
+
Hand the time-to-first-value definition, the three milestones with
|
|
102
|
+
friction audits, and the segment × milestone drop-off table to the
|
|
103
|
+
implementing team and to
|
|
104
|
+
[`churn-prevention`](../churn-prevention/SKILL.md) for downstream
|
|
105
|
+
health-score signal definition. Onboarding owns days 0–30;
|
|
106
|
+
churn-prevention owns the signals after.
|
|
107
|
+
|
|
108
|
+
## Related Skills
|
|
109
|
+
|
|
110
|
+
**WHEN to use this**
|
|
111
|
+
|
|
112
|
+
- Designing or auditing days 0–30 of the customer lifecycle.
|
|
113
|
+
- Defining time-to-first-value as a falsifiable event, not a sentiment.
|
|
114
|
+
|
|
115
|
+
**WHEN NOT to use this**
|
|
116
|
+
|
|
117
|
+
- Long-cycle churn diagnosis (D60+) — route to
|
|
118
|
+
[`churn-prevention`](../churn-prevention/SKILL.md).
|
|
119
|
+
- Account expansion or upsell mechanics — route to
|
|
120
|
+
[`expansion-playbook`](../expansion-playbook/SKILL.md).
|
|
121
|
+
- Full visitor → paid funnel diagnosis — route to
|
|
122
|
+
[`funnel-analysis`](../funnel-analysis/SKILL.md).
|
|
123
|
+
- Activation-event redefinition or aha-moment selection — route to
|
|
124
|
+
[`activation-design`](../activation-design/SKILL.md).
|
|
125
|
+
|
|
126
|
+
## When the agent should load this
|
|
127
|
+
|
|
128
|
+
- "Fix our onboarding — new accounts churn fast."
|
|
129
|
+
- "Why does cohort-9 drop at milestone-2?"
|
|
130
|
+
- "Define time-to-first-value for the mid-market segment."
|
|
131
|
+
- "Wie viele Klicks bis zum ersten Wert?"
|
|
132
|
+
|
|
133
|
+
## Output
|
|
134
|
+
|
|
135
|
+
1. **`time-to-first-value.md`** — falsifiable definition: segment × observable action × target time × correlation with paid retention.
|
|
136
|
+
2. **`milestones.md`** — three milestones, each with definition · friction audit (blocker / toll / fog) · default outcome.
|
|
137
|
+
3. **`dropoff-table.md`** — segment × milestone conversion rates with bands; binding-fix cell flagged.
|
|
138
|
+
|
|
139
|
+
## Gotcha
|
|
140
|
+
|
|
141
|
+
- An activation event that does not correlate with paid retention is a vanity event. The funnel will look healthy and D30 will keep dropping.
|
|
142
|
+
- *"Onboarding emails"* is not onboarding design. Emails are a surface; milestones are the system. Designing emails before milestones is rearranging deck chairs.
|
|
143
|
+
- A milestone without a default outcome assumes the buyer drives the journey. Half of every segment will not — design for the half that will not.
|
|
144
|
+
|
|
145
|
+
## Do NOT
|
|
146
|
+
|
|
147
|
+
- Do NOT use industry-average onboarding benchmarks as targets; segment shape and product complexity dominate them.
|
|
148
|
+
- Do NOT confuse signup with activation; signup is consent, activation is value.
|
|
149
|
+
- Do NOT redesign milestones one at a time mid-cycle without an A/B holdout — concurrent changes destroy the signal.
|
|
150
|
+
|
|
151
|
+
## Runnable example
|
|
152
|
+
|
|
153
|
+
B2B mid-market analytics tool, D30 retention sagging from 71 % to 58 % over two quarters.
|
|
154
|
+
|
|
155
|
+
- Time-to-first-value — *"Mid-market: buyer reaches first value when one connected data source returns one rendered dashboard, within 24 hours of signup."* Correlation with D90 paid retention: r = 0.62.
|
|
156
|
+
- Milestones — *(1)* connect data source (friction: OAuth scope confusion = fog; default: paste-CSV fallback). *(2)* save first query (friction: schema picker = toll; default: starter-template per segment). *(3)* share dashboard with one teammate (friction: invite-flow buried = blocker; default: auto-invite admin).
|
|
157
|
+
- Drop-off table — Mid-Market × milestone-1: 41 % conv (band 35–47, vs trailing-cohort median 62 %). Binding fix: OAuth fog at milestone-1.
|
|
158
|
+
- Hand-off — milestones + drop-off → eng team for OAuth-fog fix; `churn-prevention` picks up D30+ health-score signals.
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pipeline-strategy
|
|
3
|
+
description: "Use when designing or auditing a sales pipeline — stage exit criteria, per-cell conversion, coverage reasoning, leak detection. Triggers on 'tighten our pipeline', 'where is the leak'."
|
|
4
|
+
status: active
|
|
5
|
+
tier: senior
|
|
6
|
+
source: package
|
|
7
|
+
domain: product
|
|
8
|
+
context_spine: [product, customer-segment, channel-stage]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# pipeline-strategy
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
- Pipeline stages are named but have no exit criteria — reps move deals on gut and forecasts ride on opinion, not evidence.
|
|
16
|
+
- Coverage is being computed from a flat multiple (*"3x quota"*) without per-stage conversion rates, so the multiple flatters or punishes the team at random.
|
|
17
|
+
- A board ask names *"why did pipeline coverage look fine and the quarter still missed?"* — a leak is hiding inside a healthy-looking total.
|
|
18
|
+
|
|
19
|
+
Do NOT use to qualify a single deal (route to
|
|
20
|
+
`deal-qualification-meddic`), construct the forecast call from a
|
|
21
|
+
locked pipeline (route to `forecast-accuracy`), or configure
|
|
22
|
+
CRM stage fields in a specific vendor tool (out of scope — this
|
|
23
|
+
skill is strategy, not tooling).
|
|
24
|
+
|
|
25
|
+
## Cognition cluster
|
|
26
|
+
|
|
27
|
+
- **Mental model 6 — Theory of constraints.** A pipeline has one
|
|
28
|
+
binding stage at any time; rates upstream of the constraint are
|
|
29
|
+
inventory that never ships, rates downstream cannot exceed the
|
|
30
|
+
constraint. Find the constraint before changing anything else. See
|
|
31
|
+
[`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 6.
|
|
32
|
+
- **Mental model 16 — Leading vs. lagging indicators.** Stage-to-stage
|
|
33
|
+
conversion is leading; closed-won is lagging. A coverage call built
|
|
34
|
+
on lagging signals can only confirm the miss after it lands. See
|
|
35
|
+
`mental-models.md` § 16.
|
|
36
|
+
- **Mental model 3 — Pareto (80/20).** ~20 % of segment × stage cells
|
|
37
|
+
carry ~80 % of revenue risk. Coverage uniformly applied across cells
|
|
38
|
+
is theatre; coverage weighted by cell-level conversion is reasoning.
|
|
39
|
+
See `mental-models.md` § 3.
|
|
40
|
+
- **Context-spine — product + customer-segment + channel-stage.**
|
|
41
|
+
Read the **product** slot for what is actually sellable this
|
|
42
|
+
quarter, the **customer-segment** slot for which segments belong in
|
|
43
|
+
pipeline (and which are pre-pipeline education), and the
|
|
44
|
+
**channel-stage** slot for where each segment enters. See
|
|
45
|
+
[`context-spine`](../../../docs/contracts/context-spine.md).
|
|
46
|
+
|
|
47
|
+
## Procedure
|
|
48
|
+
|
|
49
|
+
### Step 0: Inspect — inventory the current pipeline shape
|
|
50
|
+
|
|
51
|
+
Pull stage counts, $ value, age in stage, and stage-to-stage
|
|
52
|
+
conversion for the trailing two quarters. Inspect whether each
|
|
53
|
+
stage has a written exit criterion; if not, write one now (one
|
|
54
|
+
bullet per stage, falsifiable). A pipeline without exit criteria
|
|
55
|
+
cannot be audited.
|
|
56
|
+
|
|
57
|
+
### Step 1: Lock stage definitions with exit criteria
|
|
58
|
+
|
|
59
|
+
Each stage gets three lines:
|
|
60
|
+
|
|
61
|
+
1. **Definition** — what the deal looks like in this stage (one sentence).
|
|
62
|
+
2. **Entry trigger** — the buyer event that moves a deal in (not a rep action).
|
|
63
|
+
3. **Exit criterion** — the artefact or signal that proves the deal earned the next stage (one bullet, falsifiable; *"meeting booked"* is not falsifiable, *"economic buyer named and confirmed"* is).
|
|
64
|
+
|
|
65
|
+
Reject any stage whose exit criterion is a rep activity ("call
|
|
66
|
+
made") rather than a buyer signal ("buyer confirmed budget owner").
|
|
67
|
+
|
|
68
|
+
### Step 2: Compute per-stage conversion rates with bands
|
|
69
|
+
|
|
70
|
+
For each stage transition, compute the trailing-quarter rate and a
|
|
71
|
+
95 % confidence band. Segment by customer-segment (and channel-stage
|
|
72
|
+
if the channel mix changed). Report the band, not the point — a
|
|
73
|
+
30 % rate on 12 deals and a 30 % rate on 300 deals are different
|
|
74
|
+
signals.
|
|
75
|
+
|
|
76
|
+
### Step 3: Find the binding constraint
|
|
77
|
+
|
|
78
|
+
The constraint is the stage whose conversion rate is **furthest
|
|
79
|
+
below its segment-historical median, weighted by $ value flowing
|
|
80
|
+
through it**. Add deals upstream of any other stage and watch them
|
|
81
|
+
queue; add deals upstream of the constraint and they queue twice as
|
|
82
|
+
fast. A pipeline-coverage call that ignores the constraint
|
|
83
|
+
multiplies inventory the team cannot ship.
|
|
84
|
+
|
|
85
|
+
### Step 4: Compute coverage cell by cell, not by total
|
|
86
|
+
|
|
87
|
+
Coverage = (pipeline $ at stage *s*) ÷ (target closed-won $ in
|
|
88
|
+
window) ÷ (cumulative conversion from *s* to closed-won). Compute
|
|
89
|
+
per segment × stage cell. A 3× total can hide a 0.8× cell — the
|
|
90
|
+
0.8× cell is the quarter's risk.
|
|
91
|
+
|
|
92
|
+
### Step 5: Name three leaks with falsifiable hypotheses
|
|
93
|
+
|
|
94
|
+
For the three lowest coverage cells (or the three steepest
|
|
95
|
+
conversion-rate drops vs trailing-quarter median), write one
|
|
96
|
+
sentence per leak: *"\<cell\> leaks at \<stage\> because \<cause\>;
|
|
97
|
+
falsified if \<test\> shows \<expected signal\>."* If a cause is
|
|
98
|
+
not testable in under two weeks, the hypothesis is not yet sharp
|
|
99
|
+
enough — sharpen before recommending a fix.
|
|
100
|
+
|
|
101
|
+
### Step 6: Hand back
|
|
102
|
+
|
|
103
|
+
Hand the locked stages, the per-cell coverage table, and the three
|
|
104
|
+
leak hypotheses to
|
|
105
|
+
[`forecast-accuracy`](../forecast-accuracy/SKILL.md) for
|
|
106
|
+
commit / best-case categorisation, and to
|
|
107
|
+
[`deal-qualification-meddic`](../deal-qualification-meddic/SKILL.md)
|
|
108
|
+
when the leak is upstream qualification, not late-stage execution.
|
|
109
|
+
|
|
110
|
+
## Related Skills
|
|
111
|
+
|
|
112
|
+
**WHEN to use this**
|
|
113
|
+
|
|
114
|
+
- Designing or auditing pipeline stages and per-stage rates.
|
|
115
|
+
- Computing coverage by segment × stage instead of by total.
|
|
116
|
+
|
|
117
|
+
**WHEN NOT to use this**
|
|
118
|
+
|
|
119
|
+
- Single-deal qualification — route to
|
|
120
|
+
[`deal-qualification-meddic`](../deal-qualification-meddic/SKILL.md).
|
|
121
|
+
- Forecast call construction from a locked pipeline — route to
|
|
122
|
+
[`forecast-accuracy`](../forecast-accuracy/SKILL.md).
|
|
123
|
+
- Product-led conversion-funnel diagnosis (signup → activation → paid) — route to
|
|
124
|
+
[`funnel-analysis`](../funnel-analysis/SKILL.md).
|
|
125
|
+
|
|
126
|
+
## When the agent should load this
|
|
127
|
+
|
|
128
|
+
- "Tighten our pipeline stages — exit criteria are vibes."
|
|
129
|
+
- "Coverage looks 3× and we still missed. Where is the leak?"
|
|
130
|
+
- "Audit per-stage conversion by segment."
|
|
131
|
+
- "Welche Stage ist das Bottleneck im Quartal?"
|
|
132
|
+
|
|
133
|
+
## Output
|
|
134
|
+
|
|
135
|
+
1. **`stage-definitions.md`** — one block per stage: definition · entry trigger · exit criterion (buyer signal, falsifiable).
|
|
136
|
+
2. **`coverage-by-cell.md`** — table of segment × stage cells with $ pipeline, cumulative conversion, and computed coverage. Cells under 1× flagged.
|
|
137
|
+
3. **`leak-hypotheses.md`** — three leaks with falsifiable test + expected signal + 2-week deadline.
|
|
138
|
+
|
|
139
|
+
## Gotcha
|
|
140
|
+
|
|
141
|
+
- A pipeline with exit criteria written as rep activities (*"call made"*) is unauditable — reps move deals on activity, not on buyer signal, and forecasts inherit the noise.
|
|
142
|
+
- Total-pipeline coverage is the wrong unit. A 3× total made of 5× early-stage and 0.5× late-stage will miss the quarter even though the dashboard looks healthy.
|
|
143
|
+
- Per-stage conversion rates without confidence bands are gossip dressed as evidence. Twelve deals give you a band so wide the rate is uninformative.
|
|
144
|
+
|
|
145
|
+
## Do NOT
|
|
146
|
+
|
|
147
|
+
- Do NOT invent stages to flatter the dashboard. Each stage must have a buyer signal earning the transition.
|
|
148
|
+
- Do NOT compare the quarter's coverage to a fixed historical multiple if segment mix changed — recompute per cell.
|
|
149
|
+
- Do NOT recommend a fix to a leak before naming the falsifiable test that proves the cause.
|
|
150
|
+
|
|
151
|
+
## Runnable example
|
|
152
|
+
|
|
153
|
+
Mid-market SaaS, total coverage 3.1×, quarter missed by 18 %.
|
|
154
|
+
|
|
155
|
+
- Stages with exit criteria — *Discovery → Qualified (economic buyer named) → Proposal (pricing in writing) → Negotiation (terms in redline) → Won.*
|
|
156
|
+
- Per-cell coverage — Mid-Market × Proposal: **0.7×**. Mid-Market × Discovery: **6.4×**. Enterprise × Negotiation: **2.1×**.
|
|
157
|
+
- Constraint — Proposal → Negotiation conversion 22 % vs 41 % trailing-quarter median (band 14–31 %). Constraint is **Proposal exit**, not pipeline volume.
|
|
158
|
+
- Leaks — *(1)* Mid-Market proposals stall at pricing-page review; falsified if a pre-proposal pricing-walkthrough call lifts Proposal → Negotiation to 35 %+ within four weeks. *(2)* Enterprise Negotiation drags > 60 days; falsified if procurement-checklist shipped at Proposal stage cuts median age by 20 days. *(3)* Discovery overflow is unqualified — route to `deal-qualification-meddic`.
|
|
159
|
+
- Hand-off — coverage table + leaks → `forecast-accuracy` for commit / best-case rebuild on the corrected denominator.
|
|
@@ -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
|