taketomarket 2.2.0 → 2.3.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 (180) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/README.md +34 -11
  4. package/bin/lib/campaign.cjs +12 -8
  5. package/bin/lib/codebase-scan.cjs +86 -0
  6. package/bin/lib/config.cjs +129 -0
  7. package/bin/lib/deploy.cjs +36 -0
  8. package/bin/lib/deviation.cjs +1 -1
  9. package/bin/lib/drift-log.cjs +4 -4
  10. package/bin/lib/health.cjs +32 -31
  11. package/bin/lib/install-detect.cjs +62 -0
  12. package/bin/lib/legacy-folder.cjs +100 -0
  13. package/bin/lib/playwright-check.cjs +26 -0
  14. package/bin/lib/site-location.cjs +22 -0
  15. package/bin/lib/state.cjs +3 -3
  16. package/bin/lib/svg-render.cjs +42 -0
  17. package/bin/ttm-tools.cjs +136 -4
  18. package/gates/base-gates.md +8 -8
  19. package/gates/gate-evaluation.md +8 -8
  20. package/install.js +37 -3
  21. package/package.json +10 -6
  22. package/playbooks/aeo.md +218 -114
  23. package/playbooks/affiliate.md +225 -160
  24. package/playbooks/email.md +236 -174
  25. package/playbooks/events.md +303 -213
  26. package/playbooks/landing-pages.md +305 -0
  27. package/playbooks/linkedin.md +264 -142
  28. package/playbooks/manifesto.md +322 -0
  29. package/playbooks/paid-ads.md +240 -189
  30. package/playbooks/positioning.md +340 -0
  31. package/playbooks/pr-media.md +308 -168
  32. package/playbooks/pseo.md +426 -0
  33. package/playbooks/seo.md +251 -158
  34. package/playbooks/social.md +253 -182
  35. package/playbooks/youtube.md +286 -181
  36. package/references/brand-color-theory.md +48 -0
  37. package/references/codex-image-gen-research.md +58 -0
  38. package/references/context-loading.md +6 -6
  39. package/references/humanizer-patterns.md +433 -0
  40. package/references/inline-education-blurbs.md +461 -0
  41. package/references/landing-page-anatomy.md +64 -0
  42. package/references/linkedin-post-patterns.md +174 -0
  43. package/references/logo-design-principles.md +55 -0
  44. package/references/meta-gate-evaluation.md +3 -3
  45. package/references/obra-superpowers-conventions.md +170 -0
  46. package/references/playbook-leaders.md +472 -0
  47. package/references/playwright-mcp-setup.md +164 -0
  48. package/references/positioning-check-report.md +2 -2
  49. package/references/pseo-page-anatomy.md +56 -0
  50. package/references/pseo-templates/alternative-anatomy.md +31 -0
  51. package/references/pseo-templates/alternative-content-playbook.md +32 -0
  52. package/references/pseo-templates/blog-anatomy.md +28 -0
  53. package/references/pseo-templates/blog-content-playbook.md +36 -0
  54. package/references/pseo-templates/comparison-anatomy.md +29 -0
  55. package/references/pseo-templates/comparison-content-playbook.md +35 -0
  56. package/references/pseo-templates/use-case-anatomy.md +28 -0
  57. package/references/pseo-templates/use-case-content-playbook.md +30 -0
  58. package/skills/ttm-101/SKILL.md +25 -0
  59. package/skills/ttm-aeo-check/SKILL.md +17 -12
  60. package/skills/ttm-affiliate-kit/SKILL.md +5 -0
  61. package/skills/ttm-archive/SKILL.md +5 -0
  62. package/skills/ttm-brand-refresh/SKILL.md +5 -0
  63. package/skills/ttm-brief/SKILL.md +5 -0
  64. package/skills/ttm-competitor-scan/SKILL.md +5 -0
  65. package/skills/ttm-deploy/SKILL.md +22 -0
  66. package/skills/ttm-discover/SKILL.md +17 -0
  67. package/skills/ttm-email-check/SKILL.md +17 -0
  68. package/skills/ttm-email-preflight/SKILL.md +17 -11
  69. package/skills/ttm-fix/SKILL.md +5 -0
  70. package/skills/ttm-health/SKILL.md +6 -1
  71. package/skills/ttm-humanize/SKILL.md +33 -0
  72. package/skills/ttm-icp-refresh/SKILL.md +5 -0
  73. package/skills/ttm-improve-skill/SKILL.md +18 -0
  74. package/skills/ttm-init/SKILL.md +10 -3
  75. package/skills/ttm-keyword-map/SKILL.md +17 -11
  76. package/skills/ttm-landing/SKILL.md +19 -0
  77. package/skills/ttm-learn/SKILL.md +5 -0
  78. package/skills/ttm-linkedin-post/SKILL.md +26 -0
  79. package/skills/ttm-measure/SKILL.md +5 -0
  80. package/skills/ttm-new-campaign/SKILL.md +5 -0
  81. package/skills/ttm-next/SKILL.md +5 -0
  82. package/skills/ttm-playwright-setup/SKILL.md +18 -0
  83. package/skills/ttm-positioning-check/SKILL.md +5 -0
  84. package/skills/ttm-positioning-shift/SKILL.md +5 -0
  85. package/skills/ttm-produce/SKILL.md +5 -0
  86. package/skills/ttm-pseo/SKILL.md +26 -0
  87. package/skills/ttm-repurpose/SKILL.md +5 -0
  88. package/skills/ttm-request-skill/SKILL.md +18 -0
  89. package/skills/ttm-research/SKILL.md +18 -6
  90. package/skills/ttm-resume/SKILL.md +5 -0
  91. package/skills/ttm-review/SKILL.md +5 -0
  92. package/skills/ttm-seo/SKILL.md +64 -0
  93. package/skills/ttm-seo-audit/SKILL.md +17 -12
  94. package/skills/ttm-ship/SKILL.md +5 -0
  95. package/skills/ttm-state/SKILL.md +5 -0
  96. package/skills/ttm-update/SKILL.md +152 -4
  97. package/skills/ttm-verify/SKILL.md +5 -0
  98. package/templates/agents-md.md +14 -4
  99. package/templates/campaign-research.md +6 -6
  100. package/templates/campaign-state.md +1 -1
  101. package/templates/claude-md.md +14 -4
  102. package/templates/linkedin-base-template.md +48 -0
  103. package/templates/next-step-footer.md +13 -0
  104. package/templates/production-manifest.json +4 -4
  105. package/templates/pseo/alternative-cms-schema.json +65 -0
  106. package/templates/pseo/blog-cms-schema.json +55 -0
  107. package/templates/pseo/comparison-cms-schema.json +56 -0
  108. package/templates/pseo/use-case-cms-schema.json +62 -0
  109. package/templates/reference-files/brand.md +51 -0
  110. package/templates/reference-files/product-dna.md +73 -0
  111. package/templates/site-scaffold/app/globals.css +2 -0
  112. package/templates/site-scaffold/app/layout.tsx +17 -0
  113. package/templates/site-scaffold/app/page.tsx +33 -0
  114. package/templates/site-scaffold/app/robots.ts +8 -0
  115. package/templates/site-scaffold/app/sitemap.ts +10 -0
  116. package/templates/site-scaffold/app/tokens.css +21 -0
  117. package/templates/site-scaffold/components/Comparison.tsx +14 -0
  118. package/templates/site-scaffold/components/Faq.tsx +14 -0
  119. package/templates/site-scaffold/components/Features.tsx +14 -0
  120. package/templates/site-scaffold/components/FinalCta.tsx +17 -0
  121. package/templates/site-scaffold/components/Footer.tsx +12 -0
  122. package/templates/site-scaffold/components/Hero.tsx +22 -0
  123. package/templates/site-scaffold/components/HowItWorks.tsx +14 -0
  124. package/templates/site-scaffold/components/PricingTeaser.tsx +14 -0
  125. package/templates/site-scaffold/components/Problem.tsx +14 -0
  126. package/templates/site-scaffold/components/SocialProof.tsx +14 -0
  127. package/templates/site-scaffold/components/Solution.tsx +14 -0
  128. package/templates/site-scaffold/components/Testimonials.tsx +14 -0
  129. package/templates/site-scaffold/components/UseCases.tsx +14 -0
  130. package/templates/site-scaffold/content/.gitkeep +0 -0
  131. package/templates/site-scaffold/lib/.gitkeep +0 -0
  132. package/templates/site-scaffold/next.config.mjs +10 -0
  133. package/templates/site-scaffold/package.json +25 -0
  134. package/templates/site-scaffold/postcss.config.mjs +3 -0
  135. package/templates/site-scaffold/public/llms.txt +9 -0
  136. package/templates/site-scaffold/tsconfig.json +21 -0
  137. package/templates/verification-report.md +1 -1
  138. package/workflows/channel/linkedin-post.md +178 -0
  139. package/workflows/discipline/affiliate-kit.md +65 -6
  140. package/workflows/discipline/{email-preflight.md → email-check.md} +39 -4
  141. package/workflows/discipline/repurpose.md +82 -31
  142. package/workflows/discipline/{aeo-check.md → seo/aeo.md} +13 -6
  143. package/workflows/discipline/{seo-audit.md → seo/audit.md} +13 -6
  144. package/workflows/discipline/{keyword-map.md → seo/keyword-map.md} +13 -6
  145. package/workflows/education/ttm-101.md +114 -0
  146. package/workflows/lifecycle/brief-positioning-check.md +1 -1
  147. package/workflows/lifecycle/brief.md +64 -28
  148. package/workflows/lifecycle/{research.md → discover.md} +61 -19
  149. package/workflows/lifecycle/fix.md +72 -37
  150. package/workflows/lifecycle/humanize.md +280 -0
  151. package/workflows/lifecycle/learn.md +72 -35
  152. package/workflows/lifecycle/measure.md +54 -18
  153. package/workflows/lifecycle/produce.md +88 -37
  154. package/workflows/lifecycle/review.md +71 -25
  155. package/workflows/lifecycle/ship.md +62 -18
  156. package/workflows/lifecycle/verify.md +72 -26
  157. package/workflows/reference-mgmt/brand-refresh.md +50 -13
  158. package/workflows/reference-mgmt/competitor-scan.md +51 -15
  159. package/workflows/reference-mgmt/icp-refresh.md +48 -12
  160. package/workflows/reference-mgmt/positioning-check.md +55 -20
  161. package/workflows/reference-mgmt/positioning-shift.md +53 -17
  162. package/workflows/setup/init-brand-colors.md +75 -0
  163. package/workflows/setup/init-logo.md +113 -0
  164. package/workflows/setup/init-product-dna.md +83 -0
  165. package/workflows/setup/init-questions.md +166 -30
  166. package/workflows/setup/init-validation.md +22 -0
  167. package/workflows/setup/init.md +144 -39
  168. package/workflows/setup/new-campaign.md +48 -12
  169. package/workflows/site/deploy.md +98 -0
  170. package/workflows/site/landing.md +156 -0
  171. package/workflows/site/pseo.md +96 -0
  172. package/workflows/site/quality-gates.md +88 -0
  173. package/workflows/utility/archive.md +45 -9
  174. package/workflows/utility/health.md +77 -3
  175. package/workflows/utility/improve-skill.md +233 -0
  176. package/workflows/utility/next.md +38 -2
  177. package/workflows/utility/playwright-setup.md +128 -0
  178. package/workflows/utility/request-skill.md +218 -0
  179. package/workflows/utility/resume.md +40 -3
  180. package/workflows/utility/state.md +42 -7
