xyx 0cb3758669 fix: 补全 dashscope-image-gen 和 xiaomi-tts 的 i18n CI 校验 (#4)
## 变更说明

修复 dashscope-image-gen 和 xiaomi-tts 的 i18n CI 校验、补全英文翻译,并连带修复其他 stale
skill 的 source_hash 漂移问题。

### dashscope-image-gen / xiaomi-tts(PR 主线)
- `name` 字段从中文改为目录名(CI rule-1 要求 lowercase ASCII + hyphens)。
- 补全 `metadata.i18n` 块:`locales`、`zh-CN` (含 body 指向
SKILL.zh-CN.md)、`en-US`(含 description / body=./SKILL.md)。
- 新增 `SKILL.zh-CN.md`(zh-CN body 文件)。
- **root SKILL.md 改写为英文 body**(与 SKILL.zh-CN.md 内容对应),由本 PR
手工翻译;`default_locale=en-US`、`source_locale=zh-CN`,与 docs/I18N.md
约定一致:root SKILL.md = default_locale body (en-US)、SKILL.zh-CN.md =
source_locale body (zh-CN)。
- 两 locale 锁为 `translated_by: human` + 正确 `source_hash`。
- 内容质量修复:流程标题 "严格按此两步执行" 改为 "严格按此三步执行";强制规则 2 措辞精确化(/tmp
仅作中转);xiaomi-tts 用户意图映射表中 `response_format` 改为 `audio.format`
与请求体参数表一致;zh-CN.description 改为纯中文。
- locale header 由 shell 转义残留 `<\!--` 修正为标准 `<!-- locale: zh-CN -->`。

### 连带:6 个 main 上已 stale 的 skill(避免 translate workflow 失败)
- `manage-skills` / `minimax-music-gen` / `minimax-video-gen` /
`skill-creator` / `web-access`:`en-US.source_hash` 重新计算为当前 zh-CN source
实际 hash;`translated_by` 由 `ai:claude-opus-4-7` 改为 `human`
以锁定现有翻译不被自动重译覆盖。
- `markdown`:补正 `en-US.source_hash`(之前是占位 `sha256:0000000000000000`)。
- 这些 skill 的 `en-US` 翻译内容保持不变,仅修正元数据。

### scripts/i18n/translate.py 容错增强
- 413 Payload Too Large 时不再 retry(payload 不会变小,retry 浪费时间)。
- 主循环 catch RuntimeError,把单个 skill 的失败写入 `plan["errors"]` 后继续处理下一个
skill,避免一个大文件 fail 整个 workflow。
- `--check` 模式下 plans 含 errors 也 exit 1(之前仅看 needs_translation,broad
except 会把异常吃掉导致误报通过)。

## Test plan

- [x] `i18n-validate` 通过
- [x] `i18n-translate --check` 显示所有 skill `up-to-date` 或 `human-locked,
skipping`
- [x] CI 上 `validate` / `translate` / `wait-for-copilot-review` 全绿
- [ ] Copilot 评审 conversation 全部 resolve
- [ ] Squash merge

---------

Co-authored-by: yi-ge <a@wyr.me>
2026-05-13 12:57:25 +08:00

DesireCore Market

DesireCore 官方市场仓库,存放经过官方验证的 Agent 和 Skill 定义。

目录结构

.
├── manifest.json      # 仓库元数据
├── categories.json    # 分类配置
├── README.md          # 本文件
├── agents/            # Agent 定义目录
│   ├── task-master/
│   │   └── agent.json
│   ├── code-reviewer/
│   │   └── agent.json
│   ├── business-analyst/
│   │   └── agent.json
│   ├── writing-coach/
│   │   └── agent.json
│   ├── translator/
│   │   └── agent.json
│   └── data-analyst/
│       └── agent.json
└── skills/            # Skill 定义目录
    ├── web-search/
    │   └── skill.json
    ├── file-manager/
    │   └── skill.json
    ├── calendar-sync/
    │   └── skill.json
    ├── doc-parser/
    │   └── skill.json
    └── email-client/
        └── skill.json

Agent 清单

ID 名称 分类 定位
task-master 任务管家 效率 智能任务规划与追踪专家
code-reviewer 代码审查官 开发 资深代码审查与质量把控
business-analyst 商业洞察师 商业 数据驱动的商业分析顾问
writing-coach 写作教练 创意 从构思到润色的写作伙伴
translator 译界通 沟通 跨文化沟通与专业翻译
data-analyst 数据洞察师 数据 数据科学与业务洞察专家

Skill 清单

ID 名称 分类 风险等级 功能概述
web-search 网络搜索 效率 智能搜索与信息聚合
file-manager 文件管家 开发 本地文件系统管理
calendar-sync 日历同步 商业 日历服务连接与调度
doc-parser 文档解析器 数据 50+ 格式文档解析
email-client 邮件助理 沟通 智能邮件管理与起草

数据格式

Agent 定义 (agents/{id}/agent.json)

{
  "id": "string",
  "name": "string",
  "avatar": { "t": "string", "bg": "string" },
  "shortDesc": "string",
  "fullDesc": "string",
  "category": "productivity|development|business|creative|communication|data",
  "tags": ["string"],
  "version": "semver",
  "latestVersion": "semver",
  "updatedAt": "YYYY-MM-DD",
  "maintainer": { "name": "string", "verified": boolean },
  "downloads": number,
  "rating": number,
  "ratingCount": number,
  "installStatus": "not_installed",
  "persona": {
    "role": "string",
    "traits": ["string"],
    "tools": ["string"]
  }
}

Skill 定义 (skills/{id}/skill.json)

{
  "id": "string",
  "name": "string",
  "icon": "lucide-icon-name",
  "shortDesc": "string",
  "fullDesc": "string",
  "category": "productivity|development|business|creative|communication|data",
  "tags": ["string"],
  "version": "semver",
  "latestVersion": "semver",
  "updatedAt": "YYYY-MM-DD",
  "maintainer": { "name": "string", "verified": boolean },
  "downloads": number,
  "rating": number,
  "ratingCount": number,
  "installStatus": "not_installed",
  "riskLevel": "low|medium|high",
  "requires": {
    "tools": ["string"],
    "connections": ["string"]
  },
  "compatibleAgents": ["string"]
}

设计令牌

头像背景色使用 DesireCore 设计系统:

  • Green (#34C759): 效率、商业类
  • Blue (#007AFF): 开发、沟通类
  • Purple (#AF52DE): 创意、数据类

多语言i18n

仓库支持多语言展示与多语言 SKILL.md 正文。当前覆盖 zh-CN(简体中文,源语言)与 en-US(英文,默认 fallbackmanifest.json#supportedLocales 声明。

  • 作者只交一种语言CI 自动翻译为其余语言。CI 默认走 GitHub Modelsopenai/gpt-5-mini,使用 repo 内置 GITHUB_TOKEN + permissions: models: read);可切到 Anthropic Claude设置 vars.TRANSLATE_BACKEND=anthropicsecrets.ANTHROPIC_API_KEY)。
  • 顶层 name 字段为 ASCII slug== 目录名),中文显示名安放在 metadata.i18n.zh-CN.name,符合 agentskills.io 规范
  • 正文文件SKILL.md(默认语言)+ SKILL.<locale>.md(其他语言)兄弟文件。

工具:

# 校验 i18n 完整性
uv run scripts/i18n/validate-i18n.py

# 检查哪些 locale 缺翻译(不调 API
uv run scripts/i18n/translate.py --check

# 本地翻译:默认 GitHub Models需要 fine-grained PAT 含 Models: Read
GITHUB_TOKEN=ghp_... uv run scripts/i18n/translate.py

# 切到 Anthropic Claude
TRANSLATE_BACKEND=anthropic ANTHROPIC_API_KEY=sk-ant-... \
  uv run scripts/i18n/translate.py

详细规范见 docs/I18N.md

许可证

MIT License - 详见 LICENSE

Description
DesireCore 官方市场仓库。
Readme 4.4 MiB
Languages
Python 73.1%
HTML 23.8%
Shell 1.7%
JavaScript 1.1%
PowerShell 0.3%