This is the practical operator guide for generating repo-aware marketing assets.
- Node.js 22+
- npm
- Playwright Chromium installed:
cd repo-canvas
npx playwright install chromiumOptional:
OPENAI_API_KEYfor OpenAI supporting visualsGEMINI_API_KEYfor Gemini supporting visuals
cd repo-canvas
npm installnpm run asset:initThis ensures:
asset.config.jsonbrand.jsonproduct-brief.mdcaptures/exports/generated/
Edit asset.config.json:
{
"targetRepo": ".."
}Set targetRepo to the software repo you want to market.
npm run asset:inspectReview:
product-brief.mdgenerated/repo-inspection.json
If the inferred messaging is weak, edit product-brief.md manually before generating assets.
Start the target app yourself if needed:
cd /path/to/target-repo
npm run devThen either set:
capture.baseUrl- or
capture.devCommand
in asset.config.json.
Run:
cd /path/to/repo-canvas
npm run asset:captureReview:
captures/generated/capture-manifest.json
If the app is unavailable, placeholder capture cards are created. Those are safe fallbacks, not real product screenshots.
Examples:
npm run asset:generate -- --type social-card
npm run asset:generate -- --type linkedin-ad
npm run asset:generate -- --type feature-card
npm run asset:generate -- --type screenshot-frame
npm run asset:generate -- --type launch-graphicOutputs:
exports/*.pngexports/export-manifest.json
npm run asset:exportnpm run asset:doctorUse this when paths, Playwright, or API key setup looks wrong.
- Never treat generated backgrounds as product UI.
- Never publish placeholder captures as if they were real screenshots.
- Keep copy grounded in repo inspection or manual edits to
product-brief.md. - Keep Remotion separate for video.
- Claude Code skill:
~/.claude/skills/repo-canvas - Codex skill:
~/.codex/skills/repo-canvas - Gemini commands:
~/.gemini/commands/repo-canvas
Install or refresh them with:
./scripts/install-integrations.sh