Files
Claude-Code-Workflow/.claude/skills/command-guide/scripts/update-index.sh
catlog22 6993677ed9 feat: Add command relationships and essential commands JSON files
- Introduced command-relationships.json to define relationships between various commands.
- Created essential-commands.json to provide detailed descriptions and usage scenarios for key commands.
- Implemented update-index.sh script for maintaining command index files, including backup and validation processes.
- Added templates for bug reports, feature requests, and questions to streamline issue reporting and feature suggestions.
2025-11-06 12:59:14 +08:00

131 lines
4.6 KiB
Bash
Raw 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.
#!/bin/bash
##############################################################################
# 命令索引更新脚本
# 用途: 维护者使用此脚本重新生成命令索引文件
# 使用: bash update-index.sh
##############################################################################
set -e # 遇到错误立即退出
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SKILL_DIR="$(dirname "$SCRIPT_DIR")"
COMMANDS_DIR="$(dirname "$(dirname "$SKILL_DIR")")/commands"
INDEX_DIR="$SKILL_DIR/index"
echo -e "${GREEN}=== 命令索引更新工具 ===${NC}"
echo ""
echo "技能目录: $SKILL_DIR"
echo "命令目录: $COMMANDS_DIR"
echo "索引目录: $INDEX_DIR"
echo ""
# 检查命令目录是否存在
if [ ! -d "$COMMANDS_DIR" ]; then
echo -e "${RED}错误: 命令目录不存在: $COMMANDS_DIR${NC}"
exit 1
fi
# 检查 gemini 是否可用
if ! command -v gemini &> /dev/null; then
echo -e "${RED}错误: gemini 命令未找到${NC}"
echo "请确保 gemini CLI 工具已安装并在 PATH 中"
exit 1
fi
# 统计命令文件数量
COMMAND_COUNT=$(find "$COMMANDS_DIR" -name "*.md" -type f | wc -l)
echo -e "${YELLOW}发现 $COMMAND_COUNT 个命令文件${NC}"
echo ""
# 备份现有索引(如果存在)
if [ -d "$INDEX_DIR" ] && [ "$(ls -A $INDEX_DIR)" ]; then
BACKUP_DIR="$INDEX_DIR/.backup-$(date +%Y%m%d-%H%M%S)"
echo -e "${YELLOW}备份现有索引到: $BACKUP_DIR${NC}"
mkdir -p "$BACKUP_DIR"
cp "$INDEX_DIR"/*.json "$BACKUP_DIR/" 2>/dev/null || true
echo ""
fi
# 确保索引目录存在
mkdir -p "$INDEX_DIR"
echo -e "${GREEN}开始生成索引...${NC}"
echo ""
# 使用 gemini 生成索引
cd "$COMMANDS_DIR" && gemini -p "
PURPOSE: 解析所有命令文件(约 $COMMAND_COUNT 个)并重新生成结构化命令索引
TASK:
• 扫描所有 .md 命令文件(包括子目录)
• 提取每个命令的元数据name, description, arguments, category, subcategory
• 分析命令的使用场景和难度等级(初级/中级/高级)
• 识别命令之间的关联关系(通常一起使用的命令、前置依赖、后续推荐)
• 识别10-15个最常用的核心命令
• 按使用场景分类planning/implementation/testing/documentation/session-management
• 生成5个 JSON 索引文件到 $INDEX_DIR 目录
MODE: write
CONTEXT: @**/*.md | Memory: 命令分为4大类workflow, cli, memory, task需要理解每个命令的实际用途来生成准确的索引
EXPECTED: 生成5个规范的 JSON 文件:
1. all-commands.json - 包含所有命令的完整信息数组
2. by-category.json - 按 category/subcategory 层级组织
3. by-use-case.json - 按使用场景planning/implementation/testing等组织
4. essential-commands.json - 核心命令列表10-15个
5. command-relationships.json - 命令关联关系图command -> related_commands数组
每个命令对象包含name, description, arguments, category, subcategory, usage_scenario, difficulty, file_path
RULES: 保持一致的数据结构JSON格式严格遵循规范确保所有命令都被包含 | write=CREATE
" -m gemini-2.5-flash --approval-mode yolo
# 检查生成结果
if [ $? -eq 0 ]; then
echo ""
echo -e "${GREEN}✓ 索引生成成功!${NC}"
echo ""
echo "生成的索引文件:"
ls -lh "$INDEX_DIR"/*.json
echo ""
# 验证文件
echo -e "${YELLOW}验证索引文件...${NC}"
REQUIRED_FILES=("all-commands.json" "by-category.json" "by-use-case.json" "essential-commands.json" "command-relationships.json")
ALL_EXIST=true
for file in "${REQUIRED_FILES[@]}"; do
if [ -f "$INDEX_DIR/$file" ]; then
echo -e "${GREEN}${NC} $file"
else
echo -e "${RED}${NC} $file (缺失)"
ALL_EXIST=false
fi
done
echo ""
if [ "$ALL_EXIST" = true ]; then
echo -e "${GREEN}=== 索引更新完成!===${NC}"
echo ""
echo "后续步骤:"
echo "1. 验证生成的索引内容是否正确"
echo "2. 提交更新: git add .claude/skills/command-guide/index/"
echo "3. 创建提交: git commit -m \"docs: 更新命令索引\""
echo "4. 推送更新: git push"
echo ""
echo "团队成员执行 'git pull' 后将自动获取最新索引"
else
echo -e "${RED}=== 索引更新不完整,请检查错误 ===${NC}"
exit 1
fi
else
echo ""
echo -e "${RED}✗ 索引生成失败${NC}"
echo "请检查 gemini 输出的错误信息"
exit 1
fi