在AI编程领域,技能主文件(SKILL.md)的编写质量直接影响着AI模型对特定任务的理解和执行效果。通过分析pptx技能文件的编写实践,我们可以提炼出一套行之有效的结构化文档编写方法论。这种文档不同于普通的API参考手册,它需要同时兼顾机器可读性和人类可理解性。
关键认知:技能主文件本质上是一种"人机协作说明书",既要让AI准确理解功能边界,又要让开发者快速掌握使用场景。
从实际案例来看,优秀的技能主文件通常包含以下核心要素:
YAML frontmatter作为文件开头部分,承担着技能定义的基石作用。标准的元数据区块应该包含:
yaml复制---
name: pptx
description: "演示文稿创建、编辑和分析。当Claude需要处理演示文稿时使用..."
license: Proprietary. LICENSE.txt has complete terms
---
字段设计要点:
name字段应采用简短的小写字母标识符,避免使用特殊字符description需要明确使用场景触发条件(如"当Claude需要..."句式)license声明,开源项目建议使用SPDX标识符在实际项目中,我们还可以扩展以下实用字段:
yaml复制dependencies:
- python>=3.8
- pptxgenjs>=3.10
compatibility:
platforms: [windows, linux, macos]
file_formats: [pptx, ppt]
version: 1.2.0
这种扩展设计使得技能文件的适用环境一目了然,大幅降低后续的集成调试成本。
为确保关键文档不被忽略,采用"强制+警告"的双重提示结构:
markdown复制**强制 - 阅读整个文件**:完全从头到尾阅读 [`html2pptx.md`](html2pptx.md)。
**永远不要在阅读此文件时设置任何范围限制。**
实施要点:
可在文档末尾添加简单的验证问题:
markdown复制<!-- 验证问题 -->
**为确保你已完整阅读本文件,请回答:**
1. 本技能支持的主要文件格式是?
2. 处理幻灯片时使用的索引方式是?
这种设计能有效确保AI或开发者真正理解文档内容,而非简单扫描。
建立清晰的标题层级体系对技术文档至关重要:
| 层级 | 用途 | 示例 |
|---|---|---|
# |
技能名称/主标题 | # PPTX处理技能 |
## |
主要功能模块 | ## 幻灯片分析 |
### |
具体操作步骤 | ### 文本提取方法 |
#### |
特殊注意事项 | #### 字体兼容性问题 |
每个二级标题下应保持内容均衡:
例如:
markdown复制## 幻灯片内容分析
提供多种幻灯片内容解析方式,支持文本、形状、图表等元素的提取...
### 基础文本提取
使用`python -m markitdown`命令可将幻灯片文本转为Markdown...
示例:
```bash
python -m markitdown demo.pptx --output slides.md
注意:某些特殊版式可能需要额外处理参数...
code复制
## 5. 约束条件可视化表达
### 5.1 检查清单设计
使用符号化清单提升可读性:
```markdown
**设计规范:**
- ✅ 使用Web安全字体:Arial, Helvetica...
- ⚠️ 慎用动画效果(可能导致兼容性问题)
- ❌ 禁止使用非标准字体嵌入
符号系统建议:
将相关约束集中展示:
markdown复制**排版要求:**
1. 页边距 ≥ 0.5英寸
2. 正文字号 ≥ 12pt
3. 行间距 ≥ 1.2倍
**色彩规范:**
1. 主色使用品牌色板
2. 对比度 ≥ 4.5:1
3. 避免纯黑(#000)文本
提供可直接复用的设计资源:
markdown复制**企业级配色方案:**
1. 科技蓝:
- 主色:#1A56A6
- 辅助色:#4B8DF8
- 背景色:#F5F9FF
- 文字色:#333333
2. 金融金:
- 主色:#D4AF37
- 辅助色:#F5D062
- 背景色:#FFFDF6
- 文字色:#222222
展示布局组合方案:
markdown复制**内容布局组合:**
A. 标题+正文:
- 标题区:高度20% | 居中对齐
- 正文区:两栏(40%/60%) | 项目符号
B. 图文混排:
- 左图右文(40%/60%)
- 图片圆角半径8px
- 文字内边距15px
每个命令应包含:
markdown复制# 生成幻灯片缩略图 (JPEG格式)
python thumbnails.py input.pptx --output-dir ./thumbs
参数:
--output-dir 缩略图保存路径
--quality 图片质量(1-100),默认80
示例输出:
Generated 12 thumbnails in './thumbs'
根据场景标注语言类型:
markdown复制```bash
# Shell命令
python script.py --input file.pptx
```
```python
# Python示例
import pptx
prs = pptx.Presentation('demo.pptx')
```
```json
// 配置文件示例
{
"slideWidth": 10,
"slideHeight": 7.5
}
```
markdown复制**XML解析错误:**
- 症状:Invalid XML at slide3
- 原因:特殊字符未转义
- 修复:使用CDATA包裹内容
**版式溢出错误:**
- 症状:Text overflow in shape5
- 原因:文本过长/文本框太小
- 修复:调整字体大小或文本框尺寸
建立标准排查步骤:
json复制{
"slide": {
// 幻灯片索引(从0开始)
"index": 0,
"shapes": [
{
"type": "text",
// 坐标单位:英寸
"position": {
"x": 1.5,
"y": 2.0
}
}
]
}
}
推荐使用JSON Schema生成工具:
markdown复制**核心依赖:**
- [python-pptx](https://github.com/scanny/python-pptx) 0.6.21+
安装:`pip install python-pptx`
用途:基础PPTX文件操作
**可选依赖:**
- [Pillow](https://python-pillow.org/) 9.0+
安装:`pip install pillow`
用途:图像处理增强
建议配套提供环境验证脚本:
python复制# check_env.py
import pkg_resources
dependencies = [
('python-pptx', '0.6.21'),
('pillow', '9.0.0')
]
for pkg, min_version in dependencies:
try:
version = pkg_resources.get_distribution(pkg).version
if version < min_version:
print(f"需要更新 {pkg}>={min_version}")
except:
print(f"缺少依赖: {pkg}")
| 类型 | 语法 | 用途 |
|---|---|---|
| 文件链接 | [配置指南](config.md) |
引用同级文档 |
| 章节锚点 | [安装步骤](#installation) |
文档内跳转 |
| 外部资源 | [官方文档](https://...) |
引用外部资料 |
建议在文档开头添加关系说明:
markdown复制**文档体系:**
- SKILL.md (本文件)
├── config.md (配置说明)
├── examples/ (示例目录)
└── templates/ (模板文件)
python复制# 人类页码 → 程序索引
def page_to_index(page_num):
"""将直观页码(从1开始)转为程序索引(从0开始)"""
if page_num < 1:
raise ValueError("页码必须≥1")
return page_num - 1
创建直观的对照表:
| 页码 | 索引 | 备注 |
|---|---|---|
| 封面 | 0 | 总是第一个 |
| 目录 | 1 | |
| 第一节 | 2 |
markdown复制1. 准备阶段
- 收集素材
- 安装依赖
2. 生成阶段
- 运行生成脚本
- 验证输出
3. 交付阶段
- 打包成果
- 生成报告
使用注释说明判断逻辑:
markdown复制4. 质量检查
- [文件大小正常?] → 继续步骤5
- [文件异常?] → 返回步骤2
markdown复制$ python pptx_builder.py demo.md
请输入主题风格:
1) 商务 2) 学术 3) 创意
选择[1-3]: 2
正在生成学术风格演示文稿...
生成完成!输出文件:demo.pptx
明确展示成功/失败输出:
markdown复制**成功输出:**
[SUCCESS] 已生成3张幻灯片 (output.pptx)
**错误输出:**
[ERROR] 图片分辨率不足 (slide2.jpg)
建议:使用≥300dpi的图片
markdown复制## 版本历史
### 1.2.0 (2024-03-15)
- 新增:支持PPT格式转换
- 修复:中文编码问题
### 1.1.0 (2024-02-10)
- 新增:缩略图生成功能
- 优化:XML处理性能
明确版本升级影响:
markdown复制**升级注意:**
- v1.2+ 需要Python 3.8+
- 旧版模板文件需转换格式
- 配置文件路径有变更
markdown复制<!-- i18n: title -->
演示文稿工具
<!-- /i18n -->
<!-- i18n: description -->
创建和编辑PPTX文件
<!-- /i18n -->
确保文档保存为UTF-8:
markdown复制**文件编码:**
- 保存为UTF-8 with BOM
- 换行符:LF (Unix格式)
- 避免特殊字符
markdown复制<!-- TEST CASE: basic_convert -->
输入文件:test/sample1.pptx
预期输出:test/expected/sample1.md
命令:
```bash
python -m markitdown test/sample1.pptx
code复制
### 17.2 自动化验证
建议配套测试脚本:
```python
# test_docs.py
import subprocess
def test_examples():
with open('SKILL.md') as f:
content = f.read()
# 提取并执行测试用例...
markdown复制**安全要求:**
1. 验证输入文件扩展名
2. 限制解压路径范围
3. 设置处理超时(如30秒)
4. 禁用危险XML特性
markdown复制**隐私保护:**
- 自动删除临时文件
- 不记录敏感内容日志
- 支持加密输出
markdown复制**大文件处理:**
- 使用流式处理
- 分块加载幻灯片
- 限制并发操作
markdown复制**缓存配置:**
1. 启用幻灯片缓存:
```python
config.cache_enabled = True
python复制config.cache_size = 100MB
code复制
## 20. 扩展开发接口
### 20.1 插件系统设计
```markdown
**扩展点:**
1. 幻灯片预处理钩子
```python
def preprocess_slide(slide):
# 修改slide对象
return slide
python复制def output_filter(content):
return modified_content
code复制
### 20.2 API文档生成
推荐使用自动化工具:
- Sphinx
- MkDocs
- Swagger
---
在编写Claude Skills主文件时,我深刻体会到文档即产品的理念。好的技能文档应该像精心设计的用户界面一样,让AI和开发者都能高效获取所需信息。最有效的技巧往往是:
1. 保持严格的层级结构
2. 提供可直接运行的示例
3. 预见并解答常见问题
4. 维护完整的变更记录
最后一个小建议:定期邀请新手试用你的文档,他们的困惑往往能揭示出最需要改进的地方。