@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,165 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deal-qualification-meddic
|
|
3
|
+
description: "Use when qualifying or disqualifying a single deal — MEDDIC slots with evidence, inversion test, disqualification heuristic. Triggers on 'is this deal real', 'should we walk away'."
|
|
4
|
+
status: active
|
|
5
|
+
tier: senior
|
|
6
|
+
source: package
|
|
7
|
+
domain: product
|
|
8
|
+
context_spine: [product, customer-segment]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# deal-qualification-meddic
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
- A single deal needs a qualification call construction or a re-qualification mid-cycle — the deal is in pipeline but the team cannot answer *"who signs, on what criterion, against what pain, by when"* in writing.
|
|
16
|
+
- Disqualification is overdue — a deal has slipped two stages or two quarters and the team is reluctant to walk, so resources are bleeding into a cell that should not be in pipeline.
|
|
17
|
+
- A rep keeps reporting *"strong champion"* but the deal stalls — qualification needs to separate champion confidence from economic-buyer reality.
|
|
18
|
+
|
|
19
|
+
Do NOT use to design pipeline stages (route to
|
|
20
|
+
`pipeline-strategy`), construct the forecast call (route to
|
|
21
|
+
`forecast-accuracy`), or build cross-deal pattern libraries (out of
|
|
22
|
+
scope — this skill is single-deal qualification, one cycle).
|
|
23
|
+
|
|
24
|
+
## Cognition cluster
|
|
25
|
+
|
|
26
|
+
- **Mental model 30 — Inversion.** Do not ask *"why should this deal
|
|
27
|
+
close?"* — ask *"name the reason this deal will not close."* If no
|
|
28
|
+
answer survives, qualification is incomplete; if the answer is
|
|
29
|
+
load-bearing and the team has no countermeasure, disqualification
|
|
30
|
+
is the call. See
|
|
31
|
+
[`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 30.
|
|
32
|
+
- **Mental model 9 — Hypothesis-driven thinking.** Each MEDDIC slot
|
|
33
|
+
is a hypothesis with falsification evidence. *"Mary is the
|
|
34
|
+
champion"* is a claim; *"Mary briefed two peers without us in the
|
|
35
|
+
room and reported back unprompted"* is evidence. Slots without
|
|
36
|
+
evidence are unfilled, regardless of rep confidence. See
|
|
37
|
+
`mental-models.md` § 9.
|
|
38
|
+
- **Mental model 13 — Occam's razor.** When MEDDIC slots conflict,
|
|
39
|
+
the simpler explanation is usually right: *"the buyer does not
|
|
40
|
+
feel the pain on the same timeline we do"* beats *"procurement is
|
|
41
|
+
unusually slow this quarter"*. Pick the simpler explanation; it
|
|
42
|
+
changes the move. See `mental-models.md` § 13.
|
|
43
|
+
- **Context-spine — product + customer-segment.** Read the
|
|
44
|
+
**product** slot for sellable scope (a deal asking for non-goal
|
|
45
|
+
scope is not qualified, it is mis-sold), and the
|
|
46
|
+
**customer-segment** slot for the segment's switch-event shape —
|
|
47
|
+
pain claims that do not match the segment's known switch events
|
|
48
|
+
are coaching opportunities, not qualifications. See
|
|
49
|
+
[`context-spine`](../../../docs/contracts/context-spine.md).
|
|
50
|
+
|
|
51
|
+
## Procedure
|
|
52
|
+
|
|
53
|
+
### Step 0: Pull the deal record
|
|
54
|
+
|
|
55
|
+
Latest call notes, last three buyer messages, named contacts and
|
|
56
|
+
their org roles, current stage, age in stage, and the
|
|
57
|
+
`stage-definitions.md` from `pipeline-strategy`. Without exit
|
|
58
|
+
criteria you cannot test whether the deal earned its current stage.
|
|
59
|
+
|
|
60
|
+
### Step 1: Walk the six MEDDIC slots with evidence
|
|
61
|
+
|
|
62
|
+
For each slot, write the claim **plus** the evidence (a buyer
|
|
63
|
+
artefact, a recording, a forwarded email, a board agenda) — not
|
|
64
|
+
*"rep believes"*.
|
|
65
|
+
|
|
66
|
+
1. **Metrics.** *"\<Buyer\> will measure \<our value\> as
|
|
67
|
+
\<quantified metric\> over \<window\>."* Evidence: buyer wrote
|
|
68
|
+
the metric or quoted it back unprompted.
|
|
69
|
+
2. **Economic buyer.** *"\<Name, title\> signs the PO."* Evidence:
|
|
70
|
+
buyer-side org chart confirmed; the EB has met the team or
|
|
71
|
+
approved the project unblocked by the champion.
|
|
72
|
+
3. **Decision criteria.** *"\<Buyer\> chooses on \<criteria\>, in
|
|
73
|
+
that order."* Evidence: criteria from the buyer's RFP, scorecard,
|
|
74
|
+
or written summary — not the rep's inference.
|
|
75
|
+
4. **Decision process.** *"\<Steps and approvers\>, ending
|
|
76
|
+
\<date\>."* Evidence: a written timeline shared by the buyer.
|
|
77
|
+
5. **Identify pain.** *"\<Pain\> costs \<\$\>/month;
|
|
78
|
+
business event \<X\> forces resolution by \<date\>."* Evidence:
|
|
79
|
+
buyer named the cost and the forcing event without prompting.
|
|
80
|
+
6. **Champion.** *"\<Name\> sells internally without us in the
|
|
81
|
+
room; benefits if we win."* Evidence: champion forwarded an
|
|
82
|
+
internal email, briefed peers, or named the personal win.
|
|
83
|
+
|
|
84
|
+
### Step 2: Inversion — name the reason this deal will not close
|
|
85
|
+
|
|
86
|
+
Write the one sentence that, if true, kills the deal. If no
|
|
87
|
+
sentence is true, the deal is qualified for its stage. If a sentence
|
|
88
|
+
is true and there is no countermeasure planned, the deal moves to
|
|
89
|
+
**disqualified-pending-evidence**.
|
|
90
|
+
|
|
91
|
+
### Step 3: Run the disqualification heuristic
|
|
92
|
+
|
|
93
|
+
Disqualify if any two of:
|
|
94
|
+
|
|
95
|
+
1. Economic buyer is unnamed or never met the team after two cycles.
|
|
96
|
+
2. No metric in writing after a discovery call and a follow-up.
|
|
97
|
+
3. No forcing event — pain exists but resolution is *"someday"*.
|
|
98
|
+
4. Champion cannot articulate the personal win when asked directly.
|
|
99
|
+
|
|
100
|
+
Disqualification is not failure; it is recovered selling time.
|
|
101
|
+
|
|
102
|
+
### Step 4: Set re-qualification triggers
|
|
103
|
+
|
|
104
|
+
For slots still open, set the trigger and deadline: *"\<slot\>
|
|
105
|
+
re-qualified when \<buyer artefact\> arrives by \<date\>."* If the
|
|
106
|
+
date passes without the artefact, the slot reverts to unfilled and
|
|
107
|
+
Step 3 runs again.
|
|
108
|
+
|
|
109
|
+
### Step 5: Hand back
|
|
110
|
+
|
|
111
|
+
Hand the MEDDIC card, the inversion sentence, and the re-qualification
|
|
112
|
+
triggers to the rep for the next buyer interaction and to
|
|
113
|
+
[`forecast-accuracy`](../forecast-accuracy/SKILL.md) for the
|
|
114
|
+
forecast call. A deal with two or more unfilled MEDDIC slots cannot
|
|
115
|
+
be **commit**, regardless of $ value or stage.
|
|
116
|
+
|
|
117
|
+
## Related Skills
|
|
118
|
+
|
|
119
|
+
**WHEN to use this**
|
|
120
|
+
|
|
121
|
+
- Qualifying or disqualifying a single deal one cycle at a time.
|
|
122
|
+
- Building the MEDDIC card with falsifiable evidence per slot.
|
|
123
|
+
|
|
124
|
+
**WHEN NOT to use this**
|
|
125
|
+
|
|
126
|
+
- Designing or auditing pipeline stages — route to
|
|
127
|
+
[`pipeline-strategy`](../pipeline-strategy/SKILL.md).
|
|
128
|
+
- Constructing the quarterly forecast call — route to
|
|
129
|
+
[`forecast-accuracy`](../forecast-accuracy/SKILL.md).
|
|
130
|
+
- Diagnosing product-led signup → activation funnels — route to
|
|
131
|
+
[`funnel-analysis`](../funnel-analysis/SKILL.md).
|
|
132
|
+
|
|
133
|
+
## When the agent should load this
|
|
134
|
+
|
|
135
|
+
- "Qualify this deal — is it real?"
|
|
136
|
+
- "Should we walk away from \<deal\>?"
|
|
137
|
+
- "Why is this stuck in proposal for 60 days?"
|
|
138
|
+
- "Was wissen wir wirklich über den Decision Process?"
|
|
139
|
+
|
|
140
|
+
## Output
|
|
141
|
+
|
|
142
|
+
1. **`meddic-card.md`** — six slots, one claim per slot with evidence link or quote. Unfilled slots flagged.
|
|
143
|
+
2. **`inversion-sentence.md`** — the one reason this deal will not close; countermeasure (or *"none — disqualify"*).
|
|
144
|
+
3. **`requalification-triggers.md`** — per-slot trigger + deadline + revert behaviour.
|
|
145
|
+
|
|
146
|
+
## Gotcha
|
|
147
|
+
|
|
148
|
+
- *"Strong champion"* without the personal-win sentence in writing is rep optimism, not qualification.
|
|
149
|
+
- A metric the rep wrote on the buyer's behalf is a metric the buyer will not defend in procurement — it must come from the buyer or be quoted back unprompted.
|
|
150
|
+
- Decision process *"once legal signs off"* is not a process; it is a hand-wave. Demand approvers, sequence, and dates.
|
|
151
|
+
|
|
152
|
+
## Do NOT
|
|
153
|
+
|
|
154
|
+
- Do NOT call a slot filled because *"the rep is sure"* — qualification is artefact-driven, not confidence-driven.
|
|
155
|
+
- Do NOT keep a deal in **commit** with two or more unfilled slots regardless of size; size flatters, slots don't.
|
|
156
|
+
- Do NOT skip disqualification because the deal is large — large deals with weak qualification miss louder.
|
|
157
|
+
|
|
158
|
+
## Runnable example
|
|
159
|
+
|
|
160
|
+
Mid-market deal, $ 180 k ACV, stuck at Proposal for 47 days.
|
|
161
|
+
|
|
162
|
+
- MEDDIC card — **Metrics:** *"reduce ticket-handle-time by 30 %"* (buyer wrote it, ✓). **Economic buyer:** *"VP Support — never met"* (✗). **Decision criteria:** RFP scoring (✓). **Decision process:** *"procurement after legal — no dates"* (✗). **Pain:** *"reps overloaded — no forcing event"* (✗ — forcing event missing). **Champion:** *"Team lead Mary — personal win unclear"* (partial).
|
|
163
|
+
- Inversion sentence — *"VP Support has not seen the value case and there is no forcing event; quarter rolls and the deal slides one more cycle."* Countermeasure: book VP-Support exec session within 10 days OR disqualify.
|
|
164
|
+
- Disqualification heuristic — three slots unfilled → **disqualified-pending-evidence**; reverts to qualified only if exec session happens by deadline.
|
|
165
|
+
- Hand-off — card + inversion + triggers → rep for VP-Support outreach; `forecast-accuracy` moves the deal out of **commit** until the slots fill.
|
|
@@ -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.
|