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.
Files changed (181) hide show
  1. package/.claude-plugin/marketplace.json +13 -17
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/README.md +35 -12
  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 +309 -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 +65 -0
  42. package/references/landing-page-headline-examples.md +190 -0
  43. package/references/linkedin-post-patterns.md +174 -0
  44. package/references/logo-design-principles.md +55 -0
  45. package/references/meta-gate-evaluation.md +3 -3
  46. package/references/obra-superpowers-conventions.md +170 -0
  47. package/references/playbook-leaders.md +472 -0
  48. package/references/playwright-mcp-setup.md +164 -0
  49. package/references/positioning-check-report.md +2 -2
  50. package/references/pseo-page-anatomy.md +56 -0
  51. package/references/pseo-templates/alternative-anatomy.md +31 -0
  52. package/references/pseo-templates/alternative-content-playbook.md +32 -0
  53. package/references/pseo-templates/blog-anatomy.md +28 -0
  54. package/references/pseo-templates/blog-content-playbook.md +36 -0
  55. package/references/pseo-templates/comparison-anatomy.md +29 -0
  56. package/references/pseo-templates/comparison-content-playbook.md +35 -0
  57. package/references/pseo-templates/use-case-anatomy.md +28 -0
  58. package/references/pseo-templates/use-case-content-playbook.md +30 -0
  59. package/skills/ttm-101/SKILL.md +25 -0
  60. package/skills/ttm-aeo-check/SKILL.md +17 -12
  61. package/skills/ttm-affiliate-kit/SKILL.md +5 -0
  62. package/skills/ttm-archive/SKILL.md +5 -0
  63. package/skills/ttm-brand-refresh/SKILL.md +5 -0
  64. package/skills/ttm-brief/SKILL.md +5 -0
  65. package/skills/ttm-competitor-scan/SKILL.md +5 -0
  66. package/skills/ttm-deploy/SKILL.md +22 -0
  67. package/skills/ttm-discover/SKILL.md +17 -0
  68. package/skills/ttm-email-check/SKILL.md +17 -0
  69. package/skills/ttm-email-preflight/SKILL.md +17 -11
  70. package/skills/ttm-fix/SKILL.md +5 -0
  71. package/skills/ttm-health/SKILL.md +6 -1
  72. package/skills/ttm-humanize/SKILL.md +33 -0
  73. package/skills/ttm-icp-refresh/SKILL.md +5 -0
  74. package/skills/ttm-improve-skill/SKILL.md +18 -0
  75. package/skills/ttm-init/SKILL.md +10 -3
  76. package/skills/ttm-keyword-map/SKILL.md +17 -11
  77. package/skills/ttm-landing/SKILL.md +19 -0
  78. package/skills/ttm-learn/SKILL.md +5 -0
  79. package/skills/ttm-linkedin-post/SKILL.md +26 -0
  80. package/skills/ttm-measure/SKILL.md +5 -0
  81. package/skills/ttm-new-campaign/SKILL.md +5 -0
  82. package/skills/ttm-next/SKILL.md +5 -0
  83. package/skills/ttm-playwright-setup/SKILL.md +18 -0
  84. package/skills/ttm-positioning-check/SKILL.md +5 -0
  85. package/skills/ttm-positioning-shift/SKILL.md +5 -0
  86. package/skills/ttm-produce/SKILL.md +5 -0
  87. package/skills/ttm-pseo/SKILL.md +26 -0
  88. package/skills/ttm-repurpose/SKILL.md +5 -0
  89. package/skills/ttm-request-skill/SKILL.md +18 -0
  90. package/skills/ttm-research/SKILL.md +18 -6
  91. package/skills/ttm-resume/SKILL.md +5 -0
  92. package/skills/ttm-review/SKILL.md +5 -0
  93. package/skills/ttm-seo/SKILL.md +64 -0
  94. package/skills/ttm-seo-audit/SKILL.md +17 -12
  95. package/skills/ttm-ship/SKILL.md +5 -0
  96. package/skills/ttm-state/SKILL.md +5 -0
  97. package/skills/ttm-update/SKILL.md +152 -4
  98. package/skills/ttm-verify/SKILL.md +5 -0
  99. package/templates/agents-md.md +14 -4
  100. package/templates/campaign-research.md +6 -6
  101. package/templates/campaign-state.md +1 -1
  102. package/templates/claude-md.md +14 -4
  103. package/templates/linkedin-base-template.md +48 -0
  104. package/templates/next-step-footer.md +13 -0
  105. package/templates/production-manifest.json +4 -4
  106. package/templates/pseo/alternative-cms-schema.json +65 -0
  107. package/templates/pseo/blog-cms-schema.json +55 -0
  108. package/templates/pseo/comparison-cms-schema.json +56 -0
  109. package/templates/pseo/use-case-cms-schema.json +62 -0
  110. package/templates/reference-files/brand.md +51 -0
  111. package/templates/reference-files/product-dna.md +73 -0
  112. package/templates/site-scaffold/app/globals.css +2 -0
  113. package/templates/site-scaffold/app/layout.tsx +17 -0
  114. package/templates/site-scaffold/app/page.tsx +33 -0
  115. package/templates/site-scaffold/app/robots.ts +8 -0
  116. package/templates/site-scaffold/app/sitemap.ts +10 -0
  117. package/templates/site-scaffold/app/tokens.css +21 -0
  118. package/templates/site-scaffold/components/Comparison.tsx +14 -0
  119. package/templates/site-scaffold/components/Faq.tsx +14 -0
  120. package/templates/site-scaffold/components/Features.tsx +14 -0
  121. package/templates/site-scaffold/components/FinalCta.tsx +17 -0
  122. package/templates/site-scaffold/components/Footer.tsx +12 -0
  123. package/templates/site-scaffold/components/Hero.tsx +22 -0
  124. package/templates/site-scaffold/components/HowItWorks.tsx +14 -0
  125. package/templates/site-scaffold/components/PricingTeaser.tsx +14 -0
  126. package/templates/site-scaffold/components/Problem.tsx +14 -0
  127. package/templates/site-scaffold/components/SocialProof.tsx +14 -0
  128. package/templates/site-scaffold/components/Solution.tsx +14 -0
  129. package/templates/site-scaffold/components/Testimonials.tsx +14 -0
  130. package/templates/site-scaffold/components/UseCases.tsx +14 -0
  131. package/templates/site-scaffold/content/.gitkeep +0 -0
  132. package/templates/site-scaffold/lib/.gitkeep +0 -0
  133. package/templates/site-scaffold/next.config.mjs +10 -0
  134. package/templates/site-scaffold/package.json +25 -0
  135. package/templates/site-scaffold/postcss.config.mjs +3 -0
  136. package/templates/site-scaffold/public/llms.txt +9 -0
  137. package/templates/site-scaffold/tsconfig.json +21 -0
  138. package/templates/verification-report.md +1 -1
  139. package/workflows/channel/linkedin-post.md +178 -0
  140. package/workflows/discipline/affiliate-kit.md +65 -6
  141. package/workflows/discipline/{email-preflight.md → email-check.md} +39 -4
  142. package/workflows/discipline/repurpose.md +82 -31
  143. package/workflows/discipline/{aeo-check.md → seo/aeo.md} +13 -6
  144. package/workflows/discipline/{seo-audit.md → seo/audit.md} +13 -6
  145. package/workflows/discipline/{keyword-map.md → seo/keyword-map.md} +13 -6
  146. package/workflows/education/ttm-101.md +114 -0
  147. package/workflows/lifecycle/brief-positioning-check.md +1 -1
  148. package/workflows/lifecycle/brief.md +64 -28
  149. package/workflows/lifecycle/{research.md → discover.md} +61 -19
  150. package/workflows/lifecycle/fix.md +72 -37
  151. package/workflows/lifecycle/humanize.md +280 -0
  152. package/workflows/lifecycle/learn.md +72 -35
  153. package/workflows/lifecycle/measure.md +54 -18
  154. package/workflows/lifecycle/produce.md +88 -37
  155. package/workflows/lifecycle/review.md +71 -25
  156. package/workflows/lifecycle/ship.md +62 -18
  157. package/workflows/lifecycle/verify.md +72 -26
  158. package/workflows/reference-mgmt/brand-refresh.md +50 -13
  159. package/workflows/reference-mgmt/competitor-scan.md +51 -15
  160. package/workflows/reference-mgmt/icp-refresh.md +48 -12
  161. package/workflows/reference-mgmt/positioning-check.md +55 -20
  162. package/workflows/reference-mgmt/positioning-shift.md +53 -17
  163. package/workflows/setup/init-brand-colors.md +75 -0
  164. package/workflows/setup/init-logo.md +113 -0
  165. package/workflows/setup/init-product-dna.md +83 -0
  166. package/workflows/setup/init-questions.md +166 -30
  167. package/workflows/setup/init-validation.md +22 -0
  168. package/workflows/setup/init.md +144 -39
  169. package/workflows/setup/new-campaign.md +48 -12
  170. package/workflows/site/deploy.md +98 -0
  171. package/workflows/site/landing.md +156 -0
  172. package/workflows/site/pseo.md +96 -0
  173. package/workflows/site/quality-gates.md +88 -0
  174. package/workflows/utility/archive.md +45 -9
  175. package/workflows/utility/health.md +77 -3
  176. package/workflows/utility/improve-skill.md +233 -0
  177. package/workflows/utility/next.md +38 -2
  178. package/workflows/utility/playwright-setup.md +128 -0
  179. package/workflows/utility/request-skill.md +218 -0
  180. package/workflows/utility/resume.md +40 -3
  181. 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 `.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
@@ -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 `.marketing/` reference files.
47
- **Tier 2 (full):** `.marketing/POSITIONING.md`, `.marketing/BRAND.md`, `.marketing/ICP.md`, `.marketing/METRICS.md`
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 `.marketing/POSITIONING.md` does not exist: Error and exit.
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 `.marketing/AFFILIATE-KIT-[product-slug].md`.
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: .marketing/AFFILIATE-KIT-[slug].md
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 `.marketing/POSITIONING.md` during this workflow.**
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 `.marketing/` reference files.
47
- **Tier 2 (full):** `.marketing/BRAND.md` (voice/banned words check).
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 `.marketing/POSITIONING.md` does not exist: Error and exit.
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 `.marketing/POSITIONING.md` during this workflow.**
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
- - `.marketing/POSITIONING.md`
72
- - `.marketing/BRAND.md`
73
- - `.marketing/ICP.md`
74
- - `.marketing/CHANNELS.md`
75
- - `.marketing/STATE.md` (frontmatter only)
76
- - `.marketing/CALENDAR.md`
77
- - `.marketing/COMPETITORS.md`
78
- - `.marketing/METRICS.md`
79
- - `.marketing/LEARNINGS.md`
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
- - `.marketing/POSITIONING.md`
83
- - `.marketing/CHANNELS.md`
84
- - `.marketing/BRAND.md`
85
- - `.marketing/ICP.md`
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 `.marketing/CAMPAIGNS/`** directory -- reject any path that does not
99
- resolve to a location under `.marketing/CAMPAIGNS/[slug]/ASSETS/`
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 .marketing/CAMPAIGNS/[slug]/ASSETS/ directory."
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 `.marketing/CHANNELS.md` active channels list.
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 `.marketing/CHANNELS.md` for each target channel's configuration:
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 `.marketing/BRAND.md` for tone-per-context adjustments if defined
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: `.marketing/CAMPAIGNS/${CAMPAIGN_SLUG}/REPURPOSE-BRIEF-${CHANNEL_SLUG}.md`
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]` --> `.marketing/CAMPAIGNS/${CAMPAIGN_SLUG}/REPURPOSE-BRIEF-${HERO_CHANNEL_SLUG}.md`
199
- - `[POSITIONING_PATH]` --> `.marketing/POSITIONING.md`
200
- - `[BRAND_PATH]` --> `.marketing/BRAND.md`
201
- - `[ICP_PATH]` --> `.marketing/ICP.md`
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]` --> `.marketing/CAMPAIGNS/${CAMPAIGN_SLUG}/ASSETS/R-01-${HERO_CHANNEL_SLUG}.md`
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 ".marketing/CAMPAIGNS/${CAMPAIGN_SLUG}/ASSETS/R-01-${HERO_CHANNEL_SLUG}.md"
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 ".marketing/CAMPAIGNS/${CAMPAIGN_SLUG}/ASSETS/R-${NN}-${CHANNEL_SLUG}.md"
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
- - `.marketing/CAMPAIGNS/${SLUG}/REPURPOSE-BRIEF-*.md` (per-channel derivative briefs)
327
- - `.marketing/CAMPAIGNS/${SLUG}/ASSETS/R-*.md` (produced derivative assets)
328
- - `.marketing/CAMPAIGNS/${SLUG}/MANIFEST.json` (updated with derivative entries)
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 `.marketing/POSITIONING.md` during this workflow.**
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 `.marketing/` reference files.
48
- **Tier 2 (full):** `.marketing/POSITIONING.md` (differentiator alignment check).
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 `.marketing/POSITIONING.md` does not exist: Error and exit.
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 .marketing/AUDITS/aeo-check-[date].md? (yes/no)"
178
- If yes: create `.marketing/AUDITS/` directory if needed and write the report.
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 `.marketing/POSITIONING.md` during this workflow.**
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 `.marketing/` reference files.
47
- **Tier 2 (full):** `.marketing/CHANNELS.md` (channel-specific SEO config).
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 `.marketing/POSITIONING.md` does not exist: Error and exit.
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 .marketing/AUDITS/seo-audit-[date].md? (yes/no)"
167
- If yes: create `.marketing/AUDITS/` directory if needed and write the report.
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 `.marketing/POSITIONING.md` during this workflow.**
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 `.marketing/` reference files.
48
- **Tier 2 (full):** `.marketing/POSITIONING.md`, `.marketing/CHANNELS.md`, `.marketing/COMPETITORS.md`
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 `.marketing/POSITIONING.md` does not exist: Error and exit.
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 `.marketing/KEYWORD-MAP.md`:
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: .marketing/KEYWORD-MAP.md
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 .marketing/POSITIONING.md and adjust the brief if needed.
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
  ```