Generates 10 scroll-stopping X/Twitter thread hooks in SkyyRose brand voice — tagged by collection register, scored, and ready to A/B test for maximum click-through.
Scanned 9/11/2026
Install to Claude Code
npx -y skills add SkyyRoseLLC/DevSkyy --skill skyyrose-social-thread-hook-writer --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Skyyrose Social Thread Hook Writer?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/skyyrosellc-skyyrose-social-thread-hook-writer)More formats (shields.io, HTML) on the badges page.
---
name: skyyrose-social-thread-hook-writer
description: "Generates 10 scroll-stopping X/Twitter thread hooks in SkyyRose brand voice — tagged by collection register, scored, and ready to A/B test for maximum click-through."
allowed-tools: Read Write Edit Glob
---
# SkyyRose Social — Thread Hook Writer
## When to Use This Skill
- Generating multiple hook variants before writing a full thread (pair with `skyyrose-social-twitter-thread`)
- A/B testing first-tweet performance across different psychological triggers
- Finding the sharpest opening for a collection drop, founder story, or culture take
- Writing scroll-stopping hooks for threads across X/Twitter (and adapting to Threads app)
- Unlocking a new content angle when existing thread topics feel stale
**DO NOT** use this for writing full threads (use `skyyrose-social-twitter-thread`), for full-post captions (use `skyyrose-social-instagram-carousel`), or for video hooks (use `skyyrose-social-tiktok-script`). This skill produces ONLY the opening hook — the first 1-3 lines that earn the read.
---
## Brand Canon (non-negotiable)
- **Every hook must be assignable to exactly one collection register OR to the general brand.** A hook tagged "Black Rose" must carry armor/defiance energy. A hook tagged "Love Hurts" must carry the bloodline/raw-romance register. A hook tagged "Signature" must carry "stay golden / the standard" energy. A hook tagged "Brand" is collection-agnostic. Never blend registers within one hook.
- **Oakland-direct voice.** No hedging, no enthusiasm-performance ("So excited to share!"), no corporate distance. Earned. Specific. Unhurried.
- **Name, not SKU.** If a hook references a product, it's "BLACK Rose Crewneck" not "br-001".
- **No hype-merchant tone.** No "🔥🔥 BIG DROP 🔥🔥", no countdown language in the hook itself.
- **Under 280 characters.** The hook IS the first tweet. No exceptions.
- **The Five only** for any aesthetic or cultural reference: Kith, Oaklandish, Culture Kings, Fear of God, Palm Angels. Never European luxury house names.
Full canon: `../skyyrose-content-engine/brand-guardrails.md`
---
## Phase 1: Brief
### Required Inputs
| Input | What to Ask | Default |
|-------|-------------|---------|
| **Topic** | "What is the thread about? Be specific." | No default — must be provided |
| **Collection / register** | "Which collection, or general brand?" | Brand (collection-agnostic) |
| **Thread type** | "Brand story, collection launch, hot take, founder journey, culture commentary, or how-we-made-it?" | Brand story |
| **Key insight or result** | "What is the most surprising, specific, or emotionally resonant element?" | No default — must be provided |
| **Platform** | "X/Twitter or Threads?" | X/Twitter |
| **Number of hooks** | "How many variants? (10 recommended for meaningful A/B testing)" | 10 |
**GATE: Confirm topic, collection register, and key insight before generating hooks. If the register is ambiguous, ask which collection — a Black Rose hook and a Love Hurts hook on the same topic are completely different outputs.**
---
## Phase 2: No Outline Needed
Move directly to generation. Hook writing is generative, not structural.
---
## Phase 3: Write
### Hook Formula Set (SkyyRose-adapted)
Generate one hook per formula. For each: include the text, the formula label, the collection register tag, and a platform-fit note.
```
## Hook Variations
### Formula 1: The Identity Statement [Register: __]
"[A statement of what SkyyRose / the collection IS — identity, not feature]"
SkyyRose example: "Black Rose isn't a product. It's an answer."
Use when: The thread is about brand story or collection deep-dive.
### Formula 2: The Founder Result [Register: Brand or specific]
"[Corey did X / built X with specific, real constraints. Here's what I learned:]"
SkyyRose example: "I built a luxury streetwear brand out of Oakland with no investors, no VC, no hype machine. Here's what that actually looks like:"
Use when: Thread is founder journey or behind-the-business.
### Formula 3: The Contrarian Take [Register: Brand]
"Luxury doesn't come from [expected source]. [It comes from here] Thread:"
SkyyRose example: "Luxury doesn't come from Europe. It never did. Oakland proved it first."
Use when: Culture commentary or fashion-industry hot take.
### Formula 4: The Specific Detail [Register: collection-specific]
"[Exact construction detail or design decision]. Here's why we didn't cut it:"
SkyyRose example: "The embroidery on the BLACK Rose Crewneck took four rounds to get right. A thread on why that mattered:"
Use when: Product deep-dive or "how we made it" thread.
### Formula 5: The Community Call [Register: Brand / Oakland]
"[Oakland / The Town / Bay Area] doesn't get enough credit for [specific thing]. Let me fix that:"
SkyyRose example: "Oakland doesn't get enough credit for what it's building in fashion. Thread:"
Use when: Culture/community thread or Oakland-pride angle.
### Formula 6: The Before / After [Register: Founder / Brand]
"[Time] ago I was [specific state]. Today [specific different state]. Here's the turning point:"
SkyyRose example: "Two years ago SkyyRose was an idea in a notebook. Today it's a collection. Here's the gap between those two sentences:"
Use when: Founder journey or brand origin story.
### Formula 7: The Curiosity Gap [Register: any]
"[Something surprising is true about this collection / brand / product]. Most people don't know it:"
SkyyRose example: "There's a reason every Black Rose piece hits differently at night. It's not the color. Thread:"
Use when: Thread teases a non-obvious insight or design philosophy.
### Formula 8: The Direct Address [Register: collection-specific or Brand]
"If you're [specific person who identifies with the collection], this thread is for you:"
SkyyRose example: "If you grew up in The Town and never saw your aesthetic at retail, this thread is for you:"
Use when: Community-identity thread or drop announcement for a specific audience.
### Formula 9: The Question Hook [Register: any]
"Why do [the people who built / wear / made X] always [specific behavior]?"
SkyyRose example: "Why do the most respected brands in streetwear never explain themselves?"
Use when: Culture/philosophy thread or "the standard" content.
### Formula 10: The Garment Truth [Register: collection-specific]
"[Product name]. [One sentence that is the emotional truth of this garment]. A thread:"
SkyyRose example: "The Love Hurts Bomber. Built for everything the streets charged you to learn. A thread:"
Use when: Single-product drop narrative thread.
```
### Collection Register Tag (mandatory for every hook)
Every hook output must be tagged with one of:
| Tag | When to use |
|-----|-------------|
| `[Black Rose]` | Armor, defiance, "you already stood up," twilight elegance |
| `[Love Hurts]` | Bloodline, raw romance, crimson heat, street passion |
| `[Signature]` | "Stay golden," the standard, West Coast elevation |
| `[Kids Capsule]` | Little royalty, heritage passed down |
| `[Brand]` | General SkyyRose — not collection-specific |
| `[Oakland/Town]` | Bay Area community and culture hooks |
A hook tagged `[Black Rose]` CANNOT contain "bloodline that raised me" (Love Hurts). A hook tagged `[Signature]` CANNOT contain "armor" language (Black Rose). If a draft hook would fit more than one tag, it is not specific enough — rewrite.
### Scoring Each Hook
Rate every hook on:
| Criteria | What It Measures | Score (1-5) |
|----------|-----------------|-------------|
| **Stop power** | Would this pause a scrolling thumb mid-feed? | |
| **Curiosity gap** | Does it create an itch that only the thread can scratch? | |
| **Specificity** | Does it include a concrete detail, number, product name, or place? | |
| **Brand register** | Is it unmistakably SkyyRose / Oakland — not any other brand? | |
| **Platform fit** | Under 280 chars, sounds like a tweet, not a LinkedIn post? | |
Maximum score: 25. Flag any hook under 15 for rewrite before presenting.
---
## Phase 4: Polish
### Top 3 Recommendations
Present the 3 highest-scoring hooks with reasoning:
```
## Top 3 Hooks
1. "[Hook text]" — Register: [tag] — Score: [X/25]
Why it works: [1-2 sentences on the psychological trigger and why it fits SkyyRose]
A/B test against: Hook #N (different trigger, same topic)
2. "[Hook text]" — Register: [tag] — Score: [X/25]
Why it works: [1-2 sentences]
3. "[Hook text]" — Register: [tag] — Score: [X/25]
Why it works: [1-2 sentences]
```
### A/B Test Suggestion
Always recommend testing 2 hooks that use different psychological triggers on the same topic:
- One **identity/community** hook (stops the right audience)
- One **specific-detail** hook (stops the curious audience)
These two triggers reach different reader motivations and produce meaningfully different data.
### Hook Checklist
```
- [ ] Under 280 characters
- [ ] Collection register clearly assigned — no cross-attribution
- [ ] Contains a specific detail, name, number, or place (not generic)
- [ ] Does not give away the full thread answer (earns the read)
- [ ] Sounds natural spoken aloud — not like a brand announcement
- [ ] No hype-merchant language (🔥, "BIG DROP", countdown)
- [ ] No European luxury name-drops
- [ ] Matches the actual thread content (no misleading hooks)
- [ ] Score ≥ 15/25 before presenting
```
---
## Implementation
```python
from agents.social_media_agent import SocialMediaAgent
agent = SocialMediaAgent()
# Pull the brand-voice seed for a BLACK Rose Crewneck thread
post = agent.generate_post("br-001", "twitter", "product_launch")
print(post.caption) # X-native brand voice — the tone your hooks must match
print(post.hashtags) # collection-aware hashtag set
# The hook variants (text + formula + register tag + score) and the top-three
# recommendation are what THIS skill generates from that voice seed.
```
```bash
# Smoke-test the social venture pipeline for BLACK Rose:
python -m skyyrose.elite_studio.ventures.social smoke --sku br-001
```
**Hook scoring sheet config (tracking spreadsheet row):**
```json
{
"sku": "br-001",
"product_name": "BLACK Rose Crewneck",
"collection": "black-rose",
"thread_type": "product_launch",
"hook_variants_generated": 10,
"selected_hook": "Formula 4 — Specific Detail",
"hook_text": "The embroidery on the BLACK Rose Crewneck took four rounds to get right. A thread on why that mattered:",
"register_tag": "Black Rose",
"stop_power": 4,
"curiosity_gap": 5,
"specificity": 5,
"brand_register": 5,
"platform_fit": 5,
"total_score": 24,
"ab_test_against": "Formula 1 — Identity Statement",
"posted_utc": null,
"impressions": null,
"profile_clicks": null,
"thread_engagements": null
}
```
---
## Example: 10 Hooks for "BLACK Rose Crewneck Drop Thread"
**Topic:** BLACK Rose Crewneck product launch thread
**Collection:** Black Rose | **Thread type:** Product launch + "how we made it"
**Key insight:** Embroidery took four iterations; the piece is built for permanence, not hype
```
1. [Formula 1 — Identity Statement] [Black Rose] Score: 22/25
"Black Rose isn't a product. It's an answer."
→ Earns curiosity without naming the piece; the thread delivers the context.
2. [Formula 4 — Specific Detail] [Black Rose] Score: 24/25
"The embroidery on the BLACK Rose Crewneck took four rounds to get right. A thread on why that mattered:"
→ Concrete, specific, earns trust before the thread even begins.
3. [Formula 7 — Curiosity Gap] [Black Rose] Score: 21/25
"There's a reason we took four months on one embroidered chest script. Most brands would have shipped at round two:"
→ Stakes the permanence-over-speed philosophy without announcing it.
4. [Formula 3 — Contrarian Take] [Brand] Score: 20/25
"Luxury streetwear gets built in Oakland now. Not Paris. Not New York. The Town. Thread:"
→ Broadens context; sets Black Rose inside a larger cultural claim.
5. [Formula 8 — Direct Address] [Black Rose] Score: 22/25
"If you've ever worn something that felt like armor against the wrong room — this thread is for you:"
→ Self-selects the exact Black Rose audience. High stop power on that reader.
6. [Formula 10 — Garment Truth] [Black Rose] Score: 23/25
"The BLACK Rose Crewneck. Built for people who already stood up. A thread on what that means in practice:"
→ Collection register is precise; "already stood up" is Black Rose canon.
7. [Formula 6 — Before/After] [Brand] Score: 18/25
"A year ago the BLACK Rose embroidery was a sketch. Today it's a chest script on 250 garments. Here's what happened in between:"
→ Lower score; "what happened in between" is a softer hook. Usable but not top 3.
8. [Formula 2 — Founder Result] [Brand] Score: 19/25
"I spent four months on an embroidered chest script for a crewneck. Not because it was expected. Because it had to be right:"
→ Strong Corey voice. Earns respect before the thread delivers product detail.
9. [Formula 9 — Question Hook] [Black Rose] Score: 17/25
"Why does a luxury streetwear brand spend four rounds iterating on one piece of embroidery?"
→ Competent but passive. The statement hooks above outperform it.
10. [Formula 5 — Community Call] [Oakland/Town] Score: 16/25
"Oakland doesn't make things for trends. It makes them to last. The BLACK Rose Crewneck is that, in stitch form:"
→ Strong cultural anchor; lower stop power because it front-loads context over curiosity.
---
TOP 3: Hooks #2 (score 24), #6 (score 23), #5 (score 22)
A/B TEST: Hook #2 (specific detail) vs Hook #5 (direct address) — different triggers, same topic.
```
---
## Anti-Patterns
- **Generic hooks that could apply to any brand** — "I want to tell you about our new collection:" could be from Gap or Walmart. SkyyRose hooks are Oakland-specific, collection-specific, or founder-specific.
- **Cross-register contamination** — writing "bloodline" energy into a Black Rose hook, or "armor" language into a Love Hurts hook. Tag forces this discipline: if you can't assign a clean register, rewrite.
- **Hooks that give away the entire thread** — "Here are the 5 facts about the BLACK Rose Crewneck:" leaves nothing to earn. Create the gap.
- **Hype-merchant opening** — "🔥🔥 BIG DROP: The BLACK Rose Crewneck is HERE" is not a SkyyRose hook. It is a notification, not a thread.
- **Too vague to score on specificity** — "I built something I'm proud of:" is 0/5 on specificity. Name the product, the detail, the place, or the decision.
- **Hooks over 280 characters** — they will be truncated. Check character count before scoring.
- **Same formula every time** — if you're always writing "I did X. Here's what happened:" your audience becomes pattern-blind within 3 threads. Vary.
- **European luxury frame** — "Like a French atelier but Oakland" is the wrong DNA. The Five refs only.
- **Audience mismatch** — a Direct Address hook written for the wrong audience (e.g., a Love Hurts hook framed for corporate professionals) fails to self-select the right reader.
---
## Recovery
- **No topic feels interesting enough for a hook:** Find the single most surprising or specific detail in the brief — embroidery iterations, Oakland location detail, a specific material weight — and lead with that. Every product has one specific truth that earns curiosity.
- **All 10 hooks feel the same:** Check formula diversity. If 6 of them are Formula 2 (Founder Result), you're pattern-locked. Force at least one Formula 3 (Contrarian), one Formula 5 (Community Call), and one Formula 10 (Garment Truth).
- **Hooks feel "brand-try-hard":** Read the content-engine's collection voice sections. If a hook sounds like a brand announcement instead of Corey speaking, strip the brand voice and write it as if Corey is talking to a friend in Oakland who already knows the brand.
- **Register is ambiguous — thread crosses two collections:** That thread should be split. One thread per collection register. Ambiguous register = ambiguous hook = poor click-through.
- **A/B test produced no difference in engagement:** Run a third hook variant using a completely different formula (e.g., if you tested Identity + Detail, now test Community Call). The two-variant test is not conclusive if both variants use similar psychological triggers.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!