@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.
Files changed (76) hide show
  1. package/.agent-src/personas/cmo.md +122 -0
  2. package/.agent-src/personas/customer-success-lead.md +126 -0
  3. package/.agent-src/personas/engineering-manager.md +133 -0
  4. package/.agent-src/personas/finance-partner.md +129 -0
  5. package/.agent-src/personas/growth-pm.md +134 -0
  6. package/.agent-src/personas/people-strategist.md +126 -0
  7. package/.agent-src/personas/revops.md +125 -0
  8. package/.agent-src/personas/strategist.md +129 -0
  9. package/.agent-src/skills/activation-design/SKILL.md +160 -0
  10. package/.agent-src/skills/build-buy-partner/SKILL.md +145 -0
  11. package/.agent-src/skills/churn-prevention/SKILL.md +156 -0
  12. package/.agent-src/skills/comp-banding/SKILL.md +160 -0
  13. package/.agent-src/skills/competitive-moat-analysis/SKILL.md +152 -0
  14. package/.agent-src/skills/content-funnel-design/SKILL.md +170 -0
  15. package/.agent-src/skills/contracts-cognition/SKILL.md +147 -0
  16. package/.agent-src/skills/data-handling-judgment/SKILL.md +155 -0
  17. package/.agent-src/skills/deal-qualification-meddic/SKILL.md +165 -0
  18. package/.agent-src/skills/editorial-calendar/SKILL.md +161 -0
  19. package/.agent-src/skills/expansion-playbook/SKILL.md +171 -0
  20. package/.agent-src/skills/forecast-accuracy/SKILL.md +157 -0
  21. package/.agent-src/skills/forecasting/SKILL.md +164 -0
  22. package/.agent-src/skills/fundraising-narrative/SKILL.md +189 -0
  23. package/.agent-src/skills/funnel-analysis/SKILL.md +26 -2
  24. package/.agent-src/skills/gtm-launch/SKILL.md +165 -0
  25. package/.agent-src/skills/hiring-loop-design/SKILL.md +167 -0
  26. package/.agent-src/skills/market-entry-analysis/SKILL.md +144 -0
  27. package/.agent-src/skills/messaging-architecture/SKILL.md +184 -0
  28. package/.agent-src/skills/onboarding-design/SKILL.md +158 -0
  29. package/.agent-src/skills/onboarding-program/SKILL.md +157 -0
  30. package/.agent-src/skills/one-on-one-cadence/SKILL.md +161 -0
  31. package/.agent-src/skills/org-design/SKILL.md +158 -0
  32. package/.agent-src/skills/perf-feedback-craft/SKILL.md +157 -0
  33. package/.agent-src/skills/pipeline-strategy/SKILL.md +159 -0
  34. package/.agent-src/skills/positioning-strategy/SKILL.md +177 -0
  35. package/.agent-src/skills/privacy-review/SKILL.md +160 -0
  36. package/.agent-src/skills/retention-loops/SKILL.md +161 -0
  37. package/.agent-src/skills/runway-cognition/SKILL.md +136 -0
  38. package/.agent-src/skills/scenario-modeling/SKILL.md +139 -0
  39. package/.agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  40. package/.agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +165 -0
  41. package/.agent-src/skills/unit-economics-modeling/SKILL.md +54 -7
  42. package/.agent-src/skills/vision-articulation/SKILL.md +146 -0
  43. package/.agent-src/skills/voice-and-tone-design/SKILL.md +163 -0
  44. package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  45. package/.agent-src/templates/scripts/telemetry/settings.py +65 -0
  46. package/.agent-src/templates/scripts/tier_usage_report.py +183 -0
  47. package/.claude-plugin/marketplace.json +34 -2
  48. package/AGENTS.md +1 -1
  49. package/CHANGELOG.md +135 -153
  50. package/README.md +3 -3
  51. package/docs/architecture.md +37 -11
  52. package/docs/archive/CHANGELOG-pre-2.7.0.md +185 -0
  53. package/docs/catalog.md +38 -4
  54. package/docs/contracts/adr-forecast-construction-shape.md +89 -0
  55. package/docs/contracts/adr-gtm-context-spine.md +115 -0
  56. package/docs/contracts/adr-wing4-context-spine.md +125 -0
  57. package/docs/contracts/command-clusters.md +41 -0
  58. package/docs/contracts/command-surface-tiers.md +30 -9
  59. package/docs/contracts/context-spine.md +58 -12
  60. package/docs/contracts/cross-wing-handoff.md +3 -3
  61. package/docs/contracts/mcp-beta-criteria.md +129 -0
  62. package/docs/contracts/persona-schema.md +20 -3
  63. package/docs/guidelines/gtm-handoff.md +114 -0
  64. package/docs/guidelines/wing4-handoff.md +127 -0
  65. package/docs/mcp-server.md +1 -1
  66. package/package.json +1 -1
  67. package/scripts/_cli/cmd_doctor.py +527 -14
  68. package/scripts/_cli/cmd_validate.py +10 -0
  69. package/scripts/agent-config +19 -18
  70. package/scripts/install.py +5 -0
  71. package/scripts/lint_context_spine_usage.py +5 -1
  72. package/scripts/mcp_server/__init__.py +1 -0
  73. package/scripts/mcp_server/server.py +4 -3
  74. package/scripts/schemas/persona.schema.json +5 -0
  75. package/scripts/schemas/skill.schema.json +2 -2
  76. package/scripts/skill_linter.py +284 -6
