{
  "version": 1,
  "purpose": "Machine-readable catalog for SVG helper discovery.",
  "tools": [
    {
      "name": "superellipse",
      "script": "skills/svg/tools/superellipse.js",
      "use_when": "Generate deterministic SVG path data for a superellipse or supercircle.",
      "keywords": ["superellipse", "supercircle", "supercerchio", "squircle", "rounded logo base"],
      "example": "node skills/svg/tools/superellipse.js --width 256 --height 256 --n 4 --samples 128",
      "primary_output": ["path_d"]
    },
    {
      "name": "arc-points",
      "script": "skills/svg/tools/arc-points.js",
      "use_when": "Generate points and a linear path along an arc between two angles.",
      "keywords": ["arc", "points on arc", "start-deg", "end-deg", "path along arc"],
      "example": "node skills/svg/tools/arc-points.js --cx 50 --cy 50 --radius 20 --start-deg 0 --end-deg 90 --points 5",
      "primary_output": ["points", "path_d"]
    },
    {
      "name": "polar-distribute",
      "script": "skills/svg/tools/polar-distribute.js",
      "use_when": "Distribute points around a circle or angular span.",
      "keywords": ["polar", "circle distribution", "radial layout", "points around circle"],
      "example": "node skills/svg/tools/polar-distribute.js --cx 0 --cy 0 --radius 10 --count 8",
      "primary_output": ["points"]
    },
    {
      "name": "bezier-handles",
      "script": "skills/svg/tools/bezier-handles.js",
      "use_when": "Compute cubic Bezier control handles between two points.",
      "keywords": ["bezier", "cubic", "handles", "control points", "curve"],
      "example": "node skills/svg/tools/bezier-handles.js --x1 0 --y1 0 --x2 100 --y2 0 --tension 0.33 --curvature 0.1",
      "primary_output": ["c1", "c2", "cubic_command"]
    },
    {
      "name": "fit-viewbox",
      "script": "skills/svg/tools/fit-viewbox.js",
      "use_when": "Compute a viewBox from known bounds and optional padding.",
      "keywords": ["viewBox", "bounds", "padding", "fit", "viewport"],
      "example": "node skills/svg/tools/fit-viewbox.js --x 10 --y 20 --width 200 --height 100 --padding 5",
      "primary_output": ["viewBox_string", "viewbox"]
    },
    {
      "name": "rounded-corners",
      "script": "skills/svg/tools/rounded-corners.js",
      "use_when": "Generate SVG path data for a rounded rectangle with clamped radii.",
      "keywords": ["rounded rectangle", "rounded corners", "rx", "ry", "rect path"],
      "example": "node skills/svg/tools/rounded-corners.js --width 120 --height 80 --rx 8 --ry 8",
      "primary_output": ["path_d"]
    },
    {
      "name": "search-assets",
      "script": "skills/svg/tools/search-assets.js",
      "use_when": "Search the bundled SVG asset index for local icons or illustrations without scanning the workspace filesystem.",
      "keywords": ["asset", "icon", "illustration", "lucide", "open-peeps", "search", "local asset"],
      "example": "node skills/svg/tools/search-assets.js --query \"save icon\" --kind icons --limit 5",
      "primary_output": ["matches", "absolute_path", "skill_relative_path"]
    },
    {
      "name": "trace-bw-potrace",
      "script": "skills/svg/tools/trace-bw-potrace.js",
      "use_when": "Trace a monochrome BMP/PNM raster into SVG using potrace with optional mkbitmap preprocessing.",
      "keywords": ["potrace", "trace", "bw", "black white", "monochrome", "raster to svg"],
      "example": "node skills/svg/tools/trace-bw-potrace.js --input input.bmp --output out.svg",
      "primary_output": ["trace_bw", "output", "preprocessing"]
    }
  ]
}
