Files
OpenMesh/Skills撰写规范.md
zhaolei 6f402ffcee
Some checks failed
CI / pytest (push) Has been cancelled
CI / gui-unit (push) Has been cancelled
CI / gui-e2e (push) Has been cancelled
feat: OpenMesh 基础平台与 MD/PDF 转换技能
- 后端: coworker 智能体框架, WS API, 文件上传, 附件处理
- 前端: Open WebUI, 文件全量走 upload API (含 MD/TXT/JSON 等文本类)
- 技能: md-to-office (pandoc + wkhtmltopdf)
- 修复: 上传文件路径丢失, Agent 搜索浪费, 输出文件跑到 uploads/
- 打包: PyInstaller one-dir, 预打包 pandoc/wkhtmltopdf/chromium
2026-09-13 23:41:04 +08:00

398 lines
8.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OpenMesh Skills 撰写规范
本文档定义了 OpenMesh Skills 的撰写标准,确保模型能够正确理解和使用技能。
---
## 一、文件结构规范
### 必需文件
每个 Skill 必须包含以下文件:
| 文件 | 用途 |
|------|------|
| `SKILL.md` | 技能的入口文档,包含元数据、使用说明、依赖、示例 |
| `LICENSE.txt` | 许可证文件(参考现有技能使用 Proprietary 许可证) |
| `scripts/` | 脚本目录,包含所有可执行脚本 |
| `scripts/*.py` | Python 脚本 |
| `scripts/*.js``*.cjs` | Node.js 脚本(可选) |
### 可选文件
| 文件 | 用途 |
|------|------|
| `reference.md` | 高级功能或详细 API 参考 |
| `forms.md` | 表单处理等特定功能的专门指南 |
| `pptxgenjs.md` | PPT 创建的专门指南 |
| `editing.md` | 编辑操作的专门指南 |
---
## 二、SKILL.md 必填结构
### 2.1 YAML 前言(必须)
```yaml
---
name: <skill-name> # 技能名称,模型用此名称调用
description: "<触发描述>" # 触发条件描述,模型据此决定何时使用此技能
license: Proprietary. LICENSE.txt has complete terms
metadata:
builtin_skill_version: "1.0" # 版本号
---
```
### 2.2 工具说明(必须)
**必须放在 YAML 前言之后、第一个标题之前:**
```markdown
> **重要:** 所有 `scripts/` 路径均相对于此技能目录。
> 运行方式:使用 `run_shell` 工具执行命令,例如:
> ```bash
> cd {skill_dir} && python scripts/example.py arg1 arg2
> ```
> `run_shell` 不支持 `cwd` 参数,必须使用 `cd` 命令切换目录。
```
**禁止使用以下不存在的工具名称:**
-`execute_shell_command`
-`run_shell_command`
-`execute_shell`
- ❌ 任何未在 OpenMesh 中注册的工具名
**禁止使用以下不存在的参数:**
-`cwd``run_shell` 不支持此参数,必须用 `cd` 命令切换目录
-`command` — 命令字符串(必填)
-`description` — 简短描述(可选)
-`timeout_seconds` — 超时秒数(可选,默认 120 秒)
-`run_in_background` — 后台运行(可选)
### 2.3 前置依赖说明
列出所有依赖,并注明:
- 依赖是否已在打包环境中可用
- 如何检测依赖是否存在
- 缺失时的处理方式
```markdown
## 前置依赖
- **pypdf**PDF 读写(打包环境中已包含)
- **pptxgenjs**`npm`):从零创建 PPT打包环境中已包含
- **LibreOffice**`soffice`PDF 转换(打包环境中已包含)
- **pandoc**:文档格式转换(打包环境中已包含)
如果某依赖缺失,请报告依赖问题并停止(不要反复重试)。
```
### 2.4 快速参考
提供表格形式的快速命令索引:
```markdown
## 快速参考
| 任务 | 方法 |
|------|------|
| 读取文件 | `python scripts/read.py file.ext` |
| 编辑文件 | 解压 → 编辑 → 打包(见下方详细流程) |
| 验证输出 | `python scripts/validate.py output.ext` |
```
### 2.5 详细使用说明
按功能模块组织,每个模块包含:
- **用途说明**
- **输入/输出**
- **命令示例**
- **注意事项**
### 2.6 常见错误与解决方案
列出常见问题和解决方法:
```markdown
## 常见问题
### 问题 1XXX 错误
**原因:** ...
**解决:** ...
```
---
## 三、脚本规范
### 3.1 Python 脚本
#### 命名
- 使用小写下划线命名:`create_document.py``parse_content.py`
- 避免使用大写或驼峰命名
#### 入口模式
- **首选**:接受命令行参数
```python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("input_file", help="输入文件路径")
parser.add_argument("-o", "--output", default="output.ext", help="输出文件路径")
args = parser.parse_args()
```
- **备选**:接受 stdin 或配置文件
#### 错误处理
- 脚本失败时返回非零退出码
- 错误信息输出到 stderr
- 包含 Python 回溯但不暴露敏感信息
#### 依赖声明
- 仅使用标准库和 SKILL.md 中声明的依赖
- 不要隐式依赖未声明的库
### 3.2 Node.js 脚本
#### 入口模式
```javascript
// 接受命令行参数
const args = process.argv.slice(2);
// 或使用 yargs 等工具库
```
#### 依赖
- 所有 npm 依赖必须在 `package.json` 中声明
- 优先使用打包环境中已包含的包:
- `docx`
- `pptxgenjs`
- `jszip`
### 3.3 Shell 脚本(可选)
- 优先使用 Python 或 Node.js 脚本
- Shell 脚本仅用于简单包装或命令串联
---
## 四、文档编写规范
### 4.1 代码块
**必须指定语言:**
```bash
# ✅ 正确
```bash
python script.py --input file.pdf
```
```python
# ✅ 正确
```python
from pypdf import PdfReader
```
**避免无语言代码块:**
````markdown
<!-- ❌ 错误 -->
```
python script.py
```
````
### 4.2 命令示例
所有命令行示例必须:
- 使用完整路径或相对于 `{skill_dir}` 的路径
- 包含输入输出参数说明
- 示例输出(如果有助于理解)
### 4.3 绝对路径 vs 相对路径
| 场景 | 写法 |
|------|------|
| SKILL.md 中描述脚本位置 | `{skill_dir}/scripts/example.py` |
| 模型实际执行命令 | `cd {skill_dir} && python scripts/example.py` |
| 用户文件(不确定位置) | 使用传入的参数,示例用 `./input.ext` |
### 4.4 链接
引用同技能的其他文档:
```markdown
详细说明请参阅 [editing.md](editing.md)。
```
引用外部资源:
```markdown
PptxGenJS 文档https://github.com/gitbrent/PptxGenJS
```
---
## 五、模型执行指引
### 5.1 正确的工具调用方式
```markdown
# 读取帮助信息
> run_shell
> command=python --help
# 执行脚本
> run_shell
> command=cd {skill_dir} && python scripts/example.py --input ./document.ext
```
### 5.2 常见任务执行流程
**流程 1读取并分析**
```markdown
1. 使用 `read_file` 工具读取输入文件
2. 使用 `run_shell` 执行分析脚本
3. 根据分析结果规划处理步骤
```
**流程 2创建新文件**
```markdown
1. 规划文件结构和内容
2. 编写生成脚本Python 或 Node.js
3. 使用 `write_file` 保存脚本
4. 使用 `run_shell` 执行脚本
5. 使用 `run_shell` 验证输出
```
**流程 3编辑现有文件**
```markdown
1. 解包文件(如需要)
2. 使用 `read_file` 读取待编辑部分
3. 使用 `Edit` 工具修改内容
4. 重新打包(如需要)
5. 验证结果
```
### 5.3 工作目录处理
**重要:** `run_shell` 工具在 Windows 上默认使用 PowerShell在 POSIX 上使用 bash。
```bash
# Windows 路径
cd D:\project\workspace && python script.py
# 使用绝对路径
python D:\project\workspace\scripts\script.py --input "D:\project\workspace\file.ext"
```
---
## 六、质量检查清单
完成技能编写后,检查以下各项:
### 文档检查
- [ ] YAML 前言完整name、description、license、metadata
- [ ] 工具说明正确(使用 `run_shell`,无错误工具名)
- [ ] 前置依赖已列出
- [ ] 快速参考表格完整
- [ ] 代码块指定了语言
- [ ] 命令示例可执行
- [ ] 链接指向正确文件
### 脚本检查
- [ ] 所有脚本有入口参数说明
- [ ] 脚本在命令行可独立运行
- [ ] 错误处理完善
- [ ] 依赖已在 SKILL.md 中声明
### 可用性检查
- [ ] 模型能正确识别何时使用此技能
- [ ] 模型能正确调用 `run_shell` 执行命令
- [ ] 模型能正确解析脚本输出
- [ ] 模型能正确处理错误情况
---
## 七、常见错误
### 错误 1使用不存在的工具名
```markdown
<!-- ❌ 错误 -->
> 或使用 `execute_shell_command` 的 `cwd` 参数。
<!-- ✅ 正确 -->
> 运行方式:使用 `run_shell` 工具执行命令,例如:
> ```bash
> cd {skill_dir} && python scripts/example.py
> ```
```
### 错误 2命令示例缺少上下文
```markdown
<!-- ❌ 错误 -->
```bash
python script.py
```
<!-- ✅ 正确 -->
```bash
cd {skill_dir} && python scripts/script.py --input ./document.ext
```
```
### 错误 3依赖声明不完整
```markdown
<!-- ❌ 错误 -->
## 前置依赖
- Python 库(已包含)
<!-- ✅ 正确 -->
## 前置依赖
- **pypdf**PDF 读写(打包环境中已包含)
- **pandas**:数据分析(打包环境中已包含)
- **openpyxl**Excel 操作(打包环境中已包含)
```
### 错误 4文档引用错误的文件
```markdown
<!-- ❌ 错误 -->
详细说明请参阅 [advanced.md](advanced.md)。 <!-- 文件不存在 -->
<!-- ✅ 正确 -->
详细说明请参阅 [reference.md](reference.md)。
```
---
## 八、版本规范
### 版本号格式
使用语义化版本:`major.minor.patch`
- `1.0.0` - 初始版本
- `1.1.0` - 新增功能
- `1.1.1` - Bug 修复
### 版本更新记录
在 SKILL.md 末尾添加:
```markdown
---
## 版本历史
### 1.1.0 (2024-01-15)
- 新增 XXX 功能
- 修复 YYY 问题
### 1.0.0 (2024-01-01)
- 初始版本
```