taketomarket 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/README.md +34 -11
  4. package/bin/lib/campaign.cjs +12 -8
  5. package/bin/lib/codebase-scan.cjs +86 -0
  6. package/bin/lib/config.cjs +129 -0
  7. package/bin/lib/deploy.cjs +36 -0
  8. package/bin/lib/deviation.cjs +1 -1
  9. package/bin/lib/drift-log.cjs +4 -4
  10. package/bin/lib/health.cjs +32 -31
  11. package/bin/lib/install-detect.cjs +62 -0
  12. package/bin/lib/legacy-folder.cjs +100 -0
  13. package/bin/lib/playwright-check.cjs +26 -0
  14. package/bin/lib/site-location.cjs +22 -0
  15. package/bin/lib/state.cjs +3 -3
  16. package/bin/lib/svg-render.cjs +42 -0
  17. package/bin/ttm-tools.cjs +136 -4
  18. package/gates/base-gates.md +8 -8
  19. package/gates/gate-evaluation.md +8 -8
  20. package/install.js +37 -3
  21. package/package.json +10 -6
  22. package/playbooks/aeo.md +218 -114
  23. package/playbooks/affiliate.md +225 -160
  24. package/playbooks/email.md +236 -174
  25. package/playbooks/events.md +303 -213
  26. package/playbooks/landing-pages.md +305 -0
  27. package/playbooks/linkedin.md +264 -142
  28. package/playbooks/manifesto.md +322 -0
  29. package/playbooks/paid-ads.md +240 -189
  30. package/playbooks/positioning.md +340 -0
  31. package/playbooks/pr-media.md +308 -168
  32. package/playbooks/pseo.md +426 -0
  33. package/playbooks/seo.md +251 -158
  34. package/playbooks/social.md +253 -182
  35. package/playbooks/youtube.md +286 -181
  36. package/references/brand-color-theory.md +48 -0
  37. package/references/codex-image-gen-research.md +58 -0
  38. package/references/context-loading.md +6 -6
  39. package/references/humanizer-patterns.md +433 -0
  40. package/references/inline-education-blurbs.md +461 -0
  41. package/references/landing-page-anatomy.md +64 -0
  42. package/references/linkedin-post-patterns.md +174 -0
  43. package/references/logo-design-principles.md +55 -0
  44. package/references/meta-gate-evaluation.md +3 -3
  45. package/references/obra-superpowers-conventions.md +170 -0
  46. package/references/playbook-leaders.md +472 -0
  47. package/references/playwright-mcp-setup.md +164 -0
  48. package/references/positioning-check-report.md +2 -2
  49. package/references/pseo-page-anatomy.md +56 -0
  50. package/references/pseo-templates/alternative-anatomy.md +31 -0
  51. package/references/pseo-templates/alternative-content-playbook.md +32 -0
  52. package/references/pseo-templates/blog-anatomy.md +28 -0
  53. package/references/pseo-templates/blog-content-playbook.md +36 -0
  54. package/references/pseo-templates/comparison-anatomy.md +29 -0
  55. package/references/pseo-templates/comparison-content-playbook.md +35 -0
  56. package/references/pseo-templates/use-case-anatomy.md +28 -0
  57. package/references/pseo-templates/use-case-content-playbook.md +30 -0
  58. package/skills/ttm-101/SKILL.md +25 -0
  59. package/skills/ttm-aeo-check/SKILL.md +17 -12
  60. package/skills/ttm-affiliate-kit/SKILL.md +5 -0
  61. package/skills/ttm-archive/SKILL.md +5 -0
  62. package/skills/ttm-brand-refresh/SKILL.md +5 -0
  63. package/skills/ttm-brief/SKILL.md +5 -0
  64. package/skills/ttm-competitor-scan/SKILL.md +5 -0
  65. package/skills/ttm-deploy/SKILL.md +22 -0
  66. package/skills/ttm-discover/SKILL.md +17 -0
  67. package/skills/ttm-email-check/SKILL.md +17 -0
  68. package/skills/ttm-email-preflight/SKILL.md +17 -11
  69. package/skills/ttm-fix/SKILL.md +5 -0
  70. package/skills/ttm-health/SKILL.md +6 -1
  71. package/skills/ttm-humanize/SKILL.md +33 -0
  72. package/skills/ttm-icp-refresh/SKILL.md +5 -0
  73. package/skills/ttm-improve-skill/SKILL.md +18 -0
  74. package/skills/ttm-init/SKILL.md +10 -3
  75. package/skills/ttm-keyword-map/SKILL.md +17 -11
  76. package/skills/ttm-landing/SKILL.md +19 -0
  77. package/skills/ttm-learn/SKILL.md +5 -0
  78. package/skills/ttm-linkedin-post/SKILL.md +26 -0
  79. package/skills/ttm-measure/SKILL.md +5 -0
  80. package/skills/ttm-new-campaign/SKILL.md +5 -0
  81. package/skills/ttm-next/SKILL.md +5 -0
  82. package/skills/ttm-playwright-setup/SKILL.md +18 -0
  83. package/skills/ttm-positioning-check/SKILL.md +5 -0
  84. package/skills/ttm-positioning-shift/SKILL.md +5 -0
  85. package/skills/ttm-produce/SKILL.md +5 -0
  86. package/skills/ttm-pseo/SKILL.md +26 -0
  87. package/skills/ttm-repurpose/SKILL.md +5 -0
  88. package/skills/ttm-request-skill/SKILL.md +18 -0
  89. package/skills/ttm-research/SKILL.md +18 -6
  90. package/skills/ttm-resume/SKILL.md +5 -0
  91. package/skills/ttm-review/SKILL.md +5 -0
  92. package/skills/ttm-seo/SKILL.md +64 -0
  93. package/skills/ttm-seo-audit/SKILL.md +17 -12
  94. package/skills/ttm-ship/SKILL.md +5 -0
  95. package/skills/ttm-state/SKILL.md +5 -0
  96. package/skills/ttm-update/SKILL.md +152 -4
  97. package/skills/ttm-verify/SKILL.md +5 -0
  98. package/templates/agents-md.md +14 -4
  99. package/templates/campaign-research.md +6 -6
  100. package/templates/campaign-state.md +1 -1
  101. package/templates/claude-md.md +14 -4
  102. package/templates/linkedin-base-template.md +48 -0
  103. package/templates/next-step-footer.md +13 -0
  104. package/templates/production-manifest.json +4 -4
  105. package/templates/pseo/alternative-cms-schema.json +65 -0
  106. package/templates/pseo/blog-cms-schema.json +55 -0
  107. package/templates/pseo/comparison-cms-schema.json +56 -0
  108. package/templates/pseo/use-case-cms-schema.json +62 -0
  109. package/templates/reference-files/brand.md +51 -0
  110. package/templates/reference-files/product-dna.md +73 -0
  111. package/templates/site-scaffold/app/globals.css +2 -0
  112. package/templates/site-scaffold/app/layout.tsx +17 -0
  113. package/templates/site-scaffold/app/page.tsx +33 -0
  114. package/templates/site-scaffold/app/robots.ts +8 -0
  115. package/templates/site-scaffold/app/sitemap.ts +10 -0
  116. package/templates/site-scaffold/app/tokens.css +21 -0
  117. package/templates/site-scaffold/components/Comparison.tsx +14 -0
  118. package/templates/site-scaffold/components/Faq.tsx +14 -0
  119. package/templates/site-scaffold/components/Features.tsx +14 -0
  120. package/templates/site-scaffold/components/FinalCta.tsx +17 -0
  121. package/templates/site-scaffold/components/Footer.tsx +12 -0
  122. package/templates/site-scaffold/components/Hero.tsx +22 -0
  123. package/templates/site-scaffold/components/HowItWorks.tsx +14 -0
  124. package/templates/site-scaffold/components/PricingTeaser.tsx +14 -0
  125. package/templates/site-scaffold/components/Problem.tsx +14 -0
  126. package/templates/site-scaffold/components/SocialProof.tsx +14 -0
  127. package/templates/site-scaffold/components/Solution.tsx +14 -0
  128. package/templates/site-scaffold/components/Testimonials.tsx +14 -0
  129. package/templates/site-scaffold/components/UseCases.tsx +14 -0
  130. package/templates/site-scaffold/content/.gitkeep +0 -0
  131. package/templates/site-scaffold/lib/.gitkeep +0 -0
  132. package/templates/site-scaffold/next.config.mjs +10 -0
  133. package/templates/site-scaffold/package.json +25 -0
  134. package/templates/site-scaffold/postcss.config.mjs +3 -0
  135. package/templates/site-scaffold/public/llms.txt +9 -0
  136. package/templates/site-scaffold/tsconfig.json +21 -0
  137. package/templates/verification-report.md +1 -1
  138. package/workflows/channel/linkedin-post.md +178 -0
  139. package/workflows/discipline/affiliate-kit.md +65 -6
  140. package/workflows/discipline/{email-preflight.md → email-check.md} +39 -4
  141. package/workflows/discipline/repurpose.md +82 -31
  142. package/workflows/discipline/{aeo-check.md → seo/aeo.md} +13 -6
  143. package/workflows/discipline/{seo-audit.md → seo/audit.md} +13 -6
  144. package/workflows/discipline/{keyword-map.md → seo/keyword-map.md} +13 -6
  145. package/workflows/education/ttm-101.md +114 -0
  146. package/workflows/lifecycle/brief-positioning-check.md +1 -1
  147. package/workflows/lifecycle/brief.md +64 -28
  148. package/workflows/lifecycle/{research.md → discover.md} +61 -19
  149. package/workflows/lifecycle/fix.md +72 -37
  150. package/workflows/lifecycle/humanize.md +280 -0
  151. package/workflows/lifecycle/learn.md +72 -35
  152. package/workflows/lifecycle/measure.md +54 -18
  153. package/workflows/lifecycle/produce.md +88 -37
  154. package/workflows/lifecycle/review.md +71 -25
  155. package/workflows/lifecycle/ship.md +62 -18
  156. package/workflows/lifecycle/verify.md +72 -26
  157. package/workflows/reference-mgmt/brand-refresh.md +50 -13
  158. package/workflows/reference-mgmt/competitor-scan.md +51 -15
  159. package/workflows/reference-mgmt/icp-refresh.md +48 -12
  160. package/workflows/reference-mgmt/positioning-check.md +55 -20
  161. package/workflows/reference-mgmt/positioning-shift.md +53 -17
  162. package/workflows/setup/init-brand-colors.md +75 -0
  163. package/workflows/setup/init-logo.md +113 -0
  164. package/workflows/setup/init-product-dna.md +83 -0
  165. package/workflows/setup/init-questions.md +166 -30
  166. package/workflows/setup/init-validation.md +22 -0
  167. package/workflows/setup/init.md +144 -39
  168. package/workflows/setup/new-campaign.md +48 -12
  169. package/workflows/site/deploy.md +98 -0
  170. package/workflows/site/landing.md +156 -0
  171. package/workflows/site/pseo.md +96 -0
  172. package/workflows/site/quality-gates.md +88 -0
  173. package/workflows/utility/archive.md +45 -9
  174. package/workflows/utility/health.md +77 -3
  175. package/workflows/utility/improve-skill.md +233 -0
  176. package/workflows/utility/next.md +38 -2
  177. package/workflows/utility/playwright-setup.md +128 -0
  178. package/workflows/utility/request-skill.md +218 -0
  179. package/workflows/utility/resume.md +40 -3
  180. package/workflows/utility/state.md +42 -7
