Match indexed brand assets to calendar posts and assign each post its creative mode (anchor-compose, enhance-extend, style-referenced, pure-creative).
Triggers on \"/match-assets\", \"match assets\", \"which photos for which posts\", \"assign creative modes\", \"pair assets to the calendar\", or right after parse-calendar and before compose-creative.
Reads the asset index; posts with no suitable asset are flagged rather than force-matched.
Stronger alternatives
This repository is archived — consider an actively maintained alternative.
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
Claude CodeNot declared
CursorNot declared
CodexNot declared
GitHub CopilotNot declared
WindsurfNot declared
Gemini CLINot declared
ClineNot declared
OpenCodeNot declared
Repository health
Stars6
LicenseLICENSE
Default branchmain
Open issues2
Status
Archived
Package contents
Files included with this skill beyond the listing page.
skill mdSKILL.md4,153 B
docsSUMMARY.md463 B
History
First seen on skills.sh
First recorded snapshot · 1 installs
SKILL.md
/socialforge:match-assets — Asset Matcher
Match brand assets to parsed calendar posts using the multi-factor scoring algorithm. Assigns one of 4 creative modes per post.
Context efficiency
Asset-heavy skill. Grep before Read the asset catalog (${CLAUDEPLUGINDATA}/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.
Prerequisites
Calendar parsed (calendar-data.json exists)
Asset index built (asset-index.json exists)
If either is missing, prompt: "Run /socialforge:parse-calendar first, then /socialforge:index-assets."
The Matching Algorithm
For each post, calculate a multi-factor score against every indexed asset:
Factor
Weight
What It Measures
Tag Overlap
30%
Post keywords vs asset tags
Suitability Match
25%
Asset's "suitable_for" vs post context
Content Bucket Match
20%
Does asset suit this content bucket?
Crop Feasibility
15%
Can asset be cropped to all required platform ratios?
Freshness
10%
Favours assets not already used this month
Freshness factor: scored as 1 - penalty and weighted at 10% alongside the other four factors (the five weights sum to 1.00). Penalty by prior uses this month: 0 uses = 0.00 | 1 use = 0.15 | 2 uses = 0.40 | 3+ uses = 0.70. Reusing an asset within the same week adds a further 0.50 to the penalty (capped at 1.00).
Creative Mode Assignment
Score Range
Recommended Mode
> 0.8
ANCHORCOMPOSE or ENHANCEEXTEND
0.5 - 0.8
ENHANCEEXTEND or STYLEREFERENCED
0.3 - 0.5
STYLE_REFERENCED
< 0.3
PURE_CREATIVE
Also selects 2-5 style reference images per post (always fed to AI generation alongside prompts).
Process
Load calendar-data.json and asset-index.json
For each post: extract keywords → score all assets → rank → assign mode
The gap flag is a boolean (gap_flag), raised when a HERO or HUB post's best asset scores below 0.3. It marks which posts need attention; it does not explain which kind of asset is missing — inspect the flagged posts to decide what to shoot or upload.
Present for user confirmation — user can override any match
Save to output/{brand}/{YYYY-MM}/asset-matches.json
User Override
Overrides are conversational, not flags — match_assets.py accepts only --brand and --month. Adjustments are made at the confirmation step (step 5) and written back to asset-matches.json.