From 5e89d17dbe9f6832a451b95b9ce4cf9c8dd5ebdb Mon Sep 17 00:00:00 2001 From: Snailedlt Date: Sat, 31 Oct 2026 17:21:49 +0100 Subject: [PATCH 01/12] chore: add Claude Code skills for making and reviewing icons Co-Authored-By: Claude Opus 5.5 --- .claude/skills/devicon-icon-review/SKILL.md | 73 + .../evals/review-clean-nx-icon/case.yaml | 6 + .../review-clean-nx-icon/files/devicon.json | 311 +++ .../files/icons/nx/nx-line.svg | 1 + .../files/icons/nx/nx-original.svg | 1 + .../graders/01-no-blocking-issues.md | 7 + .../graders/02-no-false-violations.md | 7 + .../graders/03-checked-official-logo.md | 7 + .../graders/04-font-ready-confirmed.md | 7 + .../evals/review-clean-nx-icon/place-files.sh | 3 + .../evals/review-clean-nx-icon/prompt.md | 10 + .../review-drizzle-pr-snapshot/case.yaml | 6 + .../files/devicon.json | 302 +++ .../files/icons/drizzle/drizzle-original.svg | 3 + .../graders/01-flags-width-height.md | 7 + .../graders/02-flags-padding.md | 7 + .../graders/03-flags-white-fill.md | 7 + .../graders/04-flags-font-plain.md | 7 + .../graders/05-requests-changes.md | 7 + .../graders/06-fixes-given.md | 7 + .../graders/07-nothing-posted.md | 7 + .../review-drizzle-pr-snapshot/place-files.sh | 3 + .../review-drizzle-pr-snapshot/prompt.md | 10 + .../references/devicon-standards.md | 101 + .../devicon-icon-review/scripts/check_icon.js | 126 + .claude/skills/svg-icons/SKILL.md | 63 + .../fix-stroked-plain-for-font/case.yaml | 6 + .../files/radar-plain.svg | 1 + .../graders/01-one-path-no-strokes.md | 7 + .../graders/02-looks-the-same.md | 7 + .../graders/03-ring-hole-kept.md | 7 + .../graders/04-colour-kept.md | 7 + .../graders/05-explains-cause.md | 7 + .../fix-stroked-plain-for-font/place-files.sh | 3 + .../fix-stroked-plain-for-font/prompt.md | 10 + .../plain-from-multicolour-logo/case.yaml | 6 + .../files/acme-logo.svg | 10 + .../graders/01-viewbox-no-size.md | 7 + .../graders/02-plain-one-path.md | 7 + .../graders/03-plain-one-colour.md | 7 + .../graders/04-letter-is-hole.md | 7 + .../graders/05-gap-between-colours.md | 7 + .../graders/06-fills-box.md | 7 + .../graders/07-original-colours.md | 7 + .../graders/08-looked-at-render.md | 7 + .../place-files.sh | 3 + .../plain-from-multicolour-logo/prompt.md | 10 + .../skills/svg-icons/references/techniques.md | 101 + .claude/skills/svg-icons/scripts/build.js | 218 ++ .claude/skills/svg-icons/scripts/inspect.js | 23 + .claude/skills/svg-icons/scripts/optimize.js | 18 + .../svg-icons/scripts/package-lock.json | 2385 +++++++++++++++++ .claude/skills/svg-icons/scripts/package.json | 15 + .claude/skills/svg-icons/scripts/paperenv.js | 20 + .claude/skills/svg-icons/scripts/pixdiff.js | 29 + .claude/skills/svg-icons/scripts/render.js | 56 + .claude/skills/svg-icons/scripts/trace.js | 16 + .claude/skills/svg-icons/scripts/validate.js | 38 + .claude/skills/svg-icons/scripts/versions.js | 88 + 59 files changed, 4243 insertions(+) create mode 100644 .claude/skills/devicon-icon-review/SKILL.md create mode 100644 .claude/skills/devicon-icon-review/evals/review-clean-nx-icon/case.yaml create mode 100644 .claude/skills/devicon-icon-review/evals/review-clean-nx-icon/files/devicon.json create mode 100644 .claude/skills/devicon-icon-review/evals/review-clean-nx-icon/files/icons/nx/nx-line.svg create mode 100644 .claude/skills/devicon-icon-review/evals/review-clean-nx-icon/files/icons/nx/nx-original.svg create mode 100644 .claude/skills/devicon-icon-review/evals/review-clean-nx-icon/graders/01-no-blocking-issues.md create mode 100644 .claude/skills/devicon-icon-review/evals/review-clean-nx-icon/graders/02-no-false-violations.md create mode 100644 .claude/skills/devicon-icon-review/evals/review-clean-nx-icon/graders/03-checked-official-logo.md create mode 100644 .claude/skills/devicon-icon-review/evals/review-clean-nx-icon/graders/04-font-ready-confirmed.md create mode 100644 .claude/skills/devicon-icon-review/evals/review-clean-nx-icon/place-files.sh create mode 100644 .claude/skills/devicon-icon-review/evals/review-clean-nx-icon/prompt.md create mode 100644 .claude/skills/devicon-icon-review/evals/review-drizzle-pr-snapshot/case.yaml create mode 100644 .claude/skills/devicon-icon-review/evals/review-drizzle-pr-snapshot/files/devicon.json create mode 100644 .claude/skills/devicon-icon-review/evals/review-drizzle-pr-snapshot/files/icons/drizzle/drizzle-original.svg create mode 100644 .claude/skills/devicon-icon-review/evals/review-drizzle-pr-snapshot/graders/01-flags-width-height.md create mode 100644 .claude/skills/devicon-icon-review/evals/review-drizzle-pr-snapshot/graders/02-flags-padding.md create mode 100644 .claude/skills/devicon-icon-review/evals/review-drizzle-pr-snapshot/graders/03-flags-white-fill.md create mode 100644 .claude/skills/devicon-icon-review/evals/review-drizzle-pr-snapshot/graders/04-flags-font-plain.md create mode 100644 .claude/skills/devicon-icon-review/evals/review-drizzle-pr-snapshot/graders/05-requests-changes.md create mode 100644 .claude/skills/devicon-icon-review/evals/review-drizzle-pr-snapshot/graders/06-fixes-given.md create mode 100644 .claude/skills/devicon-icon-review/evals/review-drizzle-pr-snapshot/graders/07-nothing-posted.md create mode 100644 .claude/skills/devicon-icon-review/evals/review-drizzle-pr-snapshot/place-files.sh create mode 100644 .claude/skills/devicon-icon-review/evals/review-drizzle-pr-snapshot/prompt.md create mode 100644 .claude/skills/devicon-icon-review/references/devicon-standards.md create mode 100644 .claude/skills/devicon-icon-review/scripts/check_icon.js create mode 100644 .claude/skills/svg-icons/SKILL.md create mode 100644 .claude/skills/svg-icons/evals/fix-stroked-plain-for-font/case.yaml create mode 100644 .claude/skills/svg-icons/evals/fix-stroked-plain-for-font/files/radar-plain.svg create mode 100644 .claude/skills/svg-icons/evals/fix-stroked-plain-for-font/graders/01-one-path-no-strokes.md create mode 100644 .claude/skills/svg-icons/evals/fix-stroked-plain-for-font/graders/02-looks-the-same.md create mode 100644 .claude/skills/svg-icons/evals/fix-stroked-plain-for-font/graders/03-ring-hole-kept.md create mode 100644 .claude/skills/svg-icons/evals/fix-stroked-plain-for-font/graders/04-colour-kept.md create mode 100644 .claude/skills/svg-icons/evals/fix-stroked-plain-for-font/graders/05-explains-cause.md create mode 100644 .claude/skills/svg-icons/evals/fix-stroked-plain-for-font/place-files.sh create mode 100644 .claude/skills/svg-icons/evals/fix-stroked-plain-for-font/prompt.md create mode 100644 .claude/skills/svg-icons/evals/plain-from-multicolour-logo/case.yaml create mode 100644 .claude/skills/svg-icons/evals/plain-from-multicolour-logo/files/acme-logo.svg create mode 100644 .claude/skills/svg-icons/evals/plain-from-multicolour-logo/graders/01-viewbox-no-size.md create mode 100644 .claude/skills/svg-icons/evals/plain-from-multicolour-logo/graders/02-plain-one-path.md create mode 100644 .claude/skills/svg-icons/evals/plain-from-multicolour-logo/graders/03-plain-one-colour.md create mode 100644 .claude/skills/svg-icons/evals/plain-from-multicolour-logo/graders/04-letter-is-hole.md create mode 100644 .claude/skills/svg-icons/evals/plain-from-multicolour-logo/graders/05-gap-between-colours.md create mode 100644 .claude/skills/svg-icons/evals/plain-from-multicolour-logo/graders/06-fills-box.md create mode 100644 .claude/skills/svg-icons/evals/plain-from-multicolour-logo/graders/07-original-colours.md create mode 100644 .claude/skills/svg-icons/evals/plain-from-multicolour-logo/graders/08-looked-at-render.md create mode 100644 .claude/skills/svg-icons/evals/plain-from-multicolour-logo/place-files.sh create mode 100644 .claude/skills/svg-icons/evals/plain-from-multicolour-logo/prompt.md create mode 100644 .claude/skills/svg-icons/references/techniques.md create mode 100644 .claude/skills/svg-icons/scripts/build.js create mode 100644 .claude/skills/svg-icons/scripts/inspect.js create mode 100644 .claude/skills/svg-icons/scripts/optimize.js create mode 100644 .claude/skills/svg-icons/scripts/package-lock.json create mode 100644 .claude/skills/svg-icons/scripts/package.json create mode 100644 .claude/skills/svg-icons/scripts/paperenv.js create mode 100644 .claude/skills/svg-icons/scripts/pixdiff.js create mode 100644 .claude/skills/svg-icons/scripts/render.js create mode 100644 .claude/skills/svg-icons/scripts/trace.js create mode 100644 .claude/skills/svg-icons/scripts/validate.js create mode 100644 .claude/skills/svg-icons/scripts/versions.js diff --git a/.claude/skills/devicon-icon-review/SKILL.md b/.claude/skills/devicon-icon-review/SKILL.md new file mode 100644 index 000000000..eac94f488 --- /dev/null +++ b/.claude/skills/devicon-icon-review/SKILL.md @@ -0,0 +1,73 @@ +--- +name: devicon-icon-review +description: Review devicon "new icon" / "update icon" pull requests (and icon proposals or icon files before a PR) the way devicon's maintainers do — whether the technology is accepted, whether the logo is official and current, version naming and aliases, SVG standards (128×128 viewBox, no padding, centred, optimized single-line files), font-readiness of plain/line versions (one path, one colour, no strokes, white cut out), devicon.json correctness, the peek-bot font previews, and PR scope/title. Use this whenever the user asks to review, check, approve, or give feedback on a devicon icon PR or icon SVGs, mentions a PR number in devicons/devicon with an icon title, or asks whether an icon "is ready" — even if they only paste a PR link. +--- + +# Reviewing devicon icon PRs + +The goal is the review a careful devicon maintainer would write: correct, specific, kind, and actionable — every problem comes with the fix (often a ready-to-commit suggestion). Contributors are frequently first-timers; maintainers here link the wiki, explain *why*, and offer help. + +Standards live in `references/devicon-standards.md` (with links to the maintainer comments they come from). Read it before your first review in a session; it's the source of truth for the checklist below. + +## Tools + +- `scripts/check_icon.js --repo ` — checks the icon's `devicon.json` entry and its files: required keys, versions vs files, font versions (one path, one fill, fill = `color`, no white/groups/gradients/strokes), aliases, viewBox/width/height/xmlns, raster ``, ``, ` + + + + + + diff --git a/.claude/skills/svg-icons/evals/plain-from-multicolour-logo/graders/01-viewbox-no-size.md b/.claude/skills/svg-icons/evals/plain-from-multicolour-logo/graders/01-viewbox-no-size.md new file mode 100644 index 000000000..99b830b4b --- /dev/null +++ b/.claude/skills/svg-icons/evals/plain-from-multicolour-logo/graders/01-viewbox-no-size.md @@ -0,0 +1,7 @@ +--- +type: llm +focus: trace +weight: 1 +--- + +acme-original.svg and acme-plain.svg both have viewBox exactly "0 0 128 128" and no width/height attributes on the root diff --git a/.claude/skills/svg-icons/evals/plain-from-multicolour-logo/graders/02-plain-one-path.md b/.claude/skills/svg-icons/evals/plain-from-multicolour-logo/graders/02-plain-one-path.md new file mode 100644 index 000000000..e6893ab00 --- /dev/null +++ b/.claude/skills/svg-icons/evals/plain-from-multicolour-logo/graders/02-plain-one-path.md @@ -0,0 +1,7 @@ +--- +type: llm +focus: trace +weight: 1 +--- + +acme-plain.svg contains exactly one and no other shapes, groups, strokes,