Add interactive configuration to installation scripts

Features:
- Ask user whether to configure CLAUDE.md
- Support both user-level and project-level configuration
- For project-level: prompt for target directory
- Append content (never overwrite existing files)
- Detect existing configuration to avoid duplicates
- Auto-create project constitution section for new files

Scripts updated:
- install.sh (macOS/Linux)
- install.ps1 (Windows PowerShell)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
empty
2026-01-11 18:10:08 +08:00
parent 8dfed0df3f
commit e1f56ae793
2 changed files with 332 additions and 3 deletions

View File

@@ -8,13 +8,48 @@ 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
git clone "$REPO_URL" "$TEMP_DIR" --depth 1 --quiet
# 确保 skills 目录存在
mkdir -p "$SKILLS_DIR"
@@ -37,9 +72,137 @@ done
rm -rf "$TEMP_DIR"
echo ""
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 "────────────────────────────────────────"