@@ -0,0 +1,48 @@
1
+ # Brand Color Theory - Reference
2
+
3
+ **Purpose:** Knowledge base consumed by `/ttm-init` brand-color flow. Captures what makes a good color palette for SaaS, B2B, and DTC brands targeting engineers and technical buyers.
4
+
5
+ ## Color theory fundamentals
6
+
7
+ ### Color wheel relationships
8
+ - **Complementary** - opposite on wheel; high contrast; use sparingly for accents.
9
+ - **Analogous** - adjacent; harmonious; good for backgrounds + sections.
10
+ - **Triadic** - three equidistant; balanced, vibrant; needs careful weighting.
11
+ - **Split-complementary** - base + two adjacent to its complement; high contrast with less tension than complementary.
12
+ - **Monochromatic** - one hue, varying saturation/lightness; clean, modern, easy to apply.
13
+
14
+ ### Color psychology in B2B SaaS
15
+
16
+ Blue signals trust, reliability, and institutional credibility. It dominates enterprise SaaS for this reason: Stripe, IBM, Salesforce, LinkedIn, and PayPal all anchor their palettes in blue. Studies on color and purchase intent (Satyendra Singh, 2006, "Impact of Color on Marketing", Management Decision) consistently rank blue as the top-performing hue for B2B trust. Green carries associations of growth, financial prosperity, and health. Robinhood, Spotify, and Whole Foods use green to imply momentum and positive outcomes. It performs especially well for fintech and health products where the message is "things are going up." Purple and violet read as innovative, creative, and premium. Stripe uses purple as an accent against its blue base to signal technical sophistication; Anthropic's brand leans into violet for the same AI-innovation positioning. The risk: so many AI startups adopted a highly saturated ~260-270 degree violet in 2022-2024 that it now reads as generic rather than distinctive. Orange and warm red convey urgency, energy, and action. HubSpot's orange communicates approachability and momentum. Notion uses an accent red for destructive actions and CTAs where high contrast is needed. These hues are effective for primary call-to-action buttons but exhausting as dominant brand colors. Black as a primary brand color - as used by Vercel and Linear - communicates premium quality, minimalism, and engineering precision. It pairs well with a single vibrant accent color and reads as confident. Developer tooling and infrastructure products disproportionately choose dark or neutral-anchored palettes because their users live in dark IDEs and terminals; a dark-mode-first palette feels native rather than forced.
17
+
18
+ ### Accessibility (WCAG)
19
+ - **AA contrast:** 4.5:1 for normal text, 3:1 for large text.
20
+ - **AAA contrast:** 7:1 for normal text, 4.5:1 for large text.
21
+ - Never rely on color alone to convey state.
22
+
23
+ ## Palette structure for a SaaS landing page
24
+
25
+ A complete palette has 7-9 colors:
26
+ 1. **Primary** - main brand color, used for CTAs, links, key highlights.
27
+ 2. **Primary variants** - lighter + darker shades of primary for hover/active.
28
+ 3. **Secondary** - supporting brand color, used for secondary CTAs, illustrations.
29
+ 4. **Accent** - high-saturation pop color used sparingly.
30
+ 5. **Neutral scale** - 9 grays from #FAFAFA to #0A0A0A for text, borders, surfaces.
31
+ 6. **Semantic** - success (green), warning (amber), error (red), info (blue).
32
+
33
+ ## SaaS palette norms (developerneur audience)
34
+
35
+ - Default to dark mode-friendly choices. Engineers spend their day in dark themes.
36
+ - Avoid retro/playful palettes unless the product is consumer-facing.
37
+ - Avoid "AI startup purple" if you want to look distinct. The 260-270 degree, high-saturation violet has been used by so many AI products since 2022 that it no longer differentiates; consider desaturating, shifting hue toward blue-violet or red-violet, or choosing a different anchor color entirely.
38
+ - Avoid pure black (#000) and pure white (#FFF). Use near-black (~#0A0A0A) and near-white (~#FAFAFA) for softer, less harsh contrast that reads better at scale.
39
+
40
+ ## Sources
41
+
42
+ - **Refactoring UI** (Adam Wathan + Steve Schoger, 2018) - The canonical practical guide for product UI color systems. Covers palette construction, HSL-based tint/shade generation, and why designers should start with saturation constraints rather than hex codes.
43
+ - **Material Design 3 color system** (Google, material.io/design/color) - Defines the tonal palette model (primary, secondary, tertiary, error, neutral, neutral-variant) and dynamic color generation. Useful reference for semantic token naming conventions.
44
+ - **Tailwind CSS palette documentation** (tailwindcss.com/docs/customizing-colors) - The 50-950 numeric scale for each hue is now a de facto standard for SaaS teams. Shows how consistent lightness steps across hues enable predictable component theming.
45
+ - **Open Color** (Haegu Yun, yeun.github.io/open-color) - Open-source color system optimized for UI; covers 13 hues with 10 steps each. Good starting reference for neutral and semantic color choices.
46
+ - **IBM Carbon design system** (carbondesignsystem.com) - Enterprise-grade color guidance with strong accessibility documentation. The gray scale and blue scale from Carbon are widely adopted as sensible defaults for B2B SaaS.
47
+ - **Anthropic brand guidelines** - Anthropic's own palette (violet anchor, neutral scale, dark mode-first) serves as a real-world example of positioning "AI innovation" while avoiding commodity purple by controlling saturation and pairing with restraint.
48
+ - **Stripe brand standards** (stripe.com/newsroom/brand-assets) - Stripe's palette (blue base + purple accent + clean neutrals) is a reference-grade example of a technical-product brand that reads as trustworthy and premium simultaneously. The use of gradient purple as an accent rather than a base avoids the saturation problem.
@@ -0,0 +1,58 @@
1
+ # Codex Native Image Generation -- Research Output
2
+
3
+ **Investigation date:** 2026-05-18
4
+ **Question:** Can Codex generate images in-conversation (like ChatGPT does) so `/ttm-init` logo flow needs no API key on the Codex runtime?
5
+
6
+ ## Findings
7
+
8
+ ### Codex (OpenAI)
9
+
10
+ **Short answer: Yes -- Codex CLI has native in-conversation image generation via a built-in `image_gen` tool.**
11
+
12
+ **Capability confirmed.** As of 2025/2026, Codex CLI ships a built-in `image_gen` tool backed by `gpt-image-2`. This is the same image generation model OpenAI uses in ChatGPT. It works across the CLI, app, IDE extension, and cloud interfaces.
13
+
14
+ **Invocation patterns (three options):**
15
+
16
+ 1. Natural language -- Codex auto-selects image generation when the intent is clear. Example: `codex "Generate a logo for my SaaS product"`.
17
+ 2. Explicit skill mention using `$imagegen` in the prompt. Example: `codex "Create a square product icon $imagegen"`. This forces the built-in skill path.
18
+ 3. From inside a SKILL.md -- the skill body instructs Codex to use the built-in `image_gen` tool. The tool is invoked implicitly from natural-language instructions inside the skill, not by a special frontmatter declaration. The sample imagegen SKILL.md in the Codex repo (`codex-rs/skills/src/assets/samples/imagegen/SKILL.md`) demonstrates this pattern: the instructions tell Codex to "use the built-in `image_gen` tool by default" and the runtime resolves it.
19
+
20
+ **API key requirement:** No separate API key required for the built-in path. It runs against whatever auth the user already has -- a ChatGPT Plus/Pro subscription is sufficient. Free plan does not include image generation. If `OPENAI_API_KEY` is set in the environment, the tool can route through the API instead (API pricing applies in that case).
21
+
22
+ **Output location:** Generated images land at `~/.codex/generated_images/` by default. Skills can instruct Codex to save to a specific path within the workspace.
23
+
24
+ **Key limitations:**
25
+ - Image turns consume plan limits 3-5x faster than text-only turns.
26
+ - Transparent PNG backgrounds are not supported in `gpt-image-2`. Transparency requires `gpt-image-1.5` plus a post-processing chroma-key script (`remove_chroma_key.py`) that ships with the imagegen skill. For a product logo, this matters if the user wants a transparent background.
27
+ - Rate cap: 250 images per minute across the API.
28
+ - The built-in `image_gen` tool is unavailable on Windows/WSL under the Azure OpenAI provider (unresolved as of the research date -- GitHub issue #19133). Direct OpenAI auth is unaffected.
29
+ - Resolution above 2560 x 1440 becomes unstable.
30
+
31
+ **Confidence:** Medium-high. The feature is documented on the official Codex developer site and confirmed by the sample SKILL.md in the openai/codex repo. The exact frontmatter syntax for declaring `image_gen` as an `allowed-tools` entry is not documented -- the tool appears to be automatically available to the imagegen skill rather than needing explicit declaration.
32
+
33
+ ### Claude Code
34
+
35
+ Claude Code does not generate raster images natively. SVG-as-text is what Claude produces. Vision review uses the Read tool on saved image files.
36
+
37
+ ### Recommended path per runtime
38
+
39
+ - **Claude Code:** SVG written directly by Claude as a text file. PNG conversion uses local tools (`rsvg-convert`, Inkscape headless, `sharp`). Vision review reads the generated PNG using the Read tool.
40
+ - **Codex:** Native image generation via the built-in `image_gen` tool is available and requires no API key (ChatGPT Plus/Pro subscription sufficient). The `/ttm-init` logo flow on Codex can therefore use `$imagegen` or natural-language image instructions directly, falling back to the SVG + local converter path only if the user is on the Free plan or the `image_gen` tool reports unavailable. The skill body should instruct Codex to save the generated PNG to the workspace path (e.g., `.taketomarket/brand/logo.png`) rather than relying on the default `~/.codex/generated_images/` location.
41
+
42
+ ## Logo flow decision matrix
43
+
44
+ | Runtime | Generate | Render to PNG | Vision review |
45
+ |---|---|---|---|
46
+ | Claude Code | Inline SVG | Local converter (rsvg-convert, Inkscape, sharp) | Read tool on PNG |
47
+ | Codex | Native image_gen (gpt-image-2) -- fallback to inline SVG + local converter if unavailable | Native (image saved directly as PNG) -- fallback: local converter | Read tool on PNG |
48
+
49
+ ## Sources
50
+
51
+ - https://developers.openai.com/codex/cli/features -- Codex CLI features page. Confirms built-in image generation, $imagegen invocation, API key optional, usage limits.
52
+ - https://github.com/openai/codex/blob/main/codex-rs/skills/src/assets/samples/imagegen/SKILL.md -- Official sample SKILL.md for imagegen. Shows that the skill body instructs use of the built-in image_gen tool; also covers fallback to scripts/image_gen.py with OPENAI_API_KEY.
53
+ - https://community.openai.com/t/introducing-gpt-image-2-available-today-in-the-api-and-codex/1379479 -- OpenAI announcement: gpt-image-2 launched in the API and Codex.
54
+ - https://developers.openai.com/codex/skills -- Codex skills documentation. Covers SKILL.md structure, optional agents/openai.yaml for tool dependencies; does not document image_gen in allowed-tools syntax.
55
+ - https://github.com/openai/codex/issues/19133 -- GitHub issue: built-in image_gen unavailable on Windows/WSL with Azure provider. Versions 0.120.0-0.123.0 affected; unresolved.
56
+ - https://codex.danielvaughan.com/2026/04/27/codex-cli-image-generation-gpt-image-2-visual-development-workflows/ -- Third-party deep dive. Documents three invocation patterns, rate limits, transparent background limitation, and output directory.
57
+ - https://help.openai.com/en/articles/11369540-using-codex-with-your-chatgpt-plan -- OpenAI help article. Confirms image generation not available on Free plan; Plus and Pro included.
58
+ - https://developers.openai.com/codex/changelog -- Codex changelog, consulted for feature availability timeline.
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Overview
4
4
 
5
- takeToMarket uses a two-tier context loading strategy to maximize the usable context window for actual work. Every reference file in `.marketing/` has a compact Tier 1 summary and a full Tier 2 body. Workflows load only what they need.
5
+ takeToMarket uses a two-tier context loading strategy to maximize the usable context window for actual work. Every reference file in `.taketomarket/` has a compact Tier 1 summary and a full Tier 2 body. Workflows load only what they need.
6
6
 
7
7
  ## Tier 1: Universal Summaries
8
8
 
@@ -58,7 +58,7 @@ Tier 2 is the complete file content below `<!-- END_SUMMARY -->`. It includes de
58
58
  | /ttm-brand-refresh | Yes | BRAND.md |
59
59
  | /ttm-icp-refresh | Yes | ICP.md |
60
60
  | /ttm-competitor-scan | Yes | COMPETITORS.md |
61
- | /ttm-research | Yes | COMPETITORS.md |
61
+ | /ttm-discover | Yes | COMPETITORS.md |
62
62
 
63
63
  ## Rules for Workflow Authors
64
64
 
@@ -70,7 +70,7 @@ Tier 2 is the complete file content below `<!-- END_SUMMARY -->`. It includes de
70
70
 
71
71
  4. **Campaign-specific files are always full-loaded.** Files inside `CAMPAIGNS/<slug>/` do not use the two-tier pattern. They are loaded in full by the workflow that owns that campaign phase.
72
72
 
73
- 5. **Playbooks are Tier 2 only.** Playbooks live in the plugin's `playbooks/` directory (not in `.marketing/`). They are loaded only by the produce workflow, one at a time, based on the campaign brief's channel selection.
73
+ 5. **Playbooks are Tier 2 only.** Playbooks live in the plugin's `playbooks/` directory (not in `.taketomarket/`). They are loaded only by the produce workflow, one at a time, based on the campaign brief's channel selection.
74
74
 
75
75
  ## Implementation Details
76
76
 
@@ -88,10 +88,10 @@ Tier 2 is the complete file content below `<!-- END_SUMMARY -->`. It includes de
88
88
 
89
89
  The AI reads from line 1 to the line containing `<!-- END_SUMMARY -->`. Everything after is ignored unless the workflow explicitly requests Tier 2.
90
90
 
91
- ### .marketing/ Directory Structure
91
+ ### .taketomarket/ Directory Structure
92
92
 
93
93
  ```
94
- .marketing/
94
+ .taketomarket/
95
95
  ├── POSITIONING.md
96
96
  ├── BRAND.md
97
97
  ├── ICP.md
@@ -104,4 +104,4 @@ The AI reads from line 1 to the line containing `<!-- END_SUMMARY -->`. Everythi
104
104
  └── CAMPAIGNS/
105
105
  ```
106
106
 
107
- Note: The `.marketing/` directory does NOT contain a `PLAYBOOKS/` subdirectory. Playbooks live in the plugin's `playbooks/` directory and are loaded by reference during the Produce phase.
107
+ Note: The `.taketomarket/` directory does NOT contain a `PLAYBOOKS/` subdirectory. Playbooks live in the plugin's `playbooks/` directory and are loaded by reference during the Produce phase.
@@ -0,0 +1,433 @@
1
+ # AI Writing Patterns Reference
2
+
3
+ **Source:** Adapted from `blader/humanizer` v2.5.1 (MIT licensed). Original credit: blader. Derived from Wikipedia's "Signs of AI writing" guide maintained by WikiProject AI Cleanup.
4
+
5
+ ## Why this reference exists
6
+
7
+ This file is the canonical pattern catalog consumed by `/ttm-humanize`. Every audience-facing asset in takeToMarket passes through humanization before write. The patterns below are the ones humanization must detect and rewrite.
8
+
9
+ The catalog is faithful to the blader source so that pattern definitions, "words to watch" lists, and Before/After examples remain auditable against Wikipedia's "Signs of AI writing" page. Workflow procedure lives in `workflows/lifecycle/humanize.md`; this file is reference-only.
10
+
11
+ ## How to use the catalog
12
+
13
+ When scanning an asset:
14
+
15
+ 1. Read top to bottom. The catalog is grouped by family (CONTENT, LANGUAGE AND GRAMMAR, STYLE, COMMUNICATION, FILLER AND HEDGING).
16
+ 2. For each section, scan the **Words to watch** or pattern signature against the asset.
17
+ 3. When a match is found, the **Before** / **After** pair is the rewrite template -- match the shape, not the exact words.
18
+ 4. Some patterns are absolute (curly quotes, sycophantic openers). Others are dosage-dependent (em dashes, rule-of-three) -- flag only on overuse, not single occurrences.
19
+
20
+ ## CONTENT PATTERNS
21
+
22
+ ### 1. Undue Emphasis on Significance, Legacy, and Broader Trends
23
+
24
+ **Words to watch:** stands/serves as, is a testament/reminder, a vital/significant/crucial/pivotal/key role/moment, underscores/highlights its importance/significance, reflects broader, symbolizing its ongoing/enduring/lasting, contributing to the, setting the stage for, marking/shaping the, represents/marks a shift, key turning point, evolving landscape, focal point, indelible mark, deeply rooted
25
+
26
+ **Problem:** LLM writing puffs up importance by adding statements about how arbitrary aspects represent or contribute to a broader topic.
27
+
28
+ **Before:**
29
+ > The Statistical Institute of Catalonia was officially established in 1989, marking a pivotal moment in the evolution of regional statistics in Spain. This initiative was part of a broader movement across Spain to decentralize administrative functions and enhance regional governance.
30
+
31
+ **After:**
32
+ > The Statistical Institute of Catalonia was established in 1989 to collect and publish regional statistics independently from Spain's national statistics office.
33
+
34
+
35
+ ### 2. Undue Emphasis on Notability and Media Coverage
36
+
37
+ **Words to watch:** independent coverage, local/regional/national media outlets, written by a leading expert, active social media presence
38
+
39
+ **Problem:** LLMs hit readers over the head with claims of notability, often listing sources without context.
40
+
41
+ **Before:**
42
+ > Her views have been cited in The New York Times, BBC, Financial Times, and The Hindu. She maintains an active social media presence with over 500,000 followers.
43
+
44
+ **After:**
45
+ > In a 2024 New York Times interview, she argued that AI regulation should focus on outcomes rather than methods.
46
+
47
+
48
+ ### 3. Superficial Analyses with -ing Endings
49
+
50
+ **Words to watch:** highlighting/underscoring/emphasizing..., ensuring..., reflecting/symbolizing..., contributing to..., cultivating/fostering..., encompassing..., showcasing...
51
+
52
+ **Problem:** AI chatbots tack present participle ("-ing") phrases onto sentences to add fake depth.
53
+
54
+ **Before:**
55
+ > The temple's color palette of blue, green, and gold resonates with the region's natural beauty, symbolizing Texas bluebonnets, the Gulf of Mexico, and the diverse Texan landscapes, reflecting the community's deep connection to the land.
56
+
57
+ **After:**
58
+ > The temple uses blue, green, and gold colors. The architect said these were chosen to reference local bluebonnets and the Gulf coast.
59
+
60
+
61
+ ### 4. Promotional and Advertisement-like Language
62
+
63
+ **Words to watch:** boasts a, vibrant, rich (figurative), profound, enhancing its, showcasing, exemplifies, commitment to, natural beauty, nestled, in the heart of, groundbreaking (figurative), renowned, breathtaking, must-visit, stunning
64
+
65
+ **Problem:** LLMs have serious problems keeping a neutral tone, especially for "cultural heritage" topics.
66
+
67
+ **Before:**
68
+ > Nestled within the breathtaking region of Gonder in Ethiopia, Alamata Raya Kobo stands as a vibrant town with a rich cultural heritage and stunning natural beauty.
69
+
70
+ **After:**
71
+ > Alamata Raya Kobo is a town in the Gonder region of Ethiopia, known for its weekly market and 18th-century church.
72
+
73
+
74
+ ### 5. Vague Attributions and Weasel Words
75
+
76
+ **Words to watch:** Industry reports, Observers have cited, Experts argue, Some critics argue, several sources/publications (when few cited)
77
+
78
+ **Problem:** AI chatbots attribute opinions to vague authorities without specific sources.
79
+
80
+ **Before:**
81
+ > Due to its unique characteristics, the Haolai River is of interest to researchers and conservationists. Experts believe it plays a crucial role in the regional ecosystem.
82
+
83
+ **After:**
84
+ > The Haolai River supports several endemic fish species, according to a 2019 survey by the Chinese Academy of Sciences.
85
+
86
+
87
+ ### 6. Outline-like "Challenges and Future Prospects" Sections
88
+
89
+ **Words to watch:** Despite its... faces several challenges..., Despite these challenges, Challenges and Legacy, Future Outlook
90
+
91
+ **Problem:** Many LLM-generated articles include formulaic "Challenges" sections.
92
+
93
+ **Before:**
94
+ > Despite its industrial prosperity, Korattur faces challenges typical of urban areas, including traffic congestion and water scarcity. Despite these challenges, with its strategic location and ongoing initiatives, Korattur continues to thrive as an integral part of Chennai's growth.
95
+
96
+ **After:**
97
+ > Traffic congestion increased after 2015 when three new IT parks opened. The municipal corporation began a stormwater drainage project in 2022 to address recurring floods.
98
+
99
+
100
+ ## LANGUAGE AND GRAMMAR PATTERNS
101
+
102
+ ### 7. Overused "AI Vocabulary" Words
103
+
104
+ **High-frequency AI words:** Actually, additionally, align with, crucial, delve, emphasizing, enduring, enhance, fostering, garner, highlight (verb), interplay, intricate/intricacies, key (adjective), landscape (abstract noun), pivotal, showcase, tapestry (abstract noun), testament, underscore (verb), valuable, vibrant
105
+
106
+ **Problem:** These words appear far more frequently in post-2023 text. They often co-occur.
107
+
108
+ **Before:**
109
+ > Additionally, a distinctive feature of Somali cuisine is the incorporation of camel meat. An enduring testament to Italian colonial influence is the widespread adoption of pasta in the local culinary landscape, showcasing how these dishes have integrated into the traditional diet.
110
+
111
+ **After:**
112
+ > Somali cuisine also includes camel meat, which is considered a delicacy. Pasta dishes, introduced during Italian colonization, remain common, especially in the south.
113
+
114
+
115
+ ### 8. Avoidance of "is"/"are" (Copula Avoidance)
116
+
117
+ **Words to watch:** serves as/stands as/marks/represents [a], boasts/features/offers [a]
118
+
119
+ **Problem:** LLMs substitute elaborate constructions for simple copulas.
120
+
121
+ **Before:**
122
+ > Gallery 825 serves as LAAA's exhibition space for contemporary art. The gallery features four separate spaces and boasts over 3,000 square feet.
123
+
124
+ **After:**
125
+ > Gallery 825 is LAAA's exhibition space for contemporary art. The gallery has four rooms totaling 3,000 square feet.
126
+
127
+
128
+ ### 9. Negative Parallelisms and Tailing Negations
129
+
130
+ **Problem:** Constructions like "Not only...but..." or "It's not just about..., it's..." are overused. So are clipped tailing-negation fragments such as "no guessing" or "no wasted motion" tacked onto the end of a sentence instead of written as a real clause.
131
+
132
+ **Before:**
133
+ > It's not just about the beat riding under the vocals; it's part of the aggression and atmosphere. It's not merely a song, it's a statement.
134
+
135
+ **After:**
136
+ > The heavy beat adds to the aggressive tone.
137
+
138
+ **Before (tailing negation):**
139
+ > The options come from the selected item, no guessing.
140
+
141
+ **After:**
142
+ > The options come from the selected item without forcing the user to guess.
143
+
144
+
145
+ ### 10. Rule of Three Overuse
146
+
147
+ **Problem:** LLMs force ideas into groups of three to appear comprehensive.
148
+
149
+ **Before:**
150
+ > The event features keynote sessions, panel discussions, and networking opportunities. Attendees can expect innovation, inspiration, and industry insights.
151
+
152
+ **After:**
153
+ > The event includes talks and panels. There's also time for informal networking between sessions.
154
+
155
+
156
+ ### 11. Elegant Variation (Synonym Cycling)
157
+
158
+ **Problem:** AI has repetition-penalty code causing excessive synonym substitution.
159
+
160
+ **Before:**
161
+ > The protagonist faces many challenges. The main character must overcome obstacles. The central figure eventually triumphs. The hero returns home.
162
+
163
+ **After:**
164
+ > The protagonist faces many challenges but eventually triumphs and returns home.
165
+
166
+
167
+ ### 12. False Ranges
168
+
169
+ **Problem:** LLMs use "from X to Y" constructions where X and Y aren't on a meaningful scale.
170
+
171
+ **Before:**
172
+ > Our journey through the universe has taken us from the singularity of the Big Bang to the grand cosmic web, from the birth and death of stars to the enigmatic dance of dark matter.
173
+
174
+ **After:**
175
+ > The book covers the Big Bang, star formation, and current theories about dark matter.
176
+
177
+
178
+ ### 13. Passive Voice and Subjectless Fragments
179
+
180
+ **Problem:** LLMs often hide the actor or drop the subject entirely with lines like "No configuration file needed" or "The results are preserved automatically." Rewrite these when active voice makes the sentence clearer and more direct.
181
+
182
+ **Before:**
183
+ > No configuration file needed. The results are preserved automatically.
184
+
185
+ **After:**
186
+ > You do not need a configuration file. The system preserves the results automatically.
187
+
188
+
189
+ ## STYLE PATTERNS
190
+
191
+ ### 14. Em Dash Overuse
192
+
193
+ **Problem:** LLMs use em dashes (—) more than humans, mimicking "punchy" sales writing. In practice, most of these can be rewritten more cleanly with commas, periods, or parentheses.
194
+
195
+ **Before:**
196
+ > The term is primarily promoted by Dutch institutions—not by the people themselves. You don't say "Netherlands, Europe" as an address—yet this mislabeling continues—even in official documents.
197
+
198
+ **After:**
199
+ > The term is primarily promoted by Dutch institutions, not by the people themselves. You don't say "Netherlands, Europe" as an address, yet this mislabeling continues in official documents.
200
+
201
+
202
+ ### 15. Overuse of Boldface
203
+
204
+ **Problem:** AI chatbots emphasize phrases in boldface mechanically.
205
+
206
+ **Before:**
207
+ > It blends **OKRs (Objectives and Key Results)**, **KPIs (Key Performance Indicators)**, and visual strategy tools such as the **Business Model Canvas (BMC)** and **Balanced Scorecard (BSC)**.
208
+
209
+ **After:**
210
+ > It blends OKRs, KPIs, and visual strategy tools like the Business Model Canvas and Balanced Scorecard.
211
+
212
+
213
+ ### 16. Inline-Header Vertical Lists
214
+
215
+ **Problem:** AI outputs lists where items start with bolded headers followed by colons.
216
+
217
+ **Before:**
218
+ > - **User Experience:** The user experience has been significantly improved with a new interface.
219
+ > - **Performance:** Performance has been enhanced through optimized algorithms.
220
+ > - **Security:** Security has been strengthened with end-to-end encryption.
221
+
222
+ **After:**
223
+ > The update improves the interface, speeds up load times through optimized algorithms, and adds end-to-end encryption.
224
+
225
+
226
+ ### 17. Title Case in Headings
227
+
228
+ **Problem:** AI chatbots capitalize all main words in headings.
229
+
230
+ **Before:**
231
+ > ## Strategic Negotiations And Global Partnerships
232
+
233
+ **After:**
234
+ > ## Strategic negotiations and global partnerships
235
+
236
+
237
+ ### 18. Emojis
238
+
239
+ **Problem:** AI chatbots often decorate headings or bullet points with emojis.
240
+
241
+ **Before:**
242
+ > 🚀 **Launch Phase:** The product launches in Q3
243
+ > 💡 **Key Insight:** Users prefer simplicity
244
+ > ✅ **Next Steps:** Schedule follow-up meeting
245
+
246
+ **After:**
247
+ > The product launches in Q3. User research showed a preference for simplicity. Next step: schedule a follow-up meeting.
248
+
249
+
250
+ ### 19. Curly Quotation Marks
251
+
252
+ **Problem:** ChatGPT uses curly quotes ("...") instead of straight quotes ("...").
253
+
254
+ **Before:**
255
+ > He said “the project is on track” but others disagreed.
256
+
257
+ **After:**
258
+ > He said "the project is on track" but others disagreed.
259
+
260
+
261
+ ## COMMUNICATION PATTERNS
262
+
263
+ ### 20. Collaborative Communication Artifacts
264
+
265
+ **Words to watch:** I hope this helps, Of course!, Certainly!, You're absolutely right!, Would you like..., let me know, here is a...
266
+
267
+ **Problem:** Text meant as chatbot correspondence gets pasted as content.
268
+
269
+ **Before:**
270
+ > Here is an overview of the French Revolution. I hope this helps! Let me know if you'd like me to expand on any section.
271
+
272
+ **After:**
273
+ > The French Revolution began in 1789 when financial crisis and food shortages led to widespread unrest.
274
+
275
+
276
+ ### 21. Knowledge-Cutoff Disclaimers
277
+
278
+ **Words to watch:** as of [date], Up to my last training update, While specific details are limited/scarce..., based on available information...
279
+
280
+ **Problem:** AI disclaimers about incomplete information get left in text.
281
+
282
+ **Before:**
283
+ > While specific details about the company's founding are not extensively documented in readily available sources, it appears to have been established sometime in the 1990s.
284
+
285
+ **After:**
286
+ > The company was founded in 1994, according to its registration documents.
287
+
288
+
289
+ ### 22. Sycophantic/Servile Tone
290
+
291
+ **Problem:** Overly positive, people-pleasing language.
292
+
293
+ **Before:**
294
+ > Great question! You're absolutely right that this is a complex topic. That's an excellent point about the economic factors.
295
+
296
+ **After:**
297
+ > The economic factors you mentioned are relevant here.
298
+
299
+
300
+ ## FILLER AND HEDGING
301
+
302
+ ### 23. Filler Phrases
303
+
304
+ **Before → After:**
305
+ - "In order to achieve this goal" → "To achieve this"
306
+ - "Due to the fact that it was raining" → "Because it was raining"
307
+ - "At this point in time" → "Now"
308
+ - "In the event that you need help" → "If you need help"
309
+ - "The system has the ability to process" → "The system can process"
310
+ - "It is important to note that the data shows" → "The data shows"
311
+
312
+
313
+ ### 24. Excessive Hedging
314
+
315
+ **Problem:** Over-qualifying statements.
316
+
317
+ **Before:**
318
+ > It could potentially possibly be argued that the policy might have some effect on outcomes.
319
+
320
+ **After:**
321
+ > The policy may affect outcomes.
322
+
323
+
324
+ ### 25. Generic Positive Conclusions
325
+
326
+ **Problem:** Vague upbeat endings.
327
+
328
+ **Before:**
329
+ > The future looks bright for the company. Exciting times lie ahead as they continue their journey toward excellence. This represents a major step in the right direction.
330
+
331
+ **After:**
332
+ > The company plans to open two more locations next year.
333
+
334
+
335
+ ### 26. Hyphenated Word Pair Overuse
336
+
337
+ **Words to watch:** third-party, cross-functional, client-facing, data-driven, decision-making, well-known, high-quality, real-time, long-term, end-to-end
338
+
339
+ **Problem:** AI hyphenates common word pairs with perfect consistency. Humans rarely hyphenate these uniformly, and when they do, it's inconsistent. Less common or technical compound modifiers are fine to hyphenate.
340
+
341
+ **Before:**
342
+ > The cross-functional team delivered a high-quality, data-driven report on our client-facing tools. Their decision-making process was well-known for being thorough and detail-oriented.
343
+
344
+ **After:**
345
+ > The cross functional team delivered a high quality, data driven report on our client facing tools. Their decision making process was known for being thorough and detail oriented.
346
+
347
+
348
+ ### 27. Persuasive Authority Tropes
349
+
350
+ **Phrases to watch:** The real question is, at its core, in reality, what really matters, fundamentally, the deeper issue, the heart of the matter
351
+
352
+ **Problem:** LLMs use these phrases to pretend they are cutting through noise to some deeper truth, when the sentence that follows usually just restates an ordinary point with extra ceremony.
353
+
354
+ **Before:**
355
+ > The real question is whether teams can adapt. At its core, what really matters is organizational readiness.
356
+
357
+ **After:**
358
+ > The question is whether teams can adapt. That mostly depends on whether the organization is ready to change its habits.
359
+
360
+
361
+ ### 28. Signposting and Announcements
362
+
363
+ **Phrases to watch:** Let's dive in, let's explore, let's break this down, here's what you need to know, now let's look at, without further ado
364
+
365
+ **Problem:** LLMs announce what they are about to do instead of doing it. This meta-commentary slows the writing down and gives it a tutorial-script feel.
366
+
367
+ **Before:**
368
+ > Let's dive into how caching works in Next.js. Here's what you need to know.
369
+
370
+ **After:**
371
+ > Next.js caches data at multiple layers, including request memoization, the data cache, and the router cache.
372
+
373
+
374
+ ### 29. Fragmented Headers
375
+
376
+ **Signs to watch:** A heading followed by a one-line paragraph that simply restates the heading before the real content begins.
377
+
378
+ **Problem:** LLMs often add a generic sentence after a heading as a rhetorical warm-up. It usually adds nothing and makes the prose feel padded.
379
+
380
+ **Before:**
381
+ > ## Performance
382
+ >
383
+ > Speed matters.
384
+ >
385
+ > When users hit a slow page, they leave.
386
+
387
+ **After:**
388
+ > ## Performance
389
+ >
390
+ > When users hit a slow page, they leave.
391
+
392
+ ---
393
+
394
+ ## Signs of soulless writing (even if technically "clean")
395
+
396
+ Removing AI patterns is only half the job. Sterile, voiceless writing is just as obvious as slop. Good writing has a human behind it. Watch for:
397
+
398
+ - Every sentence is the same length and structure
399
+ - No opinions, just neutral reporting
400
+ - No acknowledgment of uncertainty or mixed feelings
401
+ - No first-person perspective when appropriate
402
+ - No humor, no edge, no personality
403
+ - Reads like a Wikipedia article or press release
404
+
405
+ ### How to add voice
406
+
407
+ **Have opinions.** Don't just report facts -- react to them. "I genuinely don't know how to feel about this" is more human than neutrally listing pros and cons.
408
+
409
+ **Vary rhythm.** Short punchy sentences. Then longer ones that take their time getting where they're going. Mix it up.
410
+
411
+ **Acknowledge complexity.** Real humans have mixed feelings. "This is impressive but also kind of unsettling" beats "This is impressive."
412
+
413
+ **Use "I" when it fits.** First person isn't unprofessional -- it's honest. "I keep coming back to..." or "Here's what gets me..." signals a real person thinking.
414
+
415
+ **Let some mess in.** Perfect structure feels algorithmic. Tangents, asides, and half-formed thoughts are human.
416
+
417
+ **Be specific about feelings.** Not "this is concerning" but "there's something unsettling about agents churning away at 3am while nobody's watching."
418
+
419
+ ### Before (clean but soulless)
420
+
421
+ > The experiment produced interesting results. The agents generated 3 million lines of code. Some developers were impressed while others were skeptical. The implications remain unclear.
422
+
423
+ ### After (has a pulse)
424
+
425
+ > I genuinely don't know how to feel about this one. 3 million lines of code, generated while the humans presumably slept. Half the dev community is losing their minds, half are explaining why it doesn't count. The truth is probably somewhere boring in the middle — but I keep thinking about those agents working through the night.
426
+
427
+ ---
428
+
429
+ ## Source
430
+
431
+ This catalog is based on [Wikipedia:Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing), maintained by WikiProject AI Cleanup. The patterns documented there come from observations of thousands of instances of AI-generated text on Wikipedia.
432
+
433
+ Key insight from Wikipedia: "LLMs use statistical algorithms to guess what should come next. The result tends toward the most statistically likely result that applies to the widest variety of cases."