@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.
@@ -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
+ ```