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
@@ -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-verify` 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-verify
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-verify --raw` -- the JSON `seen` field is `true` once the explainer has run before.
12
+
13
+ ### Explainer for `/ttm-verify`
14
+
15
+ `/ttm-verify` runs every produced asset through the quality-gate wall:
16
+ positioning invariant, factual accuracy, brand-voice match, channel-format
17
+ compliance, and outcome-metric instrumentation. Failures are written as
18
+ structured findings the `/ttm-fix` skill can act on; passes get marked
19
+ ready-to-ship.
20
+
21
+ Why it matters: in marketing, "looks good" is the bug. Without an automated
22
+ gate wall, you ship assets that subtly contradict your positioning and only
23
+ discover it weeks later in analytics. Verify is the marketing equivalent of
24
+ CI: cheap to run, expensive to skip.
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
  Verification workflow for /ttm-verify. Evaluates every produced asset against
3
32
  10 base quality gates (per D-06) with structured PASS/WARN/FAIL output and
@@ -15,7 +44,7 @@ context:fork (per LIFE-09, D-10). Tier 1 failures prompt for deviation action
15
44
  <constraints>
16
45
  ## POSITIONING.md is READ-ONLY
17
46
 
18
- **Do NOT modify `.marketing/POSITIONING.md` during this workflow.**
47
+ **Do NOT modify `.taketomarket/POSITIONING.md` during this workflow.**
19
48
 
20
49
  POSITIONING.md is an architectural invariant. If you detect positioning drift:
21
50
  - In verify: use the Escalate option to launch /ttm-positioning-shift
@@ -65,33 +94,33 @@ SLUG=$(echo "$ARGUMENTS" | sed 's/--text//g' | xargs)
65
94
  If SLUG is empty, error: "Usage: /ttm-verify [campaign-slug]. Provide a campaign slug." Exit.
66
95
 
67
96
  **Load Tier 1 summaries** from all 9 reference files (lines 1 to `<!-- END_SUMMARY -->`):
68
- - `.marketing/POSITIONING.md`
69
- - `.marketing/BRAND.md`
70
- - `.marketing/ICP.md`
71
- - `.marketing/CHANNELS.md`
72
- - `.marketing/STATE.md` (frontmatter only)
73
- - `.marketing/CALENDAR.md`
74
- - `.marketing/COMPETITORS.md`
75
- - `.marketing/METRICS.md`
76
- - `.marketing/LEARNINGS.md`
97
+ - `.taketomarket/POSITIONING.md`
98
+ - `.taketomarket/BRAND.md`
99
+ - `.taketomarket/ICP.md`
100
+ - `.taketomarket/CHANNELS.md`
101
+ - `.taketomarket/STATE.md` (frontmatter only)
102
+ - `.taketomarket/CALENDAR.md`
103
+ - `.taketomarket/COMPETITORS.md`
104
+ - `.taketomarket/METRICS.md`
105
+ - `.taketomarket/LEARNINGS.md`
77
106
 
78
107
  **Load Tier 2 (full content)** for gate evaluation:
79
- - `.marketing/POSITIONING.md` (needed for GATE-01 Positioning Drift)
80
- - `.marketing/BRAND.md` (needed for GATE-02 Claim Accuracy, GATE-03 Voice Drift)
81
- - `.marketing/ICP.md` (needed for GATE-09 ICP Fit)
82
- - `.marketing/COMPETITORS.md` (needed for GATE-08 Competitor Collision)
83
- - `.marketing/CHANNELS.md` (needed for GATE-06 UTM Hygiene)
108
+ - `.taketomarket/POSITIONING.md` (needed for GATE-01 Positioning Drift)
109
+ - `.taketomarket/BRAND.md` (needed for GATE-02 Claim Accuracy, GATE-03 Voice Drift)
110
+ - `.taketomarket/ICP.md` (needed for GATE-09 ICP Fit)
111
+ - `.taketomarket/COMPETITORS.md` (needed for GATE-08 Competitor Collision)
112
+ - `.taketomarket/CHANNELS.md` (needed for GATE-06 UTM Hygiene)
84
113
 
85
114
  **Load campaign-specific files** (always full-load per context-loading.md rule 4):
