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>
This commit is contained in:
2026-05-05 00:26:33 +08:00
committed by GitHub
parent 1c107a9344
commit 1f7c8b9673
59 changed files with 10533 additions and 2014 deletions

View File

@@ -1,5 +1,5 @@
---
name: 演示文稿处理
name: pptx
description: >-
Use this skill any time a .pptx file is involved in any way — as input,
output, or both. This includes: creating slide decks, pitch decks, or
@@ -26,6 +26,29 @@ tags:
metadata:
author: anthropic
updated_at: '2026-05-04'
i18n:
default_locale: en-US
source_locale: zh-CN
locales:
- zh-CN
- en-US
zh-CN:
name: 演示文稿处理
short_desc: 创建、编辑和处理 PowerPoint 演示文稿(.pptx
description: >-
Use this skill any time a .pptx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions "deck," "slides," "presentation," or references a .pptx filename, regardless of what they plan to do with the content afterward. If a .pptx file needs to be opened, created, or touched, use this skill. Use when 用户提到 PPT、演示文稿、幻灯片、演讲稿、汇报材料、 pptx、创建演示、编辑幻灯片。
body: ./SKILL.zh-CN.md
source_hash: sha256:761da55f1e450adc
translated_by: human
en-US:
name: Presentation Processing
short_desc: Create, edit, and process PowerPoint presentations (.pptx)
description: >-
Use this skill any time a .pptx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions "deck," "slides," "presentation," or references a .pptx filename, regardless of what they plan to do with the content afterward. If a .pptx file needs to be opened, created, or touched, use this skill. Use when the user mentions PPT, presentation, slides, speaker notes, briefing materials, pptx, creating presentations, or editing slides.
body: ./SKILL.md
source_hash: sha256:761da55f1e450adc
translated_by: ai:claude-opus-4-7
translated_at: '2026-05-03'
market:
icon: >-
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0
@@ -40,7 +63,6 @@ market:
stroke-width="1.2" stroke-linecap="round"/><circle cx="17" cy="10" r="3"
fill="#FF9500" fill-opacity="0.15"/><path d="M15.8 8.5v3l2.6-1.5z"
fill="#FF9500" fill-opacity="0.85"/></svg>
short_desc: 创建、编辑和处理 PowerPoint 演示文稿(.pptx
category: productivity
maintainer:
name: DesireCore Official
@@ -48,67 +70,66 @@ market:
channel: latest
---
# pptx 技能
# pptx skill
## L0:一句话摘要
## L0: One-Sentence Summary
创建、编辑和处理 PowerPoint 演示文稿(.pptx支持模板编辑和从零创建。
Create, edit, and process PowerPoint presentations (.pptx), with support for template editing and creation from scratch.
## L1:概述与使用场景
## L1: Overview and Use Cases
### 能力描述
### Capability Description
pptx 是一个**流程型技能(Procedural Skill**,提供 PowerPoint 演示文稿的完整处理能力。支持通过 pptxgenjsNode.js)从零创建演示文稿,通过解包 XML 编辑现有模板,以及内容提取和视觉质检。
pptx is a **Procedural Skill** providing full PowerPoint presentation processing capabilities. It supports creating presentations from scratch via pptxgenjs (Node.js), editing existing templates by unpacking XML, plus content extraction and visual quality checks.
### 使用场景
### Use Cases
- 用户需要创建新的演示文稿汇报材料、Pitch Deck 等)
- 用户需要编辑或修改现有 .pptx 文件
- 用户需要从 .pptx 文件中提取文本内容
- 用户需要将演示文稿转换为 PDF 或图片
- The user needs to create a new presentation (briefing materials, pitch deck, etc.)
- The user needs to edit or modify an existing .pptx file
- The user needs to extract text content from a .pptx file
- The user needs to convert a presentation to PDF or images
## L2:详细规范
## L2: Detailed Specification
## Prerequisites
### Python 3(必需 — 读取和编辑现有 PPTX 时需要)
### Python 3 (required — needed when reading and editing existing PPTX)
在执行任何 Python 脚本之前,先检测 Python 是否可用:
Before running any Python script, check that Python is available:
```bash
python3 --version 2>/dev/null || python --version 2>/dev/null
```
如果命令失败Python 不可用),**必须停止并告知用户安装 Python 3**
If the command fails (Python is not available), **you must stop and tell the user to install Python 3**:
- **macOS**: `brew install python3` 或从 https://www.python.org/downloads/ 下载
- **Windows**: `winget install Python.Python.3` 或从 python.org 下载(安装时勾选 "Add Python to PATH"
- **macOS**: `brew install python3`, or download from https://www.python.org/downloads/
- **Windows**: `winget install Python.Python.3`, or download from python.org (check "Add Python to PATH" during installation)
- **Linux (Debian/Ubuntu)**: `sudo apt install python3 python3-pip`
- **Linux (Fedora/RHEL)**: `sudo dnf install python3 python3-pip`
注意:从零创建 PPTX 使用 pptxgenjsNode.js),不需要 Python
Note: Creating PPTX from scratch uses pptxgenjs (Node.js), and does not require Python.
如需更详细的环境配置帮助Python 相关问题加载 `python-runtime` 技能;
Node.jspptxgenjs)相关问题加载 `nodejs-runtime` 技能;其他(系统工具 /
容器 / WSL加载 `dev-environment-setup` 技能。
For more detailed environment setup help: load the `python-runtime` skill for Python issues;
load the `nodejs-runtime` skill for Node.js (pptxgenjs) issues; load the `dev-environment-setup` skill for everything else (system tools / containers / WSL).
### Python 包依赖
### Python Package Dependencies
本技能的 Python 操作依赖以下包(按需检测):
This skill's Python operations depend on the following packages (checked on demand):
- `markitdown[pptx]` — PPTX 内容读取
- `Pillow`缩略图生成
- `markitdown[pptx]` — PPTX content reading
- `Pillow`Thumbnail generation
检测方法:
Detection method:
```bash
python3 -c "import markitdown; import PIL" 2>/dev/null || echo "MISSING"
```
缺失时告知用户安装:`pip install "markitdown[pptx]" Pillow`
If missing, tell the user to install: `pip install "markitdown[pptx]" Pillow`
## Output Rule
When you create or modify a .pptx file, you **MUST** tell the user the absolute path of the output file in your response. Example: "文件已保存到:`/path/to/output.pptx`"
When you create or modify a .pptx file, you **MUST** tell the user the absolute path of the output file in your response. Example: "File saved to: `/path/to/output.pptx`"
## Quick Reference