luckiest-co 1.0.39 → 1.0.40
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 +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/package.json +1 -1
- package/skills/ad-creative/CHANGELOG.md +7 -0
- package/skills/ad-creative/SKILL.md +23 -4
- package/skills/ad-creative/references/generative-tools.md +6 -30
- package/skills/ads/CHANGELOG.md +9 -0
- package/skills/ads/SKILL.md +19 -9
- package/skills/ads/references/reading-google-ads-data.md +121 -0
- package/skills/ai-seo/CHANGELOG.md +11 -0
- package/skills/ai-seo/SKILL.md +21 -22
- package/skills/ai-seo/references/content-types.md +11 -0
- package/skills/ai-seo/references/linkedin-ai-citations.md +122 -0
- package/skills/ai-seo/references/platform-ranking-factors.md +32 -19
- package/skills/ai-seo/references/positioning-and-consensus.md +102 -0
- package/skills/coder/CHANGELOG.md +23 -0
- package/skills/coder/SKILL.md +16 -4
- package/skills/coder-brainstorming/CHANGELOG.md +9 -0
- package/skills/coder-brainstorming/SKILL.md +5 -3
- package/skills/coder-debugging/CHANGELOG.md +11 -0
- package/skills/coder-debugging/SKILL.md +15 -3
- package/skills/coder-executing-plans/CHANGELOG.md +9 -0
- package/skills/coder-executing-plans/SKILL.md +5 -3
- package/skills/coder-finishing-a-branch/CHANGELOG.md +9 -0
- package/skills/coder-finishing-a-branch/SKILL.md +7 -3
- package/skills/coder-guard/CHANGELOG.md +7 -0
- package/skills/coder-guard/SKILL.md +6 -6
- package/skills/coder-receiving-code-review/CHANGELOG.md +9 -0
- package/skills/coder-receiving-code-review/SKILL.md +5 -3
- package/skills/coder-shipping/CHANGELOG.md +9 -0
- package/skills/coder-shipping/SKILL.md +4 -4
- package/skills/coder-subagent-driven-development/CHANGELOG.md +9 -0
- package/skills/coder-subagent-driven-development/SKILL.md +5 -3
- package/skills/coder-writing-plans/CHANGELOG.md +9 -0
- package/skills/coder-writing-plans/SKILL.md +5 -3
- package/skills/cold-email/CHANGELOG.md +7 -0
- package/skills/cold-email/SKILL.md +15 -8
- package/skills/cold-email/references/follow-up-sequences.md +4 -4
- package/skills/cold-email/references/frameworks.md +5 -5
- package/skills/cold-email/references/personalization.md +10 -10
- package/skills/competitor-profiling/CHANGELOG.md +8 -0
- package/skills/competitor-profiling/SKILL.md +34 -9
- package/skills/competitor-profiling/references/tool-reference.md +141 -5
- package/skills/competitors/CHANGELOG.md +8 -0
- package/skills/competitors/SKILL.md +32 -5
- package/skills/competitors/references/content-architecture.md +6 -0
- package/skills/competitors/references/templates.md +3 -0
- package/skills/copy-editing/CHANGELOG.md +10 -0
- package/skills/copy-editing/SKILL.md +41 -9
- package/skills/copy-editing/references/checklist.md +11 -0
- package/skills/copywriting/CHANGELOG.md +11 -0
- package/skills/copywriting/SKILL.md +32 -4
- package/skills/copywriting/references/copy-frameworks.md +2 -3
- package/skills/copywriting/references/natural-transitions.md +4 -20
- package/skills/customer-research/CHANGELOG.md +8 -0
- package/skills/customer-research/SKILL.md +6 -3
- package/skills/directory-submissions/CHANGELOG.md +9 -0
- package/skills/directory-submissions/SKILL.md +21 -10
- package/skills/emails/CHANGELOG.md +8 -0
- package/skills/emails/SKILL.md +22 -3
- package/skills/emails/references/sequence-templates.md +3 -3
- package/skills/image/CHANGELOG.md +8 -0
- package/skills/image/SKILL.md +4 -4
- package/skills/image/references/ai-image-prompting.md +1 -1
- package/skills/marketing-plan/CHANGELOG.md +8 -0
- package/skills/marketing-plan/SKILL.md +8 -4
- package/skills/marketing-plan/references/market-sizing.md +166 -0
- package/skills/marketing-plan/references/methodology.md +2 -0
- package/skills/model-router/CHANGELOG.md +9 -0
- package/skills/model-router/SKILL.md +3 -3
- package/skills/model-router/references/weave-routing-notes.md +1 -0
- package/skills/model-router/scripts/route.py +3 -1
- package/skills/prospecting/CHANGELOG.md +7 -0
- package/skills/prospecting/SKILL.md +3 -3
- package/skills/prospecting/references/saas-prospecting.md +1 -1
- package/skills/public-relations/CHANGELOG.md +10 -0
- package/skills/public-relations/SKILL.md +16 -4
- package/skills/public-relations/references/crisis-communications.md +111 -0
- package/skills/public-relations/references/newsjacking.md +2 -0
- package/skills/public-relations/references/statement-templates.md +143 -0
- package/skills/sales-enablement/CHANGELOG.md +8 -0
- package/skills/sales-enablement/SKILL.md +72 -4
- package/skills/sales-enablement/references/win-loss-analysis.md +72 -0
- package/skills/skill-audit/ATTRIBUTION.md +5 -0
- package/skills/skill-audit/CHANGELOG.md +19 -0
- package/skills/skill-audit/SKILL.md +121 -0
- package/skills/skill-audit-security/ATTRIBUTION.md +14 -0
- package/skills/skill-audit-security/CHANGELOG.md +14 -0
- package/skills/skill-audit-security/LICENSE-APACHE-2.0 +190 -0
- package/skills/skill-audit-security/SKILL.md +99 -0
- package/skills/skill-audit-security/references/rule-ids.md +28 -0
- package/skills/skill-audit-security/references/source-review.md +58 -0
- package/skills/sms/CHANGELOG.md +8 -0
- package/skills/sms/SKILL.md +18 -4
- package/skills/sms/references/whatsapp.md +258 -0
- package/skills/social/CHANGELOG.md +11 -0
- package/skills/social/SKILL.md +31 -7
- package/skills/social/references/listening.md +2 -0
- package/skills/social/references/platforms.md +15 -9
- package/skills/social/references/post-templates.md +9 -9
- package/skills/social/references/short-form-video.md +5 -5
- package/skills/social/references/x-algorithm.md +69 -0
- package/skills/trends/CHANGELOG.md +3 -0
- package/skills/trends/SKILL.md +14 -4
- package/skills/video/CHANGELOG.md +8 -0
- package/skills/video/SKILL.md +11 -25
- package/skills/video-studio/CHANGELOG.md +16 -0
- package/skills/video-studio/SKILL.md +86 -22
- package/skills/video-studio/references/interview.md +75 -0
- package/skills/video-studio/references/step-2-plan.md +25 -1
- package/skills/video-studio/references/storyboard.md +3 -1
- package/skills/video-studio/scripts/pyproject.toml +4 -2
- package/skills/video-studio/scripts/render-scenes.mjs +1 -0
- package/skills/video-studio/scripts/storyboard.schema.json +3 -1
- package/skills/video-studio/scripts/uv.lock +8 -5
- package/skills/video-studio-director/CHANGELOG.md +7 -0
- package/skills/video-studio-director/SKILL.md +19 -6
- package/skills/video-studio-review/CHANGELOG.md +11 -0
- package/skills/video-studio-review/SKILL.md +31 -5
- package/skills/video-studio-review/editor/index.html +21 -3
- package/skills/video-studio-review/references/apply-feedback.md +19 -0
- package/skills/video-studio-review/scripts/build-reel.mjs +35 -10
- package/skills/video-studio-review/scripts/build-reel.test.mjs +15 -0
- package/skills/video-studio-script/CHANGELOG.md +5 -0
- package/skills/video-studio-script/SKILL.md +16 -7
- package/skills/video-studio-showreel/CHANGELOG.md +21 -0
- package/skills/video-studio-showreel/SKILL.md +231 -0
- package/skills/video-studio-showreel/references/motion-design-pack-notes.md +28 -0
- package/skills/video-studio-showreel/references/zingage-breakdown.md +47 -0
- package/skills/video-studio-showreel/scripts/build.py +10 -0
- package/skills/video-studio-showreel/templates/showreel.html +264 -0
- package/skills/video-watcher/CHANGELOG.md +6 -0
- package/skills/video-watcher/SKILL.md +3 -3
- package/skills/video-watcher/scripts/setup.py +9 -7
- package/skills/trends/agents/openai.yaml +0 -8
- package/skills/trends/scripts/build-skill.sh +0 -39
- package/skills/trends/scripts/compare.sh +0 -61
- package/skills/trends/scripts/evaluate_search_quality.py +0 -573
- package/skills/trends/scripts/test-v1-vs-v2.sh +0 -220
- package/skills/trends/scripts/test_device_auth.py +0 -128
- package/skills/trends/scripts/verify_v3.py +0 -195
|
@@ -7,6 +7,7 @@ Quick reference for the Firecrawl and DataForSEO MCP tools used in competitor pr
|
|
|
7
7
|
- DataForSEO Tools (SEO & market data)
|
|
8
8
|
- Recommended Execution Order
|
|
9
9
|
- Error Handling
|
|
10
|
+
- Alternative Stack (WebFetch + another SEO data source)
|
|
10
11
|
|
|
11
12
|
---
|
|
12
13
|
|
|
@@ -24,6 +25,11 @@ Quick reference for the Firecrawl and DataForSEO MCP tools used in competitor pr
|
|
|
24
25
|
**Key output**: Page content in markdown format — headlines, body text, structured data.
|
|
25
26
|
**Tip**: Scrape homepage first — it reveals positioning, audience, and social proof in one shot.
|
|
26
27
|
|
|
28
|
+
**Structured data (JSON mode)**
|
|
29
|
+
**Purpose**: Extract structured data from a page using a schema — request the `json` format on the scrape call.
|
|
30
|
+
**When to use**: When you need specific data points in a consistent format (e.g., pricing tier details, feature lists).
|
|
31
|
+
**Tip**: Define a clear schema for what you want extracted — more reliable than parsing raw markdown.
|
|
32
|
+
|
|
27
33
|
### firecrawl_search
|
|
28
34
|
**Purpose**: Search the web for specific content about a competitor.
|
|
29
35
|
**When to use**: Finding review pages, press coverage, or competitor mentions not on their own site.
|
|
@@ -37,11 +43,6 @@ Quick reference for the Firecrawl and DataForSEO MCP tools used in competitor pr
|
|
|
37
43
|
**When to use**: Deep profiles where you want to analyze many pages (e.g., all feature pages, all blog posts). More expensive — use selectively.
|
|
38
44
|
**Tip**: Set page limits to avoid crawling entire sites. Target specific URL patterns.
|
|
39
45
|
|
|
40
|
-
### firecrawl_extract
|
|
41
|
-
**Purpose**: Extract structured data from a page using a schema.
|
|
42
|
-
**When to use**: When you need specific data points in a consistent format (e.g., pricing tier details, feature lists).
|
|
43
|
-
**Tip**: Define a clear schema for what you want extracted — more reliable than parsing raw markdown.
|
|
44
|
-
|
|
45
46
|
---
|
|
46
47
|
|
|
47
48
|
## DataForSEO MCP Tools
|
|
@@ -177,3 +178,138 @@ Quick reference for the Firecrawl and DataForSEO MCP tools used in competitor pr
|
|
|
177
178
|
| DataForSEO returns no data for domain | Domain may be too new or too small — note "insufficient data" in profile |
|
|
178
179
|
| Rate limits hit | Space out requests; prioritize highest-value data first |
|
|
179
180
|
| Review page scraping blocked | Use `firecrawl_search` to find cached or alternative review sources |
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Alternative Stack: Another SEO Data Source + WebFetch
|
|
185
|
+
|
|
186
|
+
If Firecrawl or DataForSEO are not available, use whichever SEO data source is connected (Ahrefs or Semrush MCP, Ubersuggest MCP, or similar) for SEO and market data, and **WebFetch** for page scraping. The tool mapping below uses Ubersuggest MCP as the worked example; the same fields map onto the others. Coverage is slightly less comprehensive — no site mapping, no structured extraction, no technology detection — but sufficient for quick scans and most competitive profiling needs.
|
|
187
|
+
|
|
188
|
+
### When to use each stack
|
|
189
|
+
|
|
190
|
+
| Capability | Primary (preferred) | Alternative |
|
|
191
|
+
|---|---|---|
|
|
192
|
+
| Page scraping | Firecrawl MCP | WebFetch (built into Claude Code) |
|
|
193
|
+
| Site URL discovery | `firecrawl_map` | Manually probe common paths |
|
|
194
|
+
| SEO metrics | DataForSEO MCP | Ubersuggest MCP |
|
|
195
|
+
| Backlink data | DataForSEO backlinks tools | Ubersuggest `backlinks_overview` + `linking_domains` |
|
|
196
|
+
| Technology detection | `domain_analytics_technologies_domain_technologies` | Not available in alternative stack |
|
|
197
|
+
| Review mining | `firecrawl_search` → G2/Capterra | WebFetch G2/Capterra URLs directly |
|
|
198
|
+
|
|
199
|
+
Check which MCPs are available at the start of each session and select the stack accordingly. If both are available, prefer the primary stack.
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
### WebFetch (alternative to Firecrawl)
|
|
204
|
+
|
|
205
|
+
**Purpose**: Fetch and read any public web page as text.
|
|
206
|
+
**Built into**: Claude Code — no MCP required.
|
|
207
|
+
**Limitation vs. Firecrawl**: No site mapping (URL discovery); no structured extraction; may not render JavaScript-heavy pages well.
|
|
208
|
+
|
|
209
|
+
Since WebFetch does not map a site's URLs, probe common paths manually for each competitor:
|
|
210
|
+
|
|
211
|
+
| Page type | Paths to try |
|
|
212
|
+
|---|---|
|
|
213
|
+
| Homepage | `https://[domain]/` |
|
|
214
|
+
| Pricing | `/pricing`, `/plans`, `/packages`, `/pricing-plans` |
|
|
215
|
+
| About | `/about`, `/about-us`, `/company`, `/team` |
|
|
216
|
+
| Features / Product | `/features`, `/product`, `/platform`, `/solutions` |
|
|
217
|
+
| Customers | `/customers`, `/case-studies`, `/clients`, `/success-stories` |
|
|
218
|
+
| Integrations | `/integrations`, `/apps`, `/connect` |
|
|
219
|
+
| Blog | `/blog`, `/resources`, `/insights` |
|
|
220
|
+
|
|
221
|
+
Fetch the homepage first. Its nav links often reveal the actual paths for pricing, features, and about pages — use those instead of guessing.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
### Ubersuggest MCP Tools (alternative to DataForSEO)
|
|
226
|
+
|
|
227
|
+
Mapping from DataForSEO equivalents:
|
|
228
|
+
|
|
229
|
+
#### domain_overview
|
|
230
|
+
**DataForSEO equivalent**: `dataforseo_labs_google_domain_rank_overview`
|
|
231
|
+
**Purpose**: Domain-level organic traffic estimate, keyword count, domain score, and backlink summary in one call.
|
|
232
|
+
**Input**: `root_domain` (e.g. `competitor.com`), `country` (default: `us`)
|
|
233
|
+
**Key metrics**: `domain_score`, `organic_monthly_traffic`, `organic_keywords`, `paid_keywords`
|
|
234
|
+
|
|
235
|
+
#### backlinks_overview
|
|
236
|
+
**DataForSEO equivalent**: `backlinks_summary`
|
|
237
|
+
**Purpose**: Domain authority, total backlinks, referring domains count.
|
|
238
|
+
**Input**: `root_domain`
|
|
239
|
+
**Key metrics**: `domain_authority`, `total_backlinks`, `referring_domains`
|
|
240
|
+
|
|
241
|
+
#### linking_domains
|
|
242
|
+
**DataForSEO equivalent**: `backlinks_referring_domains`
|
|
243
|
+
**Purpose**: List of top domains linking to the target — shows where link equity comes from.
|
|
244
|
+
**Input**: `root_domain`
|
|
245
|
+
|
|
246
|
+
#### domain_keywords
|
|
247
|
+
**DataForSEO equivalent**: `dataforseo_labs_google_ranked_keywords`
|
|
248
|
+
**Purpose**: Keywords the domain ranks for, with position and estimated search volume.
|
|
249
|
+
**Input**: `root_domain`, `country`
|
|
250
|
+
**Tip**: Sort by traffic to find their highest-value keywords.
|
|
251
|
+
|
|
252
|
+
#### domain_top_pages
|
|
253
|
+
**DataForSEO equivalent**: `dataforseo_labs_google_relevant_pages`
|
|
254
|
+
**Purpose**: Pages driving the most organic traffic — reveals content strategy.
|
|
255
|
+
**Input**: `root_domain`, `country`
|
|
256
|
+
|
|
257
|
+
#### competitors (Ubersuggest)
|
|
258
|
+
**DataForSEO equivalent**: `dataforseo_labs_google_competitors_domain`
|
|
259
|
+
**Purpose**: Find organic competitors by keyword overlap — may surface rivals the user hasn't considered.
|
|
260
|
+
**Input**: `root_domain`, `country`
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
### Recommended Execution Order (Ubersuggest + WebFetch)
|
|
265
|
+
|
|
266
|
+
#### Quick Scan (per competitor)
|
|
267
|
+
|
|
268
|
+
```
|
|
269
|
+
1. WebFetch competitor homepage → extract nav links to find real page paths
|
|
270
|
+
2. In parallel:
|
|
271
|
+
a. WebFetch pricing page (from nav or probe /pricing)
|
|
272
|
+
b. domain_overview → traffic + keyword count + domain score
|
|
273
|
+
c. backlinks_overview → domain authority
|
|
274
|
+
3. Synthesize into abbreviated profile
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
#### Deep Profile (per competitor)
|
|
278
|
+
|
|
279
|
+
```
|
|
280
|
+
1. WebFetch homepage → extract nav links
|
|
281
|
+
2. In parallel (scraping):
|
|
282
|
+
a. WebFetch pricing page
|
|
283
|
+
b. WebFetch features/product page
|
|
284
|
+
c. WebFetch about page
|
|
285
|
+
d. WebFetch customers/case studies page
|
|
286
|
+
e. WebFetch blog index (content strategy signals)
|
|
287
|
+
3. In parallel (SEO data):
|
|
288
|
+
a. domain_overview
|
|
289
|
+
b. backlinks_overview
|
|
290
|
+
c. domain_keywords
|
|
291
|
+
d. domain_top_pages
|
|
292
|
+
e. linking_domains
|
|
293
|
+
f. competitors
|
|
294
|
+
4. Synthesize into full profile
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
#### Multi-Competitor (3+ competitors, alternative stack)
|
|
298
|
+
|
|
299
|
+
```
|
|
300
|
+
1. WebFetch all homepages in parallel
|
|
301
|
+
2. WebFetch pricing pages in parallel (use paths from homepage navs)
|
|
302
|
+
3. Pull domain_overview for all in parallel
|
|
303
|
+
4. Pull backlinks_overview for all in parallel
|
|
304
|
+
5. Build profiles in sequence; build summary last
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Error Handling (alternative stack)
|
|
308
|
+
|
|
309
|
+
| Issue | Action |
|
|
310
|
+
|---|---|
|
|
311
|
+
| WebFetch returns empty or an error page | Try `https://www.[domain]/` variant; note if site is JS-rendered and flag in profile |
|
|
312
|
+
| Pricing page not found at common paths | Check homepage nav HTML for pricing link before giving up |
|
|
313
|
+
| Dynamic content shows as "0" or blank | JavaScript-rendered counters (headcount, client counts, live stats) return placeholder values via WebFetch — note the gap and flag as "JS-rendered, value unconfirmed" in the profile. Use Firecrawl browser mode if the value is critical. |
|
|
314
|
+
| Ubersuggest returns no data for domain | Domain may be too new or too small — note "insufficient data" in profile |
|
|
315
|
+
| Ubersuggest tool not available | Check MCP connection; fall back to WebFetch of competitor's SEO/press pages for qualitative signals only |
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog — luckiest-competitors
|
|
2
2
|
|
|
3
|
+
## 1.2.0 — 2026-10-08
|
|
4
|
+
Upstream sync with coreyhaines31/marketingskills dda3841 (issue #112).
|
|
5
|
+
|
|
6
|
+
- Added 'Never guess the competitor' rule and an Evidence Discipline principle (dated facts, not observed vs absent, no motives).
|
|
7
|
+
- Added a Competitive Asset Audit procedure and Asset Audit Report output; new description triggers; battle cards pointed to sales-enablement.
|
|
8
|
+
- content-architecture.md: added last_verified and sources provenance fields; templates.md: added a 'Not listed ... (as of)' row and the Not available caveat.
|
|
9
|
+
- Skipped: evals.
|
|
10
|
+
|
|
3
11
|
## 1.1.0 — 2026-07-06
|
|
4
12
|
Skill updater pass: analytics integration.
|
|
5
13
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: competitors
|
|
3
|
-
description: "Creates competitor comparison and alternative pages for SEO, AI answer engines, and sales enablement. Use when the user mentions 'alternative page,' 'vs page,' 'competitor comparison,' 'comparison page,' '[Product] vs [Product],' '[Product] alternative,' 'best alternative to X,' 'competitive landing pages,' 'how do we compare to X,' '
|
|
3
|
+
description: "Creates competitor comparison and alternative pages for SEO, AI answer engines, and sales enablement. Use when the user mentions 'alternative page,' 'vs page,' 'competitor comparison,' 'comparison page,' '[Product] vs [Product],' '[Product] alternative,' 'best alternative to X,' 'competitive landing pages,' 'how do we compare to X,' 'competitor teardown,' 'audit our competitor pages,' 'are our comparison pages out of date,' or 'competitive asset audit.' Handles content that positions a product against competitors across four formats: singular alternative, plural alternatives, you vs competitor, and competitor vs competitor. For auditing existing competitor claims (not researching competitors from scratch, which is luckiest-competitor-profiling, and not technical SEO on these pages, which is luckiest-seo-audit), use the asset audit here. For internal battle cards and sales-specific competitor docs, see luckiest-sales-enablement."
|
|
4
4
|
license: See ATTRIBUTION.md
|
|
5
5
|
metadata:
|
|
6
|
-
version: "1.
|
|
6
|
+
version: "1.2.0"
|
|
7
7
|
listing_id: luckiest-competitors
|
|
8
8
|
author: luckiest
|
|
9
9
|
---
|
|
@@ -14,15 +14,17 @@ This skill builds competitor comparison and alternative pages that rank for comp
|
|
|
14
14
|
|
|
15
15
|
## Staying current
|
|
16
16
|
|
|
17
|
-
On activation, call the Luckiest MCP check_updates tool with { listingId: "60fdbf13-4d85-49b9-9579-0776d6da0e7e", installedSemver: "1.
|
|
17
|
+
On activation, call the Luckiest MCP check_updates tool with { listingId: "60fdbf13-4d85-49b9-9579-0776d6da0e7e", installedSemver: "1.2.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
|
|
18
18
|
|
|
19
|
-
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-competitors", skill_version: "1.
|
|
19
|
+
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-competitors", skill_version: "1.2.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
|
|
20
20
|
|
|
21
21
|
## Initial Assessment
|
|
22
22
|
|
|
23
23
|
**Check for product marketing context first:**
|
|
24
24
|
If `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
|
|
25
25
|
|
|
26
|
+
**Never guess the competitor.** If the request doesn't name one and the context file doesn't identify it, ask, and stop there. Don't draft a polished page around the most likely candidate.
|
|
27
|
+
|
|
26
28
|
Before creating competitor pages, understand:
|
|
27
29
|
|
|
28
30
|
1. **The Product** — core value proposition, key differentiators, ideal customer profile, pricing model, strengths and honest weaknesses.
|
|
@@ -50,6 +52,14 @@ Before creating competitor pages, understand:
|
|
|
50
52
|
### 5. Modular Content Architecture
|
|
51
53
|
- Centralize competitor data so updates propagate to all pages. Maintain a single source of truth per competitor.
|
|
52
54
|
|
|
55
|
+
### 6. Evidence Discipline
|
|
56
|
+
Comparison pages are public claims about another company. Every one should survive the competitor's own team reading it.
|
|
57
|
+
- **"Not observed" is not "doesn't have."** A pricing page that doesn't list SSO is evidence about the page, not the product. Write "not listed on their pricing page (as of Mar 2026)" or drop the row. Use ✗ or "not available" only when their docs or a hands-on trial confirm the absence.
|
|
58
|
+
- **Date competitor facts.** Pricing and features change. Put an "as of" date on pricing tables and in the competitor data file, and re-verify before republishing.
|
|
59
|
+
- **One look is a snapshot.** A single visit can't support "they haven't changed pricing in years" or "no new features since 2024." That needs dated history (changelog, archived pages).
|
|
60
|
+
- **State what changed, not why.** "They moved SSO to the Enterprise tier" is a fact. "Because they're squeezing upmarket" is a guess. Leave motive out unless they've said it publicly.
|
|
61
|
+
- **Separate fact from interpretation.** Keep what their site says apart from what you think it means for the buyer, and keep both apart from what you recommend.
|
|
62
|
+
|
|
53
63
|
---
|
|
54
64
|
|
|
55
65
|
## Page Formats
|
|
@@ -123,6 +133,22 @@ For each competitor, gather:
|
|
|
123
133
|
|
|
124
134
|
**Ongoing updates**: quarterly verify pricing and check major feature changes; refresh when a customer flags a competitor change; do a full annual refresh. Show a "Last updated" date on each page — a stale comparison page erodes trust and can be a legal liability.
|
|
125
135
|
|
|
136
|
+
### Competitive Asset Audit
|
|
137
|
+
|
|
138
|
+
When asked to check existing competitive content for stale or risky claims, audit every asset that makes claims about competitors: vs and alternative pages, battle cards, talk tracks, objection docs, and comparison tables in decks.
|
|
139
|
+
|
|
140
|
+
1. **List each claim** about a competitor, with the asset and line it lives in.
|
|
141
|
+
2. **Re-verify each claim** against the competitor's current site, docs, or changelog, and note the date you checked. If you can't browse, mark claims unchecked and list what to verify. Never mark one Current without a check date.
|
|
142
|
+
3. **Mark each one**:
|
|
143
|
+
- **Current**: still true, source and date updated
|
|
144
|
+
- **Changed**: now wrong, with what it says now
|
|
145
|
+
- **Unverifiable**: had a source once, but nothing current confirms or rules it out. Soften to "not listed (as of date)" or remove
|
|
146
|
+
- **Overclaimed**: stated as fact with no source behind it (an unconfirmed ✗, a guessed motive, a "why we win" with no evidence). Rewrite to what the evidence supports or remove
|
|
147
|
+
4. **Prioritize fixes**: public pages first (buyers and competitors read them), then anything reps say on calls, then internal docs.
|
|
148
|
+
5. **Report**: assets audited, claims checked, counts by status, and a fix list with replacement wording.
|
|
149
|
+
|
|
150
|
+
Apply the Evidence Discipline rules above to every claim, including those in internal sales assets. Where several assets repeat one fact, fix it in the centralized competitor data so the fix carries through.
|
|
151
|
+
|
|
126
152
|
---
|
|
127
153
|
|
|
128
154
|
## SEO Considerations
|
|
@@ -144,6 +170,7 @@ For each competitor, gather:
|
|
|
144
170
|
- **Competitor Data File**: complete competitor profile in YAML for reuse across pages.
|
|
145
171
|
- **Page Content**: per page — URL, meta tags, full page copy by section, comparison tables, CTAs.
|
|
146
172
|
- **Page Set Plan**: recommended pages in priority order based on search volume.
|
|
173
|
+
- **Asset Audit Report**: claims checked per asset, status counts (current / changed / unverifiable / overclaimed), and a prioritized fix list with replacement wording.
|
|
147
174
|
|
|
148
175
|
---
|
|
149
176
|
|
|
@@ -168,4 +195,4 @@ After producing a competitor data file or comparison page set, offer once: "Want
|
|
|
168
195
|
- **luckiest-copywriting**: writing compelling comparison copy
|
|
169
196
|
- **luckiest-seo-audit**: optimizing competitor pages
|
|
170
197
|
- **luckiest-schema**: FAQ and comparison schema
|
|
171
|
-
- **luckiest-sales-enablement**: internal sales collateral, decks, and objection docs
|
|
198
|
+
- **luckiest-sales-enablement**: battle cards and internal sales collateral, decks, and objection docs
|
|
@@ -40,6 +40,12 @@ primary_use_case: "docs + light databases"
|
|
|
40
40
|
target_audience: "teams wanting flexible workspace"
|
|
41
41
|
market_position: "premium, feature-rich"
|
|
42
42
|
|
|
43
|
+
# Provenance (re-verify before republishing)
|
|
44
|
+
last_verified: 2026-03-14
|
|
45
|
+
sources:
|
|
46
|
+
pricing: notion.so/pricing
|
|
47
|
+
features: notion.so/help + hands-on trial
|
|
48
|
+
|
|
43
49
|
# Pricing
|
|
44
50
|
pricing_model: per-seat
|
|
45
51
|
free_tier: true
|
|
@@ -205,6 +205,9 @@ Do this:
|
|
|
205
205
|
|---------|-----|-----------|
|
|
206
206
|
| Feature A | Full support with [detail] | Basic support, [limitation] |
|
|
207
207
|
| Feature B | [Specific capability] | Not available |
|
|
208
|
+
| Feature C | [Specific capability] | Not listed on pricing page (as of [Mon YYYY]) |
|
|
209
|
+
|
|
210
|
+
Only write "Not available" when the competitor's docs or a trial confirm it. If the evidence is just that their site doesn't mention it, say that.
|
|
208
211
|
|
|
209
212
|
### Organize by Category
|
|
210
213
|
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog — luckiest-copy-editing
|
|
2
2
|
|
|
3
|
+
## 1.2.0 — 2026-10-08
|
|
4
|
+
Upstream sync with coreyhaines31/marketingskills dda3841 (issue #112).
|
|
5
|
+
|
|
6
|
+
- Added an AI-Tell Check section (pattern table, caps, fix-from-facts rule, leave-alone list) after the quick-pass checks, a "Reads as AI-Written" problem entry, and AI-tell trigger phrases in the description
|
|
7
|
+
- Replaced the Innovative/Robust/Seamless/Cutting-edge synonym swaps with a "Replace with the fact" table
|
|
8
|
+
- Added an AI Tells block to references/checklist.md
|
|
9
|
+
- Pointed to luckiest-copywriting-humanize for the full pattern pass instead of a new reference file
|
|
10
|
+
- Skipped: intro prose and wording tweaks.
|
|
11
|
+
|
|
12
|
+
|
|
3
13
|
## 1.1.0 — 2026-07-06
|
|
4
14
|
Skill updater pass: analytics integration.
|
|
5
15
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: copy-editing
|
|
3
|
-
description: "When the user wants to edit, review, or improve existing marketing copy, or refresh outdated content. Also use when the user mentions 'edit this copy,' 'review my copy,' 'copy feedback,' 'proofread,' 'polish this,' 'make this better,' 'copy sweep,' 'tighten this up,' 'this reads awkwardly,' 'clean up this text,' 'too wordy,' 'sharpen the messaging,' 'refresh this content,' 'update this page,' 'this content is outdated,' or 'content audit.' Use this when the user already has copy and wants it improved or refreshed rather than rewritten from scratch. For writing new copy, see luckiest-copywriting."
|
|
3
|
+
description: "When the user wants to edit, review, or improve existing marketing copy, or refresh outdated content. Also use when the user mentions 'edit this copy,' 'review my copy,' 'copy feedback,' 'proofread,' 'polish this,' 'make this better,' 'copy sweep,' 'tighten this up,' 'this reads awkwardly,' 'clean up this text,' 'too wordy,' 'sharpen the messaging,' 'refresh this content,' 'update this page,' 'this content is outdated,' or 'content audit,' 'this sounds like AI,' 'AI slop,' 'de-slop this,' or 'make it sound human.' Use this when the user already has copy and wants it improved or refreshed rather than rewritten from scratch. For writing new copy, see luckiest-copywriting."
|
|
4
4
|
license: See ATTRIBUTION.md
|
|
5
5
|
metadata:
|
|
6
|
-
version: "1.
|
|
6
|
+
version: "1.2.0"
|
|
7
7
|
listing_id: luckiest-copy-editing
|
|
8
8
|
author: luckiest
|
|
9
9
|
---
|
|
@@ -14,9 +14,9 @@ This skill acts as an expert copy editor specializing in marketing and conversio
|
|
|
14
14
|
|
|
15
15
|
## Staying current
|
|
16
16
|
|
|
17
|
-
On activation, call the Luckiest MCP check_updates tool with { listingId: "8f895dc3-9d85-4b40-9c80-2b1d396bc579", installedSemver: "1.
|
|
17
|
+
On activation, call the Luckiest MCP check_updates tool with { listingId: "8f895dc3-9d85-4b40-9c80-2b1d396bc579", installedSemver: "1.2.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
|
|
18
18
|
|
|
19
|
-
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-copy-editing", skill_version: "1.
|
|
19
|
+
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-copy-editing", skill_version: "1.2.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
|
|
20
20
|
|
|
21
21
|
## Core Philosophy
|
|
22
22
|
|
|
@@ -356,10 +356,14 @@ Use these for faster reviews when a full seven-sweep process isn't needed.
|
|
|
356
356
|
| Implement | Set up |
|
|
357
357
|
| Leverage | Use |
|
|
358
358
|
| Facilitate | Help |
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
|
359
|
+
|
|
360
|
+
**Replace with the fact** (a synonym swap just makes a new tell):
|
|
361
|
+
|
|
362
|
+
| Vague | Write the fact instead |
|
|
363
|
+
|-------|------------------------|
|
|
364
|
+
| Innovative / cutting-edge | What it does that alternatives don't |
|
|
365
|
+
| Robust | The uptime, scale, or failure case it handles |
|
|
366
|
+
| Seamless | The real setup step count or time |
|
|
363
367
|
|
|
364
368
|
**Watch for:**
|
|
365
369
|
- Adverbs (usually unnecessary)
|
|
@@ -382,6 +386,30 @@ Use these for faster reviews when a full seven-sweep process isn't needed.
|
|
|
382
386
|
- Logical flow between paragraphs
|
|
383
387
|
- White space for scannability
|
|
384
388
|
|
|
389
|
+
### AI-Tell Check
|
|
390
|
+
|
|
391
|
+
Run this on every edit, after the sweeps. A reader who spots an AI tell tends to doubt the claims around it. The shape of a sentence gives it away more than any word does.
|
|
392
|
+
|
|
393
|
+
**Fix every instance of these:**
|
|
394
|
+
|
|
395
|
+
| Pattern | Example | Fix |
|
|
396
|
+
|---------|---------|-----|
|
|
397
|
+
| Contrast reveal | "It's not X, it's Y." "Not because X. Because Y." | State Y directly, with the reason |
|
|
398
|
+
| Negation list | "No setup call, no templates, no waiting on IT." | Say what does happen; keep one absence if it matters ("No card required") |
|
|
399
|
+
| Trailing pile-on | "...the data you already have, no exports, no spreadsheets." / "..., ensuring nothing slips." | End the sentence at the claim; give the benefit its own sentence |
|
|
400
|
+
| Self-answered question | "The result? 3x faster." | Delete the question, keep the answer |
|
|
401
|
+
| Colon reveal | "The best part: it learns." | Write a normal sentence |
|
|
402
|
+
| Stock phrases | "In today's fast-paced world," "Whether you're X or Y," "Here's the thing," "Say goodbye to," "X, reimagined," "Unlock the power of" | Cut, then open with the reader's problem or the fact |
|
|
403
|
+
| Em dashes in short copy | Headlines, subheads, CTAs, ads, social posts, subject lines (1-2 per page max in long copy) | Period, comma, or colon |
|
|
404
|
+
|
|
405
|
+
**Cap these:** one fragment and one list of three per section (a hero, a page section, or one short post). Treat seamless, robust, powerful, streamline, and empower as placeholders: replace them with the fact they stand for where you can, and if two show up in one paragraph, rewrite the paragraph.
|
|
406
|
+
|
|
407
|
+
**How to fix:** go back to the facts (the mechanism, number, customer, or step) and rewrite from those. Swapping in synonyms creates new tells. If the fact isn't available, mark `[NEED: ...]` instead of inventing one. Keep the brand's register. A formal sentence that makes a specific claim is fine.
|
|
408
|
+
|
|
409
|
+
**Leave these alone:** FAQ questions, a single "No card required" by the CTA, a list of three when there really are three features, and a clause after a comma that adds a new fact ("Imports run nightly, keeping your existing IDs").
|
|
410
|
+
|
|
411
|
+
For a full pattern-by-pattern pass, use **luckiest-copywriting-humanize**.
|
|
412
|
+
|
|
385
413
|
---
|
|
386
414
|
|
|
387
415
|
## Copy Editing Checklist
|
|
@@ -420,6 +448,10 @@ For a final QA pass before delivering edits, work through the full checklist in
|
|
|
420
448
|
**Symptom:** Copy tries to speak to everyone, resonates with no one
|
|
421
449
|
**Fix:** Pick one audience and write directly to them
|
|
422
450
|
|
|
451
|
+
### Problem: Reads as AI-Written
|
|
452
|
+
**Symptom:** "Not X. Y." reveals, "no X, no Y, no Z" lists, long sentences trailing extra clauses, stock openers
|
|
453
|
+
**Fix:** Run the AI-Tell Check above and rewrite those sentences from the underlying facts
|
|
454
|
+
|
|
423
455
|
### Problem: Feature Overload
|
|
424
456
|
**Symptom:** Listing every capability, overwhelming the reader
|
|
425
457
|
**Fix:** Focus on 3-5 key benefits that matter most to the audience
|
|
@@ -444,7 +476,7 @@ This iterative process ensures each edit doesn't create new problems while respe
|
|
|
444
476
|
|
|
445
477
|
- [Plain English Alternatives](references/plain-english-alternatives.md): Replace complex words with simpler alternatives
|
|
446
478
|
- [Content Refresh](references/content-refresh.md): Full checklist, refresh vs. rewrite matrix, and cadence guide
|
|
447
|
-
- [Copy Editing Checklist](references/checklist.md): Full QA checklist across all seven sweeps
|
|
479
|
+
- [Copy Editing Checklist](references/checklist.md): Full QA checklist across all seven sweeps plus the AI-tell check
|
|
448
480
|
|
|
449
481
|
---
|
|
450
482
|
|
|
@@ -58,6 +58,17 @@ Use this checklist alongside the Seven Sweeps Framework (see SKILL.md) as a fina
|
|
|
58
58
|
- [ ] Next steps are crystal clear
|
|
59
59
|
- [ ] Risk reversals stated (guarantee, trial, etc.)
|
|
60
60
|
|
|
61
|
+
## AI Tells
|
|
62
|
+
|
|
63
|
+
- [ ] No "it's not X, it's Y" or "not because X, because Y" reveals
|
|
64
|
+
- [ ] No "no X, no Y, no Z" negation lists
|
|
65
|
+
- [ ] No sentences that trail restating comma clauses after the main claim (a clause adding a new fact is fine)
|
|
66
|
+
- [ ] No self-answered questions or colon reveals (FAQ questions and a reader's own question are fine)
|
|
67
|
+
- [ ] No stock openers or phrases ("In today's...", "Whether you're...", "Say goodbye to...")
|
|
68
|
+
- [ ] No em dashes in headlines, subheads, CTAs, ads, social posts, or subject lines; 1-2 per page max in long copy
|
|
69
|
+
- [ ] At most one fragment and one list of three per section (CTA microcopy and real three-feature lists don't count)
|
|
70
|
+
- [ ] Every vague adjective replaced with the fact it stood for
|
|
71
|
+
|
|
61
72
|
## Final Checks
|
|
62
73
|
|
|
63
74
|
- [ ] No typos or grammatical errors
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog — luckiest-copywriting
|
|
2
2
|
|
|
3
|
+
## 1.2.0 — 2026-10-08
|
|
4
|
+
Upstream sync with coreyhaines31/marketingskills dda3841 (issue #112).
|
|
5
|
+
|
|
6
|
+
- Added a No AI Tells section (never-write list, keep-rare list, pre-delivery check) and an "Any AI tells?" quality-check bullet
|
|
7
|
+
- Reworded the rhetorical-questions guidance and flagged self-labelling questions as a tell
|
|
8
|
+
- copy-frameworks.md: added a starting-points note under Headline Formulas and removed the "Everything you need to {outcome}" formula
|
|
9
|
+
- natural-transitions.md: removed self-answered-question and throat-clearing transitions, tightened the moreover/furthermore and question-based notes
|
|
10
|
+
- Did not add upstream references/ai-tells.md: luckiest-copywriting-humanize already covers negative parallelism, rule of three, em dashes and AI vocabulary, so the skill points to it instead
|
|
11
|
+
- Skipped: em dash punctuation rewrites and the "Option A" format change.
|
|
12
|
+
|
|
13
|
+
|
|
3
14
|
## 1.1.0 — 2026-07-06
|
|
4
15
|
Skill updater pass: analytics integration.
|
|
5
16
|
|
|
@@ -3,7 +3,7 @@ name: copywriting
|
|
|
3
3
|
description: "Writes, rewrites, and improves conversion marketing copy for any page — homepage, landing pages, pricing pages, feature pages, about pages, or product pages. Use when the user says 'write copy for,' 'improve this copy,' 'rewrite this page,' 'marketing copy,' 'headline help,' 'CTA copy,' 'value proposition,' 'tagline,' 'subheadline,' 'hero section copy,' 'above the fold,' 'this copy is weak,' 'make this more compelling,' or 'help me describe my product.' Use whenever someone is working on website text that needs to persuade or convert. For email copy, see luckiest-emails. For popup copy, see luckiest-popups. For editing existing copy, see luckiest-copy-editing. For the offer underneath the copy (bonuses, guarantees, value framing), see luckiest-offers."
|
|
4
4
|
license: See ATTRIBUTION.md
|
|
5
5
|
metadata:
|
|
6
|
-
version: "1.
|
|
6
|
+
version: "1.2.0"
|
|
7
7
|
listing_id: luckiest-copywriting
|
|
8
8
|
author: luckiest
|
|
9
9
|
---
|
|
@@ -14,9 +14,9 @@ This skill drives an expert conversion copywriter. The goal is to write marketin
|
|
|
14
14
|
|
|
15
15
|
## Staying current
|
|
16
16
|
|
|
17
|
-
On activation, call the Luckiest MCP check_updates tool with { listingId: "56b1b8dd-a19e-4056-89c1-c476aefcf08b", installedSemver: "1.
|
|
17
|
+
On activation, call the Luckiest MCP check_updates tool with { listingId: "56b1b8dd-a19e-4056-89c1-c476aefcf08b", installedSemver: "1.2.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
|
|
18
18
|
|
|
19
|
-
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-copywriting", skill_version: "1.
|
|
19
|
+
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-copywriting", skill_version: "1.2.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
|
|
20
20
|
|
|
21
21
|
## Before Writing
|
|
22
22
|
|
|
@@ -97,6 +97,7 @@ Each section should advance one argument. Build a logical flow down the page.
|
|
|
97
97
|
|
|
98
98
|
### Quick Quality Check
|
|
99
99
|
|
|
100
|
+
- Any AI tells? (see No AI Tells below)
|
|
100
101
|
- Jargon that could confuse outsiders?
|
|
101
102
|
- Sentences trying to do too much?
|
|
102
103
|
- Passive voice constructions?
|
|
@@ -119,6 +120,31 @@ Persuasive-but-false copy is worse than honest copy with gaps.
|
|
|
119
120
|
|
|
120
121
|
---
|
|
121
122
|
|
|
123
|
+
## No AI Tells
|
|
124
|
+
|
|
125
|
+
Clients and buyers reject copy that reads as AI-written, and a reader who spots a tell tends to doubt the claims around it. Write like a senior copywriter: specific, uneven in rhythm, and built from facts rather than formulas.
|
|
126
|
+
|
|
127
|
+
### Never write these
|
|
128
|
+
|
|
129
|
+
1. **Contrast reveals.** "It's not X, it's Y." "Not because X. Because Y." "Not just X, but Y." State Y directly, with the reason.
|
|
130
|
+
2. **Negation lists.** "No setup call, no templates, no waiting on IT. No contract." Say what does happen. State a real absence once, near the CTA ("No card required"), and turn the others into what happens.
|
|
131
|
+
3. **Trailing pile-ons.** A full claim followed by a comma and more clauses: "...the data you already have, no exports, no spreadsheets, no second copy." End the sentence at the claim.
|
|
132
|
+
4. **Self-answered questions and colon reveals.** "The result? 3x faster." "The best part: it learns." Just say it. FAQ questions and a reader's own question ("Need to share a screenshot?") are fine.
|
|
133
|
+
5. **Stock openers and phrases.** "In today's fast-paced world," "Whether you're X or Y," "Here's the thing," "Say goodbye to," "X, reimagined," "Unlock the power of," "Take it to the next level."
|
|
134
|
+
6. **Em dashes in short copy.** Headlines, subheads, ads, social posts, and subject lines use none.
|
|
135
|
+
|
|
136
|
+
### Keep these rare
|
|
137
|
+
|
|
138
|
+
- At most one fragment and one list of three per section (a hero, a page section, or one short post). CTA microcopy and a real three-feature list are fine.
|
|
139
|
+
- Words like seamless, robust, powerful, unlock, and streamline: replace them with the fact they stand in for.
|
|
140
|
+
- Swap test: if a line would work unchanged on a competitor's site, rewrite it. If you lack the differentiator to fix it, flag `[NEED: differentiator]`.
|
|
141
|
+
|
|
142
|
+
### Check before delivering
|
|
143
|
+
|
|
144
|
+
Before handing over any draft, search for the banned patterns, read every sentence over 20 words, and read it aloud. Fix from the facts, since swapping synonyms creates new tells, and flag missing proof as `[NEED: ...]` rather than inventing it. For a full pattern-by-pattern pass, use **luckiest-copywriting-humanize**.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
122
148
|
## Best Practices
|
|
123
149
|
|
|
124
150
|
### Be Direct
|
|
@@ -129,10 +155,12 @@ Get to the point. Don't bury the value in qualifications.
|
|
|
129
155
|
✅ Need to share a screenshot? Send as many documents, images, and audio files as your heart desires.
|
|
130
156
|
|
|
131
157
|
### Use Rhetorical Questions
|
|
132
|
-
|
|
158
|
+
A question that names the reader's pain can open a section well.
|
|
133
159
|
- "Hate returning stuff to Amazon?"
|
|
134
160
|
- "Tired of chasing approvals?"
|
|
135
161
|
|
|
162
|
+
A question in the reader's voice followed by what to do is fine (see Be Direct). A question that labels your own claim ("The result? 3x faster.") is an AI tell.
|
|
163
|
+
|
|
136
164
|
### Use Analogies When Helpful
|
|
137
165
|
Analogies make abstract concepts concrete and memorable.
|
|
138
166
|
|
|
@@ -10,6 +10,8 @@ Headline formulas, page section types, and structural templates.
|
|
|
10
10
|
|
|
11
11
|
## Headline Formulas
|
|
12
12
|
|
|
13
|
+
These are starting points. Fill every slot with specifics, and check the result against the No AI Tells section in SKILL.md (or run luckiest-copywriting-humanize): a "without" or "Never X again" headline is fine once, but don't follow it with a negation list.
|
|
14
|
+
|
|
13
15
|
### Outcome-Focused
|
|
14
16
|
|
|
15
17
|
**{Achieve desirable outcome} without {pain point}**
|
|
@@ -92,9 +94,6 @@ Headline formulas, page section types, and structural templates.
|
|
|
92
94
|
**What if you could {desirable outcome}?**
|
|
93
95
|
> What if you could close deals 30% faster?
|
|
94
96
|
|
|
95
|
-
**Everything you need to {outcome}**
|
|
96
|
-
> Everything you need to launch your course
|
|
97
|
-
|
|
98
97
|
**The {adjective} {category} built for {audience}**
|
|
99
98
|
> The lightweight CRM built for startups
|
|
100
99
|
|
|
@@ -28,21 +28,19 @@ Adapted from: University of Manchester Academic Phrasebank (2023), Plain English
|
|
|
28
28
|
|
|
29
29
|
## Previewing Content Structure
|
|
30
30
|
|
|
31
|
-
Use to orient readers
|
|
31
|
+
Use in long guides to orient readers. On marketing pages, start with the content instead.
|
|
32
32
|
|
|
33
33
|
- Here's what we'll cover...
|
|
34
34
|
- This guide walks you through...
|
|
35
35
|
- Below, you'll find...
|
|
36
36
|
- We'll start with X, then move to Y...
|
|
37
37
|
- First, let's look at...
|
|
38
|
-
- Let's break this down step by step.
|
|
39
38
|
- The sections below explain...
|
|
40
39
|
|
|
41
40
|
---
|
|
42
41
|
|
|
43
42
|
## Introducing a New Topic
|
|
44
43
|
|
|
45
|
-
- When it comes to X,...
|
|
46
44
|
- Regarding X,...
|
|
47
45
|
- Speaking of X,...
|
|
48
46
|
- Now let's talk about X.
|
|
@@ -86,7 +84,7 @@ Use to connect ideas and reinforce key points:
|
|
|
86
84
|
- In addition,...
|
|
87
85
|
- There's also...
|
|
88
86
|
|
|
89
|
-
**Note:**
|
|
87
|
+
**Note:** Avoid "moreover" and "furthermore" in marketing copy. They read as AI-generated.
|
|
90
88
|
|
|
91
89
|
---
|
|
92
90
|
|
|
@@ -122,8 +120,6 @@ Use to connect ideas and reinforce key points:
|
|
|
122
120
|
- That's why...
|
|
123
121
|
- Because of this,...
|
|
124
122
|
- This leads to...
|
|
125
|
-
- The outcome?...
|
|
126
|
-
- Here's what happens:...
|
|
127
123
|
|
|
128
124
|
---
|
|
129
125
|
|
|
@@ -146,10 +142,7 @@ Use to connect ideas and reinforce key points:
|
|
|
146
142
|
- Here's the key takeaway:...
|
|
147
143
|
- The important thing is...
|
|
148
144
|
- What matters most is...
|
|
149
|
-
- Don't miss this:...
|
|
150
145
|
- Pay attention to...
|
|
151
|
-
- This is critical:...
|
|
152
|
-
- The bottom line?...
|
|
153
146
|
|
|
154
147
|
---
|
|
155
148
|
|
|
@@ -181,11 +174,7 @@ Use when citing sources, data, or expert opinions:
|
|
|
181
174
|
## Summarising Sections
|
|
182
175
|
|
|
183
176
|
- To recap,...
|
|
184
|
-
- Here's the short version:...
|
|
185
177
|
- In short,...
|
|
186
|
-
- The takeaway?...
|
|
187
|
-
- So what does this mean?...
|
|
188
|
-
- Let's pull this together:...
|
|
189
178
|
- Quick summary:...
|
|
190
179
|
|
|
191
180
|
---
|
|
@@ -206,15 +195,11 @@ Use when citing sources, data, or expert opinions:
|
|
|
206
195
|
|
|
207
196
|
## Question-Based Transitions
|
|
208
197
|
|
|
209
|
-
Useful for conversational tone and featured snippet optimization
|
|
198
|
+
Useful in long-form content for conversational tone and featured snippet optimization. Use them as headings or questions the reader would really ask, then answer with substance. Don't use them as a setup for your own punchline, and keep them out of landing-page copy.
|
|
210
199
|
|
|
211
200
|
- So what does this mean for you?
|
|
212
|
-
- But why does this matter?
|
|
213
201
|
- How do you actually do this?
|
|
214
|
-
- What's the catch?
|
|
215
|
-
- Sound complicated? It's not.
|
|
216
202
|
- Wondering where to start?
|
|
217
|
-
- Still not sure? Here's the breakdown.
|
|
218
203
|
|
|
219
204
|
---
|
|
220
205
|
|
|
@@ -242,7 +227,6 @@ For claims that need qualification or aren't absolute:
|
|
|
242
227
|
- it appears that
|
|
243
228
|
- evidence suggests
|
|
244
229
|
- this can help
|
|
245
|
-
- many experts believe
|
|
246
230
|
|
|
247
231
|
---
|
|
248
232
|
|
|
@@ -269,4 +253,4 @@ These phrases are overused in AI-generated content:
|
|
|
269
253
|
- "This begs the question..."
|
|
270
254
|
- "Let's delve into..."
|
|
271
255
|
|
|
272
|
-
See the
|
|
256
|
+
See the No AI Tells section in SKILL.md for structural patterns like contrast reveals and negation lists, and luckiest-copywriting-humanize for a full pattern catalog.
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog — luckiest-customer-research
|
|
2
2
|
|
|
3
|
+
## 1.2.0 — 2026-10-08
|
|
4
|
+
Upstream sync with coreyhaines31/marketingskills dda3841 (issue #112).
|
|
5
|
+
|
|
6
|
+
- Added the untrusted-data guard for fetched reviews, posts and community threads
|
|
7
|
+
- Added a related-skills row pointing to luckiest-marketing-plan references/market-sizing.md
|
|
8
|
+
- Skipped: version bump and SparkToro link change.
|
|
9
|
+
|
|
10
|
+
|
|
3
11
|
## 1.1.0 — 2026-07-06
|
|
4
12
|
Skill updater pass: analytics integration.
|
|
5
13
|
|