86
- - `.marketing/CAMPAIGNS/${SLUG}/STATE.md`
87
- - `.marketing/CAMPAIGNS/${SLUG}/BRIEF.md` (needed for GATE-04, GATE-05)
115
+ - `.taketomarket/CAMPAIGNS/${SLUG}/STATE.md`
116
+ - `.taketomarket/CAMPAIGNS/${SLUG}/BRIEF.md` (needed for GATE-04, GATE-05)
88
117
 
89
118
  **Load MANIFEST.json:**
90
119
  ```bash
91
- MANIFEST_PATH=".marketing/CAMPAIGNS/${SLUG}/MANIFEST.json"
120
+ MANIFEST_PATH=".taketomarket/CAMPAIGNS/${SLUG}/MANIFEST.json"
92
121
  ```
93
122
 
94
- Read `.marketing/CAMPAIGNS/${SLUG}/MANIFEST.json`. If the file does not exist, error:
123
+ Read `.taketomarket/CAMPAIGNS/${SLUG}/MANIFEST.json`. If the file does not exist, error:
95
124
  "No production manifest found for campaign '${SLUG}'. Run /ttm-produce first."
96
125
  Exit.
97
126
 
@@ -140,7 +169,7 @@ for each derivative in manifest.derivatives:
140
169
  ASSETS.push({ name: derivative.name, file: derivative.file, type: derivative.type })
141
170
  ```
142
171
 
143
- For each asset, read the file from `.marketing/CAMPAIGNS/${SLUG}/${asset.file}`.
172
+ For each asset, read the file from `.taketomarket/CAMPAIGNS/${SLUG}/${asset.file}`.
144
173
 
145
174
  If any asset file is missing from disk:
146
175
  - Display warning: "Asset file not found: ${asset.file} -- skipping this asset"
@@ -237,7 +266,7 @@ Load detailed evaluation instructions:
237
266
  node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" campaign list --raw
238
267
  ```
239
268
  2. Include the current campaign (${SLUG}) in the evaluation even if not yet in "active" list
240
- 3. Read `.marketing/CALENDAR.md` for quarterly theme and launch dates
269
+ 3. Read `.taketomarket/CALENDAR.md` for quarterly theme and launch dates
241
270
  4. Evaluate each meta-gate per the criteria in meta-gate-evaluation.md:
242
271
  - META-01: Portfolio Balance (funnel stage + channel diversity)
243
272
  - META-02: Calendar Collision (launch date overlap + audience collision)
@@ -411,7 +440,7 @@ from Step 6.
411
440
 
412
441
  ## Step 8: Write Verification Report
413
442
 
414
- Write VERIFICATION.md to `.marketing/CAMPAIGNS/${SLUG}/VERIFICATION.md`.
443
+ Write VERIFICATION.md to `.taketomarket/CAMPAIGNS/${SLUG}/VERIFICATION.md`.
415
444
 
416
445
  Use the templates/verification-report.md format. Include:
417
446
  - YAML frontmatter: campaign slug, run number, date, total assets, overall result
@@ -480,8 +509,8 @@ Assets verified: ${ASSET_COUNT}
480
509
  Tier 1 failures: [count] ([count] corrected, [count] accepted, [count] escalated)
481
510
  Tier 2 advisories: [count]
482
511
 
483
- Report: .marketing/CAMPAIGNS/${SLUG}/VERIFICATION.md
484
- Deviations: .marketing/CAMPAIGNS/${SLUG}/DEVIATIONS.md
512
+ Report: .taketomarket/CAMPAIGNS/${SLUG}/VERIFICATION.md
513
+ Deviations: .taketomarket/CAMPAIGNS/${SLUG}/DEVIATIONS.md
485
514
 
486
515
  Next: Run /ttm-review ${SLUG} to conduct human review
