adapt-copy
Adapt post copy for every target platform — character limits, hashtag counts and placement, tone, compliance, and the right CTA mechanism per platform…
Find the model that is currently best for a capability by reading the provider live catalogue, and record it with its source — the code asks for kinds, never hardcoded ids. Triggers on \"/model-check\", \"which model should we use\", \"best video model right now\", \"is this
$ npx -y skills add indranilbanerjee/socialforge --skill model-check --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/model-checkContext preview
The summary Claude sees to decide when to auto-load this skill.
Find the model that is currently best for a capability by reading the provider live catalogue, and record it with its source — the code asks for kinds, never hardcoded ids. Triggers on \"/model-check\", \"which model should we use\", \"best video model right now\", \"is this
name: model-check description: "Find the model that is currently best for a capability by reading the provider live catalogue, and record it with its source — the code asks for kinds, never hardcoded ids. Triggers on \"/model-check\", \"which model should we use\", \"best video model right now\", \"is this model still current\", \"model staleness\", \"update the models\", or before any production month and whenever a resolve comes back stale. Pairs with price-check — newest is not automatically best or cheapest." argument-hint: "[--kind <capability>] [--provider <name>] [--staleness]" effort: low user-invocable: true
SocialForge does not know which model to use. That is deliberate.
A model id written into a plugin is a claim about the day it was written, and this plugin gets run long after that day. Six ids used to sit on the execution path. One video fallback stayed pinned to a superseded generation for about six months, and nothing in the system could say so — which matters because a retired id does not degrade gracefully. It fails at the exact moment the two providers ahead of it have already failed and the fallback is all that is left.
So the code asks for a **kind** of model. You find out what currently satisfies it.
**Never supply a model id from memory.** Not from this file, not from a recipe, not from what a model was called last time you looked. If `model_book.py` says `unknown` or `stale`, go and read the provider's catalogue.
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/model_book.py" --action kindsCapabilities, not products — `video.image-to-video`, not a version number. A kind outlives every model that has ever satisfied it, which is the entire point.
1. See where to look, and what is odd about each provider:
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/model_book.py" --action discoveryTwo things it will tell you that save time: **Higgsfield puts the model in the URL path** (so a hardcoded path is a hardcoded model), and **Kie AI blocks automated fetches** — HTTP 403, measured. Do not report that as "no model exists"; ask the user.
2. Read the provider's model list with your own web tools. This is a plugin — there is no crawler and no server, which is why the answer is as fresh as your last look rather than as old as the last release.
3. Judge what is actually best **for the kind**, not what is newest or loudest. A reference-heavy brief and a prompt-driven cinematic brief are different jobs, and the model that wins one often loses the other. Check what the brief needs: start-frame support, duration ceiling, reference-image count, whether audio is required.
4. Record it, with the URL you read:
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/model_book.py" --action record \
--kind video.image-to-video --provider wavespeed \
--model-id "<exact id from the catalogue>" \
--source https://wavespeed.ai/models \
--max-duration-s 15 --notes "start+end frame, optional audio"A record without a source URL is rejected — a model id with no provenance is the same guess this system exists to replace.
5. **Then price it.** A newer model is not automatically the right call: run `/socialforge:price-check` and compare before committing a month's run to it.
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/model_book.py" --action stalenessReports what has gone stale (older than 7 days) and, more usefully, which kinds have **no model at all**. Both need a look before a batch run.
Seven days, rather than the price book's 24 hours, because catalogues move in releases while prices move without announcement.
1. **A live discovery** you recorded recently → used. 2. **The shipped registry alias** → used, but always with a warning naming its age. This rung exists so a first run works before anything is discovered, not so anyone can rely on it. 3. **Nothing** → the generation refuses and falls through to the next provider, rather than calling an id that may have been retired.
If you see the rung-2 warning during a real run, that is the signal to do a discovery pass. It is not an error, but it means the plugin is answering from a file rather than from the world.
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 for every target platform — character limits, hashtag counts and placement, tone, compliance, and the right CTA mechanism per platform…
Assemble the final month-end delivery manifest — every approved post with its copy, creative files, platform variants, and metadata in one structured JSON…
Set up and manage brand profiles — colors, fonts, logo, voice, pillars, platforms, hashtags, compliance rules, cta_keyword. Triggers on \"/brand-manager\",…
Build the interactive HTML review gallery showing every generated post — image, copy, platform, status — for team or client review in a browser. Triggers on…
Embed C2PA provenance manifests in AI-generated assets — the machine-readable AI disclosure EU AI Act Article 50 expects (enforceable since 2 Aug 2026), plus…
Core creative engine — turns a calendar post into finished images or video using 4 modes (anchor-compose, enhance-extend, style-referenced, pure-creative) with…