Skip to content

feat: add Chinese service skill entries and sync workflow#32

Closed
mashagua wants to merge 4 commits into
desirecore:mainfrom
mashagua:add-chinese-service-skills
Closed

feat: add Chinese service skill entries and sync workflow#32
mashagua wants to merge 4 commits into
desirecore:mainfrom
mashagua:add-chinese-service-skills

Conversation

@mashagua

Copy link
Copy Markdown
Contributor

Summary

Adds market entries for external Chinese service skills:

  • MIT / MIT-0 upstreams: FlyAI, WeCom CLI, Lark Suite CLI, WeChat Pay Skills, AMap JSAPI Skill, DingTalk API Skill
  • Source-pointer-only entries for upstreams without declared licenses: Meituan Paotui client and NetEase skills
  • Packaged distribution pointer for Luckin my-coffee skill

Also adds scripts/vendor/sync-external-skills.mjs plus source and lock metadata so upstream revisions can be checked repeatedly. Source code is not vendored for projects without a declared license.

Validation

  • node scripts/vendor/sync-external-skills.mjs
  • uv run scripts/i18n/validate-i18n.py
  • uv run scripts/i18n/translate.py --check

@mashagua mashagua changed the title feat: add external Chinese service skills feat: add Chinese service skill entries and sync workflow Jun 27, 2026
@yi-ge

yi-ge commented Jun 28, 2026

Copy link
Copy Markdown
Member

感谢贡献!这个 PR 的 external-skills.json + external-skills.lock.json pointer 思路方向正确,
但同时把 MIT 上游的完整源码树 skills/*/upstream/ 连同 .zip/.gif 二进制 vendored 进了
仓库(+699,846 行 / 2,586 文件),与 market 的定位冲突。

我们已确立原则并落地(见 ADR-038 市场元数据注册表与两层技能模型):
market 只放元数据、不放第三方内容。第三方/外部技能以 skills/<id>/entry.json(元数据 +
source 指针)描述,正文放各自上游、由客户端安装时按需获取;不在 market / 安装包内 vendor 源码。

已在 #33 把本 PR 的 10 个外部技能改写成纯 pointer entry.json(保留你的 license/redistribution
归类),并补了 LICENSE + THIRD_PARTY_NOTICES.md。客户端侧支持见
desirecore/desirecore#919

建议:关闭本 PR 或移除其中 vendored 的 upstream/ 与二进制,外部技能统一走 #33 的 pointer 方式。
如上游确有需随仓分发的内容,请确认其许可允许再分发(redistribution: allowed)后再单独提。

@yi-ge

yi-ge commented Jun 28, 2026

Copy link
Copy Markdown
Member

@mashagua 非常感谢你这份贡献!🙏 你把外部技能引入市场、还专门设计了 external-skills.json + *.lock.json 来记录上游 revision——这个「用指针追踪上游、可重复校验」的思路方向完全正确,是我们想要的。下面想和你同步一下需要调整的客观原因和具体做法,帮你把这个 PR 打磨到可以合并。

为什么需要调整(客观原因)

这个 PR 在 pointer 之外,同时把多个 MIT 上游的完整源码树 skills/*/upstream/ 连同 .zip / .gif 二进制一起提交了,导致体量达到 +699,846 行 / 2,586 文件。这会带来三个客观问题:

  1. 体积放大到终端:market 仓库内容会被打包进 defaults/market.zip → 进客户端安装包 → 解压到每台用户机器 → 安装时再整目录复制一份。上游源码一旦 vendored 进来,这条链路会把膨胀逐级放大。
  2. 许可与再分发风险:部分上游未声明 license(如 meituan / netease),或属于"打包产物需核验条款"(luckin)。未确认可再分发就随仓分发他人源码存在合规风险。
  3. 维护成本:vendored 源码每次都要手动同步整棵树;而 pointer 只需更新一个 revision。

为此我们已确立并落地了一个原则(见 ADR-038 市场元数据注册表与两层技能模型):market 只放元数据、不放第三方内容。第三方/外部技能的正文放在各自上游,由客户端在安装时按需获取

怎么改更好(具体指导)

把每个外部技能从「vendored 源码」改成「一个 skills/<id>/entry.json 指针」即可:

  1. 删除 skills/<id>/upstream/ 整个目录,以及随附的 .zip / .gif 等二进制。
  2. 新增 skills/<id>/entry.json,描述元数据 + 指向上游的 source 指针。例如 FlyAI:
{
  "id": "flyai-skill",
  "name": "FlyAI",
  "category": "productivity",
  "tags": ["alibaba-flyai"],
  "maintainer": { "name": "alibaba-flyai", "verified": false, "account": "alibaba-flyai" },
  "stewardship": "partner",          // official / partner / community / pointer
  "license": "MIT",
  "redistribution": "allowed",       // allowed / source-pointer-only / verify-package-terms
  "source": {
    "kind": "git",                   // git / web / zip
    "repoUrl": "https://github.com/alibaba-flyai/flyai-skill.git",
    "repoBranch": "main",
    "ref": "54277b27b68e53741954c08541faedba1d45cc7b"   // 锁定 commit,可复现安装(来自你的 lock)
  }
}
  1. 按许可归类(沿用你 external-skills.json 里的判断):
    • MIT / MIT-0 且确认可再分发 → stewardship: partner(厂商官方账号)或 communityredistribution: allowed
    • 未声明 license(meituan / netease)→ stewardship: pointerredistribution: source-pointer-only
    • 打包产物需核验条款(luckin)→ stewardship: pointerredistribution: verify-package-termssource.kind: "zip"
    • web 来源(amap / dingtalk 的 clawhub 页面)→ source.kind: "web"repoUrl 填该页面 URL

字段约束见客户端 schema lib/schemas/market.tsmarketSkillEntrySchemastewardship/license/redistribution/source 为必填)。

给你省点事

我已在 #33 把你这 10 个外部技能按上面的方式全部转写成了 entry.json(保留了你的 license/redistribution 归类与 lock 里的 revision),并补了 LICENSE + THIRD_PARTY_NOTICES.md。客户端侧的 pointer 读取/安装支持见 desirecore/desirecore#919

所以你有两个选择,任选其一即可:

无论哪种都非常欢迎你后续继续贡献新技能~ 有任何疑问随时在这里 at 我,我帮你一起看。再次感谢!🎉

yi-ge added a commit that referenced this pull request Jun 28, 2026
## 概述 / Summary

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

[desirecore/desirecore#919](desirecore/desirecore#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](#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>
@mashagua mashagua closed this Jun 28, 2026
@mashagua
mashagua deleted the add-chinese-service-skills branch June 28, 2026 13:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants