Skip to content
SlashClone

Show "works with" app logos and filter by app

@slashclone/integration-logos

Add a "works with" feature to a catalog or marketplace: each item shows logos of the apps it integrates with, and people can browse and filter search by app. Tags are detected from strong signals like env vars, hosts, and MCP servers before mentions, owners can override them, and logos come from simple-icons with a lettered fallback, an SVG safety check, and a dry-run retag job.

SkillOtherv0.1.1 (latest)Tested
Activity
New: be the first to try it

No permission changes between 0.1.0 and 0.1.1.

SKILL.md

1 added, 1 removed

@@ line 1 → 1
11---
22name: integration-logos
3Removed: description: Build a "works with" feature that shows the logos of the third-party apps an item integrates with, on cards, detail chips, a browse-by-app page, and a search filter. Covers the app catalog, automatic detection, owner override, the logo pipeline, and a retag job. Use when someone wants items tagged with the apps they connect to, or asks for integration logos or a "filter by app" search.
3Added: description: "Build a \"works with\" feature that shows the logos of the third-party apps an item integrates with, on cards, detail chips, a browse-by-app page, and a search filter. Covers the app catalog, automatic detection from strong signals before mentions, owner override, a logo pipeline from simple-icons with a lettered fallback and an SVG safety check, and a retag job with a dry run. Use when someone wants items in a catalog, marketplace, or directory tagged with the apps they connect to, asks for integration logos, a \"works with\" section, an integrations page, or a \"filter by app\" search."
44---
55
66# Integration logos

kit.json

52 added, 13 removed

@@ line 1 → 1
11{
22 "name": "integration-logos",
33 "owner": "slashclone",
4Removed: "version": "0.1.0",
4Added: "version": "0.1.1",
55 "type": "skill",
6Removed: "description": "Build a \"works with\" feature: show the logos of the apps each item integrates with on cards, detail chips, a browse-by-app page, and a search filter. Covers the app catalog, detection from strong signals before mentions, owner override, a logo pipeline from simple-icons with a lettered fallback, an SVG safety check, and a retag job with a dry run.",
6Added: "title": "Show \"works with\" app logos and filter by app",
7Added: "description": "Add a \"works with\" feature to a catalog or marketplace: each item shows logos of the apps it integrates with, and people can browse and filter search by app. Tags are detected from strong signals like env vars, hosts, and MCP servers before mentions, owners can override them, and logos come from simple-icons with a lettered fallback, an SVG safety check, and a dry-run retag job.",
78 "category": "other",
89 "license": "MIT",
9Removed: "compat": ["claude-code"],
10Added: "compat": [
11Added: "claude-code"
12Added: ],
1013 "permissions": {
11Removed: "shell": ["node scripts/detect-integrations.mjs", "node scripts/check-svg.mjs"],
14Added: "shell": [
15Added: "node scripts/detect-integrations.mjs",
16Added: "node scripts/check-svg.mjs"
17Added: ],
1218 "files": {
13Removed: "read": ["./examples/**", "./data/**"],
14Removed: "write": ["./out/integrations*", "./out/svg-check*"]
19Added: "read": [
20Added: "./examples/**",
21Added: "./data/**"
22Added: ],
23Added: "write": [
24Added: "./out/integrations*",
25Added: "./out/svg-check*"
26Added: ]
1527 }
1628 },
1729 "tests": {
@@ line 34 → 46
3446 "path": "out/integrations.json",
3547 "text": "\"slack\": \"network\""
3648 },
37Removed: { "type": "file_not_contains", "path": "out/integrations.json", "text": "\"make\"" },
38Removed: { "type": "file_not_contains", "path": "out/integrations.json", "text": "\"notion\"" },
39Removed: { "type": "file_not_contains", "path": "out/integrations.json", "text": "\"linear\"" },
40Removed: { "type": "file_not_contains", "path": "out/integrations.json", "text": "\"stripe\"" }
49Added: {
50Added: "type": "file_not_contains",
51Added: "path": "out/integrations.json",
52Added: "text": "\"make\""
53Added: },
54Added: {
55Added: "type": "file_not_contains",
56Added: "path": "out/integrations.json",
57Added: "text": "\"notion\""
58Added: },
59Added: {
60Added: "type": "file_not_contains",
61Added: "path": "out/integrations.json",
62Added: "text": "\"linear\""
63Added: },
64Added: {
65Added: "type": "file_not_contains",
66Added: "path": "out/integrations.json",
67Added: "text": "\"stripe\""
68Added: }
4169 ]
4270 },
4371 {
@@ line 73 → 101
73101 "data/logos/bad.svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><script>alert(1)</script></svg>"
74102 },
75103 "checks": [
76Removed: { "type": "command_exits_zero", "command": "node scripts/check-svg.mjs examples/logos" },
77104 {
78105 "type": "command_exits_zero",
106Added: "command": "node scripts/check-svg.mjs examples/logos"
107Added: },
108Added: {
109Added: "type": "command_exits_zero",
79110 "command": "node scripts/check-svg.mjs data/logos --report out/svg-check.json --report-only"
80111 },
81Removed: { "type": "file_contains", "path": "out/svg-check.json", "text": "has a script element" },
82Removed: { "type": "file_contains", "path": "out/svg-check.json", "text": "\"ok\": false" }
112Added: {
113Added: "type": "file_contains",
114Added: "path": "out/svg-check.json",
115Added: "text": "has a script element"
116Added: },
117Added: {
118Added: "type": "file_contains",
119Added: "path": "out/svg-check.json",
120Added: "text": "\"ok\": false"
121Added: }
83122 ]
84123 }
85124 ]

Cookies that keep you signed in and remember these choices are always on. Everything else is off until you turn it on.