Source code for skill_creator_mcp.resources.best_practices

"""最佳实践资源.

提供 Agent-Skills 开发的最佳实践指南。
"""

from typing import Final

# 最佳实践内容
BEST_PRACTICES_CONTENT: Final = """# Agent-Skills 开发最佳实践

## 1. 技能设计原则

### 1.1 单一职责
- 每个技能应该专注于一个明确的任务或功能域
- 避免创建过于复杂的多功能技能

### 1.2 渐进式披露
- 基础用法应该简单直接
- 高级功能可以逐步揭示
- 提供清晰的示例文档

### 1.3 上下文感知
- 技能应该理解调用上下文
- 适应不同的使用场景

## 2. SKILL.md 结构规范

### 2.1 必需字段
- `name`: 技能名称(小写字母、数字、连字符)
- `description`: 清晰描述技能功能
- `allowed-tools`: 明确列出需要的工具

### 2.2 内容组织
```markdown
## 技能概述
[1-2 句话描述]

## 核心能力
[列出 3-5 个核心能力]

## 使用方法
[提供基本和高级用法示例]
```

### 2.3 长度限制
- SKILL.md 应该 ≤150 行
- 保持简洁,将详细内容放到 references/

## 3. 目录结构规范

### 3.1 必需目录
```
skill-name/
├── SKILL.md              # 主文档
├── references/           # 参考文档
├── examples/             # 使用示例
├── scripts/              # 辅助脚本
└── .claude/              # Claude 配置
```

### 3.2 可选目录
```
├── src/                  # 源代码(如果需要)
│   └── skill_name/
│       ├── __init__.py
│       ├── server.py     # MCP Server(如果需要)
│       ├── models/       # 数据模型
│       └── utils/        # 工具函数
└── tests/                # 测试
```

## 4. MCP 工具使用规范

### 4.1 工具选择
- 只在 `allowed-tools` 中声明实际需要的工具
- 优先使用 Read/Write/Edit 而不是 Bash

### 4.2 错误处理
- 始终检查工具调用的返回值
- 提供清晰的错误信息

### 4.3 性能优化
- 避免不必要的文件读取
- 使用 Glob/Grep 进行批量操作

## 5. 命名规范

### 5.1 技能名称
- 格式:`{功能}-{修饰符}`
- 示例:`code-analyzer`, `file-organizer`, `api-helper`

### 5.2 目录名称
- 必须与 SKILL.md 中的 name 字段一致
- 使用小写字母和连字符

### 5.3 文件命名
- Python 模块:使用下划线 `my_helper.py`
- Markdown 文档:使用连字符 `usage-guide.md`

## 6. 文档编写规范

### 6.1 参考文档 (references/)
- 每个主题一个文件
- 使用清晰的标题层级
- 包含代码示例

### 6.2 使用示例 (examples/)
- 提供真实可运行的示例
- 包含预期输出
- 标注复杂度级别

## 7. 测试规范

### 7.1 测试覆盖
- 核心逻辑必须有单元测试
- 目标覆盖率 ≥ 80%

### 7.2 测试类型
- 单元测试:测试独立函数
- 集成测试:测试完整流程
- 示例测试:验证文档中的示例

## 8. 质量检查清单

在提交技能前,请确认:

- [ ] SKILL.md ≤ 150 行
- [ ] name 字段与目录名一致
- [ ] 所有必需目录存在
- [ ] references/ 包含所有必需文件
- [ ] allowed-tools 只包含实际使用的工具
- [ ] 文档中的示例可以运行
- [ ] 没有硬编码的路径
- [ ] 错误处理完善

## 9. 常见反模式

### 9.1 避免过度复杂
- ❌ 创建"全能"技能
- ✅ 拆分为多个专注的技能

### 9.2 避免重复造轮
- ❌ 重新实现现有工具的功能
- ✅ 直接声明使用现有工具

### 9.3 避免模糊描述
- ❌ "这个技能做很多事情"
- ✅ "这个技能分析 Python 代码的复杂度"
"""


[docs] def get_best_practices() -> str: """获取最佳实践文档内容. Returns: 最佳实践 Markdown 内容 """ return BEST_PRACTICES_CONTENT
def get_best_practices_summary() -> dict: """获取最佳实践摘要. Returns: 包含关键要点的字典 """ return { "design_principles": [ "单一职责", "渐进式披露", "上下文感知", ], "structure_rules": [ "SKILL.md ≤ 150 行", "必需目录:references/, examples/, scripts/, .claude/", "name 字段与目录名一致", ], "naming_conventions": { "skill_name": "小写字母、数字、连字符", "python_modules": "下划线分隔", "markdown_files": "连字符分隔", }, "quality_checks": [ "文档示例可运行", "无硬编码路径", "错误处理完善", "测试覆盖率 ≥ 80%", ], }