mirror of
https://git.openapi.site/https://github.com/desirecore/market.git
synced 2026-07-23 02:03:50 +08:00
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.  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:
@@ -101,6 +101,7 @@ External entries point to upstream packages or repositories. They are counted in
|
||||
"id": "example-skill",
|
||||
"name": "Example Skill",
|
||||
"category": "development",
|
||||
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">...</svg>",
|
||||
"tags": ["example"],
|
||||
"maintainer": {
|
||||
"name": "Example",
|
||||
|
||||
125
docs/assets/external-skill-icons-v1.2.9.svg
Normal file
125
docs/assets/external-skill-icons-v1.2.9.svg
Normal file
@@ -0,0 +1,125 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="802" viewBox="0 0 1200 802">
|
||||
<rect width="1200" height="802" fill="#F8FAFC"/>
|
||||
<text x="20" y="33" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="22" font-weight="700">External skill icon preview</text>
|
||||
<text x="20" y="58" fill="#475569" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="14">20 pointer entries · DesireCore Market v1.2.9</text>
|
||||
<rect x="20" y="82" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="36" y="104" width="72" height="72" rx="18" fill="#2563EB"/>
|
||||
<g transform="translate(51 119) scale(1.75)"><circle cx="12" cy="12" r="7" stroke="#FFFFFF" 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="#FFFFFF" stroke-width="1.7" stroke-linecap="round"/><circle cx="12" cy="12" r="2" fill="#FFFFFF"/></g>
|
||||
<text x="124" y="130" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">Agent Reach</text>
|
||||
<text x="124" y="155" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">agent-reach</text>
|
||||
<text x="124" y="178" fill="#2563EB" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">research</text>
|
||||
<rect x="312" y="82" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="328" y="104" width="72" height="72" rx="18" fill="#7C3AED"/>
|
||||
<g transform="translate(343 119) scale(1.75)"><rect x="4" y="4" width="16" height="16" rx="2" stroke="#FFFFFF" stroke-width="1.7"/><path d="M8 8h5m-5 4h8m-8 4h5" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round"/><circle cx="17" cy="8" r="1.5" fill="#FFFFFF"/></g>
|
||||
<text x="416" y="130" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">AI News Radar</text>
|
||||
<text x="416" y="155" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">ai-news-radar</text>
|
||||
<text x="416" y="178" fill="#7C3AED" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">productivity</text>
|
||||
<rect x="604" y="82" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="620" y="104" width="72" height="72" rx="18" fill="#0F766E"/>
|
||||
<g transform="translate(635 119) scale(1.75)"><path d="m4 6 5-2 6 2 5-2v14l-5 2-6-2-5 2V6Z" stroke="#FFFFFF" stroke-width="1.7" stroke-linejoin="round"/><path d="M9 4v14m6-12v14" stroke="#FFFFFF" 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="#FFFFFF"/></g>
|
||||
<text x="708" y="130" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">AMap JSAPI Skill</text>
|
||||
<text x="708" y="155" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">amap-jsapi-skill</text>
|
||||
<text x="708" y="178" fill="#0F766E" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">development</text>
|
||||
<rect x="896" y="82" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="912" y="104" width="72" height="72" rx="18" fill="#0891B2"/>
|
||||
<g transform="translate(927 119) scale(1.75)"><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="#FFFFFF" stroke-width="1.7" stroke-linejoin="round"/><path d="M8.5 9h7" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round"/></g>
|
||||
<text x="1000" y="130" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">DingTalk API Skill</text>
|
||||
<text x="1000" y="155" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">dingtalk-api</text>
|
||||
<text x="1000" y="178" fill="#0891B2" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">communication</text>
|
||||
<rect x="20" y="222" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="36" y="244" width="72" height="72" rx="18" fill="#7C3AED"/>
|
||||
<g transform="translate(51 259) scale(1.75)"><path d="m4 12 15-7-5 14-3.5-5.5L4 12Z" stroke="#FFFFFF" stroke-width="1.7" stroke-linejoin="round"/><path d="m10.5 13.5 3-3" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round"/></g>
|
||||
<text x="124" y="270" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">FlyAI</text>
|
||||
<text x="124" y="295" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">flyai-skill</text>
|
||||
<text x="124" y="318" fill="#7C3AED" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">productivity</text>
|
||||
<rect x="312" y="222" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="328" y="244" width="72" height="72" rx="18" fill="#7C3AED"/>
|
||||
<g transform="translate(343 259) scale(1.75)"><circle cx="9" cy="8" r="3" stroke="#FFFFFF" 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="#FFFFFF" stroke-width="1.7" stroke-linecap="round"/><path d="M16 9h4m-2-2v4" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round"/></g>
|
||||
<text x="416" y="270" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">Follow Builders</text>
|
||||
<text x="416" y="295" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">follow-builders</text>
|
||||
<text x="416" y="318" fill="#7C3AED" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">productivity</text>
|
||||
<rect x="604" y="222" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="620" y="244" width="72" height="72" rx="18" fill="#DB2777"/>
|
||||
<g transform="translate(635 259) scale(1.75)"><rect x="4" y="4" width="16" height="16" rx="3" stroke="#FFFFFF" stroke-width="1.7"/><path d="m6.5 16 3.5-3.5 2.5 2.5 2-2 3 3" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/><circle cx="15.5" cy="8.5" r="1.5" fill="#FFFFFF"/></g>
|
||||
<text x="708" y="270" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">Ian 小黑怪诞正文配图</text>
|
||||
<text x="708" y="295" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">ian-xiaohei-illustrations</text>
|
||||
<text x="708" y="318" fill="#DB2777" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">media</text>
|
||||
<rect x="896" y="222" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="912" y="244" width="72" height="72" rx="18" fill="#0F766E"/>
|
||||
<g transform="translate(927 259) scale(1.75)"><path d="M8.5 5 5 12l3.5 7M15.5 5l3.5 7-3.5 7" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/><path d="m10 15 2 2 3-4" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></g>
|
||||
<text x="1000" y="270" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">Karpathy Guidelines</text>
|
||||
<text x="1000" y="295" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">karpathy-guidelines</text>
|
||||
<text x="1000" y="318" fill="#0F766E" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">development</text>
|
||||
<rect x="20" y="362" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="36" y="384" width="72" height="72" rx="18" fill="#7C3AED"/>
|
||||
<g transform="translate(51 399) scale(1.75)"><circle cx="6" cy="12" r="2" fill="#FFFFFF"/><circle cx="18" cy="6" r="2" fill="#FFFFFF"/><circle cx="18" cy="18" r="2" fill="#FFFFFF"/><path d="m7.8 11.1 8.4-4.2M7.8 12.9l8.4 4.2" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round"/></g>
|
||||
<text x="124" y="410" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">卡兹克 Skills</text>
|
||||
<text x="124" y="435" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">khazix-skills</text>
|
||||
<text x="124" y="458" fill="#7C3AED" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">productivity</text>
|
||||
<rect x="312" y="362" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="328" y="384" width="72" height="72" rx="18" fill="#0891B2"/>
|
||||
<g transform="translate(343 399) scale(1.75)"><rect x="4" y="5" width="16" height="14" rx="3" stroke="#FFFFFF" stroke-width="1.7"/><path d="M8 9h8M8 13h3m3 0h2" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round"/><path d="m8 13 1.5 1.5L11 13" stroke="#FFFFFF" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></g>
|
||||
<text x="416" y="410" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">Lark Suite CLI</text>
|
||||
<text x="416" y="435" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">larksuite-cli</text>
|
||||
<text x="416" y="458" fill="#0891B2" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">communication</text>
|
||||
<rect x="604" y="362" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="620" y="384" width="72" height="72" rx="18" fill="#2563EB"/>
|
||||
<g transform="translate(635 399) scale(1.75)"><rect x="4" y="5" width="16" height="15" rx="2" stroke="#FFFFFF" stroke-width="1.7"/><path d="M8 3v4m8-4v4M4 9h16" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round"/><path d="M12 12v3l2 1" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></g>
|
||||
<text x="708" y="410" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">Last 30 Days</text>
|
||||
<text x="708" y="435" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">last30days</text>
|
||||
<text x="708" y="458" fill="#2563EB" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">research</text>
|
||||
<rect x="896" y="362" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="912" y="384" width="72" height="72" rx="18" fill="#D97706"/>
|
||||
<g transform="translate(927 399) scale(1.75)"><path d="M6 8h10v8a4 4 0 0 1-4 4h-2a4 4 0 0 1-4-4V8Z" stroke="#FFFFFF" 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="#FFFFFF" stroke-width="1.7" stroke-linecap="round"/></g>
|
||||
<text x="1000" y="410" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">Luckin My Coffee</text>
|
||||
<text x="1000" y="435" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">luckin-my-coffee</text>
|
||||
<text x="1000" y="458" fill="#D97706" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">business</text>
|
||||
<rect x="20" y="502" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="36" y="524" width="72" height="72" rx="18" fill="#0F766E"/>
|
||||
<g transform="translate(51 539) scale(1.75)"><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="#FFFFFF" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/><path d="M8.5 16h7" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round"/></g>
|
||||
<text x="124" y="550" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">Matt Pocock Skills</text>
|
||||
<text x="124" y="575" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">mattpocock-skills</text>
|
||||
<text x="124" y="598" fill="#0F766E" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">development</text>
|
||||
<rect x="312" y="502" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="328" y="524" width="72" height="72" rx="18" fill="#DB2777"/>
|
||||
<g transform="translate(343 539) scale(1.75)"><rect x="4" y="4" width="16" height="16" rx="3" stroke="#FFFFFF" stroke-width="1.7"/><path d="m6.5 17 4-4 2.5 2.5 1.5-1.5 3 3" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/><circle cx="15.5" cy="8.5" r="1.5" fill="#FFFFFF"/></g>
|
||||
<text x="416" y="550" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">MiniMax 图像生成</text>
|
||||
<text x="416" y="575" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">minimax-image-gen</text>
|
||||
<text x="416" y="598" fill="#DB2777" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">media</text>
|
||||
<rect x="604" y="502" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="620" y="524" width="72" height="72" rx="18" fill="#DB2777"/>
|
||||
<g transform="translate(635 539) scale(1.75)"><rect x="9" y="4" width="6" height="10" rx="3" stroke="#FFFFFF" stroke-width="1.7"/><path d="M6.5 11a5.5 5.5 0 0 0 11 0M12 16.5V20m-3 0h6" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round"/></g>
|
||||
<text x="708" y="550" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">MiniMax 语音合成</text>
|
||||
<text x="708" y="575" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">minimax-tts</text>
|
||||
<text x="708" y="598" fill="#DB2777" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">media</text>
|
||||
<rect x="896" y="502" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="912" y="524" width="72" height="72" rx="18" fill="#D97706"/>
|
||||
<g transform="translate(927 539) scale(1.75)"><path d="M4 7h10v9H4zM14 10h3l3 3v3h-6z" stroke="#FFFFFF" stroke-width="1.7" stroke-linejoin="round"/><circle cx="8" cy="18" r="1.5" fill="#FFFFFF"/><circle cx="17" cy="18" r="1.5" fill="#FFFFFF"/></g>
|
||||
<text x="1000" y="550" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">Meituan Paotui Client</text>
|
||||
<text x="1000" y="575" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">mt-paotui-for-client</text>
|
||||
<text x="1000" y="598" fill="#D97706" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">business</text>
|
||||
<rect x="20" y="642" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="36" y="664" width="72" height="72" rx="18" fill="#7C3AED"/>
|
||||
<g transform="translate(51 679) scale(1.75)"><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="#FFFFFF" stroke-width="1.7" stroke-linejoin="round"/><path d="m10 14 2-2 2 2" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></g>
|
||||
<text x="124" y="690" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">NetEase Skills</text>
|
||||
<text x="124" y="715" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">netease-skills</text>
|
||||
<text x="124" y="738" fill="#7C3AED" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">productivity</text>
|
||||
<rect x="312" y="642" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="328" y="664" width="72" height="72" rx="18" fill="#C026D3"/>
|
||||
<g transform="translate(343 679) scale(1.75)"><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="#FFFFFF" stroke-width="1.5" stroke-linejoin="round"/></g>
|
||||
<text x="416" y="690" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">Taste Skill</text>
|
||||
<text x="416" y="715" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">taste-skill</text>
|
||||
<text x="416" y="738" fill="#C026D3" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">creative</text>
|
||||
<rect x="604" y="642" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="620" y="664" width="72" height="72" rx="18" fill="#D97706"/>
|
||||
<g transform="translate(635 679) scale(1.75)"><rect x="4" y="6" width="16" height="12" rx="2" stroke="#FFFFFF" stroke-width="1.7"/><path d="M4 10h16m-8 4h4" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round"/><circle cx="8" cy="14" r="1.5" fill="#FFFFFF"/></g>
|
||||
<text x="708" y="690" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">WeChat Pay Skills</text>
|
||||
<text x="708" y="715" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">wechatpay-skills</text>
|
||||
<text x="708" y="738" fill="#D97706" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">business</text>
|
||||
<rect x="896" y="642" width="276" height="124" rx="16" fill="white" stroke="#E2E8F0"/>
|
||||
<rect x="912" y="664" width="72" height="72" rx="18" fill="#0891B2"/>
|
||||
<g transform="translate(927 679) scale(1.75)"><rect x="4" y="5" width="16" height="14" rx="3" stroke="#FFFFFF" stroke-width="1.7"/><path d="m8 10 2 2-2 2m4 0h4" stroke="#FFFFFF" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></g>
|
||||
<text x="1000" y="690" fill="#0F172A" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="15" font-weight="700">WeCom CLI</text>
|
||||
<text x="1000" y="715" fill="#475569" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="12">wecom-cli</text>
|
||||
<text x="1000" y="738" fill="#0891B2" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" font-size="12">communication</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 18 KiB |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "DesireCore Official Market",
|
||||
"version": "1.2.8",
|
||||
"version": "1.2.9",
|
||||
"schemaVersion": "1.1.0",
|
||||
"supportedLocales": ["zh-CN", "en-US"],
|
||||
"defaultLocale": "en-US",
|
||||
@@ -28,7 +28,7 @@
|
||||
"stats": {
|
||||
"totalAgents": 1,
|
||||
"totalSkills": 50,
|
||||
"lastUpdated": "2026-07-11"
|
||||
"lastUpdated": "2026-07-16"
|
||||
},
|
||||
"features": [
|
||||
"curated-index",
|
||||
|
||||
@@ -17,7 +17,7 @@ Checks:
|
||||
8. Top-level description is 1-1024 chars (spec); top-level name is 1-64 chars (spec).
|
||||
9. Skill/Agent counts and builtin skill index match the repository contents.
|
||||
10. Skill, Agent, and entry.json category references exist in categories.json.
|
||||
11. entry.json pointers have the required marketplace fields and safe source URLs.
|
||||
11. entry.json pointers have the required marketplace fields, valid inline SVG icons, and safe source URLs.
|
||||
12. Market Skills set `disable-model-invocation` to true or omit it; false is prohibited.
|
||||
|
||||
Exit codes:
|
||||
@@ -38,6 +38,7 @@ import json
|
||||
import re
|
||||
import ssl
|
||||
import sys
|
||||
from xml.etree import ElementTree
|
||||
from dataclasses import dataclass, field
|
||||
from pathlib import Path
|
||||
from typing import Any, Iterable
|
||||
@@ -389,7 +390,7 @@ def validate_entry_json(report: Report, entry_file: Path, category_ids: set[str]
|
||||
if not entry:
|
||||
return
|
||||
|
||||
required = ("id", "name", "category", "maintainer", "stewardship", "license", "redistribution", "source")
|
||||
required = ("id", "name", "category", "icon", "maintainer", "stewardship", "license", "redistribution", "source")
|
||||
for key in required:
|
||||
if key not in entry:
|
||||
report.add(Issue(rel, "entry-json", f"missing required field '{key}'"))
|
||||
@@ -401,6 +402,19 @@ def validate_entry_json(report: Report, entry_file: Path, category_ids: set[str]
|
||||
if not isinstance(category, str) or category not in category_ids:
|
||||
report.add(Issue(rel, "entry-json", f"category '{category}' is not declared in categories.json"))
|
||||
|
||||
icon = entry.get("icon")
|
||||
if not isinstance(icon, str) or not icon.strip():
|
||||
report.add(Issue(rel, "entry-json", "icon must be a non-empty inline SVG string"))
|
||||
else:
|
||||
try:
|
||||
root = ElementTree.fromstring(icon)
|
||||
if root.tag != "{http://www.w3.org/2000/svg}svg":
|
||||
report.add(Issue(rel, "entry-json", "icon root element must be svg in the SVG namespace"))
|
||||
elif not root.get("viewBox"):
|
||||
report.add(Issue(rel, "entry-json", "icon SVG must declare a viewBox"))
|
||||
except ElementTree.ParseError as exc:
|
||||
report.add(Issue(rel, "entry-json", f"icon must be valid SVG XML: {exc}"))
|
||||
|
||||
maintainer = entry.get("maintainer")
|
||||
if not isinstance(maintainer, dict) or not isinstance(maintainer.get("name"), str):
|
||||
report.add(Issue(rel, "entry-json", "maintainer.name is required"))
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user