From artifact-refiner
Lightweight SVG logo creation for ideation. Mode-switching between LLM-suggested SVG (with strict parseability + XSS validation) and a deterministic Minijinja placeholder. Exports PNG raster set when `rsvg-convert` is available.
How this skill is triggered — by the user, by Claude, or both
Slash command
/artifact-refiner:design-svg-logoThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Quick SVG icon / wordmark / lockup generator for brand ideation. Lighter than
Quick SVG icon / wordmark / lockup generator for brand ideation. Lighter than
refine-logo — no full brand system; no showcase HTML.
refine-logoUse this skill (design-svg-logo) | Use refine-logo instead |
|---|---|
| Sketching one or two concept variants | Establishing a production brand system |
| No existing brand guide | Have or want a full brand guide |
| Want SVG + PNG only | Need showcase HTML, manifests, multi-variant suite |
| Ideation, fast turnaround | Final brand identity |
artifact_type: svgcontent_type: direct:svg--mode llm)The user will provide: $ARGUMENTS
Parse for:
--brand-name <name> (required) — string used in wordmark / lockup--brief <one-line> (required) — what the brand does--style <keywords> (optional)--primary-color <hex> (optional; default #E04E28)--output-dir <dir> (required)--mode llm|placeholder (optional; default llm)--variants icon,wordmark,lockup (optional; default all three)--png-sizes 16,32,64,128,256,512 (optional; default this list)Dispatch to the orchestration script:
node scripts/design-svg-logo.mjs \
--brand-name "${BRAND_NAME}" \
--brief "${BRIEF}" \
--primary-color "${PRIMARY_COLOR}" \
--output-dir "${OUTPUT_DIR}" \
${MODE:+--mode "${MODE}"} \
${STYLE:+--style "${STYLE}"}
--mode llm)For each variant (icon, wordmark, lockup):
<script>, no on*=, no javascript: URLs)chat("refiner-iterate", ...) — routes to small tierscripts/lib/svg-validate.mjs#isValidSvg() — strict parseability + XSS rejectionHostHarnessRoutingError: fall back to placeholder for that variant onlytools/template-forge-rs/templates/logo-icon.html (brand initial centered on rounded ember-colored rect)system-ui at primary colorrsvg-convert -w <size> <svg> -o <png> if availablersvg-convert absent: copies the SVG to a .png filename with a warningPer scripts/lib/svg-validate.mjs, every emitted SVG must:
<svg and close with </svg><script> tagson*= event-handler attributes (onclick, onload, etc.)javascript: URLs in href / xlink:href / srcparse5 without errorsLLM outputs failing any check fall back to placeholder. Placeholder outputs are generated deterministically and pass validation by construction.
viewBox + explicit width/height<brand-kebab>-{icon,wordmark,lockup}.svg, png/<brand-kebab>-{variant}-<size>.pngBrand name + brief
→ design-svg-logo (LLM or placeholder)
→ SVG variants + PNG export set
For production brand systems: use refine-logo instead.
artifact_type: svg
content_type: direct:svg
outputs:
- path: <output-dir>/<brand>-icon.svg
- path: <output-dir>/<brand>-wordmark.svg
- path: <output-dir>/<brand>-lockup.svg
- path: <output-dir>/png/<brand>-<variant>-<size>.png
audit_log: .refiner/logo-<brand>/model-routing.log
constraints_satisfied:
- svg_validated_no_script_or_handlers
- llm_failures_fall_back_to_placeholder
- viewbox_present
- png_set_generated_or_svg_copied
scripts/design-svg-logo.mjs — orchestration scriptscripts/lib/svg-validate.mjs — strict SVG validatortools/template-forge-rs/templates/logo-icon.html — Minijinja placeholder templateopenspec/changes/phase-3b-aux-conversions/ — design rationalenpx claudepluginhub gqadonis/artifact-refiner-skill --plugin artifact-refinerProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.