Merge pull request #75 from coreyhaines31/feature/skill-writing-audit
Audit skill bodies: replace rigid imperatives with reasoning
This commit is contained in:
commit
68f5eaf64e
16 changed files with 19 additions and 19 deletions
|
|
@ -180,7 +180,7 @@ We'll know this is true when [metrics].
|
|||
- Check segment quality
|
||||
- Document external factors
|
||||
|
||||
**DON'T:**
|
||||
**Avoid:**
|
||||
- Peek at results and stop early
|
||||
- Make changes to variants
|
||||
- Add traffic from new sources
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ Pull performance data → Identify winning patterns → Generate new variations
|
|||
|
||||
## Platform Specs
|
||||
|
||||
**Always enforce these limits.** Never deliver creative that exceeds platform character limits.
|
||||
Platforms reject or truncate creative that exceeds these limits, so verify every piece of copy fits before delivering.
|
||||
|
||||
### Google Ads (Responsive Search Ads)
|
||||
|
||||
|
|
@ -320,7 +320,7 @@ For large-scale creative production (Anthropic's growth team generates 100+ vari
|
|||
- **Writing headlines that only work together** — RSA headlines get combined randomly
|
||||
- **Ignoring character limits** — Platforms truncate without warning
|
||||
- **All variations sound the same** — Vary angles, not just word choice
|
||||
- **No CTA headlines** — Always include action-oriented headlines
|
||||
- **No CTA headlines** — RSAs need action-oriented headlines to drive clicks; include at least 2-3
|
||||
- **Generic descriptions** — "Learn more about our solution" wastes the slot
|
||||
- **Iterating without data** — Gut feelings are less reliable than metrics
|
||||
- **Testing too many things at once** — Change one variable per test cycle
|
||||
|
|
|
|||
|
|
@ -353,7 +353,7 @@ Monthly manual check:
|
|||
- **Ignoring AI search entirely** — ~45% of Google searches now show AI Overviews, and ChatGPT/Perplexity are growing fast
|
||||
- **Treating AI SEO as separate from SEO** — Good traditional SEO is the foundation; AI SEO adds structure and authority on top
|
||||
- **Writing for AI, not humans** — If content reads like it was written to game an algorithm, it won't get cited or convert
|
||||
- **No freshness signals** — Undated content loses to dated content. Always show when content was last updated
|
||||
- **No freshness signals** — Undated content loses to dated content because AI systems weight recency heavily. Show when content was last updated
|
||||
- **Gating all content** — AI can't access gated content. Keep your most authoritative content open
|
||||
- **Ignoring third-party presence** — You may get more AI citations from a Wikipedia mention than from your own blog
|
||||
- **No structured data** — Schema markup gives AI systems structured context about your content
|
||||
|
|
|
|||
|
|
@ -375,7 +375,7 @@ Test one variable at a time:
|
|||
- **Guilt-trip copy** — "Are you sure you want to abandon us?" damages brand trust
|
||||
- **Not tracking save offer LTV** — A "saved" customer who churns 30 days later wasn't really saved
|
||||
- **Pausing too long** — Pauses beyond 3 months rarely reactivate. Set limits.
|
||||
- **No post-cancel path** — Always make reactivation easy and trigger win-back emails
|
||||
- **No post-cancel path** — Make reactivation easy and trigger win-back emails, because some churned users will want to come back
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ See [subject-lines.md](references/subject-lines.md) for the full data.
|
|||
|
||||
## Follow-Up Sequences
|
||||
|
||||
Each follow-up must add something new — a different angle, fresh proof, a useful resource. Never "just checking in."
|
||||
Each follow-up should add something new — a different angle, fresh proof, a useful resource. "Just checking in" gives the reader no reason to respond.
|
||||
|
||||
- 3-5 total emails, increasing gaps between them
|
||||
- Each email should stand alone (they may not have read the previous ones)
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ Each section should advance one argument. Build a logical flow down the page.
|
|||
3. **Active over passive** — "We generate reports" not "Reports are generated"
|
||||
4. **Confident over qualified** — Remove "almost," "very," "really"
|
||||
5. **Show over tell** — Describe the outcome instead of using adverbs
|
||||
6. **Honest over sensational** — Never fabricate statistics or testimonials
|
||||
6. **Honest over sensational** — Fabricated statistics or testimonials erode trust and create legal liability
|
||||
|
||||
### Quick Quality Check
|
||||
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ For each field, ask:
|
|||
4. Logical grouping if many fields
|
||||
|
||||
### Labels and Placeholders
|
||||
- Labels: Always visible (not just placeholder)
|
||||
- Labels: Keep visible (not just placeholder) — placeholders disappear when typing, leaving users unsure what they're filling in
|
||||
- Placeholders: Examples, not labels
|
||||
- Help text: Only when genuinely helpful
|
||||
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ LI_LeadGen_CMOs-SaaS_Whitepaper_Mar24
|
|||
|
||||
- **Lookalikes**: Base on best customers (by LTV), not all customers
|
||||
- **Retargeting**: Segment by funnel stage (visitors vs. cart abandoners)
|
||||
- **Exclusions**: Always exclude existing customers and recent converters
|
||||
- **Exclusions**: Exclude existing customers and recent converters — showing ads to people who already bought wastes spend
|
||||
|
||||
**For detailed targeting strategies by platform**: See [references/audience-targeting.md](references/audience-targeting.md)
|
||||
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ Before providing recommendations, understand:
|
|||
- Leave space to close (visible X, click outside)
|
||||
|
||||
### Close Button
|
||||
- Always visible (top right is convention)
|
||||
- Keep visible (top right is convention) — users who can't find the close button will bounce entirely
|
||||
- Large enough to tap on mobile
|
||||
- "No thanks" text link as alternative
|
||||
- Click outside to close
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ For each section:
|
|||
3. Confirm accuracy
|
||||
4. Move to the next
|
||||
|
||||
**Important:** Push for verbatim customer language. Exact phrases are more valuable than polished descriptions.
|
||||
Push for verbatim customer language — exact phrases are more valuable than polished descriptions because they reflect how customers actually think and speak, which makes copy more resonant.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ Hierarchy of data defensibility:
|
|||
5. Public (anyone can use—weakest)
|
||||
|
||||
### 3. Clean URL Structure
|
||||
**Always use subfolders, not subdomains**:
|
||||
**Use subfolders, not subdomains** — subfolders consolidate domain authority while subdomains split it:
|
||||
- Good: `yoursite.com/templates/resume/`
|
||||
- Bad: `templates.yoursite.com/resume/`
|
||||
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ Define response times and document them:
|
|||
### Routing Rules Essentials
|
||||
|
||||
- Route to the **most specific match** first, then fall back to general
|
||||
- Always include a **fallback owner** — no lead should go unassigned
|
||||
- Include a **fallback owner** — unassigned leads go cold fast and waste pipeline
|
||||
- Round-robin should account for **rep capacity and availability** (PTO, quota attainment)
|
||||
- Log every routing decision for audit and optimization
|
||||
|
||||
|
|
|
|||
|
|
@ -205,7 +205,7 @@ For each objection, document:
|
|||
|
||||
### Key Principles
|
||||
|
||||
- **Never demo without discovery.** If you don't know their pain, you're guessing which features matter.
|
||||
- **Demo after discovery, not before.** If you don't know their pain, you're guessing which features matter.
|
||||
- **Customize to their use case.** Use their terminology, their data (if possible), their workflow.
|
||||
- **Leave time for questions.** A demo where the prospect doesn't talk is a demo that doesn't close.
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ Before auditing, understand:
|
|||
|
||||
## Audit Framework
|
||||
|
||||
### ⚠️ Important: Schema Markup Detection Limitation
|
||||
### Schema Markup Detection Limitation
|
||||
|
||||
**`web_fetch` and `curl` cannot reliably detect structured data / schema markup.**
|
||||
|
||||
|
|
@ -46,7 +46,7 @@ Many CMS plugins (AIOSEO, Yoast, RankMath) inject JSON-LD via client-side JavaSc
|
|||
2. **Google Rich Results Test** — https://search.google.com/test/rich-results
|
||||
3. **Screaming Frog export** — if the client provides one, use it (SF renders JavaScript)
|
||||
|
||||
**Never report "no schema found" based solely on `web_fetch` or `curl`.** This has led to false audit findings in production.
|
||||
Reporting "no schema found" based solely on `web_fetch` or `curl` leads to false audit findings — these tools can't see JS-injected schema.
|
||||
|
||||
### Priority Order
|
||||
1. **Crawlability & Indexation** (can Google find and index it?)
|
||||
|
|
@ -382,7 +382,7 @@ Same format as above
|
|||
- Mobile-Friendly Test
|
||||
- Schema Validator
|
||||
|
||||
> **Note on schema detection:** `web_fetch` strips `<script>` tags (including JSON-LD) and cannot detect JS-injected schema. Always use the browser tool, Rich Results Test, or Screaming Frog for schema checks. See the warning at the top of the Audit Framework section.
|
||||
> **Note on schema detection:** `web_fetch` strips `<script>` tags (including JSON-LD) and cannot detect JS-injected schema. Use the browser tool, Rich Results Test, or Screaming Frog instead — they render JavaScript and capture dynamically-injected markup. See the Schema Markup Detection Limitation section above.
|
||||
|
||||
**Paid Tools** (if available)
|
||||
- Screaming Frog
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ Every field reduces conversion. For each field, ask:
|
|||
|
||||
### Microcopy
|
||||
- Placeholder text: Use for examples, not labels
|
||||
- Labels: Always visible (not just placeholders)
|
||||
- Labels: Keep visible (not just placeholders) — placeholders disappear when typing, leaving users unsure what they're filling in
|
||||
- Help text: Only when needed, placed close to field
|
||||
|
||||
---
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@ Breadcrumbs should mirror the URL hierarchy. Every breadcrumb segment should be
|
|||
|
||||
- **Dates in blog URLs** — `/blog/2024/01/15/post-title` adds no value and makes URLs long. Use `/blog/post-title`.
|
||||
- **Over-nesting** — `/products/category/subcategory/item/detail` is too deep. Flatten where possible.
|
||||
- **Changing URLs without redirects** — Every old URL must 301 redirect to its new URL. No exceptions.
|
||||
- **Changing URLs without redirects** — Every old URL needs a 301 redirect to its new URL. Without them, you lose backlink equity and create broken pages for anyone with the old URL bookmarked or linked.
|
||||
- **IDs in URLs** — `/product/12345` is not human-readable. Use slugs.
|
||||
- **Query parameters for content** — `/blog?id=123` should be `/blog/post-title`.
|
||||
- **Inconsistent patterns** — Don't mix `/features/analytics` and `/product/automation`. Pick one parent.
|
||||
|
|
|
|||
Loading…
Reference in a new issue