#!/bin/bash # Claude Code Skills 安装脚本 # 用法: bash <(curl -s https://git.let5see.xyz/let5see/skills/raw/main/install.sh) set -e REPO_URL="https://git.let5see.xyz/let5see/skills.git" TEMP_DIR="/tmp/skills-install-$$" SKILLS_DIR="$HOME/.claude/skills" CLAUDE_MD_CONTENT=" ## Codex 协作配置 本项目使用 \`codex-collab\` skill 进行 Codex CLI 协作。 ### 快速安装 \`\`\`bash bash <(curl -s https://git.let5see.xyz/let5see/skills/raw/main/install.sh) \`\`\` ### 核心原则 **指导原则**: - Codex 是协作伙伴,而非唯一真理来源 - 必须有独立思考,对 Codex 的建议保持批判性审视 - 通过辩论和讨论达成最优方案 **职责分工**: - **Claude Code**:代码编写、文档编写、简单任务直接执行 - **Codex**:代码查找定位、逻辑梳理、代码审查、方案设计、问题诊断 **关键规范**: - 查找/搜索任务 → 必须调用 Codex - 方案设计阶段 → 使用 \`sandbox=\"read-only\"\` - 代码实现 → Claude Code 基于方案重写生产级代码 - 完成编码后 → 立即让 Codex 审查 ### 详细文档 参考:\`~/.claude/skills/codex-collab/SKILL.md\` 或在线查看:https://git.let5see.xyz/let5see/skills --- " echo "🚀 正在安装 Claude Code Skills..." echo "" # 创建临时目录 echo "📦 下载 skills..." git clone "$REPO_URL" "$TEMP_DIR" --depth 1 --quiet # 确保 skills 目录存在 mkdir -p "$SKILLS_DIR" # 复制所有 skills echo "📋 安装 skills..." for skill_dir in "$TEMP_DIR"/*/; do if [ -d "$skill_dir" ]; then skill_name=$(basename "$skill_dir") if [ -f "$skill_dir/SKILL.md" ]; then echo " ✓ 安装 $skill_name" cp -r "$skill_dir" "$SKILLS_DIR/" else echo " ⚠ 跳过 $skill_name (缺少 SKILL.md)" fi fi done # 清理临时文件 rm -rf "$TEMP_DIR" echo "" echo "✅ Skills 安装完成!" echo "" echo "已安装的 skills:" ls -1 "$SKILLS_DIR" | sed 's/^/ - /' echo "" # 询问是否配置 CLAUDE.md echo "────────────────────────────────────────" echo "📝 是否要配置 Codex 协作规则到 CLAUDE.md?" echo "" echo "这将帮助 Claude Code 更好地与 Codex 协作。" echo "不会被覆盖现有内容,只会追加配置。" echo "" echo " [1] 用户级配置 (~/.claude/CLAUDE.md) - 所有项目生效" echo " [2] 项目级配置 (./CLAUDE.md) - 仅当前项目生效" echo " [0] 跳过配置" echo "" echo "────────────────────────────────────────" read -p "请选择 [0/1/2]: " choice case $choice in 1) # 用户级配置 CLAUDE_MD_PATH="$HOME/.claude/CLAUDE.md" echo "" echo "📄 写入用户级配置: $CLAUDE_MD_PATH" # 创建目录(如果不存在) mkdir -p "$(dirname "$CLAUDE_MD_PATH")" # 检查文件是否已存在 if [ -f "$CLAUDE_MD_PATH" ]; then # 检查是否已包含配置标记 if grep -q "## Codex 协作配置" "$CLAUDE_MD_PATH"; then echo " ⚠ 检测到已存在 Codex 协作配置,跳过写入" else # 追加配置 echo "" >> "$CLAUDE_MD_PATH" echo "$CLAUDE_MD_CONTENT" >> "$CLAUDE_MD_PATH" echo " ✓ 配置已追加到文件末尾" fi else # 创建新文件 cat > "$CLAUDE_MD_PATH" << 'EOF' ## 项目宪法遵循规则(最高优先级) 进入任何项目目录时,**必须首先**执行以下检查: 1. 检查项目根目录是否存在 `CLAUDE.md` 文件 2. 若存在,**完整阅读**该文件内容 3. 将其作为该项目的"宪法",严格遵循其中定义的所有规则 **优先级规则**: - 项目级 `CLAUDE.md` > 本全局配置 - 若规则冲突,以项目级为准 EOF echo "$CLAUDE_MD_CONTENT" >> "$CLAUDE_MD_PATH" echo " ✓ 已创建新配置文件" fi ;; 2) # 项目级配置 echo "" read -p "请输入项目目录路径 (默认为当前目录): " project_dir project_dir=${project_dir:-.} # 转换为绝对路径 if [[ "$project_dir" = "." ]]; then project_dir="$(pwd)" elif [[ ! "$project_dir" = /* ]]; then project_dir="$(pwd)/$project_dir" fi CLAUDE_MD_PATH="$project_dir/CLAUDE.md" echo "" echo "📄 写入项目级配置: $CLAUDE_MD_PATH" # 检查目录是否存在 if [ ! -d "$project_dir" ]; then echo " ✗ 错误: 目录不存在: $project_dir" exit 1 fi # 检查文件是否已存在 if [ -f "$CLAUDE_MD_PATH" ]; then # 检查是否已包含配置标记 if grep -q "## Codex 协作配置" "$CLAUDE_MD_PATH"; then echo " ⚠ 检测到已存在 Codex 协作配置,跳过写入" else # 追加配置 echo "" >> "$CLAUDE_MD_PATH" echo "$CLAUDE_MD_CONTENT" >> "$CLAUDE_MD_PATH" echo " ✓ 配置已追加到文件末尾" fi else # 创建新文件 cat > "$CLAUDE_MD_PATH" << 'EOF' ## 项目宪法遵循规则(最高优先级) 进入任何项目目录时,**必须首先**执行以下检查: 1. 检查项目根目录是否存在 `CLAUDE.md` 文件 2. 若存在,**完整阅读**该文件内容 3. 将其作为该项目的"宪法",严格遵循其中定义的所有规则 **优先级规则**: - 项目级 `CLAUDE.md` > 用户级配置 - 若规则冲突,以项目级为准 EOF echo "$CLAUDE_MD_CONTENT" >> "$CLAUDE_MD_PATH" echo " ✓ 已创建新配置文件" fi ;; 0) echo "" echo "⏭ 跳过配置" ;; *) echo "" echo "⚠ 无效选择,跳过配置" ;; esac echo "" echo "────────────────────────────────────────" echo "🎉 安装完成!" echo "" echo "提示: 重启 Claude Code 以加载新的 skills" echo "────────────────────────────────────────"