Skip to content

feat(general-skills): 按 Agent Skills 标准升级通用技能(规范校验/标准导入导出/目录树编辑器) - #54

Open
tianling536 wants to merge 2 commits into
OpenBMB:mainfrom
tianling536:feat/general-skills-standard
Open

feat(general-skills): 按 Agent Skills 标准升级通用技能(规范校验/标准导入导出/目录树编辑器)#54
tianling536 wants to merge 2 commits into
OpenBMB:mainfrom
tianling536:feat/general-skills-standard

Conversation

@tianling536

@tianling536 tianling536 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

概述

让通用技能(General Skill)的创建/保存/导出全面对齐 Agent Skills 官方规范。此前页面新建技能只是一份裸 Markdown(无 YAML frontmatter、无规范校验、无标准导出),产物在标准工具链里不可用。

规范层(新模块 app/general_skills/standard.py)

  • 字段校验:name(1-64,小写字母/数字/连字符,不可首尾/连续连字符)、description(1-1024,做什么+何时用);
  • frontmatter 解析与 SKILL.md 组装:可选字段 license / compatibility(≤500) / metadata(键值对) / allowed-tools(空格分隔)全支持;
  • name 恒等于 slug(规范硬性要求:name 与父目录名一致);
  • 存量无 frontmatter 的技能,读路径(DTO/导出/运行时物化)同样输出规范形态,无需数据迁移。

保存与发布

  • /import_create_imported_general_skill(zip/GitHub/clawhub)统一归一化:frontmatter 以表单/解析字段重组(name=slug、可选字段透传、正文保留);
  • 校验:新建 slug 不合规 400;导入的第三方不合规名自动 _slugify 清洗;published 缺 description 400(草稿宽限,发布时强制);
  • publish 端点发布前强制规范校验;
  • 新增 GET /{slug}/export:导出标准 zip(根目录=slug,SKILL.md 为规范化版本)——与既有 zip 导入形成往返。

运行时

  • 物化到工作区的 SKILL.md 一律为规范化版本;
  • allowed-tools 门控:声明了 allowed-tools 且不含 Bash 时,runner 计划输入仅给 python、计划后再强制校验(生成 bash 即拒绝触发反思重生成);声明 Bash(...) 或未声明则不限制。

前端

  • 新建模板换成标准 SKILL.md skeleton(含 frontmatter,并注明由表单生成);
  • 基本信息新增 license / compatibility / allowed-tools 三个规范字段(与 frontmatter 同步);
  • 文件编辑器支持任意路径(scripts/run.pyreferences/guide.mdassets/),mime 按扩展名推断;
  • 编辑器新增导出技能包按钮(zip 下载)。

验证

  • 新增测试:规范层 10 例(name/description 规则、解析组装往返、转义、标准化输出、文件清单、allowed-tools 解析)+ API 层 5 例(保存归一化与可选字段透传、非法 slug/无描述发布 400、草稿宽限、导出 zip 结构断言)+ 运行时 2 例(物化标准化、门控语言列表);
  • 存量测试按归一化后的新行为对齐(frontmatter 形态、夹具补 description);
  • 全量 1243 passed、ruff 零告警、前端 build 通过、新增文案已入 en.json(本页 i18n 无缺失;i18n:check 报告的 67 条均为 main 预存在,与纯净 main 一致)。

兼容性

  • 无 schema 变更;存量技能不迁移,保存/导出/运行时自动规范化;
  • 第三方导入(clawhub/GitHub/zip)行为收紧:无 description 的包会被拒绝并给出明确错误(规范必填项)。

编辑器升级(e97b4be 追加)

  • 文件面板改目录树:导入/创建多文件技能包后,按路径组织成文件夹层级(scripts/、references/、assets/ 等),文件夹可折叠,文件按层级缩进显示 basename,悬停显示完整路径;右键菜单(重命名/删除)保持不变;
  • 新建文件改下拉菜单:预置 scripts/run.pyreferences/guide.mdassets/data.json 三个规范目录模板(重名自动追加序号),另有"自定义路径…"展开内联输入(回车创建、Esc 收起)——按规范目录结构建技能一步到位。

田领 added 2 commits July 31, 2026 07:28
规范层(app/general_skills/standard.py):
- name/description 规范校验(1-64 小写连字符/1-1024)
- YAML frontmatter 解析与 SKILL.md 组装;可选字段
  license/compatibility/metadata/allowed-tools 全支持
- name 恒等于 slug(规范:与目录名一致);存量技能读路径同样输出规范形态

保存与发布:
- /import 与 _create_imported_general_skill(zip/GitHub/clawhub)统一归一化:
  frontmatter 以表单/解析字段重组、正文保留;新建 slug 不合规 400,
  导入名不合规自动 _slugify 清洗;published 缺 description 400,草稿宽限
- publish 端点发布前强制规范校验
- 新增 GET /{slug}/export 导出标准 zip(根目录=slug,SKILL.md 规范化)

运行时:
- 物化到工作区的 SKILL.md 一律规范化
- allowed-tools 门控:未声明 Bash 时 runtime 仅 python(计划输入约束+
  计划后强制),声明 Bash(...) 或缺省不限制

前端:
- 新建模板换标准 SKILL.md skeleton;基本信息新增 license/compatibility/
  allowed-tools 三字段(与 frontmatter 同步)
- 文件编辑器支持任意路径(scripts/references/assets)
- 编辑器新增"导出技能包"按钮

测试:规范层 10 例、保存归一化/非法 slug/发布校验/导出 zip 往返/
物化标准化/门控等;存量测试按归一化新行为对齐;全量 1243 passed、
ruff 零告警、前端 build 与 i18n 新增文案齐全
- 文件列表从平铺改为目录树:按路径组织层级、文件夹可折叠(默认展开)、
  文件显示 basename 并缩进、悬停看完整路径;右键菜单(重命名/删除)不变
- 新建文件改下拉菜单:预置 scripts/run.py、references/guide.md、
  assets/data.json 三个规范目录模板(重名自动加序号),自定义路径项
  展开内联输入(回车创建/Esc 收起)
@tianling536 tianling536 changed the title feat(general-skills): 通用技能对齐 Agent Skills 官方规范(agentskills.io) feat(general-skills): 按 Agent Skills 标准升级通用技能(规范校验/标准导入导出/目录树编辑器) Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant