adapt-copy
Adapt post copy per platform: character limits, hashtags, tone and the right CTA mechanism. \"rewrite this caption for LinkedIn\"
Compose just the creative (image or video) for a calendar post, in four modes. \"make the visual for this post\"
Claude Code
$ npx -y skills add indranilbanerjee/socialforge --skill compose-creative --agent claude-code
Codex
$ npx skills add indranilbanerjee/socialforge --skill compose-creative -a codex -y
Cursor
$ npx skills add indranilbanerjee/socialforge --skill compose-creative -a cursor -y
Gemini CLI
$ npx skills add indranilbanerjee/socialforge --skill compose-creative -a gemini-cli -y
GitHub Copilot
$ npx skills add indranilbanerjee/socialforge --skill compose-creative -a github-copilot -y
OpenCode
$ npx skills add indranilbanerjee/socialforge --skill compose-creative -a opencode -y
Windsurf
$ npx skills add indranilbanerjee/socialforge --skill compose-creative -a windsurf -y
name: compose-creative description: "Compose just the creative (image or video) for a calendar post, in four modes. \"make the visual for this post\"" argument-hint: "[--post <id>] [--all] [--variant b]" effort: max user-invocable: true
> **Script location.** If your host does not set `${CLAUDE_PLUGIN_ROOT}`, the scripts are in this plugin's `scripts/` folder, next to `skills/`. Run them with Python 3.10 or newer: `python`, or `python3` where `python` is not found (macOS, many Linux systems).
The core production skill. Takes asset matching results and produces visual and video assets for each post according to its assigned creative mode, using a staged human-in-the-loop approval flow.
Asset-heavy skill. **Grep before Read** the asset catalog (`${CLAUDE_PLUGIN_DATA}/socialforge/brands/<brand>/asset-index.json`) — never list the asset directory. Reference generated images / videos by path, not by loading metadata. Brand profile loads once per session.
Brand asset is the untouchable center. AI generates scene around it. 1. Remove background from brand asset (rembg) 2. Generate surrounding scene via AI using brand style references 3. Composite asset onto generated scene (Pillow) 4. Add shadow/reflection for natural placement 5. Add text overlay + logo 6. Resize per platform
Brand asset is the foundation. AI modifies periphery only. 1. Feed real image to AI edit endpoint 2. AI extends/enhances while preserving core subject 3. Verify core subject preservation 4. Add overlay + resize
No brand asset composited. Style reference photos guide AI generation. 1. Load 2-8 brand style reference images 2. Construct 5-layer prompt (brand identity, post context, creative direction, image rules, technical) 3. Feed references + prompt to AI generation 4. Quality review — does output match brand DNA? 5. Add overlay + resize
Full AI generation with only text prompt + brand colors/mood. 1. Construct prompt from brief + brand-config visual style 2. Generate (text-only, no reference images) 3. Quality review 4. Add overlay + resize
Read from `scripts/generate_image.py`, `scripts/edit_image.py` and `scripts/generate_video.py`. This skill promises only what those scripts implement.
| Input | How to pass it | What is true today | |---|---|---| | Style references for a new image (STYLE_REFERENCED) | `generate_image.py --references <path> [<path> ...]` — the first 14 are read | Sent to the **primary** image provider only. The fallback providers receive the prompt and aspect ratio, **not** the references: when the result carries `fallback_from` and references were supplied, it also carries `references_used: 0`, `references_dropped: <n>` and a `references_note` — the image is **not** style-referenced. Tell the user, and fix the primary provider's credentials rather than accepting a reference-less image as a style-referenced one. | | References alongside an image being edited (ENHANCE_EXTEND) | `edit_image.py --image <src> --instruction "..." --references <path> ...` — first 14 | Supported. There is no fallback chain for edits. (`generate_image.py --edit` takes no references.) | | First frame for video | `generate_video.py --image <path>` | Supported by every video provider in the chain; one of them requires it. See `/socialforge:generate-video`. | | Last frame for video | `generate_video.py --last-image <path>` (with `--generate-video`) | Sent to the `kling` rung as the clip's end image; no other rung takes one. The result's `video.last_frame_used` says whether it was sent — `false` (with a `last_frame_note`) means the clip was not steered to the approved last frame. See `/socialforge:generate-video`. | | Reference images for video | none | **Not wired** through `generate_video.py` — no flag exists. See `/socialforge:generate-video`. |
Two caveats from the code: file type is set from the extension (`.jpg`/`.jpeg` as JPEG, everything else as PNG), so pass JPEG or PNG and convert WebP first; and `references_used` is the number of files actually read and sent, not the number of paths passed. When it is lower than what you passed, the result says why: `references_missing` lists the paths that do not exist (they are not sent, and there is no error), `references_over_limit` counts the paths past the 14-file limit, and `references_dropped` plus `references_note` mean a fallback provider made the image. Read those fields before treating an image as style-referenced.
If any prerequisite is missing: "Run `/socialforge:match-assets` first — creative production needs asset matching results."
Generation spends provider credits, so the first paid call waits for a quote and an explicit go. This skill states no price and the model registry stores none: `price_book.py` is the only source, and it refuses rather than guesses.
1. List what is about to be generated: for each paid call, the registry alias (`resolve_model.py --alias <alias>` gives the current model id), the provider, and the units (images, or seconds of video, plus any option that ch
Your client wants 30 days of social content across six platforms with brand-faithful imagery, AI-generated video, and provenance signed for EU markets. You have five days.
Adapt post copy per platform: character limits, hashtags, tone and the right CTA mechanism. \"rewrite this caption for LinkedIn\"
Assemble the month-end delivery manifest: approved posts, copy, files and metadata as one JSON. \"build the delivery manifest\"
Set up or update a brand profile: colors, fonts, logo, voice, platforms, compliance rules. \"update our brand colors\"
Build the shareable HTML review gallery of every generated post for team or client. \"make me a gallery page\"
Embed C2PA content credentials and an AI-disclosure record in AI-generated assets. \"sign these images for AI disclosure\"
Create a preview card per platform: post copy, image and badge, to check copy and crop. \"show how this will look\"
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use…
Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…
Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…
Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…