From stamp
Produces a complete brand kit (voice guide, palette, fonts, primary logo SVG + raster sizes, default OG image) from a finished brand/brief.md. Use whenever the user runs /stamp:init, /stamp:finish, or otherwise asks for brand assets. Requires a brief — invoke the brief-builder skill first if brand/brief.md does not exist.
How this skill is triggered — by the user, by Claude, or both
Slash command
/stamp:brand-generatorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Reads `brand/brief.md` and produces concrete brand assets in the `brand/` directory.
Reads brand/brief.md and produces concrete brand assets in the brand/ directory.
brand/brief.md must exist with both Part 1 (user answers) and Part 2 (inferred direction). If it doesn't, invoke the brief-builder skill first. Never fabricate a brief.scripts/requirements.txt installed. If not installed, run pip install -r <path-to-this-skill>/scripts/requirements.txt once. Tell the user before installing.For a full kit (/stamp:init), produce all of these. For /stamp:finish hero, only run the OG composition step.
brand/voice.mdA short voice and tone guide derived from Part 2's voice adjectives, audience tier, and tone constraints. Sections:
Keep this under one page. Long voice guides don't get read.
brand/palette.mdA palette with 4–6 colors, picked using a recipe from references/palette_recipes.md. Use the palette family named in Part 2 of the brief.
For each color, list:
After the swatches, include a "Contrast pairs" subsection listing which foreground/background combinations meet WCAG AA (4.5:1 for body, 3:1 for large text). This is non-negotiable — if the brief specified an accessibility floor, the palette must satisfy it. Adjust hex values until it does.
brand/fonts.mdA type pairing chosen from references/font_pairings.md. Use the family named in Part 2.
Include:
@import or <link> snippet the user can paste.48 / 32 / 24 / 18 / 16 / 14).brand/logo.svgA primary logo concept following a style from references/logo_styles.md (use the style named in Part 2).
Constraints:
font-family and also include a fallback path version (in case the user views the SVG without the font installed). For v0.1, you may prioritize the symbol mark over a wordmark to avoid font-embedding complexity.After writing the SVG, run scripts/rasterize_logo.py to produce PNGs at sizes 16, 32, 64, 128, 256, 512, 1024 in brand/logo/.
brand/og/og-default.pngA 1200x630 OG image with: brand background color, the rasterized logo, the project name in the brand display face, and a one-line tagline drawn from the brief's function answer.
Run scripts/make_og.py with no --hero arg to produce this. Output goes to brand/og/og-default.png.
Part 2 of the brief names a palette family, type pairing, and logo style by name. Do not second-guess those choices — the brief-builder picked them based on the user's actual answers, and changing them here would silently undo that work. If you genuinely think a different recipe fits better, ask the user rather than swap.
If Part 2 is missing one of those names (older brief, manual edit), pick the most defensible choice from the reference file matching the audience tier and visual register, and note in the generated file which recipe you used and why.
The scripts live in <this-skill>/scripts/. Resolve their absolute path from the skill's location — do not hardcode ~/.claude/....
python <skill-path>/scripts/rasterize_logo.py \
--input brand/logo.svg \
--output-dir brand/logo
python <skill-path>/scripts/make_og.py \
--brief brand/brief.md \
--palette brand/palette.md \
--fonts brand/fonts.md \
--logo brand/logo/logo-512.png \
--output brand/og/og-default.png
For /stamp:finish hero <path>, add --hero <path> to the make_og call and change the output to og-hero.png.
If a script fails (e.g., cairosvg missing), surface the actual error to the user with the install command they need, then stop. Don't fall back to a less-good output silently.
brand/logo/ are derived from brand/logo.svg — always regenerate when the SVG changes.brand/og/og-default.png is also derived; regenerate freely.After generation, print to the user:
/stamp:finish hero <path> if they have a hero image.Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub emes3ye/stamp --plugin stamp