@event4u/agent-config 2.7.0 → 2.9.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/personas/cmo.md +122 -0
- package/.agent-src/personas/customer-success-lead.md +126 -0
- package/.agent-src/personas/engineering-manager.md +133 -0
- package/.agent-src/personas/finance-partner.md +129 -0
- package/.agent-src/personas/growth-pm.md +134 -0
- package/.agent-src/personas/people-strategist.md +126 -0
- package/.agent-src/personas/revops.md +125 -0
- package/.agent-src/personas/strategist.md +129 -0
- package/.agent-src/skills/activation-design/SKILL.md +160 -0
- package/.agent-src/skills/build-buy-partner/SKILL.md +145 -0
- package/.agent-src/skills/churn-prevention/SKILL.md +156 -0
- package/.agent-src/skills/comp-banding/SKILL.md +160 -0
- package/.agent-src/skills/competitive-moat-analysis/SKILL.md +152 -0
- package/.agent-src/skills/content-funnel-design/SKILL.md +170 -0
- package/.agent-src/skills/contracts-cognition/SKILL.md +147 -0
- package/.agent-src/skills/data-handling-judgment/SKILL.md +155 -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/forecasting/SKILL.md +164 -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/hiring-loop-design/SKILL.md +167 -0
- package/.agent-src/skills/market-entry-analysis/SKILL.md +144 -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/onboarding-program/SKILL.md +157 -0
- package/.agent-src/skills/one-on-one-cadence/SKILL.md +161 -0
- package/.agent-src/skills/org-design/SKILL.md +158 -0
- package/.agent-src/skills/perf-feedback-craft/SKILL.md +157 -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/privacy-review/SKILL.md +160 -0
- package/.agent-src/skills/retention-loops/SKILL.md +161 -0
- package/.agent-src/skills/runway-cognition/SKILL.md +136 -0
- package/.agent-src/skills/scenario-modeling/SKILL.md +139 -0
- package/.agent-src/skills/subagent-orchestration/SKILL.md +1 -1
- package/.agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +165 -0
- package/.agent-src/skills/unit-economics-modeling/SKILL.md +54 -7
- package/.agent-src/skills/vision-articulation/SKILL.md +146 -0
- 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/.agent-src/templates/scripts/telemetry/settings.py +65 -0
- package/.agent-src/templates/scripts/tier_usage_report.py +183 -0
- package/.claude-plugin/marketplace.json +34 -2
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +135 -153
- package/README.md +3 -3
- package/docs/architecture.md +37 -11
- package/docs/archive/CHANGELOG-pre-2.7.0.md +185 -0
- package/docs/catalog.md +38 -4
- package/docs/contracts/adr-forecast-construction-shape.md +89 -0
- package/docs/contracts/adr-gtm-context-spine.md +115 -0
- package/docs/contracts/adr-wing4-context-spine.md +125 -0
- package/docs/contracts/command-clusters.md +41 -0
- package/docs/contracts/command-surface-tiers.md +30 -9
- package/docs/contracts/context-spine.md +58 -12
- package/docs/contracts/cross-wing-handoff.md +3 -3
- package/docs/contracts/mcp-beta-criteria.md +129 -0
- package/docs/contracts/persona-schema.md +20 -3
- package/docs/guidelines/gtm-handoff.md +114 -0
- package/docs/guidelines/wing4-handoff.md +127 -0
- package/docs/mcp-server.md +1 -1
- package/package.json +1 -1
- package/scripts/_cli/cmd_doctor.py +527 -14
- package/scripts/_cli/cmd_validate.py +10 -0
- package/scripts/agent-config +19 -18
- package/scripts/install.py +5 -0
- package/scripts/lint_context_spine_usage.py +5 -1
- package/scripts/mcp_server/__init__.py +1 -0
- package/scripts/mcp_server/server.py +4 -3
- package/scripts/schemas/persona.schema.json +5 -0
- package/scripts/schemas/skill.schema.json +2 -2
- package/scripts/skill_linter.py +284 -6
|
@@ -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,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: privacy-review
|
|
3
|
+
description: "Use when reviewing data flows for GDPR / CCPA / HIPAA fit — regulatory-regime delta, consent shape, breach-impact triage. Triggers on 'is this GDPR-safe', 'do we need a DPA'."
|
|
4
|
+
status: active
|
|
5
|
+
tier: senior
|
|
6
|
+
source: package
|
|
7
|
+
domain: process
|
|
8
|
+
context_spine: [regulatory-regime, customer-segment, product]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# privacy-review
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
- A new feature, integration, or vendor introduces a data flow and the question is *which regulatory regime applies*, *what consent / lawful basis is required*, *what the breach-impact tail looks like*.
|
|
16
|
+
- An existing data flow is being re-scoped (new geography, new customer segment, new processor) and the regulatory-regime delta must be read before the change ships.
|
|
17
|
+
- A customer / counterparty requests a DPA, BAA, or SCC and the question is *what we can credibly sign* given current data-handling reality.
|
|
18
|
+
|
|
19
|
+
Do NOT use as a substitute for qualified privacy counsel (this skill produces the non-lawyer cognition that prepares the counsel conversation), as a contract-level read (route to `contracts-cognition` (P5); P5 composes this skill for data-clause depth), or for privacy-platform SaaS configuration / audit-tool administration.
|
|
20
|
+
|
|
21
|
+
## Cognition cluster
|
|
22
|
+
|
|
23
|
+
- **Mental model 28 — Inversion.** *"What's the worst-case if this data flow leaks, is subpoenaed, or is mis-consented?"* Inversion sizes the regulatory tail before consent / DPA shape is debated. See [`mental-models.md`](../../../docs/contracts/mental-models.md) § 28.
|
|
24
|
+
- **Mental model 1 — First principles.** Strip the data flow to: *who* (data subject), *what* (data category), *why* (lawful basis / purpose), *where* (residency / transfer), *how long* (retention), *who else* (sub-processors). Six primitives anchor every regime delta. See `mental-models.md` § 1.
|
|
25
|
+
- **Mental model 21 — Second-order thinking.** Consent design at signup interacts with marketing automation; retention defaults interact with data-subject-rights workflow; sub-processor chains interact with breach-notification timelines. Each privacy choice has downstream regime obligations. See `mental-models.md` § 21.
|
|
26
|
+
- **Context-spine — regulatory-regime + customer-segment + product.** Read **regulatory-regime** (J1) for the applicable floor (GDPR, CCPA/CPRA, HIPAA, PIPEDA, LGPD, sector-specific). Read **customer-segment** for who the data subjects are (B2C-EU = GDPR primary; US-healthcare = HIPAA primary; B2B-EU-of-US-customers = mixed). Read **product** for which features touch sensitive categories.
|
|
27
|
+
|
|
28
|
+
## Cross-wing handoff
|
|
29
|
+
|
|
30
|
+
- Cites J1 `regulatory-regime` (foundation slot) for the regime floor read; without J1, this skill cannot bind which regime applies.
|
|
31
|
+
- Hands off to P5 `contracts-cognition` for clause-level redlines on DPAs / BAAs / SCCs.
|
|
32
|
+
- Hands off to P7 `data-handling-judgment` for the classification, retention, and cross-border-transfer surface that this skill flags.
|
|
33
|
+
|
|
34
|
+
## Procedure
|
|
35
|
+
|
|
36
|
+
### Step 0: Bind the regulatory-regime floor
|
|
37
|
+
|
|
38
|
+
Read the J1 `regulatory-regime` slot for the customer-segment and geography in scope. For each applicable regime, name:
|
|
39
|
+
|
|
40
|
+
1. *Which data subjects does it protect?* (EU residents → GDPR; California residents → CCPA/CPRA; US patients in covered entities → HIPAA).
|
|
41
|
+
2. *What categories does it gate?* (GDPR special categories; HIPAA PHI; CCPA "sensitive personal information").
|
|
42
|
+
3. *What lawful-basis / consent shape does it require?* (GDPR Art. 6 + Art. 9; HIPAA authorization; CCPA notice + opt-out).
|
|
43
|
+
|
|
44
|
+
Multiple regimes can apply simultaneously; the floor is the strictest applicable.
|
|
45
|
+
|
|
46
|
+
### Step 1: Map the data flow
|
|
47
|
+
|
|
48
|
+
For the feature / integration / vendor in scope, enumerate every hop:
|
|
49
|
+
|
|
50
|
+
1. **Collection** — what data category, from whom, where, with what notice / consent.
|
|
51
|
+
2. **Processing** — who processes (us, sub-processor), where, for what purpose.
|
|
52
|
+
3. **Storage** — where stored (region, system), encrypted at rest, retention default.
|
|
53
|
+
4. **Transfer** — cross-border hops, transfer mechanism (SCC, adequacy, BCR).
|
|
54
|
+
5. **Disclosure** — who sees it (internal roles, third parties, government-access risk).
|
|
55
|
+
6. **Deletion** — retention end-state, data-subject-rights workflow, hard-delete vs soft-delete.
|
|
56
|
+
|
|
57
|
+
A flow without all six hops named is not mapped; it's assumed. Force the enumeration.
|
|
58
|
+
|
|
59
|
+
### Step 2: Compute the regulatory-regime delta
|
|
60
|
+
|
|
61
|
+
For each hop × each applicable regime, name the obligation:
|
|
62
|
+
|
|
63
|
+
1. **Lawful basis / consent** — what's the basis for this hop under this regime; is it documented; is it user-affirmative where required.
|
|
64
|
+
2. **Notice** — what notice was given at the collection hop; does it cover the downstream hops.
|
|
65
|
+
3. **DPA / BAA / SCC** — for each sub-processor / cross-border hop, what contract is required; is it in place.
|
|
66
|
+
4. **Data-subject rights** — for each hop, can we deliver access / deletion / portability / objection within the regime's window.
|
|
67
|
+
5. **Breach-notification surface** — what's the notification timeline (GDPR 72 h, HIPAA 60 d, CCPA varies), to whom, with what content.
|
|
68
|
+
|
|
69
|
+
Gaps = obligations un-met. Surface them, don't smooth them.
|
|
70
|
+
|
|
71
|
+
### Step 3: Consent design read
|
|
72
|
+
|
|
73
|
+
For each lawful-basis claim:
|
|
74
|
+
|
|
75
|
+
1. *Is the basis defensible?* (legitimate-interest balancing test documented; consent freely given / specific / informed / unambiguous; contractual necessity actually necessary).
|
|
76
|
+
2. *Is withdrawal as easy as granting?* (GDPR Art. 7.3; CCPA opt-out parity).
|
|
77
|
+
3. *Are sensitive categories handled with explicit consent / authorization?*
|
|
78
|
+
|
|
79
|
+
Consent-as-checkbox-at-signup is the canonical failure mode. Inversion check: *"if a regulator inspects the consent flow tomorrow, what would they find un-defensible?"*
|
|
80
|
+
|
|
81
|
+
### Step 4: Breach-impact triage
|
|
82
|
+
|
|
83
|
+
For each data category × hop, size the breach tail:
|
|
84
|
+
|
|
85
|
+
1. **Volume** — how many subjects per hop.
|
|
86
|
+
2. **Sensitivity** — special-category / PHI / financial / identity-document presence.
|
|
87
|
+
3. **Notification surface** — 72-hour clock starts when; who notifies (us as controller, vendor as processor); content requirements.
|
|
88
|
+
4. **Regulatory-fine exposure** — GDPR up to 4 % global turnover or €20M; HIPAA tiered; CCPA per-record statutory damages.
|
|
89
|
+
|
|
90
|
+
A hop without a sized breach-tail is unstressed.
|
|
91
|
+
|
|
92
|
+
### Step 5: Validate the privacy read before emitting
|
|
93
|
+
|
|
94
|
+
Before producing the artifact, verify three things:
|
|
95
|
+
|
|
96
|
+
1. **Hop coverage** — confirm all six data-flow hops (collection, processing, storage, transfer, disclosure, deletion) were inspected; silent skips mean the flow was not mapped.
|
|
97
|
+
2. **Regime delta completeness** — assert every applicable regime was checked for lawful basis, notice, DPA/BAA/SCC, data-subject rights, breach notification; un-checked obligations are gaps in disguise.
|
|
98
|
+
3. **Counsel handoff** — verify the artifact explicitly flags which findings need privacy-counsel sign-off vs which are operational decisions; this skill does not replace counsel.
|
|
99
|
+
|
|
100
|
+
All three must pass. If any fails, return to the failing step.
|
|
101
|
+
|
|
102
|
+
### Step 6: Emit the privacy-review note
|
|
103
|
+
|
|
104
|
+
Produce the privacy-review artifact for the feature owner, legal / counsel, and DPO if applicable. The artifact is the non-lawyer cognition that prepares the counsel conversation and gates the ship decision; it is not the legal opinion.
|
|
105
|
+
|
|
106
|
+
## Related Skills
|
|
107
|
+
|
|
108
|
+
**WHEN to use this**
|
|
109
|
+
|
|
110
|
+
- Reviewing a new feature / integration / vendor data flow against applicable regulatory regimes.
|
|
111
|
+
- Re-scoping an existing flow under a new geography, segment, or processor.
|
|
112
|
+
- Sizing the breach-impact tail before a ship decision.
|
|
113
|
+
|
|
114
|
+
**WHEN NOT to use this**
|
|
115
|
+
|
|
116
|
+
- Contract-clause redline depth — route to [`contracts-cognition`](../contracts-cognition/SKILL.md) (P5); P5 composes this skill for data-clause sections.
|
|
117
|
+
- Data-classification / retention / cross-border judgment in isolation — route to [`data-handling-judgment`](../data-handling-judgment/SKILL.md) (P7); P7 is composed by this skill.
|
|
118
|
+
- Regulatory-regime floor read in general — route to `regulatory-regime` (J1); this skill cites J1, doesn't replace it.
|
|
119
|
+
- Legal privacy opinion — route to qualified privacy counsel.
|
|
120
|
+
|
|
121
|
+
## When the agent should load this
|
|
122
|
+
|
|
123
|
+
- "Is this GDPR-safe?"
|
|
124
|
+
- "Do we need a DPA / BAA / SCC for this vendor?"
|
|
125
|
+
- "What's the breach exposure on this data flow?"
|
|
126
|
+
- "Review the consent flow for the new signup."
|
|
127
|
+
- "Wir starten in der EU — was ändert sich datenschutzrechtlich?"
|
|
128
|
+
|
|
129
|
+
## Output
|
|
130
|
+
|
|
131
|
+
1. **`data-flow-map.md`** — six hops × what / who / where / how-long / who-else per hop.
|
|
132
|
+
2. **`regime-delta.md`** — applicable regimes × obligations × gaps per hop.
|
|
133
|
+
3. **`consent-design-note.md`** — lawful-basis defensibility, withdrawal parity, sensitive-category handling.
|
|
134
|
+
4. **`breach-impact-triage.md`** — sized tail per category × hop; notification clock; fine exposure.
|
|
135
|
+
5. **`counsel-handoff.md`** — findings that need counsel sign-off vs operational decisions.
|
|
136
|
+
|
|
137
|
+
## Gotcha
|
|
138
|
+
|
|
139
|
+
- "We're US-only, GDPR doesn't apply" is often wrong; GDPR follows the data subject, not the company.
|
|
140
|
+
- Consent checkboxes pre-ticked at signup are not consent under GDPR; this is a canonical regulator-attention pattern.
|
|
141
|
+
- Sub-processor chains drift silently; a vendor adds a sub-processor 6 months in and your DPA is stale.
|
|
142
|
+
- Retention defaults of "forever" interact badly with data-subject-rights timelines under every regime.
|
|
143
|
+
|
|
144
|
+
## Do NOT
|
|
145
|
+
|
|
146
|
+
- Do NOT issue privacy legal opinions; this skill prepares cognition for counsel, not replaces counsel.
|
|
147
|
+
- Do NOT collapse multiple regimes into the most familiar one; the floor is the strictest applicable.
|
|
148
|
+
- Do NOT skip breach-impact triage; un-stressed flows ship with un-sized tail.
|
|
149
|
+
|
|
150
|
+
## Runnable example
|
|
151
|
+
|
|
152
|
+
Growth-stage SaaS adds an EU customer cohort; existing US-only flow now serves EU data subjects.
|
|
153
|
+
|
|
154
|
+
- Step 0 — Bind regime: GDPR applies (EU data subjects); CCPA still applies for California subset; HIPAA n/a (no PHI).
|
|
155
|
+
- Step 1 — Map flow: collection (signup, EU IP), processing (US-east region), storage (US-east + analytics warehouse), transfer (US-east → analytics vendor in US-west; analytics vendor uses sub-processor in India), disclosure (internal CS team, no third parties), deletion (soft-delete, 7-year retention default).
|
|
156
|
+
- Step 2 — Regime delta: lawful basis missing for analytics (no opt-in); notice doesn't disclose Indian sub-processor; no SCC with analytics vendor; data-subject-rights workflow is manual ticket only; breach-notification process undocumented.
|
|
157
|
+
- Step 3 — Consent: signup checkbox is pre-ticked for marketing — fails Art. 7. Withdrawal requires support email — fails parity.
|
|
158
|
+
- Step 4 — Breach-impact: 12k EU subjects, no special categories, GDPR fine exposure up to 4 % global turnover; 72-hour notification clock with no documented owner.
|
|
159
|
+
- Step 5 — Validate: six hops mapped; both regimes checked; counsel-handoff names SCC + analytics-vendor sub-processor chain + consent UX redesign as counsel-led; retention default + DSR workflow as operational. Pass.
|
|
160
|
+
- Step 6 — Emit privacy-review note; gate EU launch on (a) SCC with analytics vendor; (b) consent UX redesign; (c) DSR workflow with named owner and 30-day window; (d) breach-notification runbook.
|
|
@@ -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`.
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: runway-cognition
|
|
3
|
+
description: "Use when reasoning about cash runway — burn shape, fundraise triggers, layoff-vs-cut-vs-grow decisions. Triggers on 'how long do we have', 'should we raise', 'cut or grow'."
|
|
4
|
+
status: active
|
|
5
|
+
tier: senior
|
|
6
|
+
source: package
|
|
7
|
+
domain: process
|
|
8
|
+
context_spine: [org-stage, fiscal-period, product]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# runway-cognition
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
- A finance-partner or founder needs to read the cash runway as a **shape** (not a single number) and decide whether to raise, cut, or grow.
|
|
16
|
+
- Burn has shifted in a way the prior plan didn't anticipate; the question is whether the shift is structural (revise plan) or transient (hold).
|
|
17
|
+
- A fundraise window is opening or closing; the question is whether to start the process now, in one quarter, or hold and grow.
|
|
18
|
+
- A board / leadership debate has split between *cut to extend runway* and *invest to accelerate*; the framing — not the verdict — is what's missing.
|
|
19
|
+
|
|
20
|
+
Do NOT use for per-customer economics (route to `unit-economics-modeling` (O1)), forecast-call construction (route to `forecasting` (O2)), or multi-statement scenario construction (route to `scenario-modeling` (O4)).
|
|
21
|
+
|
|
22
|
+
## Cognition cluster
|
|
23
|
+
|
|
24
|
+
- **Mental model 21 — Second-order thinking.** *"If we cut here, then ___, and then ___."* Runway decisions are second-order by construction: the first-order effect (extended runway) is trivial; the second-order effect (slower growth → next-round terms → dilution) is the real decision. See [`mental-models.md`](../../../docs/contracts/mental-models.md) § 21.
|
|
25
|
+
- **Mental model 28 — Inversion.** *"What would force a down-round?"* Invert the fundraise question: instead of *"can we raise?"* ask *"what evidence would the market need to fund us at this valuation?"* and work backwards. See `mental-models.md` § 28.
|
|
26
|
+
- **Mental model 16 — Leading vs lagging indicators.** Cash balance is lagging; **net burn trend over the last 3 fiscal-periods** + **pipeline coverage of next-window revenue** are leading. A runway model that reads only cash balance is reading yesterday's weather. See `mental-models.md` § 16.
|
|
27
|
+
- **Context-spine — org-stage + fiscal-period + product.** Read the **org-stage** slot for what bands apply (pre-seed / seed / Series A / Series B+ / growth / public — each has a different "healthy runway" band; do not hardcode 18 months). Read **fiscal-period** for the cadence the runway model rolls forward against. Read **product** for what's GA-shippable in the window — pre-revenue product changes the cognition shape (extend until traction) vs post-revenue (extend until next milestone). See [`context-spine`](../../../docs/contracts/context-spine.md).
|
|
28
|
+
|
|
29
|
+
## Procedure
|
|
30
|
+
|
|
31
|
+
### Step 0: Establish the org-stage band
|
|
32
|
+
|
|
33
|
+
Read the `org-stage` slot. The band selection is the load-bearing
|
|
34
|
+
choice — *not the agent's*. The slot answers it. Use these shapes:
|
|
35
|
+
|
|
36
|
+
- **Pre-seed / seed** → the band is "next milestone + buffer", not a fixed month count. Milestone = the evidence the next round will fund.
|
|
37
|
+
- **Series A** → the band is "to product-market-fit signal + buffer". Buffer ≥ one fundraise cycle (typically 6–9 months in the org's segment).
|
|
38
|
+
- **Series B+ / growth** → the band is "to next funding milestone with metric-driven evidence" (NRR, gross margin, growth rate). Buffer = one quarterly cycle.
|
|
39
|
+
- **Public / cash-flow positive** → runway converges to "operating cash + facility headroom"; the cognition shifts to working-capital reasoning.
|
|
40
|
+
|
|
41
|
+
If the slot is missing or contested, STOP and ask once. Do not infer from prose.
|
|
42
|
+
|
|
43
|
+
### Step 1: Compute the burn shape, not the number
|
|
44
|
+
|
|
45
|
+
1. Net burn = net cash out over the last 3 fiscal-periods. Use 3 windows, not 1 — single-window burn is noise.
|
|
46
|
+
2. **Burn trend**: flat / accelerating / decelerating. Compute the slope. Accelerating burn is the leading indicator; flat burn at a high number is the lagging confirmation.
|
|
47
|
+
3. **Burn-multiple** (cross-cite O1 `unit-economics-modeling` Step 5): net burn / net new ARR over the same windows. Read direction across the 3 windows, not the point estimate.
|
|
48
|
+
|
|
49
|
+
Output is a shape: *"net burn $X/mo, decelerating over last 3 quarters; burn-multiple 2.4 → 1.8 → 1.3."*
|
|
50
|
+
|
|
51
|
+
### Step 2: Inspect runway against the band
|
|
52
|
+
|
|
53
|
+
1. Compute months-of-runway = cash / current-burn at three burn assumptions: status-quo, +20% (overspend scenario), −20% (cuts taken).
|
|
54
|
+
2. Compare each to the **band-appropriate target** from Step 0. Do not compare to a fixed "18 months" — that's a Series-A heuristic that mis-fires at every other stage.
|
|
55
|
+
3. Verdict shape: *"at status-quo burn, we have X months vs the Y-month band; gap is Z months."* Gap, not absolute number.
|
|
56
|
+
|
|
57
|
+
### Step 3: Decide on the fundraise question (or refuse to)
|
|
58
|
+
|
|
59
|
+
Three honest answers; pick one:
|
|
60
|
+
|
|
61
|
+
1. **Raise now** — gap is closing into the band's lower bound, and at least one fundraise-trigger condition fires (revenue milestone hit, segment proof point demonstrable, founder bandwidth available). Cross-cite Wing-3 `fundraising-narrative` (H7) for external-pitch shape.
|
|
62
|
+
2. **Hold and grow** — gap is comfortably inside the band AND the leading indicators (Step 1 burn-multiple direction + pipeline coverage of next-window revenue) are improving. Do not raise into a comfortable runway; the dilution math doesn't justify it.
|
|
63
|
+
3. **Refuse to answer** — the gap is in the band's noise but no leading indicator has direction. The honest answer is *"I'm not ready to call this; tell me what to measure for two windows."*
|
|
64
|
+
|
|
65
|
+
A *cut* (Step 4) is not an answer to the fundraise question; it's a separate decision.
|
|
66
|
+
|
|
67
|
+
### Step 4: Decide on layoff-vs-cut-vs-grow
|
|
68
|
+
|
|
69
|
+
1. **Grow** — leading indicators improving + band has headroom. The cut math is dilutive (every $ cut here is a $ of capacity not built).
|
|
70
|
+
2. **Cut non-headcount** — leading indicators flat + band tightening. Tooling / contractors / venues / paid-marketing / unused real-estate first.
|
|
71
|
+
3. **Cut headcount** — band tightening into the lower bound AND leading indicators flat-or-worsening for ≥ 2 windows. Smallest cut that moves the band by ≥ 1 buffer-cycle is the right cut. *"Across-the-board 10 %"* is the failure mode — it cuts what's already efficient at the same rate as what's not.
|
|
72
|
+
|
|
73
|
+
The premortem (mental-model 29): *"if we lay off and the leading indicators don't improve, what did we just lose?"* If the answer is "the people who would have moved the indicators", the cut is wrong.
|
|
74
|
+
|
|
75
|
+
### Step 5: Emit the runway frame
|
|
76
|
+
|
|
77
|
+
Produce `runway-frame.md` — the typed artifact `scenario-modeling` (O4) reads as its runway input. Per `docs/guidelines/wing4-handoff.md` § Chain 1 / Chain 3.
|
|
78
|
+
|
|
79
|
+
## Related Skills
|
|
80
|
+
|
|
81
|
+
**WHEN to use this**
|
|
82
|
+
|
|
83
|
+
- The question is cash-runway shape, fundraise-timing, or cut-vs-grow.
|
|
84
|
+
- The decision is whether to raise, hold, or cut — at this org-stage.
|
|
85
|
+
|
|
86
|
+
**WHEN NOT to use this**
|
|
87
|
+
|
|
88
|
+
- Per-customer economics (CAC / LTV / payback) — route to [`unit-economics-modeling`](../unit-economics-modeling/SKILL.md) (O1).
|
|
89
|
+
- Forecast-call construction (top-down vs bottom-up) — route to [`forecasting`](../forecasting/SKILL.md) (O2).
|
|
90
|
+
- Three-statement scenario construction — route to [`scenario-modeling`](../scenario-modeling/SKILL.md) (O4).
|
|
91
|
+
- External fundraise narrative — route to Wing-3 [`fundraising-narrative`](../fundraising-narrative/SKILL.md) (H7); cite for pitch shape.
|
|
92
|
+
- People decisions (layoff process, communication, severance) — route to Wing-4 [`org-design`](../org-design/SKILL.md) (Q1) for shape; people-strategist owns process.
|
|
93
|
+
|
|
94
|
+
Wing-4 handoff: this skill reads `forecast-band.json` from O2 and
|
|
95
|
+
`unit-economics-frame.md` from O1; emits `runway-frame.md` consumed
|
|
96
|
+
by O4. Per `docs/guidelines/wing4-handoff.md` § Chain 1.
|
|
97
|
+
|
|
98
|
+
## When the agent should load this
|
|
99
|
+
|
|
100
|
+
- "How long is our runway?"
|
|
101
|
+
- "Should we raise now or hold?"
|
|
102
|
+
- "Do we need to cut, and if so what?"
|
|
103
|
+
- "Wie lange reicht das Geld noch?"
|
|
104
|
+
- "Sind wir noch im sicheren Band für die Stage?"
|
|
105
|
+
|
|
106
|
+
## Output
|
|
107
|
+
|
|
108
|
+
1. **`runway-frame.md`** *(Wing-4 handoff)* — org-stage, fiscal-period, current cash, net-burn trend (flat / accel / decel), burn-multiple direction, months-of-runway at 3 burn assumptions, band-appropriate target, gap, fundraise verdict (raise / hold / refuse), cut-vs-grow verdict.
|
|
109
|
+
2. **`burn-shape.md`** — last 3 fiscal-periods net burn + burn-multiple, with trend annotation.
|
|
110
|
+
3. **`fundraise-decision.md`** — which of the three verdicts (raise / hold / refuse), leading indicators read, premortem if "raise".
|
|
111
|
+
4. **`cut-or-grow.md`** *(only if cut verdict)* — non-headcount cuts first, headcount-cut shape if required, premortem on each cut.
|
|
112
|
+
|
|
113
|
+
## Gotcha
|
|
114
|
+
|
|
115
|
+
- "18 months runway" is a Series-A heuristic; applying it to seed (where milestone matters more than month count) or growth (where metric milestones matter more) silently mis-frames the decision.
|
|
116
|
+
- Single-window net burn is noise. Always 3 windows.
|
|
117
|
+
- Burn-multiple direction matters more than the point estimate. A 3.0 going to 2.0 is healthier than a 1.8 going to 2.4.
|
|
118
|
+
- Raising into a comfortable runway is dilutive theatre — *"we have 18 months so we should raise now"* doesn't survive a second-order check.
|
|
119
|
+
- *Across-the-board* cuts cut efficient teams at the same rate as inefficient ones. The smallest targeted cut that moves the band wins.
|
|
120
|
+
|
|
121
|
+
## Do NOT
|
|
122
|
+
|
|
123
|
+
- Do NOT compare months-of-runway against a fixed number; always against the band-appropriate target from Step 0.
|
|
124
|
+
- Do NOT answer the fundraise question without checking leading indicators (Step 1 + pipeline coverage).
|
|
125
|
+
- Do NOT collapse cut-vs-grow into a single "extend runway" verdict — they're separate decisions with separate evidence.
|
|
126
|
+
|
|
127
|
+
## Runnable example
|
|
128
|
+
|
|
129
|
+
Series-A SaaS, $4.2M cash, fiscal-period quarterly.
|
|
130
|
+
|
|
131
|
+
- Step 0 — `org-stage = series-a`. Band: "to PMF signal + buffer 6–9 months". Target = NRR > 110 % + segment proof + 9-month cycle ≈ 12–15 months.
|
|
132
|
+
- Step 1 — net burn last 3 quarters: $480k / $510k / $560k → accelerating. Burn-multiple: 2.1 → 1.9 → 1.7 → improving despite accel-burn (revenue catching up).
|
|
133
|
+
- Step 2 — at status-quo $560k/mo: 7.5 months runway. Target band 12–15 months. Gap = 4.5–7.5 months below band.
|
|
134
|
+
- Step 3 — verdict = **raise now**. Gap closes into lower-bound; segment-proof demonstrable; burn-multiple direction is the credible story. Cross-cite H7 for pitch.
|
|
135
|
+
- Step 4 — grow (don't cut). Cutting now would kill the burn-multiple-improvement story; the cut math is dilutive vs the raise.
|
|
136
|
+
- Step 5 — emit `runway-frame.md`: `org-stage=series-a, gap=-5mo, fundraise=raise, cut-or-grow=grow, premortem="if raise fails by Q3, structural cut to non-headcount + extend by 4 months"`.
|