跳到主要内容

灵栈技能助手

收藏1

Lingzhan Skills

让 AI 在灵栈搜索、介绍并安装经过审核的技能;装好后新会话也能直接使用灵栈。

让 AI 安装

灵栈官方最新版本 0.8.1更新于 2026-11-02下载 46 次14 个版本

  • 灵栈
  • 技能商店
  • 安装技能
  • Codex
  • Claude Code

版本历史

  1. 0.8.1最新

    搜索没有合适的技能时,可以翻页或换个说法再搜一次(原来是同一个任务只搜一次)

    2026-11-02与 0.8.0 对比

  2. 操作步骤改为每个对话第一次用灵栈时读 https://lingzhanskill.com/helper.md,以后改步骤不用再更新助手;MCP 主地址改为 https://api.lingzhanskill.com/mcp,备用地址 https://lingzhanskill.com/mcp

    2026-10-26与 0.7.1 对比

  3. 更正 0.7.0 的变更说明:那一版实际新增的是积分与等级(看用户的积分、等级和明细),0.7.0 的说明误写成了 0.6.0 的内容

    2026-10-24与 0.7.0 对比

  4. 看技能评论;用户同意后替用户发评论、回复,查看站内信

    2026-10-24与 0.6.0 对比

  5. 看技能评论;用户同意后替用户发评论、回复,查看站内信

    2026-10-23与 0.5.0 对比

  6. 请求灵栈时带上匿名装机编号、客户端、系统,装完报告一次结果,用来统计使用情况;用户说“灵栈不要统计”就不再带

    2026-10-23与 0.4.1 对比

  7. 安装时能找到更多客户端的技能目录(Trae、Qoder、通义灵码、CodeBuddy、Qwen Code 等)

    2026-10-23与 0.4.0 对比

  8. 让每个新对话都记得灵栈:接入时把灵栈规则写进 AI 的全局设置,规则和助手过期会自动提醒更新;动手做任务前先在灵栈搜一次

    2026-10-22与 0.3.3 对比

  9. 发布说明补充:在 SKILL.md 旁放 icon.png 即可作为技能图标;用户还没设置作者信息时,问过用户后替用户设置;介绍技能时作者声明与平台识别两份都说;不一致时按风险更高的说

    2026-10-22与 0.3.1 对比

  10. 发布说明补上来源和许可证的写法:原创或不说明来源时不选许可证就按 MIT 发布,来自别人的项目必须选,和原项目一致

    2026-10-21与 0.3.0 对比

  11. 安装改为在临时目录解压、SKILL.md 最后复制,修复 Windows 上客户端监视技能目录时装不上、留下半成品的问题;检查更新:一次查所有已装技能,最多 7 天一次,权限有变化时逐条确认;更新的备份放到技能目录以外;任务收尾时可以问一次要不要把用户自己做的技能发布到灵栈(先查隐私)

    2026-10-19与 0.2.0 对比

  12. 新增:替作者把技能发布到灵栈(浏览器里点一次“允许”授权);说明改为“发布前自动检查,官方与精选经过人工审核”

    2026-10-18与 0.1.1 对比

  13. 介绍技能时先讲用途,再讲条件、权限与脚本,来源和许可证一句话带过;补充“官方精选”说明

    2026-10-17与 0.1.0 对比

  14. 首个版本:搜索、介绍、确认、下载、核对 SHA-256、安装与更新说明

    2026-10-17

版本对比

改动了 2 个文件,1 个文件没有变化;共增加 97 行,删除 17 行。

修改

SKILL.md

