[ PROMPT_NODE_24582 ]
testing-strategies
[ SKILL_DOCUMENTATION ]
# 命令测试策略
在部署和分发之前测试斜杠命令的综合策略。
## 概述
测试命令可确保其正常工作、处理边缘情况并提供良好的用户体验。系统的测试方法可以及早发现问题,并建立对命令可靠性的信心。
## 测试级别
### 级别 1:语法和结构验证
**测试内容:**
- YAML 元数据语法
- Markdown 格式
- 文件位置和命名
**测试方法:**
bash
# 验证 YAML 元数据
head -n 20 .claude/commands/my-command.md | grep -A 10 "^---"
# 检查结束元数据标记
head -n 20 .claude/commands/my-command.md | grep -c "^---" # 应为 2
# 验证文件是否有 .md 扩展名
ls .claude/commands/*.md
# 检查文件是否在正确位置
test -f .claude/commands/my-command.md && echo "已找到" || echo "缺失"
**自动化验证脚本:**
bash
#!/bin/bash
# validate-command.sh
COMMAND_FILE="$1"
if [ ! -f "$COMMAND_FILE" ]; then
echo "错误:找不到文件: $COMMAND_FILE"
exit 1
fi
# 检查 .md 扩展名
if [[ ! "$COMMAND_FILE" =~ .md$ ]]; then
echo "错误:文件必须具有 .md 扩展名"
exit 1
fi
# 验证 YAML 元数据(如果存在)
if head -n 1 "$COMMAND_FILE" | grep -q "^---"; then
# 计算元数据标记
MARKERS=$(head -n 50 "$COMMAND_FILE" | grep -c "^---")
if [ "$MARKERS" -ne 2 ]; then
echo "错误:无效的 YAML 元数据(需要 2 个 '---' 标记)"
exit 1
fi
echo "✓ YAML 元数据语法有效"
fi
# 检查空文件
if [ ! -s "$COMMAND_FILE" ]; then
echo "错误:文件为空"
exit 1
fi
echo "✓ 命令文件结构有效"
### 级别 2:元数据字段验证
**测试内容:**
- 字段类型正确
- 值在有效范围内
- 必需字段存在(如有)
**验证脚本:**
bash
#!/bin/bash
# validate-frontmatter.sh
COMMAND_FILE="$1"
# 提取 YAML 元数据
FRONTMATTER=$(sed -n '/^---$/,/^---$/p' "$COMMAND_FILE" | sed '1d;$d')
if [ -z "$FRONTMATTER" ]; then
echo "没有需要验证的元数据"
exit 0
fi
# 检查 'model' 字段(如果存在)
if echo "$FRONTMATTER" | grep -q "^model:"; then
MODEL=$(echo "$FRONTMATTER" | grep "^model:" | cut -d: -f2 | tr -d ' ')
if ! echo "sonnet opus haiku" | grep -qw "$MODEL"; then
echo "错误:无效的模型 '$MODEL'(必须是 sonnet, opus 或 haiku)"
exit 1
fi
echo "✓ 模型字段有效: $MODEL"
fi
# 检查 'allowed-tools' 字段格式
if echo "$FRONTMATTE