不是翻译 —— 多数文档描述的行为已经不存在了。 先修一个更基本的问题:我们不拥有 u-claw.org 域名,那是上游的。所以之前写在 README、诊断包提示、联系方式里的 help@u-claw.org 全都会把用户的问题发给 上游 —— 一个没有理由回复的人。改为指向我们自己的 issue tracker,并加断言 禁止再出现指向该域名的支持入口。 重写(内容过时,不是语言问题): - install/README.md —— 还写着 10 个中国技能、DeepSeek 优先、国内镜像。 现在按实际流程写:技能读 manifest、模型菜单 Gemini 优先、bundle 有 SHA256 校验。并如实写明 curl|bash 在受管企业电脑上会被 EDR 拦。 - CLAUDE.md 的模型配置整节 —— 还在描述虾盘云首选卡片和 12 个 provider, 那个界面已经换成单框 Key 输入了。 - SECURITY.md —— 安全报告原本指向上游维护者个人邮箱。fork 之后那条路由 是错的:漏洞会发给写不了这份代码、也修不了的人。 - CONTRIBUTING.md —— 补上 fork 关系、pre-push 钩子怎么装、以及 `node --test tests/` 为什么不能用。 翻译并保留: - bootable/README.md、TROUBLESHOOTING.md —— 面向用户,顺带把 「国内镜像」「小米/华为 BIOS 按键」等换成目标市场的实际情况 HANDOFF.md 重写为一份事故复盘:原文一半是过时的一次性交接笔记(引用的 website/guide.html 已不在本仓库),另一半是 persistence.dat 未格式化导致 启动失败的排查记录 —— 后者有长期价值,尤其是「读 offset 1080 的两字节 验证 ext4」这个判断方法,已同时写进 bootable/README.md。 bootable/IMPROVEMENTS_SUMMARY.md 保留中文,加了说明:它是上游 fork 前的 历史改进记录,没人引用,描述的是已完成的工作而非当前行为。翻译它反而会 让人误以为是现行文档。 新增 skills/en/uclaw-help —— 把「怎么用、东西在哪、出问题怎么办」做成 内置知识,每个角色都装。方案 C10.8:能问的产品才是不需要学的产品。
Skills
Single source of truth for skill content and distribution.
Why this directory exists
Skill content used to be inlined as heredocs inside install/install.sh and as
here-strings inside install/install.ps1, with a third copy on disk under
portable/skills-cn/. The three drifted:
| Source | Skills | Typical length |
|---|---|---|
portable/skills-cn/ |
17 | full |
install/install.sh |
10 | ~40% of full |
install/install.ps1 |
10 | ~17% of full |
Seven skills (excel-helper, word-writer, ppt-designer, pdf-toolkit,
image-compress, qrcode-maker, web-to-markdown) existed only on the USB
build — anyone who used the one-line installer never got them.
tests/windows-launchers.test.mjs also requires customer-facing .bat launchers
to be pure ASCII, because Chinese Windows cmd.exe reads non-ASCII bytes as GBK
and mis-parses the script. That constraint is what pushed the .ps1 copies into
being truncated in the first place.
Separating content from distribution removes all of this: the installers carry no skill text at all.
Layout
skills/
manifest.json # the only thing installers read
en/
<skill-id>/SKILL.md
manifest.json
{
"schemaVersion": 1,
"personas": [ { "id": "developer", "tier": "expert" }, ... ],
"skills": [
{
"id": "excel-helper",
"status": "shipping", // "shipping" | "planned"
"locales": ["en"], // which locales have a SKILL.md on disk
"categories": ["office"],
"personas": ["admin", "finance"],
"emoji": "📊"
}
]
}
status: "planned" entries have no content yet. They are listed so the roadmap
lives next to the code — installers skip them. replaces records which retired
skill an entry supersedes.
Installing
lib/install-skills.mjs is the only installer. It reads the manifest, filters by
locale and persona, and writes to the target directory.
node lib/install-skills.mjs --target <dir> [--locale en] [--persona general] [--dry-run] [--list]
It resolves content in this order:
skills/next to the script (repo checkout and USB builds)--source <dir>if given- Download from GitHub at the pinned ref (one-line remote installers, which have no repo on disk)
Adding a skill
- Create
skills/en/<id>/SKILL.mdwith the standard front matter - Add an entry to
manifest.jsonwithstatus: "shipping" - Run
node --test tests/—tests/skills-manifest.test.mjschecks that every shipping skill has content, that front matter matches the manifest, and that the shell and PowerShell installers agree on the resulting skill list
Do not add skill text to any .sh, .ps1 or .bat file. The parity test fails
if the two installers disagree, and the ASCII test fails if non-ASCII ends up in a
.bat.