From 7f76399bf3c84181a2bd2c54d4a93b365e0788d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Kalsnes=20Hagen?= <43886029+Snailedlt@users.noreply.github.com> Date: Tue, 27 Oct 2026 19:46:37 +0100 Subject: [PATCH 01/26] fix: sort idris after icinga in devicon.json (#2798) devicon.json had idris before icinga, so the check-bot's "devicon.json is not sorted" check fails on every icon PR. Also reformats the moved entry to the file's usual 4-space indentation (it used tabs). Co-authored-by: Claude Opus 5.5 --- devicon.json | 48 +++++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/devicon.json b/devicon.json index 613d86579..6e848b7d2 100644 --- a/devicon.json +++ b/devicon.json @@ -6263,29 +6263,6 @@ }, "color": "#00c6e2", "aliases": [] - }, - { - "name": "idris", - "altnames": ["idris2"], - "tags": [ - "language", - "functional" - ], - "versions": { - "svg": [ - "original" - ], - "font": [ - "original" - ] - }, - "color": "#8a0819", - "aliases": [ - { - "base": "original", - "alias": "plain" - } - ] }, { "name": "icinga", @@ -6309,6 +6286,31 @@ "color": "#ffffff", "aliases": [] }, + { + "name": "idris", + "altnames": [ + "idris2" + ], + "tags": [ + "language", + "functional" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "original" + ] + }, + "color": "#8a0819", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, { "name": "ie10", "altnames": [ From fed87d5456808bdf45a168e61c91a23bb084788b Mon Sep 17 00:00:00 2001 From: Yash Date: Wed, 28 Oct 2026 00:31:20 +0530 Subject: [PATCH 02/26] fix: update Python version to 3.12 and adjust pip install command (#2799) * fix: update Python version to 3.12 and adjust pip install command * fix: update Python version to 3.12 in workflow files --- .github/workflows/check_icon_pr.yml | 4 ++-- .github/workflows/in_develop_labeler.yml | 6 +++--- .github/workflows/peek_icons.yml | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/check_icon_pr.yml b/.github/workflows/check_icon_pr.yml index e5e08ba2e..4c9341879 100644 --- a/.github/workflows/check_icon_pr.yml +++ b/.github/workflows/check_icon_pr.yml @@ -17,13 +17,13 @@ jobs: - uses: actions/setup-python@v5 if: ${{ !env.wrong_branch }} with: - python-version: 3.8 + python-version: 3.12 - name: Install dependencies if: ${{ !env.wrong_branch }} run: | python -m pip install --upgrade pip - pip install -r ./.github/scripts/requirements.txt + python -m pip install -r ./.github/scripts/requirements.txt - name: Run the check_svg script if: ${{ !env.wrong_branch }} diff --git a/.github/workflows/in_develop_labeler.yml b/.github/workflows/in_develop_labeler.yml index dd5ddba7e..f47d8b840 100644 --- a/.github/workflows/in_develop_labeler.yml +++ b/.github/workflows/in_develop_labeler.yml @@ -17,15 +17,15 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Setup Python v3.8 + - name: Setup Python v3.12 uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: 3.12 - name: Install dependencies run: | python -m pip install --upgrade pip - pip install -r ./.github/scripts/requirements.txt + python -m pip install -r ./.github/scripts/requirements.txt - name: Download workflow artifact uses: dawidd6/action-download-artifact@v7 diff --git a/.github/workflows/peek_icons.yml b/.github/workflows/peek_icons.yml index db49328d7..6a003492e 100644 --- a/.github/workflows/peek_icons.yml +++ b/.github/workflows/peek_icons.yml @@ -13,15 +13,15 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Setup Python v3.8 + - name: Setup Python v3.12 uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: 3.12 - name: Install dependencies run: | python -m pip install --upgrade pip - pip install -r ./.github/scripts/requirements.txt + python -m pip install -r ./.github/scripts/requirements.txt - name: Save the PR number in an artifact shell: bash From 52bbd2752659e7b7271144ed6bd70d972116c16a Mon Sep 17 00:00:00 2001 From: Yash Date: Wed, 28 Oct 2026 00:36:27 +0530 Subject: [PATCH 03/26] new icon: xai (original) (#2780) * feat: add xai icon and metadata to devicon.json * fix: add missing newline at end of xai-original.svg and correct formatting in devicon.json * feat: add alternative names for xai icon in devicon.json --- devicon.json | 28 ++++++++++++++++++++++++++++ icons/xai/xai-original.svg | 1 + 2 files changed, 29 insertions(+) create mode 100644 icons/xai/xai-original.svg diff --git a/devicon.json b/devicon.json index 6e848b7d2..1de54765f 100644 --- a/devicon.json +++ b/devicon.json @@ -16246,6 +16246,34 @@ }, "color": "#494949", "aliases": [] + }, + { + "name": "xai", + "altnames": [ + "X AI", + "X.ai" + ], + "tags": [ + "AI", + "assistant", + "language-model", + "llm" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "original" + ] + }, + "color": "#000000", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] }, { "name": "xamarin", diff --git a/icons/xai/xai-original.svg b/icons/xai/xai-original.svg new file mode 100644 index 000000000..a3a83cfe7 --- /dev/null +++ b/icons/xai/xai-original.svg @@ -0,0 +1 @@ + From d77d3a29b2c105f25d9e16eaaf333ab44d84c62a Mon Sep 17 00:00:00 2001 From: Yash Date: Wed, 28 Oct 2026 00:42:59 +0530 Subject: [PATCH 04/26] feat: add neon icon set with original, plain, and wordmark variations (#2783) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jørgen Kalsnes Hagen <43886029+Snailedlt@users.noreply.github.com> --- devicon.json | 29 +++++++++++++++++++++++++++ icons/neon/neon-original-wordmark.svg | 1 + icons/neon/neon-original.svg | 1 + icons/neon/neon-plain-wordmark.svg | 1 + 4 files changed, 32 insertions(+) create mode 100644 icons/neon/neon-original-wordmark.svg create mode 100644 icons/neon/neon-original.svg create mode 100644 icons/neon/neon-plain-wordmark.svg diff --git a/devicon.json b/devicon.json index 1de54765f..bd928b6b6 100644 --- a/devicon.json +++ b/devicon.json @@ -9056,6 +9056,35 @@ "color": "#018BFF", "aliases": [] }, + { + "name": "neon", + "altnames": [ + "neondb" + ], + "tags": [ + "serverless", + "database", + "sql" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain-wordmark" + ], + "font": [ + "original", + "plain-wordmark" + ] + }, + "color": "#34d59a", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, { "name": "neovim", "altnames": [], diff --git a/icons/neon/neon-original-wordmark.svg b/icons/neon/neon-original-wordmark.svg new file mode 100644 index 000000000..1e8e21a17 --- /dev/null +++ b/icons/neon/neon-original-wordmark.svg @@ -0,0 +1 @@ + diff --git a/icons/neon/neon-original.svg b/icons/neon/neon-original.svg new file mode 100644 index 000000000..dbc48a23d --- /dev/null +++ b/icons/neon/neon-original.svg @@ -0,0 +1 @@ + diff --git a/icons/neon/neon-plain-wordmark.svg b/icons/neon/neon-plain-wordmark.svg new file mode 100644 index 000000000..67d9ea34e --- /dev/null +++ b/icons/neon/neon-plain-wordmark.svg @@ -0,0 +1 @@ + From 3a7561127dead0ee674e7c42843e2a0b782e5370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Kalsnes=20Hagen?= <43886029+Snailedlt@users.noreply.github.com> Date: Wed, 28 Oct 2026 05:21:41 +0100 Subject: [PATCH 05/26] new icon: gnu (original) (#2789) * new icon: gnu (original) Closes devicons/devicon#2661 Co-Authored-By: Claude Opus 5.5 * fix: clean up gnu SVGs Removes no-op attributes left by the export (mix-blend-mode style, zero-width stroke attributes); one-colour logos are now a single path wound for the font's nonzero fill; line versions keep thin parts (like the + in Element Plus) instead of dropping them; postfix-line uses the entry's color. Co-Authored-By: Claude Opus 5.5 --------- Co-authored-by: Claude Opus 5.5 Co-authored-by: Yash --- devicon.json | 26 ++++++++++++++++++++++++++ icons/gnu/gnu-original.svg | 1 + 2 files changed, 27 insertions(+) create mode 100644 icons/gnu/gnu-original.svg diff --git a/devicon.json b/devicon.json index bd928b6b6..3a6f76114 100644 --- a/devicon.json +++ b/devicon.json @@ -5304,6 +5304,32 @@ "color": "#000000", "aliases": [] }, + { + "name": "gnu", + "altnames": [ + "gnu project" + ], + "tags": [ + "os", + "free software", + "linux" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "original" + ] + }, + "color": "#000000", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, { "name": "gnuradio", "altnames": [ diff --git a/icons/gnu/gnu-original.svg b/icons/gnu/gnu-original.svg new file mode 100644 index 000000000..fd9739841 --- /dev/null +++ b/icons/gnu/gnu-original.svg @@ -0,0 +1 @@ + From 68a769ce8bdf62dc153e65ecb9a7635ffc767858 Mon Sep 17 00:00:00 2001 From: Vamsi-2581 <245859299+Vamsi-2581@users.noreply.github.com> Date: Wed, 28 Oct 2026 13:33:28 +0530 Subject: [PATCH 06/26] new icon: drizzle (original) (#2784) * feat(icon): add Drizzle ORM original icon * feat(icon): add Drizzle ORM plain icon * feat(icon): register Drizzle ORM icon * fix(icon): preserve catalog formatting * fix: align Drizzle icon metadata with review * fix: optimize Drizzle SVG path precision * fix: use Drizzle original as the plain alias * fix: preserve source SVG path precision * Update drizzle-original.svg with new SVG design Replaced the original SVG content with a new design featuring updated paths and colors. * Add 'original' font to devicon.json --------- Co-authored-by: Yash --- devicon.json | 27 +++++++++++++++++++++++++++ icons/drizzle/drizzle-original.svg | 1 + 2 files changed, 28 insertions(+) create mode 100644 icons/drizzle/drizzle-original.svg diff --git a/devicon.json b/devicon.json index 3a6f76114..c56637c71 100644 --- a/devicon.json +++ b/devicon.json @@ -3643,6 +3643,33 @@ "color": "#470137", "aliases": [] }, + { + "name": "drizzle", + "altnames": [ + "Drizzle ORM" + ], + "tags": [ + "database", + "orm", + "typescript", + "javascript" + ], + "versions": { + "svg": [ + "original" + ], + "font": [ + "original" + ] + }, + "color": "#C5F74F", + "aliases": [ + { + "base": "original", + "alias": "plain" + } + ] + }, { "name": "dropwizard", "altnames": [], diff --git a/icons/drizzle/drizzle-original.svg b/icons/drizzle/drizzle-original.svg new file mode 100644 index 000000000..8b618b896 --- /dev/null +++ b/icons/drizzle/drizzle-original.svg @@ -0,0 +1 @@ + From c3a27117879e86850c05a66f4a711b6752ee8a19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Kalsnes=20Hagen?= <43886029+Snailedlt@users.noreply.github.com> Date: Wed, 28 Oct 2026 09:22:15 +0100 Subject: [PATCH 07/26] new icon: plsql (original, plain, line) (#2795) * new icon: plsql (original, plain, line) Closes devicons/devicon#2717 Co-Authored-By: Claude Opus 5.5 * fix: clean up plsql SVGs Removes no-op attributes left by the export (mix-blend-mode style, zero-width stroke attributes); one-colour logos are a single path wound for the font's nonzero fill; line versions keep thin parts instead of dropping them; postfix-line uses the entry's color. Co-Authored-By: Claude Opus 5.5 * fix: ungroup paths in plsql originals Applies the review suggestions from @Yashh56. Co-authored-by: Yash <141008488+Yashh56@users.noreply.github.com> * fix: remove export leftovers from plsql originals --------- Co-authored-by: Claude Opus 5.5 Co-authored-by: Yash <141008488+Yashh56@users.noreply.github.com> Co-authored-by: Yash --- devicon.json | 25 +++++++++++++++++++++++++ icons/plsql/plsql-line.svg | 1 + icons/plsql/plsql-original.svg | 1 + icons/plsql/plsql-plain.svg | 1 + 4 files changed, 28 insertions(+) create mode 100644 icons/plsql/plsql-line.svg create mode 100644 icons/plsql/plsql-original.svg create mode 100644 icons/plsql/plsql-plain.svg diff --git a/devicon.json b/devicon.json index c56637c71..84bf9a9bb 100644 --- a/devicon.json +++ b/devicon.json @@ -10777,6 +10777,31 @@ "color": "#3d4c73", "aliases": [] }, + { + "name": "plsql", + "altnames": [ + "pl/sql" + ], + "tags": [ + "language", + "database", + "oracle", + "sql" + ], + "versions": { + "svg": [ + "original", + "plain", + "line" + ], + "font": [ + "plain", + "line" + ] + }, + "color": "#f80000", + "aliases": [] + }, { "name": "pm2", "altnames": [], diff --git a/icons/plsql/plsql-line.svg b/icons/plsql/plsql-line.svg new file mode 100644 index 000000000..319a40647 --- /dev/null +++ b/icons/plsql/plsql-line.svg @@ -0,0 +1 @@ + diff --git a/icons/plsql/plsql-original.svg b/icons/plsql/plsql-original.svg new file mode 100644 index 000000000..006496a95 --- /dev/null +++ b/icons/plsql/plsql-original.svg @@ -0,0 +1 @@ + diff --git a/icons/plsql/plsql-plain.svg b/icons/plsql/plsql-plain.svg new file mode 100644 index 000000000..ec36a3ab2 --- /dev/null +++ b/icons/plsql/plsql-plain.svg @@ -0,0 +1 @@ + From 9999b9d15192a32a933b982c07c5a024b87eb9f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Kalsnes=20Hagen?= <43886029+Snailedlt@users.noreply.github.com> Date: Wed, 28 Oct 2026 09:24:45 +0100 Subject: [PATCH 08/26] update icon: firebase (original, original-wordmark, plain, plain-wordmark, line, line-wordmark) (#2788) * update icon: firebase (original, original-wordmark, plain, plain-wordmark, line, line-wordmark) Closes devicons/devicon#2204 Co-Authored-By: Claude Opus 5.5 * fix: remove sliver artifacts from firebase plain/line versions Cutting the gaps between colours at an angle left thin slivers and sharp spikes, which showed up in the line versions (seen in the peek screenshots). They're now removed by shrinking the shape slightly and growing it back. Co-Authored-By: Claude Opus 5.5 * fix: clean up firebase SVGs Removes no-op attributes left by the export (mix-blend-mode style, zero-width stroke attributes); line versions keep thin parts instead of dropping them. Co-Authored-By: Claude Opus 5.5 * fix: ungroup paths in firebase originals Applies the review suggestions from @Yashh56. Co-authored-by: Yash <141008488+Yashh56@users.noreply.github.com> * fix: remove export leftovers from firebase originals --------- Co-authored-by: Claude Opus 5.5 Co-authored-by: Yash <141008488+Yashh56@users.noreply.github.com> Co-authored-by: Yash --- devicon.json | 2 +- icons/firebase/firebase-line-wordmark.svg | 2 +- icons/firebase/firebase-line.svg | 2 +- icons/firebase/firebase-original-wordmark.svg | 2 +- icons/firebase/firebase-original.svg | 2 +- icons/firebase/firebase-plain-wordmark.svg | 2 +- icons/firebase/firebase-plain.svg | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/devicon.json b/devicon.json index 84bf9a9bb..b07000998 100644 --- a/devicon.json +++ b/devicon.json @@ -4480,7 +4480,7 @@ "line-wordmark" ] }, - "color": "#ffa000", + "color": "#dd2c00", "aliases": [] }, { diff --git a/icons/firebase/firebase-line-wordmark.svg b/icons/firebase/firebase-line-wordmark.svg index 050a30107..ec42c2c0d 100644 --- a/icons/firebase/firebase-line-wordmark.svg +++ b/icons/firebase/firebase-line-wordmark.svg @@ -1 +1 @@ - + diff --git a/icons/firebase/firebase-line.svg b/icons/firebase/firebase-line.svg index 595a22d7b..88beed0ec 100644 --- a/icons/firebase/firebase-line.svg +++ b/icons/firebase/firebase-line.svg @@ -1 +1 @@ - + diff --git a/icons/firebase/firebase-original-wordmark.svg b/icons/firebase/firebase-original-wordmark.svg index c724ec979..5eb1cfc2d 100644 --- a/icons/firebase/firebase-original-wordmark.svg +++ b/icons/firebase/firebase-original-wordmark.svg @@ -1 +1 @@ - + diff --git a/icons/firebase/firebase-original.svg b/icons/firebase/firebase-original.svg index 2d8fc46bf..550a8a0bb 100644 --- a/icons/firebase/firebase-original.svg +++ b/icons/firebase/firebase-original.svg @@ -1 +1 @@ - + diff --git a/icons/firebase/firebase-plain-wordmark.svg b/icons/firebase/firebase-plain-wordmark.svg index 0ece3ffa1..8d868a2be 100644 --- a/icons/firebase/firebase-plain-wordmark.svg +++ b/icons/firebase/firebase-plain-wordmark.svg @@ -1 +1 @@ - + diff --git a/icons/firebase/firebase-plain.svg b/icons/firebase/firebase-plain.svg index 294650789..5f9073611 100644 --- a/icons/firebase/firebase-plain.svg +++ b/icons/firebase/firebase-plain.svg @@ -1 +1 @@ - + From d63fe162c8553d36b470ab7cbbd1f0c779e3a671 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Kalsnes=20Hagen?= <43886029+Snailedlt@users.noreply.github.com> Date: Wed, 28 Oct 2026 10:20:55 +0100 Subject: [PATCH 09/26] new icon: juce (original, original-wordmark, plain, plain-wordmark, line, line-wordmark) (#2791) * new icon: juce (original, original-wordmark, plain, plain-wordmark, line, line-wordmark) Closes devicons/devicon#2708 Co-Authored-By: Claude Opus 5.5 * fix: clean up juce SVGs Removes no-op attributes left by the export (mix-blend-mode style, zero-width stroke attributes); one-colour logos are now a single path wound for the font's nonzero fill; line versions keep thin parts (like the + in Element Plus) instead of dropping them; postfix-line uses the entry's color. Co-Authored-By: Claude Opus 5.5 * fix: ungroup paths and remove export leftovers in juce originals --------- Co-authored-by: Claude Opus 5.5 --- devicon.json | 28 +++++++++++++++++++++++++++ icons/juce/juce-line-wordmark.svg | 1 + icons/juce/juce-line.svg | 1 + icons/juce/juce-original-wordmark.svg | 1 + icons/juce/juce-original.svg | 1 + icons/juce/juce-plain-wordmark.svg | 1 + icons/juce/juce-plain.svg | 1 + 7 files changed, 34 insertions(+) create mode 100644 icons/juce/juce-line-wordmark.svg create mode 100644 icons/juce/juce-line.svg create mode 100644 icons/juce/juce-original-wordmark.svg create mode 100644 icons/juce/juce-original.svg create mode 100644 icons/juce/juce-plain-wordmark.svg create mode 100644 icons/juce/juce-plain.svg diff --git a/devicon.json b/devicon.json index b07000998..07921c993 100644 --- a/devicon.json +++ b/devicon.json @@ -6991,6 +6991,34 @@ "color": "#505050", "aliases": [] }, + { + "name": "juce", + "altnames": [], + "tags": [ + "framework", + "audio", + "c++", + "plugins" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ], + "font": [ + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ] + }, + "color": "#8dc63f", + "aliases": [] + }, { "name": "jule", "altnames": [ diff --git a/icons/juce/juce-line-wordmark.svg b/icons/juce/juce-line-wordmark.svg new file mode 100644 index 000000000..e5f3c10c5 --- /dev/null +++ b/icons/juce/juce-line-wordmark.svg @@ -0,0 +1 @@ + diff --git a/icons/juce/juce-line.svg b/icons/juce/juce-line.svg new file mode 100644 index 000000000..bfe779580 --- /dev/null +++ b/icons/juce/juce-line.svg @@ -0,0 +1 @@ + diff --git a/icons/juce/juce-original-wordmark.svg b/icons/juce/juce-original-wordmark.svg new file mode 100644 index 000000000..4a2de9c8f --- /dev/null +++ b/icons/juce/juce-original-wordmark.svg @@ -0,0 +1 @@ + diff --git a/icons/juce/juce-original.svg b/icons/juce/juce-original.svg new file mode 100644 index 000000000..d9fbb38e0 --- /dev/null +++ b/icons/juce/juce-original.svg @@ -0,0 +1 @@ + diff --git a/icons/juce/juce-plain-wordmark.svg b/icons/juce/juce-plain-wordmark.svg new file mode 100644 index 000000000..6c98eac9a --- /dev/null +++ b/icons/juce/juce-plain-wordmark.svg @@ -0,0 +1 @@ + diff --git a/icons/juce/juce-plain.svg b/icons/juce/juce-plain.svg new file mode 100644 index 000000000..d78c1da36 --- /dev/null +++ b/icons/juce/juce-plain.svg @@ -0,0 +1 @@ + From 453d69462503fc506a2bd79d876cfc76b47ed60f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Kalsnes=20Hagen?= <43886029+Snailedlt@users.noreply.github.com> Date: Wed, 28 Oct 2026 10:30:43 +0100 Subject: [PATCH 10/26] new icon: nx (original, line) (#2794) * new icon: nx (original, line) Closes devicons/devicon#2639 Co-Authored-By: Claude Opus 5.5 * fix: clean up nx SVGs Removes no-op attributes left by the export (mix-blend-mode style, zero-width stroke attributes); one-colour logos are a single path wound for the font's nonzero fill; line versions keep thin parts instead of dropping them; postfix-line uses the entry's color. Co-Authored-By: Claude Opus 5.5 * fix: add wordmark aliases to nx, whose logo is its wordmark Co-Authored-By: Claude Opus 5.5 --------- Co-authored-by: Claude Opus 5.5 Co-authored-by: Yash --- devicon.json | 41 ++++++++++++++++++++++++++++++++++++++++ icons/nx/nx-line.svg | 1 + icons/nx/nx-original.svg | 1 + 3 files changed, 43 insertions(+) create mode 100644 icons/nx/nx-line.svg create mode 100644 icons/nx/nx-original.svg diff --git a/devicon.json b/devicon.json index 07921c993..ce91e000a 100644 --- a/devicon.json +++ b/devicon.json @@ -9910,6 +9910,47 @@ "color": "#00c48d", "aliases": [] }, + { + "name": "nx", + "altnames": [ + "nrwl" + ], + "tags": [ + "build", + "monorepo", + "javascript", + "typescript" + ], + "versions": { + "svg": [ + "original", + "line" + ], + "font": [ + "original", + "line" + ] + }, + "color": "#0c0c0d", + "aliases": [ + { + "base": "original", + "alias": "plain" + }, + { + "base": "original", + "alias": "original-wordmark" + }, + { + "base": "original", + "alias": "plain-wordmark" + }, + { + "base": "line", + "alias": "line-wordmark" + } + ] + }, { "name": "oauth", "altnames": [], diff --git a/icons/nx/nx-line.svg b/icons/nx/nx-line.svg new file mode 100644 index 000000000..6f698131d --- /dev/null +++ b/icons/nx/nx-line.svg @@ -0,0 +1 @@ + diff --git a/icons/nx/nx-original.svg b/icons/nx/nx-original.svg new file mode 100644 index 000000000..bb4799c36 --- /dev/null +++ b/icons/nx/nx-original.svg @@ -0,0 +1 @@ + From c1321ce42f462dc3aa6172843c968162802a3e1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Kalsnes=20Hagen?= <43886029+Snailedlt@users.noreply.github.com> Date: Wed, 28 Oct 2026 17:31:56 +0100 Subject: [PATCH 11/26] docs: replace CONTRIBUTING.md with links to the wiki (#2812) * docs: replace CONTRIBUTING.md with links to the wiki The guide moved to the wiki long ago, and the old copy kept going out of date. CONTRIBUTING.md now only links to the wiki pages, grouped like the wiki's sidebar. The two sections that weren't in the wiki yet ("Terms" and "Updating an Icon") get their own wiki pages. Closes devicons/devicon#1329 Co-Authored-By: Claude Opus 5.5 * docs: only link to the wiki, which has the overview Co-Authored-By: Claude Opus 5.5 --------- Co-authored-by: Claude Opus 5.5 --- CONTRIBUTING.md | 507 +----------------------------------------------- 1 file changed, 4 insertions(+), 503 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4efc27ec7..45c17487a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,506 +1,7 @@ -

Contributing to Devicon

+# Contributing to Devicon -

This guide has been moved to the Wiki and won't be updated any longer.

-
-

-First of all, thanks for taking the time to contribute! This project can only grow and live by your countless contributions. To keep this project maintainable, we have developed some guidelines for our contributors. -

+Thanks for taking the time to contribute! This project can only grow and live by your contributions. -

Table of Content

- +Our contributing guidelines live in the [wiki](https://github.com/devicons/devicon/wiki). New to contributing? Start with the [Overview on Submitting Icons](https://github.com/devicons/devicon/wiki/Overview-on-Submitting-Icons). -
-

Terms

-

Here are some terms that we will use in this repo:

-
    -
  1. "Technology" is used to describe a software, libraries, tool, etc...
  2. -
  3. "Icon" refers to the SVGs and icons version of a technology as a whole.
  4. -
  5. "SVG/SVG" refers to the svg versions of the Icons.
  6. -
  7. "icon" (lowercase) refers specficially to the font icon versions of the Icons.
  8. -
- -
-

What Icons Do We Accept?

-

Devicon only accepts Icons of development languages and tools.

-

Development refers to programming or programming-related jobs.

-

Tools can be software, OS, services, etc. that helps with development. It must be specifically related to development (so software like Microsoft Word or Google Calendar won't be accepted since it's too general).

- -Special Cases (see this discussion for more details) -
    -
  • Tech companies used to be accepted in the repository. However, we do not accept them anymore. Icons like Facebook, Twitter, etc., are kept due to backward compatibility.
  • -
      -
    • We still accept their icons if they represent a service and not the company itself.
    • -
    • Ex. AWS is accepted since their names refer to their services. We will not accept Amazon since that's the parent company that includes non-tech related tools
    • -
    -
  • Related fields like graphic designs or game development. Since many "development" jobs require people to know related fields, some softwares will be accepted in Devicon even though they aren't strictly "development tools".
  • - -
  • General tools that are well known in the tech industries. Things like Trello, Slack, etc., are accepted under this category. Unfortunately, we won't accept Discord since its use is still too general. This will be treated on a case-by-case basis.
  • -
- - -
-

Requesting an Icon

-

To request an icon, please create an issue in the repository, and follow these guidelines:

-
    -
  • Search for other issues already requesting the icon
  • -
  • If an issue doesn't exist, create an issue naming it "Icon request: name-of-the-icon".
  • -
  • Please create separate issues for each icon
  • -
  • Use the Issue Template and fill out the proper information
  • -
  • Please include links where the icon can be found. Ex: the icon's official webpage/wiki article.
  • -
- -
-

Overview on Submitting Icons

-

Here is what you have to do to submit your icons to the repo.

-
    -
  1. Create the SVGs for each SVG versions that you have. Follow the convention listed.
  2. -
  3. Put the SVGs of each Icon into its own folders in /icons
  4. -
  5. Update the devicon.json to include the new Icon
  6. -
  7. Create a separated pull request (PR) towards the develop branch for each Icon.
  8. -
  9. Fill out the info as stated in the PR template.
  10. -
  11. Include the name of the Icon in the pull request title in this format: new icon: Icon name (versions)
  12. -
  13. Optional: Reference the issues regarding the new icon and label the PR `feature:icon`.
  14. -
  15. Some bots will check your SVGs. If there are any errors, please fix them as instructed.
  16. -
  17. Wait for a maintainer to review your changes. They will run the peek-bot to check your icons.
  18. -
  19. If there are no issues, they will merge it using squash merging. If there are any problems, they will let you know, and give you a chance to fix them.
  20. -
-

Note: Due to our recent bot upgrades, icon contributors don't have to optimize/minify their SVGs anymore!

- -
-

Versions and Naming Conventions

-

For the technology name, make the file and folder name lowercase and concatenate them. For example:

-
    -
  • AngularJS becomes angularjs or just angular
  • -
  • Amazon Web Services becomes amazonwebservices
  • -
  • Microsoft SQL Server becomes microsoftsqlserver
  • -
-
- -

Each icon/SVG can come in different versions:

- - - - - - - - - - - -
-

original: the original logo. Can contain multiple colors.

- -

devicon-original.svg

-
-

plain: a one-color version of the original logo. Note that the icon version will be stripped of all colors so you don't have to strip beforehand.

- -

devicon-plain.svg

-
-

line: a one-color, line version of the original logo. Note that the icon version will be stripped of all colors so you don't have to strip beforehand.

- -

devicon-line.svg

-
-

original-wordmark: similar to the above but must contain the name of the technology.

- -

devicon-original-wordmark.svg

-
-

plain-wordmark: similar to the above but must contain the name of the technology. Note that the icon version will be stripped of all colors so you don't have to strip beforehand.

- -

devicon-plain-wordmark.svg

-
-

line-wordmark: similar to the above but must contain the name of the technology. Note that the icon version will be stripped of all colors so you don't have to strip beforehand.

- -

devicon-line-wordmark.svg

-
-
- -

Notes:

-

    -
  • - You don't need to have 6 versions for each icon. An icon can only have one or two versions available. Just keep in mind that the minimum is 1 and the maximum 6 (for now). You must also have at least one version that can be make into an icon. -
  • -
  • - The plain and line versions (with or without wordmark) are designed to be available in the final icon font. -
  • -
  • - The original SVG version do not need to be simple and can contain numerous colors/gradients. However, if it's intended to be made into an icon, keep it simple. -
  • -
  • - Some icons are really simple (ex. Apple), so the original version can be used as the plain version and as the icon font. In this case, you'll only need to make one of the version (either original or plain) and name them original. -
      -
    • If you are a long time contributor: aliases are no longer mandatory. If you are wondering which name to use, just pick original
    • -
    -
  • -
- -
-

SVG Standards

-

Before you submit your logos/SVGs, please ensure that they meet the following standard:

-
    -
  • The background must be transparent.
  • -
  • The icon is centered horizontally and vertically within the viewBox.
  • -
  • The SVG name follows this convention: (Technology name)-(original|plain|line)(-wordmark?).
  • -
  • The plain and line versions (with or without wordmark) need to stay as simple as possible. They must have only one color and the paths are united. The color will be removed when being turned into icons so the .svg can have any color. -
  • -
  • Each .svg file contains one version of an icon in a 0 0 128 128 viewbox. You can use a service like resize-image for scaling the SVG.
  • -
  • The icon's strokes and texts must be fills. This is to satisfy our conversion website's requirements.
  • -
  • Each .svg must use the fill attribute instead of using classes for colors. This is to prevent class name clashing when using inline SVG. See here for more details.
  • -
- -
-

Organizational Guidelines

-
    -
  • Each icon has its own folder located in the icons folder.
  • -
  • The folder name must matches the name value uses for the SVG files. Ex: `react-original.svg` should go inside a `react` folder, `microsoftsqlserver` icons should go inside a `microsoftsqlserver` folder.
  • -
  • All the .svg files for the Icon must go in the same folder.
  • -
  • Optional: Each folder may contain one .eps file. The .eps file should contains all available versions of an icon. Each version is contained in a 128px by 128px artboard
  • -
- -
-

Updating the devicon.json

-

- Before you open a PR into Devicon, you must update the devicon.json. This is essential for our build script to work and to document your work. -

-

- Here is the object that each of your Icon must have: -

- -
-  
-    {
-        // the official name of the technology. Must be lower case, no space and don't have the dash '-' character.
-        "name": string, 
-
-        // list of tags relating to the technology for search purpose
-        "tags": string[], 
-
-        // keep tracks of the different versions that you have.
-        "versions": {
-            // list the SVGs that you have 
-            "SVG": VersionString[], 
-
-            // list the fonts acceptable versions that you have
-            "font": VersionString[] 
-        },
-
-        // the main color of the logo. Only track 1 color
-        "color": string, 
-
-        // keeps track of the aliases for the font versions ONLY
-        // see the Example section for more details
-        // NOTE: this attribute is not required from now on (see this)
-        // it is only being kept for backward compatibility
-        "aliases": AliasObj[] 
-    }
-  
-
- -

- Here is what VersionString means: -

-
    -
  1. It's the version part of an SVG file's name
  2. -
  3. If you have "html5-original", the version string would be "original"
  4. -
  5. If you have "react-line-wordmark", the version string would be "line-wordmark"
  6. -
  7. See naming conventions section for more details
  8. -
- -

- Here is the AliasObj interface: -

-
-     
-    {
-        "base": VersionString, // the base version
-        "alias": VersionString // the alias version that's similar to the base version
-    }
-  
-
-
- -

Example of Submitting An Icon

-

-As an example, let's assume you have created the SVGs for Redhat and Amazon Web Services logos. -

-

For the Redhat SVG, you have the "original", "original-wordmark", "plain", and "plain-wordmark" versions.

-

For the Amazon Web Services SVGs, you have the "original", "original-wordmark", "plain-wordmark" versions. The "original" version is simple enough to be a "plain" version as well. Note that we are not using the acronym AWS.

-
    -
  1. - Put the SVGs for each logo that you have into its own folders in /icons -
      -
    • This means you would create two folders: one for amazonwebservices and one for redhat
    • -
    • Note: don't do this in the same commits; we want to have each Icon in its own PR.
    • -
    -
  2. -
  3. - Update the devicon.json -
      -
    • For redhat, you would do this -
      -          
      -            {
      -              "name": "redhat",
      -              "tags": [
      -                "server",
      -                "linux"
      -              ],
      -              "versions": {
      -                "SVG": [ // here are the versions that are available in svgs
      -                  "original",
      -                  "original-wordmark",
      -                  "plain",
      -                  "plain-wordmark"
      -                ],
      -                "font": [ // here are the versions that will be used to create icons
      -                  "plain",
      -                  "plain-wordmark"
      -                ]
      -              },
      -              "color": "#e93442", // note the '#' character
      -              "aliases": [] // no aliases in this case
      -            },
      -          
      -        
      -
    • -
    • For the amazonwebservices, you would do this -
      -          
      -            {
      -              "name": "amazonwebservices", 
      -              "tags": [
      -                "cloud",
      -                "hosting",
      -                "server"
      -              ],
      -              "versions": {
      -                "SVG": [ // here are the versions that are available in svgs
      -                  "original",
      -                  "original-wordmark",
      -                  "plain-wordmark"
      -                ],
      -                "font": [ // here are the versions that will be used to create icons
      -                  "original", // "original" is simple enough to be used as the plain icon so we'll add "plain" to the aliases below
      -                  "plain-wordmark",
      -                  // note that the alias "plain" is not listed here. It must be listed in the `aliases` attribute
      -                ]
      -              },
      -              "color": "#F7A80D", // note the '#' character
      -              "aliases": [
      -                {
      -                    "base": "original", // here is the base version that we will upload to Icomoon
      -                    "alias": "plain" // this is its alias. Our script will create a reference so users can search using "original" or "plain" for this icon
      -                    // note that you don't provide aliases for the SVG version. If "original" can't be made into a font, there's no need to provide it with a plain alias
      -                    // note that this is now optional. You do not need to create aliases from now on. The attribute needs to stay though.
      -                }
      -              ]
      -            }
      -          
      -        
      -
    • -
    -
  4. -
  5. Create a separate pull request (PR) for each Icon. -
      -
    • This means you would have to create one PR for Amazon Web Services and one PR for Redhat.
    • -
    -
  6. -
  7. - Include the name of the icon in the pull request. Follow this format: "new icon: Icon name (versions}})" -
      -
    • For Amazon Web Services, your PR title should be "new icon: amazonwebservices (original, original-wordmark, plain-wordmark)"
    • -
    • For Redhat, your PR title should be "new icon: redhat (original, original-wordmark, plain, plain-wordmark)"
    • -
    -
  8. -
  9. For the rest of the steps, you can follow Overview on Submitting Icon
  10. -
- -
-

Updating an Icon

-

- Sometimes, a company will update their logo or someone spotted an error in the SVG/icon that needs to be fixed. This means the current icon in our repository might need an update. The steps to do this is simple: -

-
    -
  1. - Create a new commit to fix the SVGs. -
  2. -
  3. - Open a pull request based on the `develop` branch. -
  4. -
  5. - IMPORTANT: name the pull request update icon: icon-name (versions). Basically, follow the Overview on Submitting Icon but replace the new with update in name of request with the above. -
  6. -
  7. - Follow the rest of the steps as laid out in Overview on Submitting Icon. -
  8. -
- -
-

Maintainer/Reviewer/Teams

-

- Devicon is living by it's contributors and maintainers. Everyone can and is asked to contribute to this project. - You don't have to be in a team to contribute! -

-

- The branches master and develop are protected branches and only members - with corresponding permissions (see teams below) are able to push changes to them. - Additional branches must follow the pattern username/feature/description. - The /feature/ indicates that a change is made to existing code (regardless - if it's a fix, refactor or actual feature). The naming convention is based on the gitflow-workflow. -

-

For organisational purposes we introduced teams with permissions and responsibilities:

-
-
Supporter (@devicons/supporter)
-
- Members of this team are responsible for reviewing pull request (auto assigned), managing issues and preparing the upcoming release.
- Supporters have Write access to the repository (allowing them to create own branches) - and are allowed to push changes to the develop branch (pull request and status checks required). -
-
Maintainer (@devicons/maintainer)
-
- Maintainer role inherits from the 'Supporter' role and adds Maintainer permission - to the repository. - Members of this team are allowed to publish a new release (push master branch after pull - request and status checks). -
-
-

- Wanna join the team? Please open a public discussion where - you introduce yourself.
- New member requests have to be approved by all active members of the team Maintainer. Every member - of this team has a veto permission to reject a new member.
-

- -
-

The Build Script: how it works and its quirks

-

We rely on GitHub Actions, Python, Selenium, Imgur, and Gulp to automate our tasks. Please feel free to take a look at the workflow files. The codes should be clear enough to follow along.

- -

Here are the main bots/script that we use:

-
    -
  • peek-bot: Upload the icons to Icomoon and see what it looks like. Doesn't download any icons at this time.
  • -
  • build-bot: Build the icons by uploading them to Icomoon and download the resulting icon files. Also update the css file
  • -
  • optimize-bot: Optimize the SVGs by minifying them and prefixing their IDs with the file names. This is done so using inline SVGs from this repository will not cause ID clash.
  • -
  • check-SVG-bot: Check the SVGs uploaded and ensure they have the correct view box, fills, etc..
  • -
  • npm-release-bot: Update the NPM package.
  • -
  • release-message-bot: Create the release message for the PR.
  • -
- -

Here are the modular tasks in the build script:

- - -
-

Common Bugs and Solutions

-

There are some bugs that the build scripts might run into. Listed below are the common ones and their solutions

-
    -
  1. No connection could be made because the target machine actively refused it. (os error 10061) -
      -
    • See this action for an example.
    • -
    • Caused by Selenium being unable to connect to the Icomoon website. It is unknown why this happens but the hypothesis is Icomoon blocks Selenium's multiple connection request and treats them as bots. See this.
    • -
    • Solution: wait for a few minutes and rerun the script. Repeat until it works.
    • -
    -
  2. -
  3. SHA Integrity -
      -
    • See this action for an example.
    • -
    • Caused by the package-lock.json. Most likely the result of a dependabot update but not 100% sure.
    • -
    • Solution: Remove the package-lock.json and run `npm install` to generate a new file. Commit and push.
    • -
    -
  4. -
  5. Wrong PR Title -
      -
    • The bot-peek script relies on the PR title to find the icon that was added in the PR. If the format doesn't match what is specified in Overview on Submitting Icon, the bot will fail.
    • -
    • Solution: Ensure the name of the PR follows the convention.
    • -
    -
  6. -
  7. Icon created by Icomoon contains strange lines that aren't in the SVG -
      -
    • See this PR's peek result.
    • -
    • This is caused by a bug in Icomoon's parser (see this).
    • -
    • Solution: Luckily this is an extremely rare case. Try remaking the SVG in a different way (using different paths/shapes). If your text/paths are joined with another object (say, the logo), try splitting them into individual paths (see this PR). You can always test using Icomoon to see if your fix works.
    • -
    -
  8. -
- -

Discord server

-

-We are running a Discord server. You can go here to talk, discuss, and more with the maintainers and other people, too. Here's the invitation: https://discord.gg/hScy8KWACQ. If you don't have a GitHub account but want to suggest ideas or new icons, you can do that here in our Discord channel. -The Discord server is unofficial, and Devicons is still being maintained via GitHub. -

- -

Release strategy, conventions, preparation and execution

-
Release strategy
-

Devicon does not follow a strict release plan. A new release is depended on current amount of contributions, required bugfixes/patches and will be discussed by the team of maintainers.

-

Generally speaking: A new release will be published when new icons are added or a bug was fixed. When it's predictable that multiple icons are added in a foreseeable amount of time they are usually wrapped together.

-
Conventions
-

The version naming follows the rules of Semantic Versioning. Given a version number MAJOR.MINOR.PATCH, increment the:

-
    -
  • MAJOR version when you make incompatible API changes,
  • -
  • MINOR version when you add functionality (like a new icon) in a backwards compatible manner, and
  • -
  • PATCH version when you make backwards compatible bug fixes.
  • -
- -
Release preparation and execution
-
    -
  1. Define the next release version number based on the conventions
  2. -
  3. Checkout development as draft-release branch
  4. -
  5. Bump the package version using npm version vMAJOR.MINOR.PATCH -m "bump npm version to vMAJOR.MINOR.PATCH" (see #487)
  6. -
  7. Push the branch draft-release
  8. -
  9. Manually trigger the workflow build_icons.yml (which has a workflow_dispatch event trigger) and select the branch draft-release as target branch. This will build a font version of all icons using icomoon and automatically creates a pull request to merge the build result back into draft-release
  10. -
  11. Review and approve the auto-create pull request created by the action of the step above
  12. -
  13. Create a pull request towards development. Mention the release number in the pull request title (like "Build preparation for release vMAJOR.MINOR.PATCH). -
      -
    • - Add information about all new icons, fixes, features and enhancements in the description of the pull request. -
    • -
    • - Take the PRs/commits as a guideline. It's also a good idea to mention and thank all contributions who participated in the release (take description of #504 as an example). -
    • -
    • - We now have a script that will do this for us. Check the `build-bot`'s PR message in the last step. There should be a section where it displays the features that have been added to the release. You can copy the markdown there and use it for the release message. -
    • -
    -
  14. -
  15. Wait for review and approval of the pull request (you can perform a squash-merge)
  16. -
  17. Once merged create a pull request with BASE master and HEAD development. Copy the description of the earlier pull request.
  18. -
  19. Since it was already approved in the 'development' stage a maintainer is allowed to merge it (DON'T perform a squash-merge).
  20. -
  21. Create a new release using the format "Release vMAJOR.MINOR.PATCH" as tag and release title. Use the earlier created description as description of the release.
  22. -
  23. Publishing the release will trigger the npm_publish.yml workflow which will execute a npm publish leading to a updated npm package (vMAJOR.MINOR.PATCH).
  24. -
- -

Recommended resources and tools

- -| Tool Name | Link | Description & Usage | -| :----------------- | :------------------------------------------------- | :------------------------------------------------- | -| Inkscape | https://inkscape.org/ | Desktop application for editing and Making SVG's | -| Visual Studio Code | https://code.visualstudio.com/ | A code editor for editing code | -| vscode.dev | https://vscode.dev/ | Visual Studio Code in the browser | -| Iloveimg | https://www.iloveimg.com/resize-image/resize-svg | Resizing SVG's | -| svgviewer.dev | https://www.svgviewer.dev/ | View, save, and optimize SVGs | +Questions? Ask in [GitHub Discussions](https://github.com/devicons/devicon/discussions) or our [Discord community](https://github.com/devicons/devicon/wiki/Discord-community). From f28138619b1e6a725a985d9dbdf13938f522baea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Kalsnes=20Hagen?= <43886029+Snailedlt@users.noreply.github.com> Date: Wed, 28 Oct 2026 18:34:05 +0100 Subject: [PATCH 12/26] new icon: informatica (original, original-wordmark, plain, plain-wordmark, line, line-wordmark) (#2790) * new icon: informatica (original, original-wordmark, plain, plain-wordmark, line, line-wordmark) Closes devicons/devicon#1631 Co-Authored-By: Claude Opus 5.5 * fix: remove sliver artifacts from informatica plain/line versions Cutting the gaps between colours at an angle left thin slivers and sharp spikes, which showed up in the line versions (seen in the peek screenshots). They're now removed by shrinking the shape slightly and growing it back. Co-Authored-By: Claude Opus 5.5 * fix: clean up informatica SVGs Removes no-op attributes left by the export (mix-blend-mode style, zero-width stroke attributes); one-colour logos are now a single path wound for the font's nonzero fill; line versions keep thin parts (like the + in Element Plus) instead of dropping them; postfix-line uses the entry's color. Co-Authored-By: Claude Opus 5.5 * fix: ungroup paths and remove export leftovers in informatica originals * fix: match informatica wordmark symbols to original-wordmark The plain-wordmark and line-wordmark symbols were scaled down from the plain/line icons without scaling the arc radii of the rounded corners, which distorted the diamond. Rebuild them by properly scaling the plain/line symbols onto the original-wordmark symbol's position, and reuse the original-wordmark lettering so all three wordmarks line up. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_0176z2bCyzHBAnB3V4q2ToTs * fix: include the Salesforce tagline in the informatica wordmarks Co-Authored-By: Claude Opus 5.5 * fix: clean letters and outlined cloud in informatica plain/line wordmarks Co-Authored-By: Claude Opus 5.5 --------- Co-authored-by: Claude Opus 5.5 --- devicon.json | 28 +++++++++++++++++++ .../informatica/informatica-line-wordmark.svg | 1 + icons/informatica/informatica-line.svg | 1 + .../informatica-original-wordmark.svg | 1 + icons/informatica/informatica-original.svg | 1 + .../informatica-plain-wordmark.svg | 1 + icons/informatica/informatica-plain.svg | 1 + 7 files changed, 34 insertions(+) create mode 100644 icons/informatica/informatica-line-wordmark.svg create mode 100644 icons/informatica/informatica-line.svg create mode 100644 icons/informatica/informatica-original-wordmark.svg create mode 100644 icons/informatica/informatica-original.svg create mode 100644 icons/informatica/informatica-plain-wordmark.svg create mode 100644 icons/informatica/informatica-plain.svg diff --git a/devicon.json b/devicon.json index ce91e000a..e7d8a5206 100644 --- a/devicon.json +++ b/devicon.json @@ -6493,6 +6493,34 @@ } ] }, + { + "name": "informatica", + "altnames": [], + "tags": [ + "data", + "etl", + "integration", + "cloud" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ], + "font": [ + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ] + }, + "color": "#ff4d00", + "aliases": [] + }, { "name": "inkscape", "altnames": [], diff --git a/icons/informatica/informatica-line-wordmark.svg b/icons/informatica/informatica-line-wordmark.svg new file mode 100644 index 000000000..c6947a9e0 --- /dev/null +++ b/icons/informatica/informatica-line-wordmark.svg @@ -0,0 +1 @@ + diff --git a/icons/informatica/informatica-line.svg b/icons/informatica/informatica-line.svg new file mode 100644 index 000000000..e0d66bdf9 --- /dev/null +++ b/icons/informatica/informatica-line.svg @@ -0,0 +1 @@ + diff --git a/icons/informatica/informatica-original-wordmark.svg b/icons/informatica/informatica-original-wordmark.svg new file mode 100644 index 000000000..9697c8ddc --- /dev/null +++ b/icons/informatica/informatica-original-wordmark.svg @@ -0,0 +1 @@ + diff --git a/icons/informatica/informatica-original.svg b/icons/informatica/informatica-original.svg new file mode 100644 index 000000000..e3f5ad80b --- /dev/null +++ b/icons/informatica/informatica-original.svg @@ -0,0 +1 @@ + diff --git a/icons/informatica/informatica-plain-wordmark.svg b/icons/informatica/informatica-plain-wordmark.svg new file mode 100644 index 000000000..b5789627e --- /dev/null +++ b/icons/informatica/informatica-plain-wordmark.svg @@ -0,0 +1 @@ + diff --git a/icons/informatica/informatica-plain.svg b/icons/informatica/informatica-plain.svg new file mode 100644 index 000000000..287ffbd42 --- /dev/null +++ b/icons/informatica/informatica-plain.svg @@ -0,0 +1 @@ + From 54a1230bb0adae0d54238ac97766c48d5c6c9112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Kalsnes=20Hagen?= <43886029+Snailedlt@users.noreply.github.com> Date: Wed, 28 Oct 2026 19:16:29 +0100 Subject: [PATCH 13/26] ci: check PR titles with a workflow instead of the semantic-prs app (#2813) * ci: check PR titles with a workflow instead of the semantic-prs app The Ezard/semantic-prs app parses titles as conventional commits, whose types are one word, so the configured 'new icon' / 'update icon' types never match and every icon PR fails 'Semantic PR'. pr_title.yml checks the same rules (plus the icon formats) with a few lines of github-script, keeps the check name, and explains the expected format in the job summary. semantic.yml now only turns the app off. Co-Authored-By: Claude Opus 5.5 * ci: address review of the PR title check - delete semantic.yml (the app gets uninstalled) - run on ubuntu-latest - pin github-script to a commit SHA - show the title as text in the job summary - drop the history comment Co-Authored-By: Claude Opus 5.5 --------- Co-authored-by: Claude Opus 5.5 --- .github/semantic.yml | 24 ---------------------- .github/workflows/pr_title.yml | 37 ++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 24 deletions(-) delete mode 100644 .github/semantic.yml create mode 100644 .github/workflows/pr_title.yml diff --git a/.github/semantic.yml b/.github/semantic.yml deleted file mode 100644 index 62ebf5e07..000000000 --- a/.github/semantic.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -# This is the configuration file for https://github.com/Ezard/semantic-prs - -enabled: true -titleOnly: true # We only use the PR title as we squash and merge -commitsOnly: false -titleAndCommits: false -anyCommit: false -allowMergeCommits: false -allowRevertCommits: true -targetUrl: 'https://github.com/devicons/devicon/blob/master/.github/semantic.yml' -types: - # default conventional commit types (for non icon PRs) - - 'chore' - - 'ci' - - 'docs' - - 'feat' - - 'fix' - - 'refactor' - - 'style' - - 'test' - # custom devicon types (for icon PRs) - - 'new icon' - - 'update icon' diff --git a/.github/workflows/pr_title.yml b/.github/workflows/pr_title.yml new file mode 100644 index 000000000..927048cf8 --- /dev/null +++ b/.github/workflows/pr_title.yml @@ -0,0 +1,37 @@ +name: PR Title +# PRs are squash-merged, so the PR title becomes the commit message +# and a line in the release notes. This checks it follows the format: +# new icon: () update icon: () +# [(scope)][!]: (conventional commits, for everything else) +# Fixing the title re-runs this check. +on: + pull_request: + types: [opened, edited, synchronize, reopened] + +permissions: {} + +jobs: + title: + name: Semantic PR + runs-on: ubuntu-latest + steps: + - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 + with: + script: | + const title = context.payload.pull_request.title; + const types = ['new icon', 'update icon', 'feat', 'fix', 'docs', 'chore', 'ci', 'refactor', 'style', 'test', 'perf', 'build', 'revert']; + const conventional = new RegExp(`^(${types.join('|')})(\\([\\w$.\\-*/ ,]+\\))?!?: \\S`); + if (conventional.test(title) || /^Revert ".+"$/.test(title)) { + core.info(`"${title}" is a valid PR title.`); + return; + } + // The summary is rendered as HTML/Markdown: show the title as text + const shown = title.replace(/[<>&`]/g, c => `&#${c.charCodeAt(0)};`); + core.summary.addRaw([ + `"${shown}" isn't a valid PR title. The title becomes the commit message and the release-notes line, so it needs one of these formats:`, + '', + '- `new icon: ()` or `update icon: ()`, e.g. `new icon: vlang (original, plain)`', + `- \`: \`, e.g. \`fix: correct the jekyll wordmark\`, where type is one of ${types.slice(2).map(t => '`' + t + '`').join(', ')}`, + ].join('\n')); + await core.summary.write(); + core.setFailed(`Invalid PR title: "${title}". See the job summary for the expected format.`); From dd1b1ab90d5b930fd55444719c265ea36287abc3 Mon Sep 17 00:00:00 2001 From: Yash Date: Wed, 28 Oct 2026 23:53:38 +0530 Subject: [PATCH 14/26] new icon: gemini (original, original-wordmark, plain, plain-wordmark, line, line-wordmark ) (#2811) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add gemini icon set with original and plain variations * Implement code changes to enhance functionality and improve performance * Update icons/gemini/gemini-plain.svg Co-authored-by: Jørgen Kalsnes Hagen <43886029+Snailedlt@users.noreply.github.com> * Add Gemini icons: plain wordmark and wordmark line SVGs * Add Gemini line wordmark SVG icon * Refactor SVG icons for Gemini: Update gemini-line-wordmark.svg and gemini-line.svg to improve structure and styling * Update icons/gemini/gemini-line-wordmark.svg Co-authored-by: Jørgen Kalsnes Hagen <43886029+Snailedlt@users.noreply.github.com> * Update icons/gemini/gemini-plain-wordmark.svg Co-authored-by: Jørgen Kalsnes Hagen <43886029+Snailedlt@users.noreply.github.com> * Update icons/gemini/gemini-original-wordmark.svg Co-authored-by: Jørgen Kalsnes Hagen <43886029+Snailedlt@users.noreply.github.com> * Update icons/gemini/gemini-line.svg Co-authored-by: Jørgen Kalsnes Hagen <43886029+Snailedlt@users.noreply.github.com> --------- Co-authored-by: Jørgen Kalsnes Hagen <43886029+Snailedlt@users.noreply.github.com> --- devicon.json | 29 +++++++++++++++++++++++ icons/gemini/gemini-line-wordmark.svg | 1 + icons/gemini/gemini-line.svg | 1 + icons/gemini/gemini-original-wordmark.svg | 1 + icons/gemini/gemini-original.svg | 1 + icons/gemini/gemini-plain-wordmark.svg | 1 + icons/gemini/gemini-plain.svg | 1 + 7 files changed, 35 insertions(+) create mode 100644 icons/gemini/gemini-line-wordmark.svg create mode 100644 icons/gemini/gemini-line.svg create mode 100644 icons/gemini/gemini-original-wordmark.svg create mode 100644 icons/gemini/gemini-original.svg create mode 100644 icons/gemini/gemini-plain-wordmark.svg create mode 100644 icons/gemini/gemini-plain.svg diff --git a/devicon.json b/devicon.json index e7d8a5206..263b602ca 100644 --- a/devicon.json +++ b/devicon.json @@ -4925,6 +4925,35 @@ } ] }, + { + "name": "gemini", + "altnames": [ + "google gemini" + ], + "tags": [ + "AI", + "llm", + "assistant" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ], + "font": [ + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ] + }, + "color": "#3581E5", + "aliases": [] + }, { "name": "gentoo", "altnames": [], diff --git a/icons/gemini/gemini-line-wordmark.svg b/icons/gemini/gemini-line-wordmark.svg new file mode 100644 index 000000000..480f67c61 --- /dev/null +++ b/icons/gemini/gemini-line-wordmark.svg @@ -0,0 +1 @@ + diff --git a/icons/gemini/gemini-line.svg b/icons/gemini/gemini-line.svg new file mode 100644 index 000000000..e1814fa35 --- /dev/null +++ b/icons/gemini/gemini-line.svg @@ -0,0 +1 @@ + diff --git a/icons/gemini/gemini-original-wordmark.svg b/icons/gemini/gemini-original-wordmark.svg new file mode 100644 index 000000000..027c4cd23 --- /dev/null +++ b/icons/gemini/gemini-original-wordmark.svg @@ -0,0 +1 @@ + diff --git a/icons/gemini/gemini-original.svg b/icons/gemini/gemini-original.svg new file mode 100644 index 000000000..a511f62e2 --- /dev/null +++ b/icons/gemini/gemini-original.svg @@ -0,0 +1 @@ + diff --git a/icons/gemini/gemini-plain-wordmark.svg b/icons/gemini/gemini-plain-wordmark.svg new file mode 100644 index 000000000..f70d1e3c4 --- /dev/null +++ b/icons/gemini/gemini-plain-wordmark.svg @@ -0,0 +1 @@ + diff --git a/icons/gemini/gemini-plain.svg b/icons/gemini/gemini-plain.svg new file mode 100644 index 000000000..03255fec5 --- /dev/null +++ b/icons/gemini/gemini-plain.svg @@ -0,0 +1 @@ + From 0ca9d758ad5254d65f3676aaabeec179e6e0e0b7 Mon Sep 17 00:00:00 2001 From: Vamsi-2581 <245859299+Vamsi-2581@users.noreply.github.com> Date: Thu, 29 Oct 2026 00:51:19 +0530 Subject: [PATCH 15/26] new icon: postgis (original, original-wordmark, plain, plain-wordmark, line, line-wordmark) (#2785) * feat: add PostGIS icon (#1689) * feat: add PostGIS plain icon (#1689) * feat: register PostGIS icon (#1689) * fix: preserve detail in PostGIS plain icon * chore: remove unusable PostGIS plain icon * feat: register PostGIS original icon * fix: add PostGIS plain variant metadata * fix: optimize PostGIS original SVG * feat: add monochrome PostGIS plain SVG * fix: clean PostGIS SVG metadata * fix: preserve PostGIS plain path precision * Optimized the icon and added a newline * fix: rebuild postgis icons and add wordmark and line versions - original: the official brand.svg globe, optimized - plain: globe silhouette with the coastlines cut in as gaps - line: the globe's rim and coastlines - wordmarks: globe + "PostGIS" lettering traced from the official postgis-logo-horizontal.png, as in the postgis.net header - devicon.json: font versions are plain/line(-wordmark); colour from the logo Co-Authored-By: Claude Opus 5.5 * fix: postgis plain as the rim with filled continents Co-Authored-By: Claude Opus 5.5 * fix: postgis plain as the line version with filled continents Co-Authored-By: Claude Opus 5.5 * fix: postgis plain with the continents cut out of the globe Co-Authored-By: Claude Opus 5.5 * fix: postgis plain continents match the line version's coastlines Co-Authored-By: Claude Opus 5.5 --------- Co-authored-by: Yash Co-authored-by: Snailedlt Co-authored-by: Claude Opus 5.5 --- devicon.json | 29 +++++++++++++++++++++ icons/postgis/postgis-line-wordmark.svg | 1 + icons/postgis/postgis-line.svg | 1 + icons/postgis/postgis-original-wordmark.svg | 1 + icons/postgis/postgis-original.svg | 1 + icons/postgis/postgis-plain-wordmark.svg | 1 + icons/postgis/postgis-plain.svg | 1 + 7 files changed, 35 insertions(+) create mode 100644 icons/postgis/postgis-line-wordmark.svg create mode 100644 icons/postgis/postgis-line.svg create mode 100644 icons/postgis/postgis-original-wordmark.svg create mode 100644 icons/postgis/postgis-original.svg create mode 100644 icons/postgis/postgis-plain-wordmark.svg create mode 100644 icons/postgis/postgis-plain.svg diff --git a/devicon.json b/devicon.json index 263b602ca..a5357740d 100644 --- a/devicon.json +++ b/devicon.json @@ -11127,6 +11127,35 @@ } ] }, + { + "name": "postgis", + "altnames": [], + "tags": [ + "database", + "gis", + "geospatial", + "postgresql", + "spatial" + ], + "versions": { + "svg": [ + "original", + "original-wordmark", + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ], + "font": [ + "plain", + "plain-wordmark", + "line", + "line-wordmark" + ] + }, + "color": "#6796b6", + "aliases": [] + }, { "name": "postgresql", "altnames": [], diff --git a/icons/postgis/postgis-line-wordmark.svg b/icons/postgis/postgis-line-wordmark.svg new file mode 100644 index 000000000..78ddd9785 --- /dev/null +++ b/icons/postgis/postgis-line-wordmark.svg @@ -0,0 +1 @@ + diff --git a/icons/postgis/postgis-line.svg b/icons/postgis/postgis-line.svg new file mode 100644 index 000000000..cae2b47f7 --- /dev/null +++ b/icons/postgis/postgis-line.svg @@ -0,0 +1 @@ + diff --git a/icons/postgis/postgis-original-wordmark.svg b/icons/postgis/postgis-original-wordmark.svg new file mode 100644 index 000000000..454ef3da0 --- /dev/null +++ b/icons/postgis/postgis-original-wordmark.svg @@ -0,0 +1 @@ + diff --git a/icons/postgis/postgis-original.svg b/icons/postgis/postgis-original.svg new file mode 100644 index 000000000..f1734d212 --- /dev/null +++ b/icons/postgis/postgis-original.svg @@ -0,0 +1 @@ + diff --git a/icons/postgis/postgis-plain-wordmark.svg b/icons/postgis/postgis-plain-wordmark.svg new file mode 100644 index 000000000..4bd2044df --- /dev/null +++ b/icons/postgis/postgis-plain-wordmark.svg @@ -0,0 +1 @@ + diff --git a/icons/postgis/postgis-plain.svg b/icons/postgis/postgis-plain.svg new file mode 100644 index 000000000..d78fc52ed --- /dev/null +++ b/icons/postgis/postgis-plain.svg @@ -0,0 +1 @@ + From 80651e8387afa53f7371085fece6094233659e21 Mon Sep 17 00:00:00 2001 From: Yash Date: Sat, 31 Oct 2026 21:09:00 +0530 Subject: [PATCH 16/26] update icon: prisma (original, original-wordmark, plain, plain-wordmark, line, line-wordmark) (#2820) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add new prisma icons (original, original-wordmark, plain, plain-wordmark) * feat: add new prisma icons (line, line-wordmark) and update existing icons * Update icons/prisma/prisma-line-wordmark.svg Co-authored-by: Jørgen Kalsnes Hagen <43886029+Snailedlt@users.noreply.github.com> * Update icons/prisma/prisma-plain-wordmark.svg Co-authored-by: Jørgen Kalsnes Hagen <43886029+Snailedlt@users.noreply.github.com> * Update icons/prisma/prisma-plain.svg Co-authored-by: Jørgen Kalsnes Hagen <43886029+Snailedlt@users.noreply.github.com> * Update icons/prisma/prisma-original-wordmark.svg Co-authored-by: Jørgen Kalsnes Hagen <43886029+Snailedlt@users.noreply.github.com> * Update icons/prisma/prisma-original.svg Co-authored-by: Jørgen Kalsnes Hagen <43886029+Snailedlt@users.noreply.github.com> --------- Co-authored-by: Jørgen Kalsnes Hagen <43886029+Snailedlt@users.noreply.github.com> --- devicon.json | 25 ++++++++++------------- icons/prisma/prisma-line-wordmark.svg | 1 + icons/prisma/prisma-line.svg | 1 + icons/prisma/prisma-original-wordmark.svg | 2 +- icons/prisma/prisma-original.svg | 2 +- icons/prisma/prisma-plain-wordmark.svg | 1 + icons/prisma/prisma-plain.svg | 1 + 7 files changed, 17 insertions(+), 16 deletions(-) create mode 100644 icons/prisma/prisma-line-wordmark.svg create mode 100644 icons/prisma/prisma-line.svg create mode 100644 icons/prisma/prisma-plain-wordmark.svg create mode 100644 icons/prisma/prisma-plain.svg diff --git a/devicon.json b/devicon.json index a5357740d..a449d5b72 100644 --- a/devicon.json +++ b/devicon.json @@ -11301,24 +11301,21 @@ "versions": { "svg": [ "original", - "original-wordmark" + "original-wordmark", + "plain", + "plain-wordmark", + "line", + "line-wordmark" ], "font": [ - "original", - "original-wordmark" + "plain", + "plain-wordmark", + "line", + "line-wordmark" ] }, - "color": "#2D3748", - "aliases": [ - { - "base": "original", - "alias": "plain" - }, - { - "base": "original-wordmark", - "alias": "plain-wordmark" - } - ] + "color": "#FE4352", + "aliases": [] }, { "name": "processing", diff --git a/icons/prisma/prisma-line-wordmark.svg b/icons/prisma/prisma-line-wordmark.svg new file mode 100644 index 000000000..93f17a178 --- /dev/null +++ b/icons/prisma/prisma-line-wordmark.svg @@ -0,0 +1 @@ + diff --git a/icons/prisma/prisma-line.svg b/icons/prisma/prisma-line.svg new file mode 100644 index 000000000..b838e9c3a --- /dev/null +++ b/icons/prisma/prisma-line.svg @@ -0,0 +1 @@ + diff --git a/icons/prisma/prisma-original-wordmark.svg b/icons/prisma/prisma-original-wordmark.svg index 14a44096a..172b18d96 100644 --- a/icons/prisma/prisma-original-wordmark.svg +++ b/icons/prisma/prisma-original-wordmark.svg @@ -1 +1 @@ - + diff --git a/icons/prisma/prisma-original.svg b/icons/prisma/prisma-original.svg index 85f970780..7c07e19e2 100644 --- a/icons/prisma/prisma-original.svg +++ b/icons/prisma/prisma-original.svg @@ -1 +1 @@ - + diff --git a/icons/prisma/prisma-plain-wordmark.svg b/icons/prisma/prisma-plain-wordmark.svg new file mode 100644 index 000000000..0babeaf8d --- /dev/null +++ b/icons/prisma/prisma-plain-wordmark.svg @@ -0,0 +1 @@ + diff --git a/icons/prisma/prisma-plain.svg b/icons/prisma/prisma-plain.svg new file mode 100644 index 000000000..e4e31099f --- /dev/null +++ b/icons/prisma/prisma-plain.svg @@ -0,0 +1 @@ + From 5e89d17dbe9f6832a451b95b9ce4cf9c8dd5ebdb Mon Sep 17 00:00:00 2001 From: Snailedlt Date: Sat, 31 Oct 2026 17:21:49 +0100 Subject: [PATCH 17/26] 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,