487
516
  ```
@@ -502,6 +531,23 @@ Next: Run /ttm-review ${SLUG} to conduct human review
502
531
  </success_criteria>
503
532
 
504
533
  <output>
505
- - `.marketing/CAMPAIGNS/${SLUG}/VERIFICATION.md` (verification report -- overwritten per run)
506
- - `.marketing/CAMPAIGNS/${SLUG}/DEVIATIONS.md` (deviation log -- append-only, created on first Accept+log)
534
+ - `.taketomarket/CAMPAIGNS/${SLUG}/VERIFICATION.md` (verification report -- overwritten per run)
535
+ - `.taketomarket/CAMPAIGNS/${SLUG}/DEVIATIONS.md` (deviation log -- append-only, created on first Accept+log)
507
536
  </output>
537
+
538
+ ---
539
+
540
+ ## Step: Landing/pSEO verify gates (conditional)
541
+
542
+ If any asset being verified is a landing-page or pSEO asset (detect by path under `landing_path` config):
543
+
544
+ Read and follow `${CLAUDE_PLUGIN_ROOT}/workflows/site/quality-gates.md`. Run gates 3 (performance budget) and 4 (mobile responsiveness) against the deployed URL recorded at `last_deploy_url` in CONFIG.md.
545
+
546
+ For v2.3.0 P4 this gate is SOFT: Playwright MCP integration ships in P5. Until then, document the budgets in the verification report and prompt the user to record manual Lighthouse + screenshot results.
547
+
548
+ ## What if this doesn't fit?
549
+
550
+ Looks like /ttm-verify can't do that yet.
551
+
552
+ - Want a new skill? /ttm-request-skill
553
+ - Existing skill needs work? /ttm-improve-skill
@@ -1,3 +1,33 @@
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-brand-refresh` 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-brand-refresh
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-brand-refresh --raw` -- the JSON `seen` field is `true` once the explainer has run before.
12
+
13
+ ### Explainer for `/ttm-brand-refresh`
14
+
15
+ `/ttm-brand-refresh` updates `.taketomarket/BRAND.md`, the brand colors,
16
+ and the logo set. It re-asks the brand questions from init, regenerates
17
+ the color tokens, and either regenerates the logo or imports a new one
18
+ you supply. Existing campaigns get flagged for re-verification on brand
19
+ gates only.
20
+
21
+ Why it matters: brand and positioning are different invariants. You can
22
+ refresh brand (palette, logo, voice tweaks) without a full positioning
23
+ shift, and this skill keeps that boundary clean. Use it for visual
24
+ refreshes and voice retunes; use positioning-shift for what you're
25
+ actually saying.
26
+
27
+ (Canonical source: `references/inline-education-blurbs.md`. Embedded verbatim because workflows do not @-resolve files at runtime.)
28
+
29
+ ---
30
+
1
31
  <purpose>
2
32
  Update BRAND.md with new proof points, deprecate expired ones, and refresh voice
3
33
  guidelines. Validates all changes against POSITIONING.md invariant before writing.
@@ -12,7 +42,7 @@ Single-pass workflow per D-06.
12
42
  <constraints>
13
43
  ## POSITIONING.md is READ-ONLY
14
44
 
15
- **Do NOT modify `.marketing/POSITIONING.md` during this workflow.**
45
+ **Do NOT modify `.taketomarket/POSITIONING.md` during this workflow.**
16
46
 
17
47
  POSITIONING.md is an architectural invariant. If you detect positioning drift:
18
48
  - Flag the issue and recommend running /ttm-positioning-check
@@ -46,20 +76,20 @@ takeToMarket > LOADING CONTEXT
46
76
  ```
47
77
 
48
78
  **Load Tier 1 summaries** from all 9 reference files (lines 1 to `<!-- END_SUMMARY -->`):
49
- - `.marketing/POSITIONING.md`
50
- - `.marketing/BRAND.md`
51
- - `.marketing/ICP.md`
52
- - `.marketing/CHANNELS.md`
53
- - `.marketing/STATE.md` (frontmatter only)
54
- - `.marketing/CALENDAR.md`
55
- - `.marketing/COMPETITORS.md`
56
- - `.marketing/METRICS.md`
57
- - `.marketing/LEARNINGS.md`
79
+ - `.taketomarket/POSITIONING.md`
80
+ - `.taketomarket/BRAND.md`
81
+ - `.taketomarket/ICP.md`
82
+ - `.taketomarket/CHANNELS.md`
83
+ - `.taketomarket/STATE.md` (frontmatter only)
84
+ - `.taketomarket/CALENDAR.md`
85
+ - `.taketomarket/COMPETITORS.md`
86
+ - `.taketomarket/METRICS.md`
87
+ - `.taketomarket/LEARNINGS.md`
58
88
 
