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.
- package/.claude-plugin/marketplace.json +4 -4
- package/.claude-plugin/plugin.json +2 -2
- package/README.md +34 -11
- package/bin/lib/campaign.cjs +12 -8
- package/bin/lib/codebase-scan.cjs +86 -0
- package/bin/lib/config.cjs +129 -0
- package/bin/lib/deploy.cjs +36 -0
- package/bin/lib/deviation.cjs +1 -1
- package/bin/lib/drift-log.cjs +4 -4
- package/bin/lib/health.cjs +32 -31
- package/bin/lib/install-detect.cjs +62 -0
- package/bin/lib/legacy-folder.cjs +100 -0
- package/bin/lib/playwright-check.cjs +26 -0
- package/bin/lib/site-location.cjs +22 -0
- package/bin/lib/state.cjs +3 -3
- package/bin/lib/svg-render.cjs +42 -0
- package/bin/ttm-tools.cjs +136 -4
- package/gates/base-gates.md +8 -8
- package/gates/gate-evaluation.md +8 -8
- package/install.js +37 -3
- package/package.json +10 -6
- package/playbooks/aeo.md +218 -114
- package/playbooks/affiliate.md +225 -160
- package/playbooks/email.md +236 -174
- package/playbooks/events.md +303 -213
- package/playbooks/landing-pages.md +305 -0
- package/playbooks/linkedin.md +264 -142
- package/playbooks/manifesto.md +322 -0
- package/playbooks/paid-ads.md +240 -189
- package/playbooks/positioning.md +340 -0
- package/playbooks/pr-media.md +308 -168
- package/playbooks/pseo.md +426 -0
- package/playbooks/seo.md +251 -158
- package/playbooks/social.md +253 -182
- package/playbooks/youtube.md +286 -181
- package/references/brand-color-theory.md +48 -0
- package/references/codex-image-gen-research.md +58 -0
- package/references/context-loading.md +6 -6
- package/references/humanizer-patterns.md +433 -0
- package/references/inline-education-blurbs.md +461 -0
- package/references/landing-page-anatomy.md +64 -0
- package/references/linkedin-post-patterns.md +174 -0
- package/references/logo-design-principles.md +55 -0
- package/references/meta-gate-evaluation.md +3 -3
- package/references/obra-superpowers-conventions.md +170 -0
- package/references/playbook-leaders.md +472 -0
- package/references/playwright-mcp-setup.md +164 -0
- package/references/positioning-check-report.md +2 -2
- package/references/pseo-page-anatomy.md +56 -0
- package/references/pseo-templates/alternative-anatomy.md +31 -0
- package/references/pseo-templates/alternative-content-playbook.md +32 -0
- package/references/pseo-templates/blog-anatomy.md +28 -0
- package/references/pseo-templates/blog-content-playbook.md +36 -0
- package/references/pseo-templates/comparison-anatomy.md +29 -0
- package/references/pseo-templates/comparison-content-playbook.md +35 -0
- package/references/pseo-templates/use-case-anatomy.md +28 -0
- package/references/pseo-templates/use-case-content-playbook.md +30 -0
- package/skills/ttm-101/SKILL.md +25 -0
- package/skills/ttm-aeo-check/SKILL.md +17 -12
- package/skills/ttm-affiliate-kit/SKILL.md +5 -0
- package/skills/ttm-archive/SKILL.md +5 -0
- package/skills/ttm-brand-refresh/SKILL.md +5 -0
- package/skills/ttm-brief/SKILL.md +5 -0
- package/skills/ttm-competitor-scan/SKILL.md +5 -0
- package/skills/ttm-deploy/SKILL.md +22 -0
- package/skills/ttm-discover/SKILL.md +17 -0
- package/skills/ttm-email-check/SKILL.md +17 -0
- package/skills/ttm-email-preflight/SKILL.md +17 -11
- package/skills/ttm-fix/SKILL.md +5 -0
- package/skills/ttm-health/SKILL.md +6 -1
- package/skills/ttm-humanize/SKILL.md +33 -0
- package/skills/ttm-icp-refresh/SKILL.md +5 -0
- package/skills/ttm-improve-skill/SKILL.md +18 -0
- package/skills/ttm-init/SKILL.md +10 -3
- package/skills/ttm-keyword-map/SKILL.md +17 -11
- package/skills/ttm-landing/SKILL.md +19 -0
- package/skills/ttm-learn/SKILL.md +5 -0
- package/skills/ttm-linkedin-post/SKILL.md +26 -0
- package/skills/ttm-measure/SKILL.md +5 -0
- package/skills/ttm-new-campaign/SKILL.md +5 -0
- package/skills/ttm-next/SKILL.md +5 -0
- package/skills/ttm-playwright-setup/SKILL.md +18 -0
- package/skills/ttm-positioning-check/SKILL.md +5 -0
- package/skills/ttm-positioning-shift/SKILL.md +5 -0
- package/skills/ttm-produce/SKILL.md +5 -0
- package/skills/ttm-pseo/SKILL.md +26 -0
- package/skills/ttm-repurpose/SKILL.md +5 -0
- package/skills/ttm-request-skill/SKILL.md +18 -0
- package/skills/ttm-research/SKILL.md +18 -6
- package/skills/ttm-resume/SKILL.md +5 -0
- package/skills/ttm-review/SKILL.md +5 -0
- package/skills/ttm-seo/SKILL.md +64 -0
- package/skills/ttm-seo-audit/SKILL.md +17 -12
- package/skills/ttm-ship/SKILL.md +5 -0
- package/skills/ttm-state/SKILL.md +5 -0
- package/skills/ttm-update/SKILL.md +152 -4
- package/skills/ttm-verify/SKILL.md +5 -0
- package/templates/agents-md.md +14 -4
- package/templates/campaign-research.md +6 -6
- package/templates/campaign-state.md +1 -1
- package/templates/claude-md.md +14 -4
- package/templates/linkedin-base-template.md +48 -0
- package/templates/next-step-footer.md +13 -0
- package/templates/production-manifest.json +4 -4
- package/templates/pseo/alternative-cms-schema.json +65 -0
- package/templates/pseo/blog-cms-schema.json +55 -0
- package/templates/pseo/comparison-cms-schema.json +56 -0
- package/templates/pseo/use-case-cms-schema.json +62 -0
- package/templates/reference-files/brand.md +51 -0
- package/templates/reference-files/product-dna.md +73 -0
- package/templates/site-scaffold/app/globals.css +2 -0
- package/templates/site-scaffold/app/layout.tsx +17 -0
- package/templates/site-scaffold/app/page.tsx +33 -0
- package/templates/site-scaffold/app/robots.ts +8 -0
- package/templates/site-scaffold/app/sitemap.ts +10 -0
- package/templates/site-scaffold/app/tokens.css +21 -0
- package/templates/site-scaffold/components/Comparison.tsx +14 -0
- package/templates/site-scaffold/components/Faq.tsx +14 -0
- package/templates/site-scaffold/components/Features.tsx +14 -0
- package/templates/site-scaffold/components/FinalCta.tsx +17 -0
- package/templates/site-scaffold/components/Footer.tsx +12 -0
- package/templates/site-scaffold/components/Hero.tsx +22 -0
- package/templates/site-scaffold/components/HowItWorks.tsx +14 -0
- package/templates/site-scaffold/components/PricingTeaser.tsx +14 -0
- package/templates/site-scaffold/components/Problem.tsx +14 -0
- package/templates/site-scaffold/components/SocialProof.tsx +14 -0
- package/templates/site-scaffold/components/Solution.tsx +14 -0
- package/templates/site-scaffold/components/Testimonials.tsx +14 -0
- package/templates/site-scaffold/components/UseCases.tsx +14 -0
- package/templates/site-scaffold/content/.gitkeep +0 -0
- package/templates/site-scaffold/lib/.gitkeep +0 -0
- package/templates/site-scaffold/next.config.mjs +10 -0
- package/templates/site-scaffold/package.json +25 -0
- package/templates/site-scaffold/postcss.config.mjs +3 -0
- package/templates/site-scaffold/public/llms.txt +9 -0
- package/templates/site-scaffold/tsconfig.json +21 -0
- package/templates/verification-report.md +1 -1
- package/workflows/channel/linkedin-post.md +178 -0
- package/workflows/discipline/affiliate-kit.md +65 -6
- package/workflows/discipline/{email-preflight.md → email-check.md} +39 -4
- package/workflows/discipline/repurpose.md +82 -31
- package/workflows/discipline/{aeo-check.md → seo/aeo.md} +13 -6
- package/workflows/discipline/{seo-audit.md → seo/audit.md} +13 -6
- package/workflows/discipline/{keyword-map.md → seo/keyword-map.md} +13 -6
- package/workflows/education/ttm-101.md +114 -0
- package/workflows/lifecycle/brief-positioning-check.md +1 -1
- package/workflows/lifecycle/brief.md +64 -28
- package/workflows/lifecycle/{research.md → discover.md} +61 -19
- package/workflows/lifecycle/fix.md +72 -37
- package/workflows/lifecycle/humanize.md +280 -0
- package/workflows/lifecycle/learn.md +72 -35
- package/workflows/lifecycle/measure.md +54 -18
- package/workflows/lifecycle/produce.md +88 -37
- package/workflows/lifecycle/review.md +71 -25
- package/workflows/lifecycle/ship.md +62 -18
- package/workflows/lifecycle/verify.md +72 -26
- package/workflows/reference-mgmt/brand-refresh.md +50 -13
- package/workflows/reference-mgmt/competitor-scan.md +51 -15
- package/workflows/reference-mgmt/icp-refresh.md +48 -12
- package/workflows/reference-mgmt/positioning-check.md +55 -20
- package/workflows/reference-mgmt/positioning-shift.md +53 -17
- package/workflows/setup/init-brand-colors.md +75 -0
- package/workflows/setup/init-logo.md +113 -0
- package/workflows/setup/init-product-dna.md +83 -0
- package/workflows/setup/init-questions.md +166 -30
- package/workflows/setup/init-validation.md +22 -0
- package/workflows/setup/init.md +144 -39
- package/workflows/setup/new-campaign.md +48 -12
- package/workflows/site/deploy.md +98 -0
- package/workflows/site/landing.md +156 -0
- package/workflows/site/pseo.md +96 -0
- package/workflows/site/quality-gates.md +88 -0
- package/workflows/utility/archive.md +45 -9
- package/workflows/utility/health.md +77 -3
- package/workflows/utility/improve-skill.md +233 -0
- package/workflows/utility/next.md +38 -2
- package/workflows/utility/playwright-setup.md +128 -0
- package/workflows/utility/request-skill.md +218 -0
- package/workflows/utility/resume.md +40 -3
- 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.]
|