| name | skyyrose-social-twitter-thread |
| description | Writes SkyyRose X/Twitter threads — brand story deep-dives, collection launches, founder takes, and culture commentary — in Oakland-direct voice with per-tweet value delivery. |
| allowed-tools | Read Write Edit Glob |
SkyyRose Social — Twitter / X Thread
When to Use This Skill
- Writing a founder-perspective thread on the SkyyRose brand origin or Corey's story
- Launching a collection or product drop through a narrative thread (5-12 tweets)
- Publishing a "hot take" thread on fashion, streetwear, or Black-owned business
- Repurposing a brand story into a Twitter/X thread format for authority-building
- Building a "here's how we made this" thread for a garment or collection
- Writing a culture/community thread tied to Oakland, Bay Area, or Black fashion history
DO NOT use this for single tweets, Twitter ad copy, or DM templates. This is for threads of 5-15 tweets only. For short standalone posts, adapt the hook output from skyyrose-social-thread-hook-writer. For TikTok scripts, use skyyrose-social-tiktok-script.
Brand Canon (non-negotiable)
- Voice on X: More direct and opinionated than other platforms. Oakland energy — unhurried, specific, no hedging. Corey speaks as a founder who has earned the room, not a brand trying to get it.
- Tagline verbatim:
Luxury Grows from Concrete. — appears in the CTA tweet only (once, period included).
- Collection register locked: Black Rose = armor, defiance. Love Hurts = bloodline, raw romance. Signature = "stay golden," West Coast standard. Never cross-attribute. A thread about one collection stays in that register throughout.
- No urgency manipulation: Drop announcements state scarcity as fact ("250 made, pre-order is open"). No countdown pressure, no "last chance" desperation tone.
- No European luxury-house references. The Five only: Kith, Oaklandish, Culture Kings, Fear of God, Palm Angels.
- Links only in the final tweet. Mid-thread links kill engagement and Twitter suppresses them.
Full canon: ../skyyrose-content-engine/brand-guardrails.md
Phase 1: Brief
Required Inputs
| Input | What to Ask | Default |
|---|
| Topic | "What is this thread about?" | No default — must be provided |
| Thread type | "Brand story, collection launch, hot take, founder journey, culture commentary, or how-we-made-it?" | Brand story |
| Collection / product | "Which collection or product (by name) is this tied to, if any?" | None — general brand |
| Thread length | "How many tweets? (5-12 for SkyyRose — shorter is sharper)" | 8 tweets |
| CTA | "Follow, visit link, reply with a question?" | Follow @SkyyRose + link in bio |
| Source material | "Any notes, captions, or voice memos to base this on?" | None — write from brief |
GATE: Confirm topic and thread type before proceeding. If the thread touches a specific collection, confirm the register before writing.
Phase 2: Outline
Thread Architecture
Every SkyyRose thread follows this spine:
- Hook tweet — stops the scroll; earns the "show this thread" click
- Context tweet — why this matters, who Corey is, or what the collection stands for
- Body tweets (3-N-2) — the substance: story beats, product details, cultural anchors, founder lessons
- Summary tweet — designed to be screenshotted; the TL;DR that earns the share
- CTA tweet — single action +
Luxury Grows from Concrete. + link
Outline Format
Hook: [First tweet — must earn "show this thread" click]
Context: [Why this matters / stakes / who is speaking]
Body:
Tweet 3: [Story beat or point 1]
Tweet 4: [Story beat or point 2]
Tweet 5: [Story beat or point 3 — include one concrete detail or fact]
Tweet 6: [Story beat or point 4]
Summary: [TL;DR — shareable on its own as a screenshot]
CTA: [Follow + link + tagline]
GATE: Approve outline before writing full tweets. Every body tweet must stand alone — no tweet should require reading the previous one to make sense.
Phase 3: Write
Tweet-by-Tweet Rules
Hook Tweet (Tweet 1)
- Under 280 characters — no exceptions.
- SkyyRose hook formats (pick one):
- Founder result: "I built a luxury streetwear brand out of Oakland with no investors. Here's what nobody tells you about that:"
- Identity statement: "Black Rose isn't a product. It's an answer. A thread:"
- Contrarian take: "Luxury doesn't come from Europe. It never did. Thread:"
- Specific detail: "The embroidery on the BLACK Rose Crewneck took four rounds to get right. Here's why we didn't cut it:"
- Culture call: "Oakland doesn't get enough credit for what it's building. Let me fix that:"
- End with a thread indicator: "A thread:" or "(thread)" or "Here's what I mean:"
Context Tweet (Tweet 2)
- Credibility and stakes — who is speaking, why this collection exists, what this thread is actually about.
- No filler. "First, some context:" is fine if it leads directly to substance.
- Under 280 characters.
Body Tweets (Tweets 3 to N-2)
- One idea per tweet. Never two.
- Start each with a number ("3/") or a strong opening word — not "And..." or "Also..."
- Line breaks between ideas within a tweet for readability on mobile.
- Vary format: some tweets are declarative, some are mini-stories, one should contain a specific fact or detail.
- At least one tweet in a product thread must name the garment by name (not SKU) with one concrete construction detail.
Summary Tweet (Second-to-Last)
- "TL;DR:" or "To recap:" — then the 3 key points, bulleted if space allows.
- Designed to be screenshotted and shared. Should work without reading the thread.
- Keep under 240 characters if possible so it screenshotshots cleanly.
CTA Tweet (Final)
- Single action only.
- If drop: link to the product page (first and only link in the thread).
- Always close with
Luxury Grows from Concrete.
- Add 1-2 hashtags maximum here:
#SkyyRose + one collection tag.
Formatting Rules
| Rule | Detail |
|---|
| Character limit | Every tweet under 280 characters — no exceptions |
| Numbering | Body tweets: "3/" at the start |
| Line breaks | Blank lines between ideas in longer tweets |
| Emojis | 0-1 per tweet max. Use as a visual marker, not decoration. |
| Hashtags | Zero in the thread body. 1-2 in final CTA tweet only. |
| Links | Final tweet ONLY. Never mid-thread. |
Phase 4: Polish
Thread Quality Checklist
- [ ] Hook tweet earns "show this thread" — passes the "would I click?" test
- [ ] Every tweet under 280 characters
- [ ] Each body tweet delivers one clear idea, numbered consistently
- [ ] At least one body tweet contains a specific fact, detail, or mini-story
- [ ] Summary tweet works as a standalone screenshot
- [ ] CTA tweet has single action + "Luxury Grows from Concrete." + max 2 hashtags
- [ ] No links mid-thread (final tweet only)
- [ ] Collection voice verified — no cross-attribution
- [ ] No urgency manipulation language
- [ ] No European luxury house name-drops
- [ ] Thread reads as a continuous narrative, but each tweet also stands alone
Pinned Tweet Option
For brand-story threads with long shelf life, provide an alternate version of the hook tweet optimized to work as a profile pin — slightly more evergreen framing than a time-sensitive drop hook.
Posting Notes
- Best times for SkyyRose on X: 8-10 AM or 5-7 PM PST
- Post tweet 1, then the rest 1-2 minutes apart as replies to tweet 1
- Quote-tweet the hook 6-8 hours later with one key insight to resurface it
- Don't delete and repost to game timing — reply engagement is more valuable than repost reach
Implementation
from agents.social_media_agent import SocialMediaAgent
agent = SocialMediaAgent()
post = agent.generate_post("sg-001", "twitter", "behind_scenes")
print(post.caption)
print(post.hashtags)
python -m skyyrose.elite_studio.ventures.social smoke --sku sg-001
n8n thread automation node config:
{
"node": "twitter-thread-scheduler",
"sku": "sg-001",
"collection": "signature",
"thread_type": "brand_story",
"tweet_count": 8,
"post_interval_sec": 90,
"cta_link": "https://skyyrose.co/collections/signature",
"scheduled_utc": "2026-06-15T15:00:00Z",
"resurface_after_hours": 7,
"hashtags_cta_only": ["#SkyyRose", "#SignatureCollection"]
}
Example: Signature Collection Brand Thread (8 tweets)
Collection: Signature | Type: Brand story / collection deep-dive
1/ The Signature collection is for people who already know.
Not the ones trying to prove something.
The ones who are the proof.
A thread on what West Coast luxury actually means:
2/ Oakland made me believe that the highest standard
isn't European. It never was.
The Signature collection started with one question:
what does luxury look like when it belongs to The Town?
3/ It means fabric that earns its price tag.
French terry. Heavyweight fleece. Construction details
that show up every time — not just on launch day.
4/ It means "stay golden" as a standard, not a slogan.
Signature isn't the newest drop or the loudest colorway.
It's the piece that's still in rotation in 3 years
because it was built that way.
5/ The Gold — #D4AF37 on the spec sheet, but in person
it hits like the Bay at sunset.
Every Signature piece carries it.
It's the accent that says West Coast, worldwide.
6/ We didn't call it Signature because it's the flashiest.
We called it Signature because it's the standard
everything else gets measured against.
7/ TL;DR:
Signature = West Coast luxury built for The Town.
Premium construction. Gold accent. Unhurried.
The standard — not the statement.
8/ Pre-order open. Signature collection at skyyrose.co
Follow @SkyyRose for every drop, story, and behind-the-scenes.
Luxury Grows from Concrete.
#SkyyRose #SignatureCollection
Anti-Patterns
- Hook tweet is a statement, not a hook — "SkyyRose just dropped a new collection" is a press release, not a thread hook. Every hook creates a reason to click "show thread."
- Links mid-thread — Twitter's algorithm suppresses mid-thread links. One link, final tweet only.
- Wall-of-text tweets — 280 characters of unbroken text on a phone screen is unreadable. Use line breaks.
- Cross-attributing collection language — a Signature thread must not contain "bloodline that raised me" (Love Hurts) or "armor" (Black Rose). Collection register is locked.
- Monotone format — every body tweet as "N/ [statement]" gets pattern-blind by tweet 5. Mix in a mini-story, a specific construction detail, a question.
- Hashtag stuffing in the body — #BlackOwnedFashion mid-thread feels like an ad insert. Hashtags belong in the CTA tweet only.
- European luxury reference — a thread that name-drops Bottega or references "old-money European" aesthetics is the wrong brand DNA. The Five only.
- Urgency pressure language — "Pre-order NOW before it closes" is not Corey's register. "Pre-order is open" stated once in the CTA is enough.
- Thread over 12 tweets — attention drops after tweet 10 for SkyyRose's audience. Cut or split.
- Summary tweet that's just the hook again — the summary must deliver new synthesis, not repeat tweet 1.
Recovery
- No hook ideas: Generate 5 variants using different formulas (identity statement, contrarian take, specific-detail, founder-result, culture-call). Present all 5 — let Corey or the team pick.
- Thread too long: Cut any body tweet that overlaps with another. If two tweets make the same point from different angles, keep the one with a concrete detail.
- Voice feels too polished / corporate: Read it aloud with Oakland cadence. If it sounds like a LinkedIn post, rewrite. Contractions, short sentences, specific proper nouns (The Town, Bay, Oakland) are the register markers.
- CTA tweet underperforming (low click-through): Make the link the only item in the tweet after the tagline. Competing asks dilute click intent.
- Collection register drift: If you're unsure whether a phrase belongs to the right collection, read
docs/brand/collection-stories.md before finalizing. The per-collection registers are there verbatim.