59
89
  **Load Tier 2 (full content)** for the file being refreshed:
60
- - `.marketing/BRAND.md`
90
+ - `.taketomarket/BRAND.md`
61
91
 
62
- If `.marketing/BRAND.md` does not exist, error:
92
+ If `.taketomarket/BRAND.md` does not exist, error:
63
93
  "BRAND.md not found. Run /ttm-init first to set up your marketing system."
64
94
  Exit.
65
95
 
@@ -144,7 +174,7 @@ Ask user to revise the conflicting item or skip it.
144
174
 
145
175
  ## Step 4: Write Updated BRAND.md
146
176
 
147
- Apply validated changes to `.marketing/BRAND.md`:
177
+ Apply validated changes to `.taketomarket/BRAND.md`:
148
178
 
149
179
  - **Deprecated proof points:** Mark with `[DEPRECATED: YYYY-MM-DD, reason]` suffix in
150
180
  the Claim column. Do NOT delete rows -- preserve history.
@@ -191,3 +221,10 @@ Next: Run /ttm-positioning-check to verify alignment across recent assets
191
221
  - [ ] Summary markers (<!-- _SUMMARY --> / <!-- END_SUMMARY -->) preserved
192
222
  - [ ] Completion banner displayed with changed sections
193
223
  </success_criteria>
224
+
225
+ ## What if this doesn't fit?
226
+
227
+ Looks like /ttm-brand-refresh can't do that yet.
228
+
229
+ - Want a new skill? /ttm-request-skill
230
+ - 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-competitor-scan` 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-competitor-scan
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-competitor-scan --raw` -- the JSON `seen` field is `true` once the explainer has run before.
12
+
13
+ ### Explainer for `/ttm-competitor-scan`
14
+
15
+ `/ttm-competitor-scan` surveys your declared competitors' positioning,
16
+ recent campaigns, and channel mix, then writes a structured comparison
17
+ into `.taketomarket/COMPETITORS.md`. Discover and brief consume this to
18
+ avoid sounding identical to whoever you're against.
19
+
20
+ Why it matters: differentiation is a verifiable property only if you
21
+ have an explicit competitor reference. Without one, your assets drift
22
+ toward the category mean because that's what the model has seen most.
23
+ Run this periodically -- competitor positioning is the input that
24
+ goes stalest fastest.
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
  On-demand competitor analysis that updates COMPETITORS.md with new intelligence.
3
32
  Detects WebSearch/WebFetch MCP tools for automated research; falls back to manual
@@ -13,7 +42,7 @@ differentiation gaps and opportunities. Single-pass workflow per D-06 and D-09.
13
42
  <constraints>
14
43
  ## POSITIONING.md is READ-ONLY
15
44
 
16
- **Do NOT modify `.marketing/POSITIONING.md` during this workflow.**
45
+ **Do NOT modify `.taketomarket/POSITIONING.md` during this workflow.**
17
46
 
18
47
  POSITIONING.md is an architectural invariant. If you detect positioning drift:
19
48
  - Flag the issue and recommend running /ttm-positioning-check
