feat(skills): add codex compatibility

This commit is contained in:
zfc
2026-03-09 21:27:05 +08:00
parent 755dd3409c
commit 423c6079b1
30 changed files with 4195 additions and 53 deletions
+72 -5
View File
@@ -1,21 +1,64 @@
#!/usr/bin/env bash
# ============================================================
# spec-coding-skills 安装/更新脚本
# 用法: bash <(curl -sL <raw-url>/install.sh)
# 或: bash install.sh [目标目录]
# 用法: bash <(curl -sL <raw-url>/install.sh) [codex|claude]
# 或: bash install.sh [codex|claude|目标目录]
# ============================================================
set -euo pipefail
REPO_URL="https://git.internal.intelligrow.cn/zhangfucai/spec-coding-skills.git"
SKILLS_SRC=".claude/skills"
DEFAULT_TARGET=".claude/skills"
DEFAULT_MODE="codex"
GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; NC='\033[0m'
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_title() { echo -e "${CYAN}$1${NC}"; }
TARGET="${1:-$DEFAULT_TARGET}"
MODE=""
TARGET=""
SKILLS_SRC=""
GUIDE_SRC=""
GUIDE_DST=""
resolve_layout() {
local input="$1"
case "$input" in
""|codex)
MODE="codex"
TARGET=".codex/skills"
SKILLS_SRC=".codex/skills"
GUIDE_SRC="AGENTS.md.template"
GUIDE_DST="AGENTS.md"
;;
claude)
MODE="claude"
TARGET=".claude/skills"
SKILLS_SRC=".claude/skills"
GUIDE_SRC="CLAUDE.md.template"
GUIDE_DST="CLAUDE.md"
;;
*)
TARGET="$input"
case "$TARGET" in
*".claude/skills"*)
MODE="claude"
SKILLS_SRC=".claude/skills"
GUIDE_SRC="CLAUDE.md.template"
GUIDE_DST="CLAUDE.md"
;;
*)
MODE="codex"
SKILLS_SRC=".codex/skills"
GUIDE_SRC="AGENTS.md.template"
GUIDE_DST="AGENTS.md"
;;
esac
;;
esac
}
resolve_layout "${1:-$DEFAULT_MODE}"
TMP_DIR=$(mktemp -d)
trap "rm -rf $TMP_DIR" EXIT
@@ -27,6 +70,12 @@ git clone --depth 1 --quiet "$REPO_URL" "$TMP_DIR"
VERSION=$(git -C "$TMP_DIR" describe --tags --always 2>/dev/null || git -C "$TMP_DIR" rev-parse --short HEAD)
log_info "版本: $VERSION"
log_info "模式: $MODE"
if [ ! -d "$TMP_DIR/$SKILLS_SRC" ]; then
log_warn "上游仓库中不存在技能目录: $SKILLS_SRC"
exit 1
fi
# ---------- 统计变更 ----------
NEW=0
@@ -85,10 +134,28 @@ for tpl_file in "$TMP_DIR/$SKILLS_SRC"/*.template "$TMP_DIR/$SKILLS_SRC"/*.md; d
fi
done
# 安装项目根目录引导文件
guide_src_path="$TMP_DIR/$GUIDE_SRC"
if [ -f "$guide_src_path" ]; then
if [ ! -f "$GUIDE_DST" ]; then
cp "$guide_src_path" "$GUIDE_DST"
log_info "✨ 新增项目引导: $GUIDE_DST"
NEW=$((NEW + 1))
elif ! diff -q "$guide_src_path" "$GUIDE_DST" >/dev/null 2>&1; then
cp "$GUIDE_DST" "$GUIDE_DST.local.bak"
cp "$guide_src_path" "$GUIDE_DST"
log_warn "🔄 更新项目引导: $GUIDE_DST (本地版本已备份为 ${GUIDE_DST}.local.bak"
UPDATED=$((UPDATED + 1))
else
SKIPPED=$((SKIPPED + 1))
fi
fi
# ---------- 汇总 ----------
echo ""
log_title "✅ 完成!"
echo ""
echo " 🧭 模式: $MODE"
echo " 📁 目标目录: $TARGET"
echo " 📦 版本: $VERSION"
echo ""