@antoneeo/mkt-agentic-sdlc-skill 0.2.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/CHANGELOG.md +18 -0
- package/README.md +45 -0
- package/gemini-extension.json +6 -0
- package/package.json +45 -0
- package/scripts/init.js +146 -0
- package/scripts/lib.js +170 -0
- package/scripts/postinstall.js +42 -0
- package/scripts/preuninstall.js +17 -0
- package/skills/mkt-agentic-sdlc/ENFORCEMENT.md +82 -0
- package/skills/mkt-agentic-sdlc/SKILL.md +201 -0
- package/skills/mkt-agentic-sdlc/elicitation.md +89 -0
- package/skills/mkt-agentic-sdlc/frameworks.md +105 -0
- package/skills/mkt-agentic-sdlc/research.md +104 -0
- package/skills/mkt-agentic-sdlc/review.md +73 -0
- package/skills/mkt-agentic-sdlc/scripts/mkt_check.py +567 -0
- package/skills/mkt-agentic-sdlc/templates.md +444 -0
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
# Document templates — Marketing Agentic SDLC
|
|
2
|
+
|
|
3
|
+
General rules:
|
|
4
|
+
- Concise documents: ≤ ~80 lines each (handoff ≤ 20; final MARKETING_PLAN exempt). If a document grows beyond that, split it, do not inflate it.
|
|
5
|
+
- Template conformance is not the goal: if a section has no real content, state explicitly why it does not apply. Never filler text.
|
|
6
|
+
- Every number cites its ledger entry as `[EV-nn]`. Dates always absolute.
|
|
7
|
+
- Deliverable language: the target market's language (decided in Discovery). Structure and field names stay as templated so the validator can parse them.
|
|
8
|
+
|
|
9
|
+
## Canonical document header (vision/ strategy/ tactics/ deliverables/)
|
|
10
|
+
|
|
11
|
+
Every durable canonical document opens with this frontmatter: it feeds the generated manifest `mkt_docs/INDEX.md` and gives an agent the freshness signal before it trusts the content.
|
|
12
|
+
|
|
13
|
+
```markdown
|
|
14
|
+
---
|
|
15
|
+
description: One line — what the document is and when to read it.
|
|
16
|
+
status: CURRENT # CURRENT | SUPERSEDED | DRAFT | DEPRECATED
|
|
17
|
+
supersedes: old_doc.md # only if it replaces another canonical doc
|
|
18
|
+
---
|
|
19
|
+
# Document Title
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
When a doc replaces another: the new one declares `supersedes:`, the old one switches to `status: SUPERSEDED` (it stays as history, do not delete it). `mkt_check.py validate` warns if `status` is missing or if a superseded doc is still `CURRENT`.
|
|
23
|
+
|
|
24
|
+
## mkt_docs/README.md
|
|
25
|
+
|
|
26
|
+
Curated must-read index, by hand (it is NOT the generated manifest). Created at init, updated rarely.
|
|
27
|
+
|
|
28
|
+
```markdown
|
|
29
|
+
# mkt_docs — reading guide
|
|
30
|
+
|
|
31
|
+
Must-reads for this marketing project, in order. The full manifest of
|
|
32
|
+
canonical docs is `INDEX.md` (generated — regenerate with `mkt_check.py
|
|
33
|
+
index`, never edit by hand).
|
|
34
|
+
|
|
35
|
+
1. `vision/MKT_VISION.md` — why this plan exists (check its Status first).
|
|
36
|
+
2. `research/evidence_ledger.md` — the single source for every number.
|
|
37
|
+
3. `strategy/STRATEGY.md` — the approved strategy (if present).
|
|
38
|
+
4. `audit/handoff.md` — where work stopped last session (if present).
|
|
39
|
+
|
|
40
|
+
Directory purposes: `vision/` (marketing vision and principles), `research/`
|
|
41
|
+
(evidence ledger and research outputs, discovery-by-grep), `strategy/`
|
|
42
|
+
(ICP/personas, threat map, objectives, strategy), `tactics/` (tactical plan,
|
|
43
|
+
90-day action, measurement, campaigns), `deliverables/` (assembled plan and
|
|
44
|
+
exports), `spikes/` (research spikes), `audit/` (handoff).
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## mkt_docs/vision/MKT_VISION.md
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
---
|
|
51
|
+
description: Marketing vision — expected benefit, market, non-goals, success signals.
|
|
52
|
+
status: DRAFT
|
|
53
|
+
---
|
|
54
|
+
# Marketing Vision
|
|
55
|
+
Status: DRAFT
|
|
56
|
+
<!-- Status: DRAFT (reconstructed by the agent, NOT a gating authority)
|
|
57
|
+
or APPROVED (by <who>, <date>) — only after the user's explicit confirmation -->
|
|
58
|
+
|
|
59
|
+
## Business Goal
|
|
60
|
+
<!-- the business outcome marketing must serve, in one paragraph. Cite FACTs. -->
|
|
61
|
+
|
|
62
|
+
## Expected Benefit
|
|
63
|
+
<!-- what a successful plan changes for the business, stated measurably -->
|
|
64
|
+
|
|
65
|
+
## Market & Audience
|
|
66
|
+
<!-- target market, geography, deliverable language; who we serve (short — the
|
|
67
|
+
detailed ICP lives in strategy/ICP_PERSONAS.md) -->
|
|
68
|
+
|
|
69
|
+
## Non-Goals
|
|
70
|
+
<!-- what this plan explicitly does NOT pursue (markets, segments, channels).
|
|
71
|
+
The strategy review checks divergence against these. -->
|
|
72
|
+
|
|
73
|
+
## Success Signals
|
|
74
|
+
<!-- how the user recognizes the plan is working, in their words -->
|
|
75
|
+
|
|
76
|
+
## Constraints
|
|
77
|
+
<!-- budget range [EV-nn], team capacity [EV-nn], legal/brand limits -->
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## mkt_docs/vision/principles.md
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
---
|
|
84
|
+
description: Stable decision principles guiding marketing trade-offs.
|
|
85
|
+
status: DRAFT
|
|
86
|
+
---
|
|
87
|
+
# Marketing Decision Principles
|
|
88
|
+
|
|
89
|
+
<!-- bullet list, most critical first. Examples: "no channel we cannot staff",
|
|
90
|
+
"brand voice X non-negotiable", "experiments capped at 10% of budget" -->
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## mkt_docs/research/evidence_ledger.md
|
|
94
|
+
|
|
95
|
+
The single source for every number. `[EV-nn]` references across all documents resolve here. Classes: FACT (user input / primary data), BENCHMARK (external, Source URL + Date mandatory), ASSUMPTION (Range + Confidence mandatory, rationale in Claim).
|
|
96
|
+
|
|
97
|
+
```markdown
|
|
98
|
+
# Evidence Ledger
|
|
99
|
+
|
|
100
|
+
| ID | Claim | Class | Value / Range | Source | Date | Confidence |
|
|
101
|
+
|---|---|---|---|---|---|---|
|
|
102
|
+
| EV-01 | (example) monthly marketing budget | FACT | 5000 EUR/month | user, Wave 1 | 2026-01-01 | HIGH |
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## mkt_docs/strategy/ICP_PERSONAS.md
|
|
106
|
+
|
|
107
|
+
```markdown
|
|
108
|
+
---
|
|
109
|
+
description: Ideal customer profile and evidence-based personas.
|
|
110
|
+
status: DRAFT
|
|
111
|
+
---
|
|
112
|
+
# ICP & Personas
|
|
113
|
+
|
|
114
|
+
## Ideal Customer Profile
|
|
115
|
+
| Criterion | Value | Anti-profile (who we do NOT serve) |
|
|
116
|
+
|---|---|---|
|
|
117
|
+
|
|
118
|
+
## Persona: [name]
|
|
119
|
+
<!-- max 2-3 personas. Every trait cites VoC evidence [EV-nn] or is labeled ASSUMPTION. -->
|
|
120
|
+
- **Job to be done:**
|
|
121
|
+
- **Buying trigger:**
|
|
122
|
+
- **Top objections:**
|
|
123
|
+
- **Watering holes:** <!-- where they actually are — feeds channel selection -->
|
|
124
|
+
- **Vocabulary:** <!-- verbatim words from VoC — feeds messaging -->
|
|
125
|
+
|
|
126
|
+
<!-- B2B variant: the unit is the ACCOUNT (firmographic ICP), and the
|
|
127
|
+
"personas" are the ROLES in the buying committee (e.g. economic buyer,
|
|
128
|
+
technical decider, gatekeeper/veto), not consumer JTBD segments. Replace
|
|
129
|
+
Job/Trigger/Objections/Watering-holes per role; add who decides vs signs
|
|
130
|
+
vs blocks. Firmographic ICP criteria (size, sector, geography, trigger)
|
|
131
|
+
go in the ICP table above. -->
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## mkt_docs/strategy/THREAT_MAP.md
|
|
136
|
+
|
|
137
|
+
```markdown
|
|
138
|
+
---
|
|
139
|
+
description: Competitive threats and plan risks with mitigations.
|
|
140
|
+
status: DRAFT
|
|
141
|
+
---
|
|
142
|
+
# Threat Map
|
|
143
|
+
|
|
144
|
+
## Competitive threats
|
|
145
|
+
| Threat | Evidence | Likelihood | Impact | Mitigation |
|
|
146
|
+
|---|---|---|---|---|
|
|
147
|
+
|
|
148
|
+
## Plan risks
|
|
149
|
+
<!-- budget concentration, single-channel dependence, seasonality, capacity,
|
|
150
|
+
brand/reputation risks. Same table shape. -->
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## mkt_docs/strategy/SITUATION_SWOT.md
|
|
154
|
+
|
|
155
|
+
Sintesi della fase Situation (dopo la ricerca, prima degli obiettivi). Ogni
|
|
156
|
+
cella cita il ledger: adjectives senza [EV-nn] vanno cancellati. PESTEL /
|
|
157
|
+
Five Forces solo quando il mercato lo merita (frameworks.md); se saltati,
|
|
158
|
+
dichiararlo con la ragione.
|
|
159
|
+
|
|
160
|
+
```markdown
|
|
161
|
+
---
|
|
162
|
+
description: Sintesi SWOT evidence-based della fase Situation.
|
|
163
|
+
status: CURRENT
|
|
164
|
+
---
|
|
165
|
+
# SWOT — [business] ([canale/scope])
|
|
166
|
+
|
|
167
|
+
<!-- PESTEL/Five Forces: usati o saltati-con-ragione (frameworks.md) -->
|
|
168
|
+
|
|
169
|
+
## Strengths
|
|
170
|
+
<!-- ogni bullet cita [EV-nn] -->
|
|
171
|
+
## Weaknesses
|
|
172
|
+
## Opportunities
|
|
173
|
+
## Threats
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## mkt_docs/strategy/OBJECTIVES.md
|
|
177
|
+
|
|
178
|
+
Objectives are `### O1 — Title` headings — the validator reads the `O#` ids for trace checks. 3-5 objectives maximum.
|
|
179
|
+
|
|
180
|
+
```markdown
|
|
181
|
+
---
|
|
182
|
+
description: SMART marketing objectives for the plan cycle.
|
|
183
|
+
status: DRAFT
|
|
184
|
+
---
|
|
185
|
+
# Objectives
|
|
186
|
+
Status: DRAFT <!-- APPROVED (by <who>, <date>) after the user gate -->
|
|
187
|
+
|
|
188
|
+
### O1 — [title]
|
|
189
|
+
- **Target:** [number] by [date] [EV-nn justifying plausibility]
|
|
190
|
+
- **Owner:**
|
|
191
|
+
- **Why this is achievable:** <!-- cite ledger entries -->
|
|
192
|
+
|
|
193
|
+
### O2 — [title]
|
|
194
|
+
...
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## mkt_docs/strategy/STRATEGY.md
|
|
198
|
+
|
|
199
|
+
```markdown
|
|
200
|
+
---
|
|
201
|
+
description: Segmentation, targeting, positioning and messaging for the plan cycle.
|
|
202
|
+
status: DRAFT
|
|
203
|
+
---
|
|
204
|
+
# Strategy
|
|
205
|
+
Status: DRAFT <!-- APPROVED (by <who>, <date>) after the user gate -->
|
|
206
|
+
|
|
207
|
+
## Segmentation
|
|
208
|
+
<!-- segments found in research, with evidence -->
|
|
209
|
+
|
|
210
|
+
## Targeting
|
|
211
|
+
<!-- the CHOICE and its rationale; segments explicitly rejected and why -->
|
|
212
|
+
|
|
213
|
+
## Positioning
|
|
214
|
+
- **Competitive alternatives:** <!-- incl. "do nothing" -->
|
|
215
|
+
- **Unique attributes:**
|
|
216
|
+
- **Value (evidence-backed):**
|
|
217
|
+
- **Best-fit segment:**
|
|
218
|
+
- **Market category:**
|
|
219
|
+
|
|
220
|
+
> For [segment] who [need], [name] is the [category] that [unique value],
|
|
221
|
+
> unlike [main alternative] which [limitation].
|
|
222
|
+
|
|
223
|
+
<!-- Swap test result: statement with top competitor's name substituted must be FALSE. State it. -->
|
|
224
|
+
|
|
225
|
+
## Messaging house
|
|
226
|
+
- **Roof (value proposition):**
|
|
227
|
+
- **Pillar 1:** ... — proof points: ...
|
|
228
|
+
- **Pillar 2:** ... — proof points: ...
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## mkt_docs/tactics/TACTICAL_PLAN.md
|
|
232
|
+
|
|
233
|
+
Parsed mechanically: keep the `Total budget:` line and the three tables with these exact column headers. Budget numbers plain or with k/M suffix; the validator strips currency symbols.
|
|
234
|
+
|
|
235
|
+
```markdown
|
|
236
|
+
---
|
|
237
|
+
description: Channel plan, budget allocation and funnel model.
|
|
238
|
+
status: DRAFT
|
|
239
|
+
---
|
|
240
|
+
# Tactical Plan
|
|
241
|
+
|
|
242
|
+
Total budget: 15000
|
|
243
|
+
|
|
244
|
+
## Channel Plan
|
|
245
|
+
| Channel | Objective | KPI | Budget | Owner |
|
|
246
|
+
|---|---|---|---|---|
|
|
247
|
+
| (example) Google Ads | O1 | CPL <= 30 [EV-04] | 6000 | founder |
|
|
248
|
+
|
|
249
|
+
<!-- Enabler-row convention: an objective that is a PRECONDITION (measurement,
|
|
250
|
+
tracking, tooling setup) is not a spend channel but still needs a serving
|
|
251
|
+
tactic for the trace check. Give it a row with Budget 0 and Owner set;
|
|
252
|
+
it is intentionally absent from Budget Allocation (which must sum). -->
|
|
253
|
+
<!-- Gate riders: when the client approves a plan/strategy at a gate WITH a
|
|
254
|
+
condition, record the rider in the approved doc's header (Status line),
|
|
255
|
+
not only in chat — the next session and the reviewer must see it. -->
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
## Budget Allocation
|
|
259
|
+
| Channel | Budget | Share |
|
|
260
|
+
|---|---|---|
|
|
261
|
+
| (example) Google Ads | 6000 | 40% |
|
|
262
|
+
|
|
263
|
+
<!-- allocations must sum to Total budget (±1%) — mkt_check.py budget -->
|
|
264
|
+
|
|
265
|
+
## Funnel Model
|
|
266
|
+
| Channel | Budget | CPC | Clicks | CVR % | Leads | Close % | Customers | CAC |
|
|
267
|
+
|---|---|---|---|---|---|---|---|---|
|
|
268
|
+
| (example) Google Ads | 6000 | 1.50 [EV-04] | 4000 | 3 [EV-05] | 120 | 20 [EV-02] | 24 | 250 |
|
|
269
|
+
|
|
270
|
+
<!-- each row must recompute: Clicks=Budget/CPC, Leads=Clicks*CVR%,
|
|
271
|
+
Customers=Leads*Close%, CAC=Budget/Customers (±5%) — mkt_check.py funnel.
|
|
272
|
+
Compare total Customers to the objective targets; declare any gap. -->
|
|
273
|
+
<!-- Sales-led / B2B: this table is shaped for immediate-purchase e-commerce.
|
|
274
|
+
For a long-cycle B2B motion, read `Customers` as QUALIFIED DEMOS/LEADS and
|
|
275
|
+
`CAC` as cost-per-qualified-demo (state the relabel), put ONLY paid click
|
|
276
|
+
channels here, and represent referral/content/outbound + the multi-stage
|
|
277
|
+
sales funnel (MQL→SQL→demo→POC→won) and closed-won lag in a separate
|
|
278
|
+
"Pipeline build-up vs objective" section. See frameworks.md. -->
|
|
279
|
+
|
|
280
|
+
## Channel selection rationale
|
|
281
|
+
<!-- matrix scores or written rationale per chosen channel; rejected channels and why -->
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## mkt_docs/tactics/ACTION_90D.md
|
|
285
|
+
|
|
286
|
+
```markdown
|
|
287
|
+
---
|
|
288
|
+
description: Sequenced 90-day action plan.
|
|
289
|
+
status: DRAFT
|
|
290
|
+
---
|
|
291
|
+
# 90-Day Action Plan
|
|
292
|
+
|
|
293
|
+
## Weeks 1-2 (day-level)
|
|
294
|
+
| Day | Action | Owner | Depends on |
|
|
295
|
+
|---|---|---|---|
|
|
296
|
+
|
|
297
|
+
## Weeks 3-12 (week-level)
|
|
298
|
+
| Week | Actions | Owner | Milestone |
|
|
299
|
+
|---|---|---|---|
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
## mkt_docs/tactics/MEASUREMENT_PLAN.md
|
|
303
|
+
|
|
304
|
+
The KPI table is parsed for trace: every objective id must appear.
|
|
305
|
+
|
|
306
|
+
```markdown
|
|
307
|
+
---
|
|
308
|
+
description: KPI tree, targets, review cadence and kill/scale criteria.
|
|
309
|
+
status: DRAFT
|
|
310
|
+
---
|
|
311
|
+
# Measurement Plan
|
|
312
|
+
|
|
313
|
+
## North star
|
|
314
|
+
<!-- the one metric, and why -->
|
|
315
|
+
|
|
316
|
+
## KPI table
|
|
317
|
+
| Objective | KPI | Target | Benchmark | Cadence |
|
|
318
|
+
|---|---|---|---|---|
|
|
319
|
+
| O1 | (example) CPL | <= 30 | [EV-04] | weekly |
|
|
320
|
+
|
|
321
|
+
## Kill / scale criteria
|
|
322
|
+
| Channel | Kill if | Scale if |
|
|
323
|
+
|---|---|---|
|
|
324
|
+
| (example) Google Ads | CAC > 400 after 3000 spent | CAC < 200 at 2x volume |
|
|
325
|
+
|
|
326
|
+
## Review cadence
|
|
327
|
+
<!-- weekly channel KPIs, monthly objectives, quarterly strategy -->
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
## mkt_docs/tactics/CAMPAIGN_[name].md (E2)
|
|
331
|
+
|
|
332
|
+
```markdown
|
|
333
|
+
---
|
|
334
|
+
description: Campaign plan for [name].
|
|
335
|
+
status: DRAFT
|
|
336
|
+
---
|
|
337
|
+
# Campaign: [name]
|
|
338
|
+
|
|
339
|
+
## Brief
|
|
340
|
+
<!-- objective (link to O# or approved strategy context), audience, offer, KPI -->
|
|
341
|
+
|
|
342
|
+
Total budget: 3000
|
|
343
|
+
|
|
344
|
+
## Budget Allocation
|
|
345
|
+
| Channel | Budget | Share |
|
|
346
|
+
|---|---|---|
|
|
347
|
+
|
|
348
|
+
## Funnel Model
|
|
349
|
+
| Channel | Budget | CPC | Clicks | CVR % | Leads | Close % | Customers | CAC |
|
|
350
|
+
|---|---|---|---|---|---|---|---|---|
|
|
351
|
+
|
|
352
|
+
## Timeline & owners
|
|
353
|
+
## Kill / scale criteria
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
## mkt_docs/deliverables/MARKETING_PLAN.md
|
|
357
|
+
|
|
358
|
+
Assembled from the APPROVED artifacts — assembly, not rewriting; on divergence the approved artifact wins. Exempt from the 80-line cap.
|
|
359
|
+
|
|
360
|
+
```markdown
|
|
361
|
+
---
|
|
362
|
+
description: The assembled marketing plan (SOSTAC) — the deliverable.
|
|
363
|
+
status: DRAFT
|
|
364
|
+
---
|
|
365
|
+
# Marketing Plan — [business], [cycle]
|
|
366
|
+
|
|
367
|
+
## Executive Summary
|
|
368
|
+
<!-- one page: goal, strategy in two sentences, budget, expected outcome, top 3 risks -->
|
|
369
|
+
|
|
370
|
+
## Assumptions
|
|
371
|
+
<!-- every material ASSUMPTION [EV-nn] with range and what changes if it is wrong -->
|
|
372
|
+
|
|
373
|
+
## 1. Situation
|
|
374
|
+
<!-- from research + situation analysis: market [EV], competitors, VoC, SWOT -->
|
|
375
|
+
|
|
376
|
+
## 2. Objectives
|
|
377
|
+
<!-- from OBJECTIVES.md -->
|
|
378
|
+
|
|
379
|
+
## 3. Strategy
|
|
380
|
+
<!-- from STRATEGY.md: STP, positioning, messaging -->
|
|
381
|
+
|
|
382
|
+
## 4. Tactics
|
|
383
|
+
<!-- from TACTICAL_PLAN.md: channels, budget, funnel -->
|
|
384
|
+
|
|
385
|
+
## 5. Action
|
|
386
|
+
<!-- from ACTION_90D.md -->
|
|
387
|
+
|
|
388
|
+
## 6. Control
|
|
389
|
+
<!-- from MEASUREMENT_PLAN.md: KPIs, cadence, kill/scale -->
|
|
390
|
+
|
|
391
|
+
## Appendix — Evidence Ledger
|
|
392
|
+
<!-- the ledger table, verbatim -->
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
## mkt_docs/deliverables/ONE_PAGER.md
|
|
396
|
+
|
|
397
|
+
```markdown
|
|
398
|
+
---
|
|
399
|
+
description: One-page strategy summary for stakeholders.
|
|
400
|
+
status: DRAFT
|
|
401
|
+
---
|
|
402
|
+
# [Business] — Marketing on a Page
|
|
403
|
+
|
|
404
|
+
**Goal:** ... **Budget:** ... [EV-nn] **Horizon:** ...
|
|
405
|
+
**Positioning:** <!-- the statement -->
|
|
406
|
+
**Objectives:** <!-- O1..On, one line each -->
|
|
407
|
+
**Core channels:** <!-- 2-3, with budget share -->
|
|
408
|
+
**We will know it works when:** <!-- top KPIs -->
|
|
409
|
+
**We stop/scale when:** <!-- headline kill/scale criteria -->
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
## mkt_docs/spikes/RESEARCH_[topic].md
|
|
413
|
+
|
|
414
|
+
```markdown
|
|
415
|
+
# Research Spike: [topic]
|
|
416
|
+
|
|
417
|
+
## Question to answer
|
|
418
|
+
## Time-box
|
|
419
|
+
## Method & sources
|
|
420
|
+
## Answer / Outcome
|
|
421
|
+
<!-- ledger rows created: EV-nn..EV-mm -->
|
|
422
|
+
## Consequences
|
|
423
|
+
<!-- max 1 page. For strategy decisions, feed into E2/E3. -->
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
## mkt_docs/audit/handoff.md
|
|
427
|
+
|
|
428
|
+
Just a pointer, ≤ 20 lines.
|
|
429
|
+
|
|
430
|
+
```markdown
|
|
431
|
+
# Handoff
|
|
432
|
+
Date: 2026-01-01 (UTC)
|
|
433
|
+
Engagement: E3 — [name]
|
|
434
|
+
Agent: Claude
|
|
435
|
+
|
|
436
|
+
## Phase state
|
|
437
|
+
- Phase reached: <!-- e.g. 6 Strategy, awaiting user gate -->
|
|
438
|
+
|
|
439
|
+
## Next step
|
|
440
|
+
<!-- one line -->
|
|
441
|
+
|
|
442
|
+
## Session notes
|
|
443
|
+
<!-- gates passed? open review findings? ledger rows pending sources? -->
|
|
444
|
+
```
|