30 KiB
仓颉 Skill 官方网站产品需求文档(PRD)
- 文档版本:V1.0
- 日期:2026-07-21
- 产品阶段:MVP 已实现,待推送、合并并正式部署
- 适用对象:产品、设计、前端、维护者、社区贡献者
- 需求基线:codex/website-mvp 分支
1. 文档目的
本文件用于统一仓颉 Skill 官方网站的产品范围、页面功能、数据规则、投稿审核流程、安装体验和验收标准。
它同时承担三项作用:
- 作为当前 MVP 的功能说明,描述网站已经具备的能力。
- 作为开发验收依据,明确每项功能的输入、行为、状态和结果。
- 作为后续迭代边界,区分必须完成、可继续优化和暂不建设的功能。
本文优先描述产品行为。具体代码结构、组件名称和技术实现可以调整,但不得改变已经确认的用户流程。
2. 产品概述
2.1 产品名称
- 中文名:仓颉 Skill
- 英文名:Cangjie Skill
- 产品形态:知识蒸馏方法论官网 + 开放 Skill Registry
2.2 一句话定位
把书籍、课程、长视频、播客和其他高价值内容中的方法论,蒸馏成 Agent 可以直接安装、调用和复用的 Skills。
2.3 产品要解决的问题
网站需要解决四个核心问题:
- 用户不知道仓颉 Skill 是什么,也不知道它与普通摘要、笔记和提示词的区别。
- 用户知道某个 Skill 存在,但很难根据真实任务找到合适的 Skill Pack。
- Skill 的安装方式过于技术化,普通用户不应该自己判断不同 Agent 的目录和复制命令。
- 社区成员希望贡献 Skill,但项目不需要为首版建设账号、数据库和独立审核后台。
2.4 核心解决方案
- 用首页解释价值并完成用户分流。
- 用教程页教用户完成“选择—安装—调用—验证”。
- 用 Registry 展示并检索已经蒸馏好的 Skill Packs。
- 用统一安装提示词把安装工作交给 Agent。
- 用 GitHub Pull Request 作为公开、透明、可审计的投稿审核机制。
3. 产品目标与非目标
3.1 MVP 产品目标
| 编号 | 目标 | 成功结果 |
|---|---|---|
| G-01 | 帮助新用户理解仓颉 Skill | 用户能说清 Skill Pack、原子 Skill 和普通摘要的区别 |
| G-02 | 帮助用户找到合适的 Skill | 用户能通过搜索和筛选进入一个 Pack 详情页 |
| G-03 | 降低安装门槛 | 用户只需复制一条提示词给 Agent,不必手动判断目录 |
| G-04 | 完成一次真实调用 | 用户安装后能用自然语言让 Agent 调用对应方法 |
| G-05 | 建立公开投稿闭环 | 贡献者能生成标准 Registry 文件并进入 GitHub PR 审核 |
| G-06 | 保持低运维成本 | 网站不依赖账号系统、数据库和独立后端 |
3.2 MVP 明确不做
- 不做站内账号、登录和用户资料。
- 不做独立管理后台。
- 不做收藏、点赞、评分、评论和关注。
- 不做站内支付、交易和商业分成。
- 不做在线运行或沙箱执行陌生 Skill。
- 不做自动安装本地文件的桌面客户端。
- 不做每个原子 Skill 的独立详情页。
- 不做复杂推荐算法、个性化推荐和外部搜索服务。
- 不做多语言站点和深色模式。
- 不做复杂动效和高成本视觉系统。
- 不把原始受版权保护的书籍、课程、视频或音频作为 Registry 内容托管。
4. 用户角色
4.1 Skill 使用者
典型需求:
- 了解仓颉 Skill 的作用。
- 根据当前问题找到合适的 Pack。
- 把 Skill 安装到 Codex、Claude Code、Cursor、WorkBuddy 等 Agent。
- 确认安装是否成功并开始调用。
4.2 Skill 贡献者
典型需求:
- 提交一个已经公开到 GitHub 的 Skill 仓库。
- 提交一个尚未独立开源的本地 Skill 文件夹。
- 在提交前看到格式错误、敏感文件和目录问题。
- 保留自己的 GitHub 身份、仓库归属和维护权。
4.3 Registry 维护者
典型需求:
- 通过 Pull Request 查看所有变更。
- 自动验证 Registry Schema、目录和构建结果。
- 检查来源、版权、安全性、可执行性和重复度。
- 合并通过的投稿,并让网站自动更新。
4.4 Agent
Agent 是安装流程中的执行角色,需要:
- 读取统一安装规范。
- 识别自身运行环境和 Skills 目录。
- 检查来源仓库和文件结构。
- 安装全部必要文件。
- 处理冲突和风险。
- 汇报安装位置、安装结果和验证状态。
5. 核心用户旅程
5.1 使用 Skill 的主流程
flowchart LR
A[进入官网] --> B[理解仓颉 Skill]
B --> C[搜索或筛选 Skill Pack]
C --> D[查看详情与使用场景]
D --> E[复制 Agent 安装提示词]
E --> F[Agent 读取安装规范]
F --> G[Agent 检查并完成安装]
G --> H[用户描述真实任务]
H --> I[确认 Skill 已正确触发]
5.2 投稿审核主流程
flowchart LR
A[选择投稿方式] --> B[填写 Registry 信息]
B --> C[浏览器本地校验]
C --> D[生成 entry.yaml 或 ZIP]
D --> E[创建 GitHub Pull Request]
E --> F[自动 Schema 与构建检查]
F --> G[维护者人工审核]
G --> H[合并到 main]
H --> I[网站自动重新构建并上线]
6. 信息架构
6.1 核心路由
| 路由 | 页面 | 主要目标 |
|---|---|---|
| / | 首页 | 解释产品、展示规模、分流到使用、浏览和投稿 |
| /learn | 使用教程 | 教会用户选择、安装、调用和验证 Skill |
| /skills | Skills 目录 | 搜索、筛选并浏览 Skill Packs |
| /skills/[slug] | Skill Pack 详情 | 理解用途、复制安装提示词、查看来源 |
| /submit | 提交 Skill | 生成投稿文件并进入 GitHub PR 流程 |
| /install/cangjie-skill.md | Agent 安装规范 | 供 Agent 读取,不作为普通营销页面 |
6.2 全站导航
页头必须包含:
- 仓颉 Skill 品牌入口,点击返回首页。
- 使用教程。
- Skills。
- 提交 Skill。
- GitHub 外部链接。
当前路由需要通过 aria-current 标识。外部 GitHub 链接在新窗口打开。
页脚必须包含:
- 品牌与一句话说明。
- 使用教程。
- Skill 目录。
- 参与共建。
- GitHub。
7. 功能优先级定义
| 优先级 | 含义 |
|---|---|
| P0 | MVP 必须具备;缺失会导致核心流程无法完成 |
| P1 | 上线后应优先完善;不会阻断主流程 |
| P2 | 后续增长或体验增强 |
本文中标记“已实现”表示当前分支已有对应功能;“待发布”表示代码已存在,但尚未进入正式 GitHub Pages;“后续”表示尚未实现。
8. 首页需求
8.1 页面目标
首页只承担三项任务:
- 让第一次访问的人迅速理解产品价值。
- 让使用者进入 Skill 目录或教程。
- 让贡献者进入投稿流程。
8.2 Hero 模块
| 需求编号 | 优先级 | 状态 | 需求 |
|---|---|---|---|
| FR-HOME-001 | P0 | 已实现 | 展示主标题“把知识,变成 AI 可以执行的方法” |
| FR-HOME-002 | P0 | 已实现 | 展示仓颉 Skill 是知识蒸馏方法和开放 Skill 目录 |
| FR-HOME-003 | P0 | 已实现 | 提供“浏览 Skills”主按钮,进入 /skills |
| FR-HOME-004 | P0 | 已实现 | 提供“从零开始使用”按钮,进入 /learn |
8.3 Registry 数据概览
首页必须从 Registry 构建时动态计算并展示:
- Skill Pack 数。
- 原子 Skill 总数。
- Knowledge Domains 数。
- Contributor 数。
当前数据基线:
- 22 个 Skill Packs。
- 300 个原子 Skills。
- 23 个知识领域。
- 2 个来源贡献者。
禁止在页面组件中手工维护这些数字。新增或删除 Registry 条目后,统计必须自动变化。
8.4 三步使用说明
步骤固定为:
- 选择 Skill Pack。
- 交给 Agent 安装。
- 描述真实任务。
安装说明不得再把 git clone、cp -R 或某一个 Agent 的目录作为普通用户默认流程。
8.5 精选 Skill Packs
| 需求编号 | 优先级 | 状态 | 需求 |
|---|---|---|---|
| FR-HOME-010 | P0 | 已实现 | 从 featured: true 的 Registry 条目中读取精选 Pack |
| FR-HOME-011 | P0 | 已实现 | 首页最多展示 6 个精选 Pack |
| FR-HOME-012 | P0 | 已实现 | 卡片展示质量、原子 Skill 数、名称、简介、领域和详情入口 |
| FR-HOME-013 | P0 | 已实现 | 提供查看全部入口 |
8.6 共建入口
首页底部必须明确说明:
- 无需注册独立账号。
- 投稿生成标准 Registry 文件。
- GitHub Pull Request 是审核入口。
主按钮进入 /submit。
9. 使用教程需求
9.1 页面目标
教程页帮助用户完成以下认知:
- Skill Pack 是什么。
- 如何选择 Pack。
- 如何把安装交给 Agent。
- 如何开始调用。
- 如何确认 Skill 已生效。
9.2 页面结构
教程由五个连续步骤和常见问题组成:
- 理解 Skill Pack 目录。
- 选择适合当前任务的 Pack。
- 把安装提示词交给 Agent。
- 用自然语言描述真实任务。
- 验证 Skill 是否生效。
- 常见问题。
桌面端展示页内目录;移动端可以隐藏目录,但正文锚点必须保留。
9.3 安装提示词示例
教程必须展示可理解的完整示例:
请根据 https://kangarooking.github.io/cangjie-skill/install/cangjie-skill.md,
从 https://github.com/kangarooking/buffett-letters-skill
安装 buffett-letters-skill。
固定安装规范地址为:
https://kangarooking.github.io/cangjie-skill/install/cangjie-skill.md
该地址只有在官网部署完成后才可访问。发布前必须把安装规范文件与网站同时部署,避免生产页面引用 404。
9.4 Agent 安装结果说明
教程需要告诉用户 Agent 将自动完成:
- 识别当前 Agent。
- 判断全局或项目级 Skills 目录。
- 读取来源仓库。
- 检查 SKILL.md、风险和同名冲突。
- 安装脚本、模板与资源。
- 验证并报告安装结果。
以下情况 Agent 必须暂停并请求确认:
- 覆盖存在本地修改的同名 Skill。
- 执行未审查脚本。
- 需要密钥、凭证或个人信息。
- 需要提升系统权限。
- 来源不可验证或存在明显风险。
9.5 调用和验证
用户安装后可以直接描述业务任务,不要求记忆命令。
验证 Prompt 至少需要让 Agent 说明:
- 使用了哪个 Skill。
- 为什么选择它。
- 它要求遵循哪些步骤。
9.6 常见问题
P0 必须覆盖:
- Agent 没有识别 Skill。
- 一次安装多个 Skill 的冲突。
- Skill 是否会上传用户资料。
- 安装后是否需要新会话或重新扫描。
10. Skills 目录需求
10.1 页面目标
用户应当根据“我要解决什么问题”发现 Skill,而不只是按书名或仓库名浏览。
10.2 列表内容
每张 Skill Card 必须展示:
- 质量等级。
- 原子 Skill 数。
- Pack 名称。
- 一句话简介。
- 领域标签。
- 详情页入口。
10.3 搜索
当前本地搜索范围:
- 名称。
- slug。
- summary。
- domains。
- use_cases。
搜索行为:
- 不区分大小写。
- 去除首尾空格。
- 输入后即时过滤,不需要提交。
- 没有关键词时展示全部。
P1 扩展项:
- 把原子 Skill 名称和触发描述纳入索引。
- 支持拼音或中英文别名。
- 支持结果相关性排序。
10.4 筛选
P0 筛选维度:
- 领域。
- 质量:已验证、社区收录、实验性。
- 来源:GitHub 仓库、仓库内置。
筛选条件可以组合,结果取交集。
10.5 URL 状态
当前已实现:
- q:搜索关键词。
- domain:领域。
- quality:质量。
P1 要求:
- source 同样写入 URL。
- 页面加载时恢复全部筛选条件。
- 分享 URL 后接收者看到相同结果。
10.6 结果状态
必须包含:
- 全部结果计数。
- 筛选后的结果计数。
- 重置筛选。
- 无匹配结果空状态。
- 空状态中的“清空筛选”操作。
11. Skill Pack 详情页需求
11.1 页面目标
详情页需要回答四个问题:
- 这是什么?
- 它适合解决什么问题?
- 怎样交给 Agent 安装?
- 来源是否公开、当前质量状态是什么?
11.2 页面信息结构
顶部:
- 返回 Skills 目录。
- 质量等级。
- 原子 Skill 数。
- 领域。
- Pack 名称。
- 简介。
页内导航:
- 概览。
- 使用场景。
- 如何使用。
- 来源信息。
主体采用双栏结构:
- 左侧:概览、使用场景、使用步骤和来源。
- 右侧:Agent 安装卡和 Registry 元数据。
移动端右侧安装卡移动到正文前方,确保核心动作优先出现。
11.3 Agent 安装卡
| 需求编号 | 优先级 | 状态 | 需求 |
|---|---|---|---|
| FR-DETAIL-010 | P0 | 已实现 | 根据 Registry 条目自动生成安装提示词 |
| FR-DETAIL-011 | P0 | 已实现 | 提供“复制安装提示词”按钮 |
| FR-DETAIL-012 | P0 | 已实现 | 复制成功后显示短暂成功反馈 |
| FR-DETAIL-013 | P0 | 已实现 | 提供“查看安装规范”链接 |
| FR-DETAIL-014 | P0 | 已实现 | 提供“查看源代码”链接 |
| FR-DETAIL-015 | P0 | 已实现 | 不把手动 Git 命令作为默认安装流程 |
GitHub 来源的提示词格式:
请根据 {安装规范 URL},从 {source_url} 安装 {slug}。
仓库内置来源的提示词格式:
请根据 {安装规范 URL},
从 {source_url} 中的 {skill_path} 安装 {slug}。
11.4 概览
概览需要展示:
- Pack 简介。
- 原子 Skill 数。
- 领域数量。
- 支持语言数量。
11.5 使用场景
每个 Pack 展示 1—6 个 use_cases。使用场景必须描述用户任务,不应只是抽象主题词。
正确示例:
- 分析企业长期价值。
- 检查投资决策的关键假设。
不推荐示例:
- 投资。
- 思考。
11.6 如何使用
固定为三步:
- 把安装提示词发给 Agent。
- 说清楚真实任务。
- 确认调用了正确方法。
页面需要提供一条通用调用示例。
11.7 来源信息
必须展示:
- GitHub 仓库路径。
- 可点击的源仓库入口。
- Registry 的 slug、质量、领域、语言、来源类型和状态。
- Registry 文件的修改路径。
12. Agent 安装规范需求
12.1 文件与地址
- 源文件:website/public/install/cangjie-skill.md
- 正式地址:https://kangarooking.github.io/cangjie-skill/install/cangjie-skill.md
- 内容类型:Markdown 文本。
- 目标读者:Agent。
12.2 安装位置判断
规范必须包含常见 Agent 的 Skills 目录:
- Codex。
- Claude Code。
- Cursor。
- Windsurf。
- Gemini CLI。
- QoderWork。
- WorkBuddy。
- 其他 Agent 的兜底判断方式。
如果用户明确要求安装到当前项目,优先使用项目级目录;否则使用全局目录。
12.3 来源检查
Agent 必须:
- 确认 URL 可访问。
- 记录仓库版本或 commit。
- 在临时目录检查,不直接覆盖。
- 阅读 README 和 SKILL.md。
- 检查脚本、外部下载、凭证要求和目录冲突。
12.4 安装范围
Agent需要查找全部 SKILL.md,并把包含 SKILL.md 的目录及其必要脚本、模板和资源完整安装。
不得复制:
- .git。
- 构建缓存。
- .env。
- 密钥。
- 无关大型素材。
- 明显不属于 Skill 运行所需的文件。
12.5 冲突策略
- 内容与版本相同:跳过并说明。
- 可以安全升级:保留必要配置后更新。
- 存在本地修改:停止覆盖并询问。
- 无法判断安全性:停止并说明。
12.6 安装结果
Agent 最终必须报告:
- 来源。
- 版本或 commit。
- 安装目录。
- 已安装或已更新的 Skill。
- 被跳过的内容。
- 风险提示。
- 验证结果。
安装成功后不得自动执行 Skill 的业务任务,除非用户同时提出该任务。
13. 提交 Skill 页面需求
13.1 页面目标
让贡献者在没有账号系统和后台的情况下,生成符合规范的投稿文件,并进入 GitHub Pull Request 审核。
13.2 审核流程说明
页面顶部展示四步:
- 填写信息。
- 发起 PR。
- 自动检查。
- 人工审核。
页面必须说明:
- 所有审核公开发生在 GitHub。
- 网站不会在后台保存所填信息。
- 自动检查通过不代表一定合并。
13.3 投稿模式 A:公开 GitHub 仓库
适用于已经公开开源的 Skill。
输入:
- Pack 名称。
- slug。
- 简介。
- GitHub 仓库 URL。
- 原子 Skill 数量。
- 语言。
- 领域标签。
- 使用场景。
- 投稿确认。
输出:
- registry/{slug}/entry.yaml。
- YAML 预览。
- 复制 YAML。
- 下载 entry.yaml。
- 打开 GitHub 新建文件页面。
GitHub URL 必须:
- 使用 HTTPS。
- 域名为 github.com。
- 至少包含 owner 和 repository 两级路径。
- 自动移除结尾的 .git 和斜杠。
13.4 投稿模式 B:本地 Skill 文件夹
适用于尚未建立独立公开仓库的 Skill。
用户在浏览器中选择本地文件夹。网站只在浏览器本地读取和打包,不把文件上传到网站服务器。
输出 ZIP 结构:
registry/{slug}/
├── entry.yaml
└── skill/
├── README.md
├── atomic-skill-a/
│ └── SKILL.md
└── atomic-skill-b/
└── SKILL.md
Registry 字段:
- source_type 为 bundled。
- source_url 指向仓颉 Skill 主仓库。
- skill_path 为 registry/{slug}/skill。
13.5 本地文件夹校验
必须拦截:
- 找不到 SKILL.md。
- 总大小超过 20 MB。
- 包含 .env。
- 包含 id_rsa 或 id_ed25519。
- 包含 credentials.json。
- 包含 pem、key 或 p12 文件。
必须忽略:
- .DS_Store。
- Thumbs.db。
- node_modules。
警告但不阻断:
- 缺少 README.md。
检测通过后,页面自动把 SKILL.md 数量写入原子 Skill 数量。
13.6 表单规则
| 字段 | 规则 |
|---|---|
| name | 必填,2—80 字符 |
| slug | 必填,小写英文、数字、连字符,最长 64 |
| summary | 必填,10—240 字符 |
| repositoryUrl | GitHub 模式必填 |
| skillCount | 正整数,最小 1 |
| domains | 至少 1 个,支持中文或英文逗号 |
| languages | zh-CN、en、ja,可多选 |
| useCases | 每行 1 个,至少 1 个,最多取前 6 个 |
| agreement | 必须勾选 |
13.7 Slug 生成
名称输入时可以自动生成 slug:
- 转为小写。
- 非字母数字替换为连字符。
- 去除首尾连字符。
- 最长 64 字符。
用户手动修改 slug 后,不再被名称变化自动覆盖。
中文名称无法自动生成有效英文 slug 时,用户必须手动填写。
13.8 草稿与隐私
当前实现:
- 普通字符串字段保存到浏览器 localStorage。
- 所选文件夹不会保存。
- 所选文件夹不会自动上传。
- 页面不会把表单内容发送到独立服务器。
P1:
- 正确保存和恢复多语言选择。
- 提供“清除草稿”。
- 在不同投稿模式间切换时保留有效字段。
13.9 生成结果
提交表单后必须:
- 显示生成的 YAML。
- 启用复制按钮。
- 展示下一步说明。
- 根据模式展示 entry.yaml 下载或完整 ZIP 下载。
- GitHub 模式展示创建文件入口。
- 失败时在表单附近展示明确错误。
14. Registry 数据需求
14.1 单一数据源
Registry 是网站 Skill 数据的唯一来源:
registry/{slug}/entry.yaml
页面不得另外维护一份 Skill 列表或统计 JSON。
14.2 Schema 文件
Schema 路径:
schemas/registry-entry.schema.json
使用 JSON Schema Draft 2020-12。
14.3 必填字段
| 字段 | 类型 | 说明 |
|---|---|---|
| schema_version | 常量 1 | Registry 格式版本 |
| slug | string | 唯一 URL 标识 |
| name | string | 展示名称 |
| summary | string | 一句话简介 |
| source_type | enum | github 或 bundled |
| source_url | URI | GitHub 来源地址 |
| skill_count | integer | 原子 Skill 数 |
| domains | string[] | 领域 |
| language | enum[] | zh-CN、en、ja |
| status | enum | active、experimental、archived |
| quality | enum | verified、community、experimental |
| use_cases | string[] | 1—6 个使用场景 |
14.4 可选字段
| 字段 | 说明 |
|---|---|
| skill_path | bundled 模式下的仓库内路径 |
| featured | 是否进入首页精选 |
| install | 兼容旧数据的手动 clone/copy 信息,当前 UI 不作为主流程 |
14.5 质量等级
- verified:维护者已检查内容、结构和主要使用方式。
- community:社区投稿,已通过基本审核,但不代表官方背书。
- experimental:仍在试验,结构、兼容性或效果可能变化。
新投稿默认使用 community,不能由普通投稿者自行标记 verified。
14.6 内容状态
- active:正常展示和使用。
- experimental:展示但明确提示实验性。
- archived:不再维护。
P1 需要明确 archived 是否默认从目录隐藏;当前 Schema 已支持,但页面尚未做单独处理。
14.7 目录校验
自动校验必须保证:
- 每个 Registry 子目录都有 entry.yaml。
- 文件夹名等于 slug。
- slug 不重复。
- 所有字段符合 Schema。
- source_url 是 GitHub HTTPS URL。
- 至少存在一个 Registry 条目。
- 可以计算 Pack 和原子 Skill 总数。
15. GitHub PR 审核需求
15.1 原则
GitHub PR 同时承担:
- 投稿队列。
- 身份归属。
- 讨论记录。
- 修改历史。
- 自动检查结果。
- 人工审核记录。
15.2 自动检查
当 Pull Request 修改以下路径时触发:
- registry/**。
- schemas/**。
- website/**。
- .github/workflows/**。
自动执行:
- npm ci。
- Registry Schema 校验。
- 单元测试。
- Astro 类型检查。
- 静态站点构建。
15.3 人工审核
维护者至少检查:
- 来源是否公开、真实和可追溯。
- 投稿者是否有权公开内容。
- 是否包含受版权限制的原始材料。
- 是否包含密钥、凭证、隐私或恶意代码。
- Skill 是否有明确触发条件、输入、步骤和输出。
- 是否真正形成可执行方法,而不是普通摘要。
- 是否与现有内容高度重复。
- Registry 简介和 use_cases 是否准确、不过度宣传。
15.4 审核结果
- 通过:合并到 main,网站自动更新。
- 请求修改:在 PR 中说明问题,贡献者继续提交。
- 拒绝:关闭 PR,并保留公开原因。
16. 状态与异常需求
16.1 搜索无结果
展示:
- “没有找到匹配的 Skill”。
- 建议更换关键词或清空筛选。
- 清空筛选按钮。
16.2 安装规范不可访问
正式上线验收时必须检查固定 URL 返回 200。
如果安装规范 URL 不可访问:
- 不得宣称 Agent 安装流程已经正式可用。
- 发布流程应视为未完成。
- P1 可以在页面增加“规范暂不可用”的构建期检测或状态提示。
16.3 Clipboard 不可用
当前复制功能依赖 navigator.clipboard。
P1 需要:
- 捕获复制失败。
- 提示用户手动选择文本。
- 不把复制失败误显示为成功。
16.4 GitHub 不可用
如果 GitHub 新建文件页面无法打开:
- 用户仍可下载 entry.yaml 或 ZIP。
- 页面应保留手动 Fork 和 PR 的说明。
16.5 本地文件夹不受支持
文件夹选择依赖浏览器的 webkitdirectory 能力。P1 需要检测支持情况;不支持时提供 ZIP 或多文件选择的替代说明。
17. 安全、版权与隐私
17.1 安全原则
- 网站不在服务端运行投稿 Skill。
- 网站不自动执行上传文件中的脚本。
- 本地文件夹只在浏览器内检查和打包。
- Agent 安装前必须检查来源和冲突。
- 需要凭证、权限提升或覆盖修改时必须询问。
17.2 版权原则
允许:
- 投稿者自己创作的 Skill。
- 有明确授权的内容。
- 指向投稿者自行维护的公开 GitHub 仓库。
- 对知识方法的原创结构化表达。
不允许:
- 未授权完整书籍、课程、视频、音频和付费资料。
- 通过 Skill 变相分发原始受版权保护内容。
- 无法说明来源或授权状态的资料包。
17.3 隐私
- 不建立用户数据库。
- 不收集投稿文件。
- 不保存所选文件夹。
- localStorage 草稿只存在用户当前浏览器。
- 不在 MVP 中接入第三方行为分析。
18. 非功能需求
18.1 性能
- 网站必须静态生成。
- 首屏不依赖数据库或运行时 API。
- Registry 在构建期读取。
- 搜索和筛选在浏览器本地完成。
- 22 个 Pack 规模下操作应无明显延迟。
P1 性能目标:
- 桌面端 Lighthouse Performance ≥ 90。
- 移动端首屏主要内容在正常网络下 2.5 秒内可见。
18.2 响应式
必须支持:
- 桌面端。
- 平板。
- 宽度约 390px 的移动端。
移动端要求:
- 卡片单列。
- 筛选控件单列或双列。
- 详情页安装卡优先。
- 投稿表单和预览改为单列。
- 不产生影响主流程的横向滚动。
18.3 可访问性
当前基础要求:
- 提供跳到正文链接。
- 主导航有 aria-label。
- 当前页面使用 aria-current。
- 搜索结果数量使用 aria-live。
- 表单字段有 label。
- 按钮可通过键盘触发。
- 文本与背景具备基本对比度。
P1:
- 完成 WCAG 2.1 AA 基础检查。
- 为复制成功和表单错误提供屏幕阅读器状态。
- 检查所有焦点样式。
18.4 SEO
当前已实现:
- 每页独立 title。
- 每页 description。
- lang=zh-CN。
- 静态可抓取 HTML。
P1:
- Open Graph。
- Twitter Card。
- canonical URL。
- sitemap.xml。
- robots.txt。
- Skill 详情结构化数据。
18.5 浏览器兼容
目标:
- 当前版本 Chrome、Edge、Safari、Firefox。
文件夹选择和 Clipboard API 必须重点验证兼容性。
19. 技术与部署约束
19.1 架构
- 框架:Astro 静态站点。
- 数据:YAML Registry。
- Schema:JSON Schema + Ajv。
- 投稿打包:JSZip。
- 测试:Vitest。
- 部署:GitHub Pages。
- 审核:GitHub Pull Request。
- 后端:无。
- 数据库:无。
19.2 GitHub Pages
部署触发:
- main 分支中的 registry/** 变化。
- schemas/** 变化。
- website/** 变化。
- deploy-pages 工作流变化。
- 手动 workflow_dispatch。
部署需要:
- GitHub Pages Source 设置为 GitHub Actions。
- main 包含网站、Registry 和安装规范。
- 构建时 SITE_URL 为 https://kangarooking.github.io。
- base 为 /cangjie-skill。
19.3 发布前阻断项
正式发布前必须全部完成:
- 网站分支推送到 GitHub。
- PR 检查通过。
- 合并到 main。
- Pages 启用 GitHub Actions。
- 首页返回 200。
- /skills 返回 200。
- 任一详情页返回 200。
- /submit 返回 200。
- /install/cangjie-skill.md 返回 200。
- 详情页复制的固定安装 URL 可被 Agent 访问。
20. 当前实现状态
20.1 已实现
- 五个核心页面。
- 22 个动态 Skill Pack 详情页。
- 22 个 Pack、300 个原子 Skill 的 Registry。
- 搜索和领域、质量、来源筛选。
- SkillHub 风格的详情页信息层级。
- Agent 安装提示词。
- 统一 Agent 安装规范。
- GitHub 仓库投稿。
- 本地文件夹投稿。
- YAML 预览、复制和下载。
- 本地 ZIP 打包。
- Schema 校验。
- 单元测试、类型检查和静态构建。
- PR 模板。
- CI 工作流。
- GitHub Pages 部署工作流。
20.2 已配置但待发布
- 正式官网。
- 固定安装规范 URL。
- main 合并后的自动部署。
20.3 当前测试基线
- Registry:22 Packs、300 Atomic Skills。
- 单元测试:9 个。
- Astro 类型错误:0。
- 静态 HTML 页面:26 个。
测试数量和数据量会随功能变化更新,不应作为永久硬编码指标。
21. MVP 验收标准
21.1 用户使用闭环
- 用户可从首页进入 Skill 目录。
- 用户可搜索“投资”等关键词并看到相关 Pack。
- 用户可组合领域、质量和来源筛选。
- 用户可进入任意详情页。
- 用户可复制完整 Agent 安装提示词。
- 安装提示词中的规范 URL 返回 200。
- Agent 能根据规范找到对应来源并完成安装。
- 用户能按照教程验证 Skill 已生效。
21.2 投稿闭环
- GitHub 模式能生成符合 Schema 的 entry.yaml。
- GitHub 模式能下载文件并打开新建文件入口。
- 本地模式能识别 SKILL.md 数量。
- 本地模式能阻止敏感文件和超大文件夹。
- 本地模式能生成正确目录结构的 ZIP。
- PR 能触发自动检查。
- Registry 变更合并后网站内容自动更新。
21.3 质量闭环
- npm run validate:registry 通过。
- npm test 通过。
- npm run check 通过。
- npm run build 通过。
- 桌面端关键页面无明显布局错误。
- 移动端核心操作可完成。
- 用户已有的无关仓库文件未被修改。
22. 后续迭代建议
22.1 P1:上线可靠性
- 正式发布 Pages。
- 部署后健康检查。
- 固定安装规范 URL 的 CI 检查。
- Clipboard 失败回退。
- 文件夹选择兼容提示。
- 所有筛选条件 URL 化。
- 草稿清除和多语言恢复。
- archived 条目的展示策略。
22.2 P1:发现效率
- 把原子 Skill 名称纳入搜索。
- 增加来源作者展示。
- 增加更新时间和版本。
- 增加相似 Skill 和相关 Pack。
- 提供分类落地页。
22.3 P1:可信度
- 展示审核时间和审核者。
- 展示测试报告或验证摘要。
- 展示来源 commit 或版本。
- 增加安全声明和版权声明页面。
22.4 P2:社区能力
- 贡献者主页。
- 收藏、评分和评论。
- 排行榜和趋势。
- 版本更新提醒。
- Skill 兼容性矩阵。
这些能力不得在 MVP 主流程稳定前引入数据库和账号系统。
23. 产品原则
后续所有需求和设计决策应遵循:
- 先帮助用户解决真实任务,再展示项目概念。
- 安装优先交给 Agent,不把目录知识转嫁给普通用户。
- Registry 是唯一数据源。
- GitHub PR 是首版审核后台。
- 来源、授权、审核过程必须公开可追溯。
- 默认不执行、不上传、不索取凭证。
- 功能优先于视觉复杂度。
- 先保持静态、低成本和可维护,再扩展社区能力。
24. 相关文件
- 功能规格:docs/plans/2026-07-13-cangjie-skill-website-mvp-functional-spec.md
- Agent 安装调整:docs/plans/2026-07-13-agent-install-detail-redesign.md
- Registry Schema:schemas/registry-entry.schema.json
- Registry 数据:registry/
- 官网源码:website/
- Agent 安装规范:website/public/install/cangjie-skill.md
- 贡献说明:CONTRIBUTING.md
- PR 模板:.github/pull_request_template.md
- Registry 检查:.github/workflows/registry-check.yml
- Pages 部署:.github/workflows/deploy-pages.yml