AgentStack
SKILL verified MIT Self-run

Compose Creative

skill-indranilbanerjee-socialforge-compose-creative · by indranilbanerjee

Core creative engine. Generates images and video using 4 modes with brand assets, AI compositing, and platform resizing.

No reviews yet
0 installs
15 views
0.0% view→install

Install

$ agentstack add skill-indranilbanerjee-socialforge-compose-creative

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README — it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-indranilbanerjee-socialforge-compose-creative)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
28d ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Compose Creative? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

/socialforge:compose-creative — Creative Production Engine

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.

Context efficiency

Asset-heavy skill. Grep before Read the asset catalog (${CLAUDE_PLUGIN_DATA}//assets/index.json) — never list the asset directory. Reference generated images / videos by path, not by loading metadata. Brand profile loads once per session.

The 4 Creative Modes

MODE 1: ANCHOR_COMPOSE

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

MODE 2: ENHANCE_EXTEND

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

MODE 3: STYLE_REFERENCED

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

MODE 4: PURE_CREATIVE

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

Prerequisites

  • asset-matches.json must exist (generated by /socialforge:match-assets -> match_assets.py)
  • calendar-data.json must exist (generated by /socialforge:parse-calendar)
  • brand-config.json must exist for active brand
  • cost-log.json initialized (via status_manager.py --action init-month)
  • Valid credentials for Gemini via Vertex AI (images) and WaveSpeed / Kling v3.0 (video) via credential_manager.py

If any prerequisite is missing: "Run /socialforge:match-assets first — creative production needs asset matching results."

Process (For Each IMAGE Post) — 4-Stage Approval Flow

Stage 1: Creative Direction (No API Call)

Present 2-3 creative direction options to the user. Each option includes:

  • A description of the visual concept
  • Mood, color palette, and composition approach
  • How the brand asset will be used (per the assigned creative mode)
  • Rough reference to style/tone

No image generation happens here. The user picks a direction before any credits are spent.

Stage 2: Confirm Details

Once the user selects a direction, confirm the specifics before generating:

  • Final prompt details and any refinements the user wants
  • Aspect ratio and platform targets
  • Text overlay copy and placement preferences
  • Any special instructions (e.g., "warmer tones", "more negative space")

User explicitly approves to proceed to generation.

Stage 3: Generate and Select (Gemini via Vertex AI)

  • Generate 2-3 image versions based on the confirmed direction
  • Show all versions inline via the Read tool so the user can compare
  • User picks their preferred version (or requests another round with adjustments)
  • Max 3 generation rounds per post before escalating

Stage 4: Post-Process and Save

After the user selects their preferred image:

  1. Apply text overlay via composetextoverlay.py
  2. Apply logo per brand-config.json (position, opacity, size, platform exclusions)
  3. Resize per platform via resize_image.py
  4. Save final assets to the post-specific folder: {post_folder}/final/
  5. Update status-tracker.json
  6. Log prompt to shared/prompt-logs/
  7. Track API cost in cost-log.json

Process (For Each VIDEO Post) — 5-Stage Approval Flow

Stage 1: Video Concept (No API Call)

Present 2-3 video concept ideas to the user. Each option includes:

  • A narrative arc or visual concept for the short-form video
  • Description of the opening frame, motion/transition, and closing frame
  • Mood, pacing, and style notes
  • How brand assets or style references will be incorporated

User picks a concept before any generation begins.

Stage 2: First Frame Generation (Gemini via Vertex AI)

  • Generate 2 first-frame options based on the selected concept
  • Show both inline via the Read tool
  • User picks their preferred first frame (or requests adjustments)

Stage 3: Last Frame Generation (Gemini via Vertex AI)

  • Generate 2 last-frame options that complement the approved first frame
  • Show both inline via the Read tool
  • User picks their preferred last frame (or requests adjustments)

Stage 4: Video Generation (WaveSpeed / Kling v3.0)

  • Generate 2 video versions using the approved first and last frames as keyframes
  • Use WaveSpeed or Kling v3.0 via generate_video.py
  • Show both versions for user review
  • User picks their preferred video (or requests another round)
  • Max 3 generation rounds before escalating

Stage 5: Post-Process + Save

After the user picks the final video, post-processing runs before saving:

  1. Watermark: Logo overlay is automatically added to the video via video_postprocess.py
  2. Subtitles: User is asked whether to burn subtitles into the video (optional). SRT was already generated from the script and is saved separately regardless.
  3. Background music: If the video has no audio (sound=False in Kling config), user is asked whether to add background music (optional).
  4. Platform resize: Video is automatically resized for each target platform (letterbox/pillarbox with black padding, no stretching)
  5. Save all platform versions to {post_folder}/final/
  6. Save alternatives to {post_folder}/versions/
  7. Update status-tracker.json
  8. Log prompt and generation parameters to shared/prompt-logs/
  9. Track API cost in cost-log.json

Batch Mode (/socialforge:generate-all)

When processing all posts via /socialforge:generate-all, the staged approval flow uses group-based approval to avoid per-post bottlenecks:

  1. Group posts by creative mode — all ANCHORCOMPOSE posts together, all PURECREATIVE together, etc.
  2. Stage 1 in bulk — present creative direction options for each post in the group at once. User reviews and selects directions for the entire group before generation begins.
  3. Stage 2 confirmation — confirm details for the group. User can adjust individual posts or approve the batch.
  4. Stage 3 generation — generate images/videos for the group sequentially. After each post's variants are generated, show them inline. User can approve, request regeneration, or skip.
  5. Stage 4/5 post-processing — all approved posts are post-processed together (logo, resize, save).

Progress indicator during batch:

[GROUP 1: ANCHOR_COMPOSE — 8 posts]
  Presenting directions... awaiting approval

[GROUP 2: STYLE_REFERENCED — 12 posts]
  Queued — waiting for Group 1

[GROUP 3: VIDEO — 4 posts]
  Queued — waiting for Group 2

Posts that are skipped or fail after 3 rounds are collected into a "needs attention" list presented at the end of the batch.

Rules

  • Brand assets are SACRED — never modify the core subject in ANCHOR_COMPOSE
  • No text in AI-generated images — text is always added via composetextoverlay.py
  • Logo overlay per brand-config.json (position, opacity, size, platform exclusions)
  • Every generated image/video requires user approval at each stage before proceeding
  • No API calls before Stage 1 approval — creative direction is confirmed before spending credits
  • Max 3 generation rounds per post before escalating to user
  • Show all variants inline via the Read tool so the user can visually compare

Progress Indicators

[3/28] Post P03 — IMAGE — ANCHOR_COMPOSE
  Stage 1: Presenting 3 creative directions...
  [User selects Direction B]
  Stage 2: Confirming details...
  [User approves]
  Stage 3: Generating 3 variants (Gemini via Vertex AI)...
    Variant A... done
    Variant B... done
    Variant C... done
  [Images shown inline — user selects Variant B]
  Stage 4: Post-processing...
    Text overlay... done
    Logo... done
    Resize (IG, FB, LinkedIn)... done
    Saved. done

[4/28] Post P04 — VIDEO — STYLE_REFERENCED
  Stage 1: Presenting 2 video concepts...
  [User selects Concept A]
  Stage 2: Generating 2 first frames (Gemini via Vertex AI)...
  [User selects Frame 1]
  Stage 3: Generating 2 last frames (Gemini via Vertex AI)...
  [User selects Frame 2]
  Stage 4: Generating 2 video versions (WaveSpeed)...
  [User selects Video A]
  Stage 5: Saving final...
    Saved. done

Scripts Used

  • generateimage.py | composeimage.py | edit_image.py
  • generatevideo.py | credentialmanager.py
  • resizeimage.py | composetextoverlay.py | verifybrand_colors.py

Timeout & Fallback

  • Image generation (Gemini via Vertex AI): 60-second timeout per image. Retry once with simplified prompt.
  • Video generation (WaveSpeed / Kling v3.0): 120-second timeout per video. Retry once with reduced parameters.
  • Background removal: 30-second timeout. If fails, flag for manual masking.
  • Compositing: 15-second timeout. If Pillow fails, save components for manual assembly.
  • Total per image post: 5-minute cap. If exceeded, mark as production_timeout and move to next.
  • Total per video post: 8-minute cap. If exceeded, mark as production_timeout and move to next.
  • Staged approval pauses do not count against timeout — the clock runs only during active generation and processing.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.