skill to create custom icons using IDEs or extentions that have image generation support
SaferSkills independently audited custom-icons-skill (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A master workflow for crafting professional-grade iconography. This skill handles the entire pipeline: from conceptual "desire" and visual "design" to technical "path" refinement, transparent 3D PNG cleanup, and production-ready SVG optimization.
When this skill is activated, you MUST follow this step-by-step interaction protocol:
Follow the user's explicit request over defaults in this skill.
tmp/custom-icons/<request-or-icon-name>/.tmp/ workspace as a reference until an explicit cleanup request is received.Use discovery only when the request has missing required information. If the user input is incomplete, ask for the minimum missing information:
For each icon, select a strategy based on the visual complexity:
#### Strategy Selection Flowchart
| Strategy | Recommended Use Cases | Technical Pipeline |
|---|---|---|
| Strategy A (Vector) | Logos, UI icons, line art, monochrome | Image -> Binarization -> Potrace -> SVGO |
| Strategy B (Raster) | 3D icons, multi-color, detailed illustration | Image -> Chroma-Key -> Transparent PNG/WebP |
#### Prompt Construction Rules Use a concise, labeled prompt spec for generation.
##### Content Constraints
##### Visual Constraints
##### Examples
For existing image/reference workflows, label each image by role: Image 1: edit target, Image 2: style reference, etc.
#### Strategy A: Vector (Monochrome/Simple) Use for: Logos, UI icons, line art.
Asset type: scalable UI icon
Primary request: [SUBJECT]
Style/medium: [STYLE], high-contrast black vector-like line art
Composition/framing: centered icon, clear silhouette, generous padding
Color palette: black on pure white background
Constraints: no fills unless requested; no gradients; no text; no logos or trademarks; no watermark; no extra elementspotrace, and optimize it with svgo.scripts/crop_and_trace.py -> potrace -> svgo pipeline.#### Strategy B: Raster (Complex/Multi-color) Use for: Detailed illustrations, 3D icons, colorful assets.
Asset type: transparent raster icon
Primary request: [SUBJECT]
Style/medium: [STYLE], vibrant detailed icon
Composition/framing: centered isolated subject, clear silhouette, generous padding
Scene/backdrop: perfectly flat solid chroma-key background, usually #00ff00
Constraints: background must be one uniform color with no shadows, gradients, texture, reflections, floor plane, or lighting variation; crisp edges; no halos; no text unless requested; no logos or trademarks; no watermark; no extra elements; do not use the chroma-key color anywhere in the subjectUse #ff00ff instead of #00ff00 when the subject contains significant green elements or a predominantly green color scheme.
#### Temporary Workspace Before processing, create a project-local workspace for the request:
mkdir -p tmp/custom-icons/<request-or-icon-name>Save generated source images, cropped PNGs, PBM files, traced SVG drafts, validation snapshots, and alternate attempts in that folder. Use the user's requested destination only for final delivered assets; if no final destination is provided, leave the final assets in the same tmp/custom-icons/<request-or-icon-name>/ workspace.
#### Error Handling If any processing step fails (binarization, tracing, chroma-keying), report the specific error to the user and suggest corrective actions (e.g., retrying with adjusted parameters, checking file formats).
#### For Strategy A (Vector):
python3 scripts/crop_and_trace.py <source> tmp/custom-icons/<request-or-icon-name> <name>potrace "tmp/custom-icons/<request-or-icon-name>/<name>.pbm" --svg --flat -o "tmp/custom-icons/<request-or-icon-name>/<name>.svg"bunx svgo "tmp/custom-icons/<request-or-icon-name>/<name>.svg"tmp/custom-icons/<request-or-icon-name>/ to the user's requested destination when provided.#### For Strategy B (Complex):
python3 scripts/remove_chroma_key.py \
--input <source> \
--out tmp/custom-icons/<request-or-icon-name>/<name>.png \
--auto-key border \
--soft-matte \
--spill-cleanup \
--edge-feather 1.0 \
--forceResult: Creates a transparent PNG with spill cleanup and antialiased edges.
python3 scripts/crop_and_trace.py <source> tmp/custom-icons/<request-or-icon-name> <name> \
--chroma \
--padding 12Result: Creates a transparent, trimmed PNG at `tmp/custom-icons/<request-or-icon-name>/<name>.png`. Use this when trimming is more important than soft matte cleanup.
tmp/custom-icons/<request-or-icon-name>/ to the user's requested destination when provided.--edge-contract 1; if edges look too hard, use a smaller feather such as --edge-feather 0.25.svgo. For PNGs, ensure they are trimmed and compressed.#00C8FF, Lifestyle #00E676, Detailed #FF3D00.tmp/custom-icons/... workspace is, and whether validation passed. If a requested step could not be completed, say exactly what failed.Minimalist [SUBJECT] icon, black on white, monoline style.
Refine existing image into a clean SVG.
Abstract representation of "[DESIRE]".
| Style Modifier | Category | Visual Characteristics |
|---|---|---|
| Luxury monoline | Premium | Elegant, thin strokes |
| Geometric bold | Tech | 2px strokes, rounded caps |
| Organic Ink | Lifestyle | Textured edges, fluid |
| 3D Rendered | Complex | Depth, lighting, multi-color, transparent PNG/WebP (Use Strategy B) |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.