taketomarket 0.1.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 (123) hide show
  1. package/.claude-plugin/plugin.json +10 -0
  2. package/LICENSE +21 -0
  3. package/README.md +419 -0
  4. package/agents/ttm-producer.md +53 -0
  5. package/bin/lib/campaign.cjs +553 -0
  6. package/bin/lib/commit.cjs +105 -0
  7. package/bin/lib/core.cjs +172 -0
  8. package/bin/lib/deviation.cjs +149 -0
  9. package/bin/lib/drift-log.cjs +219 -0
  10. package/bin/lib/health.cjs +438 -0
  11. package/bin/lib/slug.cjs +59 -0
  12. package/bin/lib/state.cjs +96 -0
  13. package/bin/ttm-tools.cjs +157 -0
  14. package/gates/base-gates.md +266 -0
  15. package/gates/discipline/.gitkeep +0 -0
  16. package/gates/gate-evaluation.md +341 -0
  17. package/gates/meta-gates.md +19 -0
  18. package/install.js +307 -0
  19. package/package.json +53 -0
  20. package/playbooks/.gitkeep +0 -0
  21. package/playbooks/aeo.md +223 -0
  22. package/playbooks/affiliate.md +272 -0
  23. package/playbooks/base.md +110 -0
  24. package/playbooks/email.md +306 -0
  25. package/playbooks/events.md +320 -0
  26. package/playbooks/linkedin.md +263 -0
  27. package/playbooks/paid-ads.md +318 -0
  28. package/playbooks/pr-media.md +296 -0
  29. package/playbooks/seo.md +284 -0
  30. package/playbooks/social.md +305 -0
  31. package/playbooks/youtube.md +325 -0
  32. package/references/context-loading.md +107 -0
  33. package/references/learnings-extraction.md +94 -0
  34. package/references/measurement-template.md +48 -0
  35. package/references/meta-gate-evaluation.md +169 -0
  36. package/references/positioning-check-report.md +197 -0
  37. package/references/review-checklist.md +78 -0
  38. package/references/ship-checklist-items.md +94 -0
  39. package/settings.json +4 -0
  40. package/skills/ttm-aeo-check/SKILL.md +20 -0
  41. package/skills/ttm-affiliate-kit/SKILL.md +19 -0
  42. package/skills/ttm-archive/SKILL.md +13 -0
  43. package/skills/ttm-brand-refresh/SKILL.md +19 -0
  44. package/skills/ttm-brief/SKILL.md +14 -0
  45. package/skills/ttm-competitor-scan/SKILL.md +19 -0
  46. package/skills/ttm-email-preflight/SKILL.md +19 -0
  47. package/skills/ttm-fix/SKILL.md +13 -0
  48. package/skills/ttm-health/SKILL.md +12 -0
  49. package/skills/ttm-icp-refresh/SKILL.md +19 -0
  50. package/skills/ttm-init/SKILL.md +12 -0
  51. package/skills/ttm-keyword-map/SKILL.md +19 -0
  52. package/skills/ttm-learn/SKILL.md +14 -0
  53. package/skills/ttm-measure/SKILL.md +14 -0
  54. package/skills/ttm-new-campaign/SKILL.md +13 -0
  55. package/skills/ttm-next/SKILL.md +12 -0
  56. package/skills/ttm-positioning-check/SKILL.md +19 -0
  57. package/skills/ttm-positioning-shift/SKILL.md +19 -0
  58. package/skills/ttm-produce/SKILL.md +14 -0
  59. package/skills/ttm-repurpose/SKILL.md +20 -0
  60. package/skills/ttm-research/SKILL.md +13 -0
  61. package/skills/ttm-resume/SKILL.md +13 -0
  62. package/skills/ttm-review/SKILL.md +13 -0
  63. package/skills/ttm-seo-audit/SKILL.md +20 -0
  64. package/skills/ttm-ship/SKILL.md +13 -0
  65. package/skills/ttm-state/SKILL.md +13 -0
  66. package/skills/ttm-verify/SKILL.md +14 -0
  67. package/templates/agents-md.md +65 -0
  68. package/templates/campaign-brief.md +74 -0
  69. package/templates/campaign-research.md +39 -0
  70. package/templates/campaign-state.md +40 -0
  71. package/templates/claude-md.md +65 -0
  72. package/templates/deviation-log.md +12 -0
  73. package/templates/drift-log.md +17 -0
  74. package/templates/fix-brief.md +59 -0
  75. package/templates/fix-log.md +22 -0
  76. package/templates/measurement-report.md +75 -0
  77. package/templates/migration-plan.md +24 -0
  78. package/templates/production-manifest.json +20 -0
  79. package/templates/reference-files/brand.md +45 -0
  80. package/templates/reference-files/calendar.md +30 -0
  81. package/templates/reference-files/channels.md +40 -0
  82. package/templates/reference-files/competitors.md +40 -0
  83. package/templates/reference-files/icp.md +50 -0
  84. package/templates/reference-files/learnings.md +40 -0
  85. package/templates/reference-files/metrics.md +42 -0
  86. package/templates/reference-files/positioning.md +38 -0
  87. package/templates/reference-files/state.md +27 -0
  88. package/templates/verification-report.md +59 -0
  89. package/workflows/discipline/.gitkeep +0 -0
  90. package/workflows/discipline/aeo-check.md +180 -0
  91. package/workflows/discipline/affiliate-kit.md +147 -0
  92. package/workflows/discipline/email-preflight.md +150 -0
  93. package/workflows/discipline/keyword-map.md +125 -0
  94. package/workflows/discipline/repurpose.md +329 -0
  95. package/workflows/discipline/seo-audit.md +169 -0
  96. package/workflows/lifecycle/.gitkeep +0 -0
  97. package/workflows/lifecycle/brief-positioning-check.md +90 -0
  98. package/workflows/lifecycle/brief.md +355 -0
  99. package/workflows/lifecycle/fix.md +495 -0
  100. package/workflows/lifecycle/learn.md +405 -0
  101. package/workflows/lifecycle/measure.md +379 -0
  102. package/workflows/lifecycle/produce.md +383 -0
  103. package/workflows/lifecycle/research.md +264 -0
  104. package/workflows/lifecycle/review.md +432 -0
  105. package/workflows/lifecycle/ship.md +521 -0
  106. package/workflows/lifecycle/verify.md +507 -0
  107. package/workflows/reference-mgmt/.gitkeep +0 -0
  108. package/workflows/reference-mgmt/brand-refresh.md +193 -0
  109. package/workflows/reference-mgmt/competitor-scan.md +228 -0
  110. package/workflows/reference-mgmt/icp-refresh.md +200 -0
  111. package/workflows/reference-mgmt/positioning-check.md +339 -0
  112. package/workflows/reference-mgmt/positioning-shift.md +368 -0
  113. package/workflows/setup/.gitkeep +0 -0
  114. package/workflows/setup/init-questions.md +225 -0
  115. package/workflows/setup/init-validation.md +155 -0
  116. package/workflows/setup/init.md +449 -0
  117. package/workflows/setup/new-campaign.md +134 -0
  118. package/workflows/utility/.gitkeep +0 -0
  119. package/workflows/utility/archive.md +334 -0
  120. package/workflows/utility/health.md +166 -0
  121. package/workflows/utility/next.md +187 -0
  122. package/workflows/utility/resume.md +249 -0
  123. package/workflows/utility/state.md +207 -0
