From 5f125364e9b090d174723ae9d8b11d0785676392 Mon Sep 17 00:00:00 2001 From: matevip Date: Sun, 3 May 2026 17:14:43 +0800 Subject: [PATCH] fix(skill): parseIconValue accepts site-absolute paths + restore ckjia-shopping nameZh/nameEn/tags --- .../src/main/resources/skills/ckjia-shopping/SKILL.md | 10 +++++++++- mateclaw-ui/src/composables/usePixelarticons.ts | 7 +++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/mateclaw-server/src/main/resources/skills/ckjia-shopping/SKILL.md b/mateclaw-server/src/main/resources/skills/ckjia-shopping/SKILL.md index 4e8c4c58..1f3f7c16 100644 --- a/mateclaw-server/src/main/resources/skills/ckjia-shopping/SKILL.md +++ b/mateclaw-server/src/main/resources/skills/ckjia-shopping/SKILL.md @@ -1,10 +1,18 @@ --- name: ckjia-shopping +nameZh: 查价 · 比价购物 +nameEn: CKJIA Shopping version: "1.0.0" icon: /skill-assets/ckjia-shopping/assets/ckjia_logo_new.png -description: "跨平台比价与购物推荐 / Cross-platform price comparison and shopping recommendation. 淘宝 / 京东 / 天猫 / 拼多多商品聚合搜索,拍图识物,AI 购物意图识别。Phase 1 ships shopping_recommend + image_recognize; unified_search / price_history / compare_skus 在后续迭代追加。" +description: "跨平台比价与购物推荐 / Cross-platform price comparison. 淘宝 / 京东 / 天猫 / 拼多多商品聚合搜索 + 拍图识物。需要先启用 ckjia-shopping MCP server 并配置 CKJIA_MCP_KEY 才能用。" category: data type: mcp +tags: + - shopping + - price + - ecommerce + - 比价 + - 购物 dependencies: tools: - ckjia_shopping_recommend diff --git a/mateclaw-ui/src/composables/usePixelarticons.ts b/mateclaw-ui/src/composables/usePixelarticons.ts index eda9aaa8..cc50707b 100644 --- a/mateclaw-ui/src/composables/usePixelarticons.ts +++ b/mateclaw-ui/src/composables/usePixelarticons.ts @@ -79,6 +79,13 @@ export function parseIconValue(value: string | null | undefined): ParsedIcon { if (v.startsWith('http://') || v.startsWith('https://')) { return { kind: 'url', url: v } } + // Site-absolute path (e.g. /skill-assets//assets/.png served + // by the WebMvcConfig resource handler) — treat as a URL the browser will + // resolve against the current host, so deployments don't need to hardcode + // their public origin in SKILL.md. + if (v.startsWith('/')) { + return { kind: 'url', url: v } + } // Anything else falls through as an emoji / text glyph. We don't // validate "is this really an emoji" — letting the user pick any // unicode glyph is intentionally flexible.