Commit Graph

7 Commits

Author SHA1 Message Date
26a3a4a82a fix: 修复上游健康巡检并同步已审查的市场引用 (#207)
Upstream health checks could select a different branch ending in `main`,
index internal skills or lowercase reference documents, treat a valid
pinned path as broken after an upstream move, and close the tracking
issue while unpinned or unknown entries remained. Resolve exact refs and
tracked filenames, compare the installed snapshot, and drive issue
decisions from structured results.

Refresh 26 reviewed pointers, pin DingTalk and Matt Pocock collections,
remove the deleted merge-conflict skill, and add the six new public
children with reviewed translations. Synchronize sidecars, observed
release facts, license evidence and external dependency disclosures.
Identical-tree Agent pins and their versions remain unchanged. The
per-entry review is recorded in
`docs/upstream-health-189-remediation.md`.

Validation: 99 unit tests pass; all nine pinned collections reproduce;
catalog/i18n and translation-freshness checks pass; online health checks
all 41 external entries with zero broken, actionable or unknown results.
Existing catalog warnings decrease from 123 to 105 with no new warning
groups. Python/workflow shell syntax and whitespace checks pass.

Closes #189.
2026-10-05 23:13:13 +08:00
aec2e7c28b feat: 新增企业微信助手 Agent,并修正 wecom-cli 条目 ref 漂移 (#112)
## 概述 / Overview

两件事:新增「企业微信助手」Agent(自带 15 个技能),并修正 `wecom-cli` 条目钉在 6 月快照的 ref 漂移。

Two changes: adds the **WeCom Assistant** agent (bundling 15 skills),
and fixes the `wecom-cli` entry whose pinned ref was stuck on a June
snapshot.

## 1. 新增企业微信助手 Agent

覆盖企业微信 **14 类服务、95
个方法**:消息、群聊历史、通讯录、日程、会议、待办、邮件、在线文档、在线表格、智能表格、智能文档、文档管理、微盘、媒体文件。

**采用内联形态 + 自带私有技能**:Agent 安装对 `agents/<id>/` 整目录递归复制且 `skills/`
不在排除集合里,因此装 Agent 即带全部技能,用户无需再单独获取技能合集。

### 技能集(15 个,约 5000 行)

- 基于上游 [wecom-cli](https://github.com/WecomTeam/wecom-cli) 官方
Skill(MIT,© WecomTeam)改写,每个技能末尾保留归属声明
- **新增 `wecom-chat`**:补齐上游零覆盖的群聊历史读取
- 补齐上游未覆盖的 `message.send`、`doc.create`,方法覆盖达 **95/95**
- 修正上游三处文档漂移:邮件能力描述与实际相反、会议室参数名已过时、`title_highlight` 字段不存在

### 相对上游的核心增量:风险治理

- 26 个对外可见或不可逆的方法逐个写明**执行前确认要求**
- 4 个条件升级方法给出**参数级判据**,而非按方法名一刀切
- 文档权限扩散两项加重处理,涉及**企业外可见**时单独再确认一次
- 内部标识禁止外露,不因用户索要而放宽
- 拒绝导出可识别到具体自然人的隐私字段

### 三条真机实测得出、上游未覆盖的硬约束

1. 机器人**只能写入/修改自己创建的数据**,真人创建的只能读
2. 每次响应携带的 `extra_identity_context` **禁止透露给用户**
3. 权限错误(`850002`/`851008`/`853006`)**不得重试**,须将 `help_message`
**逐字原样**转给用户

## 2. 修正 wecom-cli 条目 ref 漂移

`source.ref` 原钉在 2026-06-28 的 `72e14f7`,该快照只有 7
个子技能且用已废弃的旧命名(`msg`/`schedule`)。上游 v1.2.0 已扩展到 **14 个**技能。按旧 ref
安装的用户拿到的是三个月前的快照。

- `source.ref` → `78c514b2afee7c0d3d7be715628478421f37ee63`
- `children` 由 `scripts/gen-collection-children.py` 重新生成,**7 → 14**
- sidecar 同步 `provenance.content.ref`、`childCount` 与 `children`

## 验证 / Verification

**静态**
- 215 条示例命令追加 `--dry-run` 实跑,**215/215 退出码 0**
- 未知方法 0、未知参数 0、`--json` 未知字段 0、枚举违规 0
- 15 个 `SKILL.md` 的 frontmatter 经客户端 `skillFrontmatterSchema` 校验全部通过
- `validate_catalog_metadata.py --require-complete` 与
`gen-collection-children.py`:**0 error**

**真机(在真实企业微信账号上端到端)**
- **待办域 6/6 方法全通**(含 2 个 write-high),`items` 必填的隐蔽坑实测证实
- **日程域 5 个方法全通**(含 3 个 write-high)
- 消息发送、通讯录解析、微盘列表、邮件搜索、文档搜索、会议列表、智能表格创建均已实测通过
- 测试数据已全部清理,未污染真实账号

**尚未实测**:群聊历史(机器人未开通该品类)。相关文档已明确标注验证状态,未实测的能力不写「实际效果」段落。
2026-09-03 03:50:00 -04:00
a205ef20f0 feat: 迁移统一目录元数据契约 (#102)
## 中文

- 为 System Agent、34 个 Builtin Skill、28 个 Pointer/Collection 条目增加 catalog
sidecar
- 覆盖 147 个 collection child,并固定可证明的来源;无法证明的内容保持 listing-only/unknown
- 增加 strict Schema、validator、collection check 与 CI 完整性门禁

## English

- Add catalog metadata sidecars for the System Agent, 34 built-in
Skills, and 28 pointer/collection entries
- Cover 147 collection children while keeping unverifiable facts
listing-only or unknown
- Add strict schemas, validators, deterministic collection checks, and
CI completeness gates

## 验证 / Verification

- Catalog validator 17/17
- Collection generator 4/4
- 63 sidecars, 147 children, zero errors
2026-08-31 04:10:49 -04:00
xyx
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
mashagua
f51eb0013c feat(skills): 为 15 个 pointer skill 补充 i18n 中英文简介 (#55)
## 背景

仓库内 20 个 pointer skill(`entry.json` 指针型条目)中,仅 5
个(flyai-skill、karpathy-guidelines、last30days、minimax-image-gen、minimax-tts)有
`i18n` 块,其余 15 个缺失,导致市场详情页中英文简介为空。

## 改动

为以下 15 个 skill 的 `entry.json` 补充 `i18n.zh-CN` / `i18n.en-US` 的 `name` 与
`shortDesc`,格式对齐已有条目(驼峰 `shortDesc`,`zh-CN` / `en-US` 直接置于 `i18n` 下):

| skill | 来源 |
|---|---|
| agent-reach | 上游 SKILL.md description |
| ai-news-radar | 上游 README |
| amap-jsapi-skill | clawhub 官方页面描述 |
| dingtalk-api | clawhub 官方页面描述 |
| follow-builders | 上游 README |
| ian-xiaohei-illustrations | 上游 SKILL.md description |
| khazix-skills | 上游 README |
| larksuite-cli | 上游 README |
| luckin-my-coffee | 按 skill 名称与类别推断(zip 分发,无可读源,待维护者核对) |
| mt-paotui-for-client | 上游 README |
| netease-skills | 上游 README |
| mattpocock-skills | 上游 README |
| taste-skill | 上游 README |
| wechatpay-skills | 上游 README |
| wecom-cli | 上游 README |

## 验证

- 15 个 `entry.json` 均为合法 JSON,`i18n` 字段完整
- 本地运行 `scripts/i18n/validate-i18n.py`:`OK: no i18n issues found.`(退出码
0)
- 仅改动 `i18n` 块,未触碰其它字段

## 备注

- **luckin-my-coffee** 的简介为推断内容(该 skill 以 zip 分发,无可读源码/README),请维护者重点核对。
2026-07-19 14:37:19 +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.

![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
2026-07-16 19:59:41 +08:00
14ca6385af feat: 市场转型为元数据注册表(pointer entry + 许可署名) (#33)
## 概述 / Summary

把 market 从「内容仓库」转型为「元数据注册表」的仓库侧改动,配合客户端 PR

[desirecore/desirecore#919](https://github.com/desirecore/desirecore/pull/919)
与

[ADR-038](https://github.com/desirecore/desirecore-docs/blob/main/技术/决策/ADR-038-市场元数据注册表与两层技能模型.md)。

原则:market 只放元数据、不放第三方内容;内置技能仍 bundled(有界例外)。每条第三方条目用
`entry.json`(元数据 + `source` 指针),正文放各自源仓库、安装时按需获取。

## 改动 / Changes

### S10 — minimax 迁出为官方独立仓库
- `minimax-image-gen` / `minimax-tts`(均 `author=desirecore`)迁至新建的官方开源仓库

**[desirecore/skills-minimax](https://github.com/desirecore/skills-minimax)**(MIT,monorepo,
  一仓多技能)。
- market 改用 `skills/<id>/entry.json` 的 pointer 引用(`source.path`
指入子目录,`ref` 锁定
  commit `6e39eee`),删除内联 `SKILL.md`。

### S11 — 许可署名合规
- 新增根 `LICENSE`(MIT)与 `THIRD_PARTY_NOTICES.md`。
- 标注 Anthropic **docx/pdf/pptx/xlsx 为 source-available(非开源、仅供演示参考)**、
frontend-design 等为 Apache-2.0;每条 entry 的 `license`/`redistribution`
为单条真相源。

### S12 — 外部技能改为纯 pointer(取代 #32 的 vendoring)
- 把 [#32](https://github.com/desirecore/market/pull/32) 的 10 个外部技能写成
`entry.json`
  pointer(**不再 vendor 上游源码**):
  - MIT/MIT-0 → `partner`/`community` + `allowed`
  - 无声明许可(meituan / netease)→ `pointer` + `source-pointer-only`
  - luckin 打包产物 → `pointer` + `verify-package-terms`(`source.kind=zip`)

## 说明 / Notes

- 外部条目的 `name`/`category` 为基于上游 URL 的合理初值,后续可随上游元数据完善。
- 客户端(#919)已支持 `entry.json` 读/装与体积守护栏;本 PR 合并后,主仓库需重新
  `npm run sync-market` 重打包 `defaults/market.zip`。

> 注:`follow-builders`(zarazhangrui/follow-builders, MIT)是 #32
`external-skills.json` 外部技能集合中的一员,属本次迁移范畴,非额外引入。

Co-authored-by: yi-ge <jackyoncode@gmail.com>
2026-06-28 21:06:20 +08:00