@@ -47,21 +76,21 @@ takeToMarket > LOADING CONTEXT
47
76
  ```
48
77
 
49
78
  **Load Tier 1 summaries** from all 9 reference files (lines 1 to `<!-- END_SUMMARY -->`):
50
- - `.marketing/POSITIONING.md`
51
- - `.marketing/BRAND.md`
52
- - `.marketing/ICP.md`
53
- - `.marketing/CHANNELS.md`
54
- - `.marketing/STATE.md` (frontmatter only)
55
- - `.marketing/CALENDAR.md`
56
- - `.marketing/COMPETITORS.md`
57
- - `.marketing/METRICS.md`
58
- - `.marketing/LEARNINGS.md`
79
+ - `.taketomarket/POSITIONING.md`
80
+ - `.taketomarket/BRAND.md`
81
+ - `.taketomarket/ICP.md`
82
+ - `.taketomarket/CHANNELS.md`
83
+ - `.taketomarket/STATE.md` (frontmatter only)
84
+ - `.taketomarket/CALENDAR.md`
85
+ - `.taketomarket/COMPETITORS.md`
86
+ - `.taketomarket/METRICS.md`
87
+ - `.taketomarket/LEARNINGS.md`
59
88
 
60
89
  **Load Tier 2 (full content)** for analysis:
61
- - `.marketing/COMPETITORS.md`
62
- - `.marketing/POSITIONING.md`
90
+ - `.taketomarket/COMPETITORS.md`
91
+ - `.taketomarket/POSITIONING.md`
63
92
 
64
- If `.marketing/COMPETITORS.md` does not exist, error:
93
+ If `.taketomarket/COMPETITORS.md` does not exist, error:
65
94
  "COMPETITORS.md not found. Run /ttm-init first to set up your marketing system."
66
95
  Exit.
67
96
 
@@ -180,7 +209,7 @@ Validate all proposed updates:
180
209
  - No update contradicts POSITIONING.md differentiator or must-not-say terms
181
210
  - Gap opportunities align with our positioning scope
182
211
 
183
- Write updated `.marketing/COMPETITORS.md`:
212
+ Write updated `.taketomarket/COMPETITORS.md`:
184
213
  - Update existing competitor entries with new findings (positioning, strengths, weaknesses)
185
214
  - Add new competitors with full profiles (name, positioning, strength, weakness)
186
215
  - Mark inactive competitors with `[INACTIVE: YYYY-MM-DD]` suffix in name column
@@ -207,7 +236,7 @@ Positioning overlaps detected: ${OVERLAP_COUNT}
207
236
  Research method: ${SEARCH_MODE}
208
237
 
209
238
  Next steps:
210
- - Review updated .marketing/COMPETITORS.md
239
+ - Review updated .taketomarket/COMPETITORS.md
211
240
  - Run /ttm-positioning-check if overlaps concern you
212
241
  ```
213
242
 
@@ -226,3 +255,10 @@ Next steps:
226
255
  - [ ] COMPETITORS.md updated with preserved structure and summary markers
227
256
  - [ ] Completion banner displayed with scan results
228
257
  </success_criteria>
258
+
259
+ ## What if this doesn't fit?
260
+
261
+ Looks like /ttm-competitor-scan can't do that yet.
262
+
263
+ - Want a new skill? /ttm-request-skill
264
+ - 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-icp-refresh` 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-icp-refresh
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-icp-refresh --raw` -- the JSON `seen` field is `true` once the explainer has run before.
12
+
13
+ ### Explainer for `/ttm-icp-refresh`
14
+
15
+ `/ttm-icp-refresh` updates `.taketomarket/ICP.md` -- the Ideal Customer
16
+ Profile reference. It asks updated questions about the audience: their
17
+ jobs, pains, sophistication level, channels, and the exact words they
18
+ use. The new ICP propagates to every brief written afterward.
19
+
20
+ Why it matters: ICPs drift as your real customer base shifts away from
21
+ who you thought you were selling to. If your last three campaigns
22
+ under-performed and you can't explain why, the ICP doc is usually six
23
+ months stale. Refresh is cheap insurance against marketing to a
24
+ customer who no longer exists.
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
  Update ICP.md from new customer data (calls, reviews, feedback, surveys). Validates
3
32
  all changes against POSITIONING.md target audience field before writing. Single-pass
@@ -12,7 +41,7 @@ workflow per D-06.
12
41
  <constraints>
13
42
  ## POSITIONING.md is READ-ONLY
14
43
 
