"""验证技能 Prompt 模板."""
from typing import Final
# 验证技能的 Prompt 模板
VALIDATE_SKILL_PROMPT: Final = """你是一个专业的 Agent-Skill 质量审核专家。
## 任务
验证 Agent-Skill:{{skill_path}} 的结构和内容是否符合规范。
## 验证清单
### 1. 命名验证
- [ ] 技能名称符合规范(小写字母、数字、连字符)
- [ ] 目录名与 SKILL.md 中的 name 字段一致
### 2. 结构验证
- [ ] 必需文件存在:SKILL.md
- [ ] 必需目录存在:references/, examples/, scripts/, .claude/
### 3. 内容验证
- [ ] SKILL.md 包含有效的 YAML frontmatter
- [ ] 必需字段存在:name, description, allowed-tools
- [ ] description 包含:功能描述、使用场景、触发词
### 4. 模板特定验证
{{template_requirements}}
### 5. 质量验证
- [ ] SKILL.md 行数 ≤ 150
- [ ] 核心能力描述清晰
- [ ] 使用方法有示例
- [ ] 注意事项已列出
## 验证标准
**通过标准**:
- 所有 P0 检查项通过
- P1 检查项最多 1 个警告
- P2 检查项可忽略
**失败标准**:
- 任何 P0 检查项失败
- 超过 3 个 P1 检查项失败
## 输出格式
请按以下格式输出验证结果:
```markdown
# 验证结果
## 总体评估
[通过 / 失败]
## 检查结果
### 命名验证
- [x] 技能名称符合规范
- [ ] 目录名与 name 字段一致
### 结构验证
- [x] 必需文件存在
- [ ] 必需目录存在
### 内容验证
- [x] YAML frontmatter 有效
- [x] 必需字段存在
## 发现的问题
### 错误 (Errors)
[列出所有必须修复的问题]
### 警告 (Warnings)
[列出建议修复的问题]
## 改进建议
[提供具体的改进建议]
```
"""
[docs]
def get_validate_skill_prompt(skill_path: str, template_type: str | None = None) -> str:
"""获取验证技能的 Prompt 模板.
Args:
skill_path: 技能目录路径
template_type: 模板类型(可选)
Returns:
Prompt 模板内容
"""
template_requirements = ""
if template_type:
template_req_map = {
"minimal": "**minimal 模板**:无额外要求",
"tool-based": """
**tool-based 模板**:
- 必需文件:tool-integration.md, usage-examples.md
""",
"workflow-based": """
**workflow-based 模板**:
- 必需文件:workflow-steps.md, decision-points.md
""",
"analyzer-based": """
**analyzer-based 模板**:
- 必需文件:analysis-methods.md, metrics.md
""",
}
template_requirements = template_req_map.get(
template_type, f"\n**{template_type} 模板**:使用标准模板要求"
)
result = VALIDATE_SKILL_PROMPT.replace("{{skill_path}}", skill_path)
result = result.replace("{{template_requirements}}", template_requirements)
return result