taketomarket 2.2.0 → 2.3.1
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 +13 -17
- package/.claude-plugin/plugin.json +2 -2
- package/README.md +35 -12
- 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 +309 -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 +65 -0
- package/references/landing-page-headline-examples.md +190 -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
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
## Step 0: First-run inline education
|
|
2
|
+
|
|
3
|
+
Read `.taketomarket/CONFIG.md`. Parse `first_run_seen` (object) and `inline_education` (boolean, default true).
|
|
4
|
+
|
|
5
|
+
If `inline_education` is false: skip this step. Else if `first_run_seen.ttm-affiliate-kit` is not `true`, print the explainer below verbatim, then mark this skill as seen:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" first-run mark ttm-affiliate-kit
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Use this exact check (bash) to decide whether to print: `node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" first-run check ttm-affiliate-kit --raw` -- the JSON `seen` field is `true` once the explainer has run before.
|
|
12
|
+
|
|
13
|
+
### Explainer for `/ttm-affiliate-kit`
|
|
14
|
+
|
|
15
|
+
`/ttm-affiliate-kit` generates a complete affiliate / partner enablement
|
|
16
|
+
package: positioned creative, copy variants per channel, claim cards
|
|
17
|
+
with substantiation, and a one-pager partners can drop into their
|
|
18
|
+
own funnels. Everything inherits your positioning invariant.
|
|
19
|
+
|
|
20
|
+
Why it matters: affiliates and partners are the highest-drift channel
|
|
21
|
+
because the assets leave your control. A structured kit with explicit
|
|
22
|
+
positioning rails is the difference between affiliate-driven growth
|
|
23
|
+
that compounds and affiliate-driven content that contradicts your
|
|
24
|
+
own site within a quarter.
|
|
25
|
+
|
|
26
|
+
(Canonical source: `references/inline-education-blurbs.md`. Embedded verbatim because workflows do not @-resolve files at runtime.)
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
1
30
|
<purpose>
|
|
2
31
|
Generate a creative kit for affiliate partners including approved messaging, banner specs,
|
|
3
32
|
email swipes, and tracking requirements. Uses affiliate playbook constraints for quality.
|
|
@@ -12,7 +41,7 @@ Single-pass analysis workflow per D-07.
|
|
|
12
41
|
<constraints>
|
|
13
42
|
## POSITIONING.md is READ-ONLY
|
|
14
43
|
|
|
15
|
-
**Do NOT modify `.
|
|
44
|
+
**Do NOT modify `.taketomarket/POSITIONING.md` during this workflow.**
|
|
16
45
|
|
|
17
46
|
POSITIONING.md is an architectural invariant. If you detect positioning drift:
|
|
18
47
|
- Flag the issue and recommend running /ttm-positioning-check
|
|
@@ -43,11 +72,11 @@ If `AskUserQuestion` tool is not available in the current runtime, set `TEXT_MOD
|
|
|
43
72
|
takeToMarket > LOADING CONTEXT FOR AFFILIATE KIT
|
|
44
73
|
```
|
|
45
74
|
|
|
46
|
-
**Tier 1 summaries** (lines 1 to `<!-- END_SUMMARY -->`) from all 9 `.
|
|
47
|
-
**Tier 2 (full):** `.
|
|
75
|
+
**Tier 1 summaries** (lines 1 to `<!-- END_SUMMARY -->`) from all 9 `.taketomarket/` reference files.
|
|
76
|
+
**Tier 2 (full):** `.taketomarket/POSITIONING.md`, `.taketomarket/BRAND.md`, `.taketomarket/ICP.md`, `.taketomarket/METRICS.md`
|
|
48
77
|
**Playbook gates:** @${CLAUDE_PLUGIN_ROOT}/playbooks/affiliate.md
|
|
49
78
|
|
|
50
|
-
If `.
|
|
79
|
+
If `.taketomarket/POSITIONING.md` does not exist: Error and exit.
|
|
51
80
|
|
|
52
81
|
---
|
|
53
82
|
|
|
@@ -106,7 +135,7 @@ Produce a complete kit with these sections:
|
|
|
106
135
|
## Step 4: Write Kit File
|
|
107
136
|
|
|
108
137
|
Generate a URL-safe slug from `PRODUCT_NAME`.
|
|
109
|
-
Write to `.
|
|
138
|
+
Write to `.taketomarket/AFFILIATE-KIT-[product-slug].md`.
|
|
110
139
|
|
|
111
140
|
Kit file structure:
|
|
112
141
|
```markdown
|
|
@@ -139,9 +168,39 @@ Cookie Window: [duration]
|
|
|
139
168
|
========================================
|
|
140
169
|
takeToMarket > AFFILIATE KIT COMPLETE
|
|
141
170
|
========================================
|
|
142
|
-
Product: ${PRODUCT_NAME} | Sections: 5 | File: .
|
|
171
|
+
Product: ${PRODUCT_NAME} | Sections: 5 | File: .taketomarket/AFFILIATE-KIT-[slug].md
|
|
143
172
|
```
|
|
144
173
|
|
|
145
174
|
Display summary of kit contents and confirm file location.
|
|
146
175
|
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Step 6: Final humanization (MANDATORY)
|
|
179
|
+
|
|
180
|
+
Every external kit asset (partner email templates, kit copy, promotional snippets, etc.) MUST pass through `/ttm-humanize` before write.
|
|
181
|
+
|
|
182
|
+
For each draft asset produced in this phase:
|
|
183
|
+
1. Invoke `/ttm-humanize <draft-path>` via the Skill tool.
|
|
184
|
+
2. Wait for the rewritten version.
|
|
185
|
+
3. Write the humanized output to the final asset destination.
|
|
186
|
+
4. Do not write the un-humanized draft.
|
|
187
|
+
|
|
188
|
+
Internal state files (campaign briefs, manifests, STATE.md) are exempt.
|
|
189
|
+
|
|
147
190
|
</process>
|
|
191
|
+
|
|
192
|
+
<success_criteria>
|
|
193
|
+
- [ ] All 5 sections generated (Approved Messaging, Email Swipes, Banner Specs, Tracking Requirements, Compliance Rules)
|
|
194
|
+
- [ ] Approved claims and banned-language lists sourced from BRAND.md + POSITIONING.md
|
|
195
|
+
- [ ] FTC disclosure included in every email swipe template
|
|
196
|
+
- [ ] UTM format and attribution model present in tracking section
|
|
197
|
+
- [ ] Kit file written to .taketomarket/AFFILIATE-KIT-[product-slug].md
|
|
198
|
+
- [ ] Each external kit asset (partner emails, kit copy, snippets) passed through /ttm-humanize before write.
|
|
199
|
+
</success_criteria>
|
|
200
|
+
|
|
201
|
+
## What if this doesn't fit?
|
|
202
|
+
|
|
203
|
+
Looks like /ttm-affiliate-kit can't do that yet.
|
|
204
|
+
|
|
205
|
+
- Want a new skill? /ttm-request-skill
|
|
206
|
+
- Existing skill needs work? /ttm-improve-skill
|
|
@@ -1,3 +1,31 @@
|
|
|
1
|
+
## Step 0: First-run inline education
|
|
2
|
+
|
|
3
|
+
Read `.taketomarket/CONFIG.md`. Parse `first_run_seen` (object) and `inline_education` (boolean, default true).
|
|
4
|
+
|
|
5
|
+
If `inline_education` is false: skip this step. Else if `first_run_seen.ttm-email-check` is not `true`, print the explainer below verbatim, then mark this skill as seen:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" first-run mark ttm-email-check
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Use this exact check (bash) to decide whether to print: `node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" first-run check ttm-email-check --raw` -- the JSON `seen` field is `true` once the explainer has run before.
|
|
12
|
+
|
|
13
|
+
### Explainer for `/ttm-email-check`
|
|
14
|
+
|
|
15
|
+
`/ttm-email-check` is the email pre-flight. It runs a draft email
|
|
16
|
+
through deliverability checks (spam-trigger phrases, structural red
|
|
17
|
+
flags, list-hygiene reminders) and the positioning gate, plus a
|
|
18
|
+
voice check against your BRAND.md. Output is a pass/fix-list.
|
|
19
|
+
|
|
20
|
+
Why it matters: email is unforgiving -- one drift-laden send to a
|
|
21
|
+
warm list can damage open rates for weeks. Treat this skill like a
|
|
22
|
+
pre-commit hook for outbound: cheap, fast, and the only thing
|
|
23
|
+
standing between your draft and your domain reputation.
|
|
24
|
+
|
|
25
|
+
(Canonical source: `references/inline-education-blurbs.md`. Embedded verbatim because workflows do not @-resolve files at runtime.)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
1
29
|
<purpose>
|
|
2
30
|
Pre-send deliverability, dark-mode compatibility, and spam-trigger scan for email content.
|
|
3
31
|
Evaluates against email playbook gate definitions and generates a go/no-go recommendation.
|
|
@@ -12,7 +40,7 @@ Single-pass analysis workflow per D-07.
|
|
|
12
40
|
<constraints>
|
|
13
41
|
## POSITIONING.md is READ-ONLY
|
|
14
42
|
|
|
15
|
-
**Do NOT modify `.
|
|
43
|
+
**Do NOT modify `.taketomarket/POSITIONING.md` during this workflow.**
|
|
16
44
|
|
|
17
45
|
POSITIONING.md is an architectural invariant. If you detect positioning drift:
|
|
18
46
|
- Flag the issue and recommend running /ttm-positioning-check
|
|
@@ -43,11 +71,11 @@ If `AskUserQuestion` tool is not available in the current runtime, set `TEXT_MOD
|
|
|
43
71
|
takeToMarket > LOADING CONTEXT FOR EMAIL PREFLIGHT
|
|
44
72
|
```
|
|
45
73
|
|
|
46
|
-
**Tier 1 summaries** (lines 1 to `<!-- END_SUMMARY -->`) from all 9 `.
|
|
47
|
-
**Tier 2 (full):** `.
|
|
74
|
+
**Tier 1 summaries** (lines 1 to `<!-- END_SUMMARY -->`) from all 9 `.taketomarket/` reference files.
|
|
75
|
+
**Tier 2 (full):** `.taketomarket/BRAND.md` (voice/banned words check).
|
|
48
76
|
**Playbook gates:** @${CLAUDE_PLUGIN_ROOT}/playbooks/email.md
|
|
49
77
|
|
|
50
|
-
If `.
|
|
78
|
+
If `.taketomarket/POSITIONING.md` does not exist: Error and exit.
|
|
51
79
|
|
|
52
80
|
---
|
|
53
81
|
|
|
@@ -148,3 +176,10 @@ VERDICT: [GO / CAUTION / NO-GO]
|
|
|
148
176
|
```
|
|
149
177
|
|
|
150
178
|
</process>
|
|
179
|
+
|
|
180
|
+
## What if this doesn't fit?
|
|
181
|
+
|
|
182
|
+
Looks like /ttm-email-check can't do that yet.
|
|
183
|
+
|
|
184
|
+
- Want a new skill? /ttm-request-skill
|
|
185
|
+
- Existing skill needs work? /ttm-improve-skill
|
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
## Step 0: First-run inline education
|
|
2
|
+
|
|
3
|
+
Read `.taketomarket/CONFIG.md`. Parse `first_run_seen` (object) and `inline_education` (boolean, default true).
|
|
4
|
+
|
|
5
|
+
If `inline_education` is false: skip this step. Else if `first_run_seen.ttm-repurpose` is not `true`, print the explainer below verbatim, then mark this skill as seen:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" first-run mark ttm-repurpose
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Use this exact check (bash) to decide whether to print: `node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" first-run check ttm-repurpose --raw` -- the JSON `seen` field is `true` once the explainer has run before.
|
|
12
|
+
|
|
13
|
+
### Explainer for `/ttm-repurpose`
|
|
14
|
+
|
|
15
|
+
`/ttm-repurpose` takes a shipped hero asset and generates derivative
|
|
16
|
+
assets for other channels (LinkedIn from a blog, email from a landing
|
|
17
|
+
page, threads from a podcast transcript) while preserving the
|
|
18
|
+
positioning invariant. Each derivative runs the full gate wall.
|
|
19
|
+
|
|
20
|
+
Why it matters: most marketing teams produce one-off assets; the
|
|
21
|
+
compound advantage comes from making one hero work across five
|
|
22
|
+
channels. Repurpose is the systematic version of that, with explicit
|
|
23
|
+
provenance so you can trace any channel asset back to the parent and
|
|
24
|
+
the brief.
|
|
25
|
+
|
|
26
|
+
(Canonical source: `references/inline-education-blurbs.md`. Embedded verbatim because workflows do not @-resolve files at runtime.)
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
1
30
|
<purpose>
|
|
2
31
|
Fan out a long-form source asset into derivative assets across channels. Executes full
|
|
3
32
|
brief-produce-verify per derivative with hero-first Task() orchestration. Each derivative
|
|
@@ -14,7 +43,7 @@ This is NOT a lightweight command -- it runs the full production lifecycle per d
|
|
|
14
43
|
<constraints>
|
|
15
44
|
## POSITIONING.md is READ-ONLY
|
|
16
45
|
|
|
17
|
-
**Do NOT modify `.
|
|
46
|
+
**Do NOT modify `.taketomarket/POSITIONING.md` during this workflow.**
|
|
18
47
|
|
|
19
48
|
POSITIONING.md is an architectural invariant. If you detect positioning drift:
|
|
20
49
|
- In verify: use the Escalate option to launch /ttm-positioning-shift
|
|
@@ -68,21 +97,21 @@ SOURCE_ASSET_PATH=$(echo "$ARGUMENTS" | sed 's/--text//g' | xargs)
|
|
|
68
97
|
```
|
|
69
98
|
|
|
70
99
|
Read Tier 1 summaries from all 9 reference files (lines 1 to `<!-- END_SUMMARY -->`):
|
|
71
|
-
- `.
|
|
72
|
-
- `.
|
|
73
|
-
- `.
|
|
74
|
-
- `.
|
|
75
|
-
- `.
|
|
76
|
-
- `.
|
|
77
|
-
- `.
|
|
78
|
-
- `.
|
|
79
|
-
- `.
|
|
100
|
+
- `.taketomarket/POSITIONING.md`
|
|
101
|
+
- `.taketomarket/BRAND.md`
|
|
102
|
+
- `.taketomarket/ICP.md`
|
|
103
|
+
- `.taketomarket/CHANNELS.md`
|
|
104
|
+
- `.taketomarket/STATE.md` (frontmatter only)
|
|
105
|
+
- `.taketomarket/CALENDAR.md`
|
|
106
|
+
- `.taketomarket/COMPETITORS.md`
|
|
107
|
+
- `.taketomarket/METRICS.md`
|
|
108
|
+
- `.taketomarket/LEARNINGS.md`
|
|
80
109
|
|
|
81
110
|
Read Tier 2 (full content) for production context:
|
|
82
|
-
- `.
|
|
83
|
-
- `.
|
|
84
|
-
- `.
|
|
85
|
-
- `.
|
|
111
|
+
- `.taketomarket/POSITIONING.md`
|
|
112
|
+
- `.taketomarket/CHANNELS.md`
|
|
113
|
+
- `.taketomarket/BRAND.md`
|
|
114
|
+
- `.taketomarket/ICP.md`
|
|
86
115
|
|
|
87
116
|
---
|
|
88
117
|
|
|
@@ -95,8 +124,8 @@ Parse SOURCE_ASSET_PATH from $ARGUMENTS.
|
|
|
95
124
|
Use path.resolve() equivalent to canonicalize the path, then verify:
|
|
96
125
|
|
|
97
126
|
1. **File exists** at the specified path
|
|
98
|
-
2. **Path is within `.
|
|
99
|
-
resolve to a location under `.
|
|
127
|
+
2. **Path is within `.taketomarket/CAMPAIGNS/`** directory -- reject any path that does not
|
|
128
|
+
resolve to a location under `.taketomarket/CAMPAIGNS/[slug]/ASSETS/`
|
|
100
129
|
3. **Campaign is in appropriate phase** -- read the campaign's STATE.md and confirm phase
|
|
101
130
|
is one of: produced, verified, reviewed, fixed, or shipped
|
|
102
131
|
|
|
@@ -109,7 +138,7 @@ Extract from the validated path and campaign data:
|
|
|
109
138
|
|
|
110
139
|
If validation fails at any step, display a specific error:
|
|
111
140
|
- Path not found: "Source asset not found at [path]. Check the file path and try again."
|
|
112
|
-
- Not in CAMPAIGNS: "Source asset must be within a .
|
|
141
|
+
- Not in CAMPAIGNS: "Source asset must be within a .taketomarket/CAMPAIGNS/[slug]/ASSETS/ directory."
|
|
113
142
|
- Wrong phase: "Campaign [slug] is in phase [phase]. Repurpose requires produced, verified, reviewed, fixed, or shipped."
|
|
114
143
|
- Not in MANIFEST: "Source asset not found in MANIFEST.json. Was this asset produced by /ttm-produce?"
|
|
115
144
|
|
|
@@ -117,7 +146,7 @@ If validation fails at any step, display a specific error:
|
|
|
117
146
|
|
|
118
147
|
## Step 3: Select Target Channels
|
|
119
148
|
|
|
120
|
-
Read `.
|
|
149
|
+
Read `.taketomarket/CHANNELS.md` active channels list.
|
|
121
150
|
|
|
122
151
|
Parse all active channels from CHANNELS.md. Remove SOURCE_CHANNEL from the list
|
|
123
152
|
(do not repurpose to the same channel the source was produced for).
|
|
@@ -166,12 +195,12 @@ takeToMarket > GENERATING DERIVATIVE BRIEFS ([N] channels)
|
|
|
166
195
|
For each target channel, generate a channel-adapted derivative brief (per D-11).
|
|
167
196
|
|
|
168
197
|
Read the source asset content and extract the core message/thesis.
|
|
169
|
-
Cross-reference `.
|
|
198
|
+
Cross-reference `.taketomarket/CHANNELS.md` for each target channel's configuration:
|
|
170
199
|
- Format requirements (content type, structure)
|
|
171
200
|
- Typical length/word count for the channel
|
|
172
201
|
- Audience overlap with source channel
|
|
173
202
|
|
|
174
|
-
Cross-reference `.
|
|
203
|
+
Cross-reference `.taketomarket/BRAND.md` for tone-per-context adjustments if defined
|
|
175
204
|
for the target channel.
|
|
176
205
|
|
|
177
206
|
Write each brief with these sections:
|
|
@@ -182,7 +211,7 @@ Write each brief with these sections:
|
|
|
182
211
|
- **Positioning Anchor:** Primary differentiator and proof points from POSITIONING.md (direct quote)
|
|
183
212
|
- **Outcome Metric:** Inherit from campaign BRIEF.md, or channel-default from CHANNELS.md baselines
|
|
184
213
|
|
|
185
|
-
Write each brief to: `.
|
|
214
|
+
Write each brief to: `.taketomarket/CAMPAIGNS/${CAMPAIGN_SLUG}/REPURPOSE-BRIEF-${CHANNEL_SLUG}.md`
|
|
186
215
|
|
|
187
216
|
---
|
|
188
217
|
|
|
@@ -195,12 +224,12 @@ takeToMarket > REPURPOSING: HERO DERIVATIVE ([HERO_CHANNEL])
|
|
|
195
224
|
Read the agent prompt template from `${CLAUDE_PLUGIN_ROOT}/agents/ttm-producer.md`.
|
|
196
225
|
|
|
197
226
|
Fill placeholders:
|
|
198
|
-
- `[BRIEF_PATH]` --> `.
|
|
199
|
-
- `[POSITIONING_PATH]` --> `.
|
|
200
|
-
- `[BRAND_PATH]` --> `.
|
|
201
|
-
- `[ICP_PATH]` --> `.
|
|
227
|
+
- `[BRIEF_PATH]` --> `.taketomarket/CAMPAIGNS/${CAMPAIGN_SLUG}/REPURPOSE-BRIEF-${HERO_CHANNEL_SLUG}.md`
|
|
228
|
+
- `[POSITIONING_PATH]` --> `.taketomarket/POSITIONING.md`
|
|
229
|
+
- `[BRAND_PATH]` --> `.taketomarket/BRAND.md`
|
|
230
|
+
- `[ICP_PATH]` --> `.taketomarket/ICP.md`
|
|
202
231
|
- `[PLAYBOOK_PATH]` --> resolved playbook for HERO_CHANNEL (from `${CLAUDE_PLUGIN_ROOT}/playbooks/${CHANNEL_TYPE}.md`), or `"none"` if not found
|
|
203
|
-
- `[OUTPUT_PATH]` --> `.
|
|
232
|
+
- `[OUTPUT_PATH]` --> `.taketomarket/CAMPAIGNS/${CAMPAIGN_SLUG}/ASSETS/R-01-${HERO_CHANNEL_SLUG}.md`
|
|
204
233
|
- `[ASSET_TYPE]` --> derivative content type for this channel
|
|
205
234
|
- `[CHANNEL]` --> HERO_CHANNEL name
|
|
206
235
|
- `[HERO_PATH]` --> SOURCE_ASSET_PATH (the original source serves as the "hero" reference)
|
|
@@ -213,7 +242,7 @@ Call Task() with the populated prompt.
|
|
|
213
242
|
|
|
214
243
|
After Task() returns, verify the hero derivative file exists and has content:
|
|
215
244
|
```bash
|
|
216
|
-
test -s ".
|
|
245
|
+
test -s ".taketomarket/CAMPAIGNS/${CAMPAIGN_SLUG}/ASSETS/R-01-${HERO_CHANNEL_SLUG}.md"
|
|
217
246
|
```
|
|
218
247
|
|
|
219
248
|
If the file is empty or missing:
|
|
@@ -245,7 +274,7 @@ All derivative Task() calls run in parallel (per D-13 wave-parallel pattern).
|
|
|
245
274
|
|
|
246
275
|
After ALL Task() calls complete, verify each output file exists and has content (> 50 chars):
|
|
247
276
|
```bash
|
|
248
|
-
test -s ".
|
|
277
|
+
test -s ".taketomarket/CAMPAIGNS/${CAMPAIGN_SLUG}/ASSETS/R-${NN}-${CHANNEL_SLUG}.md"
|
|
249
278
|
```
|
|
250
279
|
|
|
251
280
|
For any derivative that failed (file empty or missing):
|
|
@@ -309,6 +338,20 @@ Display a banner with:
|
|
|
309
338
|
- Manifest and brief file paths
|
|
310
339
|
- Next steps: `/ttm-verify`, `/ttm-review`, `/ttm-fix`
|
|
311
340
|
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## Step 10: Final humanization (MANDATORY)
|
|
344
|
+
|
|
345
|
+
Every audience-facing asset MUST pass through `/ttm-humanize` before write.
|
|
346
|
+
|
|
347
|
+
For each draft asset produced in this phase:
|
|
348
|
+
1. For each derivative produced (long-form -> short-form, email -> social, etc.), invoke `/ttm-humanize <derivative-path>` via the Skill tool.
|
|
349
|
+
2. Wait for the rewritten version.
|
|
350
|
+
3. Write the humanized output to the final asset destination.
|
|
351
|
+
4. Do not write the un-humanized draft.
|
|
352
|
+
|
|
353
|
+
Internal state files (campaign briefs, manifests, STATE.md) are exempt.
|
|
354
|
+
|
|
312
355
|
</process>
|
|
313
356
|
|
|
314
357
|
<success_criteria>
|
|
@@ -320,10 +363,18 @@ Display a banner with:
|
|
|
320
363
|
- [ ] Simplified verification (positioning drift, format, voice) runs per derivative
|
|
321
364
|
- [ ] All derivatives tracked in MANIFEST.json with source_asset_id
|
|
322
365
|
- [ ] Completion banner with per-derivative verification results
|
|
366
|
+
- [ ] Each derivative passed through /ttm-humanize before write.
|
|
323
367
|
</success_criteria>
|
|
324
368
|
|
|
325
369
|
<output>
|
|
326
|
-
- `.
|
|
327
|
-
- `.
|
|
328
|
-
- `.
|
|
370
|
+
- `.taketomarket/CAMPAIGNS/${SLUG}/REPURPOSE-BRIEF-*.md` (per-channel derivative briefs)
|
|
371
|
+
- `.taketomarket/CAMPAIGNS/${SLUG}/ASSETS/R-*.md` (produced derivative assets)
|
|
372
|
+
- `.taketomarket/CAMPAIGNS/${SLUG}/MANIFEST.json` (updated with derivative entries)
|
|
329
373
|
</output>
|
|
374
|
+
|
|
375
|
+
## What if this doesn't fit?
|
|
376
|
+
|
|
377
|
+
Looks like /ttm-repurpose can't do that yet.
|
|
378
|
+
|
|
379
|
+
- Want a new skill? /ttm-request-skill
|
|
380
|
+
- Existing skill needs work? /ttm-improve-skill
|
|
@@ -13,7 +13,7 @@ Single-pass analysis workflow per D-07.
|
|
|
13
13
|
<constraints>
|
|
14
14
|
## POSITIONING.md is READ-ONLY
|
|
15
15
|
|
|
16
|
-
**Do NOT modify `.
|
|
16
|
+
**Do NOT modify `.taketomarket/POSITIONING.md` during this workflow.**
|
|
17
17
|
|
|
18
18
|
POSITIONING.md is an architectural invariant. If you detect positioning drift:
|
|
19
19
|
- Flag the issue and recommend running /ttm-positioning-check
|
|
@@ -44,11 +44,11 @@ If `AskUserQuestion` tool is not available in the current runtime, set `TEXT_MOD
|
|
|
44
44
|
takeToMarket > LOADING CONTEXT FOR AEO CHECK
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
**Tier 1 summaries** (lines 1 to `<!-- END_SUMMARY -->`) from all 9 `.
|
|
48
|
-
**Tier 2 (full):** `.
|
|
47
|
+
**Tier 1 summaries** (lines 1 to `<!-- END_SUMMARY -->`) from all 9 `.taketomarket/` reference files.
|
|
48
|
+
**Tier 2 (full):** `.taketomarket/POSITIONING.md` (differentiator alignment check).
|
|
49
49
|
**Playbook gates:** @${CLAUDE_PLUGIN_ROOT}/playbooks/aeo.md
|
|
50
50
|
|
|
51
|
-
If `.
|
|
51
|
+
If `.taketomarket/POSITIONING.md` does not exist: Error and exit.
|
|
52
52
|
|
|
53
53
|
---
|
|
54
54
|
|
|
@@ -174,7 +174,14 @@ takeToMarket > AEO CHECK COMPLETE
|
|
|
174
174
|
Query: ${TARGET_QUERY} | Citability Score: [score]%
|
|
175
175
|
```
|
|
176
176
|
|
|
177
|
-
Offer: "Save this report to .
|
|
178
|
-
If yes: create `.
|
|
177
|
+
Offer: "Save this report to .taketomarket/AUDITS/aeo-check-[date].md? (yes/no)"
|
|
178
|
+
If yes: create `.taketomarket/AUDITS/` directory if needed and write the report.
|
|
179
179
|
|
|
180
180
|
</process>
|
|
181
|
+
|
|
182
|
+
## What if this doesn't fit?
|
|
183
|
+
|
|
184
|
+
Looks like /ttm-seo can't do that yet.
|
|
185
|
+
|
|
186
|
+
- Want a new skill? /ttm-request-skill
|
|
187
|
+
- Existing skill needs work? /ttm-improve-skill
|
|
@@ -12,7 +12,7 @@ Single-pass analysis workflow per D-07.
|
|
|
12
12
|
<constraints>
|
|
13
13
|
## POSITIONING.md is READ-ONLY
|
|
14
14
|
|
|
15
|
-
**Do NOT modify `.
|
|
15
|
+
**Do NOT modify `.taketomarket/POSITIONING.md` during this workflow.**
|
|
16
16
|
|
|
17
17
|
POSITIONING.md is an architectural invariant. If you detect positioning drift:
|
|
18
18
|
- Flag the issue and recommend running /ttm-positioning-check
|
|
@@ -43,11 +43,11 @@ If `AskUserQuestion` tool is not available in the current runtime, set `TEXT_MOD
|
|
|
43
43
|
takeToMarket > LOADING CONTEXT FOR SEO AUDIT
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
**Tier 1 summaries** (lines 1 to `<!-- END_SUMMARY -->`) from all 9 `.
|
|
47
|
-
**Tier 2 (full):** `.
|
|
46
|
+
**Tier 1 summaries** (lines 1 to `<!-- END_SUMMARY -->`) from all 9 `.taketomarket/` reference files.
|
|
47
|
+
**Tier 2 (full):** `.taketomarket/CHANNELS.md` (channel-specific SEO config).
|
|
48
48
|
**Playbook gates:** @${CLAUDE_PLUGIN_ROOT}/playbooks/seo.md
|
|
49
49
|
|
|
50
|
-
If `.
|
|
50
|
+
If `.taketomarket/POSITIONING.md` does not exist: Error and exit.
|
|
51
51
|
|
|
52
52
|
---
|
|
53
53
|
|
|
@@ -163,7 +163,14 @@ takeToMarket > SEO AUDIT COMPLETE
|
|
|
163
163
|
Target: ${AUDIT_TARGET} | Result: [X/8 PASS] [Y/8 WARN] [Z/8 FAIL]
|
|
164
164
|
```
|
|
165
165
|
|
|
166
|
-
Offer: "Save this report to .
|
|
167
|
-
If yes: create `.
|
|
166
|
+
Offer: "Save this report to .taketomarket/AUDITS/seo-audit-[date].md? (yes/no)"
|
|
167
|
+
If yes: create `.taketomarket/AUDITS/` directory if needed and write the report.
|
|
168
168
|
|
|
169
169
|
</process>
|
|
170
|
+
|
|
171
|
+
## What if this doesn't fit?
|
|
172
|
+
|
|
173
|
+
Looks like /ttm-seo can't do that yet.
|
|
174
|
+
|
|
175
|
+
- Want a new skill? /ttm-request-skill
|
|
176
|
+
- Existing skill needs work? /ttm-improve-skill
|
|
@@ -13,7 +13,7 @@ Single-pass analysis workflow per D-07.
|
|
|
13
13
|
<constraints>
|
|
14
14
|
## POSITIONING.md is READ-ONLY
|
|
15
15
|
|
|
16
|
-
**Do NOT modify `.
|
|
16
|
+
**Do NOT modify `.taketomarket/POSITIONING.md` during this workflow.**
|
|
17
17
|
|
|
18
18
|
POSITIONING.md is an architectural invariant. If you detect positioning drift:
|
|
19
19
|
- Flag the issue and recommend running /ttm-positioning-check
|
|
@@ -44,10 +44,10 @@ If `AskUserQuestion` tool is not available in the current runtime, set `TEXT_MOD
|
|
|
44
44
|
takeToMarket > LOADING CONTEXT FOR KEYWORD MAP
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
**Tier 1 summaries** (lines 1 to `<!-- END_SUMMARY -->`) from all 9 `.
|
|
48
|
-
**Tier 2 (full):** `.
|
|
47
|
+
**Tier 1 summaries** (lines 1 to `<!-- END_SUMMARY -->`) from all 9 `.taketomarket/` reference files.
|
|
48
|
+
**Tier 2 (full):** `.taketomarket/POSITIONING.md`, `.taketomarket/CHANNELS.md`, `.taketomarket/COMPETITORS.md`
|
|
49
49
|
|
|
50
|
-
If `.
|
|
50
|
+
If `.taketomarket/POSITIONING.md` does not exist: Error and exit.
|
|
51
51
|
|
|
52
52
|
---
|
|
53
53
|
|
|
@@ -85,7 +85,7 @@ Group into topic clusters with pillar-cluster relationships.
|
|
|
85
85
|
|
|
86
86
|
## Step 4: Output Keyword Map
|
|
87
87
|
|
|
88
|
-
Write to `.
|
|
88
|
+
Write to `.taketomarket/KEYWORD-MAP.md`:
|
|
89
89
|
|
|
90
90
|
```markdown
|
|
91
91
|
# Keyword Map
|
|
@@ -117,9 +117,16 @@ Keywords competitors rank for that are not covered:
|
|
|
117
117
|
========================================
|
|
118
118
|
takeToMarket > KEYWORD MAP COMPLETE
|
|
119
119
|
========================================
|
|
120
|
-
Clusters: [N] | Keywords: [total] | File: .
|
|
120
|
+
Clusters: [N] | Keywords: [total] | File: .taketomarket/KEYWORD-MAP.md
|
|
121
121
|
```
|
|
122
122
|
|
|
123
123
|
Display a summary table of clusters with keyword counts per cluster.
|
|
124
124
|
|
|
125
125
|
</process>
|
|
126
|
+
|
|
127
|
+
## What if this doesn't fit?
|
|
128
|
+
|
|
129
|
+
Looks like /ttm-seo can't do that yet.
|
|
130
|
+
|
|
131
|
+
- Want a new skill? /ttm-request-skill
|
|
132
|
+
- Existing skill needs work? /ttm-improve-skill
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# /ttm-101 Workflow
|
|
2
|
+
|
|
3
|
+
Print engineer-friendly explanations of core marketing concepts.
|
|
4
|
+
|
|
5
|
+
## Section 1: Positioning
|
|
6
|
+
|
|
7
|
+
**Engineering analogy:** Positioning is your API contract. It's the promise of what your product is, who it's for, and what it does that competitors don't. Every downstream marketing asset MUST adhere to it.
|
|
8
|
+
|
|
9
|
+
Without positioning:
|
|
10
|
+
- Your homepage says one thing; your sales emails say another. Customers churn.
|
|
11
|
+
- You build features for the wrong customer. Roadmap drift.
|
|
12
|
+
- AI engines can't summarize who you are. You don't get cited.
|
|
13
|
+
|
|
14
|
+
A positioning statement has 5 parts:
|
|
15
|
+
1. **Category** — what kind of thing you are. ("Marketing OS for engineers")
|
|
16
|
+
2. **Target audience** — who specifically. ("Developerneurs and solopreneurs with no marketing experience")
|
|
17
|
+
3. **Primary differentiator** — the ONE thing competitors don't do. ("Positioning-invariant quality gates")
|
|
18
|
+
4. **Proof points** — specific numbers/cases that back the differentiator.
|
|
19
|
+
5. **Must-not-say** — terms you ban. (Why: prevents drift.)
|
|
20
|
+
|
|
21
|
+
In takeToMarket, `.taketomarket/POSITIONING.md` holds this. The quality gate wall enforces it.
|
|
22
|
+
|
|
23
|
+
## Section 2: ICP (Ideal Customer Profile)
|
|
24
|
+
|
|
25
|
+
**Engineering analogy:** ICP is your user persona but enforced as a constraint. Anyone outside the ICP is anti-ICP — explicitly NOT a target.
|
|
26
|
+
|
|
27
|
+
Without ICP discipline:
|
|
28
|
+
- You market to everyone. Your message is bland. Nobody pays attention.
|
|
29
|
+
- You build features for tire-kickers. Real customers churn.
|
|
30
|
+
|
|
31
|
+
A good ICP has:
|
|
32
|
+
- **Demographics:** role, company size, industry, geography.
|
|
33
|
+
- **Psychographics:** what they believe, what they read, what they're frustrated by.
|
|
34
|
+
- **JTBD:** the job they hire your product to do.
|
|
35
|
+
- **Pain severity + frequency.**
|
|
36
|
+
- **Anti-ICP:** who you explicitly avoid.
|
|
37
|
+
|
|
38
|
+
In takeToMarket: `.taketomarket/ICP.md`.
|
|
39
|
+
|
|
40
|
+
## Section 3: Channels
|
|
41
|
+
|
|
42
|
+
**Engineering analogy:** Channels are deployment targets. Each has its own runtime + idioms. You don't deploy a React app to AWS Lambda raw — you containerize it. Same with marketing: you don't post a long-form essay on Twitter, you adapt it.
|
|
43
|
+
|
|
44
|
+
Channels in takeToMarket:
|
|
45
|
+
- **Organic Search / SEO** — content that ranks on Google.
|
|
46
|
+
- **AEO (AI Engine Optimization)** — content that AI engines cite.
|
|
47
|
+
- **LinkedIn** — professional social.
|
|
48
|
+
- **Email** — direct + permissioned.
|
|
49
|
+
- **Paid Ads** — Google Ads, Meta Ads, LinkedIn Ads.
|
|
50
|
+
- **YouTube** — video content.
|
|
51
|
+
- **Social** — Twitter/X, Instagram, TikTok.
|
|
52
|
+
- **Events** — conferences, webinars.
|
|
53
|
+
- **PR / Media** — press, podcast tours.
|
|
54
|
+
- **Affiliate / Partnerships** — distribution via others.
|
|
55
|
+
|
|
56
|
+
Each channel has a playbook (`playbooks/<channel>.md`) rewritten under THE industry leader for that channel.
|
|
57
|
+
|
|
58
|
+
## Section 4: Funnel
|
|
59
|
+
|
|
60
|
+
**Engineering analogy:** TOFU/MOFU/BOFU is a state machine. Users move through states. Each state has different content needs.
|
|
61
|
+
|
|
62
|
+
- **TOFU (Top of Funnel):** Stranger. Doesn't know they have your problem. Content: blog posts, social posts, YouTube videos. Goal: awareness.
|
|
63
|
+
- **MOFU (Middle of Funnel):** Aware of problem, evaluating solutions. Content: comparison pages, use-case pages, free tools, lead magnets. Goal: evaluation.
|
|
64
|
+
- **BOFU (Bottom of Funnel):** Ready to buy. Content: pricing pages, demos, case studies, testimonials. Goal: conversion.
|
|
65
|
+
|
|
66
|
+
In takeToMarket: each asset is tagged with its funnel position in the campaign brief.
|
|
67
|
+
|
|
68
|
+
## Section 5: AEO vs SEO
|
|
69
|
+
|
|
70
|
+
**Engineering analogy:** SEO is for search engines (Google). AEO is for AI engines (ChatGPT, Claude, Perplexity, Gemini). They optimize for different consumers.
|
|
71
|
+
|
|
72
|
+
- **SEO signals:** keywords, backlinks, page speed, mobile-friendliness, internal linking, schema markup.
|
|
73
|
+
- **AEO signals:** citability (clear answer blocks), structured data, definitional sentences, llms.txt, recent updates.
|
|
74
|
+
|
|
75
|
+
Modern marketing optimizes for BOTH. takeToMarket builds AEO-first while maintaining SEO floor.
|
|
76
|
+
|
|
77
|
+
## Section 6: The 9-phase lifecycle
|
|
78
|
+
|
|
79
|
+
**Engineering analogy:** Every campaign goes through a state machine with 9 states. Each state has entry + exit conditions. Quality gates between states catch defects early (cheaper than catching them in production).
|
|
80
|
+
|
|
81
|
+
1. **Brief** — define outcome metric + positioning anchor + channel mix.
|
|
82
|
+
2. **Discover** — research market, audience, competitors.
|
|
83
|
+
3. **Produce** — generate assets in fresh contexts loaded with brief + refs.
|
|
84
|
+
4. **Verify** — run quality gates on every asset.
|
|
85
|
+
5. **Review** — present to user for approval.
|
|
86
|
+
6. **Ship** — publish/deploy.
|
|
87
|
+
7. **Measure** — analyze analytics against outcome metric.
|
|
88
|
+
8. **Learn** — extract lessons, update reference files.
|
|
89
|
+
9. **Fix** — root-cause + rework failed assets (capped at 3 attempts).
|
|
90
|
+
|
|
91
|
+
## Section 7: takeToMarket invariants
|
|
92
|
+
|
|
93
|
+
**Engineering analogy:** These are unit-test-enforced contracts. Every asset must satisfy them or it doesn't ship.
|
|
94
|
+
|
|
95
|
+
1. **Verifiable outcome metric.** Every campaign declares ONE metric upfront. No metric → no campaign.
|
|
96
|
+
2. **Positioning-invariant quality gate wall.** Every asset is checked against POSITIONING.md before ship. Drift = block.
|
|
97
|
+
3. **Mandatory humanizer pass.** Every audience-facing asset passes through `/ttm-humanize` as the final step.
|
|
98
|
+
4. **Compound learnings.** Every campaign's lessons update `.taketomarket/LEARNINGS.md`. Future campaigns inherit.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## End-of-tour
|
|
103
|
+
|
|
104
|
+
Pick one to do now:
|
|
105
|
+
- `/ttm-init` — set up your workspace if you haven't.
|
|
106
|
+
- `/ttm-new-campaign` — start a campaign.
|
|
107
|
+
- `/ttm-101 --section <name>` — re-read any section.
|
|
108
|
+
|
|
109
|
+
## What if this doesn't fit?
|
|
110
|
+
|
|
111
|
+
Looks like /ttm-101 can't do that yet.
|
|
112
|
+
|
|
113
|
+
- Want a new skill? /ttm-request-skill
|
|
114
|
+
- Existing skill needs work? /ttm-improve-skill
|
|
@@ -80,7 +80,7 @@ When gate result is "warn", insert at the TOP of BRIEF.md after the title line:
|
|
|
80
80
|
!! POSITIONING DRIFT WARNING !!
|
|
81
81
|
The following items may not align with your positioning:
|
|
82
82
|
- [drift detail from each failing check]
|
|
83
|
-
Review .
|
|
83
|
+
Review .taketomarket/POSITIONING.md and adjust the brief if needed.
|
|
84
84
|
Run /ttm-positioning-check for a full audit.
|
|
85
85
|
-->
|
|
86
86
|
```
|