feat(market): 为外部技能补充图标 (#50)

## Summary / 摘要

Add inline SVG icons to all 20 external pointer skills, so their cards
no longer fall back to an empty icon. The market catalog version is
bumped from `1.2.8` to `1.2.9`.

为全部 20 个外部 pointer skill 补齐内联 SVG 图标,市场卡片不再显示为空;市场版本由 `1.2.8` 升至
`1.2.9`。

## Compatibility / 兼容性

Depends on desirecore/desirecore#1177, which permits the `icon` field in
strict pointer-entry validation and forwards it through the offline
list/detail responses. That PR must merge first.

## Skill → icon screenshot / Skill 与图标截图

The preview labels every card with its display name and id.

![External skill icon
preview](https://raw.githubusercontent.com/desirecore/market/feat/external-skill-icons/docs/assets/external-skill-icons-v1.2.9.svg)

Covered skills: `agent-reach`, `ai-news-radar`, `amap-jsapi-skill`,
`dingtalk-api`, `flyai-skill`, `follow-builders`,
`ian-xiaohei-illustrations`, `karpathy-guidelines`, `khazix-skills`,
`larksuite-cli`, `last30days`, `luckin-my-coffee`, `mattpocock-skills`,
`minimax-image-gen`, `minimax-tts`, `mt-paotui-for-client`,
`netease-skills`, `taste-skill`, `wechatpay-skills`, and `wecom-cli`.

## Validation / 验证

- `uv run scripts/i18n/validate-i18n.py`
- `uv run scripts/i18n/translate.py --check`
- Parsed all 20 `entry.json` icons as SVG XML
- `git diff --check`
- Rendered the committed preview asset locally
This commit is contained in:
2026-07-16 19:59:41 +08:00
committed by GitHub
parent 73c94ab70e
commit 0ecc29c7ce
24 changed files with 164 additions and 4 deletions

View File

@@ -2,6 +2,7 @@
"id": "agent-reach",
"name": "Agent Reach",
"category": "research",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><circle cx=\"12\" cy=\"12\" r=\"7\" stroke=\"#2563EB\" stroke-width=\"1.7\"/><path d=\"M12 5V3m0 18v-2m7-7h2M3 12h2m11.9-4.9 1.4-1.4M5.7 18.3l1.4-1.4m9.8 1.4-1.4-1.4M5.7 5.7l1.4 1.4\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\"/><circle cx=\"12\" cy=\"12\" r=\"2\" fill=\"#2563EB\"/></svg>",
"tags": ["research", "web-search", "social-media", "twitter", "reddit", "youtube", "bilibili", "xiaohongshu"],
"maintainer": {
"name": "Panniantong",

View File

@@ -2,6 +2,7 @@
"id": "ai-news-radar",
"name": "AI News Radar",
"category": "productivity",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"2\" stroke=\"#2563EB\" stroke-width=\"1.7\"/><path d=\"M8 8h5m-5 4h8m-8 4h5\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\"/><circle cx=\"17\" cy=\"8\" r=\"1.5\" fill=\"#2563EB\"/></svg>",
"tags": [
"ai-news",
"rss",

View File

@@ -2,6 +2,7 @@
"id": "amap-jsapi-skill",
"name": "AMap JSAPI Skill",
"category": "development",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"m4 6 5-2 6 2 5-2v14l-5 2-6-2-5 2V6Z\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linejoin=\"round\"/><path d=\"M9 4v14m6-12v14\" stroke=\"#2563EB\" stroke-width=\"1.7\"/><path d=\"M12 8.25c-1.24 0-2.25.9-2.25 2.03 0 1.52 2.25 3.47 2.25 3.47s2.25-1.95 2.25-3.47C14.25 9.15 13.24 8.25 12 8.25Z\" fill=\"#2563EB\"/></svg>",
"tags": [
"lbs-amap"
],

View File

@@ -2,6 +2,7 @@
"id": "dingtalk-api",
"name": "DingTalk API Skill",
"category": "communication",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M5 6.5A2.5 2.5 0 0 1 7.5 4h9A2.5 2.5 0 0 1 19 6.5v5A2.5 2.5 0 0 1 16.5 14H12l-3.5 3v-3h-1A2.5 2.5 0 0 1 5 11.5v-5Z\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linejoin=\"round\"/><path d=\"M8.5 9h7\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\"/></svg>",
"tags": [
"ogenes"
],

View File

@@ -2,6 +2,7 @@
"id": "flyai-skill",
"name": "FlyAI",
"category": "productivity",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"m4 12 15-7-5 14-3.5-5.5L4 12Z\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linejoin=\"round\"/><path d=\"m10.5 13.5 3-3\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\"/></svg>",
"tags": [
"alibaba-flyai"
],

View File

@@ -2,6 +2,7 @@
"id": "follow-builders",
"name": "Follow Builders",
"category": "productivity",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><circle cx=\"9\" cy=\"8\" r=\"3\" stroke=\"#2563EB\" stroke-width=\"1.7\"/><path d=\"M3.5 19c.7-3 2.6-4.5 5.5-4.5s4.8 1.5 5.5 4.5\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\"/><path d=\"M16 9h4m-2-2v4\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\"/></svg>",
"tags": [
"zarazhangrui"
],

View File

@@ -2,6 +2,7 @@
"id": "ian-xiaohei-illustrations",
"name": "Ian 小黑怪诞正文配图",
"category": "media",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"3\" stroke=\"#2563EB\" stroke-width=\"1.7\"/><path d=\"m6.5 16 3.5-3.5 2.5 2.5 2-2 3 3\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><circle cx=\"15.5\" cy=\"8.5\" r=\"1.5\" fill=\"#2563EB\"/></svg>",
"tags": ["illustration", "image-generation", "xiaohei", "design"],
"maintainer": {
"name": "helloianneo",

View File

@@ -2,6 +2,7 @@
"id": "karpathy-guidelines",
"name": "Karpathy Guidelines",
"category": "development",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M8.5 5 5 12l3.5 7M15.5 5l3.5 7-3.5 7\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"m10 15 2 2 3-4\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>",
"tags": [
"guidelines",
"best-practices",

View File

@@ -2,6 +2,7 @@
"id": "khazix-skills",
"name": "卡兹克 Skills",
"category": "productivity",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2\" fill=\"#2563EB\"/><circle cx=\"18\" cy=\"6\" r=\"2\" fill=\"#2563EB\"/><circle cx=\"18\" cy=\"18\" r=\"2\" fill=\"#2563EB\"/><path d=\"m7.8 11.1 8.4-4.2M7.8 12.9l8.4 4.2\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\"/></svg>",
"tags": ["khazix", "ai-news", "writing", "analysis"],
"maintainer": {
"name": "KKKKhazix",

View File

@@ -2,6 +2,7 @@
"id": "larksuite-cli",
"name": "Lark Suite CLI",
"category": "communication",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><rect x=\"4\" y=\"5\" width=\"16\" height=\"14\" rx=\"3\" stroke=\"#2563EB\" stroke-width=\"1.7\"/><path d=\"M8 9h8M8 13h3m3 0h2\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\"/><path d=\"m8 13 1.5 1.5L11 13\" stroke=\"#2563EB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>",
"tags": [
"larksuite"
],

View File

@@ -2,6 +2,7 @@
"id": "last30days",
"name": "Last 30 Days",
"category": "research",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><rect x=\"4\" y=\"5\" width=\"16\" height=\"15\" rx=\"2\" stroke=\"#2563EB\" stroke-width=\"1.7\"/><path d=\"M8 3v4m8-4v4M4 9h16\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\"/><path d=\"M12 12v3l2 1\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>",
"tags": [
"research",
"trends",

View File

@@ -2,6 +2,7 @@
"id": "luckin-my-coffee",
"name": "Luckin My Coffee",
"category": "business",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 8h10v8a4 4 0 0 1-4 4h-2a4 4 0 0 1-4-4V8Z\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linejoin=\"round\"/><path d=\"M16 10h1a2 2 0 0 1 0 4h-1M8 4c0 1 1 1 1 2m3-2c0 1 1 1 1 2\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\"/></svg>",
"tags": [
"luckin"
],

View File

@@ -2,6 +2,7 @@
"id": "mattpocock-skills",
"name": "Matt Pocock Skills",
"category": "development",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M9 4h6m-5 0v5l-4 7a3 3 0 0 0 2.6 4h6.8a3 3 0 0 0 2.6-4l-4-7V4\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8.5 16h7\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\"/></svg>",
"tags": [
"engineering",
"tdd",

View File

@@ -2,6 +2,7 @@
"id": "minimax-image-gen",
"name": "MiniMax 图像生成",
"category": "media",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"3\" stroke=\"#2563EB\" stroke-width=\"1.7\"/><path d=\"m6.5 17 4-4 2.5 2.5 1.5-1.5 3 3\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><circle cx=\"15.5\" cy=\"8.5\" r=\"1.5\" fill=\"#2563EB\"/></svg>",
"tags": [
"minimax",
"media"

View File

@@ -2,6 +2,7 @@
"id": "minimax-tts",
"name": "MiniMax 语音合成",
"category": "media",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><rect x=\"9\" y=\"4\" width=\"6\" height=\"10\" rx=\"3\" stroke=\"#2563EB\" stroke-width=\"1.7\"/><path d=\"M6.5 11a5.5 5.5 0 0 0 11 0M12 16.5V20m-3 0h6\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\"/></svg>",
"tags": [
"minimax",
"media"

View File

@@ -2,6 +2,7 @@
"id": "mt-paotui-for-client",
"name": "Meituan Paotui Client",
"category": "business",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M4 7h10v9H4zM14 10h3l3 3v3h-6z\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linejoin=\"round\"/><circle cx=\"8\" cy=\"18\" r=\"1.5\" fill=\"#2563EB\"/><circle cx=\"17\" cy=\"18\" r=\"1.5\" fill=\"#2563EB\"/></svg>",
"tags": [
"meituan"
],

View File

@@ -2,6 +2,7 @@
"id": "netease-skills",
"name": "NetEase Skills",
"category": "productivity",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M7 17h10a3.5 3.5 0 0 0 .5-6.96A5.5 5.5 0 0 0 7.1 8.7 4.2 4.2 0 0 0 7 17Z\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linejoin=\"round\"/><path d=\"m10 14 2-2 2 2\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>",
"tags": [
"NetEase"
],

View File

@@ -2,6 +2,7 @@
"id": "taste-skill",
"name": "Taste Skill",
"category": "creative",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"m12 3 .9 3.1L16 7l-3.1.9L12 11l-.9-3.1L8 7l3.1-.9L12 3Zm5 9 .7 2.3L20 15l-2.3.7L17 18l-.7-2.3L14 15l2.3-.7L17 12ZM7 13l.8 2.7L10.5 17l-2.7.8L7 20.5l-.8-2.7L3.5 17l2.7-1.3L7 13Z\" stroke=\"#2563EB\" stroke-width=\"1.5\" stroke-linejoin=\"round\"/></svg>",
"tags": [
"taste",
"design",

View File

@@ -2,6 +2,7 @@
"id": "wechatpay-skills",
"name": "WeChat Pay Skills",
"category": "business",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><rect x=\"4\" y=\"6\" width=\"16\" height=\"12\" rx=\"2\" stroke=\"#2563EB\" stroke-width=\"1.7\"/><path d=\"M4 10h16m-8 4h4\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\"/><circle cx=\"8\" cy=\"14\" r=\"1.5\" fill=\"#2563EB\"/></svg>",
"tags": [
"wechatpay-apiv3"
],

View File

@@ -2,6 +2,7 @@
"id": "wecom-cli",
"name": "WeCom CLI",
"category": "communication",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><rect x=\"4\" y=\"5\" width=\"16\" height=\"14\" rx=\"3\" stroke=\"#2563EB\" stroke-width=\"1.7\"/><path d=\"m8 10 2 2-2 2m4 0h4\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>",
"tags": [
"WecomTeam"
],