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.
How 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.
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.
npx claudepluginhub automatedmarketer/cowork-social --plugin cowork-socialProvides 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.