Help us improve
Share bugs, ideas, or general feedback.
From cowork-social
Draft a platform-native Instagram caption with required image attachment. Reads platform-voice.md (Instagram section) + brand-brief.md + business-brain.md + asset-index.md. Image is MANDATORY — skill fails clean if no asset specified. 125-2200 char caption, 5-10 hashtags. Plan-then-approves, writes to outputs/, optionally schedules via Blotato. Foundation B + C applied.
npx claudepluginhub automatedmarketer/cowork-social --plugin cowork-socialHow this skill is triggered — by the user, by Claude, or both
Slash command
/cowork-social:draft-instagramThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Draft an Instagram caption + attach a required image from `asset-index.md`. Save-driving CTA, hashtag-heavy, first-line hook before "see more" truncation at ~125 chars.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Creates SEO content outlines, topic clusters, calendars, and identifies gaps. Use proactively for content strategy and planning.
Share bugs, ideas, or general feedback.
Draft an Instagram caption + attach a required image from asset-index.md. Save-driving CTA, hashtag-heavy, first-line hook before "see more" truncation at ~125 chars.
Read these files on every run. If any is missing, halt and tell the user which /onboard-social phase to re-run.
| File | Purpose |
|---|---|
about-me/writing-rules.md | Universal writing rules |
about-me/business-brain.md | ICP, audience, recent stories, wedge |
projects/social-media-content/brand-brief.md | what_you_sell, primary_cta, recent_proof_story, contrarian_belief, voice_signature |
projects/social-media-content/platform-voice.md | Instagram section only — length_range, signature_openings, signature_closings, banned_phrases, voice_notes |
projects/social-media-content/asset-index.md | REQUIRED — image assets with tags + paths |
projects/social-media-content/state-social.md | blotato_status (connected / skipped / awaiting-oauth) |
_shared/hook-patterns.md | 11 hook patterns (Step 4) |
Foundation A — lazy-load: read ONLY the Instagram section of
platform-voice.md.
Follow the 12-step spec in _shared/draft-skill-spec.md. Platform-specific deltas below.
| Field | Instagram value |
|---|---|
| Caption length | 125-2200 chars (first 125 visible without "see more") |
| Hook window | First 125 chars — hook must land within first 7 words |
| Image | MANDATORY — fail clean if no asset matches |
| Hashtags | 5-10 (mix broad + niche), placed at end of caption OR in first comment per user preference in brand-brief |
| Emojis | OK, used sparingly to break up scannable lists |
| Line breaks | Strategic — IG renders them; use double-line for breath |
| CTA bias | Drive saves (IG algorithm weights saves highest) + DMs |
| Hook pattern bias | Vulnerable Story (#5), Behind-the-Scenes (#8), Reverse (#10) |
After hook approval, BEFORE writing the full caption:
projects/social-media-content/asset-index.md<name> (<path>) — confirm or pick different? (y / nominate another)"asset_used: PENDING and won't schedule until image is attached."outputs/social-media-content/YYYY-MM-DD-instagram-<slug>.md
Frontmatter:
---
date: YYYY-MM-DD
platform: instagram
slug: <kebab-case-3-5-words>
hook_pattern: <pattern-name>
length_chars: <count>
asset_used: <asset-name-or-PENDING>
image_path: <path-or-null>
hashtags: [<list>]
status: drafted
---
Body = caption text + hashtag block.
Branch on projects/social-media-content/state-social.md → blotato_status:
connected + image attached → Load scheduling-defaults.md, find Instagram row. Ask:
"Schedule this for [today 11am ET]? (y / specific time / skip)" On
y, callmcp__claude_ai_Blotato__blotato_create_postwith:text(caption),accountId(Instagram fromblotato_list_accounts),mediaUrlsREQUIRED (the image),scheduledFor(ISO 8601).
connected + image MISSING → Refuse to schedule. Tell user: "Can't schedule — Instagram requires an image. Add the asset to asset-index.md, then re-run scheduling."skipped / awaiting-oauth → Save to outputs/ only. Tell user:
"Blotato isn't connected — copy/paste the caption + upload the image into Instagram manually at [default time per scheduling-defaults.md]."
On Blotato success: update calendar-log row, update post frontmatter → status: scheduled.
/grade-post; don't show drafts under 80Instagram caption voice is defined in projects/social-media-content/platform-voice.md (Instagram section) + brand-brief.md (voice_signature). Don't reinvent it.
See _shared/foundations.md → Foundation B. After delivering the main output + the ⚡ NEXT MOVE block, ask: "What would've made this 10% better?" Log to projects/social-media-content/memory.md:
<YYYY-MM-DD> | /draft-instagram | <answer verbatim>
Run recurrence check.
See _shared/foundations.md → Foundation C. Skill output ends with a ⚡ NEXT MOVE block matching the validation regex.
asset-index.md today before scheduling — Instagram won't ship without it"/grade-post on the caption — first-125-chars hook is doing 80% of the work"⚡ NEXT MOVE: Schedule the Instagram post for today 11am ET.
Why: That's your peak save-rate window + the vulnerable-story hook fits IG's algorithm preference.
⚡ NEXT MOVE: Add the missing studio-photo asset to asset-index.md today before 5pm.
Why: Instagram won't ship without an image + this draft is finished otherwise.
⚡ NEXT MOVE: Reply to every IG comment within 2 hours of post going live tomorrow.
Why: First-2-hours engagement velocity drives IG's save + share amplification.