27589d013d
fix(skills): 修复 14 个 pointer 条目安装失败 + 7 个合集声明 children ( #81 )
...
## 背景 / Background
市场里 25 个 pointer 条目中有 **14 个点安装必然失败**,客户端返回 502「源仓库中未找到 SKILL.md(pointer
指向有误)」。
根因是 `entry.json` 的 `source` 指错:客户端按 `source.path` 定位内容(缺省则取仓库根),而这些条目的
`path` 缺失或 URL 指向了 HTML 页面,`contentDir/SKILL.md` 自然不存在。
Of the 25 pointer entries, **14 always failed to install** with a 502.
The `source` pointers were wrong: `path` was missing (so the client
looked at the repo root) or `repoUrl` pointed at an HTML page instead of
the content.
## 改动 / Changes
### 1. 补 `source.path`(5 个)
| 条目 | path | 上游 SKILL.md 实际位置 |
|---|---|---|
| `impeccable` | `plugin/skills/impeccable` | 根目录没有;`plugin/` 与
`.claude/` 两份内容逐字节一致,取中立的分发目录 |
| `ai-news-radar` | `skills/ai-news-radar` | 仓库另有 `skills/radar`,取与条目 id
对应的 |
| `taste-skill` | `skills/taste-skill` | 同名子目录 |
| `wechatpay-skills` | `wechatpay-payment-integration` | 仓库另有
`wechatpay-product-coupon` 未覆盖,见下方遗留项 |
| `luckin-my-coffee` | `my-coffee` | zip 内有一层顶层目录 |
### 2. 修正 web 类条目的源地址(2 个)
`amap-jsapi-skill` / `dingtalk-api` 原先指向 ClawHub 的**网页**(`content-type:
text/html`),客户端只在 markdown 时才写成 `SKILL.md`,HTML 会落成 `index.html`,校验必失败。
- `amap-jsapi-skill` → 改用 ClawHub 文件 API(返回 `text/markdown`)。该技能在
ClawHub 的发布包 `version.files` 只有一个 `SKILL.md`,单文件抓取正是对的形态。
- `dingtalk-api` → ClawHub 包有 38 个文件(`scripts/*.ts` 等),单文件抓不全,改指内容完整的
GitHub 上游 `ogenes/dingtalk-api` 并锁 ref。
### 3. 合集条目声明 `children`(7 个,147 个子技能)
这 7 个的上游是「一个仓库装着 N 个平级技能」,没有单一 SKILL.md 可指,靠改 `path`
修不了。配合客户端新增的合集能力(desirecore 主仓库 PR),`entry.json`
现在可声明子技能清单,市场仍是一个条目,安装时由用户勾选装哪几个。
| 条目 | 子技能数 |
|---|---|
| `marketingskills` | 49 |
| `mattpocock-skills` | 35 |
| `larksuite-cli` | 27 |
| `baoyu-skills` | 21 |
| `wecom-cli` | 7 |
| `khazix-skills` | 5 |
| `netease-skills` | 3 |
新增 `scripts/gen-collection-children.py`:按 `entry.json` 锁定的 ref
克隆上游、扫描子技能、读 frontmatter 生成 `children`。约定「仓库有顶层 `skills/` 就只扫它」——否则会收录
`larksuite/cli` 的 linter 测试夹具
`internal/qualitygate/skillscan/testdata/skills/lark-demo`。
### 4. `netease-skills` 分支修正
`repoBranch` 写的是 `main`,上游默认分支是 `master`,此前 clone 必然失败(`Could not find
main`)。
### 5. 版本号
`manifest.json` `1.2.24` → `1.2.25`。
## 验证 / Verification
- `uv run scripts/i18n/validate-i18n.py` — OK
- `uv run scripts/i18n/validate-i18n.py --online` — OK
- **真实运行的 agent-service 上逐个安装**(独立 home + standalone 服务,非模拟):18 个非合集
pointer 条目 **18/18 成功**并完整落盘;7 个合集条目 **7/7 成功**,并验证了部分安装、追加、取消勾选卸载、装到
Agent 私有目录。
## 遗留项 / Known gaps
- `wechatpay-skills` 只覆盖了 `wechatpay-payment-integration`,同仓库的
`wechatpay-product-coupon` 未上架。条目名是复数,后续可拆成两条或改成合集。
- `children[].i18n` 目前只有 `shortDesc`(取自上游
description),**没有中文名**——子技能名沿用上游 id(如 `lark-approval`),以保证与上游文档、Agent
加载路径一致。宝玉 / Matt Pocock / Marketing 三个合集的描述本身就是英文。如需中文化,可接
`i18n-translate.yml` 覆盖 `children` 字段。
- 在线校验目前只查 URL 可达性,**查不出 `path` 指向的目录里有没有 SKILL.md**——这 14
个坏条目当初就是这么一路绿灯合进主干的。建议后续给 `--online` 加这条断言。
🤖 Generated with [Claude Code](https://claude.com/claude-code )
---------
Co-authored-by: xieyuanxiang <xieyuanxiang123@gmail.com >
2026-08-09 16:25:20 +08:00
f8d6ddeaf3
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
2026-07-16 19:59:41 +08:00
mashagua
f1e313d0d3
Add three MIT community skill entries (agent-reach, ian-xiaohei-illustrations, khazix-skills) ( #45 )
...
## Summary
按 ADR-038《市场元数据注册表与两层技能模型》,以 `entry.json` pointer 形式收录三个第三方 community
skill。**仅登记元数据,正文全部留在各自源仓库**,不向 market 仓库 vendoring 任何源码/二进制。
| id | 源仓库 | license | stewardship | redistribution | category |
|----|--------|---------|-------------|----------------|----------|
| `agent-reach` |
[Panniantong/agent-reach](https://github.com/Panniantong/agent-reach ) |
MIT | community | allowed | research |
| `ian-xiaohei-illustrations` |
[helloianneo/ian-xiaohei-illustrations](https://github.com/helloianneo/ian-xiaohei-illustrations )
| MIT | community | allowed | media |
| `khazix-skills` |
[KKKKhazix/khazix-skills](https://github.com/KKKKhazix/khazix-skills ) |
MIT | community | allowed | productivity |
## Changes
- 新增 `skills/agent-reach/entry.json`(SKILL.md 位于 `agent_reach/skill`,已用
`source.path` 指向)
- 新增 `skills/ian-xiaohei-illustrations/entry.json`(SKILL.md 位于同名子目录,已用
`source.path` 指向)
- 新增 `skills/khazix-skills/entry.json`(多技能合集,指向仓库根)
- 三条 `source.ref` 均固定到源仓库当前 HEAD commit,保证可复现
- `manifest.json`:`stats.totalSkills` 45 → 48,`lastUpdated` 更新为
2026-07-09
- `README.md`:同步计数(external 15→18 / total 45→48)与外部条目列表
## Compliance (ADR-038)
- 三个源仓库均为 MIT,`redistribution: allowed`,可分发
- 未向 market 仓库引入任何 upstream 源码树 / zip / 二进制
- 字段遵循现有 `entry.json` 约定(参照 mattpocock-skills / netease-skills 等既有条目)
2026-07-09 21:37:59 +08:00