15
- **Do NOT modify `.marketing/POSITIONING.md` during this workflow.**
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
@@ -46,20 +75,20 @@ takeToMarket > LOADING CONTEXT
46
75
  ```
47
76
 
48
77
  **Load Tier 1 summaries** from all 9 reference files (lines 1 to `<!-- END_SUMMARY -->`):
49
- - `.marketing/POSITIONING.md`
50
- - `.marketing/BRAND.md`
51
- - `.marketing/ICP.md`
52
- - `.marketing/CHANNELS.md`
53
- - `.marketing/STATE.md` (frontmatter only)
54
- - `.marketing/CALENDAR.md`
55
- - `.marketing/COMPETITORS.md`
56
- - `.marketing/METRICS.md`
57
- - `.marketing/LEARNINGS.md`
78
+ - `.taketomarket/POSITIONING.md`
79
+ - `.taketomarket/BRAND.md`
80
+ - `.taketomarket/ICP.md`
81
+ - `.taketomarket/CHANNELS.md`
82
+ - `.taketomarket/STATE.md` (frontmatter only)
83
+ - `.taketomarket/CALENDAR.md`
84
+ - `.taketomarket/COMPETITORS.md`
85
+ - `.taketomarket/METRICS.md`
86
+ - `.taketomarket/LEARNINGS.md`
58
87
 
59
88
  **Load Tier 2 (full content)** for the file being refreshed:
60
- - `.marketing/ICP.md`
89
+ - `.taketomarket/ICP.md`
61
90
 
62
- If `.marketing/ICP.md` does not exist, error:
91
+ If `.taketomarket/ICP.md` does not exist, error:
63
92
  "ICP.md not found. Run /ttm-init first to set up your marketing system."
64
93
  Exit.
65
94
 
@@ -198,3 +227,10 @@ Next: Run /ttm-positioning-check to verify alignment across recent assets
198
227
  - [ ] Summary markers (<!-- _SUMMARY --> / <!-- END_SUMMARY -->) preserved
199
228
  - [ ] Completion banner displayed with changed sections
200
229
  </success_criteria>
230
+
231
+ ## What if this doesn't fit?
232
+
233
+ Looks like /ttm-icp-refresh can't do that yet.
234
+
235
+ - Want a new skill? /ttm-request-skill
236
+ - Existing skill needs work? /ttm-improve-skill
@@ -1,8 +1,36 @@
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-positioning-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-positioning-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-positioning-check --raw` -- the JSON `seen` field is `true` once the explainer has run before.
12
+
13
+ ### Explainer for `/ttm-positioning-check`
14
+
15
+ `/ttm-positioning-check` audits a campaign's brief and assets against the
16
+ positioning invariant declared in POSITIONING.md. Output is a drift report:
17
+ which claims diverge, by how much, and whether the drift is small enough to
18
+ correct in-place or large enough to require a positioning shift.
19
+
20
+ Why it matters: positioning drift is the single most common cause of
21
+ inconsistent marketing across a year. This skill is the linter for that --
22
+ run it after producing if anything feels off, and absolutely run it before
23
+ shipping a campaign that hits a new channel or audience.
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
  Positioning drift audit workflow for /ttm-positioning-check. Samples recent assets
3
31
  across all campaigns within a configurable time window (default 30 days per D-01),
4
32
  evaluates each against GATE-01 positioning drift checks, generates a structured
5
- audit report, and appends the results to .marketing/DRIFT-LOG.md.
33
+ audit report, and appends the results to .taketomarket/DRIFT-LOG.md.
6
34
 
7
35
  This workflow can be invoked manually or auto-suggested by the ship workflow
8
36
  after every 3rd campaign ships since the last audit (per D-02).
@@ -17,7 +45,7 @@ after every 3rd campaign ships since the last audit (per D-02).
17
45
  <constraints>
18
46
  ## POSITIONING.md is READ-ONLY
19
47
 
20
- **Do NOT modify `.marketing/POSITIONING.md` during this workflow.**
48
+ **Do NOT modify `.taketomarket/POSITIONING.md` during this workflow.**
21
49
 
22
50
  POSITIONING.md is an architectural invariant. If you detect positioning drift:
23
51
  - In verify: use the Escalate option to launch /ttm-positioning-shift
@@ -60,20 +88,20 @@ takeToMarket > LOADING CONTEXT FOR POSITIONING AUDIT
60
88
  ```
61
89
 
62
90
  **Load Tier 1 summaries** from all 9 reference files (lines 1 to `<!-- END_SUMMARY -->`):
63
- - `.marketing/POSITIONING.md`
64
- - `.marketing/BRAND.md`
65
- - `.marketing/ICP.md`
66
- - `.marketing/CHANNELS.md`
67
- - `.marketing/STATE.md` (frontmatter only)
68
- - `.marketing/CALENDAR.md`
69
- - `.marketing/COMPETITORS.md`
70
- - `.marketing/METRICS.md`
71
- - `.marketing/LEARNINGS.md`
91
+ - `.taketomarket/POSITIONING.md`
92
+ - `.taketomarket/BRAND.md`
93
+ - `.taketomarket/ICP.md`
94
+ - `.taketomarket/CHANNELS.md`
95
+ - `.taketomarket/STATE.md` (frontmatter only)
96
+ - `.taketomarket/CALENDAR.md`
97
+ - `.taketomarket/COMPETITORS.md`
98
+ - `.taketomarket/METRICS.md`
99
+ - `.taketomarket/LEARNINGS.md`
72
100
 
73
101
  **Load Tier 2 (full content)** for drift evaluation:
74
- - `.marketing/POSITIONING.md` (needed for all 3 GATE-01 checks)
102
+ - `.taketomarket/POSITIONING.md` (needed for all 3 GATE-01 checks)
75
103
 
76
- If `.marketing/POSITIONING.md` does not exist: Error:
104
+ If `.taketomarket/POSITIONING.md` does not exist: Error:
77
105
  "No POSITIONING.md found. Run /ttm-init first to set up your marketing workspace."
78
106
  Exit.
79
107
 
@@ -125,10 +153,10 @@ Exit.
125
153
  For each campaign in the result:
126
154
  1. Read the campaign's ASSETS/ directory:
127
155
  ```
128
- Glob: .marketing/CAMPAIGNS/${SLUG}/ASSETS/*
156
+ Glob: .taketomarket/CAMPAIGNS/${SLUG}/ASSETS/*
129
157
  ```
130
158
  2. Collect all asset files found
131
- 3. Also read `.marketing/CAMPAIGNS/${SLUG}/DEVIATIONS.md` if it exists
159
+ 3. Also read `.taketomarket/CAMPAIGNS/${SLUG}/DEVIATIONS.md` if it exists
132
160
  - Filter for rows where Gate = `positioning_drift` (GATE-01 deviations per D-13)
133
161
  - Store these as accepted deviations for the cross-reference section
134
162
 
@@ -238,7 +266,7 @@ These values feed into the Bleeding Analysis section of the report generated in
238
266
 
239
267
  ## Step 6: Trend Comparison
240
268
 
241
- Read `.marketing/DRIFT-LOG.md`. Find the most recent entry with Event = `audit`.
269
+ Read `.taketomarket/DRIFT-LOG.md`. Find the most recent entry with Event = `audit`.
242
270
 
243
271
  **If a prior audit entry exists (per D-03):**
244
272
  1. Parse the Details column to extract the prior aggregate drift percentage
@@ -279,7 +307,7 @@ not scoped to a single campaign directory).
279
307
 
280
308
  ## Step 8: Log to DRIFT-LOG.md
281
309
 
282
- Append the audit results to `.marketing/DRIFT-LOG.md` via CLI:
310
+ Append the audit results to `.taketomarket/DRIFT-LOG.md` via CLI:
283
311
 
284
312
  ```bash
285
313
  node "${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs" drift-log append \
@@ -295,7 +323,7 @@ consistent formatting.
295
323
 
296
324
  Display:
297
325
  ```
298
- takeToMarket > AUDIT LOGGED TO .marketing/DRIFT-LOG.md
326
+ takeToMarket > AUDIT LOGGED TO .taketomarket/DRIFT-LOG.md
299
327
  ```
300
328
 
301
329
  ---
@@ -311,7 +339,7 @@ Window: last ${WINDOW} | Assets audited: ${ASSET_COUNT}
311
339
  Aggregate drift: ${AGGREGATE_DRIFT}% ${TREND_ARROW}
312
340
  Campaigns covered: ${CAMPAIGN_COUNT}
313
341
 
314
- Drift logged to: .marketing/DRIFT-LOG.md
342
+ Drift logged to: .taketomarket/DRIFT-LOG.md
315
343
 
316
344
  Next steps:
317
345
  - Run /ttm-fix [campaign-slug] to address specific FAIL results
@@ -335,5 +363,12 @@ Next steps:
335
363
 
336
364
  <output>
337
365
  - Audit report displayed to stdout (cross-campaign, no file written)
338
- - `.marketing/DRIFT-LOG.md` updated with audit entry via CLI
366
+ - `.taketomarket/DRIFT-LOG.md` updated with audit entry via CLI
339
367
  </output>
368
+
369
+ ## What if this doesn't fit?
370
+
371
+ Looks like /ttm-positioning-check can't do that yet.
372
+
373
+ - Want a new skill? /ttm-request-skill
374
+ - Existing skill needs work? /ttm-improve-skill