From 3bfb481c71904ff054fa202189071425e688c6c9 Mon Sep 17 00:00:00 2001 From: yuzhe Date: Wed, 22 Jul 2026 18:31:27 +0800 Subject: [PATCH] =?UTF-8?q?fix(skill):=20=E4=BF=AE=E6=AD=A3=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=20Skill=20=E5=AE=89=E8=A3=85=E5=8C=85=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- docs/operator-runbook.md | 2 +- scripts/package-upload-skill.ps1 | 15 ++++++++++++++- skill-packages/upload-delivery-desk-work.zip | Bin 9903 -> 9695 bytes 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7f23e92..f4dc98d 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ pnpm db:postgres:validate python tests/test_upload_skill.py ``` -修改内置 Agent 上传 Skill 后,运行 `powershell -ExecutionPolicy Bypass -File scripts/package-upload-skill.ps1` 更新 `skill-packages/upload-delivery-desk-work.zip`。 +修改内置 Agent 上传 Skill 后,运行 `powershell -ExecutionPolicy Bypass -File scripts/package-upload-skill.ps1` 更新 `skill-packages/upload-delivery-desk-work.zip`。该 ZIP 可直接上传到 Skill 安装器,根目录必须直接包含 `SKILL.md`。 更多资料: diff --git a/docs/operator-runbook.md b/docs/operator-runbook.md index dc78c50..9406302 100644 --- a/docs/operator-runbook.md +++ b/docs/operator-runbook.md @@ -60,7 +60,7 @@ python tests/test_upload_skill.py powershell -ExecutionPolicy Bypass -File scripts/package-upload-skill.ps1 ``` -打包脚本会先运行回归测试,再生成 `skill-packages/upload-delivery-desk-work.zip`。计划文件写入已忽略的 `tmp/`;接口或层级变化后必须同步更新 Skill、测试和分发包。 +打包脚本会先运行回归测试,再生成 `skill-packages/upload-delivery-desk-work.zip`,并校验 ZIP 根目录直接包含 `SKILL.md`。计划文件写入已忽略的 `tmp/`;接口或层级变化后必须同步更新 Skill、测试和分发包。 ## 数据备份与恢复 diff --git a/scripts/package-upload-skill.ps1 b/scripts/package-upload-skill.ps1 index 9c6ba1c..c6d6b25 100644 --- a/scripts/package-upload-skill.ps1 +++ b/scripts/package-upload-skill.ps1 @@ -38,7 +38,20 @@ Add-Type -AssemblyName System.IO.Compression.FileSystem $sourcePath, $packagePath, [System.IO.Compression.CompressionLevel]::Optimal, - $true + $false ) +$archive = [System.IO.Compression.ZipFile]::OpenRead($packagePath) +try { + $entries = @($archive.Entries | ForEach-Object { $_.FullName.Replace('\', '/') }) + if ($entries -notcontains 'SKILL.md') { + throw 'Packaged Skill must contain SKILL.md at the ZIP root.' + } + if ($entries | Where-Object { $_ -like "$skillName/*" }) { + throw 'Packaged Skill contains an extra top-level directory.' + } +} finally { + $archive.Dispose() +} + Write-Output $packagePath diff --git a/skill-packages/upload-delivery-desk-work.zip b/skill-packages/upload-delivery-desk-work.zip index 37ed241fe4448639342be47524191458762aac1b..4361fbfa82ad856789ff6198fb4b001b996225a1 100644 GIT binary patch delta 152 zcmZ4Qd*6G46blCf1H(p(McgbxK*r`D+&YXbQXrNS?|wEGc@RrpL|IS>qzn~I&Qnzp z0%<~kW!wx5llQ6W34u&NfNMNJVF@)eA&_whFjE*PEH5HId8Qf<7dImV!#)*|Bmlb) B6PN%1 delta 360 zcmccbz20|%l$;U+14C&+PJUvFZc1uSW?5=cC6G~^ty`X7lpV8CZV|Vf4qhdjk8tZS z%9-F-^Mz+Wo17(HHIrAV%5T0V%p#}*auO=Q?ZC-zR8(|84n%+h-1vMnSxHq-2jp4= h;Nr!rAxYIt2jp}FcrJ`r!zxv6u3|<81~pZX761lEXhi@3