taketomarket 0.1.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 (123) hide show
  1. package/.claude-plugin/plugin.json +10 -0
  2. package/LICENSE +21 -0
  3. package/README.md +419 -0
  4. package/agents/ttm-producer.md +53 -0
  5. package/bin/lib/campaign.cjs +553 -0
  6. package/bin/lib/commit.cjs +105 -0
  7. package/bin/lib/core.cjs +172 -0
  8. package/bin/lib/deviation.cjs +149 -0
  9. package/bin/lib/drift-log.cjs +219 -0
  10. package/bin/lib/health.cjs +438 -0
  11. package/bin/lib/slug.cjs +59 -0
  12. package/bin/lib/state.cjs +96 -0
  13. package/bin/ttm-tools.cjs +157 -0
  14. package/gates/base-gates.md +266 -0
  15. package/gates/discipline/.gitkeep +0 -0
  16. package/gates/gate-evaluation.md +341 -0
  17. package/gates/meta-gates.md +19 -0
  18. package/install.js +307 -0
  19. package/package.json +53 -0
  20. package/playbooks/.gitkeep +0 -0
  21. package/playbooks/aeo.md +223 -0
  22. package/playbooks/affiliate.md +272 -0
  23. package/playbooks/base.md +110 -0
  24. package/playbooks/email.md +306 -0
  25. package/playbooks/events.md +320 -0
  26. package/playbooks/linkedin.md +263 -0
  27. package/playbooks/paid-ads.md +318 -0
  28. package/playbooks/pr-media.md +296 -0
  29. package/playbooks/seo.md +284 -0
  30. package/playbooks/social.md +305 -0
  31. package/playbooks/youtube.md +325 -0
  32. package/references/context-loading.md +107 -0
  33. package/references/learnings-extraction.md +94 -0
  34. package/references/measurement-template.md +48 -0
  35. package/references/meta-gate-evaluation.md +169 -0
  36. package/references/positioning-check-report.md +197 -0
  37. package/references/review-checklist.md +78 -0
  38. package/references/ship-checklist-items.md +94 -0
  39. package/settings.json +4 -0
  40. package/skills/ttm-aeo-check/SKILL.md +20 -0
  41. package/skills/ttm-affiliate-kit/SKILL.md +19 -0
  42. package/skills/ttm-archive/SKILL.md +13 -0
  43. package/skills/ttm-brand-refresh/SKILL.md +19 -0
  44. package/skills/ttm-brief/SKILL.md +14 -0
  45. package/skills/ttm-competitor-scan/SKILL.md +19 -0
  46. package/skills/ttm-email-preflight/SKILL.md +19 -0
  47. package/skills/ttm-fix/SKILL.md +13 -0
  48. package/skills/ttm-health/SKILL.md +12 -0
  49. package/skills/ttm-icp-refresh/SKILL.md +19 -0
  50. package/skills/ttm-init/SKILL.md +12 -0
  51. package/skills/ttm-keyword-map/SKILL.md +19 -0
  52. package/skills/ttm-learn/SKILL.md +14 -0
  53. package/skills/ttm-measure/SKILL.md +14 -0
  54. package/skills/ttm-new-campaign/SKILL.md +13 -0
  55. package/skills/ttm-next/SKILL.md +12 -0
  56. package/skills/ttm-positioning-check/SKILL.md +19 -0
  57. package/skills/ttm-positioning-shift/SKILL.md +19 -0
  58. package/skills/ttm-produce/SKILL.md +14 -0
  59. package/skills/ttm-repurpose/SKILL.md +20 -0
  60. package/skills/ttm-research/SKILL.md +13 -0
  61. package/skills/ttm-resume/SKILL.md +13 -0
  62. package/skills/ttm-review/SKILL.md +13 -0
  63. package/skills/ttm-seo-audit/SKILL.md +20 -0
  64. package/skills/ttm-ship/SKILL.md +13 -0
  65. package/skills/ttm-state/SKILL.md +13 -0
  66. package/skills/ttm-verify/SKILL.md +14 -0
  67. package/templates/agents-md.md +65 -0
  68. package/templates/campaign-brief.md +74 -0
  69. package/templates/campaign-research.md +39 -0
  70. package/templates/campaign-state.md +40 -0
  71. package/templates/claude-md.md +65 -0
  72. package/templates/deviation-log.md +12 -0
  73. package/templates/drift-log.md +17 -0
  74. package/templates/fix-brief.md +59 -0
  75. package/templates/fix-log.md +22 -0
  76. package/templates/measurement-report.md +75 -0
  77. package/templates/migration-plan.md +24 -0
  78. package/templates/production-manifest.json +20 -0
  79. package/templates/reference-files/brand.md +45 -0
  80. package/templates/reference-files/calendar.md +30 -0
  81. package/templates/reference-files/channels.md +40 -0
  82. package/templates/reference-files/competitors.md +40 -0
  83. package/templates/reference-files/icp.md +50 -0
  84. package/templates/reference-files/learnings.md +40 -0
  85. package/templates/reference-files/metrics.md +42 -0
  86. package/templates/reference-files/positioning.md +38 -0
  87. package/templates/reference-files/state.md +27 -0
  88. package/templates/verification-report.md +59 -0
  89. package/workflows/discipline/.gitkeep +0 -0
  90. package/workflows/discipline/aeo-check.md +180 -0
  91. package/workflows/discipline/affiliate-kit.md +147 -0
  92. package/workflows/discipline/email-preflight.md +150 -0
  93. package/workflows/discipline/keyword-map.md +125 -0
  94. package/workflows/discipline/repurpose.md +329 -0
  95. package/workflows/discipline/seo-audit.md +169 -0
  96. package/workflows/lifecycle/.gitkeep +0 -0
  97. package/workflows/lifecycle/brief-positioning-check.md +90 -0
  98. package/workflows/lifecycle/brief.md +355 -0
  99. package/workflows/lifecycle/fix.md +495 -0
  100. package/workflows/lifecycle/learn.md +405 -0
  101. package/workflows/lifecycle/measure.md +379 -0
  102. package/workflows/lifecycle/produce.md +383 -0
  103. package/workflows/lifecycle/research.md +264 -0
  104. package/workflows/lifecycle/review.md +432 -0
  105. package/workflows/lifecycle/ship.md +521 -0
  106. package/workflows/lifecycle/verify.md +507 -0
  107. package/workflows/reference-mgmt/.gitkeep +0 -0
  108. package/workflows/reference-mgmt/brand-refresh.md +193 -0
  109. package/workflows/reference-mgmt/competitor-scan.md +228 -0
  110. package/workflows/reference-mgmt/icp-refresh.md +200 -0
  111. package/workflows/reference-mgmt/positioning-check.md +339 -0
  112. package/workflows/reference-mgmt/positioning-shift.md +368 -0
  113. package/workflows/setup/.gitkeep +0 -0
  114. package/workflows/setup/init-questions.md +225 -0
  115. package/workflows/setup/init-validation.md +155 -0
  116. package/workflows/setup/init.md +449 -0
  117. package/workflows/setup/new-campaign.md +134 -0
  118. package/workflows/utility/.gitkeep +0 -0
  119. package/workflows/utility/archive.md +334 -0
  120. package/workflows/utility/health.md +166 -0
  121. package/workflows/utility/next.md +187 -0
  122. package/workflows/utility/resume.md +249 -0
  123. package/workflows/utility/state.md +207 -0
@@ -0,0 +1,228 @@
1
+ <purpose>
2
+ On-demand competitor analysis that updates COMPETITORS.md with new intelligence.
3
+ Detects WebSearch/WebFetch MCP tools for automated research; falls back to manual
4
+ paste when tools unavailable. Validates findings against POSITIONING.md to identify
5
+ differentiation gaps and opportunities. Single-pass workflow per D-06 and D-09.
6
+ </purpose>
7
+
8
+ <required_reading>
9
+ @${CLAUDE_PLUGIN_ROOT}/references/context-loading.md
10
+ @${CLAUDE_PLUGIN_ROOT}/templates/reference-files/competitors.md
11
+ </required_reading>
12
+
13
+ <constraints>
14
+ ## POSITIONING.md is READ-ONLY
15
+
16
+ **Do NOT modify `.marketing/POSITIONING.md` during this workflow.**
17
+
18
+ POSITIONING.md is an architectural invariant. If you detect positioning drift:
19
+ - Flag the issue and recommend running /ttm-positioning-check
20
+ - Recommend /ttm-positioning-shift if a deliberate change is needed
21
+
22
+ Only /ttm-positioning-shift and /ttm-init may modify POSITIONING.md.
23
+ </constraints>
24
+
25
+ <process>
26
+
27
+ ## Text-Mode Detection
28
+
29
+ **Text mode (`--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS`
30
+ or if the runtime is not Claude Code. When TEXT_MODE is active, replace every
31
+ `AskUserQuestion` call with a plain-text numbered list.
32
+
33
+ Detection:
34
+ ```bash
35
+ if echo "$ARGUMENTS" | grep -q -- '--text'; then TEXT_MODE=true; fi
36
+ ```
37
+
38
+ If `AskUserQuestion` tool is not available in the current runtime, set `TEXT_MODE=true`.
39
+ When TEXT_MODE is active, replace each AskUserQuestion with a plain-text numbered list.
40
+
41
+ ---
42
+
43
+ ## Step 1: Load Context
44
+
45
+ ```
46
+ takeToMarket > LOADING CONTEXT
47
+ ```
48
+
49
+ **Load Tier 1 summaries** from all 9 reference files (lines 1 to `<!-- END_SUMMARY -->`):
50
+ - `.marketing/POSITIONING.md`
51
+ - `.marketing/BRAND.md`
52
+ - `.marketing/ICP.md`
53
+ - `.marketing/CHANNELS.md`
54
+ - `.marketing/STATE.md` (frontmatter only)
55
+ - `.marketing/CALENDAR.md`
56
+ - `.marketing/COMPETITORS.md`
57
+ - `.marketing/METRICS.md`
58
+ - `.marketing/LEARNINGS.md`
59
+
60
+ **Load Tier 2 (full content)** for analysis:
61
+ - `.marketing/COMPETITORS.md`
62
+ - `.marketing/POSITIONING.md`
63
+
64
+ If `.marketing/COMPETITORS.md` does not exist, error:
65
+ "COMPETITORS.md not found. Run /ttm-init first to set up your marketing system."
66
+ Exit.
67
+
68
+ Parse POSITIONING.md for: category, primary differentiator, target audience, must-not-say terms.
69
+ Parse COMPETITORS.md for: existing competitor list, positioning map, SOV baselines.
70
+
71
+ ---
72
+
73
+ ## Step 2: Tool Detection
74
+
75
+ Attempt a WebSearch call with a minimal test query related to the user's category
76
+ (from POSITIONING.md category field): `"${CATEGORY} competitors ${CURRENT_YEAR}"`.
77
+
78
+ ### When WebSearch is available (SEARCH_MODE=web)
79
+
80
+ ```
81
+ takeToMarket > COMPETITOR SCAN MODE: WEB
82
+ ```
83
+
84
+ Proceed to Step 3 with automated research capabilities.
85
+
86
+ ### When WebSearch is NOT available (SEARCH_MODE=manual)
87
+
88
+ ```
89
+ takeToMarket > COMPETITOR SCAN MODE: MANUAL
90
+ ```
91
+
92
+ Tell the user:
93
+ ```
94
+ Web search tools are not available in this session.
95
+ To run a competitor scan, please paste any of the following:
96
+
97
+ 1. Competitor websites or landing page content
98
+ 2. Competitor social media posts or ad creative
99
+ 3. Industry reports or market analysis
100
+ 4. Search results for your category keywords
101
+ 5. Any other competitive intelligence you have gathered
102
+
103
+ Paste your findings below and I will analyze them.
104
+ ```
105
+
106
+ Wait for the user to paste content.
107
+
108
+ ---
109
+
110
+ ## Step 3: Research Competitors
111
+
112
+ ### If SEARCH_MODE=web:
113
+
114
+ For each competitor already listed in COMPETITORS.md:
115
+ - WebSearch: `"${COMPETITOR_NAME} ${CATEGORY}"` for latest positioning
116
+ - WebFetch on competitor homepage URL if known (from COMPETITORS.md)
117
+
118
+ Search for new entrants:
119
+ - WebSearch: `"${CATEGORY} alternatives ${CURRENT_YEAR}"`
120
+ - WebSearch: `"${CATEGORY} new tools ${CURRENT_YEAR}"`
121
+
122
+ Tag all findings with confidence levels:
123
+ - **HIGH**: verified from competitor URL or cited data from web search
124
+ - **MEDIUM**: indirect evidence or partial match from search results
125
+ - **LOW**: inference drawn from patterns without direct evidence
126
+
127
+ ### If SEARCH_MODE=manual:
128
+
129
+ Analyze pasted content for:
130
+ - Positioning claims and messaging themes
131
+ - Channel presence and content strategy signals
132
+ - Pricing signals or packaging changes
133
+ - New competitors not in current COMPETITORS.md
134
+
135
+ Tag all pasted insights as **MEDIUM** confidence (user-provided, not independently verified).
136
+ Insights cross-referenced against existing COMPETITORS.md data may be elevated to **HIGH**.
137
+
138
+ ---
139
+
140
+ ## Step 4: Analyze and Compare
141
+
142
+ For each competitor (existing and newly discovered):
143
+
144
+ 1. **Current positioning claim:** What they say they are/do
145
+ 2. **Differentiator comparison:** Compare against our POSITIONING.md primary differentiator
146
+ 3. **Overlap areas:** Where competitor messaging is similar to ours (risk zones)
147
+ 4. **Gap opportunities:** Areas competitors are not covering that we could own
148
+ 5. **SOV signals:** Any share-of-voice indicators (content volume, social presence, ad spend)
149
+
150
+ Summarize findings:
151
+ ```
152
+ takeToMarket > ANALYSIS COMPLETE
153
+
154
+ Competitors analyzed: ${TOTAL_COUNT}
155
+ New competitors found: ${NEW_COUNT}
156
+ Positioning overlaps: ${OVERLAP_COUNT}
157
+ Gap opportunities: ${GAP_COUNT}
158
+ ```
159
+
160
+ ---
161
+
162
+ ## Step 5: Validate and Update
163
+
164
+ Ask user to confirm via AskUserQuestion (or text-mode freeform):
165
+
166
+ **Question 1:**
167
+ - header: "Confirm New Competitors"
168
+ - question: "New competitors found: [list names]. Add all to COMPETITORS.md? Or specify which to include/exclude."
169
+
170
+ **Question 2:**
171
+ - header: "Update Existing Competitors"
172
+ - question: "Updated intelligence for: [list names with change summary]. Accept all updates? Or specify which to accept/reject."
173
+
174
+ **Question 3:**
175
+ - header: "Inactive Competitors"
176
+ - question: "Any competitors to mark as inactive/irrelevant? List names or type 'none'."
177
+
178
+ Validate all proposed updates:
179
+ - No update suggests user adopt a competitor's positioning
180
+ - No update contradicts POSITIONING.md differentiator or must-not-say terms
181
+ - Gap opportunities align with our positioning scope
182
+
183
+ Write updated `.marketing/COMPETITORS.md`:
184
+ - Update existing competitor entries with new findings (positioning, strengths, weaknesses)
185
+ - Add new competitors with full profiles (name, positioning, strength, weakness)
186
+ - Mark inactive competitors with `[INACTIVE: YYYY-MM-DD]` suffix in name column
187
+ - Update `## Positioning Map` section with new/changed positions
188
+ - Update `## Share of Voice Baseline` with new SOV signals
189
+ - Update `## Competitor Content Analysis` for analyzed competitors
190
+
191
+ **CRITICAL:** Preserve `<!-- _SUMMARY -->` and `<!-- END_SUMMARY -->` delimiters exactly.
192
+ Update summary block if top competitors or positioning-vs-them changed.
193
+ Preserve all existing file structure and section ordering.
194
+
195
+ ---
196
+
197
+ ## Step 6: Completion Banner
198
+
199
+ ```
200
+ ========================================
201
+ takeToMarket > COMPETITOR SCAN COMPLETE
202
+ ========================================
203
+
204
+ Competitors analyzed: ${COUNT}
205
+ New competitors found: ${NEW_COUNT}
206
+ Positioning overlaps detected: ${OVERLAP_COUNT}
207
+ Research method: ${SEARCH_MODE}
208
+
209
+ Next steps:
210
+ - Review updated .marketing/COMPETITORS.md
211
+ - Run /ttm-positioning-check if overlaps concern you
212
+ ```
213
+
214
+ </process>
215
+
216
+ <success_criteria>
217
+ - [ ] Tier 1 summaries loaded from all 9 reference files
218
+ - [ ] Tier 2 full content loaded for COMPETITORS.md and POSITIONING.md
219
+ - [ ] WebSearch tool detection attempted before research
220
+ - [ ] SEARCH_MODE=web path uses WebSearch and WebFetch for automated research
221
+ - [ ] SEARCH_MODE=manual path prompts user to paste competitive intelligence
222
+ - [ ] All findings tagged with confidence levels (HIGH/MEDIUM/LOW)
223
+ - [ ] Analysis compares each competitor against POSITIONING.md differentiator
224
+ - [ ] User confirms new additions and updates before writing
225
+ - [ ] No update contradicts POSITIONING.md
226
+ - [ ] COMPETITORS.md updated with preserved structure and summary markers
227
+ - [ ] Completion banner displayed with scan results
228
+ </success_criteria>
@@ -0,0 +1,200 @@
1
+ <purpose>
2
+ Update ICP.md from new customer data (calls, reviews, feedback, surveys). Validates
3
+ all changes against POSITIONING.md target audience field before writing. Single-pass
4
+ workflow per D-06.
5
+ </purpose>
6
+
7
+ <required_reading>
8
+ @${CLAUDE_PLUGIN_ROOT}/references/context-loading.md
9
+ @${CLAUDE_PLUGIN_ROOT}/templates/reference-files/icp.md
10
+ </required_reading>
11
+
12
+ <constraints>
13
+ ## POSITIONING.md is READ-ONLY
14
+
15
+ **Do NOT modify `.marketing/POSITIONING.md` during this workflow.**
16
+
17
+ POSITIONING.md is an architectural invariant. If you detect positioning drift:
18
+ - Flag the issue and recommend running /ttm-positioning-check
19
+ - Recommend /ttm-positioning-shift if a deliberate change is needed
20
+
21
+ Only /ttm-positioning-shift and /ttm-init may modify POSITIONING.md.
22
+ </constraints>
23
+
24
+ <process>
25
+
26
+ ## Text-Mode Detection
27
+
28
+ **Text mode (`--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS`
29
+ or if the runtime is not Claude Code. When TEXT_MODE is active, replace every
30
+ `AskUserQuestion` call with a plain-text numbered list.
31
+
32
+ Detection:
33
+ ```bash
34
+ if echo "$ARGUMENTS" | grep -q -- '--text'; then TEXT_MODE=true; fi
35
+ ```
36
+
37
+ If `AskUserQuestion` tool is not available in the current runtime, set `TEXT_MODE=true`.
38
+ When TEXT_MODE is active, replace each AskUserQuestion with a plain-text numbered list.
39
+
40
+ ---
41
+
42
+ ## Step 1: Load Context
43
+
44
+ ```
45
+ takeToMarket > LOADING CONTEXT
46
+ ```
47
+
48
+ **Load Tier 1 summaries** from all 9 reference files (lines 1 to `<!-- END_SUMMARY -->`):
49
+ - `.marketing/POSITIONING.md`
50
+ - `.marketing/BRAND.md`
51
+ - `.marketing/ICP.md`
52
+ - `.marketing/CHANNELS.md`
53
+ - `.marketing/STATE.md` (frontmatter only)
54
+ - `.marketing/CALENDAR.md`
55
+ - `.marketing/COMPETITORS.md`
56
+ - `.marketing/METRICS.md`
57
+ - `.marketing/LEARNINGS.md`
58
+
59
+ **Load Tier 2 (full content)** for the file being refreshed:
60
+ - `.marketing/ICP.md`
61
+
62
+ If `.marketing/ICP.md` does not exist, error:
63
+ "ICP.md not found. Run /ttm-init first to set up your marketing system."
64
+ Exit.
65
+
66
+ Parse the current ICP.md into structured sections:
67
+ - `CURRENT_PRIMARY_SEGMENT` -- from `## Primary Segment`
68
+ - `CURRENT_JTBD` -- from `## Jobs-to-Be-Done` table rows
69
+ - `CURRENT_PAINS` -- from `### Pain Points` table rows
70
+ - `CURRENT_TRIGGERS` -- from `### Buying Triggers`
71
+ - `CURRENT_ANTI_ICP` -- from `## Anti-ICP Profile` table rows
72
+ - `CURRENT_LANGUAGE` -- from `## Customer Language Library` table rows
73
+
74
+ ---
75
+
76
+ ## Step 2: Present Current State and Gather Updates
77
+
78
+ Display current ICP.md sections to the user:
79
+
80
+ ```
81
+ takeToMarket > ICP REFRESH
82
+
83
+ Primary Segment: ${CURRENT_PRIMARY_SEGMENT summary}
84
+ Jobs-to-Be-Done: ${count} entries
85
+ Pain Points: ${count} entries
86
+ Anti-ICP: ${count} entries
87
+ Customer Language: ${count} phrases
88
+ ```
89
+
90
+ Ask user via AskUserQuestion (or text-mode freeform) -- collect responses:
91
+
92
+ **Question 1:**
93
+ - header: "New Customer Data"
94
+ - question: "What new customer data do you have? Paste call notes, reviews, feedback, survey results, or describe your findings."
95
+
96
+ **Question 2:**
97
+ - header: "New Jobs-to-Be-Done or Pain Points"
98
+ - question: "Any new JTBD or pain points discovered from this data? Describe each, or type 'none'."
99
+
100
+ **Question 3:**
101
+ - header: "New Trigger Events"
102
+ - question: "Any new buying trigger events identified? Describe each, or type 'none'."
103
+
104
+ **Question 4:**
105
+ - header: "Customer Language"
106
+ - question: "New customer language phrases to add to the library? Provide exact quotes with context and source, or type 'none'."
107
+
108
+ **Question 5:**
109
+ - header: "Anti-ICP Updates"
110
+ - question: "Any new segments to add to anti-ICP? Describe people who are NOT your target and why, or type 'none'."
111
+
112
+ If Question 1 is "none" AND all other answers are "none": display "No new data provided. ICP.md is unchanged." Exit.
113
+
114
+ ---
115
+
116
+ ## Step 3: Validate Against Positioning
117
+
118
+ Load the target audience, primary differentiator, and must-not-say terms from
119
+ the POSITIONING.md Tier 1 summary (already loaded in Step 1).
120
+
121
+ For each proposed change, validate:
122
+
123
+ **New segments/JTBD:**
124
+ - Check new segment descriptions align with POSITIONING.md target audience definition
125
+ - Check new JTBD do not describe jobs outside the positioning scope
126
+
127
+ **New customer language:**
128
+ - Check phrases do not include must-not-say terms from POSITIONING.md
129
+ - Check language aligns with the positioning category and differentiator
130
+
131
+ **Anti-ICP additions:**
132
+ - Check anti-ICP entries do not exclude groups that overlap with the POSITIONING.md
133
+ target audience (would create a contradiction)
134
+
135
+ If conflict detected:
136
+ ```
137
+ takeToMarket > POSITIONING CONFLICT DETECTED
138
+
139
+ Conflict: [specific description]
140
+ Affected field: [which ICP.md section]
141
+ POSITIONING.md reference: [the conflicting positioning element]
142
+
143
+ Please resolve this conflict before proceeding.
144
+ Recommendation: Adjust the proposed change, or run /ttm-positioning-shift if the
145
+ positioning itself needs updating.
146
+ ```
147
+
148
+ Ask user to revise the conflicting item or skip it.
149
+
150
+ ---
151
+
152
+ ## Step 4: Write Updated ICP.md
153
+
154
+ Analyze raw customer data from Question 1 alongside specific additions from Questions 2-5.
155
+ Extract structured insights and apply to ICP.md sections:
156
+
157
+ - **New JTBD:** Add rows to `## Jobs-to-Be-Done` table (job, priority, current solution)
158
+ - **New pain points:** Add rows to `### Pain Points` table (pain, severity, frequency)
159
+ - **New triggers:** Add to `### Buying Triggers` section
160
+ - **New anti-ICP entries:** Add rows to `## Anti-ICP Profile` table (characteristic, reason)
161
+ - **New language phrases:** Add rows to `## Customer Language Library` table (context, phrase, source)
162
+
163
+ **CRITICAL:** Preserve `<!-- _SUMMARY -->` and `<!-- END_SUMMARY -->` delimiters exactly.
164
+ Update the summary block if primary segment, top pains, or anti-ICP changed.
165
+ Preserve all existing structure and ordering. Do NOT remove existing entries.
166
+
167
+ Write the updated file via the Write tool.
168
+
169
+ ---
170
+
171
+ ## Step 5: Completion Banner
172
+
173
+ ```
174
+ ========================================
175
+ takeToMarket > ICP REFRESH COMPLETE
176
+ ========================================
177
+
178
+ Updated sections:
179
+ - [list of changed sections, e.g., "Pain Points (2 added)"]
180
+ - [e.g., "Customer Language (4 new phrases)"]
181
+ - [e.g., "Anti-ICP (1 new exclusion)"]
182
+
183
+ Data source: [brief description of input data type]
184
+
185
+ Next: Run /ttm-positioning-check to verify alignment across recent assets
186
+ ```
187
+
188
+ </process>
189
+
190
+ <success_criteria>
191
+ - [ ] Tier 1 summaries loaded from all 9 reference files
192
+ - [ ] Tier 2 full content loaded for ICP.md
193
+ - [ ] Current ICP state displayed to user
194
+ - [ ] User provided new customer data or specific updates
195
+ - [ ] All proposed changes validated against POSITIONING.md target audience
196
+ - [ ] Conflicts flagged and resolved before writing
197
+ - [ ] ICP.md updated with new entries and preserved structure
198
+ - [ ] Summary markers (<!-- _SUMMARY --> / <!-- END_SUMMARY -->) preserved
199
+ - [ ] Completion banner displayed with changed sections
200
+ </success_criteria>