Commit Graph

126 Commits

Author SHA1 Message Date
b1f0719d40 docs: 明确 MindOpt 外部授权与部署依赖 (#80)
## 变更说明 / Summary

### 中文

- 在 `workforce-optimization` 的发现描述、`compatibility`、中英文市场摘要和正文中明确 MindOpt
是需要独立安装/部署并取得有效许可证的外部第三方求解器。
- 明确 `MindOptSolve` 只是受治理的 Connector/Adapter,不包含 MindOpt
求解器软件、许可证、算力托管、采购或运行费用。
- 增加运行前检查:必须确认 Connector ready、capabilities 可用且部署具备当前用途所需的有效许可证;仅注册 Tool
名称不能证明依赖可用。
- 增加安全降级:外部依赖不可用时仍可完成需求澄清和建模制品,但不得调用求解器、伪造 `SolveResult` 或宣称可行/最优/收益。
- 在 `AGENTS.md` 与 `CLAUDE.md` 中固化通用的第三方商业依赖披露规则。
- Skill 版本升级到 `2.3.3`,Market 版本升级到 `1.2.24`。

MindOpt 官方文档说明运行前必须取得有效许可证,并同时提供商业许可和社区许可;适用范围与采购要求以官方条款为准:

https://opt.aliyun.com/doc/mindopt/latest/cn/html/installation/license.html

### English

- Discloses in discovery metadata, `compatibility`, localized
marketplace text, and runtime instructions that MindOpt is separately
installed/deployed third-party solver software requiring a valid
applicable license.
- Clarifies that `MindOptSolve` is only the governed connector/adapter
and does not bundle the solver, license, hosted compute, procurement, or
operating costs.
- Adds a preflight gate for connector readiness, required capabilities,
and applicable licensing.
- Defines safe degraded behavior: requirement and model artifacts may
still be produced, but no solver call or fabricated solution claim is
allowed.
- Adds a generic third-party dependency disclosure rule to both
repository instruction entrypoints.
- Bumps the Skill to `2.3.3` and the Market to `1.2.24`.

The official MindOpt documentation states that a valid license is
required and documents both commercial and community licenses;
eligibility and purchasing remain governed by those official terms:
https://opt.aliyun.com/doc/latest/en/html/installation/license.html

## 验证 / Validation

- `uv run --quiet scripts/i18n/test_validate_i18n.py` — 8 passed
- `uv run --quiet scripts/i18n/validate-i18n.py` — no issues
- `uv run --quiet scripts/i18n/translate.py --check` — current; human
translation hash aligned
- `git diff --check`
- Public-worktree customer-identity/path scan — 0 matches
2026-08-08 00:13:56 +08:00
20b29df7a4 feat: 发布通用人效与资源优化能力
增加跨行业的人效与资源优化需求澄清、模型求解与独立验收能力,并固化公共市场的信息边界与发布前检查。
2026-08-07 23:55:01 +08:00
2e15720442 fix(web-access): 门槛降回 10.0.98——#77 让新装客户端整个失去浏览器能力 (#78)
真机测试发现的回归,由 #77 引入。

## 现象

全新安装的 10.0.99 客户端上,`BrowserManage` / `BrowserAct` / `BrowserSnapshot`
**完全不存在**——Agent 用 `ToolSearch` 也找不到。它们是 hidden 工具,靠 web-access
技能解锁,而该技能压根没被装上。

## 因果

`sync/builtin-skill.ts:171`:本地不存在 + 客户端版本低于 `required_client_version` →
记 `skippedIncompatible` 直接 return,**不新装**。

#77 把门槛提到 10.0.100,而 **10.0.100 尚未发布**——于是所有新装的 10.0.99 及以下客户端拿不到整个
web-access,连带失去全部内置浏览器能力。

已装 2.1.1 的老用户不受影响(`:207` 那条分支保留本地兼容旧版,不更新成用不了的新版)。

## 判断失误

#77 的理由是「不提门槛老客户端会拿到教它们用不存在能力的说明」。顾虑本身成立,但两害量级差了一个数量级:

| | 后果 |
|---|---|
| 门槛低 | 文档里几条说明超前,Agent 试一次失败、换个路子——**能力还在** |
| 门槛高 | **整个技能不存在**,Agent 连试都没得试 |

## 修法

门槛降回 10.0.98,超前的四条能力改用行内「需
10.0.100+」标注,并写明老版本上的替代做法。老客户端既拿得到技能,也不会被文档误导。`version` 2.2.0 → 2.2.1。

---

Regression from #77 found during real-machine testing: raising
`required_client_version` to an unreleased version made the whole skill
fail to install on fresh clients, taking all built-in browser tools with
it.

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-08-07 23:54:22 +08:00
f104d18165 feat(web-access): 截图像素直接给、clip 元素级裁剪、artifact 用绝对路径 (#77)
跟进 desirecore/desirecore#1741 与 #1756(均已合入 dev,随 10.0.100 发布)。

## 变更 / Changes

- **截图像素直接给**:现在作为 image 块进工具结果,视觉模型当场就能看。补一节说明什么时候才需要再 `Read`
一次(结果明确写了未附带像素、或需要原始分辨率),避免同一张图在上下文里占两份。同时说明非视觉模型下会明确告知「你看不到它的内容」,此时不要凭空描述画面。
- **元素级裁剪不再需要 `cdp.raw`**:`BrowserSnapshot` 的
`options.clip={x,y,width,height,scale}` 直接支持,`scale` 最大 4(已对照
`command-params.ts:333` 核实)。
- **artifact 改用 `result.artifact.absolutePath`**:原文教的
`${DESIRECORE_ROOT}/...` 在路径展开里根本不认(只认 `~` / `$HOME` /
`$USERPROFILE`),拼出来是相对路径、`Read`
报「文件不存在」;原文给的还是目录,照抄会撞上「路径不是文件」。真机实测两条都踩过。

## 刻意未改 / Deliberately unchanged

「用户真实鼠标会抢控制权」一条**保持原样**——修它的 desirecore/desirecore#1740 尚未合并,现状描述仍然准确。

## 版本门控 / Version gating

`required_client_version` 10.0.98 → **10.0.100**(含上述两个 PR 的最早版本)。market
是运行时拉取的,不提门槛会让老客户端拿到教它们用不存在能力的说明。

---

Follows desirecore/desirecore#1741 and #1756 (both merged to dev,
shipping in 10.0.100). Screenshot pixels now arrive as an image block
directly; element-level cropping no longer needs raw CDP; artifact reads
use the absolute path from the receipt. The 'real mouse steals control'
note is intentionally left as-is because its fix (#1740) is not merged
yet.

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-08-07 23:54:22 +08:00
a1782c143d fix: 移除 Skill 源仓库中的 Codex 命名
已将源仓库重命名为 desirecore-agent/watch-video-skill,并通过全部市场校验。
2026-08-07 23:54:22 +08:00
4faba8602f feat: 收录视频观看 Skill
通过市场 i18n/schema validator、自动翻译检查和 Copilot review gate;source pointer 固定到 desirecore-agent/codex-watch-video-skill 的 main commit。
2026-08-07 23:54:22 +08:00
b2865d501d fix(web-access): 修正内置浏览器工具文档与客户端版本门控 (#73)
跟进 desirecore/desirecore#1718 的 Codex review,修掉 web-access v2.1.0 正文中 4 处与真实工具实现不符的地方(均对照 desirecore@origin/dev 源码核实):

- 补 market.required_client_version: 10.0.98,避免老客户端把可用的 v2.0 换成调用不存在工具的说明
- BrowserImport 动作名修正:真实枚举 discover/create_plan/dry_run/apply/rollback/list_plans,无 'plan';domains 由 create_plan 消费;planId 前缀 bimp_
- input.wheel 示例补 x/y(schema 硬要求),capabilities 示例补 browser.input.pointer.wheel 并说明显式列表是做减法
- BrowserImport 降级为需额外授权的可选路径:browser.import.* 不在 agentDefault 内且 agentElevated 在工具层零引用,登录态默认改回 L3-fallback CDP

skill 2.1.0 → 2.1.1,manifest 1.2.19 → 1.2.20,human-locked 的 en-US 已重新对齐 source_hash。
2026-08-07 23:54:03 +08:00
mashagua
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
2026-08-07 23:54:03 +08:00
af4176bbd7 feat(web-access): 迁移到内置受管浏览器工具(v2.1.0) (#72)
## 变更说明 / Description

### 中文

客户端 v10.0.98(desirecore/desirecore#1596)停用了旧的 `BrowserListTabs` /
`BrowserNavigate` / `BrowserEval` / `BrowserClick` / `BrowserScreenshot`
/ `BrowserScroll` / `BrowserSetFiles` / `BrowserCloseTab` 及其 cdp-proxy
后端,调用会直接返回「该旧 BrowserXxx/cdp-proxy 入口已停用」。而 web-access v2.0.2 的
`provides.tools` 仍声明这批工具——技能激活后注入的是一组必然失败的工具。

本次把 `provides.tools` 换成统一浏览器工具,并同步正文与参考文档:

- `provides.tools`:`BrowserManage` / `BrowserSnapshot` / `BrowserAct` /
`BrowserImport` / `BrowserShare` + 保留 `SitePatternRead` /
`SitePatternWrite` / `LocalBookmarks`
- 中英文 SKILL 正文同步改写(L0 / 能力描述 / 决策树 / 四层策略表 / L3-fast 速查 / 反模式)
- `references/browser-tools.md` 整篇重写为新 API + 实测边界
- 5 份站点经验(小红书 / B站 / 微博 / 知乎 / 飞书)的流程改用新工具
- 版本 2.0.2 → 2.1.0,`updated_at` 更新,i18n `source_hash` 重算

**L3-fast 的定位相应收窄**:内置浏览器负责「到达 + 交互 + 截图 + 隔离」,抽取长正文仍回落 Jina
Reader(公开页)或 Playwright(登录态)——理由见下方实测。

### English

Client v10.0.98 retired the legacy `BrowserXxx` tools and the cdp-proxy
behind them, so web-access v2.0.2 was injecting a set of tools that
always fail. This PR migrates `provides.tools` to the unified browser
tools and rewrites the body, the browser-tools reference, and the five
site-pattern playbooks accordingly. L3-fast is re-scoped to
navigation/interaction/screenshots; bulk text extraction still falls
back to Jina Reader or Playwright.

## 测试方式 / Test Plan

在客户端 v10.0.98 + `electron-embedded` Provider 上实测:

- [x] `provides.tools` 里 8 个工具 ID 全部在 builtin registry 中存在
- [x] 把本 PR 的技能装进 dev 实例,带 `skillIds:['web-access']` 驱动智能体:真实调用
`BrowserManage(create_space)` → `BrowserManage(start_session)` →
`BrowserAct(tab.navigate)` → `BrowserManage(close_session)`,全部 success
- [x] `scripts/i18n/validate-i18n.py` 全仓库通过(中英文标题数一致、source_hash 一致)

文档中记录的边界均来自实测,而非推测:

| 边界 | 实测现象 |
|------|---------|
| 截图前必须 `tab.activate` | 标签页默认停在 `(-10000,-10000,1x1)`,直接截图卡满 30s
deadline 并触发 `browser.host.gone`,之后全部 `BROWSER_TAB_HOST_NOT_FOUND` |
| `page.evaluate` 不是取文通道 | 每次调用需人工审批;字符串/对象返回值被替换为
`[REDACTED:browser-runtime-value]`,仅 number/boolean/null 穿透 |
| `accessibility` 快照真实页面不可用 | example.com 正常返回 StaticText;维基百科条目一律
`BROWSER_RESULT_TOO_LARGE`(2 MB 上限,且 `depth` 参数被宿主忽略) |
| `semantic` 快照不含正文 | 只列 button / input / a 等可交互元素 |

## 风险与回滚 / Risk and rollback

- 纯技能内容变更,无脚本或清单结构改动
- 需要客户端 v10.0.98+;旧客户端装到本版会拿到一组不存在的工具名(旧客户端上原本那批工具也已失效,不构成回退)
- 回滚即 revert 本 PR
2026-08-07 23:53:28 +08:00
413f2cc00b fix(skills): 统一服务图标为纯白 (#65)
## Summary / 摘要

Normalize the Configure Compute, Using Services, and Register Services
source SVG icons to pure white.

将“配置算力”、“使用服务”和“注册服务”的源 SVG 图标统一为纯白。

## Version / 版本

- Market: `1.2.16` → `1.2.17`
- Each affected skill: `1.0.2` → `1.0.3`

## Validation / 验证

- `uv run scripts/i18n/validate-i18n.py`
- `uv run scripts/i18n/translate.py --check`
- Parsed all three SVGs and asserted their only hex color is `#FFFFFF`
- `git diff --check`
2026-07-29 17:48:28 +08:00
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.
2026-07-22 20:03:56 +08:00
mashagua
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 完整
2026-07-19 19:19:33 +08:00
ee8984e18a fix(skills): 去除追问/展示数量的软性倾向措辞,完全交 Agent 自主 (#59)
## 摘要 / Summary

### 中文

在去除机械数字上限(#58)后,进一步删掉技能里追问/展示数量的**软性倾向措辞**——create
的「一次不要问太多以免用户负担」、discover 的「避免一次刷屏过多」。数量与节奏完全交由执行 Agent
自主判断,不带任何倾向暗示。create 2.5.4 / discover 2.6.4,manifest 1.2.15,中英双份同步、重算
source_hash(validate-i18n 通过)。

### English

After removing the mechanical numeric caps (#58), further drop the soft
directional hints on ask/display count — create's "don't ask too many so
as not to burden the user" and discover's "avoid flooding the screen".
Count and pacing are left entirely to the executing Agent's judgment
with no bias. create 2.5.4 / discover 2.6.4, manifest 1.2.15, both
locales synced, hashes recomputed (validate-i18n passes).
2026-07-19 17:31:31 +08:00
108925a06d fix(skills): 去除束缚 Agent 自主判断的机械数字策略 (#58)
## 摘要 / Summary

### 中文

去除技能里束缚执行 Agent 自主判断的**机械数字策略**:create 需求收集的「每轮最多问 2 个」、discover
排序的「最多展示 5 个候选」。改为交由 Agent 按情况自主把握追问节奏与展示数量,保留「别让用户负担 /
别一次刷屏」的原则意图——把控制权交还给判断力更强的执行者,而非用固定上限约束。create 2.5.3 / discover
2.6.3,manifest 1.2.14,中英双份同步、重算 source_hash(validate-i18n 通过)。

### English

Remove mechanical numeric limits that constrain the executing Agent's
judgment: create's "at most 2 questions per turn" and discover's "show
at most 5 candidates". Both become "the Agent decides the pacing/count
by situation", keeping the principle intent (don't burden the user /
don't flood the screen) while handing control back to the more capable
executor instead of a fixed cap. create 2.5.3 / discover 2.6.3, manifest
1.2.14, both locales synced, hashes recomputed (validate-i18n passes).
2026-07-19 17:05:41 +08:00
1707a2a24e fix(skills): 补回 #56 压缩时误删的实质信息(意图对齐) (#57)
## 摘要 / Summary

### 中文

#56 的复盘修正。上一轮"强改写压缩"把四技能 L1
的**技术属性、使用场景与交互示范当套话一刀切**,造成实质信息丢失(承诺"意图全保留"但未做到)。本 PR 补回:

- **create**:`创建仓库符合 AgentFS v2 规范、git
管理版本(可治理/可追溯)`定位;`基础创建`形态(name+description,description 自动填充 persona
L0);需求收集的**引导问题示例**("起什么名字?/主要负责什么?"…);企业部署/开发者原型使用场景。
- **update**:`agent 目录 git 管理版本、历史可追溯`定位 + 使用场景。
- **discover**:使用场景(浏览/新用户/找替代)+ `语义匹配而非关键词搜索`。
- **delete**:使用场景(清理/测试/释放存储)。

根因:L1 混着实质技术属性与营销套话、使用场景是触发判据、引导问题是交互示范,不该按"只留独有信息"一刀切。补回后仍保留结构性压缩(zh
正文合计仍降 ~64%)。版本 create 2.5.2 / update 3.1.3 / delete 2.5.2 / discover
2.6.2,manifest 1.2.13,中英双份同步、重算 source_hash(validate-i18n 通过)。

### English

Post-mortem fix for #56. The previous aggressive compression treated the
skills' L1 technical attributes, use cases, and interaction demos as
boilerplate and cut them in a blanket way, dropping substantive
information (the "all intent preserved" claim wasn't fully met). This PR
restores: create's AgentFS-v2 / git-version-management positioning, the
"basic create" form (name+description auto-filling persona L0), the
requirement-gathering prompt questions, and enterprise/developer use
cases; update's git-versioned/traceable positioning and use cases;
discover's use cases and "semantic match, not keyword search"; delete's
use cases. Root cause: L1 mixed real technical attributes with marketing
boilerplate, use cases are trigger cues, and prompt questions are
interaction demos — none should have been blanket-cut. Structural
compression is retained (zh bodies still ~64% smaller). Versions bumped,
manifest 1.2.13, both locales synced, source hashes recomputed
(validate-i18n passes).
2026-07-19 16:14:22 +08:00
f3f0e9407e perf(skills): 智能体 CRUD 四技能提示词改写压缩(功能不变,~65%) (#56)
## 摘要 / Summary

### 中文

四个智能体管理技能(create/update/delete/discover-agent)改用 `ManageAgent`
内置工具后,正文与工具契约大量重叠——ManageAgent 的 description + params 已**常驻每次 query
的上下文**,声明了五个 action 语义、参数约束、权限硬边界、错误语义、字段级合并、确认行为、list/get
返回格式;技能正文里再复述即冗余。本次对四技能做**强改写·语境融合**压缩:

- 与工具契约重复的说明(参数/权限/错误码/确认行为/成功返回话术)**改写融入对应流程步骤**(如错误处理表 → 阶段一句、确认行为 →
阶段一句),不再照抄、不再表格化。
- 装饰性 ASCII 流程框图 → 一行文字流程;update 内部两张重复更新表 → 合并;YAML
元数据块(diff_metadata/context_handoff)融入流程;冗长示例(create 三份 JSON、update 附录 4
示例、discover ASCII 卡片)就地精简为代表示意。
- **不外置 references、不净删除任何内容**:所有决策/领域/交互意图完整保留——领域匹配表、persona/principles
的 L0/L1/L2 生成规范、update 两路径分流与字段级合并 vs 整体替换、防幻觉改名、回滚流程、discover
需求维度与无匹配衔接 create 等核心一字未丢。

zh 正文合计 **26542 → 9196 字符(降 ~65%)**;中英双份同步改写、逐段对齐,重算 i18n
source_hash(validate-i18n 通过)。版本 create 2.5.1 / update 3.1.2 / delete
2.5.1 / discover 2.6.1,manifest 1.2.12。

### English

After the four agent-management skills adopted the `ManageAgent` builtin
tool, their bodies heavily duplicated the tool contract — ManageAgent's
description + params are **resident in every query's context** (action
semantics, param constraints, permission hard-boundaries, error
semantics, field-level merge, confirmation behavior, list/get return
formats). This PR compresses all four via **aggressive rewrite +
contextual fusion**: contract-duplicating text is rewritten into the
relevant flow steps (not copied, not tabularized), decorative ASCII flow
boxes become one-line text, update's two duplicate tables are merged,
YAML metadata blocks are folded in, and long examples are trimmed in
place to representative sketches. **No references externalization, no
net deletion** — every decision/domain/interaction intent is preserved
(domain matching table, persona/principles L0/L1/L2 generation spec,
update's two-path split and field-level-merge-vs-full-replace,
anti-hallucination rename, rollback flow, discover's need dimensions and
create hand-off). zh bodies total **26542 → 9196 chars (~65% down)**;
both locales rewritten and aligned, i18n source hashes recomputed
(validate-i18n passes). Versions bumped, manifest 1.2.12.
2026-07-19 15:16:43 +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
43384e24f4 fix(skills): flyai-skill 补 source.path 与 i18n,修复详情页空白 (#54)
## 问题

FlyAI(flyai-skill)在客户端市场详情页显示为空白(无描述、无技能文档正文)。

## 根因

- `source.path` 未设置:上游仓库 `alibaba-flyai/flyai-skill` 的 `SKILL.md` 实际位于
`skills/flyai/` 子目录(目录名为 `flyai`,而非与 entry id 同名的 `flyai-skill`)。抓取逻辑在
`path` 为空时退化为在仓库根目录查找 `SKILL.md`,而根目录并无该文件,导致抓取静默失败、`body` 保持为空。
- 缺少 `i18n` 字段:`shortDesc`/`name` 本地化文案缺失,列表与详情页描述行同样为空。

两者叠加,加上客户端对空字段没有兜底文案,最终表现为详情页视觉上完全空白。

## 修改

- 补充 `source.path: "skills/flyai"`,对齐上游真实目录结构
- 补充 `i18n.zh-CN` / `i18n.en-US` 的 `name` + `shortDesc`(内容取自上游
`SKILL.md` frontmatter 的 `description` 字段整理)
- 补充 `latestVersion: "1.0.15"`(对齐上游 `SKILL.md` frontmatter
`metadata.version`)

## 验证

- `python3 scripts/i18n/validate-i18n.py skills/flyai-skill` 通过
- `python3 scripts/i18n/validate-i18n.py skills/flyai-skill --online`
通过(确认 `source.path` 指向的文件真实可抓取)

## Test plan
- [x] 本地校验脚本通过(含 --online)
- [ ] DesireCore 主仓库 `npm run sync-market` 后在客户端验证详情页正常展示
2026-07-19 00:45:05 +08:00
17cce5a9ca fix(skills): update-agent 示例字段名修正 + get 返回示例对齐真实输出 (#53)
## 摘要 / Summary

### 中文

market#52 的修正:update-agent
附录示例使用了错误的字段名(`communicationStyle`/`must`),照示例调用会被 ManageAgent 的 Ajv
校验(additionalProperties: false)直接拒绝;`personality` 示例应为字符串数组。同时把 `get`
的返回示例对齐真实输出格式(`## persona.md` / `## principles.md` 段落含分层 markdown 原文,对应
desirecore#1230),并在附录固定列出结构化字段名清单。update-agent 3.1.1,manifest 1.2.11。

### English

Correction to market#52: the update-agent appendix examples used wrong
field names (`communicationStyle`/`must`) that ManageAgent's Ajv
validation (additionalProperties: false) would reject outright;
`personality` must be a string array. The `get` response example is
aligned with the actual output format (`## persona.md` / `##
principles.md` sections, per desirecore#1230), and the appendix now
lists the fixed structured field names. update-agent 3.1.1, manifest
1.2.11.
2026-07-18 23:35:50 +08:00
3010b5ab5d feat(skills): 智能体 CRUD 四技能改经 ManageAgent 内置工具(实例鉴权适配) (#52)
## 摘要 / Summary

### 中文

主仓库 desirecore#1225 新增 `ManageAgent` 内置工具后,智能体 CRUD 四技能从"调本机 HTTP
API/curl"改写为调用该工具(实例鉴权上线后 Agent 直接访问本机 API 会 401):

- **create-agent 2.5.0**:`POST /api/agents` →
`ManageAgent(action='create', ...)`;补充保留标识(core/desirecore)拒创、config 仅允许
llm 白名单的错误处理
- **delete-agent 2.5.0**:`DELETE /api/agents/:id` →
`action='delete'`(工具层强制用户确认);错误处理改为工具拒绝语义(核心智能体/自删/活跃状态);补团队级联说明
- **discover-agent 2.6.0**:`GET /api/agents(/:id)` →
`action='list'/'get'`
- **update-agent
3.1.0**:结构化字段(name/description/llm/persona/principles)改经
`action='update'`(白名单+schema 校验+字段级合并语义),自由格式文件仍 Read/Write

四技能声明 `market.required_client_version:
10.0.90`,老客户端在市场端被门控禁装。中英双语正文同步改写,i18n source_hash 已重算(validate-i18n.py
通过);manifest 1.2.10。

### English

After desirecore#1225 shipped the `ManageAgent` builtin tool, the four
agent-CRUD skills are rewritten from local-HTTP-API/curl instructions to
tool calls (direct local API access now returns 401 under instance
auth). Each skill declares `market.required_client_version: 10.0.90` so
older clients are gated from installing. Both locales are rewritten in
sync and i18n source hashes recomputed (validate-i18n.py passes);
manifest bumped to 1.2.10.

主仓库回填:合并后将在 desirecore 主仓库执行 `npm run sync-market` 生成新的
defaults/market.zip 并单独提 PR。
2026-07-18 23:05:18 +08:00
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`
2026-07-16 20:53:31 +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
0b9aa38699 fix(skills): 禁止自动注入完整技能内容 (#49)
## Summary

- 将 dashscope-image-gen、image-to-image、markdown、tech-diagram、xiaomi-tts
改为仅按需加载,并递增 patch 版本
- 在 Market validator 与 JSON Schema 中禁止 `disable-model-invocation: false`
- 将回归测试接入 `i18n Validate`,同步中英文技能编写规范

## Root cause and impact

这 5 个技能在首次引入时即声明 `disable-model-invocation: false`,导致完整技能正文进入普通请求的
system prompt。修改后市场技能只能声明 `true` 或省略该字段,完整内容仅在显式调用 Skill 工具后加载。

## Validation

- `uv run --quiet scripts/i18n/test_validate_i18n.py`
- `uv run --quiet scripts/i18n/validate-i18n.py`
- `uv run --quiet scripts/i18n/translate.py --check`
- `python3 -m json.tool
scripts/i18n/schema/skill-frontmatter.schema.json`
- `actionlint .github/workflows/i18n-validate.yml`
- `git diff --check`
2026-07-14 11:55:22 +08:00
bbe2d40c2d fix: 修复配置算力技能图标 (#48)
## 修改内容

- 将“配置算力”技能的芯片图标调整为对称的 9/15 引脚布局
- 为图标边缘保留安全距离,避免缩放时出现贴边或裁切
- 将技能版本更新至 1.0.2,并补充变更记录

## 根因

原图标左右引脚使用了不对称的坐标,并延伸至 viewBox 的 1/23 边缘;在市场卡片缩放渲染时容易产生视觉偏移或裁切。

## 验证

- `python scripts/i18n/validate-i18n.py`
- YAML frontmatter 与内联 SVG XML 解析
- `git diff --check`
2026-07-11 20:42:20 +08:00
f9ca713ce2 fix(skills): add latestVersion and i18n to karpathy-guidelines / last30days pointer entries (#47)
## Summary / 摘要

Complete the two pointer entries added in #46 with `latestVersion` and
`i18n` blocks.

补全 #46 新增的两个 pointer 条目的 `latestVersion` 与 `i18n` 字段。

## Why / 原因

- **latestVersion**: `karpathy-guidelines` upstream `SKILL.md` has no
root-level `version`, so the client records `0.0.0` on install and the
update check (`0.0.0 == 0.0.0`)永远判定已最新——updates would be silently
skipped forever. Registering `latestVersion` here enables the
client-side fallback (shipping separately in the desirecore repo).
`karpathy-guidelines` 上游无根级 version,客户端装出来是 0.0.0 且更新判定永远跳过;在市场登记
latestVersion 配合客户端 fallback 修复。
- **i18n**: per ADR-038, market list localization must work offline from
`entry.json` alone. Both entries previously lacked `i18n`, so the list
shortDesc would render empty.
  按 ADR-038 列表本地化需离线可用,此前两条目缺 i18n,列表简介为空。

## Changes / 变更

- `skills/karpathy-guidelines/entry.json`: `latestVersion: 1.0.0` +
zh-CN/en-US `i18n`
- `skills/last30days/entry.json`: `latestVersion: 3.11.1`(与上游一致)+
zh-CN/en-US `i18n`

## Testing / 测试

- Both files validated against `marketSkillEntrySchema` (Ajv, desirecore
repo) — VALID.

- [x] I have read and agree to the CLA
2026-07-11 20:29:40 +08:00
mashagua
2167fe2525 feat(skills): add karpathy-guidelines and last30days as pointer entries (#46)
## Summary

Add two community skills as **metadata-only pointer entries**, following
ADR-038 (market stores only `entry.json` + source pointer for
third-party content; no source vendored into the repo).

| id | upstream | stewardship | license | redistribution |
|----|----------|-------------|---------|----------------|
| `karpathy-guidelines` |
[multica-ai/andrej-karpathy-skills](https://github.com/multica-ai/andrej-karpathy-skills)
| community | MIT | allowed |
| `last30days` |
[mvanhorn/last30days-skill](https://github.com/mvanhorn/last30days-skill)
| community | MIT | allowed |

## Changes

- `skills/karpathy-guidelines/entry.json` — pointer to
`skills/karpathy-guidelines` on branch `main`
- `skills/last30days/entry.json` — pointer to `skills/last30days` on
branch `main`
- `manifest.json` — `totalSkills` 45 → 47, `lastUpdated` bumped

## ADR-038 compliance

- No upstream source tree vendored; only `entry.json` metadata +
`source` git pointer.
- Required fields present: `stewardship` / `license` / `redistribution`.
- Both upstreams are MIT and `redistribution: allowed`; content is
fetched from upstream at install time.

## Testing

- Validated both `entry.json` files are well-formed JSON.
- `source.path` usage matches existing precedent (e.g. `minimax-tts`,
`minimax-image-gen`).
2026-07-11 19:48:04 +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
Zxy-y
d6c4af4038 chore(update-agent): version 3.0.4 → 3.0.5 补发改名指引更新 (#44)
## 背景 / Context

上一个 PR(#43)修改了 update-agent 技能正文(改名改用 Edit 同步 agent.json +
persona.md),但**未升 version**(仍 3.0.4)。

技能同步的更新判定**纯按
semver**(`lib/agent-service/sync/builtin-skill.ts`:`compareSemver(local,
source)`,版本一致即跳过、不比内容),因此已安装 3.0.4 的存量用户会因'版本一致→跳过'而**收不到**上个 PR 的正文更新。

The previous PR (#43) changed the update-agent skill body but did not
bump the version. Skill sync decides updates purely by semver (same
version → skip, content ignored), so existing 3.0.4 installs would never
receive the content update. Bumping to 3.0.5 forces propagation.

## 变更 / Change

- `skills/update-agent/SKILL.md`: `version: 3.0.4 → 3.0.5`(仅此一行,不动正文,不影响
source_hash / i18n 校验)

Co-authored-by: 张馨元 <zhangxy@iynss.com>
2026-07-08 14:49:11 +08:00
Zxy-y
0759ccb938 docs(update-agent): 改名改用 Edit 同步 agent.json 与 persona.md 标题 (#43)
## 变更 / Changes

update-agent 技能:纯改名场景改为用 **Edit 工具同时更新两个文件**——`agent.json` 的 `name` 字段 与
`persona.md` 的首行标题(`# 名称`),避免两者脱节;并强调不实际编辑文件不得声称已改名。

The update-agent skill now instructs: for a pure display-name change,
use the **Edit tool to update both files** — the `name` field in
`agent.json` and the first-line title heading (`# Name`) in `persona.md`
— so the display name and persona title never fall out of sync. Also
emphasizes never claiming a rename is done without actually editing the
files.

## 背景 / Context

此前改名只改了 `agent.json` 的 name,`persona.md`
标题残留旧名(显示名与人格文档脱节);且模型有时只口头声称完成而不真正落盘。本改动通过技能引导修正这两点。

Previously renaming only touched `agent.json`'s name while
`persona.md`'s title kept the old name (desync), and the model would
sometimes claim completion without actually writing. This skill guidance
fixes both.

## 改动范围 / Scope

- `skills/update-agent/SKILL.md`(+3)
- `skills/update-agent/SKILL.zh-CN.md`(+3)
- 纯文档/技能引导改动,version 保持 3.0.4 不变

Co-authored-by: 张馨元 <zhangxy@iynss.com>
2026-07-07 22:30:26 +08:00
1b002e5778 强化市场校验与索引元数据
合并市场索引、分类、i18n 校验、skill-creator 工具和已修改 skill 版本号更新。
2026-07-07 21:14:31 +08:00
0f3affc9e9 docs(discover-agent): 使用场景补充"更换智能体"情形 (#40)
给 discover-agent 的中文源补充一条使用场景。

同时这是 #39(pull_request_target 自动翻译流水线)的端到端验证 PR:中文源变更 → en-US 过期 → CI
应自动翻译并把 commit 推回本分支、发评论。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: desirecore-bot <bot@desirecore.net>
2026-07-07 20:04:55 +08:00
44ea27c3d0 fix(ci): 翻译回推 commit 移除 [skip ci] (#41)
PR #40 实测发现:bot 回推的翻译 commit 带 `[skip ci]`,把新 SHA 上所有 workflow
都压掉了,必需检查(validate/translate/wait-for-copilot-review)永远不报告,PR 反而无法合并。

- 防循环不依赖 `[skip ci]`——translate job 的 bot actor 判断已经保证(bot 触发时 job
skipped,而 skipped 满足必需检查)
- validate / copilot 本来就应该在翻译产物上重跑
- 已加注释防止回归

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 19:55:20 +08:00
6fa7af4c62 feat(i18n): OpenAI 兼容翻译后端 + fork PR 自动翻译回推 (#39)
## 目标

1. 翻译后端支持**任意 OpenAI 兼容接口**(自定义 URL +
Token):OpenAI、DeepSeek、Qwen、one-api/new-api 网关、vLLM 等
2. **fork PR 也能自动翻译并回推**——不再要求外部贡献者自己跑翻译脚本

## translate.py

- 新增 `TRANSLATE_BACKEND=openai` 后端:`TRANSLATE_ENDPOINT`(或
`OPENAI_BASE_URL`,以 /v1 结尾)+ `TRANSLATE_API_KEY`(或 `OPENAI_API_KEY`)
- gpt-5/o 系模型名自动用 `max_completion_tokens` 且不传 temperature;其余模型走经典
`max_tokens` + `temperature=0.1` 契约
- 已用本地 mock 服务器端到端验证两种契约、env 与 CLI 两种配置方式、产物 frontmatter(`translated_by:
ai:openai:<model>`)

## workflow 安全模型(评审重点)

触发器从 `pull_request` 改为 `pull_request_target`(fork PR 获得 secrets 与写 token
的唯一途径),配套的防护:

- **绝不执行 PR 代码**:workflow 与 `scripts/i18n/*` 一律来自 base 分支;PR 内容通过
`refs/pull/N/merge` 以**纯数据**方式覆盖(仅
`skills/`、`manifest.json`、`categories.json`)
- 覆盖后 `find skills -type l -delete` 丢弃符号链接(防经软链读 runner 文件系统并借"翻译"外泄)
- PR 派生值(head repo/ref)一律经 `env:` 注入,不在 `run:` 内 `${{ }}` 插值(防命令注入)
- 回推:在 PR head 的独立 worktree 上**只应用翻译产物文件**后用 bot token 推送;head SHA
变更则放弃(让新 run 接手);bot actor 触发的 run 直接跳过(防循环)

## 使用自定义端点需要配置

| 类型 | 名称 | 值 |
|---|---|---|
| secret | `TRANSLATE_API_KEY` | 你的 token |
| secret 或 variable | `TRANSLATE_ENDPOINT` | 如
`https://your-gateway.example.com/v1` |
| variable | `TRANSLATE_BACKEND` | `openai` |
| variable | `TRANSLATE_MODEL` | 端点上的模型 id |

注:推送到 fork 分支要求 `DESIRECORE_BOT_TOKEN` 是具有本仓库 push 权限的**用户
PAT**(GITHUB_TOKEN 与 App token 推不了 fork),且 PR 勾选 Allow edits by
maintainers;推不了时会以清晰错误失败并打标签。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 18:54:57 +08:00
mashagua
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>
2026-07-07 17:02:16 +08:00
8b02ffdde1 fix(ci): i18n-translate 支持 fork PR (#38)
## 问题

PR #36(来自 fork)触发 `i18n Auto-Translate` workflow 失败,两处报错:

1. **checkout 失败**:`ref: github.event.pull_request.head.ref` 未指定
`repository:`,fork 的 head 分支在主仓库不存在 → `A branch or tag with the name
'add-mattpocock-skills' could not be found`
2. **失败打标签 403**:fork PR 的 `GITHUB_TOKEN` 被强制只读、拿不到
`DESIRECORE_BOT_TOKEN` secret → `Resource not accessible by integration`

## 修复

- **checkout**:同仓库 PR 仍检出 head 分支(保留自动回推翻译);fork PR 改用 `github.ref`(即
`refs/pull/N/merge`,base 仓库中一定存在)
- **新增 "Fail fork PR with stale translations" 步骤**:fork PR 缺翻译时在消耗模型
token 之前直接失败,并提示贡献者本地运行 `uv run scripts/i18n/translate.py` 补交翻译
- **Commit & push / Label on failure** 两个写操作步骤加同仓库判断,fork PR 跳过

同仓库 PR 与 workflow_dispatch 行为完全不变。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 16:41:13 +08:00
cf25819f07 feat(skills): 新增 configuring-compute 技能 (#37)
## 中文

新增官方内置技能 `configuring-compute`:让平台内智能体能帮用户配置算力供应商与 API Key。

- 完整流程:查看配置 → 创建/更新 provider → 写入密钥(只写端点)→ verify-key 验证 → 启用/同步模型 →
POST /api/compute/reload 刷新
- 安全模型写入技能文本:密钥只写不读,禁止读取 secrets.json 或尝试读回已有 key
- 加入 builtin-skills.json 清单;manifest version 1.2.6 → 1.2.7

依赖 desirecore 主仓库的配套 PR(掩码脱敏 + reload 端点)。

## English

Add the official builtin skill `configuring-compute`: enables
in-platform agents to configure compute providers and API keys for the
user.

- Full flow: inspect config → create/update provider → write key
(write-only endpoint) → verify-key → enable/sync models → POST
/api/compute/reload
- Security model embedded in the skill text: keys are write-only;
reading secrets.json or existing keys is forbidden
- Added to builtin-skills.json manifest; manifest version 1.2.6 → 1.2.7

Depends on the companion PR in the desirecore main repo (key masking +
reload endpoint).
2026-07-07 16:21:04 +08:00
xyx
0a4d3bb840 feat: 上架 minimax-video-gen(移除 listed: false) (#35)
## Summary

- 移除 `minimax-video-gen` 的 `market.listed: false`,使其在市场页面可见,用户可手动安装

Remove `market.listed: false` from `minimax-video-gen` so it appears in
the market UI for manual installation.

## Changes

- **skills/minimax-video-gen/SKILL.md**: remove `listed: false` (1 line
deletion)
2026-07-02 19:03:14 +08:00
520be85977 feat: 补全 registering-services / using-services 缺失的图标 (#34)
为两个缺 market.icon 的技能补 24×24 线性 SVG(icon: >- 折叠标量,置于 category 前,对齐仓库约定);version 1.0.0→1.0.1。其余无图标条目为 pointer entry.json,需先扩 entry schema,另行处理。
2026-06-29 17:59:16 +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
xyx
3301913a9f feat(mail-operations): 补充邮箱服务 UI 入口说明 v1.0.4 (#30)
## Summary / 摘要

- Add "How to Access the Email Service" section to `SKILL.md` and
`SKILL.zh-CN.md`, guiding users to navigate via Resource Explorer →
Emails card
- 在中英文技能文件中新增「如何进入邮箱服务」章节,说明通过资源管理器→邮箱卡片进入邮箱管理界面

## Changes / 变更

- `skills/mail-operations/SKILL.md`: add "How to Access the Email
Service" section, version 1.0.3 → 1.0.4
- `skills/mail-operations/SKILL.zh-CN.md`: add「如何进入邮箱服务」章节
- `manifest.json`: version 1.2.5 → 1.2.6
2026-06-20 11:30:56 +08:00
xyx
e12df50c30 fix(dashscope-image-gen): 默认模型改为 gpt-image-2 v1.4.0 (#29)
## Summary

上游 proxy (desirecore-cloud at api.yizhioa.cn) 仅支持 `gpt-image-2`
图片生成模型,`wan2.7-image` 返回 `model_price_error`。

The upstream proxy (desirecore-cloud) only supports `gpt-image-2` for
image generation. `wan2.7-image` returns `model_price_error`.

### Changes

- Default model changed from `wan2.7-image` → `gpt-image-2`
- `wan2.7-image` / `wan2.7-image-pro` kept as optional (requires
user-configured DashScope provider)
- Added auto-fallback strategy: `model_price_error` → retry with
`gpt-image-2`
- Size values adapted for gpt-image-2: `1536x1024` / `1024x1536`
- Skill display name updated: 阿里云 文生图 → AI 文生图
- Market version: 1.2.4 → 1.2.5, skill version: 1.3.0 → 1.4.0

### Test

- `gpt-image-2` via `/images/generations` endpoint: verified working
(b64_json response, 1.5MB PNG)
- Upload to media-store: verified working
- `dc-media://` rendering: verified working
2026-06-15 01:14:53 +08:00
53832aa19d Bump version from 1.2.3 to 1.2.4 (#28) 2026-06-14 22:22:50 +08:00
xyx
8d09ff619b feat(image-to-image): 新增图生图全局技能 v1.0.0 (#27)
## 概要 / Summary

新增图生图(image-to-image)全局默认技能,支持用户基于已有图片进行 AI 编辑和变换。

Add a new global builtin skill for image-to-image editing, allowing
users to edit and transform existing images with AI.

## 变更内容 / Changes

- 新增 `skills/image-to-image/SKILL.md`(英文)
- 新增 `skills/image-to-image/SKILL.zh-CN.md`(中文)
- `builtin-skills.json` 注册为全局默认技能

**技术实现**:
- 模型:`gpt-image-2`(通过 DesireCore Cloud 提供)
- 端点:`/images/generations` + `image` 字段(与文生图共用端点,image 字段触发图生图模式)
- 零代码改动:纯技能文件实现,media-proxy 已支持透传 image 字段

**与文生图(dashscope-image-gen)的区分**:
- 用户有参考图 → 图生图(本技能)
- 用户无参考图 → 文生图(dashscope-image-gen)

## 测试 / Test Plan

- [x] dev 模式端到端测试:用户发送图片 + 编辑指令 → 成功生成编辑后的图片
- [x] API 验证:`gpt-image-2` + `/images/generations` + `image` base64 字段 →
返回 b64_json 成功
2026-06-12 16:44:56 +08:00
xyx
bf20f3821d fix(dashscope-image-gen): 切换到 /images/generations 端点 v1.3.0 (#26)
## 概要 / Summary

修复 dashscope-image-gen 技能的核心端点问题,从 `/chat/completions`(对 wan 图片模型返回 HTTP
400)切换到 `/images/generations`,同时新增多项防护措施防止模型偏离执行路径。

Fix the core endpoint issue: switch from `/chat/completions` (returns
HTTP 400 for wan image models) to `/images/generations`, with enhanced
guardrails to prevent model deviation.

## 变更内容 / Changes

**核心修复**
- 端点:`/chat/completions` → `/images/generations`
- 请求体:`messages` 数组 → `prompt` 字符串 + `size` + `n`
- 响应处理:`choices[].message.content` 图片 URL → `b64_json` base64 解码

**新增防护**
- `curl -o` 保存响应到临时文件,避免 ~2MB base64 灌入终端浪费 token
- 新增"供应商与默认算力"章节,明确 DesireCore Cloud 始终可用,无需探索
- 强化 7 条强制规则(原 5 条),禁止探索未列出的模型/端点/配置文件
- 端口发现优先从系统提示词获取,兜底 `${DESIRECORE_HOME:-$HOME/.desirecore}`
- 错误处理改为表格格式 + "禁止自行重试其他方案"

## 测试 / Test Plan

- [x] dev 模式端到端测试:用户输入"生成一张小猪" → 4 次工具调用,0 失败,图片成功生成并展示
- [x] 对比历史:第一次测试 472 条/7+ 失败 → 第二次 141 条/5 失败 → **本次 108 条/0 失败**
2026-06-10 17:23:52 +08:00
xyx
9fca174fff fix(minimax-video-gen): 切换到 NewAPI 网关,升级 v1.2.3 → v1.3.0 (#25)
## 概述 / Summary

将默认全局技能 **minimax-video-gen(MiniMax 文生视频)** 从 MiniMax 原生 API 切换到 NewAPI
网关,已在本地 dev 环境验证通过。版本 `1.2.3 → 1.3.0`。

Switch the built-in skill **minimax-video-gen** from MiniMax's native
API to the NewAPI gateway. Verified locally in dev. Version bumped
`1.2.3 → 1.3.0`.

## 改动 / Changes

- `provider: "minimax"` → `providerId: "desirecore-cloud"`(原生主机不支持
NewAPI 路径,必须用 providerId 指定网关 / native host doesn't support the NewAPI
path)
- endpoint `/video_generation` → `/video/generations`(带 s / with
trailing "s")
- 轮询/状态值 `Success/Fail/Processing` →
`completed/failed/queued/in_progress`
- 移除 `file_id` 检索步骤,下载链接改为直接从 `data.metadata.url` 提取 / drop the
`file_id` retrieval step, read the URL from `data.metadata.url`
- 字段名 `resolution` → `size`;默认参数 `size=768P, duration=6`
- 下载用 `curl -sL` 直连,不再经 media-proxy 代理 / download directly, no
media-proxy

中英双语文档(SKILL.md / SKILL.zh-CN.md)已同步修改。

## 影响 / Impact

合并后,已安装且未偏离该技能的线上客户端将通过 `marketSync` 的 git fetch + 10 分钟定时
`syncMarketSkillsOnly` 自动更新到 1.3.0(`compareSemver(1.2.3, 1.3.0) === -1`
触发更新);已手动修改过该技能的用户会被跳过以保护本地改动。

Once merged, installed clients that haven't locally diverged will
auto-update to 1.3.0 via marketSync git fetch + the 10-min
`syncMarketSkillsOnly` timer. Users who modified the skill locally are
skipped.
2026-06-09 18:40:10 +08:00
3330aba04b docs(dev-environment-setup): /environment/refresh 补充重新加载登录环境变量语义 (#24)
## 变更说明 / Description

配合客户端 PR
[desirecore/desirecore#808](https://github.com/desirecore/desirecore/pull/808):`POST
/api/runtime/environment/refresh` 端点现在除清检测缓存外,还会**重新抓取登录 shell / Windows
注册表环境并精确同步到 `process.env`**。本 PR 更新 `dev-environment-setup` skill 文档,让
AI 在「用户改了 `.zshrc` / `setx` 但工具看不到」时能主动调用该端点(无需用户重启 App)。

Companion to client PR desirecore#808: the `/environment/refresh`
endpoint now also reloads login-shell / Windows-registry env and
precise-syncs into `process.env`. This PR updates the
`dev-environment-setup` skill docs so the AI proactively calls it when a
user reports a freshly-changed env var that tools can't see.

## 改动 / Changes

- `references/desirecore-runtime.md`:第三节端点表更新 + 第七节扩展(重新加载语义 + `envDiff`
返回结构 + 「何时主动调用」触发场景 + 局限)
- `SKILL.md` / `SKILL.zh-CN.md`:L1 路由表新增「用户改了 `.zshrc` / 环境变量 / 代理 /
`setx` 但工具看不到 → 刷新端点」+ 重要约束第 3 条扩展(中英双语同步)
- `version` 2.0.3 → 2.0.4;并修正 #16 起遗留的 `source_hash` stale 值(`7e4baaf` →
`748e754b`,已用 `scripts/i18n` 同款算法验证)

## 说明 / Notes

- 该 skill 为 `translated_by: human`,中英两份已手动同步
- 文档描述的端点能力随客户端 PR desirecore#808 发布;旧客户端调用该端点仍只清检测缓存(不报错),文档短暂超前可接受
2026-06-09 11:27:13 +08:00
xyx
92d467dd50 fix(dashscope-image-gen): 移除硬编码 provider,改用 serviceType 自动发现 (#23)
## Summary

- 移除 `media-proxy` curl 命令中硬编码的 `"provider": "dashscope"`,改为仅传
`"serviceType": "image_gen"` 让系统自动匹配已启用的供应商
- 修改 frontmatter `provider: dashscope` → `provider: auto`
- 更新前置条件和错误处理描述,不再要求配置 DashScope 专用 Provider
- Bump version 1.1.1 → 1.2.0

## Background

之前技能硬编码了 `"provider": "dashscope"`,导致使用中转 key(如 DesireCore Cloud /
鹏耀科技)时 `findProvider` 按 slug 匹配不到已启用的供应商,文生图功能无法使用。

改为 `serviceType: "image_gen"` 自动发现后,`findProvider` 会在所有已启用的 provider
中查找支持 `image_gen` 服务类型的供应商,兼容直连和中转场景。

## Changes

| File | Change |
|------|--------|
| `SKILL.md` | 去掉 curl 中 `"provider": "dashscope"`;更新 prerequisites /
error handling |
| `SKILL.zh-CN.md` | 同步中文版修改 |

## Test plan

- [ ] 使用 DesireCore Cloud(鹏耀科技)默认算力,发送「画一幅小狗」验证技能触发和图片生成
- [ ] 使用独立 DashScope API Key 配置,验证兼容性
2026-06-05 18:03:50 +08:00
Zxy-y
85e1f48f6b feat(docx): 跨平台启动器替换 bash 包装,复用预装依赖免每次安装 (#21)
## 概述 / Summary

把 docx 技能对"客户端预装运行时依赖"的复用方式从 **bash 包装脚本**改为**跨平台 runtime 启动器**,实现
Win/macOS/Linux 一致、不依赖 Git Bash,并修复若干 POSIX 硬编码导致的 Windows 崩溃点。

Switch the docx skill's reuse of client-preinstalled runtime deps from a
**bash wrapper** to **cross-platform runtime launchers**, so it behaves
identically on Win/macOS/Linux without Git Bash, and fix several
POSIX-hardcoded crashes on Windows.

## 改动 / Changes

- **新增 / Add** `scripts/preload-deps.cjs`(Node 预加载,注入 `NODE_PATH`)与
`scripts/with-deps.py`(Python 启动器,按需切换到内置含 lxml 的 Python);**删除** bash 版
`with-deps.sh`。
- 生成走 `node -r preload-deps.cjs`,office 脚本走 `python with-deps.py` ——
离线复用预装的 docx-js / defusedxml / lxml,免每次 `npm`/`pip install`,且**不依赖
bash**。
- `comment.py` 补 defusedxml sys.path shim;`validate.py` 修临时目录泄漏(atexit
清理)。
- `accept_changes.py` 去除 `/tmp` 硬编码(`tempfile.gettempdir` +
`Path.as_uri`);`soffice.py` 仅 Linux 启用 AF_UNIX shim,避免 Windows 崩溃。
- `SKILL.md` / `SKILL.zh-CN.md` 同步命令形式、加 ESM
警告与外部工具(pandoc/LibreOffice/poppler)跨平台安装指引,`source_hash` 重算。

## 测试 / Testing

- 真实 dev 根目录端到端:生成 docx(免安装)+ 完整 XSD 校验(含 lxml)+ unpack/pack 往返均通过。
- 仓库 `validate-i18n.py` 校验通过;全 py 脚本 `py_compile` + `preload-deps.cjs`
`node --check` 通过。

---

- [x] 我已阅读并同意 CLA / I have read and agree to the CLA

Co-authored-by: 张馨元 <zhangxy@iynss.com>
Co-authored-by: Yige <a@wyr.me>
2026-06-04 11:14:36 +08:00
e9e75c0f1d feat: add guizang-ppt market skill (vendored from op7418, AGPL-3.0) (#20)
## 概述 / Summary

新增市场技能 **`guizang-ppt`**(归藏网页 PPT),vendored 自上游开源项目
[op7418/guizang-ppt-skill](https://github.com/op7418/guizang-ppt-skill)。

Add a new **market skill** `guizang-ppt` — generates single-file HTML
horizontal-swipe slide decks (web PPT) in two visual systems (editorial
"magazine × e-ink" / "Swiss International"). Vendored from the upstream
open-source project.

## 变更内容 / Changes

- `skills/guizang-ppt/`:SKILL.md(DesireCore frontmatter 覆盖层 +
上游正文)、`references/`(10)、`assets/`(2 模板 + motion.min.js + 9 张
webp)、`scripts/validate-swiss-deck.mjs`、`LICENSE`(AGPL-3.0)、`NOTICE.md`(署名与合规)
- `skills/guizang-ppt/_desirecore/`:DesireCore 维护态(不随上游覆盖)
- `frontmatter.yaml`:市场 frontmatter 覆盖层(i18n: zh-CN 源 + en-US 显示串,body
暂回退中文,留给 CI 翻译)
  - `upstream.json`:上游溯源(commit `014c572`、AGPL-3.0、作者 歸藏/op7418)
- `scripts/vendor/guizang-ppt.mjs`:可复用的 vendor 更新脚本(`--src <本地路径>` 或
`--ref <tag>`)
- `manifest.json`:`version` → `1.2.3`,`stats.totalSkills` → 25

## 定位 / Positioning

- **仅市场可选安装**:未加入 `builtin-skills.json`,不随客户端开机自动安装;用户在市场按需安装。
- 分类 `creative`;与已有 `pptx`(生成 .pptx 文件)区分:本技能生成 **HTML deck**。

## 许可与署名 / License & Attribution

上游为 **AGPL-3.0**。本技能保留原 `LICENSE` 与作者署名(`NOTICE.md` + `metadata.author`
+ `market.maintainer`),作为聚合内容分发。

## 校验 / Validation

- `python3 scripts/i18n/validate-i18n.py skills/guizang-ppt` → `OK: no
i18n issues found.`

## 手动更新流程 / Manual update

上游发版时:`node scripts/vendor/guizang-ppt.mjs --ref <tag>` → 核对 diff → 必要时
bump `_desirecore/frontmatter.yaml#version` 与 `manifest.json` → 提交。

---
🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-06-04 11:04:05 +08:00
xyx
5767c8f867 fix: 为 #16 路径替换涉及的技能补 per-skill version (#22)
## 背景 / Background

#16 (4f7037a) 将 16 个 SKILL.md 的 `~/.desirecore` 路径批量替换为
`${DESIRECORE_ROOT}`,但只升了 `manifest.json`,**未升任何 per-skill version**。

客户端按 SKILL.md frontmatter 的 per-skill `version` 做 semver 同步:version
不变即判定「无更新」而永久跳过,导致已升级用户的全局技能正文停留在替换前的旧内容(与线上不同步)。

#16 (4f7037a) bulk-replaced `~/.desirecore` with `${DESIRECORE_ROOT}` in
16 SKILL.md files but only bumped `manifest.json`, leaving every
per-skill `version` untouched. Clients sync by per-skill semver, so an
unchanged version is treated as "no update" and skipped forever —
upgraded users' global skills stay frozen on pre-replacement content.

## 改动 / Changes

- 对 #16 触及且至今仍未升号的 **14 个在册技能** 各 patch +1
- `manifest.json` 1.2.2 → 1.2.3(沿用 #16「内容改动同步升 manifest」的约定)
- 退役技能 `minimax-image-gen` / `minimax-tts`(不在 builtin-skills.json,不下发)跳过
- diff 为纯 version 行,未触动正文

Bumps the 14 in-manifest skills changed by #16 that were never
version-bumped; manifest 1.2.2 → 1.2.3; retired skills skipped.
Version-line-only diff.
2026-06-03 17:46:13 +08:00