@@ -0,0 +1,461 @@
1
+ # Inline Education Blurbs -- Reference
2
+
3
+ Per-skill 2-paragraph explainer printed once on first run. Engineer-friendly tone,
4
+ no marketing-speak, analogies vary deliberately. Tone target: a colleague who's
5
+ read the docs explaining a new linter or build tool to a senior engineer.
6
+
7
+ Each blurb is embedded verbatim into the corresponding workflow's "Step 0:
8
+ First-run inline education" block. The runtime does not @-resolve files inside
9
+ workflows, so this reference exists for editorial review and regeneration -- the
10
+ canonical copy that actually runs is the one inside the workflow file.
11
+
12
+ Skip-list (no blurb, no Step 0 injection): `ttm-101` (the explainer itself),
13
+ `ttm-research`, `ttm-email-preflight`, `ttm-aeo-check`, `ttm-keyword-map`,
14
+ `ttm-seo-audit` (deprecation stubs that just route to their successor).
15
+
16
+ ---
17
+
18
+ ## ttm-init
19
+
20
+ `/ttm-init` is the bootstrap interview. It asks you ~30 structured questions
21
+ about your product, audience, positioning, and brand, then generates the
22
+ `.taketomarket/` reference files (POSITIONING.md, ICP.md, BRAND.md, PRODUCT-DNA.md,
23
+ plus brand colors and a logo set) and writes CLAUDE.md / AGENTS.md so the runtime
24
+ knows the rules. Think of it as `npm init` for marketing: one interactive pass
25
+ produces the config that every other `/ttm-*` skill reads.
26
+
27
+ Why it matters now: every downstream skill -- produce, verify, ship, measure --
28
+ loads these reference files as their context. If you skip init, every later
29
+ skill is operating without your positioning invariant and will drift. Run init
30
+ once per project; re-run only on a real positioning shift via `/ttm-positioning-shift`.
31
+
32
+ ## ttm-new-campaign
33
+
34
+ `/ttm-new-campaign` creates an isolated workspace under `.taketomarket/campaigns/<slug>/`
35
+ with its own STATE.md, brief slot, and asset directory. It's the marketing
36
+ equivalent of `git checkout -b feature/X`: campaigns are independent units that
37
+ can be at different lifecycle phases simultaneously, and the state machine
38
+ tracks each one separately.
39
+
40
+ Why it matters: takeToMarket is multi-campaign by design. Without a campaign
41
+ slug, briefs, assets, and verification results have no home and bleed into
42
+ each other. Run this before `/ttm-brief` for any new initiative -- it locks in
43
+ the campaign id that subsequent skills route work into.
44
+
45
+ ## ttm-brief
46
+
47
+ `/ttm-brief` is the spec-writing step. You describe the audience, the outcome
48
+ metric, the channel, and the angle; the skill writes a structured BRIEF.md that
49
+ the production wave will load. It also runs a positioning sanity check against
50
+ your `.taketomarket/POSITIONING.md` so the brief can't silently contradict the
51
+ invariant.
52
+
53
+ Why it matters: a brief is the request payload that fans out to multiple parallel
54
+ producer subagents. Vague briefs produce inconsistent assets that fail review.
55
+ The structured-question format is the equivalent of writing a typed function
56
+ signature before implementing the body.
57
+
58
+ ## ttm-discover
59
+
60
+ `/ttm-discover` is the research phase. It scans your competitors, your category,
61
+ and your ICP's actual language to surface angles, claims, and proof points
62
+ worth building campaigns around. Output is a structured discovery doc with
63
+ candidate hooks, ranked by confidence, that feed into `/ttm-brief`.
64
+
65
+ Why it matters: without discovery, briefs come from your own head -- which is
66
+ how positioning drifts and how every campaign starts to sound the same. This
67
+ step is the marketing equivalent of profiling before you optimize: do not skip
68
+ to production until you know what's actually resonating.
69
+
70
+ ## ttm-produce
71
+
72
+ `/ttm-produce` is the production wave. It loads the brief, positioning, brand,
73
+ ICP, and playbook into a fresh 200K-token Task() subagent context, generates
74
+ the hero asset, then fans out parallel subagents for derivatives. Each producer
75
+ runs in isolation and writes to `MANIFEST.json` for the verify step to consume.
76
+
77
+ Why it matters: producing in the main conversation context means your generic
78
+ chat history pollutes the output. Fresh contexts + structured inputs are why
79
+ takeToMarket assets pass verification at a higher rate than free-form prompts.
80
+ This is also the only place where multiple assets are built in parallel --
81
+ sequential production is two-to-five times slower at the same quality.
82
+
83
+ ## ttm-verify
84
+
85
+ `/ttm-verify` runs every produced asset through the quality-gate wall:
86
+ positioning invariant, factual accuracy, brand-voice match, channel-format
87
+ compliance, and outcome-metric instrumentation. Failures are written as
88
+ structured findings the `/ttm-fix` skill can act on; passes get marked
89
+ ready-to-ship.
90
+
91
+ Why it matters: in marketing, "looks good" is the bug. Without an automated
92
+ gate wall, you ship assets that subtly contradict your positioning and only
93
+ discover it weeks later in analytics. Verify is the marketing equivalent of
94
+ CI: cheap to run, expensive to skip.
95
+
96
+ ## ttm-fix
97
+
98
+ `/ttm-fix` reads the verification findings, opens the offending asset, applies
99
+ targeted corrections, and re-runs only the affected gates. It's deliberately
100
+ narrow -- it does not regenerate from scratch, it patches. The fix-verify loop
101
+ continues until either all gates pass or you escalate.
102
+
103
+ Why it matters: regenerating an asset for a small drift wastes context and
104
+ loses good prose that was almost right. Fix is the surgical tool; produce is
105
+ the hammer. Most assets need one or two fix passes before shipping, and that
106
+ loop is where positioning drift gets caught before it leaves the repo.
107
+
108
+ ## ttm-review
109
+
110
+ `/ttm-review` is human-in-the-loop sign-off. After verify passes the
111
+ automated wall, review surfaces the asset with diff context and the gate
112
+ results so you can sanity-check tone, claims, and channel fit before it
113
+ ships. You can approve, reject with feedback, or escalate to a positioning
114
+ shift.
115
+
116
+ Why it matters: automated gates catch invariant violations but not subjective
117
+ calls about whether an asset is the right one for this moment. Review is the
118
+ human commit-message step: the system stops, surfaces context, and waits for
119
+ your decision rather than auto-shipping.
120
+
121
+ ## ttm-humanize
122
+
123
+ `/ttm-humanize` rewrites AI-flavored prose into something that sounds like a
124
+ person wrote it: varied sentence rhythm, fewer hedges, specific verbs, no
125
+ "furthermore" or "in today's fast-paced." It runs after verify, before review,
126
+ and only on assets flagged for tone tuning.
127
+
128
+ Why it matters: detection models and human readers both pattern-match on the
129
+ same tells, and AI-fingerprinted copy converts worse and damages trust. Think
130
+ of humanize as a code formatter that targets the LLM-prose anti-patterns the
131
+ way Prettier targets whitespace.
132
+
133
+ ## ttm-ship
134
+
135
+ `/ttm-ship` is the publish step. It packages the approved asset for its
136
+ target channel, writes the canonical version into the campaign's `shipped/`
137
+ directory, updates STATE.md to `shipped`, and records the outcome metric
138
+ hooks so `/ttm-measure` knows what to read later.
139
+
140
+ Why it matters: shipping in marketing is when a campaign becomes a measurable
141
+ unit. Without the structured ship step, you've got files in a folder and no
142
+ way to attribute results back to the brief. Treat this like `git tag` plus
143
+ deployment: the moment the asset goes live and starts producing data.
144
+
145
+ ## ttm-measure
146
+
147
+ `/ttm-measure` ingests analytics data (pasted in manually for the MVP) and
148
+ matches it against the outcome metric declared in the brief. Output is a
149
+ pass/fail per campaign plus a per-asset performance summary written to
150
+ MEASURE.md.
151
+
152
+ Why it matters: every brief committed to an outcome metric, and measure is
153
+ where that commitment gets checked. Skipping measure means you never learn
154
+ which positioning angles, channels, or hooks actually moved the number --
155
+ the production loop becomes vibes-driven. This is the closing parenthesis on
156
+ the spec-driven cycle.
157
+
158
+ ## ttm-learn
159
+
160
+ `/ttm-learn` reads finished campaigns -- briefs, gate results, ship records,
161
+ measurement output -- and extracts compound learnings into
162
+ `.taketomarket/LEARNINGS.md`: what positioning angles converted, which
163
+ channels under- or over-delivered, which playbook variants worked. Future
164
+ briefs auto-load this file.
165
+
166
+ Why it matters: marketing learnings without a structured store dissolve into
167
+ folklore inside three months. Learn turns each campaign's data into a
168
+ versioned doc that biases the next brief toward what actually worked --
169
+ the marketing equivalent of a postmortem doc plus a regression suite of
170
+ tactics.
171
+
172
+ ## ttm-positioning-check
173
+
174
+ `/ttm-positioning-check` audits a campaign's brief and assets against the
175
+ positioning invariant declared in POSITIONING.md. Output is a drift report:
176
+ which claims diverge, by how much, and whether the drift is small enough to
177
+ correct in-place or large enough to require a positioning shift.
178
+
179
+ Why it matters: positioning drift is the single most common cause of
180
+ inconsistent marketing across a year. This skill is the linter for that --
181
+ run it after producing if anything feels off, and absolutely run it before
182
+ shipping a campaign that hits a new channel or audience.
183
+
184
+ ## ttm-positioning-shift
185
+
186
+ `/ttm-positioning-shift` is the only skill (besides init) that may modify
187
+ POSITIONING.md. It walks you through a deliberate positioning change:
188
+ documents the old position, captures the rationale, writes the new one,
189
+ and flags every existing campaign that needs re-verification under the
190
+ new invariant.
191
+
192
+ Why it matters: positioning changes are schema migrations. If you edit
193
+ POSITIONING.md ad-hoc, you've silently invalidated every shipped asset
194
+ and there's no audit trail. This skill makes the change explicit,
195
+ auditable, and propagates the consequences across active campaigns.
196
+
197
+ ## ttm-brand-refresh
198
+
199
+ `/ttm-brand-refresh` updates `.taketomarket/BRAND.md`, the brand colors,
200
+ and the logo set. It re-asks the brand questions from init, regenerates
201
+ the color tokens, and either regenerates the logo or imports a new one
202
+ you supply. Existing campaigns get flagged for re-verification on brand
203
+ gates only.
204
+
205
+ Why it matters: brand and positioning are different invariants. You can
206
+ refresh brand (palette, logo, voice tweaks) without a full positioning
207
+ shift, and this skill keeps that boundary clean. Use it for visual
208
+ refreshes and voice retunes; use positioning-shift for what you're
209
+ actually saying.
210
+
211
+ ## ttm-icp-refresh
212
+
213
+ `/ttm-icp-refresh` updates `.taketomarket/ICP.md` -- the Ideal Customer
214
+ Profile reference. It asks updated questions about the audience: their
215
+ jobs, pains, sophistication level, channels, and the exact words they
216
+ use. The new ICP propagates to every brief written afterward.
217
+
218
+ Why it matters: ICPs drift as your real customer base shifts away from
219
+ who you thought you were selling to. If your last three campaigns
220
+ under-performed and you can't explain why, the ICP doc is usually six
221
+ months stale. Refresh is cheap insurance against marketing to a
222
+ customer who no longer exists.
223
+
224
+ ## ttm-competitor-scan
225
+
226
+ `/ttm-competitor-scan` surveys your declared competitors' positioning,
227
+ recent campaigns, and channel mix, then writes a structured comparison
228
+ into `.taketomarket/COMPETITORS.md`. Discover and brief consume this to
229
+ avoid sounding identical to whoever you're against.
230
+
231
+ Why it matters: differentiation is a verifiable property only if you
232
+ have an explicit competitor reference. Without one, your assets drift
233
+ toward the category mean because that's what the model has seen most.
234
+ Run this periodically -- competitor positioning is the input that
235
+ goes stalest fastest.
236
+
237
+ ## ttm-landing
238
+
239
+ `/ttm-landing` produces a landing page from your positioning, brand,
240
+ ICP, and a brief. It generates the HTML, applies the brand tokens,
241
+ writes the page into your site directory, and queues the four landing
242
+ quality gates (positioning, copy clarity, conversion fundamentals,
243
+ visual review via Playwright).
244
+
245
+ Why it matters: landing pages are the highest-leverage marketing
246
+ asset for developerneurs because they're the conversion surface for
247
+ every other campaign. Treating them as one-off prose vs. spec-driven
248
+ generation is the difference between A/B testing your way upward
249
+ and rewriting from scratch every two months.
250
+
251
+ ## ttm-pseo
252
+
253
+ `/ttm-pseo` is programmatic SEO: given a template and a dataset
254
+ (competitors-vs-you, alternatives, integrations, etc.), it generates
255
+ N landing pages with consistent positioning across all of them. Each
256
+ page passes the same gate wall as a single landing page, but in bulk.
257
+
258
+ Why it matters: pSEO is one of the few SEO plays still worth running
259
+ in the AI-search era because the long tail of "X vs Y" queries doesn't
260
+ get cannibalized as quickly. The catch is that ungoverned pSEO produces
261
+ thousands of near-duplicate, positioning-drifted pages. The gate wall
262
+ is what makes pSEO defensible at scale.
263
+
264
+ ## ttm-deploy
265
+
266
+ `/ttm-deploy` ships your generated site (landing + pSEO + any static
267
+ assets) to the deploy target detected from your project (Vercel,
268
+ Netlify, Cloudflare Pages, etc.) or guides manual deployment if no
269
+ target is detected. It does not bypass the gate wall -- only verified,
270
+ reviewed assets are pushed.
271
+
272
+ Why it matters: a verified asset that isn't deployed is functionally
273
+ equivalent to no asset. This skill is the bridge between the
274
+ spec-driven pipeline and the live URL, and it preserves the audit trail
275
+ so you can correlate a deployed page back to its brief and gate results.
276
+
277
+ ## ttm-affiliate-kit
278
+
279
+ `/ttm-affiliate-kit` generates a complete affiliate / partner enablement
280
+ package: positioned creative, copy variants per channel, claim cards
281
+ with substantiation, and a one-pager partners can drop into their
282
+ own funnels. Everything inherits your positioning invariant.
283
+
284
+ Why it matters: affiliates and partners are the highest-drift channel
285
+ because the assets leave your control. A structured kit with explicit
286
+ positioning rails is the difference between affiliate-driven growth
287
+ that compounds and affiliate-driven content that contradicts your
288
+ own site within a quarter.
289
+
290
+ ## ttm-email-check
291
+
292
+ `/ttm-email-check` is the email pre-flight. It runs a draft email
293
+ through deliverability checks (spam-trigger phrases, structural red
294
+ flags, list-hygiene reminders) and the positioning gate, plus a
295
+ voice check against your BRAND.md. Output is a pass/fix-list.
296
+
297
+ Why it matters: email is unforgiving -- one drift-laden send to a
298
+ warm list can damage open rates for weeks. Treat this skill like a
299
+ pre-commit hook for outbound: cheap, fast, and the only thing
300
+ standing between your draft and your domain reputation.
301
+
302
+ ## ttm-linkedin-post
303
+
304
+ `/ttm-linkedin-post` generates a LinkedIn post from a campaign brief or
305
+ a raw thought, applies the LinkedIn-specific patterns (hook, scannable
306
+ structure, comment-bait, no link in body), and routes it through the
307
+ gate wall. Output is a ready-to-post draft plus a comment-thread plan.
308
+
309
+ Why it matters: LinkedIn rewards a specific format that violates
310
+ general copywriting rules (short lines, deliberate whitespace,
311
+ no-link bodies). Generic LLM output writes essays; this skill writes
312
+ posts that match the platform's actual distribution mechanics.
313
+
314
+ ## ttm-repurpose
315
+
316
+ `/ttm-repurpose` takes a shipped hero asset and generates derivative
317
+ assets for other channels (LinkedIn from a blog, email from a landing
318
+ page, threads from a podcast transcript) while preserving the
319
+ positioning invariant. Each derivative runs the full gate wall.
320
+
321
+ Why it matters: most marketing teams produce one-off assets; the
322
+ compound advantage comes from making one hero work across five
323
+ channels. Repurpose is the systematic version of that, with explicit
324
+ provenance so you can trace any channel asset back to the parent and
325
+ the brief.
326
+
327
+ ## ttm-seo
328
+
329
+ `/ttm-seo` is the unified SEO + AEO toolkit. Subcommands: `audit`
330
+ runs a URL or sitemap through technical and content checks;
331
+ `keyword-map` generates a topic cluster with intent tags;
332
+ `aeo` measures your citation status across Google AI Overviews,
333
+ ChatGPT search, and Perplexity for a target query.
334
+
335
+ Why it matters: SEO and Answer Engine Optimization (AEO) share most
336
+ fundamentals -- structured content, clear claims, citation-worthy
337
+ formatting -- but diverge on a few signals. Treating them as one
338
+ toolkit with three modes prevents the trap of optimizing for Google
339
+ in a way that breaks AEO citation.
340
+
341
+ ## ttm-improve-skill
342
+
343
+ `/ttm-improve-skill` opens a feedback loop on a specific takeToMarket
344
+ skill. It diffs your last few invocations of a skill, asks what felt
345
+ wrong or missing, and either drafts a local skill override or files a
346
+ structured issue against the takeToMarket repo so the change can land
347
+ upstream.
348
+
349
+ Why it matters: takeToMarket is opinionated, which means it'll be
350
+ wrong about your context sometimes. This skill is the structured
351
+ escape hatch -- instead of fighting the skill in-conversation, you
352
+ record the friction, get a fix, and avoid that friction permanently.
353
+ Treat it like filing a linter rule exemption.
354
+
355
+ ## ttm-request-skill
356
+
357
+ `/ttm-request-skill` is the proposal pipeline for new skills. You
358
+ describe a marketing job you keep doing manually, the skill asks
359
+ structured questions (inputs, outputs, gates, frequency), and
360
+ produces either a local SKILL.md draft you can iterate on or a
361
+ formatted feature request against the upstream repo.
362
+
363
+ Why it matters: solopreneurs hit recurring marketing tasks that
364
+ nobody else's playbook covers because nobody else has your product.
365
+ Rather than re-prompting from scratch each time, this skill turns
366
+ your repeated workflow into a versioned, gated skill -- the same
367
+ way you'd extract a utility function after writing the same code
368
+ three times.
369
+
370
+ ## ttm-resume
371
+
372
+ `/ttm-resume` is the session-recovery skill. It loads the active
373
+ campaign's STATE.md, summarizes the last completed phase, lists
374
+ pending work and known blockers, and recommends the exact next
375
+ `/ttm-*` command. It also detects interrupted verify/fix loops so
376
+ you continue from where the loop stopped.
377
+
378
+ Why it matters: marketing campaigns run across many sessions over
379
+ many days, and context loss between sessions is where things get
380
+ silently dropped. Resume is the equivalent of restoring a debugger
381
+ state: you don't have to remember where you were because the state
382
+ files do.
383
+
384
+ ## ttm-next
385
+
386
+ `/ttm-next` scans every active campaign in the project and proposes
387
+ the single highest-priority next move across the whole portfolio.
388
+ Output is a ranked list with one top recommendation plus up to
389
+ three alternatives, each as a runnable `/ttm-*` command.
390
+
391
+ Why it matters: when more than two campaigns are active, "what
392
+ should I do next" becomes a meaningful decision that depends on
393
+ which campaigns are stuck, which are about to lose momentum, and
394
+ which have the soonest measurable outcome. This skill is the
395
+ scheduler for your marketing pipeline.
396
+
397
+ ## ttm-state
398
+
399
+ `/ttm-state` is the read-only dashboard. With no argument it prints
400
+ every campaign (active and archived) with its current phase, blockers,
401
+ shipped-asset count, and last activity timestamp. With a slug, it
402
+ prints the per-campaign detail view from that campaign's STATE.md.
403
+
404
+ Why it matters: state is the truth file in takeToMarket -- not your
405
+ memory, not the conversation history. This skill is how you check
406
+ that truth without mutating it. Use it before running any campaign
407
+ action when you're not sure where you left off.
408
+
409
+ ## ttm-archive
410
+
411
+ `/ttm-archive` moves a finished campaign out of the active set into
412
+ `.taketomarket/archive/`. It freezes STATE.md, preserves the gate
413
+ results and ship records, and removes the campaign from the
414
+ `/ttm-next` queue. Archived campaigns still feed `/ttm-learn`.
415
+
416
+ Why it matters: campaigns that should be done but stay marked active
417
+ pollute scheduling and waste cognitive budget every time you run
418
+ `/ttm-state`. Archive is the marketing equivalent of merging and
419
+ deleting a branch -- the work is preserved, but it's out of your
420
+ active workspace.
421
+
422
+ ## ttm-health
423
+
424
+ `/ttm-health` audits the integrity of your `.taketomarket/` directory.
425
+ It checks that reference files exist and aren't suspiciously empty,
426
+ flags stale references, validates per-campaign STATE.md against the
427
+ file system, surfaces DRIFT-LOG anomalies, and reports gate-result
428
+ inconsistencies. It only reports -- it does not self-heal.
429
+
430
+ Why it matters: state corruption in a long-running multi-campaign
431
+ project is silent until something breaks. Running health periodically
432
+ (or letting it auto-trigger on detected issues) catches drift like a
433
+ filesystem fsck -- before it forces a manual rebuild of a campaign's
434
+ state.
435
+
436
+ ## ttm-playwright-setup
437
+
438
+ `/ttm-playwright-setup` installs and configures the Playwright MCP
439
+ required for the visual landing-page gate (gate 4) and any future
440
+ browser-based verification. It detects your existing MCP config,
441
+ adds the Playwright entry, and confirms the tool is reachable from
442
+ the runtime.
443
+
444
+ Why it matters: the landing-page gate wall includes a Playwright-driven
445
+ visual check, and without the MCP installed it falls back to a softer
446
+ gate. This skill turns the soft gate into a hard one. Treat it as the
447
+ runtime equivalent of installing a missing test dependency.
448
+
449
+ ## ttm-update
450
+
451
+ `/ttm-update` checks your installed takeToMarket version against the
452
+ npm registry, detects whether you installed via npm or git clone,
453
+ runs the appropriate upgrade path, then reconciles any locally-edited
454
+ skill files against the new source and offers per-file diffs.
455
+
456
+ Why it matters: skills evolve quickly and an out-of-date install
457
+ silently misses gate improvements and bug fixes. This skill is the
458
+ opinionated upgrader -- it knows the right command for your install
459
+ method and preserves your local edits behind explicit prompts rather
460
+ than overwriting them.
461
+
@@ -0,0 +1,64 @@
1
+ # Landing Page Anatomy — Reference
2
+
3
+ **Purpose:** Optimal structure for the main marketing site pages generated by `/ttm-landing`. Covers home, product, pricing, about. Each page has a recommended section structure, content patterns, and AEO/SEO signals.
4
+
5
+ ## Home page
6
+
7
+ **Goal:** Convert a visitor in 30 seconds. Decision: trial / contact / leave.
8
+
9
+ ### Section order
10
+ 1. **Hero** — headline + subhead + primary CTA + secondary CTA + optional product visual.
11
+ 2. **Social proof** — logo strip OR customer count OR funded-by line.
12
+ 3. **Problem** — one-paragraph problem framing in customer's words.
13
+ 4. **Solution** — three-pillar feature framing tied to differentiator.
14
+ 5. **How it works** — 3-step or 4-step visual flow.
15
+ 6. **Detailed features** — 2-3 feature deep-dives with screenshots/animations.
16
+ 7. **Use cases** — 3-4 cards linking to `/use-cases/[slug]`.
17
+ 8. **Comparison** — table or paragraph addressing "why us vs alternative".
18
+ 9. **Testimonials** — 2-4 quotes with names + roles + companies.
19
+ 10. **Pricing teaser** — one-line, link to `/pricing`.
20
+ 11. **FAQ** — 6-10 questions (schema.org FAQPage markup required).
21
+ 12. **Final CTA** — repeat primary CTA with urgency framing.
22
+ 13. **Footer** — links, newsletter, social.
23
+
24
+ ### Hero headline rules
25
+ - Lead with outcome, not feature. "Ship 3x more landing pages" beats "AI-powered landing page builder".
26
+ - Specific number > vague claim.
27
+ - Match the differentiator from POSITIONING.md.
28
+
29
+ ### CTAs
30
+ - Primary: action verb. "Start free trial", "Get demo", "Try it free".
31
+ - Secondary: lower-friction. "See how it works", "View pricing".
32
+
33
+ ## Product page
34
+
35
+ [Similar structure: hero + section-by-section for product features and architecture diagrams.]
36
+
37
+ ## Pricing page
38
+
39
+ [Section order: hero with positioning, pricing tiers, FAQ, final CTA. Anti-patterns: don't hide pricing if you're B2C/SMB. Show it.]
40
+
41
+ ## About page
42
+
43
+ [Manifesto / founder letter / team / values / journey.]
44
+
45
+ ## AEO + SEO signals (apply to every page)
46
+
47
+ - `<title>` and `<meta name="description">` include primary keyword from POSITIONING.md differentiator.
48
+ - Open Graph + Twitter card meta tags.
49
+ - `<link rel="canonical">` self-referential.
50
+ - Schema.org markup: `Organization` on home/about, `Product` on product, `FAQPage` on FAQ sections, `BreadcrumbList` site-wide.
51
+ - `llms.txt` at root.
52
+ - Internal linking: every page links to at least 3 others.
53
+ - Page-speed: LCP < 2.5s, CLS < 0.1, INP < 200ms.
54
+
55
+ ## Citability content patterns
56
+
57
+ - One H1, multiple H2/H3 hierarchical.
58
+ - Definitions: "X is Y that does Z" format, parseable as standalone statement.
59
+ - Lists: use proper `<ul>` / `<ol>` with semantic content (not divs).
60
+ - FAQ: short answer first (1-2 sentences), then expansion.
61
+ - Citations and external links: use proper `<cite>` and link to authoritative sources.
62
+
63
+ ## Sources
64
+ [Cite: Stripe / Linear / Vercel / Anthropic / OpenAI landing pages, MarketingExamples, Julian Shapiro's growth-marketing handbook, Conversion XL research.]