Skip to content

Commit 2e69c9d

Browse files
fix: zip 改为标准多 skill 子目录结构
之前每个 skill 被打成 .skill 嵌套包再合进总 zip,不符合 Anthropic Skills 规范。改成扁平结构:zip 根目录直接放 17 个 skill 子文件夹,每个子文件夹里 是标准命名的 SKILL.md(含 YAML frontmatter)和该 skill 引用的知识库文件, Trae Solo 可整体上传。
1 parent f3fac8d commit 2e69c9d

2 files changed

Lines changed: 22 additions & 35 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ npx skills add dontbesilent2025/dbskill
3535

3636
#### Trae Solo
3737

38-
Trae Solo 支持上传包含根级 `SKILL.md` 的 zip`.skill` 文件。从 [GitHub Releases](https://github.com/dontbesilent2025/dbskill/releases) 下载最新的 `dbskill-版本号.zip`解压后里面是 17 个 `.skill` 文件,逐个拖进 Trae Solo 的「上传技能」窗口即可
38+
Trae Solo 支持上传包含根级 `SKILL.md` 的 zip。从 [GitHub Releases](https://github.com/dontbesilent2025/dbskill/releases) 下载最新的 `dbskill-版本号.zip`里面是 17 个 skill 子文件夹(每个子文件夹里有标准的 `SKILL.md` + 知识库文件),整体上传到 Trae Solo 即可
3939

4040
如果想本地构建,运行 `bash tools/build-skills.sh`,产物在 `dist/skills/`
4141

tools/build-skills.sh

Lines changed: 21 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -13,75 +13,62 @@ fi
1313
rm -rf "$OUT_DIR"
1414
mkdir -p "$OUT_DIR"
1515

16-
build_one() {
16+
STAGE_DIR="$(mktemp -d)"
17+
trap 'rm -rf "$STAGE_DIR"' EXIT
18+
19+
stage_one() {
1720
local skill_dir="$1"
1821
local name
19-
local work_dir
20-
local package_path
22+
local target
2123
local refs
2224

2325
name="$(basename "$skill_dir")"
24-
work_dir="$(mktemp -d)"
25-
package_path="$OUT_DIR/${name}-${VERSION}.skill"
26+
target="$STAGE_DIR/$name"
27+
mkdir -p "$target"
2628

27-
cp "$skill_dir/SKILL.md" "$work_dir/SKILL.md"
29+
cp "$skill_dir/SKILL.md" "$target/SKILL.md"
2830

2931
refs="$(grep -Eo '知识库/[^`,。 、)]*\.md' "$skill_dir/SKILL.md" || true)"
3032
if [ -n "$refs" ]; then
3133
while IFS= read -r ref; do
3234
[ -n "$ref" ] || continue
3335
if [ -f "$ROOT_DIR/$ref" ]; then
34-
mkdir -p "$work_dir/$(dirname "$ref")"
35-
cp "$ROOT_DIR/$ref" "$work_dir/$ref"
36+
mkdir -p "$target/$(dirname "$ref")"
37+
cp "$ROOT_DIR/$ref" "$target/$ref"
3638
fi
3739
done <<< "$refs"
3840
fi
3941

40-
python3 - "$work_dir" "$package_path" <<'PY'
41-
import os
42-
import sys
43-
import zipfile
44-
45-
source_dir, package_path = sys.argv[1], sys.argv[2]
46-
47-
with zipfile.ZipFile(package_path, "w", compression=zipfile.ZIP_DEFLATED) as archive:
48-
for root, _, files in os.walk(source_dir):
49-
for filename in files:
50-
path = os.path.join(root, filename)
51-
archive.write(path, os.path.relpath(path, source_dir))
52-
PY
53-
54-
rm -rf "$work_dir"
55-
echo "built $(basename "$package_path")"
42+
echo "staged $name"
5643
}
5744

5845
for skill_md in "$ROOT_DIR"/skills/*/SKILL.md; do
59-
build_one "$(dirname "$skill_md")"
46+
stage_one "$(dirname "$skill_md")"
6047
done
6148

62-
python3 - "$OUT_DIR" "dbskill-${VERSION}.zip" <<'PY'
49+
python3 - "$STAGE_DIR" "$OUT_DIR/dbskill-${VERSION}.zip" <<'PY'
6350
import os
6451
import sys
6552
import zipfile
6653
67-
out_dir, archive_name = sys.argv[1], sys.argv[2]
68-
archive_path = os.path.join(out_dir, archive_name)
54+
stage_dir, archive_path = sys.argv[1], sys.argv[2]
6955
7056
with zipfile.ZipFile(archive_path, "w", compression=zipfile.ZIP_DEFLATED) as archive:
71-
for filename in sorted(os.listdir(out_dir)):
72-
if filename.endswith(".skill"):
73-
archive.write(os.path.join(out_dir, filename), filename)
57+
for root, _, files in os.walk(stage_dir):
58+
for filename in files:
59+
path = os.path.join(root, filename)
60+
archive.write(path, os.path.relpath(path, stage_dir))
7461
PY
7562

7663
cat > "$OUT_DIR/README.md" <<EOF
7764
# dbskill skill 包
7865
7966
版本:${VERSION}
8067
81-
从 GitHub Releases 下载 dbskill-${VERSION}.zip 解压后,里面是 17 个 .skill 文件。每个 .skill 是一个 zip,根目录是 SKILL.md(带 YAML frontmatter,含 name + description),并自动带上该 skill 引用的知识库文件。
68+
从 GitHub Releases 下载 dbskill-${VERSION}.zip。zip 的根目录是 17 个 skill 子文件夹,每个子文件夹里有一个标准命名的 SKILL.md(带 YAML frontmatter,含 name + description),并附带该 skill 引用的知识库文件。
8269
83-
格式遵循 Anthropic Skills 规范,可用于 Trae Solo、Claude Code 等支持该格式的产品。把 .skill 逐个上传即可
70+
格式遵循 Anthropic Skills 规范,可用于 Trae Solo、Claude Code 等支持该格式的产品。整体上传 zip,或拆出需要的子文件夹打包后单独上传都可以
8471
EOF
8572

8673
echo
87-
echo "done: $OUT_DIR"
74+
echo "done: $OUT_DIR/dbskill-${VERSION}.zip"

0 commit comments

Comments
 (0)