@@ -0,0 +1,50 @@
1
+ <!-- _SUMMARY: Tier 1 context (loaded universally, <200 words) -->
2
+ ## Summary
3
+ **Primary segment:** [GENERATED BY /ttm-init]
4
+ **JTBD:** [GENERATED BY /ttm-init]
5
+ **Top 3 pains:**
6
+ - [GENERATED BY /ttm-init]
7
+ - [GENERATED BY /ttm-init]
8
+ - [GENERATED BY /ttm-init]
9
+ **Anti-ICP:** [GENERATED BY /ttm-init]
10
+ <!-- END_SUMMARY -->
11
+
12
+ ## Primary Segment
13
+
14
+ ### Demographics
15
+ [GENERATED BY /ttm-init -- Role, company size, industry, geography]
16
+
17
+ ### Psychographics
18
+ [GENERATED BY /ttm-init -- Motivations, fears, aspirations, values]
19
+
20
+ ## Jobs-to-Be-Done
21
+
22
+ | Job | Priority | Current Solution |
23
+ |-----|----------|-----------------|
24
+ | [GENERATED BY /ttm-init] | [high/medium/low] | [what they use today] |
25
+
26
+ ## Pains and Triggers
27
+
28
+ ### Pain Points
29
+ | Pain | Severity | Frequency |
30
+ |------|----------|-----------|
31
+ | [GENERATED BY /ttm-init] | [high/medium/low] | [daily/weekly/monthly] |
32
+
33
+ ### Buying Triggers
34
+ [GENERATED BY /ttm-init -- Events that trigger purchase consideration]
35
+
36
+ ## Anti-ICP Profile
37
+
38
+ [GENERATED BY /ttm-init -- Who we explicitly do NOT target and why]
39
+
40
+ | Characteristic | Why Excluded |
41
+ |---------------|-------------|
42
+ | [GENERATED BY /ttm-init] | [GENERATED BY /ttm-init] |
43
+
44
+ ## Customer Language Library
45
+
46
+ [GENERATED BY /ttm-init -- Exact phrases customers use to describe their problems]
47
+
48
+ | Context | Phrase | Source |
49
+ |---------|--------|--------|
50
+ | [GENERATED BY /ttm-init] | [exact quote] | [interview/review/support ticket] |
@@ -0,0 +1,40 @@
1
+ <!-- _SUMMARY: Tier 1 context (loaded universally, <200 words) -->
2
+ ## Summary
3
+ **Total lessons:** [GENERATED BY /ttm-init -- starts at 0]
4
+ **Last lesson date:** [GENERATED BY /ttm-init -- none until first Learn phase]
5
+ **Top pattern:** [GENERATED BY /ttm-init -- none until enough data]
6
+ <!-- END_SUMMARY -->
7
+
8
+ ## Root-Cause Taxonomy
9
+
10
+ Every lesson is categorized into one of these root causes:
11
+
12
+ | Category | Description | Example |
13
+ |----------|-------------|---------|
14
+ | positioning-drift | Asset deviated from POSITIONING.md | "Used competitor's language instead of ours" |
15
+ | weak-hook | Opening failed to capture attention | "Blog intro was generic, no specific pain addressed" |
16
+ | wrong-channel | Content published on ineffective channel | "Technical deep-dive posted on Instagram" |
17
+ | bad-timing | Published at wrong time or wrong cadence | "Product launch email sent during holiday weekend" |
18
+ | unverifiable-claim | Claim lacked proof point or source | "Said 'industry-leading' with no data backing" |
19
+ | broken-funnel | CTA or conversion path was broken | "Landing page linked to wrong signup form" |
20
+ | creative-fatigue | Repeated format/angle with diminishing returns | "Fifth 'how-to' post in a row, engagement dropped 40%" |
21
+
22
+ ## Lessons Log
23
+
24
+ | Date | Campaign | Category | Lesson | Action Taken |
25
+ |------|----------|----------|--------|-------------|
26
+ <!-- LESSONS BELOW THIS LINE -->
27
+
28
+ ## Pattern Extraction
29
+
30
+ ### Winning Hooks
31
+ [Populated after 3+ campaigns -- patterns in high-performing openings]
32
+
33
+ ### Winning Angles
34
+ [Populated after 3+ campaigns -- recurring themes that resonate]
35
+
36
+ ### Winning Formats
37
+ [Populated after 3+ campaigns -- content formats with best ROI]
38
+
39
+ ### Anti-Patterns
40
+ [Populated after 3+ campaigns -- approaches that consistently underperform]
@@ -0,0 +1,42 @@
1
+ <!-- _SUMMARY: Tier 1 context (loaded universally, <200 words) -->
2
+ ## Summary
3
+ **Primary outcome metric:** [GENERATED BY /ttm-init]
4
+ **Secondary metrics:** [GENERATED BY /ttm-init]
5
+ **Attribution model:** [GENERATED BY /ttm-init]
6
+ <!-- END_SUMMARY -->
7
+
8
+ ## Primary Outcome Metric
9
+
10
+ **Metric:** [GENERATED BY /ttm-init]
11
+ **Target:** [GENERATED BY /ttm-init]
12
+ **Measurement window:** [GENERATED BY /ttm-init]
13
+ **Data source:** [GENERATED BY /ttm-init]
14
+
15
+ ## Secondary Metrics
16
+
17
+ | Metric | Target | Window | Source |
18
+ |--------|--------|--------|--------|
19
+ | [GENERATED BY /ttm-init] | [target] | [window] | [source] |
20
+
21
+ ## Leading Indicators
22
+
23
+ | Indicator | Correlation | Lag Time | Threshold |
24
+ |-----------|------------|----------|-----------|
25
+ | [GENERATED BY /ttm-init] | [strong/moderate/weak] | [days] | [alert threshold] |
26
+
27
+ ## Baselines
28
+
29
+ | Metric | Current Value | Date Measured | Source |
30
+ |--------|--------------|---------------|--------|
31
+ | [GENERATED BY /ttm-init] | [value] | [date] | [source] |
32
+
33
+ ## Attribution Model Configuration
34
+
35
+ **Model type:** [GENERATED BY /ttm-init -- first-touch/last-touch/multi-touch/custom]
36
+
37
+ ### Rules
38
+ [GENERATED BY /ttm-init -- How credit is assigned across touchpoints]
39
+
40
+ | Touchpoint | Weight | Notes |
41
+ |-----------|--------|-------|
42
+ | [GENERATED BY /ttm-init] | [%] | [reasoning] |
@@ -0,0 +1,38 @@
1
+ <!-- _SUMMARY: Tier 1 context (loaded universally, <200 words) -->
2
+ ## Summary
3
+ **Category:** [GENERATED BY /ttm-init]
4
+ **Target audience:** [GENERATED BY /ttm-init]
5
+ **Primary differentiator:** [GENERATED BY /ttm-init]
6
+ **Proof points:**
7
+ - [GENERATED BY /ttm-init]
8
+ - [GENERATED BY /ttm-init]
9
+ - [GENERATED BY /ttm-init]
10
+ **Must-not-say:** [GENERATED BY /ttm-init]
11
+ <!-- END_SUMMARY -->
12
+
13
+ ## Detailed Positioning
14
+
15
+ ### Category Definition
16
+ [GENERATED BY /ttm-init -- Full category analysis with market context]
17
+
18
+ ### Competitive Frame
19
+ [GENERATED BY /ttm-init -- How we position against alternatives]
20
+
21
+ ### Proof Point Library
22
+ [GENERATED BY /ttm-init -- Complete proof points with sources and expiry dates]
23
+
24
+ | Proof Point | Source | Verified Date | Expiry |
25
+ |-------------|--------|---------------|--------|
26
+ | [GENERATED BY /ttm-init] | [source] | [date] | [date] |
27
+
28
+ ### Must-Not-Say Terms
29
+ [GENERATED BY /ttm-init -- Banned terms with reasoning for each]
30
+
31
+ | Term | Reasoning |
32
+ |------|-----------|
33
+ | [GENERATED BY /ttm-init] | [GENERATED BY /ttm-init] |
34
+
35
+ ### Positioning History
36
+ | Date | Change | Reasoning |
37
+ |------|--------|-----------|
38
+ | [init date] | Initial positioning | Created via /ttm-init |
@@ -0,0 +1,27 @@
1
+ ---
2
+ status: initialized
3
+ current_phase: none
4
+ current_campaign: none
5
+ last_updated: [GENERATED BY /ttm-init]
6
+ campaigns: []
7
+ ---
8
+
9
+ ## Active Campaigns
10
+
11
+ No active campaigns. Use `/ttm-new-campaign` to create one.
12
+
13
+ ## Decisions in Flight
14
+
15
+ No pending decisions.
16
+
17
+ ## Blockers
18
+
19
+ No current blockers.
20
+
21
+ ## Experiments
22
+
23
+ No active experiments.
24
+
25
+ ## Recent Lessons
26
+
27
+ No lessons recorded yet. Lessons are captured automatically during the Learn phase of each campaign.
@@ -0,0 +1,59 @@
1
+ ---
2
+ campaign: [SLUG]
3
+ run_number: [RUN_NUMBER]
4
+ date: [ISO_DATE]
5
+ total_assets: [TOTAL_ASSETS]
6
+ overall_result: [pass|warn|fail]
7
+ ---
8
+
9
+ # Verification Report: [SLUG]
10
+
11
+ **Run:** [RUN_NUMBER] | **Date:** [ISO_DATE] | **Assets:** [TOTAL_ASSETS]
12
+
13
+ ## Summary
14
+
15
+ | # | Gate | Tier | [ASSET_COLUMNS] |
16
+ |---|------|------|-----------------|
17
+ | 1 | Positioning Drift (GATE-01) | T1 | [RESULTS] |
18
+ | 2 | Claim Accuracy (GATE-02) | T1 | [RESULTS] |
19
+ | 3 | Voice Drift (GATE-03) | T2 | [RESULTS] |
20
+ | 4 | Outcome Alignment (GATE-04) | T1 | [RESULTS] |
21
+ | 5 | Funnel Integrity (GATE-05) | T2 | [RESULTS] |
22
+ | 6 | UTM Hygiene (GATE-06) | T2 | [RESULTS] |
23
+ | 7 | Compliance (GATE-07) | T2 | [RESULTS] |
24
+ | 8 | Competitor Collision (GATE-08) | T2 | [RESULTS] |
25
+ | 9 | ICP Fit (GATE-09) | T2 | [RESULTS] |
26
+ | 10 | Format Correctness (GATE-10) | T2 | [RESULTS] |
27
+
28
+ **Result:** [FAIL_COUNT] FAIL (Tier 1), [WARN_COUNT] WARN -- [ACTION_SUMMARY]
29
+
30
+ ---
31
+
32
+ ## Detail Findings
33
+
34
+ ### [ASSET_NAME] -- [GATE_NAME] ([RESULT])
35
+
36
+ **Line [LINE_NUMBER]:** "[EXACT_TEXT_FROM_ASSET]"
37
+
38
+ **Issue:** [DESCRIPTION_OF_WHAT_TRIGGERED_THE_FINDING]
39
+
40
+ **Reference:** [QUOTE_FROM_REFERENCE_FILE_BEING_CHECKED_AGAINST]
41
+
42
+ **Recommendation:** [SPECIFIC_CHANGE_TO_RESOLVE_THE_FINDING]
43
+
44
+ **Action required:**
45
+ 1. **Correct** -- rewrite the flagged section to resolve the finding
46
+ 2. **Accept+log** -- document exception in DEVIATIONS.md and proceed
47
+ 3. **Escalate** -- trigger /ttm-positioning-shift to update positioning
48
+
49
+ ---
50
+
51
+ <!-- Repeat the detail finding block above for each WARN or FAIL finding.
52
+ PASS results do not need detail entries. -->
53
+
54
+ ## Run Metadata
55
+
56
+ - **Verify command:** `/ttm-verify [SLUG]`
57
+ - **Manifest:** `.marketing/CAMPAIGNS/[SLUG]/MANIFEST.json`
58
+ - **Gate definitions:** `gates/base-gates.md`
59
+ - **Previous runs:** [PREVIOUS_RUN_COUNT]
File without changes
@@ -0,0 +1,180 @@
1
+ <purpose>
2
+ Check AI citation status and citability score for content against a target query.
3
+ Evaluates whether content is structured for AI engine extraction and citation using
4
+ AEO playbook gate definitions. Optionally checks live citation status via web search.
5
+ Single-pass analysis workflow per D-07.
6
+ </purpose>
7
+
8
+ <required_reading>
9
+ @${CLAUDE_PLUGIN_ROOT}/references/context-loading.md
10
+ @${CLAUDE_PLUGIN_ROOT}/playbooks/aeo.md
11
+ </required_reading>
12
+
13
+ <constraints>
14
+ ## POSITIONING.md is READ-ONLY
15
+
16
+ **Do NOT modify `.marketing/POSITIONING.md` during this workflow.**
17
+
18
+ POSITIONING.md is an architectural invariant. If you detect positioning drift:
19
+ - Flag the issue and recommend running /ttm-positioning-check
20
+
21
+ Only /ttm-positioning-shift and /ttm-init may modify POSITIONING.md.
22
+ </constraints>
23
+
24
+ <process>
25
+
26
+ ## Text-Mode Detection
27
+
28
+ **Text mode (`--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS`
29
+ or if the runtime is not Claude Code. When TEXT_MODE is active, replace every
30
+ `AskUserQuestion` call with a plain-text numbered list.
31
+
32
+ Detection:
33
+ ```bash
34
+ if echo "$ARGUMENTS" | grep -q -- '--text'; then TEXT_MODE=true; fi
35
+ ```
36
+
37
+ If `AskUserQuestion` tool is not available in the current runtime, set `TEXT_MODE=true`.
38
+
39
+ ---
40
+
41
+ ## Step 1: Load Context
42
+
43
+ ```
44
+ takeToMarket > LOADING CONTEXT FOR AEO CHECK
45
+ ```
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).
49
+ **Playbook gates:** @${CLAUDE_PLUGIN_ROOT}/playbooks/aeo.md
50
+
51
+ If `.marketing/POSITIONING.md` does not exist: Error and exit.
52
+
53
+ ---
54
+
55
+ ## Step 2: Get Target Query and Content
56
+
57
+ Ask the user:
58
+ 1. "What query do you want to check AI citation status for?"
59
+ 2. "Paste the content you want evaluated (URL, file path, or raw content)."
60
+
61
+ Store query as `TARGET_QUERY`. Parse content input:
62
+ - **URL:** Attempt WebFetch. If unavailable (SEARCH_MODE=manual), ask user to paste.
63
+ - **File path:** Read directly.
64
+ - **Pasted content:** Use directly.
65
+
66
+ Store as `CHECK_CONTENT`.
67
+
68
+ ---
69
+
70
+ ## Step 3: Evaluate Citability (AEO Gates)
71
+
72
+ ```
73
+ takeToMarket > EVALUATING CITABILITY
74
+ ```
75
+
76
+ Evaluate `CHECK_CONTENT` against 6 AEO discipline gates:
77
+
78
+ **1. Quote-Worthy Sentences (DISC-AEO-01)**
79
+ - PASS: 3+ sentences quotable verbatim as standalone answers
80
+ - WARN: 1-2 quotable sentences
81
+ - FAIL: 0 quotable sentences -- all require surrounding context
82
+
83
+ **2. FAQ/HowTo Schema (DISC-AEO-02)**
84
+ - PASS: FAQPage or HowTo schema with complete Q&A pairs or steps
85
+ - WARN: Schema present but incomplete (missing answers, <3 pairs)
86
+ - FAIL: No FAQ/HowTo schema on content with Q&A or instructions
87
+
88
+ **3. Author/Expert Markup (DISC-AEO-03)**
89
+ - PASS: Author name, credentials, expertise; references specific experience
90
+ - WARN: Author name present but no credentials
91
+ - FAIL: No author attribution
92
+
93
+ **4. Cross-Domain Fact Consistency (DISC-AEO-04)**
94
+ - PASS: All numeric and positioning claims consistent and verifiable
95
+ - WARN: Minor phrasing differences that could be misinterpreted
96
+ - FAIL: Direct contradictions in claims
97
+
98
+ **5. Direct Answer Formatting (DISC-AEO-05)**
99
+ - PASS: Each H2 opens with 1-2 sentence definitive answer before elaboration
100
+ - WARN: Most sections open directly but 1-2 start with context first
101
+ - FAIL: Sections consistently open with preamble instead of answers
102
+
103
+ **6. Entity Authority**
104
+ - PASS: References authoritative entities, domain terminology, linked concepts
105
+ - WARN: Some entity coverage but surface-level
106
+ - FAIL: Generic content with no entity depth
107
+
108
+ Per check: assign PASS / WARN / FAIL with specific evidence.
109
+
110
+ ---
111
+
112
+ ## Step 4: Citation Status (if WebSearch available)
113
+
114
+ Attempt WebSearch to detect tool availability.
115
+
116
+ ### SEARCH_MODE=web
117
+ ```
118
+ takeToMarket > CHECKING LIVE CITATION STATUS
119
+ ```
120
+ Search `TARGET_QUERY` conversationally. Analyze: Is content being cited? Which competitors cited? What format do AI engines prefer?
121
+
122
+ ### SEARCH_MODE=manual
123
+ ```
124
+ takeToMarket > SEARCH MODE: MANUAL -- SKIPPING LIVE CITATION CHECK
125
+ ```
126
+ Skip live check. Tell user to manually search in ChatGPT, Perplexity, Gemini, Copilot.
127
+
128
+ ---
129
+
130
+ ## Step 5: Generate Report
131
+
132
+ Citability score: (PASS count / 6) * 100, rounded.
133
+
134
+ ```
135
+ ========================================
136
+ takeToMarket > AEO CITABILITY REPORT
137
+ ========================================
138
+ Query: "${TARGET_QUERY}"
139
+ Content: [URL, filename, or "pasted content"]
140
+ Date: [current date]
141
+ Citability Score: [score]% ([X/6 PASS] [Y/6 WARN] [Z/6 FAIL])
142
+
143
+ | # | Gate | Result | Evidence |
144
+ |---|-------------------------|--------|-----------------------|
145
+ | 1 | Quote-Worthy Sentences | [P/W/F] | [brief evidence] |
146
+ | 2 | FAQ/HowTo Schema | [P/W/F] | [brief evidence] |
147
+ | 3 | Author/Expert Markup | [P/W/F] | [brief evidence] |
148
+ | 4 | Fact Consistency | [P/W/F] | [brief evidence] |
149
+ | 5 | Direct Answer Format | [P/W/F] | [brief evidence] |
150
+ | 6 | Entity Authority | [P/W/F] | [brief evidence] |
151
+
152
+ [If SEARCH_MODE=web:]
153
+ CITATION STATUS:
154
+ - Currently cited: [yes/no/partial]
155
+ - Competing citations: [competitors being cited]
156
+ - Preferred format: [format AI engines favor]
157
+
158
+ FINDINGS (WARN/FAIL details):
159
+ - [Gate]: [Issue and recommendation]
160
+
161
+ RECOMMENDATIONS (priority-ordered):
162
+ 1. [Highest-impact citability improvement]
163
+ 2. [Next priority]
164
+ ```
165
+
166
+ ---
167
+
168
+ ## Step 6: Completion
169
+
170
+ ```
171
+ ========================================
172
+ takeToMarket > AEO CHECK COMPLETE
173
+ ========================================
174
+ Query: ${TARGET_QUERY} | Citability Score: [score]%
175
+ ```
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.
179
+
180
+ </process>
@@ -0,0 +1,147 @@
1
+ <purpose>
2
+ Generate a creative kit for affiliate partners including approved messaging, banner specs,
3
+ email swipes, and tracking requirements. Uses affiliate playbook constraints for quality.
4
+ Single-pass analysis workflow per D-07.
5
+ </purpose>
6
+
7
+ <required_reading>
8
+ @${CLAUDE_PLUGIN_ROOT}/references/context-loading.md
9
+ @${CLAUDE_PLUGIN_ROOT}/playbooks/affiliate.md
10
+ </required_reading>
11
+
12
+ <constraints>
13
+ ## POSITIONING.md is READ-ONLY
14
+
15
+ **Do NOT modify `.marketing/POSITIONING.md` during this workflow.**
16
+
17
+ POSITIONING.md is an architectural invariant. If you detect positioning drift:
18
+ - Flag the issue and recommend running /ttm-positioning-check
19
+
20
+ Only /ttm-positioning-shift and /ttm-init may modify POSITIONING.md.
21
+ </constraints>
22
+
23
+ <process>
24
+
25
+ ## Text-Mode Detection
26
+
27
+ **Text mode (`--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS`
28
+ or if the runtime is not Claude Code. When TEXT_MODE is active, replace every
29
+ `AskUserQuestion` call with a plain-text numbered list.
30
+
31
+ Detection:
32
+ ```bash
33
+ if echo "$ARGUMENTS" | grep -q -- '--text'; then TEXT_MODE=true; fi
34
+ ```
35
+
36
+ If `AskUserQuestion` tool is not available in the current runtime, set `TEXT_MODE=true`.
37
+
38
+ ---
39
+
40
+ ## Step 1: Load Context
41
+
42
+ ```
43
+ takeToMarket > LOADING CONTEXT FOR AFFILIATE KIT
44
+ ```
45
+
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`
48
+ **Playbook gates:** @${CLAUDE_PLUGIN_ROOT}/playbooks/affiliate.md
49
+
50
+ If `.marketing/POSITIONING.md` does not exist: Error and exit.
51
+
52
+ ---
53
+
54
+ ## Step 2: Gather Kit Parameters
55
+
56
+ Ask the user:
57
+ 1. "What product/offer is this affiliate kit for?"
58
+ 2. "Commission structure? (percentage, flat fee, tiered)"
59
+ 3. "Cookie/attribution window? (e.g., 30 days, 90 days)"
60
+ 4. "Landing page URL for affiliates to link to?"
61
+ 5. "Target affiliate types? (content creators, email marketers, comparison sites, coupon sites)"
62
+
63
+ Store responses as `PRODUCT_NAME`, `COMMISSION`, `COOKIE_WINDOW`, `LANDING_URL`, `AFFILIATE_TYPES`.
64
+
65
+ ---
66
+
67
+ ## Step 3: Generate Creative Kit
68
+
69
+ ```
70
+ takeToMarket > GENERATING AFFILIATE CREATIVE KIT
71
+ ```
72
+
73
+ Produce a complete kit with these sections:
74
+
75
+ ### Approved Messaging
76
+ - 3 headline variations aligned with POSITIONING.md differentiator
77
+ - 3 description variations using BRAND.md voice
78
+ - Approved claims list from BRAND.md proof points only
79
+ - Banned claims/language from BRAND.md banned words + POSITIONING.md must-not-say
80
+
81
+ ### Email Swipes
82
+ - 3 email templates (short/medium/long) targeting ICP pain points
83
+ - Subject line options per template (30-60 chars, no spam triggers per email playbook)
84
+ - FTC affiliate disclosure included in each template
85
+
86
+ ### Banner Specs
87
+ - Recommended sizes: 300x250, 728x90, 160x600 (per affiliate playbook format rules)
88
+ - Brand color codes and logo usage from BRAND.md
89
+ - Max 20% text area, visible CTA, product name
90
+
91
+ ### Tracking Requirements
92
+ - UTM format: `utm_source=affiliate&utm_medium=[affiliate-name]&utm_campaign=[campaign-slug]`
93
+ - Cookie window: ${COOKIE_WINDOW}
94
+ - Attribution model from METRICS.md (first-touch or last-touch)
95
+ - Commission structure: ${COMMISSION}
96
+ - Payout terms (schedule, minimum threshold, payment method)
97
+
98
+ ### Compliance Rules
99
+ - FTC disclosure template: "This post contains affiliate links. I may earn a commission if you make a purchase."
100
+ - Prohibited promotion methods (spam, misleading claims, trademark bidding)
101
+ - Brand usage guidelines from BRAND.md
102
+ - No income or results guarantees
103
+
104
+ ---
105
+
106
+ ## Step 4: Write Kit File
107
+
108
+ Generate a URL-safe slug from `PRODUCT_NAME`.
109
+ Write to `.marketing/AFFILIATE-KIT-[product-slug].md`.
110
+
111
+ Kit file structure:
112
+ ```markdown
113
+ # Affiliate Creative Kit: [Product Name]
114
+ Generated: [date]
115
+ Commission: [structure]
116
+ Cookie Window: [duration]
117
+
118
+ ## Approved Messaging
119
+ [headlines, descriptions, claims, banned language]
120
+
121
+ ## Email Swipes
122
+ [3 templates with subject lines]
123
+
124
+ ## Banner Specs
125
+ [sizes, brand guidelines, requirements]
126
+
127
+ ## Tracking Requirements
128
+ [UTM format, attribution, commission, payouts]
129
+
130
+ ## Compliance Rules
131
+ [FTC disclosure, prohibited methods, brand guidelines]
132
+ ```
133
+
134
+ ---
135
+
136
+ ## Step 5: Completion
137
+
138
+ ```
139
+ ========================================
140
+ takeToMarket > AFFILIATE KIT COMPLETE
141
+ ========================================
142
+ Product: ${PRODUCT_NAME} | Sections: 5 | File: .marketing/AFFILIATE-KIT-[slug].md
143
+ ```
144
+
145
+ Display summary of kit contents and confirm file location.
146
+
147
+ </process>