+96 −16查看文件
⋯ 未改动的行 ⋯
7979
8080只在项目里使用时,换成项目下的 `.agents/skills/` 或 `.claude/skills/`。
8181
82增加:安装的三条规矩(客户端会一直监视技能目录,违反了容易“看起来装好了、其实装了一半”):
83增加:
84增加:- 在系统临时目录里下载、核对、解压,不在技能目录里解压,也不在技能目录里改名或移动文件夹
85增加: (Windows 上客户端监视这个目录时,改名会被拒绝)。
86增加:- 技能文件要直接放在 `<技能目录>/<slug>/` 下:包里的 `SKILL.md` 可能在唯一的子文件夹里,
87增加: 要从那个子文件夹复制。客户端只认 `<slug>/SKILL.md`。
88增加:- **`SKILL.md` 最后复制**。没有 `SKILL.md` 的文件夹客户端不会当成技能,中途失败也不会出现半成品。
89增加:
8290Windows PowerShell(把前两行换成要装的技能、详情里的 `latest_version` 和当前客户端的目录):
8391
8492```powershell
8593$owner = "lingzhan"; $slug = "pdf"; $version = "0.1.0"
8694$dest = Join-Path $HOME ".agents\skills\$slug"
8795$api = "https://lingzhanskill.com/api/v1"
88删除:if (Test-Path $dest) { throw "已经有 $dest,先问用户是否替换" }
96增加:[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
97增加:if (Test-Path $dest) { throw "已经有 $dest,先问用户是否替换(更新的步骤见下文)" }
8998$grant = Invoke-RestMethod -Method Post "$api/skills/$owner/$slug/versions/$version/download"
9099$tmp = Join-Path ([IO.Path]::GetTempPath()) ("lingzhan-" + [guid]::NewGuid())
91100New-Item -ItemType Directory $tmp | Out-Null
92删除:$zip = Join-Path $tmp "$slug.zip"
101增加:$zip = Join-Path $tmp "pkg.zip"
93102Invoke-WebRequest -UseBasicParsing $grant.url -OutFile $zip
94103if ((Get-FileHash $zip -Algorithm SHA256).Hash.ToLower() -ne $grant.sha256) {
95104 Remove-Item -Recurse -Force $tmp; throw "SHA-256 不一致,已停止安装"
96105}
97删除:New-Item -ItemType Directory -Force (Split-Path $dest) | Out-Null
98删除:$part = "$dest.partial"
99删除:if (Test-Path $part) { Remove-Item -Recurse -Force $part }
100删除:Expand-Archive $zip -DestinationPath $part
106增加:Expand-Archive $zip -DestinationPath (Join-Path $tmp "pkg")
107增加:$skill = Get-ChildItem (Join-Path $tmp "pkg") -Recurse -Depth 1 -File -Filter "SKILL.md" |
108增加: Sort-Object { $_.FullName.Length } | Select-Object -First 1
109增加:if (-not $skill) { Remove-Item -Recurse -Force $tmp; throw "包里没有 SKILL.md" }
110增加:$root = $skill.Directory.FullName
101111@{ source = "lingzhanskill.com"; owner = $owner; slug = $slug; version = $version; sha256 = $grant.sha256 } |
102删除: ConvertTo-Json | Set-Content -Encoding UTF8 (Join-Path $part ".lingzhan.json")
103删除:Rename-Item $part (Split-Path $dest -Leaf)
112增加: ConvertTo-Json | Set-Content -Encoding UTF8 (Join-Path $root ".lingzhan.json")
113增加:New-Item -ItemType Directory -Force $dest | Out-Null
114增加:Get-ChildItem $root -Force | Where-Object { $_.Name -ne $skill.Name } |
115增加: Copy-Item -Destination $dest -Recurse -Force
116增加:Copy-Item $skill.FullName (Join-Path $dest "SKILL.md")
117增加:$want = (Get-ChildItem $root -Recurse -File -Force).Count
118增加:$got = (Get-ChildItem $dest -Recurse -File -Force).Count
104119Remove-Item -Recurse -Force $tmp
120增加:if ($got -ne $want) {
121增加: Remove-Item -Force (Join-Path $dest "SKILL.md")
122增加: throw "复制不完整($got / $want),已删除 SKILL.md,客户端不会加载它;请重试"
123增加:}
105124```
125增加:
126增加:Windows PowerShell 5.1 访问灵栈报 TLS 错误、上面加了 Tls12 也不行时,可以改用 Node(`fetch`)或
127增加:Python(`urllib`、`zipfile`)完成同样的几步:取下载链接、下载、核对 SHA-256、解压、按上面的规矩复制。
128增加:用 Python 时请求头要带 `User-Agent`(例如 `lingzhan-skills`),不带会被网站的防护拦下(403)。
106129
107130macOS / Linux:
108131
⋯ 未改动的行 ⋯
113136curl -fsS -X POST "https://lingzhanskill.com/api/v1/skills/$owner/$slug/versions/$version/download"
114137```
115138
116删除:从返回的 JSON 里取出 `url` 与 `sha256`,接着:
139增加:从返回的 JSON 里取出 `url` 与 `sha256`,接着(没有 `unzip` 时可以用 `python3 -m zipfile -e pkg.zip pkg`):
117140
118141```bash
119142tmp=$(mktemp -d)
120143curl -fsS -o "$tmp/pkg.zip" "<url>"
121删除:echo "<sha256> $tmp/pkg.zip" | shasum -a 256 -c - # Linux 也可以用 sha256sum -c -
122删除:unzip -q "$tmp/pkg.zip" -d "$tmp/pkg" && mkdir -p "$(dirname "$dest")" && mv "$tmp/pkg" "$dest"
144增加:echo "<sha256> $tmp/pkg.zip" | shasum -a 256 -c - || { rm -rf "$tmp"; exit 1; } # Linux 也可以用 sha256sum
145增加:unzip -q "$tmp/pkg.zip" -d "$tmp/pkg"
146增加:skill=$(find "$tmp/pkg" -maxdepth 2 -type f -iname SKILL.md | awk '{ print length, $0 }' | sort -n | head -1 | cut -d" " -f2-)
147增加:[ -n "$skill" ] || { echo "包里没有 SKILL.md"; rm -rf "$tmp"; exit 1; }
148增加:root=$(dirname "$skill")
123149printf '{"source":"lingzhanskill.com","owner":"%s","slug":"%s","version":"%s","sha256":"%s"}\n' \
124删除: "$owner" "$slug" "$version" "<sha256>" > "$dest/.lingzhan.json"
150增加: "$owner" "$slug" "$version" "<sha256>" > "$root/.lingzhan.json"
151增加:mv "$skill" "$tmp/SKILL.md"
152增加:mkdir -p "$dest" && cp -R "$root/." "$dest/" && cp "$tmp/SKILL.md" "$dest/SKILL.md"
125153rm -rf "$tmp"
126154```
127155
128删除:装好后告诉用户装在哪里。客户端一般会自动发现新技能;没有出现时,请用户重启客户端。
156增加:装好后用一两句话告诉用户:装在哪里、来自哪里(例如“来自灵栈,作者是灵栈官方,版本 0.1.0”),
157增加:并提一句“以后说‘灵栈更新’,我帮你查有没有新版本”。客户端一般会自动发现新技能;没有出现时,请用户重启客户端。
129158
130删除:## 更新
159增加:卸载:先删 `SKILL.md`,再删整个文件夹。
131160
132删除:已装技能的 `.lingzhan.json` 记录了来源和版本。用户要更新时,用详情接口查看 `latest_version`;
133删除:有新版本就把变更说明告诉用户,同意后先把旧目录移到临时目录作为备份,再按第三步安装,成功后删除备份。
161增加:## 检查更新与更新
162增加:
163增加:从灵栈装的技能,文件夹里有 `.lingzhan.json`(来源 `lingzhanskill.com`、owner、slug、版本、sha256)。
164增加:只认技能目录下一层、带 `.lingzhan.json` 的文件夹。
165增加:
166增加:**什么时候检查**(只检查,不下载):用户说“灵栈更新”“检查技能更新”时;或者你在用这个技能、
167增加:而 `~/.lingzhan/state.json` 里的 `checked_at` 已经超过 7 天(没有这个文件也算)。不足 7 天就不要主动检查,
168增加:也不要每次用技能都查。
169增加:
170增加:**怎么检查**:把所有已装技能拼成一次请求(最多 50 个):
171增加:`GET /skills/updates?pairs=lingzhan/[email protected],github/[email protected]`。
172增加:只返回有新版本、或已装版本被撤回的技能。查完把当前时间写回 `~/.lingzhan/state.json` 的 `checked_at`,
173增加:有没有更新都写。
174增加:
175增加:**怎么告诉用户**:一次说完,例如“你有 2 个技能可以更新”,每个一行:旧版本 → 新版本、`changes` 里的第一条、
176增加:权限有没有变化。`permission_delta` 为 `none` 时说“权限没有变化”;为 `added` 时把 `added_permissions`
177增加:逐条列出来,请用户确认;`installed_withdrawn` 为 true 时说明已装的版本被撤回了,建议更新或卸载。
178增加:用户同意前不下载、不替换。
179增加:
180增加:**怎么更新**(用户同意后,一个一个来):
181增加:
182增加:1. 备份到技能目录以外:把旧文件夹**复制**到 `~/.lingzhan/backups/<slug>-<旧版本>/`。
183增加: 不要把备份放在技能目录里,客户端会把它当成另一个同名技能。
184增加:2. 删除旧文件夹:先删 `SKILL.md`,再删其余文件。
185增加:3. 按第三步安装新版本。失败时从备份复制回来(`SKILL.md` 最后复制)。
186增加:4. 告诉用户新版本号和 SHA-256 前 8 位,例如“已更新到 0.1.1(a1b2c3d4),权限没有变化。
187增加: 不满意可以说‘回滚’”。回滚:从备份复制回来,或者重新安装旧版本(没被撤回的旧版本一直可以下载)。
188增加:5. 用户确认没问题后,再删除备份。
134189
135190## 发布用户自己的技能
136191
137192用户请你把一个技能文件夹发布到灵栈时,按下面做。完整说明(错误码、各种情况)在
138193https://lingzhanskill.com/publish.md ,遇到这里没写的情况就读它。
139194
195增加:**可以在任务收尾时问一句**:下面三条同时成立时,在任务结束时(不要在开头或中途)问一次
196增加:“这个技能已经跑通了,要不要发布到灵栈?发布后所有人可见,也能随时撤回;不想的话就留在本地。”
197增加:
198增加:1. 这次任务里新建或大改了一个技能(`<技能目录>/<slug>/SKILL.md`),而且它不是从灵栈装的
199增加: (没有 `.lingzhan.json`);
200增加:2. 这个技能至少成功用过一次;
201增加:3. 用户对结果满意,没有返工或抱怨。
202增加:
203增加:只问一次。用户说不要,就在这个技能文件夹的 `.lingzhan-local.json` 里写 `{"publish_declined": true}`,
204增加:以后不再问。不要说“我帮你传上去吧”这类预设答案的话。
205增加:
206增加:**先查隐私,再问**:发布是公开的,已经被下载的收不回来。问之前先在要发布的文件里找下面这些,
207增加:找到就把文件名、行号和这一行(密钥只显示前 4 个字符)列给用户,请用户先处理,处理完再问:
208增加:
209增加:- 绝对路径和用户名,例如 `C:\Users\<名字>\`、`/home/<名字>/`、`/Users/<名字>/`;
210增加:- 内网地址和内部域名,例如 `10.`、`192.168.`、`172.16`~`172.31` 开头的地址,`.internal`、`.corp`、`.local`;
211增加:- 密钥和凭据,例如 `sk-`、`ghp_`、`AKIA`、`-----BEGIN`、`password=`、`.env` 文件;
212增加:- 公司、客户、项目代号,手机号、邮箱、身份证号等个人信息。
213增加:
140214**先确认**:文件夹里必须有 `SKILL.md`(在最上层,或在唯一的子文件夹里)。向用户确认文件夹、
141215技能标识(小写字母、数字、连字符,例如 `weekly-report`)、显示名称和一句话描述。
142216发布后所有人都能看到和下载,不要包含密钥、密码、`.env`、私人数据或 `.git` 目录。
143217最多 500 个文件,ZIP 不超过 20MB。
218增加:
219增加:**写清楚它是什么**:`SKILL.md` 开头的 `name` 用小写字母和连字符;`description` 用中文写清楚用途。
220增加:正文开头最好有两三行中文说明:能做什么、带不带脚本、联不联网、写不写文件。
221增加:客户端只读 `SKILL.md`,这几行是用户和 AI 一定能看到的。
144222
145223**取得授权(只需要一次)**:已经保存过以 `lzk_` 开头的发布密钥就跳过。
146224
⋯ 未改动的行 ⋯
1642424. 每 5 秒 `GET /agent/releases/<slug>/<version>`,最多 3 分钟。`stage` 为 `published` 时把 `url` 告诉用户;
165243 `in_review` 是交给灵栈人工审核了;`blocked` 时 `problems` 是原因,和用户一起改好后重新打包发布。
166244 `message` 可以直接转告用户。
245增加:5. 发布后告诉用户:公开页面地址;在 https://lingzhanskill.com/account/skills 能看到它、能撤回。
167246
168247401 说明密钥失效(用户撤销或改了密码),删掉保存的密钥,重新授权。用户可以在
169248https://lingzhanskill.com/account/agent 查看和撤销授权。
⋯ 未改动的行 ⋯
184263- 下载链接 5 分钟内有效,带临时签名,不要贴到对话里或保存下来。
185264- “检查通过”表示平台的检查没有发现所列问题,不代表绝对安全;权限是作者的声明。
186265- 发布时不要替用户点“允许”,不要索取用户的密码或登录验证码,不要发布用户没有同意发布的文件。
266增加:- 不要后台自动更新,也不要每次用技能都检查更新;检查更新不等于更新,替换前一定先问用户。
修改

skill.yaml

+1 −1查看文件
11schema_version: "0.1"
22name: lingzhan-skills
33display_name: "灵栈技能助手"
4删除:version: 0.2.0
4增加:version: 0.3.0
55description: "让 AI 在灵栈搜索、介绍并安装技能,也能替作者把技能发布到灵栈;用户找技能、遇到没有现成技能的任务或要发布技能时使用。"
66license: Apache-2.0
77entry: