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,225 @@
1
+ # Interview Question Bank
2
+
3
+ ## Usage
4
+
5
+ This file is referenced by the main init workflow via `@workflows/setup/init-questions.md`.
6
+ It defines all questions -- both AskUserQuestion (structured) and inline freeform.
7
+ The workflow orchestrates the sequence; this file provides the question content.
8
+
9
+ ---
10
+
11
+ ## Section 1: Product and Positioning
12
+
13
+ ### Structured Questions (AskUserQuestion)
14
+
15
+ **Product Category**
16
+ - header: "Category"
17
+ - question: "What category does your product compete in?"
18
+ - multiSelect: false
19
+ - options:
20
+ - label: "SaaS / Software"
21
+ description: "Software product or service"
22
+ - label: "E-commerce / DTC"
23
+ description: "Direct-to-consumer physical product"
24
+ - label: "Professional Services"
25
+ description: "Agency, consulting, or services business"
26
+ - label: "Developer Tools"
27
+ description: "Tools for software developers"
28
+ - label: "Other"
29
+ description: "Something else (you will describe it)"
30
+
31
+ ### Freeform Questions
32
+
33
+ 1. "Tell me about your product or service. What does it do, and who is it for?"
34
+ 2. "What's the ONE thing your product does that competitors don't? Not a general advantage -- a specific capability or mechanism."
35
+ 3. "Give me 3 proof points -- specific numbers, case studies, or benchmarks that back up your differentiator. Each needs a source."
36
+ 4. "What terms or phrases should we NEVER use in our marketing? Give a reason for each."
37
+ 5. "Who are you positioning against? Not just competitors -- what alternatives does your target audience use today?"
38
+
39
+ ### Template Fields Collected
40
+
41
+ positioning.md: Category, Target audience, Primary differentiator, Proof points (3+), Must-not-say, Competitive frame, Positioning History
42
+
43
+ ---
44
+
45
+ ## Section 2: Brand and Voice
46
+
47
+ ### Structured Questions (AskUserQuestion)
48
+
49
+ **Voice Archetype**
50
+ - header: "Voice"
51
+ - question: "Which voice archetype best describes your brand?"
52
+ - multiSelect: false
53
+ - options:
54
+ - label: "Authoritative Expert"
55
+ description: "Confident, data-driven, thought leadership"
56
+ - label: "Friendly Guide"
57
+ description: "Warm, approachable, educational"
58
+ - label: "Bold Challenger"
59
+ description: "Direct, provocative, convention-breaking"
60
+ - label: "Analytical Observer"
61
+ description: "Measured, precise, evidence-based"
62
+ - label: "Empathetic Advisor"
63
+ description: "Understanding, supportive, solution-oriented"
64
+ - label: "Other"
65
+ description: "Something else (you will describe it)"
66
+
67
+ **Formality Level**
68
+ - header: "Formality"
69
+ - question: "How formal is your brand's communication?"
70
+ - multiSelect: false
71
+ - options:
72
+ - label: "Very formal"
73
+ description: "Academic, institutional, regulatory"
74
+ - label: "Professional"
75
+ description: "Business-appropriate, polished"
76
+ - label: "Conversational"
77
+ description: "Natural, relaxed but informed"
78
+ - label: "Casual"
79
+ description: "Informal, colloquial, personality-forward"
80
+ - label: "Varies by channel"
81
+ description: "Different formality per context"
82
+
83
+ ### Freeform Questions
84
+
85
+ 1. "Describe your brand's personality in 2-3 sentences. How should your content sound?"
86
+ 2. "Give me an example of a sentence that sounds exactly like your brand. Then give me one that sounds nothing like it."
87
+ 3. "What words or phrases are absolutely banned from your marketing? Why?"
88
+ 4. "How should your tone shift between blog posts, social media, email, and landing pages?"
89
+
90
+ ### Template Fields Collected
91
+
92
+ brand.md: Voice archetype, Voice attributes, Tone per context (Blog/Social/Email/Landing/Support), Banned words with reasoning, Proof points, Good examples, Bad examples
93
+
94
+ ---
95
+
96
+ ## Section 3: ICP and Audience
97
+
98
+ ### Structured Questions (AskUserQuestion)
99
+
100
+ None -- this section is entirely freeform to capture rich qualitative data.
101
+
102
+ ### Freeform Questions
103
+
104
+ 1. "Describe your ideal customer. Include their role, company size, industry, and any geographic focus."
105
+ 2. "What is the main job your customer is trying to get done when they find your product?"
106
+ 3. "What are the top 3 pain points that drive them to look for a solution like yours? How severe and frequent is each?"
107
+ 4. "What events or situations trigger them to start looking for a solution?"
108
+ 5. "Who should we explicitly NOT target? Describe your anti-ICP and why they are a bad fit."
109
+ 6. "Share 3-5 exact phrases your customers use to describe their problems. These can come from support tickets, reviews, sales calls, or interviews."
110
+
111
+ ### Template Fields Collected
112
+
113
+ icp.md: Primary segment, Demographics, Psychographics, JTBD, Pain points (severity + frequency), Buying triggers, Anti-ICP, Customer language library
114
+
115
+ ---
116
+
117
+ ## Section 4: Channels
118
+
119
+ ### Structured Questions (AskUserQuestion)
120
+
121
+ **Primary Channel**
122
+ - header: "Channel"
123
+ - question: "What is your primary marketing channel?"
124
+ - multiSelect: false
125
+ - options:
126
+ - label: "Organic Search / SEO"
127
+ description: "Search engine traffic and rankings"
128
+ - label: "LinkedIn"
129
+ description: "LinkedIn organic and/or ads"
130
+ - label: "Email"
131
+ description: "Email marketing and newsletters"
132
+ - label: "Social Media"
133
+ description: "Twitter/X, Instagram, TikTok, etc."
134
+ - label: "Paid Ads"
135
+ description: "Google Ads, Meta Ads, etc."
136
+ - label: "Content / Blog"
137
+ description: "Long-form content marketing"
138
+ - label: "YouTube"
139
+ description: "Video content marketing"
140
+ - label: "Events"
141
+ description: "Conferences, webinars, meetups"
142
+ - label: "Other"
143
+ description: "Something else (you will describe it)"
144
+
145
+ ### Freeform Questions
146
+
147
+ 1. "List all your active marketing channels with their current performance baselines (traffic, engagement, conversion rate)."
148
+ 2. "Are there channels you tried and paused? Which ones and why?"
149
+ 3. "Are there channels you will never use? Which ones and why?"
150
+ 4. "How is your marketing budget split across channels? Approximate percentages are fine."
151
+
152
+ ### Template Fields Collected
153
+
154
+ channels.md: Active channels with baselines, Primary channel, Dormant channels with reasons, Banned channels with reasons, Budget allocation, Channel-specific rules
155
+
156
+ ---
157
+
158
+ ## Section 5: Competitors
159
+
160
+ ### Structured Questions (AskUserQuestion)
161
+
162
+ None -- competitor analysis requires nuanced freeform answers.
163
+
164
+ ### Freeform Questions
165
+
166
+ 1. "Name your top 3 direct competitors. For each: what is their positioning, key strength, and key weakness?"
167
+ 2. "If you drew a 2x2 positioning map for your category, what would the two axes be? Where do you and your competitors fall on it?"
168
+ 3. "Estimate share of voice: who dominates the conversation in your space? On which channels?"
169
+ 4. "What content do your competitors publish? Which formats and channels do they focus on, and what seems to work for them?"
170
+
171
+ ### Template Fields Collected
172
+
173
+ competitors.md: Direct competitors (positioning, strength, weakness), Positioning map (axes + positions), Share of voice baseline, Competitor content analysis
174
+
175
+ ---
176
+
177
+ ## Section 6: Metrics and Calendar
178
+
179
+ ### Structured Questions (AskUserQuestion)
180
+
181
+ **Attribution Model**
182
+ - header: "Attribution"
183
+ - question: "Which attribution model do you use (or want to use)?"
184
+ - multiSelect: false
185
+ - options:
186
+ - label: "Last-touch"
187
+ description: "100% credit to last interaction before conversion"
188
+ - label: "First-touch"
189
+ description: "100% credit to first interaction"
190
+ - label: "Linear"
191
+ description: "Equal credit across all touchpoints"
192
+ - label: "Time-decay"
193
+ description: "More credit to recent touchpoints"
194
+ - label: "Custom"
195
+ description: "Custom model (you will describe it)"
196
+ - label: "Not sure"
197
+ description: "Need help deciding"
198
+
199
+ ### Freeform Questions
200
+
201
+ 1. "What is your primary outcome metric for marketing? (e.g., qualified pipeline, revenue, signups). What is your target?"
202
+ 2. "What secondary metrics do you track? What leading indicators help you predict outcomes?"
203
+ 3. "What are your current baselines for key metrics? (Include metric name, current value, and date measured.)"
204
+ 4. "What is your theme or key initiative for this quarter?"
205
+ 5. "Do you have any upcoming launches or campaigns already planned? Dates and descriptions."
206
+ 6. "What is your content publishing cadence per channel? (e.g., blog 2x/week, email weekly)"
207
+ 7. "Are there any blackout dates -- holidays, company events, industry events where you should not publish?"
208
+
209
+ ### Template Fields Collected
210
+
211
+ metrics.md: Primary outcome metric (metric/target/window/source), Secondary metrics, Leading indicators, Baselines, Attribution model configuration
212
+ calendar.md: Quarterly themes, Launch calendar, Always-on cadence, Blackout dates
213
+
214
+ ---
215
+
216
+ ## Question-to-Template Mapping
217
+
218
+ | Section | Template File | Key Fields Collected |
219
+ |---------|--------------|---------------------|
220
+ | 1 | positioning.md | Category, Target audience, Primary differentiator, Proof points, Must-not-say, Competitive frame |
221
+ | 2 | brand.md | Voice archetype, Tone per context, Banned words, Proof points, Examples |
222
+ | 3 | icp.md | Primary segment, JTBD, Pains, Triggers, Anti-ICP, Customer language |
223
+ | 4 | channels.md | Active channels, Baselines, Dormant, Banned, Budget allocation |
224
+ | 5 | competitors.md | Direct competitors, Positioning map, Share of voice |
225
+ | 6 | metrics.md, calendar.md | Primary metric, Secondary metrics, Attribution, Baselines, Themes, Launches, Cadence, Blackout dates |
@@ -0,0 +1,155 @@
1
+ # Specificity Validation Rules
2
+
3
+ ## Usage
4
+
5
+ Referenced by the main init workflow via `@workflows/setup/init-validation.md`.
6
+ Applied after each interview section to reject vague answers and re-prompt with concrete examples.
7
+
8
+ ---
9
+
10
+ ## Banned Phrases (Global)
11
+
12
+ These phrases trigger automatic rejection in ANY freeform answer:
13
+
14
+ | Category | Phrases |
15
+ |----------|---------|
16
+ | Superlatives | "best in class", "industry-leading", "world-class", "premier", "top-tier", "number one" |
17
+ | Buzzwords | "innovative", "cutting-edge", "next-generation", "state-of-the-art", "disruptive" |
18
+ | Impact words | "revolutionary", "game-changing", "unique", "unparalleled", "unmatched" |
19
+ | Vague qualifiers | "comprehensive", "robust", "seamless", "powerful", "flexible", "scalable" (without specific mechanism) |
20
+
21
+ When a banned phrase is detected, re-prompt immediately using the template in the Re-prompt Templates section below.
22
+
23
+ ---
24
+
25
+ ## Per-Section Validation
26
+
27
+ ### Section 1: Positioning
28
+
29
+ **Differentiator check:**
30
+ - FAIL if differentiator is a single adjective or contains only banned phrases
31
+ - FAIL if differentiator does not describe a specific mechanism, capability, or process
32
+ - PASS example: "Auto-generates sprint plans from Slack conversations"
33
+ - FAIL example: "The most innovative project management tool"
34
+
35
+ **Target audience check:**
36
+ - FAIL if audience description specifies fewer than 2 of: role, company size, industry, geography
37
+ - PASS example: "VP Marketing at B2B SaaS companies with 50-500 employees"
38
+ - FAIL example: "Modern teams"
39
+
40
+ **Proof points check:**
41
+ - FAIL if fewer than 2 proof points provided
42
+ - FAIL if any proof point lacks a verifiable source (number, case study name, benchmark)
43
+ - PASS example: "42% reduction in churn after implementing X (Source: Q3 2025 internal analysis)"
44
+ - FAIL example: "Customers love our product"
45
+
46
+ **Must-not-say check:**
47
+ - FAIL if fewer than 2 banned terms provided
48
+ - FAIL if any banned term lacks reasoning
49
+ - PASS example: "'Disruptive' -- overused in our category, signals no real differentiation"
50
+ - FAIL example: Just a list of words with no reasoning
51
+
52
+ ### Section 2: Brand
53
+
54
+ **Voice archetype check:**
55
+ - FAIL if description is under 20 words
56
+ - FAIL if no concrete brand personality traits mentioned
57
+ - PASS example: "Confident but not arrogant. We explain complex concepts simply. We use data to back claims. We never talk down to the reader."
58
+ - FAIL example: "Professional and friendly"
59
+
60
+ **Examples check:**
61
+ - FAIL if on-brand example is under 10 words
62
+ - FAIL if off-brand example is missing or identical style to on-brand
63
+
64
+ **Banned words check:**
65
+ - FAIL if zero banned words listed
66
+ - WARN if banned words lack reasoning
67
+
68
+ ### Section 3: ICP
69
+
70
+ **Segment check:**
71
+ - FAIL if description specifies fewer than 2 of: role, company size, industry, geography
72
+ - Same rule as positioning target audience for consistency
73
+
74
+ **Pain points check:**
75
+ - FAIL if fewer than 2 pain points
76
+ - FAIL if pain points are generic (e.g., "wants to save time", "needs better tools")
77
+ - PASS example: "Spends 4+ hours weekly manually reconciling campaign data across 5 analytics platforms"
78
+ - FAIL example: "Struggles with marketing"
79
+
80
+ **JTBD check:**
81
+ - FAIL if job description is under 10 words
82
+ - FAIL if job description uses banned phrases
83
+
84
+ **Customer language check:**
85
+ - WARN (not FAIL) if fewer than 3 phrases provided
86
+ - Lighter validation -- this data is harder to have on hand
87
+
88
+ ### Section 4: Channels
89
+
90
+ **Channel list check:**
91
+ - FAIL if zero active channels listed
92
+ - WARN if no baseline metrics provided for active channels
93
+
94
+ **Budget check:**
95
+ - WARN if no budget split provided (acceptable for early-stage companies)
96
+
97
+ ### Section 5: Competitors
98
+
99
+ **Competitor list check:**
100
+ - FAIL if zero competitors named
101
+ - WARN if fewer than 2 competitors (acceptable for new categories)
102
+ - FAIL if competitor entries lack positioning description
103
+
104
+ **Positioning map check:**
105
+ - WARN if no axes defined (acceptable -- can be refined later)
106
+
107
+ ### Section 6: Metrics and Calendar
108
+
109
+ **Primary metric check:**
110
+ - FAIL if metric is an output metric only (e.g., "blog posts published", "emails sent") without an outcome metric (e.g., "qualified pipeline", "revenue", "signups")
111
+ - PASS example: "Qualified pipeline generated from content marketing -- target $500K/quarter"
112
+ - FAIL example: "Number of blog posts published per month"
113
+
114
+ **Secondary metrics check:**
115
+ - WARN if no secondary metrics provided
116
+
117
+ **Calendar check:**
118
+ - WARN (not FAIL) if no quarterly theme provided
119
+ - WARN if no cadence defined
120
+
121
+ ---
122
+
123
+ ## Re-prompt Templates
124
+
125
+ When validation fails, use this template:
126
+
127
+ ```
128
+ Your [FIELD_NAME] is too vague. Here's what specific looks like:
129
+ - Vague: '[FAIL_EXAMPLE]'
130
+ - Specific: '[PASS_EXAMPLE]'
131
+ Please try again with more specificity.
132
+ ```
133
+
134
+ When validation warns:
135
+
136
+ ```
137
+ Your [FIELD_NAME] could be more specific, but I'll accept it for now.
138
+ You can update this later with [RELEVANT_COMMAND].
139
+ ```
140
+
141
+ Relevant commands for warn follow-ups:
142
+ - Positioning: `/ttm-positioning-check`
143
+ - Brand: `/ttm-brand-refresh`
144
+ - ICP: `/ttm-icp-refresh`
145
+ - Competitors: `/ttm-competitor-scan`
146
+ - Channels, Metrics, Calendar: `/ttm-health` (general review)
147
+
148
+ ---
149
+
150
+ ## Retry Policy
151
+
152
+ - Maximum 2 re-prompts per field before accepting with a warning flag
153
+ - Warning flag format: Add `<!-- SPECIFICITY_WARNING: [field] accepted after 2 retries -->` comment in generated file
154
+ - After accepting with warning, continue to next question (do not block the interview)
155
+ - Track total warnings per section; if a section has 3+ warnings, note in STATE.md for follow-up