refactor: skill 改为自包含(符合工业惯例),install 简化为整目录拷贝
- .claude/skills/new-project/ 自带 scripts/verify.sh:拷了即用、可移植, 不再依赖 install 时从根 scripts/ 组装 - install-skill.sh 简化:本地整目录 cp -R / 远程按清单拉取 - check-docs.sh 增加一致性校验:根 scripts/verify.sh 与 skill 内副本必须相同 (改了根副本需同步,CI/本地都会报漂移) - README 更新 skill 自包含说明 + 文件树 取舍:接受 verify.sh 两份小重复,换 skill 自包含可移植——符合 Anthropic skills 惯例, 比'安装时组装'更专业、更好维护;漂移由 CI 兜底。
This commit is contained in:
+20
-5
@@ -1,7 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
# 校验 README.md 是否记录了 template/ 的架构基座目录,防止文档随模板改动漂移。
|
||||
# 仅作用于 scaffold 仓库自身(不进生成项目、不属 skill)。
|
||||
# 用法:./scripts/check-docs.sh 退出码 0=同步 / 1=有未记录目录
|
||||
# scaffold 仓库自身的一致性检查(不进生成项目、不属 skill):
|
||||
# 1) README 是否记录了 template/ 的架构基座目录(防文档漂移)
|
||||
# 2) skill 自包含的 verify.sh 是否与根 scripts/verify.sh 同步(防两份漂移)
|
||||
# 用法:./scripts/check-docs.sh 退出码 0=一致 / 1=有问题
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
@@ -34,10 +35,24 @@ for entry in ".vscode" ".claude/commands" ".copier-answers.yml" "pnpm-workspace.
|
||||
fi
|
||||
done
|
||||
|
||||
# ── skill 自包含校验:两份 verify.sh 必须一致 ──────────────────────────────
|
||||
ROOT_VERIFY="$ROOT/scripts/verify.sh"
|
||||
SKILL_VERIFY="$ROOT/.claude/skills/new-project/scripts/verify.sh"
|
||||
if [ -f "$ROOT_VERIFY" ] && [ -f "$SKILL_VERIFY" ]; then
|
||||
if ! cmp -s "$ROOT_VERIFY" "$SKILL_VERIFY"; then
|
||||
echo "✗ scripts/verify.sh 与 skill 内副本不一致"
|
||||
echo " 改了 scripts/verify.sh 后需同步:cp scripts/verify.sh .claude/skills/new-project/scripts/verify.sh"
|
||||
fail=1
|
||||
fi
|
||||
else
|
||||
echo "✗ verify.sh 缺失(根或 skill 内)"
|
||||
fail=1
|
||||
fi
|
||||
|
||||
if [ "$fail" -eq 0 ]; then
|
||||
echo "✓ README 已覆盖 template 的架构基座目录与关键产物"
|
||||
echo "✓ README 覆盖 template 架构基座目录;skill verify.sh 与根一致"
|
||||
else
|
||||
echo ""
|
||||
echo "→ 请更新 README.md 的「架构基座」章节与「脚手架内容」文件树后重试。"
|
||||
echo "→ 修复上述问题后重试(文档更新 / 同步 verify.sh)。"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
+13
-16
@@ -1,9 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
# 把 new-project skill 安装到 ~/.claude/skills/(全局,任意项目可用)。
|
||||
#
|
||||
# 单一源原则:verify.sh 只在仓库根 scripts/ 维护一份,
|
||||
# 本脚本在安装时把它和 SKILL.md 组装进 ~/.claude/skills/new-project/,
|
||||
# 使安装后的 skill 自包含(无需仓库即可运行验证)。
|
||||
# skill 目录是自包含的(SKILL.md + scripts/verify.sh 都在 .claude/skills/new-project/ 内),
|
||||
# 安装即整目录拷贝——符合 skill 自包含、可移植的惯例,无需"组装"。
|
||||
#
|
||||
# 用法:
|
||||
# curl -fsSL https://raw.githubusercontent.com/baozaotumao2025/scaffold/main/scripts/install-skill.sh | bash
|
||||
@@ -13,14 +12,12 @@ set -euo pipefail
|
||||
|
||||
SKILL_NAME="new-project"
|
||||
DEST="$HOME/.claude/skills/$SKILL_NAME"
|
||||
RAW_BASE="https://raw.githubusercontent.com/baozaotumao2025/scaffold/main"
|
||||
SKILL_MD_URL="$RAW_BASE/.claude/skills/$SKILL_NAME/SKILL.md"
|
||||
VERIFY_URL="$RAW_BASE/scripts/verify.sh"
|
||||
RAW_BASE="https://raw.githubusercontent.com/baozaotumao2025/scaffold/main/.claude/skills/$SKILL_NAME"
|
||||
# skill 自包含的文件清单(新增文件时在此登记)
|
||||
FILES=("SKILL.md" "scripts/verify.sh")
|
||||
|
||||
# 在仓库内运行时优先用本地文件,否则从 GitHub 拉取
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
LOCAL_SKILL_MD="$SCRIPT_DIR/../.claude/skills/$SKILL_NAME/SKILL.md"
|
||||
LOCAL_VERIFY="$SCRIPT_DIR/verify.sh"
|
||||
LOCAL_SKILL="$SCRIPT_DIR/../.claude/skills/$SKILL_NAME"
|
||||
|
||||
fetch() { # fetch <url> <dest>
|
||||
if command -v curl &>/dev/null; then
|
||||
@@ -35,14 +32,14 @@ fetch() { # fetch <url> <dest>
|
||||
|
||||
mkdir -p "$DEST/scripts"
|
||||
|
||||
if [[ -f "$LOCAL_SKILL_MD" && -f "$LOCAL_VERIFY" ]]; then
|
||||
echo "→ 从本地仓库组装安装"
|
||||
cp "$LOCAL_SKILL_MD" "$DEST/SKILL.md"
|
||||
cp "$LOCAL_VERIFY" "$DEST/scripts/verify.sh"
|
||||
if [[ -d "$LOCAL_SKILL" ]]; then
|
||||
echo "→ 从本地仓库整目录拷贝"
|
||||
cp -R "$LOCAL_SKILL/." "$DEST/"
|
||||
else
|
||||
echo "→ 从 GitHub 组装安装"
|
||||
fetch "$SKILL_MD_URL" "$DEST/SKILL.md"
|
||||
fetch "$VERIFY_URL" "$DEST/scripts/verify.sh"
|
||||
echo "→ 从 GitHub 拉取 skill 文件"
|
||||
for f in "${FILES[@]}"; do
|
||||
fetch "$RAW_BASE/$f" "$DEST/$f"
|
||||
done
|
||||
fi
|
||||
|
||||
chmod +x "$DEST/scripts/verify.sh"
|
||||
|
||||
Reference in New Issue
Block a user