mirror of
https://git.openapi.site/https://github.com/desirecore/market.git
synced 2026-09-05 16:13:53 +08:00
98251c9a1d06f0aff1b7a7b27114fbf9ad7d9a38
24 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
| 98251c9a1d |
feat: 新增飞书编排助手 Agent 市场条目 / add Feishu Orchestrator agent listing (#114)
## 这是什么 / What 把自然语言意图翻译成第三方飞书 CLI(`lark-cli`)的正确调用,覆盖云文档、Markdown 文件、电子表格、多维表格、云空间、知识库、幻灯片、画板、即时消息、邮箱、日历、视频会议与妙记、任务、审批、OKR、考勤、应用搭建与实时事件等业务域。 声明 23 个业务域技能依赖,安装后即可使用,无需手工拷贝技能目录。 An agent that turns natural-language intent into correct calls to the third-party Feishu CLI, covering documents, sheets, Base tables, drive, wiki, messaging, mail, calendar, meetings, tasks, approvals, OKR and attendance. It declares 23 domain skill dependencies that install together with the agent. ## 结构 / Layout 与仓库既有的 `dingtalk-workspace` / `wecom-assistant` 条目保持一致: ``` agents/feishu-orchestrator/ ├── agent.json # 内联元数据(AgentFS 配置 ∪ 市场卡片,含 i18n 双语 + changelog) ├── catalog-metadata.v1.json # sidecar,字段全部从 agent.json 派生 ├── assets/avatar.webp # 512×512 图片头像 ├── persona.md / principles.md # L0/L1/L2 分层人格与硬规则 ├── README.md # 条目总览 + 文档索引 └── docs/01..13-*.md # 按业务域拆分的 13 篇功能文档 ``` ## 文档 / Docs 命令、参数约定与坑位**均来自真机验证**(2026-09-01,220 个已授权 scope)。未跑通的能力在 [`docs/13-能力边界.md`](agents/feishu-orchestrator/docs/13-能力边界.md) 中如实标注,不含任何租户、组织或个人标识。 其中固化了三处容易踩错的 CLI 契约: | 契约 | 踩错的后果 | |---|---| | `auth status` 成功时**没有**顶层 `ok` 字段 | 按通用 `ok === true` 判据会把「已授权」误判成「未授权」,反复推用户重新扫码 | | 身份不显式指定会落到 `bot` | bot 看不见用户的个人日历、云盘、邮箱,且返回**空成功**而非报错 | | `--ranges`(复数)的 sheet 前缀要用 `sheet_name` | 用 `sheet_id` 会通过确认门禁、但在 API 层报 `Sheet not found`;而单数 `--range` 的约定**正好相反** | ## 治理 / Governance - `governance.availability: listing-only` —— 与核心 Agent、钉钉、企微三个既有条目一致。inline agent 的内容随仓库走,没有独立制品 ref,无法满足 `installable` 分支「必须有不可变 ref 或 SHA-256 摘要」的门禁 - `governance.branding`:`independent-listing` / `nominative` / `logo not-used` —— 飞书、Lark 为第三方商标,头像为抽象编排拓扑图,不使用任何第三方 logo - `compatibility.requirements`:按仓库「外部依赖披露」规范声明运行时、权限、连接三类前置。DesireCore 不打包、不分发、不授权、不安装、不代付 `lark-cli` 及其背后的飞书产品 ## 顺带修正 / Incidental 根 `README.md` 的 Agent 清单停留在 `2` 个(遗漏 `wecom-assistant`),一并补齐为准确的 4 个;`manifest.json#stats.totalAgents` 3 → 4。 ## 校验 / Verification | 校验 | 结果 | |---|---| | `validate_catalog_metadata.py --require-complete` | **0 error**,sidecars 74,本条目零 warning | | `validate-i18n.py` | 0 error | | `test_validate_catalog_metadata.py` | 47/47 | | 发布前敏感信息扫描(邮箱 / 飞书真实 ID / 租户组织标识 / 带 ID 链接 / 密钥形态 / 隐藏文件,全工作树) | **零命中** | | 文档内部链接 | 13 个链接全部命中真实文件,无断链 | ## 依赖 / Dependency `requiredClientVersion: 10.0.143` —— 自动装齐依赖技能的能力来自主仓库 desirecore/desirecore#2587,该值按其合入后的首个发布版本填写。**若 #2587 未能进入 10.0.143,此值需回填修正**,否则用户在缺少该能力的版本上装完 Agent 会没有技能。 --------- Co-authored-by: yi-ge <jackyoncode@gmail.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> |
|||
| a8361009b9 |
feat(dingtalk-workspace): add USAGE.md and wire feature docs into skill references (#113)
## 背景 / Background
`agents/dingtalk-workspace` 条目把 13 篇使用文档放在 `docs/` 目录,但**两侧都读不到**:
- 市场详情页只渲染 `agent.json` 的元数据字段,不扫描条目目录下的 `docs/`
- Agent 自身的上下文只挂载 `persona.md` / `principles.md` / `memory/` /
`skills/`,`docs/` 不在其中
The listing kept 13 usage documents under `docs/`, but nothing consumed
them: the
market detail page only projects `agent.json` metadata, and the agent's
own context
mounts `persona.md` / `principles.md` / `memory/` / `skills/` only.
## 变更 / Changes
配合 DesireCore 主仓库的 `USAGE.md` 平台约定(ADR-143)与既有技能 `references` 机制,分别解决两侧。
Pairs with the new `USAGE.md` platform convention (ADR-143) in the
DesireCore repo.
| 变更 / Change | 说明 / Detail |
| --- | --- |
| 新增 `USAGE.md` | 安装前该知道的内容:第三方 CLI 依赖声明、5
步快速开始、六种审批模式取舍、安全与已知边界。**刻意不含图片**——详情页的 markdown 渲染器会移除普通 `img src` |
| 新增私有技能 `dingtalk-guide` | 只做索引,正文用 `${SKILL_DIR}/references/` 绝对路径指向
13 篇文档,Agent 按需 `Read`。单产品问题(如「钉盘同步怎么用」)可触发查文档再作答,不占每轮上下文 |
| `docs/` → `dingtalk-guide/references/` | 整体移入并拍平。原 12
篇无交叉链接、无图片,移动无需改写正文 |
| `docs/README.md` 拆分 | 安装部分 → `USAGE.md`;界面与审批部分连同两张截图 →
`references/界面与审批.md` |
| `README.md` | 补 `USAGE.md` 约定说明与目录树条目 |
| `manifest.json` | 1.5.0 → 1.5.1(条目内容新增;计数不变,经校验器实跑确认) |
**单一真相源 / Single source of truth**:每篇文档只有一份,归 `dingtalk-guide` 技能所有;
不存在 `docs/` 与 `references/` 两份副本。`dingtalk-onboarding` 与
`dingtalk-workflows`
两个既有技能不变。
## 校验 / Validation
README 记录的 7 条 CI 校验命令全部实跑通过(改动前后各一轮):
```
scripts/i18n/test_validate_i18n.py exit=0
scripts/catalog/test_validate_catalog_metadata.py exit=0
scripts/catalog/test_collection_generator.py exit=0
scripts/catalog/validate_catalog_metadata.py --require-complete exit=0
scripts/i18n/validate-i18n.py exit=0
scripts/i18n/translate.py --check exit=0
scripts/gen-collection-children.py --check exit=0
```
`manifest.json#stats` 由 `validate_catalog_metadata` 输出实跑确认(agents=3,
teams=1,
publishableSkills=69),非算术推导,故不变。
## 公开信息边界 / Public information boundary
全树扫描零命中:改动文件、新增路径名、分支名、commit 主题与正文、本 PR 文本均不含
租户/客户/伙伴/个人身份。两张截图已逐张目视复核——仅含 DesireCore 自身界面、Agent 名称与
通用 `dws` 命令,返回结果为空列表,不含组织名或任何组织形态。
Full-tree scan returned zero results. Both screenshots were reviewed
individually:
they show only DesireCore's own UI, the agent name, and generic `dws`
commands.
## 依赖 / Dependency
`USAGE.md` 的详情页渲染依赖 DesireCore 主仓库的配套 PR。在其发布前,本条目的
`USAGE.md` 仍是仓库内可读的普通文件,不影响现有行为。
Detail-page rendering depends on the companion PR in the DesireCore
repository.
Until it ships, `USAGE.md` is simply a readable file in the listing and
changes nothing.
|
|||
|
|
c83f917901 |
feat(skills): add 6 due-diligence data-source skills (#111)
## Summary
Adds six enterprise due-diligence data-source skills as local built-in
skills (SKILL.md + SKILL.zh-CN.md + catalog-metadata sidecar), per
ADR-038.
| Skill | Category | Risk | Source |
|---|---|---|---|
| baidu-poi-search | data | low | Baidu Map Place API (REST) |
| tianyancha-risk | business | low | Tianyancha risk API (REST) |
| ccgp-gov-procurement | business | medium | ccgp.gov.cn (WebBridge) |
| cnipa-patent-search | business | medium | CNIPA pss-system (WebBridge)
|
| creditchina-query | business | high | creditchina.gov.cn (WebBridge +
ddddocr) |
| multi-source-sentiment | research | medium | Douyin Index/Featured +
WebSearch |
## Changes
- 6 x skills/<id>/{SKILL.md, SKILL.zh-CN.md, catalog-metadata.v1.json}
- builtin-skills.json: 34 -> 40
- manifest.json: totalSkills 63 -> 69
- README.md counts + list
## Security
- Credentials replaced with env-var placeholders (BAIDU_MAP_AK,
TIANYANCHA_TOKEN); verified no secrets in diff
## Validation
- validate-i18n.py: 0 errors (remaining warnings pre-existing repo-wide)
- zh/en heading parity verified; source_hash computed per repo algorithm
Co-authored-by: yi-ge <yi-ge@desirecore.net>
|
||
| 43a8cbd549 |
feat: 新增钉钉工作台助手 Agent 市场登记条目 (#107)
## 摘要 / Summary
**中文**:新增市场第 2 个 Agent 条目
`dingtalk-workspace`(钉钉工作台助手),作为钉钉全产品能力的**发现入口**。条目只提供发现元数据与治理事实,Agent
正文不在本仓库分发。
**English**: Adds the marketplace's second Agent listing,
`dingtalk-workspace` (DingTalk Workspace Assistant), as a **discovery
entry** for DingTalk's product surface. The listing carries discovery
metadata and governance facts only; the Agent's own content is not
distributed from this repository.
## 变更 / Changes
| 文件 / File | 说明 / Note |
| --- | --- |
| `agents/dingtalk-workspace/agent.json` | 市场展示元数据,zh-CN + en-US 双语 /
Market display metadata, zh-CN + en-US |
| `agents/dingtalk-workspace/catalog-metadata.v1.json` | 治理 sidecar /
Governance sidecar |
| `agents/dingtalk-workspace/assets/avatar.webp` | 512×512 中性图形头像 /
Neutral 512×512 avatar |
| `manifest.json` | `totalAgents` 1 → 2;version 1.2.30 →
1.3.0;lastUpdated |
| `README.md` | Agent 计数与目录示意 / Agent count and repository shape |
## 条目形态:可安装 / Shape: installable
**中文**:条目随附完整 Agent 正文(`persona.md`、`principles.md`、2 个 Skill、13
篇文档),安装后即得到完整可用的 Agent。
治理字段取值与理由:
| 字段 | 取值 | 理由 |
| --- | --- | --- |
| `installPolicy` / `updatePolicy` | `market` / `market` |
正文已在条目内,Market 负责安装与更新。这也避开了
`isMarketAgentMetadataOnly()`(`sync/market.ts:113-128`)——它只在
`system`+`repository` 时返回 true,另一条分支是对 `desirecore` 的 id 硬编码特判,本条目不适用 |
| `release` | `known` `1.0.0` `semver` | 非 system Agent 时
`validate_catalog_metadata.py:625-630` 要求 `release` 保留 legacy `version`
|
| `timestamps.releasePublishedAt` | `2026-09-01` | 本次发布日 |
| `governance.availability` | `listing-only` | 见下 |
**为什么 `availability` 不是
`installable`**:`validate_catalog_metadata.py:650-712` 的强证据门禁要求不可变
`provenance.content`(git 40 位 SHA 或 sha256)+ 已知 license + 已知
`reviewedAt` + `compliance`。本条目正文就在本仓库这次提交里,无法自指一个尚不存在的固定
ref;未做治理审查,也不会编造 `reviewedAt` 与许可证据。`listing-only`
在本仓库既有先例(`wecom-cli`、`larksuite-cli` 都是 `listing-only`
且实际可安装),且客户端不读该字段——真正决定可安装性的是 `installPolicy`。
**English**: The listing ships the complete Agent content (`persona.md`,
`principles.md`, 2 Skills, 13 documents), so installing yields a fully
working Agent.
| Field | Value | Rationale |
| --- | --- | --- |
| `installPolicy` / `updatePolicy` | `market` / `market` | Content lives
in the listing, so Market owns install and update. This also avoids
`isMarketAgentMetadataOnly()` (`sync/market.ts:113-128`), which returns
true only for `system`+`repository`; its other branch is an id-hardcoded
special case for `desirecore` that does not apply here |
| `release` | `known` `1.0.0` `semver` | For a non-system Agent,
`validate_catalog_metadata.py:625-630` requires `release` to preserve
the legacy `version` |
| `timestamps.releasePublishedAt` | `2026-09-01` | Publication date |
| `governance.availability` | `listing-only` | See below |
**Why `availability` is not `installable`**: the strict evidence gate at
`validate_catalog_metadata.py:650-712` requires an immutable
`provenance.content` (40-hex Git SHA or sha256) plus a known license, a
known `reviewedAt`, and `compliance`. This listing's content lives in
this very commit, so it cannot pin a ref that does not yet exist; no
governance review was performed, and no `reviewedAt` or license evidence
will be invented. `listing-only` has precedent here (`wecom-cli` and
`larksuite-cli` are both `listing-only` yet installable in practice),
and the client does not read the field — installability is actually
decided by `installPolicy`.
### agent.json 的双重身份 / agent.json serves two contracts
**中文**:安装时整个 `agents/<id>/` 目录被 `cpSync` 到
`~/.desirecore/agents/<id>/`(`market-routes.ts:1228-1252`),因此这个
`agent.json` **同时**是市场展示元数据和 AgentFS 运行时配置。已把源 Agent 的运行时配置并入(`llm` 智能路由
flagship、`heartbeat`、`session_mode`、`env`、`mcp_servers`、并发上限等)。
已知副作用:两套 Schema 在 10 个字段上不相交(市场侧的 `category` / `updatedAt` /
`maintainer` / `i18n` / `persona` / `changelog` / `installPolicy` /
`updatePolicy`,以及 `avatar.t` / `avatar.bg`),AgentFS 侧
`agentConfigSchema` 是 `additionalProperties: false`,`id` 还要求 UUID
形态。因此安装后
`parseAgentJsonText`(`agent/reader.ts:375-397`)会走宽松解析分支,每个进程打印一条
warning。宽松分支原样返回解析结果,配置全部生效——已实测确认(见下)。这是「内联可安装 Market
Agent」这一形态固有的,本仓库此前没有先例。
**English**: On install the whole `agents/<id>/` directory is
`cpSync`-ed into `~/.desirecore/agents/<id>/`
(`market-routes.ts:1228-1252`), so this `agent.json` is
**simultaneously** the marketplace display metadata and the AgentFS
runtime config. The source Agent's runtime configuration has been merged
in (`llm` smart routing at flagship tier, `heartbeat`, `session_mode`,
`env`, `mcp_servers`, concurrency cap).
Known side effect: the two schemas are disjoint on 10 fields
(market-side `category`, `updatedAt`, `maintainer`, `i18n`, `persona`,
`changelog`, `installPolicy`, `updatePolicy`, plus `avatar.t` /
`avatar.bg`), AgentFS's `agentConfigSchema` is `additionalProperties:
false`, and its `id` expects a UUID shape. So after install,
`parseAgentJsonText` (`agent/reader.ts:375-397`) takes the lenient
branch and prints one warning per process. That branch returns the
parsed object as-is, so every setting still applies — verified below.
This is inherent to the "inline installable Market Agent" shape, which
has no prior precedent in this repository.
## 外部依赖披露 / External dependency disclosure
**中文**:本 Agent 依赖一个由第三方独立分发的命令行程序,并需要用户自行完成钉钉账号 OAuth 授权。按仓库
`CLAUDE.md`「External dependency disclosure」要求,已在四处披露:
1. **发现描述** — `agent.json#i18n.<locale>.shortDesc`(zh-CN 与 en-US 各一份)
2. **`compatibility` 字段** — sidecar `compatibility.requirements[]`,4
条:runtime(用户自行安装第三方 CLI)、runtime(官方产品技能需手工拷贝且每次升级重做)、permission(钉钉账号
OAuth,能力范围取决于授权范围)、connection(网络与所在组织已开通的产品/权益)
3. **本地化市场文案** — `agent.json#i18n.<locale>.fullDesc` 与 sidecar
`presentation.i18n.<locale>.description` 中的「外部依赖声明」整节
4. **执行约定** — 同一节明确:依赖不可用(未安装 / 未授权 / 无权限 /
组织未开通)时,在发起外部调用**之前**停止并如实说明,**不编造成功结果**
明确声明 DesireCore
**不打包、不分发、不授权、不安装、不代付、不运营**该程序及其背后的产品;凭据与费用由用户与服务方之间的条款约束。
**English**: This Agent depends on an independently distributed
third-party CLI and requires the user's own account OAuth. Per
`CLAUDE.md` "External dependency disclosure", it is disclosed in all
four required places:
1. **Discovery description** — `agent.json#i18n.<locale>.shortDesc`, in
both zh-CN and en-US
2. **`compatibility` field** — sidecar `compatibility.requirements[]`,
four entries: runtime (user installs the third-party CLI), runtime
(official product skills must be copied manually and re-copied after
each upgrade), permission (account OAuth; coverage depends on granted
scopes), connection (network plus the products and entitlements enabled
for the user's own organization)
3. **Localized marketplace text** — the "External dependency disclosure"
section inside `agent.json#i18n.<locale>.fullDesc` and sidecar
`presentation.i18n.<locale>.description`
4. **Execution instructions** — the same section states that when the
dependency is unavailable (not installed, not authorized, not permitted,
or not enabled), the Agent stops **before** the external call and never
fabricates a successful result
It states explicitly that DesireCore does **not bundle, distribute,
license, install, pay for, or operate** that program or the products
behind it; credentials and fees are governed by terms between the user
and the service provider.
## 品牌与商标 / Branding
**中文**:`branding.relationship: independent-listing` / `nameUsage:
nominative` / `logoStatus: not-used`。头像是自制的中性图形(对话气泡 + 终端提示符
`>_`,表达「自然语言意图 → 命令调用」),**未使用任何第三方 logo 或商标图形**。
**English**: `branding.relationship: independent-listing` / `nameUsage:
nominative` / `logoStatus: not-used`. The avatar is an original neutral
mark (a speech bubble containing a `>_` terminal prompt, expressing
"natural-language intent becomes a command call"). **No third-party logo
or trademark artwork is used.**
## 未审查的事实保持 unknown / Unverified facts left unknown
**中文**:未做治理审查,因此
`governance.license`、`timestamps.reviewedAt`、`timestamps.releasePublishedAt`、`timestamps.upstreamObservedAt`、`release`
一律如实为 `unknown`,不编造许可证据或审查时间。`compatibility.platforms` 同样为
`unknown`——实际只在 macOS 上验证过,不宣称未验证的平台。
**English**: No governance review was performed, so
`governance.license`, `timestamps.reviewedAt`,
`timestamps.releasePublishedAt`, `timestamps.upstreamObservedAt`, and
`release` are all honestly `unknown`; no license evidence or review date
is invented. `compatibility.platforms` is likewise `unknown` — only
macOS was actually exercised, and untested platforms are not claimed.
## 校验 / Validation
**中文**:按 `.github/workflows/i18n-validate.yml` 的顺序在本地跑完 7 步,全部 `exit
0`;`0 error(s)`,116 warning 全部是主干既有条目的历史告警,**新条目零告警**。
**English**: All seven steps from `.github/workflows/i18n-validate.yml`
were run locally in order; every step exited `0`. `0 error(s)`; all 116
warnings are pre-existing on `main` for other listings — **the new
listing produces none**.
```
exit=0 errors=0 新条目命中=0 <-- scripts/i18n/test_validate_i18n.py
exit=0 errors=0 新条目命中=0 <-- scripts/catalog/test_validate_catalog_metadata.py
exit=0 errors=0 新条目命中=0 <-- scripts/catalog/test_collection_generator.py
exit=0 errors=0 新条目命中=0 <-- scripts/catalog/validate_catalog_metadata.py --require-complete
exit=0 errors=0 新条目命中=0 <-- scripts/i18n/validate-i18n.py
exit=0 errors=0 新条目命中=0 <-- scripts/i18n/translate.py --check
exit=0 errors=0 新条目命中=0 <-- scripts/gen-collection-children.py --check
0 error(s), 116 warning(s). agents=2, builtinSkills=34, pointerSkills=28,
publishableSkills=62, collections=7, collectionChildren=147, sidecars=64
```
另外用客户端契约做了运行时验证:按 `readAgentDetail` 的归一化逻辑(i18n 拍平 + changelog 按 locale
解析 + system 策略下 `version` → `metadataRevision`)还原 detail
对象后,`validateMarketAgent` 在 zh-CN 与 en-US 下均 PASS。
Additionally verified against the client contract: after reproducing
`readAgentDetail`'s normalization (i18n flattening, per-locale changelog
resolution, and `version` → `metadataRevision` under the system policy),
`validateMarketAgent` PASSes for both zh-CN and en-US.
### 安装验证 / Install verification
**中文**:用 agent-service 的**真实导出函数**复刻 `market-routes.ts:1185-1260`
的安装流水线(`skillCopyFilter`、`computeCapabilityContentDigest`、`isMarketAgentMetadataOnly`、`extractAgentVersion`、`parseAgentJsonText`),在
vitest unit project 中执行。
**English**: The install pipeline from `market-routes.ts:1185-1260` was
reproduced using agent-service's **real exported functions**
(`skillCopyFilter`, `computeCapabilityContentDigest`,
`isMarketAgentMetadataOnly`, `extractAgentVersion`,
`parseAgentJsonText`) and executed inside the vitest unit project.
```
[1] isMarketAgentMetadataOnly = false => 放行可装
[2] cpSync ok; source=cb8c961bb55b9abe… staged=cb8c961bb55b9abe…
[3] installedVersion = 1.0.0
[5] 应存在 19 项,缺失 0 项
[6] parseAgentJsonText => 可用配置
name=钉钉工作台助手 llm.routingMode=smart tier=flagship
max_concurrent_sessions=3 accepts_messages=true
avatar.image.path=assets/avatar.webp
✓ packages/agent-service/src/__tests__/… (1 test) 75ms
Test Files 1 passed (1)
```
19 项断言覆盖 `agent.json` / `persona.md` / `principles.md` / 2 个 `SKILL.md`
/ `assets/avatar.webp` / 13 篇文档,全部存在;staged 摘要与源摘要一致(内容无漂移)。
All 19 assertions — `agent.json`, `persona.md`, `principles.md`, both
`SKILL.md` files, `assets/avatar.webp`, and all 13 documents — are
present, and the staged digest matches the source digest (no content
drift).
## 公开信息边界 / Public information boundary
**中文**:按 `CLAUDE.md`「Required pre-publication
check」执行完毕。敏感令牌清单通过私有渠道获取并保存在仓库之外,未落盘、未写入否定名单。全工作树扫描(含隐藏文件、排除 `.git`)后,本
PR 新增与修改的文件(含本次新增的 17
个正文文件)**零命中**;已对示例做语义复核,正文示例统一使用「某某」「张三」这类中文通用占位人名,正文只描述公开的软件包名、公开命令与中立能力域,不含任何租户、客户、伙伴或个人身份,也无截图。分支名、commit
标题与正文、以及本 PR 文本同样零命中。检查通过。
**English**: The `CLAUDE.md` "Required pre-publication check" was
completed. The sensitive token list was obtained through a private
channel and kept outside the repository; it was not persisted and not
added to any denylist. After scanning the complete working tree
(including hidden files, excluding `.git`), the files added or modified
by this PR — including the 17 content files added in this round —
produce **zero hits**. Examples were reviewed semantically: the text
describes only public package names, public commands, and neutral
capability domains, with no tenant, customer, partner, or individual
identity, and no screenshots. The branch name, commit subject and body,
and this PR text are likewise clean. Check passed.
## 备注 / Notes
**中文**:与 #104(`skills/dingtalk-cli` 技能条目)互补——那个 PR 登记工具层,本 PR 登记 Agent
层。两者都改了 `manifest.json` 与 `README.md` 的统计行,后合并的一方需要重算计数。本分支基于 `main`,不依赖
#104。
目录 slug 选用 `dingtalk-workspace` 而非本机 AgentFS 实例目录名:AgentFS
实例目录是创建时按中文名自动生成的拼音串,不满足市场 slug 的语义可读性要求;`dingtalk-workspace`
与它所面向的产品域(钉钉工作台)及上游 CLI 包名一一对应,对应关系明确可查。
**English**: Complementary to #104 (the `skills/dingtalk-cli` listing) —
that PR registers the tool layer, this one the Agent layer. Both touch
the stats lines in `manifest.json` and `README.md`, so whichever merges
second must recount. This branch is based on `main` and does not depend
on #104.
The directory slug is `dingtalk-workspace` rather than the local AgentFS
instance directory name: that instance directory is an auto-generated
pinyin transliteration of the Chinese display name and is not
meaningfully readable as a marketplace slug. `dingtalk-workspace` maps
one-to-one onto the product surface it fronts and onto the upstream CLI
package name, so the correspondence stays explicit.
---------
Co-authored-by: yi-ge <jackyoncode@gmail.com>
|
|||
| fb6005cd7b |
feat: 新增钉钉官方 CLI 市场入口(含 14 个官方子技能) (#104)
## 中文 补齐官方市场里唯一缺失的主流 IM CLI 条目:**钉钉官方命令行工具 `dws`**(npm 包 `dingtalk-workspace-cli`,Apache-2.0,Copyright 2026 Alibaba Group),与已有的 `wecom-cli`、`larksuite-cli` 形成对称。市场此前只有社区的 `dingtalk-api`,覆盖面远小于官方 CLI。 ### 变更 | 文件 | 说明 | | --- | --- | | `skills/dingtalk-cli/entry.json` | 合集指针条目 + 14 个官方子技能 `children` | | `skills/dingtalk-cli/catalog-metadata.v1.json` | 治理 sidecar | | `manifest.json` | `stats.totalSkills` 62 → 63;`version` 1.2.30 → 1.2.31;`lastUpdated` | | `README.md` | 外部条目计数与清单同步 | ### 14 个子技能 `dingtalk-aisearch`、`dingtalk-aitable`、`dingtalk-calendar`、`dingtalk-chat`、`dingtalk-contact`、`dingtalk-doc`、`dingtalk-drive`、`dingtalk-event`、`dingtalk-mail`、`dingtalk-minutes`、`dingtalk-misc`、`dingtalk-shared`、`dingtalk-todo`、`dingtalk-wiki` ### 外部依赖披露 CLI 是**独立分发的第三方软件**,本条目只是市场登记,四处均已声明: - **discovery description**(`entry.json#i18n.<locale>.shortDesc`):需自行用 npm 安装 `dingtalk-workspace-cli`,需完成钉钉 OAuth 授权登录(**不支持账号密码登录**),DesireCore 不打包、不授权、不安装也不代运营钉钉或该 CLI - **`compatibility.requirements`**(4 条):CLI 需在 PATH 上、Node.js >= 16.7.0、`dws auth login` 建立的授权会话(缺失时必须在外部调用前停止,禁止编造成功结果)、能力覆盖取决于组织授予的 OAuth 范围与钉钉权益 - **本地化市场文案**:sidecar `presentation.i18n` 与 `entry.json#i18n` 逐字一致,zh-CN / en-US 双语 - **执行说明**:随 CLI 分发的上游 `SKILL.md`,不在本仓库 `redistribution: verify-package-terms` 会让客户端在安装响应里带出条款提示。 ### 来源与治理的取舍(诚实声明) 上游 git 仓库 `https://github.com/open-dingtalk/dingtalk-workspace-cli`(该 URL 是发布方在 npm `package.json#repository` 里自己声明的)**当前对外返回 404,不可公开访问**,因此: - `source` 用 `kind: git` + 该声明 URL,**不写 `ref`**——没有可观察的 commit,不编造固定版本 - 相应地 `provenance.content` 不可变,`governance.availability` 只能是 `listing-only`(`validate_catalog_metadata.py` 的 installable 强证据门禁要求不可变 ref + 已知 license + `reviewedAt` + `compliance`,本条目一样都拿不出) - `governance.license` 保持 `{state: "unknown"}`(`entry.json#license: "Apache-2.0"` 取自发布方声明与包内 LICENSE/NOTICE,但仓库内没有许可证据文件,只产生既有的 `legacy-license-unverified` warning) - `timestamps.reviewedAt` / `releasePublishedAt` 保持 `unknown`;只有 `catalogUpdatedAt` 与 `upstreamObservedAt` 写入真实观察时刻 - `branding` 声明 `independent-listing` / `nominative` / `not-used`:独立登记、名称为指代性使用、未使用对方 Logo(图标是通用终端窗形) - 因为来源未固定,`gen-collection-children.py --check` 会输出 `SKIP`(与既有的 `mattpocock-skills` 同一路径),`children` 由人工按分发件内实际布局 `multi/<id>/` 撰写 ### 校验(已实际执行,全部 exit 0) ``` uv run --quiet scripts/i18n/test_validate_i18n.py exit=0 uv run --quiet scripts/catalog/test_validate_catalog_metadata.py exit=0 uv run --quiet scripts/catalog/test_collection_generator.py exit=0 uv run --quiet scripts/catalog/validate_catalog_metadata.py --require-complete 0 error(s), 117 warning(s). agents=1, builtinSkills=34, pointerSkills=29, publishableSkills=63, collections=8, collectionChildren=161, sidecars=64 exit=0 uv run --quiet scripts/i18n/validate-i18n.py 0 error(s) exit=0 uv run --quiet scripts/i18n/translate.py --check exit=0 uv run --quiet scripts/gen-collection-children.py --check exit=0 ``` 本条目产生的唯一 warning 是 `legacy-license-unverified`,与其余全部 pointer 条目一致。`entry.json` 另经客户端 `marketSkillEntrySchema` 的 Ajv 校验通过。 发布前公开信息边界检查已按 `CLAUDE.md` 执行并通过(工作树全量扫描含隐藏文件、路径名、分支名、commit 文案与本 PR 文本,零结果;令牌清单保存在仓库之外)。 --- ## English Adds the one mainstream IM CLI the official market was still missing: the **official DingTalk CLI `dws`** (npm package `dingtalk-workspace-cli`, Apache-2.0, Copyright 2026 Alibaba Group), making it symmetric with the existing `wecom-cli` and `larksuite-cli` entries. Until now the market only carried the community `dingtalk-api`, whose surface is far smaller. ### Changes | File | Purpose | | --- | --- | | `skills/dingtalk-cli/entry.json` | Collection pointer entry with 14 official sub-skill `children` | | `skills/dingtalk-cli/catalog-metadata.v1.json` | Governance sidecar | | `manifest.json` | `stats.totalSkills` 62 → 63; `version` 1.2.30 → 1.2.31; `lastUpdated` | | `README.md` | External-entry count and list kept in sync | ### External dependency disclosure The CLI is **separately distributed third-party software**; this entry is a marketplace listing only. The dependency is disclosed in all four required places: - **Discovery description** (`entry.json#i18n.<locale>.shortDesc`): the operator installs `dingtalk-workspace-cli` from npm and completes DingTalk OAuth sign-in (**no username-and-password login**); DesireCore does not bundle, license, install or operate DingTalk or this CLI. - **`compatibility.requirements`** (4 entries): the `dws` binary on PATH, Node.js >= 16.7.0, an operator-authorized session from `dws auth login` (without it the skills must stop before the external call and must never fabricate a successful result), and the fact that capability coverage depends on the organization's granted OAuth scopes and DingTalk entitlements. - **Localized marketplace text**: sidecar `presentation.i18n` matches `entry.json#i18n` verbatim, in both zh-CN and en-US. - **Execution instructions**: the upstream `SKILL.md` files shipped with the CLI, outside this repository. `redistribution: verify-package-terms` makes the client surface a terms notice on install. ### Source and governance trade-off (stated plainly) The upstream git repository `https://github.com/open-dingtalk/dingtalk-workspace-cli` — the URL the publisher itself declares in the npm `package.json#repository` — **currently returns 404 and is not publicly readable**. Therefore: - `source` uses `kind: git` with that declared URL and **no `ref`**: there is no observable commit, and inventing a pinned one is not acceptable. - Content provenance is consequently not immutable, so `governance.availability` can only be `listing-only` (the installable evidence gate in `validate_catalog_metadata.py` requires an immutable ref, a known license, `reviewedAt` and `compliance`; none of these exist here). - `governance.license` stays `{state: "unknown"}`. `entry.json#license: "Apache-2.0"` reflects the publisher's declaration and the LICENSE/NOTICE shipped in the package, but there is no license evidence file in this repository, so only the existing `legacy-license-unverified` warning is produced. - `timestamps.reviewedAt` and `releasePublishedAt` stay `unknown`; only `catalogUpdatedAt` and `upstreamObservedAt` carry real observed values. - `branding` declares `independent-listing` / `nominative` / `not-used`: an independent listing, nominative use of the product name, and no third-party logo (the icon is a generic terminal-window glyph). - Because the source is unpinned, `gen-collection-children.py --check` reports `SKIP` (the same path the existing `mattpocock-skills` entry takes). The `children` list was written by hand against the `multi/<id>/` layout actually observed in the distributed skill bundle. ### Validation (actually executed, all exit 0) All seven checks from `.github/workflows/i18n-validate.yml` were run locally and passed; the only warning attributable to this entry is `legacy-license-unverified`, matching every other pointer entry. `entry.json` additionally validates against the client's `marketSkillEntrySchema` under Ajv. The pre-publication public-information-boundary check in `CLAUDE.md` was performed and passed with a zero-result scan across the working tree (hidden files included), path names, branch name, commit text and this PR text. The search tokens are kept outside the repository. --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: yi-ge <jackyoncode@gmail.com> |
|||
| e77c658958 |
feat: 市场支持团队条目类型并上架合同审查团队 (#110)
## 变更 / What
市场此前只有 `agents` 与 `skills` 两类条目。本 PR 加入**团队(teams)**条目类型,并上架第一条真实团队
listing。
The market supported only `agents` and `skills`. This PR adds a
**teams** entry type and lists the first real team.
## 一、支持团队条目类型
「支持一种新条目类型」实际涉及 4 组共 11 个文件,比表面看到的多:
**客户端契约快照**
- 新增 `schemas/market-team-entry.client.schema.json`,用 esbuild 打包客户端
`packages/schemas/src/market.ts` 后导出生成。用同样方法重新生成
`market-agent-entry.client.schema.json` 验证过管线——字节完全一致(含属性顺序),确认不是手工誊抄。
**Sidecar schema**
- `identity.kind` 枚举加 `team`;新增 `$defs.teamSpec`;接入 `spec.oneOf` 与
kind→spec 派发
**校验器(工作量主要在这里)**
- `scripts/catalog/validate_catalog_metadata.py`:`load_legacy`
原先硬编码只认两个根目录。抽出 `CATALOG_ROOTS` 常量同时驱动允许的父目录集合与错误文案;按 kind 分派客户端 schema
校验;`teams` 进 stats 与 `--require-complete` 覆盖统计;把**严格 provenance
比对**与「可安装 pointer 必须自带不可变 ref」两道门禁扩展到团队
- `scripts/i18n/validate-i18n.py`:**它独立重算计数并逐个校验 `entry.json`**,不接团队会漏校
- `.github/workflows/i18n-validate.yml`:变更检测的 grep 不含 `teams/`——**一个只改
teams 的 PR 会报「无 i18n 相关变更,跳过校验」然后零校验通过**
- 测试:`test_validate_catalog_metadata.py` 29→47,`test_validate_i18n.py`
9→17
**顺带修正一条本就不对的规则**:`icon` 此前被要求「每个 entry.json 都必须有非空内联 SVG」,但运行时 schema 里
`marketAgentSchema` 与 `marketTeamSchema` **都没有 `icon` 字段**(只有 skill
有)。也就是说这条规则对 Agent pointer 同样在强加死重量,只因本仓库暂无 agent pointer 条目而未暴露。改为
`ICON_RENDERED_KINDS = {"skill"}`,agent/team 声明 icon
时给**警告**而非错误,文案说明「下一个维护者会以为改它能改变卡片」。
## 二、上架合同审查团队
`teams/contract-review-team/`(`entry.json` + sidecar)。
**团队条目是 fork 指针卡,不分发正文**:市场只存展示元数据 + git-only `source`,真实定义(`team.json`
/ `members.json` / `shared/`)在 `source.repoUrl` 指向的仓库里。安装即
`forkTeam`,更新即 `git pull`——组合固定,因此**没有** `installPolicy` /
`updatePolicy`。
| 字段 | 值 | 依据 |
|---|---|---|
| `source.ref` | `73cd87a9901cc548871927e9d5dbec8e4cc6c2b1` | v0.1.1
的**完整 SHA**。tag 不是可复现 pin,validator 有测试专门拒绝 |
| `latestVersion` | `0.1.1` | 上游真实 tag,与 `release.version` 交叉校验 |
| `license` | `MIT` | 上游仓库真有 LICENSE,已在 pinned ref 的快照中复验 |
| `redistribution` | `source-pointer-only` |
市场从不打包团队正文,只给指针——这是交付形态,与许可证宽松与否无关 |
| `requiredClientVersion` | `10.0.137` | 六个成员都声明了 `FileDigest`
内置工具,它随该版本发布 |
| `memberCount` / `memberNames` | 6 / 5 名 | schema 规定前者**含**组长、后者**不含**
|
| `availability` | `listing-only` | 见下 |
**`availability` 为什么不是 `installable`**:四项证据满足两项(不可变 pin ✓、已知 license
✓),缺的 `reviewedAt` 与 `governance.compliance`
本质是**一次尚未发生的治理审查**——需要具名方在具体日期针对这个确切 ref 审过许可合规、第三方内容与商标使用。没发生的事不能写进目录。
补充一个事实:本仓库**零个 sidecar 有 `compliance` 块,29 个 pointer 条目全是
listing-only**,`installable` 路径从未在任何真实条目上走过。这不阻止安装——fork 由 `source` 驱动。
**`license.evidencePath` 的基准此前是未定义的**:schema 只说
`safeRelativePath`,没规定相对谁。仓库里仅有的两个先例(`guizang-ppt`、`presentation-forge`)都是
vendored 技能,LICENSE 物理上在条目目录里。按那个读法,pointer 条目写 `evidencePath`
断言的是市场目录下有该文件——对 pointer 永远不成立。新增 `license-evidence` 规则按条目形态分派:vendored
要求文件存在(error),pointer 要求条目已 pin(warning),两种读法写进 README。
## 校验 / Validation
```
test_validate_catalog_metadata.py 47 tests OK
test_validate_i18n.py 17 tests OK
test_collection_generator.py exit 0
validate_catalog_metadata.py --require-complete
0 error, 116 warning (agents=1, teams=1, publishableSkills=62, sidecars=64)
validate-i18n.py / --online 0 error, 116 warning
translate.py --check exit 0
gen-collection-children.py --check exit 0
```
116 warnings 即加入团队之前的基线——**本条 listing 贡献 0 个警告**。
真实条目上的反向控制(跑在 rsync 副本上,仓库保持干净):
```
source.kind=zip → team-entry-schema (error)
install/updatePolicy 出现 → team-entry-schema (error)
requiredClientVersion 漂移 → legacy-consistency (error)
memberCount 漂移 → legacy-consistency (error)
provenance ref 漂移 → legacy-consistency (error)
可安装但无不可变 ref → installable-evidence (error)
evidencePath 在未 pin 的 pointer → license-evidence (warning)
```
另用**客户端真实校验器**(`parseMarketTeamEntry`,不是快照)验证条目通过,且多写一个字段会被拒。
## 公开信息边界 / Public information boundary
全树扫描无新增命中。团队内容使用「某某科技(北京)有限公司」这类标准中文占位。
---------
Co-authored-by: yi-ge <mizan57533@gmail.com>
|
|||
| df5959eebf |
移除官网展示用 Agent 目录 (#109)
## 变更 - 移除此前为官网展示加入的 7 个 Agent 条目 - 恢复 Market 为真实可复用目录,不再承载官网宣传样例 - 恢复 README 与 manifest 中的 Agent 计数 ## 验证 - `scripts/i18n/test_validate_i18n.py` - `scripts/catalog/test_validate_catalog_metadata.py` - `scripts/catalog/test_collection_generator.py` - `scripts/catalog/validate_catalog_metadata.py --require-complete` - `scripts/i18n/validate-i18n.py` - 敏感信息与发布边界检查通过 |
|||
| 9eb6181e55 |
feat: 增加公开业务 Agent 目录 (#108)
## 摘要 新增 7 个公开、可复用的 listing-only Agent 条目: - 内容营销 Agent - 标书协作 Agent - 合同审查 Agent - 工程图校核 Agent - 检验报告 Agent - 研究证据 Agent - 流程运营 Agent 这些条目用于发现和展示能力蓝图,不声明已安装、已连接外部系统或可替代专业人员签发。工程、检验、法律和研究类条目均保留人工复核边界。 ## Summary Add seven public, reusable, listing-only Agent entries for content marketing, tender collaboration, contract review, engineering drawing review, inspection reports, research evidence, and workflow operations. The entries are discovery blueprints only. They do not claim installed tools, connected systems, or authority to replace qualified professional review and sign-off. ## 数据变更 / Data changes - Market version: `1.3.0` - Agent count: `1 → 8` - Every Agent includes bilingual legacy metadata and `CatalogItemV1` sidecar data - All new entries remain `listing-only` with unknown license/platform facts where evidence is absent ## 验证 / Validation - i18n unit tests: 9/9 - catalog validator tests: 29/29 - collection generator tests: 4/4 - catalog validation: 0 errors - i18n validation: 0 errors - secret/private-key scan: 0 findings |
|||
| d76db984b6 |
fix: 对齐 Agent 指针目录与客户端校验契约 (#103)
## 问题 / Problem 市场 CI 要求每个 Agent 条目都有 catalog sidecar,但 sidecar 校验器只接受相邻的 agent.json。客户端已支持的 Agent entry.json 指针因此无法满足完整覆盖门禁。 The catalog completeness gate requires sidecars for every Agent, while the validator previously read only agent.json. Valid Agent pointer entries could not satisfy CI. ## 修改 / Changes - Agent 主文件严格二选一:内联 agent.json 或指针 entry.json;目录 slug 与安装源 UUID 保持分离。 - 使用从主仓固定提交导出的完整客户端 Agent entry Schema,先校验原始类型、字段、版本、路径和策略组合,再比较 sidecar。 - 对齐 latestVersion、固定来源、许可/治理、兼容性和有效的缺省 market/market 策略,拒绝 sidecar 单方面提升托管权限。 - 未修改产品条目、manifest、现有 sidecar Schema 或 CI 完整性要求。 Agent pointers now pass the pinned client input schema before source metadata consistency checks. Effective default policies are compared without promoting catalog metadata into authority. Existing inline Agents and Skills retain their validation paths; no entries or CI requirements change. ## 验证 / Validation - 29 + 4 + 9 项定向 Python 测试通过。 - 完整 i18n、catalog --require-complete、translation freshness 检查通过;116 条既有警告与基线一致,无新增。 - 原始客户端 Schema 与固定主仓来源逐项比较一致(仅增加溯源注释)。 - 独立代码审查发现的原始契约与缺省策略问题已修复并复核。 - 公开信息边界检查覆盖完整工作树、隐藏文件、链接目标与新增 Git 元数据,通过。 Targeted tests, full catalog/i18n/freshness validation, source-schema comparison and independent review passed. Existing warnings are unchanged. This PR repairs catalog validation; it does not claim runtime installation of a new product. --------- Co-authored-by: yige <yige@yigedeMacBook-Neo.local> |
|||
| 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 |
|||
|
|
98ffc8fe92 |
feat: 内置技能全量收录 presentation-forge (#83)
## 概述
将 PPT 工作流技能 **presentation-forge**(原 codex-ppt-skill)以 **builtin
内置技能**形态全量收录进 DesireCore 官方市场。
> 注:本 PR 最初以 entry.json pointer 形态提交,现按仓库负责人意见改为 builtin 层全量
vendoring。分支保留两个提交(pointer → builtin 转换)。
## 形态:builtin 全量 vendoring(遵循 guizang-ppt 先例)
- 全量内容进 `skills/presentation-forge/`:`SKILL.md` + `SKILL.zh-CN.md` +
`references/` + `scripts/` + `styles/`(9 套风格)+ `templates/` +
`schemas/`。
- builtin frontmatter:`version/type/risk_level/status/tags` +
`metadata.i18n`(zh-CN/en-US)+
`market.icon/category/maintainer`,`category: creative`。
- 列入 `builtin-skills.json`(33 项)。
- 附 `LICENSE`(MIT)+ `NOTICE.md` +
`_desirecore/{frontmatter.yaml,upstream.json}` 溯源。
- 溯源 commit:`mashagua/presentation-forge@b7b1a9c`(MIT)。
- 排除非运行内容:`tests/` 夹具、未被任何 vendored 文件引用的 1.3MB 流程图、Codex `agents/` 绑定。
## 变更
- 新增 `skills/presentation-forge/`(全量内容,约 440KB)
- `builtin-skills.json`:新增 `presentation-forge`(32 → 33)
- `manifest.json`:`stats.totalSkills` 60 → 61,`version` 1.2.26 →
1.2.27,`lastUpdated` → 2026-08-10
- `README.md`:built-in 32 → 33、external 29 → 28、total 61 不变,两处代码块同步
## 验证
```
uv run scripts/i18n/validate-i18n.py
OK: no i18n issues found.
```
stats 公式核对:entry.json 目录 28 + SKILL.md 目录 33 = 61 = manifest.totalSkills
✓
---------
Co-authored-by: Yige <a@wyr.me>
Co-authored-by: yige <yige@yigedeMacBook-Neo.local>
|
||
|
|
e15f152ed0 |
feat: 新增女娲与 Humanizer 双语版三个第三方入口 (#82)
## 概述 以 `entry.json` pointer 形式收录三个第三方技能,均为 MIT、社区维护、SHA 锁定: | id | 上游 | category | ref | 简介 | |---|---|---|---|---| | `nuwa-skill` | [alchaincyf/nuwa-skill](https://github.com/alchaincyf/nuwa-skill) | productivity | `27642f5` | 输入一个名字即自动调研→提炼→验证,把任何人的心智模型、决策启发式与表达 DNA 蒸馏成可运行的人物 Skill | | `humanizer` | [blader/humanizer](https://github.com/blader/humanizer) | creative | `523374d` | 基于维基百科「Signs of AI writing」指南去除文本 AI 痕迹,纯 Markdown 可跨 agent 运行 | | `humanizer-zh` | [op7418/Humanizer-zh](https://github.com/op7418/Humanizer-zh) | creative | `91f3d39` | Humanizer 汉化版,按中文写作习惯去痕,附核心规则、快速检查清单与质量评分 | 后两者是同一技能的英文原版与汉化版,故合并在一个 PR 内提交便于对照 review。 ## 遵循 ADR-038(市场元数据注册表与两层技能模型) - **只放元数据、不放内容**:仅新增三个 `skills/<id>/entry.json`,正文留在上游源仓库,不 vendoring 任何源码或二进制。 - **市场第三方层**:三者均 `stewardship: community`、`license: MIT`、`redistribution: allowed`。 - **source pointer**:`kind=git` + repoUrl + repoBranch,`ref` 锁定完整 SHA 保证可复现。 - **轻量 i18n**:仅 name/shortDesc(zh-CN / en-US),列表本地化可离线。 - **无需 `source.path`**:三个上游的 `SKILL.md` 均在仓库根目录(已用 GitHub API 核对树结构),不涉及 #81 修复的 pointer 路径问题。 - **不声明 children**:`nuwa-skill` 的 `examples/` 下 15 个人物 perspective 是女娲的产出示例而非并列子技能,按 `gen-collection-children.py` 的排除规则不计入。 - 第三方 entry 未进 `builtin-skills.json`。 ## 变更 - 新增 `skills/nuwa-skill/entry.json`、`skills/humanizer/entry.json`、`skills/humanizer-zh/entry.json` - `manifest.json`:`stats.totalSkills` 57 → 60,`version` 1.2.24 → 1.2.25,`lastUpdated` → 2026-08-09 - `README.md`:external 25 → 28、total 57 → 60,外部条目清单按字母序插入三个新入口 ## 验证 \`\`\` $ uv run scripts/i18n/validate-i18n.py OK: no i18n issues found. \`\`\` 统计核对:`entry.json` 目录 28 + `SKILL.md` 目录 32 = 60,与 `manifest.stats.totalSkills` 一致。 |
||
| 20b29df7a4 |
feat: 发布通用人效与资源优化能力
增加跨行业的人效与资源优化需求澄清、模型求解与独立验收能力,并固化公共市场的信息边界与发布前检查。 |
|||
| 4faba8602f |
feat: 收录视频观看 Skill
通过市场 i18n/schema validator、自动翻译检查和 Copilot review gate;source pointer 固定到 desirecore-agent/codex-watch-video-skill 的 main commit。 |
|||
|
|
b4cafe4edd |
feat: 新增宝玉 Skills 与 Marketing Skills 两个第三方入口 (#64)
以 entry.json pointer 形式收录两个第三方技能合集(均为 MIT、community、SHA 锁定): - baoyu-skills(JimLiu/baoyu-skills,creative,上游 21 个技能) - marketingskills(coreyhaines31/marketingskills,business,上游 49 个技能) 同步更新: - manifest.json:totalSkills 54 → 56,version 1.2.18 → 1.2.19,lastUpdated → 2026-08-06 - README.md:external 22 → 24、total 54 → 56,外部条目清单补入两个新入口,并补回此前遗漏的 karpathy-guidelines、last30days |
||
| 5d50b66d55 |
feat: 新增代码智能内置技能 (#61)
## 变更摘要 - 新增中英文 `code-intelligence` 内置技能,按需暴露隐藏的 `Lsp` 工具 - 记录 9 种语义导航操作、目录权限边界、缺少语言服务器时的降级策略 - 要求客户端版本 `10.0.94`,避免旧客户端安装后缺失工具 - 更新内置技能清单、市场统计和版本 ## 验证 - `uv run --with httpx --with ruamel-yaml scripts/i18n/validate-i18n.py` - `uv run --with httpx --with ruamel-yaml scripts/i18n/translate.py --check` ## Summary Adds the bilingual `code-intelligence` built-in skill, exposes the hidden `Lsp` tool only when the skill is active, documents its permission and fallback behavior, and updates the market manifest and counts. |
|||
|
|
57493b89a0 |
feat(skills): 新增 watchless 与 impeccable 两个 external skill (#60)
## 背景 新增两个社区 skill 的 marketplace 指针条目,两者此前均不在 market 中。 ## 改动 新增 2 个 external entry(`entry.json`,git 指针型,含 `zh-CN` / `en-US` i18n): | skill | category | license | source | 简介 | |---|---|---|---|---| | watchless | media | MIT | [chenzixin1/watchless](https://github.com/chenzixin1/watchless) | 将视频转成以关键帧截图为主线的完整视觉文档,输出 HTML/PDF/ZIP | | impeccable | design | Apache-2.0 | [pbakaus/impeccable](https://github.com/pbakaus/impeccable) | 让 AI 更懂前端设计的设计语言,覆盖 UX/可访问性/排版/配色/动效/设计系统 | 同步更新: - `README.md`:external `20 → 22`、total `50 → 52`,外部条目列表按字母序插入 `impeccable`、`watchless` - `manifest.json`:`stats.totalSkills` `50 → 52` ## 规则遵循 - entry.json 字段对齐现有 git 型指针(如 mattpocock-skills),格式一致 - category 使用 `categories.json` 已声明的合法 slug(media / design) - `source.ref` 固定到当前最新 commit,保证可复现 - 两个上游仓库均为标准 skill(含 SKILL.md / skill 定义),许可允许再分发 ## 验证 - 本地运行 `scripts/i18n/validate-i18n.py`:`OK: no i18n issues found.`(退出码 0) - entry.json 均为合法 JSON,i18n 完整 |
||
| 9273d4378a |
docs: update market catalog counts (#51)
## Summary - align the README catalog summary with the current market tree - report 20 external entries and 50 total publishable skills ## Validation - `uv run scripts/i18n/validate-i18n.py` |
|||
| 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 |
|||
|
|
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 等既有条目) |
||
| 1b002e5778 |
强化市场校验与索引元数据
合并市场索引、分类、i18n 校验、skill-creator 工具和已修改 skill 版本号更新。 |
|||
|
|
310378643b |
Add 3 community skill pointers (MIT) (#36)
## What 按 ADR-038(市场元数据注册表与两层技能模型)以「元数据 + pointer」方式收录 3 个第三方 skill 仓库(均为 MIT): | id | 上游 | 许可 | 分支 | |----|------|------|------| | `mattpocock-skills` | [mattpocock/skills](https://github.com/mattpocock/skills) | MIT | main | | `ai-news-radar` | [LearnPrompt/ai-news-radar](https://github.com/LearnPrompt/ai-news-radar) | MIT | master | | `taste-skill` | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill) | MIT | main | ## How - 各仅新增 `skills/<id>/entry.json` 一个文件(每个 24 行),**不 vendor 任何上游源码**,正文按需从上游获取。 - 三个上游均为 **MIT**(可分发),故 `stewardship=community`、`redistribution=allowed`。 - `source` 指针格式对齐现有 `follow-builders` 条目(注意 ai-news-radar 默认分支为 `master`)。 ## Compliance (ADR-038) - [x] 第三方内容不进 market 仓库,只放元数据 + pointer - [x] 每条标注 stewardship / license / redistribution - [x] 改动量极小(3 files, +72),无 upstream/ / .zip / .gif 膨胀 --------- Co-authored-by: Yige <a@wyr.me> |
||
| 8bdda4afb1 |
feat: skills i18n 改造(schemaVersion 1.1,零向后兼容) (#1)
* feat: skills i18n 改造 — schemaVersion 1.1,零向后兼容
把 21 个 skills + 1 个 agent + manifest/categories 全量迁移到 schemaVersion 1.1
的 i18n 结构,配套 CI AI 翻译流水线(GitHub Models)与本地工具链。
## 关键变更
### 数据结构(破坏性,schemaVersion 1.0 → 1.1)
- SKILL.md: 顶层 name 改为 ASCII slug(== 目录名,符合 agentskills.io 规范);
中文显示名/short_desc/description 全部迁入 metadata.i18n.<locale>
- agents/<id>/agent.json: shortDesc/fullDesc/tags/persona.{role,traits} 迁入
i18n.<locale>;changelog[].changes 改为 { <locale>: string[] } 对象
- categories.json: 每个分类的 label/description 迁入 i18n.<locale>,顶层只剩
color/icon
- manifest.json: 加 supportedLocales / defaultLocale;顶层 description 迁入
i18n.<locale>
### Body 文件结构
- 根 SKILL.md = frontmatter + default_locale (en-US) body
- SKILL.<locale>.md = 各 locale 的 markdown body(首行 <!-- locale: xx --> 自校验)
### 工具链(scripts/i18n/)
- glossary.json: zh→en 术语表 + do_not_translate 白名单
- schema/skill-frontmatter.schema.json: i18n frontmatter JSON Schema
- validate-i18n.py: 8 条校验规则(name 合规 / locale 完整性 / hash 一致性等)
- translate.py: GitHub Models / Anthropic 双 backend,sha256 增量翻译
- migrate.py: 一次性迁移脚本(旧格式 → i18n 结构)
### CI(.github/workflows/)
- i18n-validate.yml: PR 触发跑 validate + translate --check
- i18n-translate.yml: PR 触发用 GitHub Models(默认 openai/gpt-5-mini)翻译缺失
locale,自动追加 commit;可切到 ANTHROPIC_API_KEY 走 Claude
### 文档
- docs/I18N.md: 作者贡献指南(schema 说明 / 提交流程 / 常见问题)
- README.md: 加多语言段落
## 验证
- uv run scripts/i18n/validate-i18n.py: OK,49 文件 0 错误
- uv run scripts/i18n/translate.py --check: 0 stale locale
- 21 skills 标题数 zh-CN == en-US 严格对齐(最大 66=66)
- skills-ref 规范校验:全部通过(顶层 name ASCII slug + description 单字段)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix(i18n): 修复 PR #1 review 反馈的 6 项问题
- schema: translated_by 正则放宽为 ^(human|ai:[A-Za-z0-9._:/-]+)$,接受
'ai:github:openai/gpt-5-mini' 这类 backend:model 形式(CI 翻译输出格式)
- README + docs/I18N.md: 修正"CI 用 Claude API"误导描述,正确说明默认是
GitHub Models(openai/gpt-5-mini)+ GITHUB_TOKEN,可选切到 Anthropic
- skills/minimax-tts/SKILL.md & SKILL.zh-CN.md: 删除多余的 ``` 闭合,避免
Markdown 后续渲染错乱
- skills/docx/SKILL.md: 翻译时丢失的 • Unicode escape 示例已恢复,
与 zh-CN 版本对齐
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
|||
|
|
b09592338c | Initial market data: 6 agents, 5 skills |