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.
- package/.claude-plugin/marketplace.json +4 -4
- package/.claude-plugin/plugin.json +2 -2
- package/README.md +34 -11
- package/bin/lib/campaign.cjs +12 -8
- package/bin/lib/codebase-scan.cjs +86 -0
- package/bin/lib/config.cjs +129 -0
- package/bin/lib/deploy.cjs +36 -0
- package/bin/lib/deviation.cjs +1 -1
- package/bin/lib/drift-log.cjs +4 -4
- package/bin/lib/health.cjs +32 -31
- package/bin/lib/install-detect.cjs +62 -0
- package/bin/lib/legacy-folder.cjs +100 -0
- package/bin/lib/playwright-check.cjs +26 -0
- package/bin/lib/site-location.cjs +22 -0
- package/bin/lib/state.cjs +3 -3
- package/bin/lib/svg-render.cjs +42 -0
- package/bin/ttm-tools.cjs +136 -4
- package/gates/base-gates.md +8 -8
- package/gates/gate-evaluation.md +8 -8
- package/install.js +37 -3
- package/package.json +10 -6
- package/playbooks/aeo.md +218 -114
- package/playbooks/affiliate.md +225 -160
- package/playbooks/email.md +236 -174
- package/playbooks/events.md +303 -213
- package/playbooks/landing-pages.md +305 -0
- package/playbooks/linkedin.md +264 -142
- package/playbooks/manifesto.md +322 -0
- package/playbooks/paid-ads.md +240 -189
- package/playbooks/positioning.md +340 -0
- package/playbooks/pr-media.md +308 -168
- package/playbooks/pseo.md +426 -0
- package/playbooks/seo.md +251 -158
- package/playbooks/social.md +253 -182
- package/playbooks/youtube.md +286 -181
- package/references/brand-color-theory.md +48 -0
- package/references/codex-image-gen-research.md +58 -0
- package/references/context-loading.md +6 -6
- package/references/humanizer-patterns.md +433 -0
- package/references/inline-education-blurbs.md +461 -0
- package/references/landing-page-anatomy.md +64 -0
- package/references/linkedin-post-patterns.md +174 -0
- package/references/logo-design-principles.md +55 -0
- package/references/meta-gate-evaluation.md +3 -3
- package/references/obra-superpowers-conventions.md +170 -0
- package/references/playbook-leaders.md +472 -0
- package/references/playwright-mcp-setup.md +164 -0
- package/references/positioning-check-report.md +2 -2
- package/references/pseo-page-anatomy.md +56 -0
- package/references/pseo-templates/alternative-anatomy.md +31 -0
- package/references/pseo-templates/alternative-content-playbook.md +32 -0
- package/references/pseo-templates/blog-anatomy.md +28 -0
- package/references/pseo-templates/blog-content-playbook.md +36 -0
- package/references/pseo-templates/comparison-anatomy.md +29 -0
- package/references/pseo-templates/comparison-content-playbook.md +35 -0
- package/references/pseo-templates/use-case-anatomy.md +28 -0
- package/references/pseo-templates/use-case-content-playbook.md +30 -0
- package/skills/ttm-101/SKILL.md +25 -0
- package/skills/ttm-aeo-check/SKILL.md +17 -12
- package/skills/ttm-affiliate-kit/SKILL.md +5 -0
- package/skills/ttm-archive/SKILL.md +5 -0
- package/skills/ttm-brand-refresh/SKILL.md +5 -0
- package/skills/ttm-brief/SKILL.md +5 -0
- package/skills/ttm-competitor-scan/SKILL.md +5 -0
- package/skills/ttm-deploy/SKILL.md +22 -0
- package/skills/ttm-discover/SKILL.md +17 -0
- package/skills/ttm-email-check/SKILL.md +17 -0
- package/skills/ttm-email-preflight/SKILL.md +17 -11
- package/skills/ttm-fix/SKILL.md +5 -0
- package/skills/ttm-health/SKILL.md +6 -1
- package/skills/ttm-humanize/SKILL.md +33 -0
- package/skills/ttm-icp-refresh/SKILL.md +5 -0
- package/skills/ttm-improve-skill/SKILL.md +18 -0
- package/skills/ttm-init/SKILL.md +10 -3
- package/skills/ttm-keyword-map/SKILL.md +17 -11
- package/skills/ttm-landing/SKILL.md +19 -0
- package/skills/ttm-learn/SKILL.md +5 -0
- package/skills/ttm-linkedin-post/SKILL.md +26 -0
- package/skills/ttm-measure/SKILL.md +5 -0
- package/skills/ttm-new-campaign/SKILL.md +5 -0
- package/skills/ttm-next/SKILL.md +5 -0
- package/skills/ttm-playwright-setup/SKILL.md +18 -0
- package/skills/ttm-positioning-check/SKILL.md +5 -0
- package/skills/ttm-positioning-shift/SKILL.md +5 -0
- package/skills/ttm-produce/SKILL.md +5 -0
- package/skills/ttm-pseo/SKILL.md +26 -0
- package/skills/ttm-repurpose/SKILL.md +5 -0
- package/skills/ttm-request-skill/SKILL.md +18 -0
- package/skills/ttm-research/SKILL.md +18 -6
- package/skills/ttm-resume/SKILL.md +5 -0
- package/skills/ttm-review/SKILL.md +5 -0
- package/skills/ttm-seo/SKILL.md +64 -0
- package/skills/ttm-seo-audit/SKILL.md +17 -12
- package/skills/ttm-ship/SKILL.md +5 -0
- package/skills/ttm-state/SKILL.md +5 -0
- package/skills/ttm-update/SKILL.md +152 -4
- package/skills/ttm-verify/SKILL.md +5 -0
- package/templates/agents-md.md +14 -4
- package/templates/campaign-research.md +6 -6
- package/templates/campaign-state.md +1 -1
- package/templates/claude-md.md +14 -4
- package/templates/linkedin-base-template.md +48 -0
- package/templates/next-step-footer.md +13 -0
- package/templates/production-manifest.json +4 -4
- package/templates/pseo/alternative-cms-schema.json +65 -0
- package/templates/pseo/blog-cms-schema.json +55 -0
- package/templates/pseo/comparison-cms-schema.json +56 -0
- package/templates/pseo/use-case-cms-schema.json +62 -0
- package/templates/reference-files/brand.md +51 -0
- package/templates/reference-files/product-dna.md +73 -0
- package/templates/site-scaffold/app/globals.css +2 -0
- package/templates/site-scaffold/app/layout.tsx +17 -0
- package/templates/site-scaffold/app/page.tsx +33 -0
- package/templates/site-scaffold/app/robots.ts +8 -0
- package/templates/site-scaffold/app/sitemap.ts +10 -0
- package/templates/site-scaffold/app/tokens.css +21 -0
- package/templates/site-scaffold/components/Comparison.tsx +14 -0
- package/templates/site-scaffold/components/Faq.tsx +14 -0
- package/templates/site-scaffold/components/Features.tsx +14 -0
- package/templates/site-scaffold/components/FinalCta.tsx +17 -0
- package/templates/site-scaffold/components/Footer.tsx +12 -0
- package/templates/site-scaffold/components/Hero.tsx +22 -0
- package/templates/site-scaffold/components/HowItWorks.tsx +14 -0
- package/templates/site-scaffold/components/PricingTeaser.tsx +14 -0
- package/templates/site-scaffold/components/Problem.tsx +14 -0
- package/templates/site-scaffold/components/SocialProof.tsx +14 -0
- package/templates/site-scaffold/components/Solution.tsx +14 -0
- package/templates/site-scaffold/components/Testimonials.tsx +14 -0
- package/templates/site-scaffold/components/UseCases.tsx +14 -0
- package/templates/site-scaffold/content/.gitkeep +0 -0
- package/templates/site-scaffold/lib/.gitkeep +0 -0
- package/templates/site-scaffold/next.config.mjs +10 -0
- package/templates/site-scaffold/package.json +25 -0
- package/templates/site-scaffold/postcss.config.mjs +3 -0
- package/templates/site-scaffold/public/llms.txt +9 -0
- package/templates/site-scaffold/tsconfig.json +21 -0
- package/templates/verification-report.md +1 -1
- package/workflows/channel/linkedin-post.md +178 -0
- package/workflows/discipline/affiliate-kit.md +65 -6
- package/workflows/discipline/{email-preflight.md → email-check.md} +39 -4
- package/workflows/discipline/repurpose.md +82 -31
- package/workflows/discipline/{aeo-check.md → seo/aeo.md} +13 -6
- package/workflows/discipline/{seo-audit.md → seo/audit.md} +13 -6
- package/workflows/discipline/{keyword-map.md → seo/keyword-map.md} +13 -6
- package/workflows/education/ttm-101.md +114 -0
- package/workflows/lifecycle/brief-positioning-check.md +1 -1
- package/workflows/lifecycle/brief.md +64 -28
- package/workflows/lifecycle/{research.md → discover.md} +61 -19
- package/workflows/lifecycle/fix.md +72 -37
- package/workflows/lifecycle/humanize.md +280 -0
- package/workflows/lifecycle/learn.md +72 -35
- package/workflows/lifecycle/measure.md +54 -18
- package/workflows/lifecycle/produce.md +88 -37
- package/workflows/lifecycle/review.md +71 -25
- package/workflows/lifecycle/ship.md +62 -18
- package/workflows/lifecycle/verify.md +72 -26
- package/workflows/reference-mgmt/brand-refresh.md +50 -13
- package/workflows/reference-mgmt/competitor-scan.md +51 -15
- package/workflows/reference-mgmt/icp-refresh.md +48 -12
- package/workflows/reference-mgmt/positioning-check.md +55 -20
- package/workflows/reference-mgmt/positioning-shift.md +53 -17
- package/workflows/setup/init-brand-colors.md +75 -0
- package/workflows/setup/init-logo.md +113 -0
- package/workflows/setup/init-product-dna.md +83 -0
- package/workflows/setup/init-questions.md +166 -30
- package/workflows/setup/init-validation.md +22 -0
- package/workflows/setup/init.md +144 -39
- package/workflows/setup/new-campaign.md +48 -12
- package/workflows/site/deploy.md +98 -0
- package/workflows/site/landing.md +156 -0
- package/workflows/site/pseo.md +96 -0
- package/workflows/site/quality-gates.md +88 -0
- package/workflows/utility/archive.md +45 -9
- package/workflows/utility/health.md +77 -3
- package/workflows/utility/improve-skill.md +233 -0
- package/workflows/utility/next.md +38 -2
- package/workflows/utility/playwright-setup.md +128 -0
- package/workflows/utility/request-skill.md +218 -0
- package/workflows/utility/resume.md +40 -3
- package/workflows/utility/state.md +42 -7
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# LinkedIn Post Patterns — Reference
|
|
2
|
+
|
|
3
|
+
**Purpose:** Research-based catalog of LinkedIn writing patterns that engage and convert. Sourced from public creator playbooks (Justin Welsh, Sahil Bloom, Cole Schafer) and recent (2025-2026) engagement studies. Consumed by `/ttm-linkedin-post`.
|
|
4
|
+
|
|
5
|
+
**Stantly note:** The original P5 plan referenced "Stantly" as a LinkedIn ghostwriting / content-automation source. As of 2026-05-18, Stantly is unfindable: `stantly.com` does not resolve, `linkedin.com/company/stantly` returns 404, and no search results match a LinkedIn-focused product or agency by that name. The closest match is **Stan / Stanley** (an AI "Head of Content" for LinkedIn launched by the creator platform Stan in late 2025) — different product. This reference therefore substitutes the Stantly section with documented patterns from creators whose frameworks are public and verifiable. If Stantly resurfaces under a new name and shifts the consensus, regenerate this file via `/ttm-linkedin-post --rebuild-base`.
|
|
6
|
+
|
|
7
|
+
## Why first-line hooks decide everything
|
|
8
|
+
|
|
9
|
+
LinkedIn's mobile feed shows only the first **210-235 characters** before the "see more" truncation. Roughly **60-70% of potential readers churn at that decision point**, so the opening line carries more weight than the rest of the post combined (Justin Welsh: *"The first line is more important than 95% of the rest of the post."*). Every hook pattern below is engineered to clear the "see more" click.
|
|
10
|
+
|
|
11
|
+
## Hook patterns (first line)
|
|
12
|
+
|
|
13
|
+
1. **Confession** — "I made $0 from LinkedIn for 2 years. Here's what changed."
|
|
14
|
+
- Why it works: vulnerability + specific number primes curiosity.
|
|
15
|
+
|
|
16
|
+
2. **Counter-conventional** — "Stop posting daily. Here's what actually works."
|
|
17
|
+
- Why it works: relatable-enemy framing (Welsh): attack the default belief the reader is half-suspecting is wrong.
|
|
18
|
+
|
|
19
|
+
3. **Specific number** — "$47K in 60 days from one LinkedIn post. The breakdown:"
|
|
20
|
+
- Why it works: numbers survive the skim. Vague claims do not.
|
|
21
|
+
|
|
22
|
+
4. **Open loop** — "Most founders get this wrong about pricing."
|
|
23
|
+
- Why it works: triggers the Zeigarnik effect (unresolved tension). Must be paid off in the body — open loops left dangling burn trust.
|
|
24
|
+
|
|
25
|
+
5. **Question** — "Why do 90% of B2B startups fail at LinkedIn?"
|
|
26
|
+
- Why it works: rhetorical pull. Pair with a specific stat or example; bare questions ("Thoughts on AI?") fail.
|
|
27
|
+
|
|
28
|
+
6. **Story start** — "Last year I almost shut down my startup. Then a stranger sent me this:"
|
|
29
|
+
- Why it works: scene + cliffhanger. Story openings outperform meta-commentary roughly 2:1 in Sahil Bloom's tested formats.
|
|
30
|
+
|
|
31
|
+
7. **Welsh's "Relatable Enemy → Flip"** — "The 9-to-5 is getting pummeled. The great resignation is growing faster than ever."
|
|
32
|
+
- Two short lines, opposing emotional charges, set up the body. Template: `The {RelatableEnemy} is {Negativity}. The {Hero} is {StrongPositiveStatement}.`
|
|
33
|
+
|
|
34
|
+
### Hook anti-patterns (do not use)
|
|
35
|
+
|
|
36
|
+
- "Excited to share..." — generic announcement opener; signals nothing.
|
|
37
|
+
- "🚀 Big news!" — emoji-first openings underperform plain text on LinkedIn's 2025 ranking signals.
|
|
38
|
+
- Hooks longer than 12 words — get truncated in feed.
|
|
39
|
+
- Hooks with no concrete noun (number, name, dollar amount, date) — read as filler.
|
|
40
|
+
|
|
41
|
+
## Post structure templates
|
|
42
|
+
|
|
43
|
+
### Template A: Story + Lesson
|
|
44
|
+
1. Hook (specific scene).
|
|
45
|
+
2. Conflict (what went wrong).
|
|
46
|
+
3. Pivot (what changed).
|
|
47
|
+
4. Lesson (transferable insight).
|
|
48
|
+
5. CTA (question or low-friction action).
|
|
49
|
+
|
|
50
|
+
### Template B: List + Context
|
|
51
|
+
1. Hook with the number.
|
|
52
|
+
2. Brief context (1-2 lines).
|
|
53
|
+
3. Numbered list (5-10 items, each 1-3 lines).
|
|
54
|
+
4. Insight or wrap.
|
|
55
|
+
5. CTA.
|
|
56
|
+
|
|
57
|
+
### Template C: Counter-take
|
|
58
|
+
1. State the conventional wisdom.
|
|
59
|
+
2. State your counter-position.
|
|
60
|
+
3. 2-3 reasons.
|
|
61
|
+
4. Caveat (when conventional wisdom IS right) — earns credibility.
|
|
62
|
+
5. CTA.
|
|
63
|
+
|
|
64
|
+
### Template D: Behind-the-scenes
|
|
65
|
+
1. Specific moment (date, place, action).
|
|
66
|
+
2. What you saw / learned.
|
|
67
|
+
3. Why it matters generally.
|
|
68
|
+
4. CTA.
|
|
69
|
+
|
|
70
|
+
### Template E: Welsh's 5-step PAIPS (Problem → Agitate → Intrigue → Positive Future → Solution)
|
|
71
|
+
1. **Problem** — name the reader's pain in their language.
|
|
72
|
+
2. **Agitate** — make the pain present-tense and concrete.
|
|
73
|
+
3. **Intrigue** — hint that a path exists.
|
|
74
|
+
4. **Positive Future** — describe what life looks like on the other side.
|
|
75
|
+
5. **Solution** — your framework / tool / link.
|
|
76
|
+
|
|
77
|
+
Use PAIPS sparingly. It is the "sales letter on LinkedIn" pattern — strong for lead-gen posts, fatiguing if used weekly.
|
|
78
|
+
|
|
79
|
+
## Length norms
|
|
80
|
+
|
|
81
|
+
Two regimes coexist in 2025-2026 LinkedIn data:
|
|
82
|
+
|
|
83
|
+
- **Punch regime (400-900 chars):** crisp hot takes, single-image posts, list teasers. Lower ceiling, higher consistency.
|
|
84
|
+
- **Long regime (1,300-1,900 chars):** stories, breakdowns, frameworks. Higher ceiling, but the post must earn its length — AuthoredUp and Closely's 2025-2026 studies put the engagement peak at **1,300-1,900 characters**, with longer posts (1,301-2,500) generating ~27% higher engagement than sub-400-character posts.
|
|
85
|
+
|
|
86
|
+
Practical defaults:
|
|
87
|
+
- Below 400 chars: only for very crisp opinion drops with one specific claim.
|
|
88
|
+
- 800-1,200 chars: default sweet spot for narrative posts.
|
|
89
|
+
- 1,300-1,900 chars: the "long regime" — only when you have a real list, story, or framework. Don't pad.
|
|
90
|
+
- Above 2,000 chars: rarely. Move it to a newsletter or a carousel.
|
|
91
|
+
|
|
92
|
+
## Formatting
|
|
93
|
+
|
|
94
|
+
- **Line breaks every 1-2 sentences.** Dense paragraphs die on mobile.
|
|
95
|
+
- **No emoji at start of line** unless it's a list bullet. Emoji-led posts underperform plain text in the 2025 algorithm.
|
|
96
|
+
- **Hashtags:** 3-5 max, end of post, niche over broad. `#FounderLife` beats `#Business`.
|
|
97
|
+
- **Mentions (@):** only when relevant. Spammy tagging gets reach-throttled.
|
|
98
|
+
- **No bolding** — LinkedIn doesn't support markdown bold natively (Unicode-bold tricks look like AI tooling and get flagged by readers).
|
|
99
|
+
- **Single image > text-only** by roughly 30% in raw impressions (charts, screenshots, photos). Carousels of 5-7 slides outperform single-image when each slide is readable in 3 seconds.
|
|
100
|
+
|
|
101
|
+
## Engagement levers
|
|
102
|
+
|
|
103
|
+
- **Questions** — invite comments. End-of-post questions get roughly 3x replies vs. declarative endings.
|
|
104
|
+
- **Polls** — high engagement numbers but lower follower-quality reach. Use to surface audience signal, not as a content pillar.
|
|
105
|
+
- **Dwell time matters most.** LinkedIn's 2025-2026 ranking signal weights dwell time (time spent reading the post) over likes. Longer posts that earn the scroll generate more downstream reach than shorter ones with the same like count.
|
|
106
|
+
- **First-hour comments compound.** Reply to early commenters within 30 minutes — replies are weighted heavily by the algorithm.
|
|
107
|
+
- **Engagement pods are dead.** LinkedIn's 2025 algorithm explicitly demotes inauthentic engagement clusters (per multiple platform analyses).
|
|
108
|
+
|
|
109
|
+
## Banned moves (LinkedIn-specific + humanizer overlap)
|
|
110
|
+
|
|
111
|
+
Pair every banned move with the failure mode in parentheses so the model knows *why* to avoid it.
|
|
112
|
+
|
|
113
|
+
- `"What an amazing day at [event]!"` — (no signal; no specific takeaway).
|
|
114
|
+
- `"Just wanted to share…"` — (apologetic; reads as low-conviction).
|
|
115
|
+
- `"Thoughts?"` — (too vague; readers need a specific question to answer).
|
|
116
|
+
- `"🚀 Excited to announce…"` — (generic; pattern-matches to a thousand identical posts).
|
|
117
|
+
- `"What an honor / Humbled to…"` — (humble-brag; reads as performance).
|
|
118
|
+
- Excessive em dashes — (humanizer overlap: `references/humanizer-patterns.md` §14; LLM signature).
|
|
119
|
+
- `"Game-changer"`, `"in this fast-paced world"`, `"incredibly excited"` — (humanizer banned: AI vocabulary tells).
|
|
120
|
+
- `"Let's dive in"`, `"without further ado"` — (humanizer §28: signposting that announces instead of doing).
|
|
121
|
+
- `"At its core"`, `"the real question is"`, `"fundamentally"` — (humanizer §27: persuasive-authority tropes; padded importance).
|
|
122
|
+
- Inline-header lists with bold colons (`**Performance:**`, `**Security:**`) — (humanizer §16: looks like ChatGPT bullet output, not LinkedIn voice).
|
|
123
|
+
- Rule-of-three padding (`innovation, inspiration, and industry insights`) — (humanizer §10: trios as decoration).
|
|
124
|
+
- "Knowledge-cutoff" or hedge phrases (`as of my last update`, `it could be argued`) — (humanizer §21, §24).
|
|
125
|
+
- Curly quotes (`"…"` instead of `"…"`) — (humanizer §19: ChatGPT signature).
|
|
126
|
+
|
|
127
|
+
When in doubt, run the post through `/ttm-humanize` before publishing.
|
|
128
|
+
|
|
129
|
+
## Patterns from public creator playbooks
|
|
130
|
+
|
|
131
|
+
Stantly is unfindable (see top of file), so this section substitutes the documented playbooks below. Each is sourced from the creator's own public material:
|
|
132
|
+
|
|
133
|
+
- **Justin Welsh's "scroll-stopper → flip → gasoline + teaser":** three short lines, opposing emotional charges, ending in a one-word teaser question. Built specifically to clear the 210-character truncation. (Source: justinwelsh.me newsletter, "The Anatomy of a Viral LinkedIn Post".)
|
|
134
|
+
- **Sahil Bloom's universality bias:** write content that applies to the broadest possible sphere of your niche while still signaling identity. Test ideas in comment threads on viral posts first; the comments that get traction become future posts. (Source: growthinreverse.com case study + Bloom's own LinkedIn posts on his writing process.)
|
|
135
|
+
- **Cole Schafer's 20% headline rule:** spend ~20% of total writing time on the first line. Honey Copy's house style treats the headline as the product — the rest of the body exists to deliver on the promise the headline made. (Source: honeycopy.co, coleschafer.com courses.)
|
|
136
|
+
- **PAIPS sequencing (Welsh's 5-step copywriting formula):** Problem → Agitate → Intrigue → Positive Future → Solution. Used in lead-gen posts; do not use as a default narrative template.
|
|
137
|
+
- **The "rehook" on line 2:** the strongest LinkedIn writers do not just hook the first line — they place a second hook on line 2 to defeat readers who reflexively bail at the truncation point. This is in active use by ContentIn, AuthoredUp, and most 2025-2026 LinkedIn writing guides.
|
|
138
|
+
|
|
139
|
+
## Time + cadence
|
|
140
|
+
|
|
141
|
+
- **Best post times (2025-2026 data):** Tuesday and Wednesday, 8-10am in your audience's timezone, with secondary windows at 12-1pm and 3-5pm.
|
|
142
|
+
- **Daily cadence beats weekly** for follower growth; weekly beats sporadic.
|
|
143
|
+
- **3-4 posts per week is the floor** for compounding reach.
|
|
144
|
+
- **Avoid Friday afternoons and weekends** — reach typically drops 30-50% on LinkedIn's professional-feed weighting.
|
|
145
|
+
- **Reply window:** the first 30 minutes after posting are the highest-leverage time for replying to comments. Block the calendar.
|
|
146
|
+
|
|
147
|
+
## How to use this reference
|
|
148
|
+
|
|
149
|
+
The `/ttm-linkedin-post` skill consumes this file when drafting. Workflow:
|
|
150
|
+
|
|
151
|
+
1. Pick a template (A-E) based on the post's intent (story, list, counter-take, BTS, lead-gen).
|
|
152
|
+
2. Draft a hook from the 7 hook patterns.
|
|
153
|
+
3. Draft the body inside the chosen template, respecting length norms.
|
|
154
|
+
4. Self-check against the **Banned moves** list.
|
|
155
|
+
5. Run `/ttm-humanize` to catch LLM tells.
|
|
156
|
+
6. Format check: line breaks every 1-2 sentences, 3-5 niche hashtags at the end, no inline-header bolding.
|
|
157
|
+
|
|
158
|
+
## Sources
|
|
159
|
+
|
|
160
|
+
- Justin Welsh, ["The Anatomy of a Viral LinkedIn Post"](https://www.justinwelsh.me/newsletter/the-anatomy-of-a-viral-linkedin-post) — scroll-stopper / flip / gasoline framework, 210-char rule.
|
|
161
|
+
- Justin Welsh, ["The LinkedIn Operating System"](https://learn.justinwelsh.me/linkedin) — PAIPS copywriting formula, daily cadence, profile-as-foundation.
|
|
162
|
+
- Sahil Bloom, ["Growth In Reverse case study"](https://growthinreverse.com/sahil-bloom/) — universality bias, comment-thread testing, draft-fast-edit-slow.
|
|
163
|
+
- Cole Schafer, [Honey Copy](https://www.honeycopy.co/) and [coleschafer.com/courses/copywriting](https://www.coleschafer.com/courses/copywriting) — 20% headline rule, empathy-storytelling-authenticity stance.
|
|
164
|
+
- Cole Schafer interview on [Marie Forleo](https://www.marieforleo.com/blog/cole-schafer-honey-copy) — "writing for action" vs. "writing for ideas" distinction.
|
|
165
|
+
- AuthoredUp, ["LinkedIn Character Limits 2026: All Limits + Best Post Length Data"](https://authoredup.com/blog/linkedin-character-limit) — 1,300-1,900 char engagement peak; 372,126-post dataset (Sep 2025 - Feb 2026).
|
|
166
|
+
- ConnectSafely.ai, ["Best LinkedIn Post Length for Engagement 2026"](https://connectsafely.ai/articles/ideal-linkedin-post-length-engagement-guide-2026) — 47% engagement lift for 1,300-1,900 char posts.
|
|
167
|
+
- Closely, ["LinkedIn Algorithm 2025: Post at These Exact Times"](https://blog.closelyhq.com/linkedin-algorithm-2025-post-at-these-exact-times-10x-reach/) — best-times-to-post 2025 data, mobile-feed truncation.
|
|
168
|
+
- Meet-Lea, ["LinkedIn Algorithm Explained 2026: Dwell Time, Comments"](https://meet-lea.com/en/blog/linkedin-algorithm-explained) — dwell-time weighting, first-hour comment leverage.
|
|
169
|
+
- DEV Community / Synergist Digital, ["LinkedIn's Algorithm in 2025: Why Engagement Pods Are Dead"](https://dev.to/synergistdigitalmedia/linkedins-algorithm-in-2025-why-engagement-pods-are-dead-and-what-works-now-1f6h) — algorithmic demotion of inauthentic engagement clusters.
|
|
170
|
+
- Aditya Mallah, ["I Analyzed 1000+ Viral LinkedIn Posts"](https://adityamallahofficial.medium.com/i-analyzed-1000-viral-linkedin-posts-heres-the-prompt-pattern-they-all-share-37267e38d495) — hook-visibility (first 3 lines), readability lift from line breaks.
|
|
171
|
+
- BriefGlance, ["Stan Launches AI 'Stanley' to Automate Your LinkedIn Success"](https://briefglance.com/articles/stan-launches-ai-stanley-to-automate-your-linkedin-success) — context for Stan/Stanley, the product likely confused with "Stantly" in source plan.
|
|
172
|
+
- `references/humanizer-patterns.md` — overlapping banned-phrase catalog (AI vocabulary, em-dash overuse, signposting, persuasive-authority tropes, rule-of-three padding, curly quotes).
|
|
173
|
+
|
|
174
|
+
**Stantly URL audit (2026-05-18):** `stantly.com` returned ECONNREFUSED. `linkedin.com/company/stantly` returned HTTP 404. No web-search results match a LinkedIn-focused product or agency named "Stantly." If you find a current source, file an issue and regenerate this file with `/ttm-linkedin-post --rebuild-base`.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Logo Design Principles - Reference
|
|
2
|
+
|
|
3
|
+
**Purpose:** Knowledge base consumed by `/ttm-init` logo flow. Captures what makes a logo work for a SaaS brand and a developerneur audience.
|
|
4
|
+
|
|
5
|
+
## Logo types
|
|
6
|
+
|
|
7
|
+
- **Wordmark** - brand name in distinctive typography. Best for short, distinctive names (Stripe, Vercel, Linear).
|
|
8
|
+
- **Lettermark** - initials only. Works when name is long (IBM, NASA).
|
|
9
|
+
- **Symbol/icon** - abstract mark. Hard to do well; requires brand recognition to read.
|
|
10
|
+
- **Combination mark** - wordmark + symbol together. Most flexible.
|
|
11
|
+
|
|
12
|
+
**Recommendation default for developerneurs:** start with wordmark or combination mark. Symbol-only logos require brand equity you don't have yet.
|
|
13
|
+
|
|
14
|
+
## Principles
|
|
15
|
+
|
|
16
|
+
1. **Scalable** - readable at 16x16 favicon and on a billboard.
|
|
17
|
+
2. **Monochrome-safe** - works in single color when printed/embossed/etched.
|
|
18
|
+
3. **Distinctive** - passes the "if I removed the name, would you recognize it?" test.
|
|
19
|
+
4. **Memorable** - simple enough to redraw from memory.
|
|
20
|
+
5. **Versatile** - works on light, dark, and image backgrounds.
|
|
21
|
+
6. **Era-resistant** - avoid trendy fads (gradients, 3D bevels, fake metallic).
|
|
22
|
+
|
|
23
|
+
## Anti-patterns
|
|
24
|
+
- Generic "tech wing" or "abstract orbit" shapes (template-derived).
|
|
25
|
+
- Three offset circles. Everyone does this.
|
|
26
|
+
- Cliche motifs: lightbulb (idea), gear (tech), brain (smart), rocket (launch). Used to death.
|
|
27
|
+
- Heavy gradients unless they're load-bearing brand-recognition (rare).
|
|
28
|
+
- Drop shadows.
|
|
29
|
+
|
|
30
|
+
## Format checklist
|
|
31
|
+
For each finished logo, produce:
|
|
32
|
+
- `logo.svg` - vector primary.
|
|
33
|
+
- `logo-mark.svg` - symbol only (if a combination mark).
|
|
34
|
+
- `logo-wordmark.svg` - text only (if a combination mark).
|
|
35
|
+
- `logo-mono-light.svg` - single-color version for light bg.
|
|
36
|
+
- `logo-mono-dark.svg` - single-color version for dark bg.
|
|
37
|
+
- `logo-favicon.svg` - 32x32 simplified.
|
|
38
|
+
- `logo@1x.png`, `logo@2x.png` - raster fallbacks (for runtimes/embeds that don't support SVG).
|
|
39
|
+
|
|
40
|
+
## Vision-review checklist (what the AI evaluates)
|
|
41
|
+
1. **Legibility at small size** - render at 32x32, can you still tell what it is?
|
|
42
|
+
2. **Composition balance** - visual weight is even, not pulling left/right.
|
|
43
|
+
3. **Mark + wordmark spacing** - wordmark not crammed against the mark.
|
|
44
|
+
4. **Typography choice** - distinct enough; not Helvetica unless deliberately neutral.
|
|
45
|
+
5. **Color matches palette** - primary color from BRAND.md, not a one-off hue.
|
|
46
|
+
6. **Originality vs cliche** - is this Generic Startup Logo #427 or genuinely distinct?
|
|
47
|
+
|
|
48
|
+
## Sources
|
|
49
|
+
- Logo Design Love by David Airey - blog and book covering identity design fundamentals, including scalability, simplicity, and mark durability. https://www.logodesignlove.com
|
|
50
|
+
- Brand New (UnderConsideration) - daily critique of corporate identity work; strong signal for what is overused vs. genuinely fresh. https://www.underconsideration.com/brandnew
|
|
51
|
+
- Sagi Haviv (Chermayeff & Geismar Haviv) - interviews and talks on logo design longevity; key insight: the best logos work because they are simple enough to survive context change. https://www.cgstudionyc.com
|
|
52
|
+
- Lyft brand evolution case study (2019 refresh) - Lyft Design team articles on Medium documenting the shift from gradient-heavy to a bolder, simpler mark. https://design.lyft.com
|
|
53
|
+
- Mailchimp brand evolution case study (2018 refresh) - Collins agency case study on stripping back a mascot-driven identity into a flexible modern system. https://www.wearecollins.com/work/mailchimp
|
|
54
|
+
- Vercel design system - real-world wordmark example for developer tools; demonstrates how restraint and monochrome-first thinking work for a technical audience. https://vercel.com/design
|
|
55
|
+
- Linear brand guidelines - example of a restrained mark + wordmark combination that reads well for SaaS; minimal, geometric, scalable. https://linear.app/brand
|
|
@@ -12,7 +12,7 @@ Meta-gates operate at the **portfolio level**, not on individual assets. They ev
|
|
|
12
12
|
node ${CLAUDE_PLUGIN_ROOT}/bin/ttm-tools.cjs campaign list --raw
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
Additional data sources: `.
|
|
15
|
+
Additional data sources: `.taketomarket/CALENDAR.md`, `.taketomarket/CAMPAIGNS/<slug>/BRIEF.md`
|
|
16
16
|
|
|
17
17
|
## Structured Output Format
|
|
18
18
|
|
|
@@ -67,7 +67,7 @@ Count the distinct channels used across all active campaigns.
|
|
|
67
67
|
|
|
68
68
|
**Tier:** 2 (Advisory)
|
|
69
69
|
|
|
70
|
-
**Data source:** `campaign list --raw` output + `.
|
|
70
|
+
**Data source:** `campaign list --raw` output + `.taketomarket/CALENDAR.md` + each campaign's BRIEF.md (launch date, audience segment)
|
|
71
71
|
|
|
72
72
|
### Evaluation Criteria
|
|
73
73
|
|
|
@@ -101,7 +101,7 @@ Compare target audience segments across campaigns launching in the same 2-week w
|
|
|
101
101
|
|
|
102
102
|
**Tier:** 2 (Advisory)
|
|
103
103
|
|
|
104
|
-
**Data source:** `.
|
|
104
|
+
**Data source:** `.taketomarket/CALENDAR.md` (quarterly theme section) + each campaign's BRIEF.md
|
|
105
105
|
|
|
106
106
|
### Evaluation Criteria
|
|
107
107
|
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Obra/Superpowers + GSD-Build Conventions Reference
|
|
2
|
+
|
|
3
|
+
**Purpose:** Catalog of patterns from `obra/superpowers` and `gsd-build/get-shit-done` that takeToMarket adopts in v2.3.0. Findings are grounded in the upstream `README.md`, `.claude-plugin/plugin.json`, `package.json`, `bin/install.js`, and select `skills/*/SKILL.md` files inspected on 2026-05-17 (obra superpowers `5.1.0`, get-shit-done `1.50.0-canary.0`).
|
|
4
|
+
|
|
5
|
+
**Status legend for "Adopted for v2.3.0" bullets:**
|
|
6
|
+
- `[P1]` — landed in v2.3.0-rc.1 (this PR).
|
|
7
|
+
- `[P1-partial]` — partial landing in P1; remainder tracked for later phase.
|
|
8
|
+
- `[P2+]` — design intent for a subsequent v2.3.x phase (P2-P6); not in this PR.
|
|
9
|
+
- `[deferred]` — explicitly deferred past v2.3.x (e.g. v2.4, v2.5).
|
|
10
|
+
|
|
11
|
+
## Axis 1: Distribution + Install
|
|
12
|
+
|
|
13
|
+
### Obra pattern
|
|
14
|
+
|
|
15
|
+
- **Primary surface is plugin marketplaces, not npm.** `README.md` lists 7 install paths (Claude Code, Codex CLI, Codex App, Factory Droid, Gemini CLI, OpenCode, Cursor, Copilot CLI) and every single one is a one-line plugin-marketplace command. There is no `npm install`, no `npx`, no `git clone`.
|
|
16
|
+
- **Dual-marketplace distribution.** Official path: `/plugin install superpowers@claude-plugins-official` (Anthropic-curated). Community path: `/plugin marketplace add obra/superpowers-marketplace` then `/plugin install superpowers@superpowers-marketplace`.
|
|
17
|
+
- **Minimal `.claude-plugin/plugin.json`.** Fields actually present: `name`, `description`, `version` (`5.1.0`), `author` (object with `name`+`email`), `homepage`, `repository`, `license`, `keywords`. No `skills` array, no `displayName`, no `category`, no `source`/`sourceUrl`. The plugin runtime auto-discovers skills from the `skills/` directory.
|
|
18
|
+
- **Repo holds runtime-specific subtrees side by side.** Root contains `.claude-plugin/`, `.codex-plugin/`, `.cursor-plugin/`, `.opencode/`, plus `gemini-extension.json` and `AGENTS.md`/`CLAUDE.md`/`GEMINI.md`. Each runtime gets a native install path; the upstream sync script lives at `scripts/sync-to-codex-plugin.sh`.
|
|
19
|
+
- **Version bumping is a tracked workflow.** Root `.version-bump.json` + `scripts/bump-version.sh` keep the version pinned across all runtime manifests. Badges in README are absent (intentional — README is install-instructions-first).
|
|
20
|
+
|
|
21
|
+
### GSD pattern
|
|
22
|
+
|
|
23
|
+
- **Primary surface is `npx`.** README headline is literally `npx get-shit-done-cc@latest`. Plugin-marketplace install is not mentioned in the headline; npx is the entry point even though the package ships skills.
|
|
24
|
+
- **Single installer, many runtimes.** `bin/install.js` (10,840 lines) is the universal installer. It prompts the user for runtime choice (Claude Code, OpenCode, Gemini CLI, Kilo, Codex, Copilot, Cursor, Windsurf, "and more"), supports `--global` / local install, and `--profile=core|standard` for surface budgeting.
|
|
25
|
+
- **`package.json` is the source of truth.** `name: get-shit-done-cc`, `version: 1.50.0-canary.0`, three bin entries (`get-shit-done-cc`, `gsd-sdk`, `gsd-tools`), `files` array enumerates 11 directories, `engines.node: ">=22.0.0"`, real runtime deps (`@anthropic-ai/claude-agent-sdk`, `ws`), optional `fallow`.
|
|
26
|
+
- **README leans heavily on badges + social proof.** Eight badges at the top: npm version, npm downloads, GitHub Actions test status, Discord, X, $GSD token, GitHub stars, license. Plus "Trusted by engineers at Amazon, Google, Shopify, and Webflow" and three pull-quotes. Multi-language READMEs (`README.pt-BR.md`, `README.zh-CN.md`, `README.ja-JP.md`, `README.ko-KR.md`).
|
|
27
|
+
- **Idempotent installer is a feature.** Troubleshooting section explicitly tells users `Re-run the installer — it's idempotent: npx get-shit-done-cc@latest`. `CLAUDE_CONFIG_DIR` env var documented for container use.
|
|
28
|
+
|
|
29
|
+
### takeToMarket current state
|
|
30
|
+
|
|
31
|
+
- `package.json` ships as `taketomarket` `2.2.0`, single bin entry `taketomarket → install.js`, `files` array lists 9 directories, no runtime deps, `engines.node: ">=18"`. Closer to GSD shape than obra's no-npm shape.
|
|
32
|
+
- `.claude-plugin/plugin.json` is **GSD-flavored, not obra-flavored**: contains `displayName`, `category: "productivity"`, `source: "git"`, `sourceUrl`, and an explicit `skills: [...]` array hand-listing all 28 `ttm-*` skills. Three of those fields (`displayName`, `category`, `source`/`sourceUrl`) do not exist in obra's manifest.
|
|
33
|
+
- `.claude-plugin/marketplace.json` exists alongside `plugin.json` (obra puts the marketplace in a separate repo, `obra/superpowers-marketplace`).
|
|
34
|
+
- `install.js` is at repo root (759 lines), not under `bin/`. GSD puts its installer under `bin/install.js` and exposes additional bins for SDK/tools.
|
|
35
|
+
- README leads with a single npm badge, then explains 4 install options (npx, Claude marketplace pending, direct-from-GitHub, manual clone). No social proof, no Discord, no multi-language, no badge wall. Install instructions are wordier than obra's one-liners.
|
|
36
|
+
- Runtime fan-out matches obra structurally: install.js copies skills into `~/.claude/skills/`, `~/.codex/skills/`, `~/.cursor/skills/`, `~/.codeium/windsurf/skills/`, `~/.gemini/skills/`, and `~/.agents/skills/` based on the interactive prompt.
|
|
37
|
+
|
|
38
|
+
### Adopted for v2.3.0
|
|
39
|
+
|
|
40
|
+
- `[P1]` Keep npx as the primary install surface (matches GSD; obra's marketplace-only model assumes Anthropic-curated approval, which we don't yet have). (No-op — already true.)
|
|
41
|
+
- `[P1]` Plugin manifest (`.claude-plugin/plugin.json`) is already obra-shaped: `name`, `version`, `description`, `author`, `license`, `keywords` only. No `skills: [...]` hand-list in this file — runtime auto-discovers.
|
|
42
|
+
- `[P2+]` Trim `.claude-plugin/marketplace.json` to drop `displayName`, `category`, `source`, `sourceUrl`, and the hand-maintained `skills: [...]` array. These fields are not part of the obra/Anthropic plugin schema; they were aspirational marketplace fields. (P1 only updated description + repository URLs; field drop deferred.)
|
|
43
|
+
- `[P2+]` Move `install.js` to `bin/install.js` to match GSD's layout. Update `package.json` `bin` and `files` accordingly.
|
|
44
|
+
- `[P2+]` Add idempotent re-run language to README troubleshooting ("Re-run the installer — it's idempotent: `npx taketomarket`").
|
|
45
|
+
- `[P2+]` Add `CHANGELOG.md`-driven release-notes link in README.
|
|
46
|
+
- `[P1-partial]` Badge wall: P1 added a GitHub-stars badge (2 badges total). Full 4-badge target (npm version, npm downloads, GitHub stars, license) tracked for P2+.
|
|
47
|
+
- `[deferred]` Multi-language READMEs — revisit once star count + downloads warrant it.
|
|
48
|
+
|
|
49
|
+
## Axis 2: Skill Structure + Naming
|
|
50
|
+
|
|
51
|
+
### Obra pattern
|
|
52
|
+
|
|
53
|
+
- **14 flat top-level skills.** Names are verb-phrases: `brainstorming`, `writing-plans`, `writing-skills`, `executing-plans`, `test-driven-development`, `systematic-debugging`, `using-git-worktrees`, `using-superpowers`, `requesting-code-review`, `receiving-code-review`, `subagent-driven-development`, `finishing-a-development-branch`, `dispatching-parallel-agents`, `verification-before-completion`. No prefix, no namespace.
|
|
54
|
+
- **`skills/<name>/SKILL.md`** is the canonical layout. Supporting material lives in `skills/<name>/references/` (e.g. `skills/using-superpowers/references/`).
|
|
55
|
+
- **Minimal YAML frontmatter.** Every SKILL.md observed has exactly two fields: `name` and `description`. `description` is the activation contract — written as a directive ("You MUST use this before any creative work…", "Use when implementing any feature or bugfix, before writing implementation code"). No `disable-model-invocation`, no `context: fork`, no `allowed-tools`, no `argument-hint` in the obra core 14.
|
|
56
|
+
- **Cross-skill references via `superpowers:<skill-name>`.** Example from `writing-skills/SKILL.md`: `REQUIRED BACKGROUND: You MUST understand superpowers:test-driven-development before using this skill.`
|
|
57
|
+
|
|
58
|
+
### GSD pattern
|
|
59
|
+
|
|
60
|
+
- **Namespace-prefixed skills (`gsd-*`).** 50+ skills, all under a `gsd-` prefix: `gsd-new-project`, `gsd-plan-phase`, `gsd-execute-phase`, etc. Plus sub-namespaces (`gsd-ns-*`) for grouped surfaces (`gsd-ns-workflow`, `gsd-ns-review`, `gsd-ns-context`).
|
|
61
|
+
- **Profiles control which skills install.** `--profile=core` ships only the six core-loop skills; `--profile=standard` adds phase management. Profiles compose (`--profile=core,audit`). The "surface budget" concept means a user can constrain runtime surface without uninstalling.
|
|
62
|
+
- **Skills can be enabled/disabled at runtime** without reinstall via `/gsd:surface`.
|
|
63
|
+
- **Skills live in `get-shit-done/` subtree** in source repo (not `skills/`); installer mirrors them to the runtime's standard skill path (`~/.claude/skills/gsd-*/`).
|
|
64
|
+
|
|
65
|
+
### takeToMarket current state
|
|
66
|
+
|
|
67
|
+
- 28 skills, all under `ttm-` prefix — matches GSD's namespace-prefix convention.
|
|
68
|
+
- Skills live under `skills/<name>/SKILL.md` (obra layout, not GSD's `get-shit-done/` subtree).
|
|
69
|
+
- Frontmatter is **maximal**: `ttm-produce/SKILL.md` declares `name`, `description`, `argument-hint`, `disable-model-invocation: true`, `context: fork`, `allowed-tools: Read Write Bash Glob Grep Task`. SKILL.md body is one line: `Read and follow the workflow at ${CLAUDE_PLUGIN_ROOT}/workflows/lifecycle/produce.md`. The actual instructions live in `workflows/`.
|
|
70
|
+
- No profile system — all 28 skills install every time.
|
|
71
|
+
- Workflows are grouped under `workflows/{discipline,lifecycle,reference-mgmt,setup,utility}/` and referenced from thin SKILL.md shims. This is a real architectural choice (mirrors GSD's `commands/` + `agents/` split) and worth preserving.
|
|
72
|
+
|
|
73
|
+
### Adopted for v2.3.0
|
|
74
|
+
|
|
75
|
+
- `[P1]` Keep `ttm-*` prefix — matches the namespace convention users expect from GSD-influenced plugins and prevents collision with obra/other plugins. (No-op — already true.)
|
|
76
|
+
- `[P2+]` Keep the workflow-shim pattern (thin SKILL.md, body in `workflows/`). Document it as a convention in CLAUDE.md so future skills follow the pattern. (P1 did not add the convention note to CLAUDE.md.)
|
|
77
|
+
- `[P1]` Keep `disable-model-invocation: true` as the **default** for lifecycle skills (`/ttm-produce`, `/ttm-ship`, `/ttm-measure`, `/ttm-learn`). Use `disable-model-invocation: false` for advisory skills (`/ttm-positioning-check`, `/ttm-health`). (No-op — already true.)
|
|
78
|
+
- `[P1]` Keep `context: fork` for fan-out skills (`/ttm-produce`, `/ttm-verify`, `/ttm-repurpose`) — matches GSD's wave-parallel execution pattern. (No-op — already true.)
|
|
79
|
+
- `[deferred]` Profile system to v2.4. v2.3 ships all skills; we'll add `--profile=core|standard|full` once we have telemetry on which skills users actually invoke.
|
|
80
|
+
- `[P2+]` Adopt obra-style `description:` directives ("Use when X, before Y") in place of bare descriptions. Activation contract should read as an instruction to Claude, not a feature blurb. (See Axis 4.)
|
|
81
|
+
|
|
82
|
+
## Axis 3: README + npm Page Content
|
|
83
|
+
|
|
84
|
+
### Obra pattern
|
|
85
|
+
|
|
86
|
+
- **No badges.** Zero. README opens with the project name + one-paragraph pitch.
|
|
87
|
+
- **"How it works" narrative comes before install.** Two paragraphs explain the brainstorm → spec → plan → subagent loop in human language. The reader understands the value before they hit any commands.
|
|
88
|
+
- **Install section is a flat table of contents.** Quickstart line: `Give your agent Superpowers: Claude Code, Codex CLI, Codex App, Factory Droid, Gemini CLI, OpenCode, Cursor, GitHub Copilot CLI.` Each is a deep-link to a per-runtime install subsection — every subsection is a single fenced command.
|
|
89
|
+
- **"The Basic Workflow" reads as numbered prose.** Each step names the relevant skill and one sentence about when it activates. No tables.
|
|
90
|
+
- **Sponsorship + community come last.** Sponsorship link, MIT license, Discord, issues, release-announcement signup. No metrics, no "trusted by", no pull-quotes.
|
|
91
|
+
- **Philosophy section is four bullets.** "Test-Driven Development", "Systematic over ad-hoc", "Complexity reduction", "Evidence over claims". Short, ideological, memorable.
|
|
92
|
+
|
|
93
|
+
### GSD pattern
|
|
94
|
+
|
|
95
|
+
- **Badge wall on top.** 8 badges (npm version, downloads, tests, Discord, X, $GSD token, stars, license) — high visual density, signals "this project is real and active".
|
|
96
|
+
- **"Trusted by" social proof** immediately under badges. Plus three pull-quotes from real users. This frontloads credibility for first-time visitors.
|
|
97
|
+
- **Inline pricing pitch.** `npx get-shit-done-cc@latest` appears twice in the first 1 000 chars (once standalone, once with `latest`).
|
|
98
|
+
- **"Why I Built This" personal narrative** (signed `— TÂCHES`) before the technical content. Establishes author voice and target audience (solo developers).
|
|
99
|
+
- **"How It Works" is the six-command loop** with code blocks and explanation per command. Concrete, executable.
|
|
100
|
+
- **Commands table** — full command surface in a single scannable table.
|
|
101
|
+
- **Why It Works** section — three numbered problems GSD solves (context bloat, no shared memory, no verification) with the GSD answer for each.
|
|
102
|
+
- **Configuration callouts** — points to `.planning/config.json` and the docs site for advanced knobs.
|
|
103
|
+
- **Star history chart** at the bottom (`star-history.com` SVG).
|
|
104
|
+
|
|
105
|
+
### takeToMarket current state
|
|
106
|
+
|
|
107
|
+
- One badge (npm version). No social proof, no pull-quotes, no Discord, no star chart.
|
|
108
|
+
- Opens with two-paragraph "What it is / What it isn't" framing — strong and unique, worth keeping.
|
|
109
|
+
- "Requirements" → "Installation" (4 options) → "Quick Start" → "Runtime Notes" → "Campaign Lifecycle" → "Command Reference" → "Verify Installation" → "License" → "Privacy & Security" → "Contributing". Structure is clean but reads as a manual, not a pitch.
|
|
110
|
+
- Command Reference is a full 28-row table — closer to GSD style than obra's narrative.
|
|
111
|
+
- No "Why I Built This", no "Why It Works", no philosophy section.
|
|
112
|
+
|
|
113
|
+
### Adopted for v2.3.0
|
|
114
|
+
|
|
115
|
+
- `[P1]` Keep "What it is / What it isn't" framing — it's the strongest piece of positioning in the current README and aligns with takeToMarket's positioning-as-invariant ethos.
|
|
116
|
+
- `[P1-partial]` Functional badges: P1 added GitHub-stars badge (2 total). Full 4-badge target (npm version, npm downloads, GitHub stars, license) tracked for P2+. Skip Discord/X until those channels exist; skip $TOKEN equivalents permanently.
|
|
117
|
+
- `[P2+]` Add a "How It Works" narrative section between "What it is" and "Requirements" — 2-3 paragraphs explaining the 9-phase lifecycle as a story, not a table. Borrow obra's prose-first cadence.
|
|
118
|
+
- `[P2+]` Add a "Why It Works" section after Command Reference — three numbered points (positioning drift, no shared marketing memory, no verifiable outcomes) mirroring GSD's three-problem framing.
|
|
119
|
+
- `[P2+]` Add a "Philosophy" section: four bullets matching the project's core invariants (positioning as architectural invariant, every asset has a verifiable outcome, compound learnings, no asset ships without quality gate wall).
|
|
120
|
+
- `[P1]` Keep the runtime install table — it's clearer than obra's per-runtime subsections for a smaller skill set. (No-op — already true.)
|
|
121
|
+
- `[deferred]` Multi-language READMEs, pull-quotes, "trusted by", star history chart — needs real adoption first.
|
|
122
|
+
- `[P2+]` Add npm-page-aware language: the README ships verbatim to npmjs.com/package/taketomarket via `package.json`; the first 200 chars matter for SEO. Tighten the lede.
|
|
123
|
+
|
|
124
|
+
## Axis 4: Internal Skill Invocation Pattern
|
|
125
|
+
|
|
126
|
+
### Obra pattern
|
|
127
|
+
|
|
128
|
+
- **The `Skill` tool is the activation primitive.** `skills/using-superpowers/SKILL.md` literally bootstraps the entire system: it tells Claude to invoke the `Skill` tool whenever there's a 1% chance a skill applies, before any response (including clarifying questions).
|
|
129
|
+
- **Hard-gate XML tags wrap non-negotiable rules.** Examples observed:
|
|
130
|
+
- `<HARD-GATE> ... </HARD-GATE>` in `brainstorming/SKILL.md`: "Do NOT invoke any implementation skill, write any code, scaffold any project, or take any implementation action until you have presented a design and the user has approved it."
|
|
131
|
+
- `<EXTREMELY-IMPORTANT> ... </EXTREMELY-IMPORTANT>` in `using-superpowers/SKILL.md`: "If you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill."
|
|
132
|
+
- `<SUBAGENT-STOP> ... </SUBAGENT-STOP>` for subagent-aware skip logic.
|
|
133
|
+
- **Checklist + TodoWrite preamble.** Skills with multi-step processes include an explicit `## Checklist` with items like "Explore project context", "Ask clarifying questions", "Propose 2-3 approaches", "Present design". The `using-superpowers` skill instructs Claude to convert each checklist item into a TodoWrite todo before executing.
|
|
134
|
+
- **Graphviz `dot` process diagrams** embedded in SKILL.md. Skills like `brainstorming` and `using-superpowers` include `digraph { ... }` blocks showing flow + decision points. Provides Claude with a state machine to follow.
|
|
135
|
+
- **Cross-skill chaining via prose.** `brainstorming/SKILL.md` ends with: "**The terminal state is invoking writing-plans.** Do NOT invoke frontend-design, mcp-builder, or any other implementation skill. The ONLY skill you invoke after brainstorming is writing-plans." Skills explicitly name their successor.
|
|
136
|
+
- **"Red Flags" tables** that name common rationalizations Claude uses to skip the skill, and refute them inline. Example from `using-superpowers`: "This is just a simple question" → "Questions are tasks. Check for skills."
|
|
137
|
+
- **`description:` field doubles as the activation contract.** Written as a directive, not a description: `Use when implementing any feature or bugfix, before writing implementation code` (TDD), `You MUST use this before any creative work...` (brainstorming). This is what Claude pattern-matches on when auto-selecting skills.
|
|
138
|
+
- **Instruction priority is documented.** `using-superpowers/SKILL.md` declares: user CLAUDE.md/AGENTS.md/GEMINI.md instructions > superpowers skills > default system prompt. Skills explicitly defer to user instructions when they conflict.
|
|
139
|
+
|
|
140
|
+
### GSD pattern
|
|
141
|
+
|
|
142
|
+
- **Slash-command invocation is primary.** Users type `/gsd-plan-phase 1`; skills are entered explicitly, not through `Skill` tool auto-selection.
|
|
143
|
+
- **State files are the persistence preamble.** Every skill's first action is to read `.planning/PROJECT.md`, `REQUIREMENTS.md`, `ROADMAP.md`, `STATE.md`, `CONTEXT.md`. The skill instructions assume these files exist and use them as the cross-session memory.
|
|
144
|
+
- **Subagent dispatch via `Task` tool** for fan-out work (planning, execution, verification). Each subagent gets a fresh 200K context loaded with exactly what it needs.
|
|
145
|
+
- **Hooks at session boundaries.** Hooks are registered via plugin config; individual hook scripts live under `hooks/` (e.g. `gsd-session-state.sh`, `gsd-prompt-guard.js`). A `SessionStart` hook re-orients Claude to GSD conventions and injects project state on every fresh session.
|
|
146
|
+
- **No `Skill` tool reliance.** Skills are designed for explicit user invocation; auto-triggering is rare. `disable-model-invocation` is typically `true`.
|
|
147
|
+
- **Lint scripts enforce skill quality.** `scripts/lint-descriptions.cjs`, `lint-skill-deps.cjs`, `lint-command-contract.cjs` — the install pipeline rejects skills with vague descriptions or undeclared dependencies.
|
|
148
|
+
|
|
149
|
+
### takeToMarket current state
|
|
150
|
+
|
|
151
|
+
- **GSD-style invocation, obra-style state-as-preamble.** Users type `/ttm-produce`; the skill reads its workflow and the workflow's first action is to load 9 reference files plus campaign-specific state.
|
|
152
|
+
- **No hard-gate XML wrappers.** Workflows use `<purpose>`, `<required_reading>`, `<constraints>`, `<process>` tags as section delimiters, but the language inside is descriptive ("Do NOT modify `.taketomarket/POSITIONING.md` during this workflow") not gate-enforced.
|
|
153
|
+
- **No checklist preamble.** Workflows are sequential `## Step 1`, `## Step 2` headers without an upfront todo-list template.
|
|
154
|
+
- **No process digraphs.** Workflows are prose + numbered steps; no Graphviz state machines.
|
|
155
|
+
- **No cross-skill chaining declarations.** Skills don't explicitly name their successor (e.g. `/ttm-brief` doesn't say "the only skill you invoke next is `/ttm-produce`").
|
|
156
|
+
- **No Red Flags table.** No documented refutation of rationalizations Claude might use to skip a step.
|
|
157
|
+
- **`description:` is feature-blurb style**, not directive: `"Produce phase: generate content assets in fresh contexts loaded with brief, positioning, brand, ICP, and playbook. Use after a brief is approved."` Has the "Use after X" hook but doesn't lead with the activation imperative.
|
|
158
|
+
- **No `Skill` tool integration.** Skills are explicit-invocation only; advisory skills like `/ttm-positioning-check` and `/ttm-health` already set `disable-model-invocation: false` but workflows don't yet invoke other skills via the `Skill` tool.
|
|
159
|
+
|
|
160
|
+
### Adopted for v2.3.0
|
|
161
|
+
|
|
162
|
+
- `[P2+]` Add `<HARD-GATE>` / `<EXTREMELY-IMPORTANT>` XML wrappers around the **positioning invariant** in every workflow that touches assets (`produce`, `repurpose`, `review`, `fix`, `verify`, `ship`). The invariant is takeToMarket's signature constraint; gate-language enforces it more reliably than prose.
|
|
163
|
+
- `[P2+]` Rewrite `description:` fields in obra-directive style. Pattern: `Use when <trigger>, before <next step>. <Optional warning>.` Example for `/ttm-produce`: `Use when a brief is approved and assets need to be generated. Do not invoke without a passed brief — produce will fail.`
|
|
164
|
+
- `[P2+]` Add a `## Checklist` section to every multi-step workflow with explicit TodoWrite-mappable items. Mirror obra's "create a task for each of these items and complete them in order" preamble.
|
|
165
|
+
- `[P2+]` Add cross-skill chaining declarations to each lifecycle skill: name the predecessor skill that should have run, and the successor skill that should run next. Example: `/ttm-brief` ends with "**The terminal state is invoking /ttm-produce.** Do not invoke /ttm-ship or /ttm-measure until produce → verify → review have completed."
|
|
166
|
+
- `[P2+]` Add a "Red Flags" table to `/ttm-produce` and `/ttm-verify` listing the rationalizations Claude commonly uses to skip reference loading or gate checks ("These assets look fine without verify", "Positioning is obvious here", "I already loaded BRAND.md last turn").
|
|
167
|
+
- `[P2+]` Adopt obra's instruction-priority hierarchy in `CLAUDE.md`: user CLAUDE.md/AGENTS.md > takeToMarket skills > default system prompt. Add to the project's CLAUDE.md preamble.
|
|
168
|
+
- `[P2+]` Add a `SessionStart` hook (matchers: `startup|clear|compact`) that re-orients Claude to takeToMarket conventions and reads `.taketomarket/STATE.md` frontmatter. Mirrors GSD's hook pattern.
|
|
169
|
+
- `[deferred]` Graphviz digraphs and lint scripts — high-value but require maintenance investment we can stage after the core conventions land.
|
|
170
|
+
- `[P2+]` Use the `Skill` tool inside workflows for cross-skill invocation (e.g. `/ttm-fix` should invoke `/ttm-produce` and `/ttm-verify` via the `Skill` tool, not by telling the user to run them manually). This matches obra's composition pattern and reduces user friction.
|