code/svg-art/SKILL.md
Generates artistic SVGs directly as code — minimal line icons, geometric marks, generative patterns, or hand-drawn compositions — and assembles a modern 2026 HTML gallery preview. Saves each session to its own semantically named folder on the Desktop. Learns from feedback: which styles you loved, which compositions you rejected, which stroke weights and palettes you return to. The tone and aesthetic get more personalized each session. Use when you want icons for a product, a branded mark, a generative poster, or a set of decorative SVGs for a page, blog, or app.
npx skillsauth add mostafa-drz/claude-skills svg-artInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
On startup, use Read to load ~/.claude/skills/svg-art/preferences.md. If missing, treat as first-run.
Defaults when no preferences exist:
output-root: ~/Desktop/svg-art/ (confirmed on first run)default-style: line-icon (minimal, consistent stroke)default-count: 9 (3×3 grid feels complete, not overwhelming)default-stroke: 1.5 (px, relative to a 24px canvas)canvas: 24x24 for icons, 400x400 for compositionspalette-mode: currentColor (monochrome, themeable) — alternates: duotone, brand-palettetone: friendly-cli (matches user's global tone preference)open-gallery: trueAlso load ~/.claude/skills/svg-art/feedback-journal.md if present — contains per-session likes/dislikes and extracted aesthetic signals. Summarize the signal (e.g., "prefers asymmetric compositions, negative space over fills, avoids radial symmetry") and let it shape this session's generation.
On startup, use Bash to detect today's date (date +%Y-%m-%d) and whether the output root exists.
Check $ARGUMENTS:
help → show help, stopconfig → run config flow, stopreset → delete preferences + feedback journal, confirm, stopfeedback → rate the most recent set (teaches the skill), stophistory → list past sessions with titles and dates, stopstyles → print a quick reference of available style modes, stopsvg-art — Artistic SVG generation with a 2026 HTML gallery
Usage:
/svg-art [what to generate] Interactive generation
/svg-art [...] --style <mode> Override default style mode
/svg-art [...] --count <N> How many SVGs (default 9)
/svg-art [...] --palette <colors> e.g., "monochrome", "warm-duotone", "#0a2a6b,#e8eefa"
/svg-art [...] --stroke <px> Stroke width in relative px
/svg-art [...] --canvas <WxH> Canvas size, default 24x24 for icons
/svg-art [...] --notes <text> Extra constraints, references, exclusions
/svg-art config Set preferences
/svg-art reset Clear preferences + feedback journal
/svg-art feedback Rate the last set (teaches the skill)
/svg-art history List past sessions
/svg-art styles Reference of style modes
/svg-art help This help
Style modes:
line-icon Minimal outlined icons, consistent stroke, Feather/Lucide lineage
geometric Bauhaus-inspired: circles, squares, triangles, Swiss-design composition
mark Logomarks — single-concept, tightly composed, memorable at small sizes
generative Math-driven: Voronoi, waves, spirals, noise fields, grid deviations
organic Hand-drawn feel: variable stroke, jittered paths, soft imperfection
duotone Two-color compositions with intentional overlap / transparency
animated SMIL or CSS-animated — subtle breathing motion, not full animation
Examples:
/svg-art "9 icons for a gardening app"
/svg-art "generative poster for a music night" --style generative --canvas 800x1200
/svg-art "brand mark for 'Northwind' — compass / wind motif" --style mark --count 4
/svg-art "icon set: finance dashboard" --style line-icon --stroke 1.75
Output:
{output-root}/{YYYY-MM-DD}-{kebab-title}/
├── gallery.html ← 2026 aesthetic single-file preview
├── data.json ← metadata per SVG (concept, style, size, palette)
├── svgs/
│ ├── 01-{name}.svg
│ ├── 02-{name}.svg
│ └── ...
└── sources.md ← design system for the set + any inspiration refs
Current preferences:
(loaded from preferences.md)
Use AskUserQuestion to collect:
~/Desktop/svg-art/)currentColor) / duotone / a specific brand palette (hex list)Save to ~/.claude/skills/svg-art/preferences.md:
# /svg-art preferences
Updated: {date}
## Defaults
- output-root: {path}
- default-style: {mode}
- default-count: {N}
- default-stroke: {px}
- canvas: {WxH}
- palette-mode: {monochrome|duotone|palette}
- palette-hex: {optional comma-separated list}
- tone: {friendly-cli|detailed|minimal}
## Aesthetic profile (optional — editable)
- Likes: (e.g., negative space, asymmetry, thin strokes, cool palettes)
- Dislikes: (e.g., radial symmetry, busy compositions, gradients)
- Reference artists / libraries: (e.g., Lucide, Dieter Rams, Bauhaus, Muriel Cooper)
## Learned
- (auto-appended as patterns emerge from feedback journal)
Delete both preferences.md and feedback-journal.md. Confirm: "All cleared. Starting fresh next time."
If no preferences file exists, show a warm onboarding:
First time running /svg-art — quick intro:
I generate SVGs directly as code — no image API required. I'm good at
minimal/geometric/generative territory; weaker at photorealistic or organic
chaos. SVG scales infinitely, edits cleanly, and themes via currentColor.
Each session gets a Desktop folder with the SVGs, a data.json, and a
single-file HTML gallery you can open anywhere.
I learn from feedback. After a session, run `/svg-art feedback` to tell me
what worked — over 3-5 sessions I develop a clear sense of your aesthetic.
Run `/svg-art config` for quick setup, or continue and I'll use defaults.
Then proceed. After the first successful session, ask inline if they want to save any quick prefs (default style, palette, stroke).
preferences.md — carry defaults and aesthetic profile forwardfeedback-journal.md — extract a one-line bias signal like:
"Past sessions: leans asymmetric, thin strokes (1.25-1.5px), prefers cool monochrome, avoids radial/mirror symmetry"
If a signal exists, announce it briefly at the start:
"Biasing toward [signal] based on past sessions. Override with flags if you want something different."
Parse $ARGUMENTS for:
--flag (the concept / subject / motif)--style <mode> — override default style--count <N> — how many SVGs--palette <colors> — color approach--stroke <px> — stroke weight--canvas <WxH> — dimensions--notes <text> — extra constraintsIf what is missing, ask ONE AskUserQuestion with 2-4 concrete options (subject, style, count). Don't interrogate.
Before generating, commit to a system AND an axis of variation. Variants are explorations of ONE idea along ONE parameter, not N independent concepts in parallel — the 2026-05-13 emotional-recap session promoted this. A set of 6 should be 6 doses of one concept (e.g. "heart visibility: full → faint → from-dots → with-axes → centroid → pulse-traced"), not 6 different concepts. Independent concepts feel like flailing; parametric variants feel like iterating.
Write out:
Visual system:
Subject: [interpretation of the brief]
Vocabulary: [match the tool's semantic from preferences.md matrix — rank+halo / multi-state dots / vessel-mosaic / field+halo / vertical-dashes]
Style: [mode — e.g., line-icon minimal, 1.5px stroke]
Canvas: [WxH]
Palette: [monochrome / hex list / duotone relationship]
Composition: [3-5 rules — e.g., single focal point, 10% negative-space margin, stroke caps rounded]
Axis of variation: [the ONE parameter the set explores — e.g. "container shape: cross / circle / heart / wheel"]
Concepts (N): [N points along that axis; each gets a content-derived name]
Reply 'go' to generate, or tweak any of the above.
If you can't articulate a single axis of variation, the set isn't cohesive yet — go back to the brief. A first pass exploring N parallel metaphors is acceptable to find the territory; the second pass MUST pick the territory and vary one parameter within it.
Wait for confirmation — this is the one gate. The system + axis prevents the set from feeling like N unrelated drawings.
Slug: {YYYY-MM-DD}-{kebab-summary-max-60chars}. Examples:
2026-04-18-gardening-app-icons2026-04-18-northwind-brand-marksmkdir -p {output-root}/{slug}/svgs
Per-session isolation — never delete siblings.
For each concept in the visual system, write one SVG file directly.
SVG authoring rules:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 W H" fill="none" stroke="currentColor" stroke-width="{stroke}" stroke-linecap="round" stroke-linejoin="round"> for line iconscurrentColor for monochrome so the icon inherits text color on any page<path d="..."> over many primitives for cleaner files<title> inside each SVG for accessibility + self-documentation<path> groups with explicit fill/stroke rather than gradients (cleaner, more themeable)Naming: {NN}-{kebab-concept}.svg where NN is a zero-padded index. Use content-derived names, not counters (e.g., 03-watering-can.svg, not 03-icon.svg).
Per-SVG metadata — capture in memory for data.json:
{
"file": "03-watering-can.svg",
"concept": "watering can",
"style": "line-icon",
"canvas": "24x24",
"palette": "monochrome",
"stroke": 1.5,
"notes": "tilted 15° for dynamism, spout follows the composition's diagonal"
}
Quality bar — before saving each SVG:
Z where appropriate)Generate gallery.html — single self-contained file. Aesthetic mirrors the /shop-research report (same CSS variable system, light/dark mode, generous whitespace, pill chips).
Structure:
<img> src — paste the SVG markup so currentColor picks up the theme). Each tile shows the SVG on a subtle backdrop, concept name, and size./svg-art feedbackDark mode: SVGs using currentColor automatically invert with theme. That's the point.
data.json:
{
"session": { "slug": "...", "date": "...", "brief": "...", "style": "...", "count": 9 },
"visual_system": { "palette": "...", "stroke": 1.5, "canvas": "24x24", "composition_rules": [...] },
"svgs": [ {...metadata per SVG...} ]
}
sources.md — design system rationale, any WebSearch references used for inspiration, decisions the user can re-apply manually later.
Generated {N} SVGs — {style} · {canvas} · {palette}
Concepts: {list of names}
Folder: {output-root}/{slug}/
Gallery: {output-root}/{slug}/gallery.html
Open it? (y/N) — or rate with: /svg-art feedback
If open-gallery: true, run open {gallery.html}.
End with:
When you've had a look, run
/svg-art feedback. Even a quick "liked #2 and #5, disliked #7" helps me sharpen your style.
When invoked as /svg-art feedback:
~/.claude/skills/svg-art/feedback-journal.md:## {session slug} — {date}
- Loved: {list} — pattern: {inferred — e.g., "asymmetric + single focal"}
- Missed: {list} — pattern: {inferred — e.g., "too busy; radial symmetry"}
- Want more of: {user text}
- Avoid: {user text}
- Signal: {one-line generalization, e.g., "prefers asymmetric, thin-stroke, single-subject compositions; avoid radial + fills"}
## Learned section of preferences.md. Mention: "Noticed you consistently prefer X — saving that as standing bias."Full details in reference/styles.md (generate on first session if not present).
currentColor, rounded caps, 1.25-2px stroke, tight composition@keyframes or SMIL — one element breathes, rotates, or draws incurrentColor is the default — themeable for free; override only when duotone or brand-palette is explicit.development
--- name: triage-board description: >- Generates a structured triage artifact from the current conversation's findings — a self-contained Desktop folder with a JSON Schema, schema-conformant report.json, prose markdown, and a single-file HTML viewer. Viewer ships with MD / CSV / JSON download buttons in the header and a per-finding "Copy as Markdown" action that produces a GitHub/Linear/Notion-ready ticket block. Stateless — triage state lives in the user's ticket system, not in the
development
Runs a beginner-mind end-to-end UI audit of any running app — local dev server, staging, production, or a specific URL. Drives Chrome through every interactive element on the target surface, collects structured findings (severity, category, where, symptom, impact, repro, triage), and hands the result off to `/triage-board` which produces the Desktop folder (schema + JSON + Markdown + single-file HTML viewer with MD/CSV/JSON exports and a per-finding Copy as Markdown button). Use when you want fresh-eyes verification of a feature, page, modal, flow, branch, or whole app — before shipping, before review, before a demo, or any time the UI deserves a careful poke.
development
Reviews the user's past Claude Code conversations from a wellbeing perspective — sentiment, tone, emotional arc, recurring patterns — and generates a supportive, science-grounded report in both Markdown and HTML. Default lookback is 48 hours across all projects. Uses recognised emotion frameworks (Plutchik, Ekman, Russell's circumplex, Pennebaker linguistic markers) and cites the science behind every observation. Learns the user's baseline tone over time so future reports flag genuine shifts, not noise. Use when the user asks for an emotional/wellbeing recap, mood check, sentiment review, or wants to understand their own ups and downs across recent work sessions.
development
--- name: workflow-advisor description: >- Analyzes recent Claude Code conversations and local Claude state (skills, settings, memory files, CLAUDE.md), researches the latest Claude Code features and best practices online, and suggests one workflow improvement at a time with reasoning and a concrete action item. Can save accepted suggestions to memory for tracking. Use when you want to discover underused Claude Code features, improve your development workflow, stay current with the lat