@@ -0,0 +1,161 @@
1
+ ---
2
+ name: editorial-calendar
3
+ description: "Use when shaping cadence — evergreen / campaign / reactive split, beat-mapping across channel stages, content-debt management. Triggers on 'plan our content cadence', 'what should we publish'."
4
+ status: active
5
+ tier: senior
6
+ source: package
7
+ domain: product
8
+ context_spine: [product, customer-segment, channel-stage, funnel-stage]
9
+ ---
10
+
11
+ # editorial-calendar
12
+
13
+ ## When to use
14
+
15
+ - A content programme is producing assets in bursts (campaign-shaped only) and the cadence is brittle the quarter the campaign rests.
16
+ - The team owes more drafts than it can ship and the backlog is functioning as content-debt rather than queue — surface and prioritise.
17
+ - A new audience-by-message matrix exists and the team needs to translate it into a repeating cadence with beat-mapping across channel stages.
18
+
19
+ Do NOT use to draft the asset itself (downstream), pick channel-
20
+ specific tactics like ad creative or email subject lines (out of
21
+ scope — channel-agnostic skill), or sequence a one-off launch wave
22
+ (route to `gtm-launch`).
23
+
24
+ ## Cognition cluster
25
+
26
+ - **Mental model 3 — Pareto principle (80/20).** Roughly 20 % of
27
+ the editorial beats produce 80 % of the audience pull. The
28
+ calendar is the discipline of doubling down on the 20 % and
29
+ letting the 80 % be reactive, not core. See
30
+ [`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 3.
31
+ - **Mental model 18 — Pull vs. push systems.** Evergreen content is
32
+ a *pull* system (the audience finds it); campaigns are a *push*
33
+ system (we time the arrival). The calendar separates the two so
34
+ campaign collapse does not collapse pull. See `mental-models.md`
35
+ § 18.
36
+ - **Context-spine — product + customer-segment + channel-stage +
37
+ funnel-stage.** Read **product** for what is shippable as proof,
38
+ **customer-segment** for who reads which beat, **channel-stage**
39
+ for where the audience is in the awareness arc, and
40
+ **funnel-stage** for whether a beat is top-of-funnel reach or
41
+ mid-funnel proof. See
42
+ [`context-spine`](../../../docs/contracts/context-spine.md).
43
+
44
+ ## Procedure
45
+
46
+ ### Step 0: Inherit the message stack and audience matrix
47
+
48
+ Identify the locked `primary-message.md`, `supporting-proofs.md`,
49
+ and `audience-matrix.md` from
50
+ [`messaging-architecture`](../messaging-architecture/SKILL.md). The
51
+ editorial calendar is a cadence translation of the matrix; without
52
+ the matrix it is content-as-impulse, not content-as-system.
53
+
54
+ ### Step 1: Analyze the inherited cadence
55
+
56
+ Review existing surfaces: what has the team published in the last
57
+ two quarters, what is its evergreen pull (organic traffic over
58
+ time), and what was campaign-only (a single spike and decay). The
59
+ output is two lists: *load-bearing evergreen* and *campaign
60
+ artefacts that have already paid back*. Everything else is content
61
+ debt — name it explicitly.
62
+
63
+ ### Step 2: Classify each beat — evergreen · campaign · reactive
64
+
65
+ Three buckets, never collapsed:
66
+
67
+ - **Evergreen.** Beats that map to a load-bearing proof and a
68
+ durable audience question. Authored once, refreshed quarterly.
69
+ Pull system.
70
+ - **Campaign.** Beats keyed to a wave (launch, event, season).
71
+ Authored to a date. Push system. Decommissioned by name when the
72
+ wave closes.
73
+ - **Reactive.** Beats keyed to a market or competitor event. No
74
+ pre-allocated slot; the calendar reserves *capacity*, not a
75
+ topic.
76
+
77
+ ### Step 3: Beat-map across channel-stage × funnel-stage
78
+
79
+ For each audience in the matrix, plot **one** evergreen beat per
80
+ *(channel-stage, funnel-stage)* cell that the audience actually
81
+ lives in. Empty cells are explicit gaps; they do not auto-fill.
82
+ Beats per cell beyond one are content noise, not coverage.
83
+
84
+ ### Step 4: Validate against the Pareto cut and the pull-vs-push line
85
+
86
+ Validate the calendar on three checks:
87
+
88
+ 1. **Pareto cut.** Identify the 20 % of beats that, if dropped,
89
+ would visibly shrink audience pull. Verify exactly that 20 % has
90
+ the highest authoring investment. If high investment is going
91
+ into the 80 %, the calendar is upside-down — rebalance.
92
+ 2. **Pull-vs-push separation.** Confirm campaign collapse does not
93
+ collapse evergreen — evergreen surfaces are not on the campaign
94
+ author's critical path.
95
+ 3. **Reactive capacity.** Confirm reactive slots reserve hours, not
96
+ topics. A reactive slot with a pre-decided topic is a campaign
97
+ in disguise.
98
+
99
+ ### Step 5: Manage content debt explicitly
100
+
101
+ Inventory the debt list from Step 1. For each item: *repay*
102
+ (refresh and republish), *archive* (remove from indexed surfaces),
103
+ or *retire* (delete). Untouched debt compounds — it is not free to
104
+ leave on the shelf.
105
+
106
+ ### Step 6: Hand back
107
+
108
+ Hand the artefacts to [`content-funnel-design`](../content-funnel-design/SKILL.md)
109
+ for funnel-stage-to-shape mapping, and to
110
+ [`release-comms`](../release-comms/SKILL.md) when campaign waves
111
+ land near a launch wave from
112
+ [`gtm-launch`](../gtm-launch/SKILL.md).
113
+
114
+ ## Related Skills
115
+
116
+ **WHEN to use this**
117
+
118
+ - The unit of work is the *cadence* (which beats repeat at which frequency on which surface), not a single asset.
119
+ - A team is over-investing in campaigns and under-investing in evergreen pull.
120
+ - A content-debt list is silently growing and needs explicit repay / archive / retire decisions.
121
+
122
+ **WHEN NOT to use this**
123
+
124
+ - Mapping each funnel stage to a content **shape** (deep-dive, comparison, demo) — route to [`content-funnel-design`](../content-funnel-design/SKILL.md).
125
+ - Drafting voice attributes or tone-by-context matrix — route to [`voice-and-tone-design`](../voice-and-tone-design/SKILL.md).
126
+ - Sequencing a launch wave with gates and beats — route to [`gtm-launch`](../gtm-launch/SKILL.md).
127
+ - Authoring the asset copy — out of scope here (downstream).
128
+
129
+ ## When the agent should load this
130
+
131
+ - "Build us an editorial calendar for the next two quarters."
132
+ - "Wir produzieren zu viele Kampagnen-Artefakte — wo ist die Evergreen-Linie?"
133
+ - "Beat-map the cadence against the audience matrix."
134
+ - "What is our content-debt list and what do we repay first?"
135
+ - "Reactive capacity is full of pre-planned topics — fix the calendar."
136
+
137
+ ## Output
138
+
139
+ 1. **`cadence-classification.md`** — every active beat tagged evergreen · campaign · reactive · debt, with the Pareto-cut ranking inside the evergreen bucket.
140
+ 2. **`beat-map.md`** — audience × channel-stage × funnel-stage grid with one evergreen beat per occupied cell, empty cells explicitly named as gaps.
141
+ 3. **`content-debt-ledger.md`** — every debt item with a *repay*, *archive*, or *retire* decision and the date it lapses.
142
+
143
+ ## Gotcha
144
+
145
+ - "We are evergreen-first" is the most common self-description and almost never true on the calendar — verify by authoring investment, not intent.
146
+ - Reactive capacity that is full of pre-planned topics is campaign capacity wearing reactive clothing; the calendar will betray that mid-quarter.
147
+ - Content debt with no archive / retire date is a roadmap pretending to be a queue. Refuse the open-ended *"we will get to it"* row.
148
+
149
+ ## Do NOT
150
+
151
+ - Do NOT draft channel-specific tactics (subject lines, ad creative, video specs) — the calendar is channel-agnostic; tactics live with the channel owner.
152
+ - Do NOT collapse campaign and evergreen on the same critical path — campaign delay should not stall evergreen publish.
153
+ - Do NOT inflate beats past one per matrix cell; the cadence will not survive a quarter of vacation.
154
+
155
+ ## Runnable example
156
+
157
+ Mid-market HR analytics tool, audience matrix locked (HR director · CFO · IT-security):
158
+
159
+ - Cadence classification — evergreen (4 beats, Pareto-cut top 2 carry pull); campaign (2 beats keyed to board-quarter launch wave); reactive (8 hours per fortnight reserved); debt (11 items: 5 repay, 4 archive, 2 retire).
160
+ - Beat-map — HR director (mid-funnel proof): one cohort-retention deep-dive per quarter. CFO (decision-funnel proof): one ROI calculator refresh per board-quarter. IT-security (top-funnel awareness): one HRIS-integration architecture explainer evergreen.
161
+ - Hand-off → `content-funnel-design` translates each beat into its content shape; `release-comms` co-schedules board-quarter campaign with launch waves.
@@ -0,0 +1,171 @@
1
+ ---
2
+ name: expansion-playbook
3
+ description: "Use when designing account-expansion mechanics — upsell vs cross-sell, expansion-trigger signals, NRR cognition. Triggers on 'lift NRR', 'when do we upsell vs cross-sell'."
4
+ status: active
5
+ tier: senior
6
+ source: package
7
+ domain: product
8
+ context_spine: [product, customer-segment]
9
+ ---
10
+
11
+ # expansion-playbook
12
+
13
+ ## When to use
14
+
15
+ - Net Revenue Retention plateaued and the team cannot name *which* expansion lever drives it — upsell, cross-sell, and seat-expansion get conflated under *"NRR"* and the moves are uniform when they should be lever-specific.
16
+ - An expansion play is firing on usage signals alone — accounts using more seats are treated as expansion targets without checking the upstream pain that earned the expansion.
17
+ - A new pricing or packaging change is live and the team needs to re-key the expansion triggers to the new shape before the old triggers misfire.
18
+
19
+ Do NOT use to save churning accounts (route to
20
+ `churn-prevention`), design days 0–30 onboarding (route to
21
+ `onboarding-design`), or build product-led seat-expansion loops
22
+ unattended by a human play (route to `retention-loops`).
23
+
24
+ ## Cognition cluster
25
+
26
+ - **Mental model 18 — Pull vs. push.** Expansion that the buyer
27
+ pulls (because pain or scope grew) compounds; expansion the
28
+ vendor pushes (because the quarter needs the number) corrodes
29
+ the relationship and inflates churn the next cycle. Pick the
30
+ trigger that signals pull. See
31
+ [`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 18.
32
+ - **Mental model 9 — Hypothesis-driven thinking.** Each expansion
33
+ trigger is a hypothesis: *"if signal X is true, the buyer will
34
+ accept expansion Y at price Z."* Triggers without falsification
35
+ evidence are wishes; if a trigger has misfired three times, the
36
+ trigger is wrong, not the buyer. See `mental-models.md` § 9.
37
+ - **Mental model 3 — Pareto (80/20).** ~20 % of accounts carry
38
+ ~80 % of expansion potential. Uniform expansion outreach across
39
+ the book is noise; weighted outreach by pull-signal strength is
40
+ reasoning. See `mental-models.md` § 3.
41
+ - **Context-spine — product + customer-segment.** Read the
42
+ **product** slot for which capabilities the segment can absorb
43
+ next (sequencing matters — a cross-sell into a feature the
44
+ segment cannot use yet inflates churn), and the
45
+ **customer-segment** slot for switch-event patterns that signal
46
+ organic scope expansion. See
47
+ [`context-spine`](../../../docs/contracts/context-spine.md).
48
+
49
+ ## Procedure
50
+
51
+ ### Step 0: Inspect — separate upsell, cross-sell, seat-expansion
52
+
53
+ Inspect the trailing four quarters of expansion $ and decompose:
54
+
55
+ 1. **Upsell** — same product family, higher tier (more seats at same SKU, premium tier of same SKU).
56
+ 2. **Cross-sell** — different product family or SKU.
57
+ 3. **Seat-expansion** — same SKU, more users, no tier change.
58
+
59
+ Compute each lever's $ contribution and NRR contribution. A book
60
+ treating these as one number cannot diagnose which lever is
61
+ broken.
62
+
63
+ ### Step 1: Define one expansion trigger per lever, pull-signalled
64
+
65
+ Each trigger is a *buyer-side pull signal* with falsifiable
66
+ evidence:
67
+
68
+ 1. **Upsell trigger** — buyer crosses tier-defining usage ceiling
69
+ (e.g. seats > X, or feature-X-usage > Y) sustained for ≥ 30 days.
70
+ 2. **Cross-sell trigger** — buyer requests a capability that lives
71
+ in an adjacent SKU **twice in 60 days**, by two different
72
+ contacts, in writing.
73
+ 3. **Seat-expansion trigger** — admin invites N new users in a
74
+ rolling 30-day window AND health-score (from `churn-prevention`)
75
+ is green.
76
+
77
+ Triggers that misfire three times in a quarter become Step 0
78
+ diagnoses next quarter; do not patch them inside the quarter.
79
+
80
+ ### Step 2: Map lever → play
81
+
82
+ Each lever gets one default play and one disqualifier:
83
+
84
+ - **Upsell** — quarterly business review surfacing the usage
85
+ ceiling; tier-upgrade proposal with proof-of-value. Disqualifier:
86
+ account on red health score (route to `churn-prevention`).
87
+ - **Cross-sell** — capability-fit discovery call with sponsor +
88
+ user; pilot before contract change. Disqualifier: cross-sell SKU
89
+ not GA for the segment.
90
+ - **Seat-expansion** — admin co-pilot session + group onboarding
91
+ for new seats. Disqualifier: utilisation on existing seats
92
+ < 40 % (you would be selling decay).
93
+
94
+ ### Step 3: Sequence multi-lever opportunities
95
+
96
+ If two triggers fire on the same account in the same quarter:
97
+ sequence **upsell before cross-sell** (compound the contract the
98
+ buyer already believes in) **before seat-expansion** (the most
99
+ fragile lever — easiest to inflate, easiest to lose). Two plays
100
+ fired in parallel signal vendor-push and corrode the relationship.
101
+
102
+ ### Step 4: Compute NRR by lever and verify against the dilution check
103
+
104
+ NRR = (start-ARR + expansion − churn − contraction) ÷ start-ARR,
105
+ per cohort. Decompose expansion into the three levers. **Verify**
106
+ each trigger's pull-signal is intact: confirm the buyer-side
107
+ artefact (usage ceiling crossed, written request, admin invite)
108
+ exists in instrumentation; a lever whose triggers cannot be
109
+ verified against artefacts is push-expansion mislabelled as pull,
110
+ and the next cycle's churn will return the revenue. A book hitting
111
+ 115 % NRR via seat-expansion only is more fragile than a book
112
+ hitting 110 % via upsell + cross-sell — fragility shows up in the
113
+ next cycle's churn, not this one's revenue line.
114
+
115
+ ### Step 5: Hand back
116
+
117
+ Hand the lever decomposition, the three pull-signalled triggers,
118
+ and the per-lever play to CS / AM operations and to
119
+ [`forecast-accuracy`](../forecast-accuracy/SKILL.md) for the
120
+ expansion side of the forecast call. NRR work without lever
121
+ separation is spending in random directions.
122
+
123
+ ## Related Skills
124
+
125
+ **WHEN to use this**
126
+
127
+ - Decomposing NRR into upsell · cross-sell · seat-expansion levers.
128
+ - Defining pull-signalled triggers and per-lever plays.
129
+
130
+ **WHEN NOT to use this**
131
+
132
+ - Saving accounts likely to churn — route to
133
+ [`churn-prevention`](../churn-prevention/SKILL.md).
134
+ - Designing days 0–30 onboarding milestones — route to
135
+ [`onboarding-design`](../onboarding-design/SKILL.md).
136
+ - Product-led, vendor-unattended seat growth loops — route to
137
+ [`retention-loops`](../retention-loops/SKILL.md).
138
+
139
+ ## When the agent should load this
140
+
141
+ - "Lift our NRR — which lever?"
142
+ - "When do we cross-sell vs upsell account X?"
143
+ - "Why does our expansion churn back inside the next cycle?"
144
+ - "Welcher Expansion-Trigger ist eigentlich pull, nicht push?"
145
+
146
+ ## Output
147
+
148
+ 1. **`lever-decomposition.md`** — trailing-quarter expansion $ split into upsell · cross-sell · seat-expansion with NRR contribution per lever.
149
+ 2. **`expansion-triggers.md`** — one pull-signalled trigger per lever · falsifiable evidence · misfire counter.
150
+ 3. **`lever-play-map.md`** — per-lever default play · disqualifier · sequencing rule for multi-trigger accounts.
151
+
152
+ ## Gotcha
153
+
154
+ - A trigger that fires on usage alone, without separating *pain growth* from *consumption growth*, will push when it should pull. Push-expansion lifts this quarter and depresses the next.
155
+ - Seat-expansion looks like the easiest lever and is the most fragile — easy to inflate by selling seats into accounts whose existing seats are under-utilised; the contraction lands one cycle later.
156
+ - *"Strategic"* cross-sell into a capability the segment is not yet ready to use buys revenue and pays for it in churn — segment-readiness is the gate, not vendor-side ambition.
157
+
158
+ ## Do NOT
159
+
160
+ - Do NOT fire multiple expansion plays in parallel on one account; sequence per Step 3.
161
+ - Do NOT count seat-expansion at < 40 % existing-seat utilisation as expansion; it is selling decay.
162
+ - Do NOT chase NRR target without lever decomposition; the headline number can be hit by the most fragile lever.
163
+
164
+ ## Runnable example
165
+
166
+ Mid-market SaaS, NRR 112 % last quarter, churn ticked up this quarter.
167
+
168
+ - Lever decomposition — upsell 35 %, cross-sell 18 %, seat-expansion 47 % of expansion $. Seat-expansion-led growth flagged as fragile.
169
+ - Triggers — *(1)* upsell trigger: seats > 50 sustained 30+ days (band 28–42 % conversion). *(2)* cross-sell: capability request twice in 60 days from two contacts (band 41–61 % conversion). *(3)* seat-expansion: admin invites ≥ 10 new users in 30 days AND green health (band 52–68 % conversion); misfire count for the quarter: 4 — trigger flagged for Step 0 re-diagnosis next quarter.
170
+ - Lever-play map — upsell QBR + tier proposal, disqualified for 3 red-health accounts; cross-sell pilot blocked for 2 accounts where SKU not yet GA-ready for mid-market.
171
+ - Hand-off — decomposition + triggers → CS / AM ops; sequencing rule live; expansion side of `forecast-accuracy` rebuilt on lever-weighted historical close rates.
@@ -0,0 +1,157 @@
1
+ ---
2
+ name: forecast-accuracy
3
+ description: "Use when constructing the forecast call — commit / best-case / pipeline categorisation, deal-level evidence test, accuracy retro-loop. Triggers on 'build the forecast', 'why does our commit miss'."
4
+ status: active
5
+ tier: senior
6
+ source: package
7
+ domain: product
8
+ context_spine: [product, customer-segment]
9
+ ---
10
+
11
+ # forecast-accuracy
12
+
13
+ ## When to use
14
+
15
+ - The quarterly forecast call is being constructed and the team needs a categorisation rule that survives retro — not a feel-good number that flatters this week.
16
+ - Commit has missed two or more quarters and nobody can name which signals broke — the retro-loop is missing or the categorisation rule is unwritten.
17
+ - A new RevOps lead inherits a pipeline and needs to rebuild the forecast call without inheriting last regime's optimism bias.
18
+
19
+ Do NOT use to design pipeline stages (route to
20
+ `pipeline-strategy`), qualify a single deal (route to
21
+ `deal-qualification-meddic`), or build the finance-side
22
+ top-down / bottom-up model (composes against — but does not
23
+ duplicate — the finance-partner forecasting capability,
24
+ via the `forecast-construction-shape` interface).
25
+
26
+ ## Cognition cluster
27
+
28
+ - **Mental model 16 — Leading vs. lagging indicators.** Closed-won
29
+ is lagging; per-stage conversion and MEDDIC-slot completeness
30
+ are leading. A forecast built on lagging signals can only confirm
31
+ the result after it lands. See
32
+ [`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 16.
33
+ - **Mental model 29 — Premortem.** Before locking the call, write
34
+ the post-quarter retro as if commit missed by 20 %. The premortem
35
+ surfaces which categorisations are riding on weak evidence; demote
36
+ those before the call locks. See `mental-models.md` § 29.
37
+ - **Mental model 9 — Hypothesis-driven thinking.** Each commit deal
38
+ carries a falsifiable claim: *"this closes by \<date\> because
39
+ \<evidence\>."* If the claim cannot be falsified inside the
40
+ quarter, the deal is best-case, not commit. See
41
+ `mental-models.md` § 9.
42
+ - **Context-spine — product + customer-segment.** Read the
43
+ **product** slot for what is actually GA-shippable this quarter
44
+ (deals depending on non-shipped scope are not commit), and the
45
+ **customer-segment** slot for segment-historical close rates —
46
+ pricing-power and cycle-length differ by segment and the forecast
47
+ must too. See
48
+ [`context-spine`](../../../docs/contracts/context-spine.md).
49
+
50
+ ## Procedure
51
+
52
+ ### Step 0: Inspect — inherit pipeline + qualification artefacts
53
+
54
+ Pull `stage-definitions.md`, `coverage-by-cell.md` from
55
+ `pipeline-strategy`, and the latest `meddic-card.md` per deal from
56
+ `deal-qualification-meddic`. Inspect whether each commit-candidate
57
+ deal carries falsifiable evidence per MEDDIC slot — a forecast
58
+ built without that inspection is rep opinion, not categorisation.
59
+
60
+ ### Step 1: Lock the three categories with falsifiable rules
61
+
62
+ 1. **Commit** — deal closes in-window with ≥ 90 % subjective
63
+ probability **and** MEDDIC slots all filled with evidence **and**
64
+ decision-process has buyer-written dates inside the window.
65
+ 2. **Best-case** — deal *could* close in-window with ≥ 50 %
66
+ probability **and** ≤ 2 MEDDIC slots unfilled **and** at least
67
+ one decision-process date inside the window.
68
+ 3. **Pipeline** — everything else. Pipeline is not a forecast
69
+ category; it is the population from which commit and best-case
70
+ are drawn.
71
+
72
+ Reject *"commit"* placements that do not meet all three commit
73
+ criteria, regardless of $ value or rep confidence.
74
+
75
+ ### Step 2: Apply the segment-historical close rate
76
+
77
+ For each deal, compute *expected $* = $ × segment-historical
78
+ in-window close-rate (trailing four quarters). Aggregate by
79
+ category. If commit-$ exceeds (segment historical commit close-rate
80
+ × pipeline-$ in commit), the call is structurally optimistic — find
81
+ the optimism source before defending the number.
82
+
83
+ ### Step 3: Premortem the commit list
84
+
85
+ Write *"if commit misses by 20 %, the reason is \_\_\_."* The most
86
+ common patterns: (a) one anchor deal slipped, (b) segment cycle
87
+ lengthened, (c) procurement/legal queues bunched at quarter-end.
88
+ Tag each commit deal with which of these would kill it; deals tagged
89
+ with two or more move to best-case.
90
+
91
+ ### Step 4: Construct the call with confidence bands
92
+
93
+ Report **commit $** = sum of commit-tagged after Step 3 demotions.
94
+ **Best-case $** = commit + best-case-tagged. Attach the band:
95
+ *"commit ± \<historical-deviation\>; best-case ± \<historical
96
+ upside\>"*. A call without a band has no honesty about its prior
97
+ miss-rate.
98
+
99
+ ### Step 5: Run the accuracy retro-loop at quarter-end
100
+
101
+ Compare predicted commit / best-case / pipeline to actual
102
+ closed-won by category. Compute per-rep, per-segment, and per-stage
103
+ miss-rate. Patterns that repeat for two quarters become categorisation
104
+ rule changes in Step 1; one-off misses become deal-level evidence
105
+ upgrades in Step 0.
106
+
107
+ ## Related Skills
108
+
109
+ **WHEN to use this**
110
+
111
+ - Constructing the quarterly forecast call from a qualified pipeline.
112
+ - Running the accuracy retro-loop and feeding it back into Step 1.
113
+
114
+ **WHEN NOT to use this**
115
+
116
+ - Designing pipeline stages or per-stage conversion targets — route to
117
+ [`pipeline-strategy`](../pipeline-strategy/SKILL.md).
118
+ - Single-deal qualification or disqualification — route to
119
+ [`deal-qualification-meddic`](../deal-qualification-meddic/SKILL.md).
120
+ - Finance-side top-down model or board-deck forecast — composes
121
+ against (does not replace) the finance-partner forecasting capability
122
+ via the `forecast-construction-shape` interface.
123
+
124
+ ## When the agent should load this
125
+
126
+ - "Build the Q3 forecast call."
127
+ - "Why does our commit keep missing?"
128
+ - "Run the forecast retro for last quarter."
129
+ - "Welche Deals gehören wirklich in Commit?"
130
+
131
+ ## Output
132
+
133
+ 1. **`forecast-call.md`** — commit $ and best-case $ with confidence bands; per-segment breakdown.
134
+ 2. **`commit-list.md`** — one row per commit deal: $, segment, MEDDIC-completeness, decision-process date, premortem tag (none / single-risk / two-risk demoted).
135
+ 3. **`retro-deltas.md`** *(at quarter-end)* — predicted vs actual per category, per-segment, per-rep miss-rate, and the categorisation-rule change (if any) for next quarter.
136
+
137
+ ## Gotcha
138
+
139
+ - *"Strong commit"* without buyer-written dates inside the window is a wish, not a forecast. Subjective probability without artefact evidence is what the retro will punish.
140
+ - Segment-historical close rates change after a pricing change, a packaging change, or a competitive shift. Recompute the rates when the segment shape changes, otherwise the call inherits the old regime's optimism.
141
+ - Reporting commit as a point estimate without the band hides the prior miss-rate. A team that has missed by 18 % twice and reports commit ± 0 % is performing forecasting, not doing it.
142
+
143
+ ## Do NOT
144
+
145
+ - Do NOT place a deal in commit because the size is large; size is independent of evidence.
146
+ - Do NOT skip the premortem on commit deals — most misses come from a small number of anchor deals slipping, and the premortem is where you catch them.
147
+ - Do NOT change categorisation rules on a single-quarter miss; rules change on a two-quarter pattern.
148
+
149
+ ## Runnable example
150
+
151
+ End of Q2, last two commits missed by 14 % and 21 %.
152
+
153
+ - Step 1 enforcement — three deals placed in commit had ≥ 2 MEDDIC slots open; demoted to best-case (–$ 540 k commit, +$ 540 k best-case).
154
+ - Segment close-rate — Mid-Market historical commit close-rate is 78 %; commit-$ implies 91 % aggregate close-rate; structural optimism of ~$ 320 k.
155
+ - Premortem — two anchor deals (each > 10 % of commit) tagged single-risk (procurement queue); one tagged two-risk (no buyer-written date) → demoted.
156
+ - Final call — *"commit $ 4.1 m ± 12 % (historical deviation); best-case $ 6.7 m + 8 % / – 14 %."* Commit-list flags the two procurement-risk anchors for VP-level intervention.
157
+ - Retro at quarter-end — predicted commit $ 4.1 m, actual $ 4.0 m; rule unchanged; one rep over-commits two quarters running → categorisation-coaching action.
@@ -0,0 +1,164 @@
1
+ ---
2
+ name: forecasting
3
+ description: "Use when constructing the finance-side forecast — top-down vs bottom-up shape, confidence bands, retro-loop. Triggers on 'build the forecast model', 'reconcile top-down with bottom-up'."
4
+ status: active
5
+ tier: senior
6
+ source: package
7
+ domain: process
8
+ context_spine: [product, fiscal-period, customer-segment]
9
+ ---
10
+
11
+ # forecasting
12
+
13
+ ## When to use
14
+
15
+ - The annual plan or quarterly board pack needs a forecast model that survives a retro — not last quarter's number with a multiplier.
16
+ - Top-down (TAM × penetration × motion) and bottom-up (deal-level) calls have diverged and the reconciliation hasn't been written.
17
+ - A new finance-partner inherits a forecast and needs to rebuild the construction shape without inheriting the prior regime's optimism.
18
+
19
+ Do NOT use to qualify a single deal (route to `deal-qualification-meddic`), construct the RevOps commit list (route to `forecast-accuracy` (H10) — finance owns the shape, RevOps owns the call), or run capital-runway scenarios (route to `runway-cognition` (O3)).
20
+
21
+ ## Cognition cluster
22
+
23
+ - **Mental model 9 — Hypothesis-driven thinking.** Each forecast is
24
+ a falsifiable claim about a window. If the call cannot be falsified
25
+ inside the window, the call is a narrative, not a forecast. See
26
+ [`mental-models.md`](../../../docs/contracts/mental-models.md) § 9.
27
+ - **Mental model 29 — Premortem.** Before locking the call, write the
28
+ post-window retro as if commit missed by 20 %. The premortem
29
+ surfaces which construction inputs were riding on weak evidence;
30
+ demote those before the call locks. See `mental-models.md` § 29.
31
+ - **Mental model 16 — Leading vs lagging.** Closed-won is lagging;
32
+ pipeline coverage, segment conversion, and slot-completeness are
33
+ leading. A forecast built only on lagging signals can confirm but
34
+ not steer. See `mental-models.md` § 16.
35
+ - **Context-spine — product + fiscal-period + customer-segment.**
36
+ Read the **product** slot for what is GA-shippable in the window;
37
+ the **fiscal-period** slot for the cadence the model must
38
+ reconcile against (monthly close vs quarterly board pack vs annual
39
+ plan vs multi-year plan); the **customer-segment** slot for
40
+ segment-historical close rates. See
41
+ [`context-spine`](../../../docs/contracts/context-spine.md).
42
+
43
+ ## Procedure
44
+
45
+ ### Step 0: Inspect the construction shape
46
+
47
+ Read the fiscal-period slot. Decide between three shapes:
48
+
49
+ 1. **Top-down** — anchor against TAM × penetration band × motion
50
+ band. Healthy for annual plans and multi-year plans where
51
+ bottom-up evidence is thin past one window.
52
+ 2. **Bottom-up** — sum deal-level conviction (composes H10
53
+ `forecast-accuracy` via the `forecast-construction-shape` ADR).
54
+ Healthy for quarterly windows where deal evidence is fresh.
55
+ 3. **Hybrid** — both, with an explicit reconciliation. Healthy when
56
+ top-down and bottom-up diverge by more than the historical
57
+ confidence band.
58
+
59
+ State the choice. A forecast without a stated shape inherits the
60
+ prior regime's shape silently.
61
+
62
+ ### Step 1: Construct the call against the shape
63
+
64
+ For top-down: write `{tam, penetration_band, motion_band}` — every
65
+ input cites its source. Penetration bands are evidence ranges, not
66
+ single points; motion bands reflect channel mix.
67
+
68
+ For bottom-up: consume H10's commit-list against the
69
+ `forecast-construction-shape` interface. Sum commit-tagged ×
70
+ in-window close-rate per segment.
71
+
72
+ For hybrid: do both, then write the reconciliation. If top-down ≠
73
+ bottom-up by more than the confidence band, the divergence is the
74
+ forecast — not either number.
75
+
76
+ ### Step 2: Calibrate the confidence band
77
+
78
+ Compute historical deviation from the last 4–8 windows of the same
79
+ fiscal-period cadence. Attach as `{plus_pct, minus_pct}`. A band
80
+ asymmetric on the downside is honest about prior misses; symmetric
81
+ bands silently pretend prior accuracy.
82
+
83
+ ### Step 3: Premortem the construction
84
+
85
+ Write *"if the forecast misses by 20 %, the reason is ___."* For
86
+ top-down: which penetration / motion input was the load-bearing
87
+ assumption? For bottom-up: which anchor deals carry > 10 % of
88
+ commit? Demote inputs that the premortem can name as single-point
89
+ risks.
90
+
91
+ ### Step 4: Emit the typed interface
92
+
93
+ Produce `forecast-band.json` per the `forecast-construction-shape`
94
+ ADR. H10 consumes the artifact for the commit-call. The fields:
95
+ `construction_shape`, `commit_value`, `best_case_value`,
96
+ `pipeline_value`, `confidence_band`, `retro_signature`,
97
+ `segment_scope`, `fiscal_period`, `construction_inputs`. Drop the
98
+ artifact in the location H10's `## Output` references.
99
+
100
+ ### Step 5: Run the accuracy retro-loop
101
+
102
+ At window-end, compare predicted commit / best-case to actual
103
+ closed-won. Compute per-segment and per-construction-input miss
104
+ rate. Patterns that repeat for two windows become shape changes in
105
+ Step 0 (e.g. switching from bottom-up to hybrid because deal
106
+ evidence stopped predicting); one-off misses become input upgrades
107
+ in Step 1.
108
+
109
+ ## Related Skills
110
+
111
+ **WHEN to use this**
112
+
113
+ - Constructing the finance-side forecast (annual plan, board pack, multi-year plan).
114
+ - Running the construction-shape retro and feeding it back into Step 0.
115
+
116
+ **WHEN NOT to use this**
117
+
118
+ - Single-deal qualification — route to [`deal-qualification-meddic`](../deal-qualification-meddic/SKILL.md).
119
+ - Commit / best-case / pipeline categorisation of deals — route to [`forecast-accuracy`](../forecast-accuracy/SKILL.md) (H10); H10 consumes against this skill's `forecast-band.json` interface.
120
+ - Cash-runway shape and fundraise-trigger heuristics — route to [`runway-cognition`](../runway-cognition/SKILL.md) (O3).
121
+ - Multi-statement scenario construction over base / upside / downside — route to [`scenario-modeling`](../scenario-modeling/SKILL.md) (O4).
122
+
123
+ Wing-4 handoff: this skill emits the `forecast-band.json` artifact
124
+ that `forecast-accuracy` (H10, Wing-3) reads. Per
125
+ `docs/contracts/adr-forecast-construction-shape.md`,
126
+ `docs/guidelines/wing4-handoff.md` § Chain 4.
127
+
128
+ ## When the agent should load this
129
+
130
+ - "Build the annual forecast model."
131
+ - "Top-down and bottom-up disagree — reconcile them."
132
+ - "Why was last quarter's forecast off?"
133
+ - "Was machen wir bei der Forecast-Konstruktion anders?"
134
+
135
+ ## Output
136
+
137
+ 1. **`forecast-band.json`** *(Wing-3 / Wing-4 typed interface)* — `construction_shape`, `commit_value`, `best_case_value`, `pipeline_value`, `confidence_band`, `retro_signature`, `segment_scope`, `fiscal_period`, `construction_inputs`. Per `adr-forecast-construction-shape.md`.
138
+ 2. **`construction-notes.md`** — shape chosen + why; per-input evidence; reconciliation note (hybrid only).
139
+ 3. **`premortem.md`** — "if we miss by 20 %, the reason is ___"; tagged demotions from Step 3.
140
+ 4. **`retro-deltas.md`** *(at window-end)* — predicted vs actual per construction input; shape-change recommendation if the pattern repeats.
141
+
142
+ ## Gotcha
143
+
144
+ - A forecast without a stated `construction_shape` inherits last regime's shape silently. Always emit the field.
145
+ - Symmetric confidence bands lie about prior misses. If the last two windows missed on the downside, the band is asymmetric.
146
+ - Top-down models with single-point penetration assumptions are scenarios in disguise. Use bands.
147
+ - Hybrid models that don't write the reconciliation are top-down models with bottom-up garnish.
148
+
149
+ ## Do NOT
150
+
151
+ - Do NOT collapse hybrid forecasts into a single number without keeping the divergence visible.
152
+ - Do NOT skip Step 4 — the typed interface is what makes H10 reproducible.
153
+ - Do NOT change the construction shape on a single-window miss; shape changes require a two-window pattern.
154
+
155
+ ## Runnable example
156
+
157
+ End of FY: annual plan + Q1 commit both due.
158
+
159
+ - Step 0 — fiscal-period slot says `annual` + `quarterly`. Annual is top-down; Q1 is bottom-up.
160
+ - Step 1 — top-down: TAM $4.2B, penetration band 0.6–0.9 %, motion band SaaS-mid; expected $25–38M ARR. Bottom-up: H10 commit-list sums to $8.1M in Q1, segment close rate 78 %.
161
+ - Step 2 — last 4 quarters deviation: +6 % / –14 %. Confidence band attached.
162
+ - Step 3 — premortem: top-down anchored on penetration upper bound; demoted to 0.6–0.75 %. Bottom-up: two anchor deals tagged single-risk procurement; demoted.
163
+ - Step 4 — emit `forecast-band.json`: `construction_shape=hybrid`, commit $6.3M, best-case $8.1M, band +6/–14 %, retro_signature `quarterly | [+6, –14]`, segment_scope mid-market, fiscal_period `quarterly`.
164
+ - Retro — at quarter-end, actual $6.1M; band held. Annual top-down revisit in two quarters.