skill.发布

SKILL开发
开发 未标注权限 许可证不明确
安装这个技能

把一个**只在你机器上跑得通**的 WorkBuddy 技能,整理成**能发到 skillhub 给别人用户级安装**,隐私数据清理及格式规范审计。

一句话选型结论

按资料字段整理

skill.发布是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类开发 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_7ba94f9e/skill-publish-audit
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

开发
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_7ba94f9e仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791618093
正文体量30.2 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写代码与改 bug

按需求补代码、定位并修掉报错。

读仓库与生成改动

让模型读懂项目结构,再给出可落地的改动。

跑测试与排查故障

按现象排查问题,补测试用例并复跑。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在开发场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
skill.发布当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 ClawHub 市场 877.9 万 OpenClaw 有
Vercel React 最佳实践 浏览器控制 GitHub 仓库 849.1 万 Codex、Claude、Cursor 有
GitHub 代码协作 联网访问 ClawHub 市场 763.3 万 OpenClaw 有
网页设计指南 联网访问 GitHub 仓库 668.6 万 Codex、Claude、Cursor 有
本体论 只读 ClawHub 市场 663.7 万 OpenClaw 有

SKILL.md 全文

30.2 KB
模型实际读到的说明书原文,来自技能仓库

skill-publish-audit — 技能发布就绪审查

定位

把一个只在你机器上跑得通的 WorkBuddy 技能,整理成能发到 skillhub 给别人用户级安装的形态。
它不是给技能打"质量分"(那是 Workbuddy_skill_upgrade 的活),而是审"能不能发布"——

  • 头牌功能引用的脚本/数据有没有随包发布?
  • 有没有写死私有模块路径 / 个人 vault / 别人的 home 目录?
  • 有没有打包个人数据 / 第三方品牌素材 / 二进制缓存?
  • frontmatter 是否规范、描述是否像"简介"而不是"触发词堆砌"?

与 Workbuddy_skill_upgrade 的分工

技能 关注 典型用法
Workbuddy_skill_upgrade 单技能 8 维质量评分 + 自动修复 "这个 skill 质量怎么样、帮我修"
skill-publish-audit(本技能) 发布就绪度:自包含 / 无私有耦合 / 无隐私授权风险 "我要发布这个 skill,帮我整理"

> 配合:先用本技能做发布就绪审查与整理,再用 Workbuddy_skill_upgrade 对遗留质量问题做精修。


何时使用

  • 用户说"发布审查 / 发布就绪 / 整理这个 skill / skillhub 发布"时
  • 任何要把私有技能外发给陌生用户的场景(用户级安装,环境不可控)

发布就绪审查 9 维

维度 权重 审什么
自包含性 20% SKILL.md 引用的 scripts/ references/ state/ templates/ 文件是否真实存在于包内;是否无二进制缓存(skillhub 会跳过)
依赖准确性 15% 声明依赖(其他技能 / 模块)是否真实可获取;CLI 示例指向的脚本是否存在
隐私与授权 20% 无个人数据泄漏、无第三方品牌素材、license 已声明且合规
跨平台兼容 10% 路径用 expanduser/pathlib,无 macOS/Windows 专属硬编码、无他人 home 路径
frontmatter 合规 15% 必需字段齐全、格式合法、allowed-tools 仅工具原语
描述质量 10% 精简价值陈述(<100~200 字),非触发词堆砌
文档一致性 5% 无重复章节、版本号/标题一致、引用文件实际存在
无私有生态耦合 5% 不写死私有模块名;必须耦合时改写为"可选,缺失自动跳过"
报错健壮性 — 代码反模式:静默吞异常(except: pass)、裸 json.load 未 try 包裹(P1/P2,仅 .py,AST 判定)

> 详细检查项与 grep 模式见 references/publish-audit-checklist.md。
> 踩坑经验与完整黑名单见 references/publish-audit-lessons.md(实战避坑手册)。


标准工作流(7 阶段)

阶段一:盘点

  1. 列出技能目录全部文件(find &lt;skill-dir&gt; -type f)。
  2. 读取 SKILL.md、所有 references/*.md、scripts/*、state/*、templates/*、manifest.json(如有)。

阶段二:自包含性检查(最关键)

  • 在 SKILL.md 正文与脚本里,提取所有对 scripts/…、references/…、state/…、templates/… 的引用。
  • 逐一核对文件是否在包内存在;任一缺失即 P0(功能在用户环境直接失效)。
  • 若缺失文件其实在另一个私有模块里 → 把该文件复制进本包并改相对路径(首选),或改写为可选。

> 可用内置检查器自动跑:python scripts/audit_skill_publish.py --skill-dir &lt;path&gt;

阶段三:去私有耦合 + 清个人/第三方的东西

按 checklist 的 grep 模式扫描,命中即处理:
- 私有模块路径(Work_skill_*、Ob_* 等你的私有体系)→ 改写为"可选,缺失自动跳过"
- 个人 Obsidian vault / 工作区路径 → 改为"当前工作区"
- 他人 home 路径(/Users/&lt;name&gt;、/home/&lt;name&gt;)→ 改为 expanduser(&quot;~&quot;)
- 个人数据(私人 issue-pool、私人 skill 名清单)→ 清空或脱敏为模板
- 第三方品牌素材(如 Darwin.skill by 花叔、含他人署名的模板)→ 删除(授权风险 P0)
- 二进制/缓存产物(__pycache__/, *.pyc, *.pyo, *.pyd, *.so, *.dylib, *.pkl, .DS_Store, Thumbs.db)→ 删除(skillhub 上传跳过 P0)
- ⚠️ 光删不够:WorkBuddy 加载 skill 时 CPython 会就地在 ~/.workbuddy/skills/&lt;name&gt;/ 重生 __pycache__/*.pyc,删完还会被重新污染。根治方案见下方「⚠️ pyc 再生根因与根治」。
- macOS 专用脚本(scripts_darwin/,写死 open / 他人路径)→ 删除或平台化

⚠️ pyc 再生根因与根治(发布翻车头号原因)

现象:发布审查全绿、包也清干净了,一上传 skillhub 却报「不支持的文件类型:xxx.cpython-311.pyc」或「部分文件被跳过」。

根因:WorkBuddy 在加载/运行 skill 时会调用 CPython 解释器执行 scripts/*.py。CPython 默认在导入模块时就地生成字节码缓存 __pycache__/*.cpython-311.pyc。也就是说——哪怕你打包时 100% 干净,skill 一旦被 WorkBuddy 加载,缓存立即重生。手动 rm -rf __pycache__ 只能救一次,下次加载又来。

根治(一次性,永久生效):让 CPython 不写字节码缓存。

> 持久化环境变量 PYTHONDONTWRITEBYTECODE=1,所有新启动的 Python 进程(含 WorkBuddy 的 Python)都会继承,从此 __pycache__ 不再在 skill 目录滋生。

Windows(注册表持久化,推荐):

# 写入 HKCU\Environment 并自动广播 WM_SETTINGCHANGE
[Environment]::SetEnvironmentVariable(&quot;PYTHONDONTWRITEBYTECODE&quot;,&quot;1&quot;,&quot;User&quot;)

等价 Python(脚本化/跨调用):

import winreg
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, r&quot;Environment&quot;, 0, winreg.KEY_SET_VALUE) as k:
    winreg.SetValueEx(k, &quot;PYTHONDONTWRITEBYTECODE&quot;, 0, winreg.REG_SZ, &quot;1&quot;)

> macOS / Linux:写入 ~/.bashrc / ~/.zshrc:export PYTHONDONTWRITEBYTECODE=1

验证:新开一个进程确认已继承(已运行的 WorkBuddy 进程需在设变量之后启动才生效):

python -c &quot;import os; print(os.environ.get(&#x27;PYTHONDONTWRITEBYTECODE&#x27;))&quot;   # 应输出 &#x27;1&#x27;
find ~/.workbuddy/skills/&lt;name&gt; -name __pycache__                          # 设好后应为空

发布前防御性清理(设好环境变量后,清掉历史残留即可,且不会再生成):

# macOS / Linux / Git Bash(Windows 同样可用)
find ~/.workbuddy/skills/&lt;name&gt; -type d -name __pycache__ -exec rm -rf {} +
# 或用本技能内置器(仅删 __pycache__/ 与 *.pyc,不碰源码/数据):
python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; --clean-cache

阶段四:frontmatter 规范化 + 描述 + 一致性

  • 必需字段:name version description author triggers agent_created updated allowed-tools + 建议补 tags category license homepage
  • allowed-tools 只放工具原语(Read,Write,Edit,Grep,Glob,Bash,Skill…),不放 skill 名(如 find-skills)
  • description 精简为价值陈述;删掉正文里的重复章节;统一版本号与标题
  • license 默认 MIT;homepage 留空或填你的仓库

阶段五:生成发布元数据 + 验证自包含

  • 产出三件套(见"输出物"):发布就绪包 + 审查报告 + 发布资料
  • 验证:把引用进包的关键脚本在临时环境 dry-run(如 auto_repair.py --dry-run),确认零私有依赖、备份写入本包 state/
  • 列出"仍需用户拍板"项(homepage、子技能发布方式等)

阶段六:发布前最终安检(上传前最后一道闸)

> 清理(阶段三)+ 审计器闸口(阶段五)之后、点上传之前,跑一遍「发布前最终安检 7 步」,拦截 90% 的上传被拒。
> 完整命令模板与判读见 references/publish-audit-lessons.md 第八节。

核心 7 步:① 禁用文件类型扫描(__pycache__/.pyc/.pyo/.so/.pkl/.DS_Store 全应为 0,并查 output/ 是否含私有数据)② 文件清单核对(应只留文本)③ frontmatter 合规(无重复字段、版本号对)④ 敏感信息 grep(私有路径/用户名/凭证)⑤ 运行时缓存内容抽检(确认公开非私有)⑥ 脚本硬编码路径扫描 ⑦ 文档结构完整性(章节/FAQ 条目数)。

Windows 删除兜底:Bash rm -rf / PowerShell Remove-Item 在 WorkBuddy 沙箱里会把 /c/... 错转成 \c\... 导致静默删除失败。清 __pycache__ 最稳用 Python:

import shutil, glob
for d in glob.glob(r&#x27;&lt;skill-dir&gt;\**\__pycache__&#x27;, recursive=True):
    shutil.rmtree(d, ignore_errors=True)

阶段七:经验回流 (Experience Loopback) — v1.5.0 新增

> 每次审计完成后,自动提取本次发现的新模式,去重后追加到经验池 publish-audit-lessons.md,形成 "审计 → 发现 → 沉淀 → 下次审计更聪明" 的自迭代闭环。

触发:运行审计器时加 --learn 标志。

流程:
1. 从审计结果中提取候选经验(P0 全部、P1 新模式、P2 仅"报错健壮性"类)
2. 与经验池已有条目指纹比对 SHA256 去重
3. 生成结构化 Markdown 条目并追加到 lessons.md
4. 若发现新文件扩展名/私有耦合模式 → 提示是否应加入审计器黑名单

用法:

# 预览模式(推荐先跑,确认要追加什么)
python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; --learn --learn-dry-run

# 实际追加到经验池
python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; --learn

# JSON 模式(CI/CD)— 结果 .experience_loopback 字段
python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; --learn --json

经验类型:

类型 来源维度 示例
new_blacklist 二进制残留 发现新 skillhub 拒绝文件类型
private_coupling 私有耦合 发现新私有模块名前缀
anti_pattern 报错健壮性 新代码反模式实例
privacy 隐私授权 新隐私泄漏模式
cross_platform 跨平台 新平台兼容问题
case_study 各维度 具体翻车案例实录

自迭代机制:每次 --learn 都会让经验池增长,下次审计时新黑名单/模式已内化(需手动确认规则更新到 audit_skill_publish.py)。经验池本身成为活的"发布避坑知识库"。


内置检查器(可选,自动化部分检查)

scripts/audit_skill_publish.py 自动完成阶段二/三的大部分扫描:

# 基础用法
python scripts/audit_skill_publish.py --skill-dir ~/.workbuddy/skills/your_skill
# 审整批:
python scripts/audit_skill_publish.py --skills-root ~/.workbuddy/skills --name your_skill
# 批量审计(逗号分隔):
python scripts/audit_skill_publish.py --skills-root ~/.workbuddy/skills --name skill_a,skill_b,skill_c

# 输出增强
python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; --json          # JSON 输出(CI/CD,含 fix_hint)
python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; --verbose       # 详细模式(显示修复建议)
python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; -v              # 同上(简写)

# 缓存清理(发布前)
python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; --clean-cache              # 清理 pyc
python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; --clean-cache --dry-run    # 预览

# 经验回流(阶段七)
python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; --learn                    # 追加经验
python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; --learn --learn-dry-run    # 预览

输出 P0/P1/P2 问题清单(缺失文件、私有耦合模式、个人/品牌风险、二进制缓存、frontmatter 缺失),每条问题含 fix_hint 修复建议。
人工整理时以此为基础,再补"改写措辞 / 生成描述"等需要判断的工作。

> 报错健壮性扫描:审计器还会对 .py 脚本做「反模式」检测,固化 skill-check 的「报错提示铁律」:
> - except: pass / except Exception: pass(空 pass 体)→ 配置/环境错误被静默吞掉,用户需自己猜(P1 / P2)
> - 裸 json.load / json.loads(未被 try 包裹)→ 配置文件损坏会抛 traceback 裸崩(P2,AST 判定;含 grep 预筛选优化)
>
> 例外:纯注释说明「有意忽略」的 pass # 有意忽略… 不会被判(正则要求 pass 行尾无注释),鼓励用注释显式标注意图。

v1.6.0 新增能力:
- scripts_darwin/ 深度扫描:检测 open/pbcopy/osascript 等 macOS 专属命令 + 硬编码他人路径
- --clean-cache --dry-run:预览将删除的缓存文件
- --name 支持逗号分隔批量审计(JSON 模式输出 batch 汇总)
- --verbose / -v:显示每条问题的 [FIX] 修复建议
- JSON 输出每条问题均带 fix_hint 字段
- 大文件(>1MB)截断扫描并发出警告
- AST 解析前用字符串搜索预筛选,避免无谓 parse


输出物(建议三件套)

文件 内容
&lt;publish_dir&gt;/&lt;skill&gt;/ 发布就绪、自包含、去耦合的技能包
发布审查报告.md 一句话结论 + 9 维自评 + P0/P1/P2 清单 + 已落地修复 + 待拍板项
skillhub_发布资料.md 可直接复制的发布元数据(显示名/简介/描述/标签/分类/协议/依赖/检查清单)

> 元数据模板见 references/publish-metadata-template.md。


使用方式速查

用户说 执行
"发布审查 / 发布就绪" 完整 7 阶段
"整理这个 skill" 阶段二~五整理
"这个 skill 能发吗" 阶段二/三快速体检 + 结论
审计后加 --learn 自动回流经验到避坑手册

FAQ

审计器使用

Q1:审计器报 P0=0,但上传 skillhub 时还是被拒了,为什么?

A:最常见三个原因:
1. pyc 再生:__pycache__/ 被 WorkBuddy 加载 skill 时就地重生。审计器扫时干净,上传瞬间已经脏了。→ 持久化 PYTHONDONTWRITEBYTECODE=1(见阶段三"pyc 再生根因与根治"),设好后 --clean-cache 清一次残留。
2. 黑名单漏网:skillhub 的白名单很窄(基本只认 .md/.py/.json/.yaml/.txt/.csv),可能有你没见过的扩展名被拒。→ 上传前用 find &lt;pkg&gt; -type f | sort 核对文件清单,只留纯文本。
3. 私有数据藏在 output/:地图/报告类 skill 的 output/ 常含带本地路径/技能名的 HTML,属 P0 隐私泄漏 → 发布前删除或脱敏。

Q2:--learn-dry-run 和 --dry-run 有什么区别?

A:--learn-dry-run 控制经验回流预览(不写 lessons.md);--dry-run 是通用预览标志,配合 --clean-cache 预览缓存删除。两者独立,可组合:

python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; --clean-cache --dry-run  # 预览缓存清理
python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; --learn --learn-dry-run  # 预览经验回流

Q3:JSON 模式怎么用?输出里有什么?

A:--json 输出一个完整 JSON 对象,包含 summary(P0/P1/P2 计数)、pass(bool)、issues 数组(每条带 level/dimension/message/file/fix_hint)。配合 --learn 时还多一个 experience_loopback 字段。批量审计时顶层多 batch: true 和 skills 数组。

python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; --json | python -m json.tool
python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; --json &gt; audit_result.json

Q4:审计器扫到很多 P1 私有耦合,但我那些 Ob_/Work_skill_ 引用是故意的(文档说明),怎么办?

A:审计器对正文提及和真实文件引用做了区分——正文提及降为 P2(复核确认即可),真实文件引用才判 P1。如果引用确实需要保留(如伴侣技能协作),在协作表中标注"可选安装,缺失不影响核心功能"即可。如果是文档示例中的私有名,全局替换为 my- / my-skill- 前缀再发布。

Q5:--verbose 输出太多,只想看 P0 怎么办?

A:用 --json 然后 grep 过滤:

python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; --json | python -c &quot;
import sys,json; d=json.load(sys.stdin)
for i in d[&#x27;issues&#x27;]:
    if i[&#x27;level&#x27;]==&#x27;P0&#x27;: print(f\&quot;[{i[&#x27;level&#x27;]}] {i[&#x27;message&#x27;][:80]}\&quot;)&quot;

发布前必做

Q6:发布前一定要跑哪些步骤?按什么顺序?

A:推荐顺序(从粗到细):
1. python scripts/audit_skill_publish.py --skill-dir &lt;path&gt; → 看 P0 数量
2. --clean-cache --dry-run → 确认要清的缓存,再 --clean-cache 实际清
3. 手工:全局替换私有名(Ob_* → my-)、清空 issue-pool、删第三方品牌素材
4. --verbose 重跑确认 P0=0 / P1=0
5. 跑"阶段六:发布前最终安检 7 步"(命令模板见 lessons.md 第八节)
6. --learn --learn-dry-run 预览要追加的经验 → --learn 实际追加

Q7:issue-pool.json 有私人问题怎么办?

A:保留文件但清空内容为模板:

import json
with open(&#x27;issue-pool.json&#x27;, &#x27;w&#x27;) as f:
    json.dump({&quot;issues&quot;: []}, f, indent=2)

审计器会自动检测 issues 数组长度,非空即报 P1。

Q8:skillhub 上传后用户反馈脚本报错,怎么排查?

A:常见三类:
1. 路径问题:检查脚本是否用了 pathlib / expanduser(&quot;~&quot;),而非硬编码 C:\Users\JackW\...
2. 依赖缺失:用户没有你本机装的第三方库 → 在协作表标注前置要求,或改写为标准库实现
3. 静默吞异常:查审计报告维度 9(报错健壮性)— 有 except: pass 的地方就是用户"猜谜"的根源 → 改为打印清晰错误信息

Q9:一次发布多个技能怎么批量审计?

A:

# 逗号分隔
python scripts/audit_skill_publish.py --skills-root ~/.workbuddy/skills --name skill_a,skill_b,skill_c

# JSON batch 输出
python scripts/audit_skill_publish.py --skills-root ~/.workbuddy/skills --name skill_a,skill_b --json

JSON batch 模式返回 {&quot;batch&quot;: true, &quot;skills&quot;: [...], &quot;overall_pass&quot;: bool}。


环境与工具链

Q10:Windows 上用 Bash 删 __pycache__ 为什么删不掉?

A:WorkBuddy 的 Bash 沙箱会把 /c/Users/... 错转 \c\Users\... 导致 rm -rf 静默失败(exit=0 但没删)。最稳用 Python:

import shutil, glob
for d in glob.glob(r&#x27;&lt;skill-dir&gt;\**\__pycache__&#x27;, recursive=True):
    shutil.rmtree(d, ignore_errors=True)

或直接用审计器的 --clean-cache(内部就是 shutil.rmtree,不受沙箱拦截)。

Q11:PYTHONDONTWRITEBYTECODE=1 设好了,怎么验证生效了?

A:

python -c &quot;import os; print(os.environ.get(&#x27;PYTHONDONTWRITEBYTECODE&#x27;))&quot;  # 应输出 &#x27;1&#x27;

注意:已运行的 WorkBuddy 进程不感知新变量,设好后需重启 WorkBuddy。设好变量后,之前被加载过的 skill 目录仍有历史 .pyc 残留,用 --clean-cache 清一次即可,之后不会再生。

Q12:这个技能和 Workbuddy_skill_upgrade 到底怎么配合?

A:
| 步骤 | 用哪个 | 做什么 |
|------|--------|--------|
| 1. 发布就绪整理 | skill-publish-audit | 清缓存/脱敏/去耦合/自包含 → 能发了 |
| 2. 质量问题精修 | Workbuddy_skill_upgrade | 8 维质量评分 + 自动修复 → 发得好 |
| 3. 发布前最后确认 | skill-publish-audit | 跑一次 --verbose 确认 P0=0 |


经验回流

Q13:--learn 追加的经验会不会让 lessons.md 越来越臃肿?

A:有 SHA256 去重机制——同章节+同模式的新经验会被自动跳过([SKIP])。建议定期(每 5~10 次发布)人工审查"第九节:自动收录条目",把高价值条目合并到上方对应章节(一~八节),然后清理自动条目区。

Q14:经验回流建议我"加入 BINARY_EXTENSIONS",要怎么操作?

A:打开 scripts/audit_skill_publish.py,找到 BINARY_EXTENSIONS 或 REJECTED_EXTENSIONS 集合,添加新扩展名。例如发现 .xyz 被拒:

REJECTED_EXTENSIONS = {&quot;.tsv&quot;, &quot;.xyz&quot;}

改完后跑一次自测确认语法正确:python -m py_compile scripts/audit_skill_publish.py


真实案例

Q15:能不能给一个完整的、真实跑通过的发布示例?

A:可以——本机已经发布上架的 Workbuddy_skill_upgrade(大家习惯叫它"skill check" / 技能巡检) 就是直接用本技能审出来、修干净、再发到 skillhub 的。完整链路如下,可作为你下次发布的模板:

① 待审对象
- 包结构:scripts/(多个 .py:audit_engine / eco_optimizer / dashboard_blocks / profile_guide / auto_repair / upgrade_advisor / init-pool / dashboard 等)+ references/(FAQ.md、示例 json、模板等)+ state/(运行时数据)

② 首次审计暴露的问题
| 级别 | 问题 | 对应维度 / 来源 |
|------|------|------|
| P0 | scripts/__pycache__/*.pyc 残留 | 二进制残留(skillhub 拒二进制) |
| P0 | state/results.tsv | skillhub 不允许 .tsv |
| P0 | state/repair_backups/*.bak_20260728 备份 | 备份不应随包 |
| P1 | Ob_* / Work_skill_* 私有模块名写死在 references/state/ | 私有生态耦合 |
| P1/P2 | except: pass 静默吞异常 | 维度 9 报错健壮性 |
| P2 | eco_optimizer.py 缩进 SyntaxError(隐藏 bug) | 改完才被 py_compile 发现 |

③ 按本技能工作流处理
- 阶段三:用 Python shutil.rmtree 清 __pycache__/;持久化 PYTHONDONTWRITEBYTECODE=1 根治缓存再生
- 阶段三:删 state/results.tsv、state/repair_backups/;私有名全局替换为 my- / my-skill-
- 维度 9:silent except 改为打印 路径 + 行号 + 原因 + 修复命令 到 stderr;reconfigure guard 加 pass # 有意忽略 注释
- 阶段五/七:python -m py_compile scripts/*.py 全量编,修掉 eco_optimizer 缩进错误

④ 最终闸口

python scripts/audit_skill_publish.py --skill-dir &lt;Workbuddy_skill_upgrade&gt;
# =&gt; P0=0 / P1=0 / P2=0  ✅ 可进入发布整理

随后 skillhub publish 上架,陌生用户已可直接安装。

⑤ 这个案例能教什么
- 发布包只留文本是铁律:.pyc / .tsv / .bak 全是上传翻车点
- 缓存会再生,靠环境变量根治,不要指望手动删
- 审计器自己的"跳过逻辑"和"检查逻辑"必须分开,否则 .pyc 会漏检
- 任何改动后 py_compile 全量自测,避免隐藏 SyntaxError

> 本案例已回流进 references/publish-audit-lessons.md(经验池),作为模板复用。


扩展文档指引 ★

> 以下文件按需读取,不在加载 SKILL.md 时自动读取。

文档 何时读取 文件路径
9 维详细检查项 + grep 模式 执行体检需要具体打分项/扫描词时 references/publish-audit-checklist.md
skillhub 发布元数据模板 生成发布资料时 references/publish-metadata-template.md
发布审计经验池(避坑手册) 排查 skillhub 上传被拒 / 缓存再生 / 审计器回归教训 references/publish-audit-lessons.md

更新日志

v1.6.1(2026-08-02)

  • FAQ 新增「真实案例」小节 + Q15:以本机已上架的 Workbuddy_skill_upgrade(即"skill check")为完整示例,演示用本技能审计→修干净→发 skillhub 的全链路,作为可复用模板

v1.6.0(2026-08-02)

  • 新增 fix_hint 系统:每条审计问题自动映射可操作修复建议(get_fix_hint 函数),JSON 输出含 fix_hint 字段,--verbose 模式显示 [FIX] 行
  • 新增 scripts_darwin/ 深度扫描(_scan_darwin_dir):检查 open/pbcopy/osascript 等 macOS 专属命令 + 硬编码 /Users/ 路径
  • 新增 --dry-run 统一预览标志:配合 --clean-cache 预览将删除的文件;配合 --learn 优先用 --learn-dry-run
  • 新增 --verbose / -v:显示扫描开始提示 + 每条问题的修复建议
  • 批量审计:--name 支持逗号分隔多个技能名(--name skill_a,skill_b),JSON 模式返回 batch 汇总
  • 大文件安全:>1MB 文本文件截断扫描并在问题清单中警告(read_text_safe 函数)
  • AST 性能优化:_check_robustness 先用字符串 json.load 预筛选再 ast.parse,避免无谓解析
  • --clean-cache 增强:新增 dry_run 参数支持预览模式;函数签名变为 clean_cache(skill_dir, dry_run=False)

v1.5.0(2026-08-02)

  • 新增「阶段七:经验回流」:每次审计后自动提取新发现模式(P0 全部 / P1 新模式 / P2 反模式),SHA256 去重后追加到 publish-audit-lessons.md,形成自迭代闭环
  • 新增 CLI 标志:--learn(启用经验回流)、--learn-dry-run(预览模式)、--json(JSON 输出,--learn --json 结果含 .experience_loopback 字段)
  • 效率优化:合并 3 次 rglob 目录遍历为单次统一遍历,大目录扫描速度提升 ~3x
  • 修复:Windows 终端 emoji 打印导致 UnicodeEncodeError 的问题(全部改为 ASCII 标记)
  • Python 审计器新增 5 个经验提取引擎函数(extract_lessons / load_existing_fingerprints / format_lesson_markdown / suggest_rule_updates / append_lessons_to_file)

v1.4.0(2026-08-02)

  • 新增「阶段六:发布前最终安检」:清理 + 审计器闸口之后、上传之前跑「7 步自检」(禁用文件/清单/frontmatter/敏感信息/缓存抽检/硬编码路径/文档结构),拦截 90% 上传被拒
  • 固化 Windows 沙箱删除兜底:Bash rm -rf / PowerShell Remove-Item 在 WorkBuddy 沙箱会把 /c/... 错转 \c\... 静默失败;清 __pycache__ 最稳用 Python shutil.rmtree
  • 新增经验:PYTHONDONTWRITEBYTECODE=1 设好后,此前被加载的 skill 目录仍带 .pyc 残留须再清;output/ 含本地技能名的 HTML 属 P0 隐私泄漏须删;运行时 .json 缓存(如 hot_cache.json)建议一并清理
  • 经验池 references/publish-audit-lessons.md 新增第八节「发布前最终安检 7 步」实战模板 + 第四节补 Windows 删除兜底/输出目录/缓存 json 三条

v1.3.3(2026-08-02)

  • 新增经验池文档 references/publish-audit-lessons.md:把多轮真实发布整理(含 .pyc 漏检、.tsv/.bak 黑名单、缓存再生、审计器 4 个回归教训、报错提示铁律、发布前清理清单)系统沉淀为实战避坑手册
  • 修一致性:SKILL.md「发布就绪审查」维度表由 8 维补到 9 维(维度 9 报错健壮性已在 v1.3.0 加入,但表格此前遗漏),并在「扩展文档指引」加入经验池入口

v1.3.2(2026-08-02)

  • 新增 skillhub 黑名单扩展检查:实测 .tsv 被 skillhub 拦截;.bak/.bak_* 为备份文件不应随包发布。二进制/缓存扫描新增 REJECTED_EXTENSIONS 与 REJECTED_SUFFIX_STARTS,命中 → P0。
  • 优化运行时产物判定:RUNTIME_ARTIFACTS 中新增 state/results.tsv(audit_engine.py 运行时输出,且 skillhub 不允许 .tsv)。已确认的运行时产物现在直接跳过,不再报 P2「state/ 引用文件缺失」。

v1.3.1(2026-08-02)

  • 修复二进制扫描漏检 __pycache__ 的 bug:原 _skip() 把 __pycache__/.venv/dist/node_modules 全部跳过,导致 .pyc 文件明明存在,审计结论却显示 P0=0;上传 skillhub 时才被拦截。新增 _skip_for_binary_scan(),二进制/缓存产物扫描只跳过 .git/.workbuddy,其余目录全部检查。
  • 实测:在临时技能目录放入 scripts/__pycache__/audit_engine.cpython-313.pyc,审计器正确报出 [P0] 禁止上传的二进制/缓存文件 与 [P0] 禁止上传的缓存目录 __pycache__/。

v1.3.0(2026-08-02)

  • 新增「报错健壮性」反模式扫描:检测 except: pass / except Exception: pass(静默吞异常,P1/P2)与裸 json.load/json.loads(未被 try 包裹,P2,AST 判定)
  • 修复引用路径中文括号误判:REF_PATTERN 现排除中文括号 (),避免 `references/xxx.json`(说明) 被当成缺失文件(原误报 P0)
  • 收紧 obsidian_vault 模式:仅匹配真实私有 vault 路径段(华为家庭存储/01-助理管理/04-工作日记),不再误伤技能分类关键词(如 taxonomy 里的 obsidian)与通用笔记软件名
  • 新增非包目录跳过:扫描时跳过 .workbuddy/.git/node_modules/__pycache__/.venv/dist,只盯真正的发布包内容(项目记忆等不再被误报)

v1.2.0(2026-07-30)

  • 新增「⚠️ pyc 再生根因与根治」独立节:揭示发布翻车头号原因——WorkBuddy 加载 skill 时 CPython 就地重生 __pycache__/*.pyc,光清不够
  • 给出永久根治方案:持久化 PYTHONDONTWRITEBYTECODE=1(Windows 走 HKCU\Environment / winreg,macOS·Linux 走 shell profile),新进程继承后不再生成缓存
  • 内置检查器新增 P2 预防项:未持久化该变量时主动提醒"清完可能被重新污染"
  • 内置检查器新增 --clean-cache 一键清理缓存产物(仅删 __pycache__/ 与 *.pyc,不碰源码/数据)

v1.1.0(2026-07-29)

  • 新增二进制/缓存产物检测(__pycache__/, *.pyc, *.pyo, *.pyd, *.so, *.dylib, *.pkl, .DS_Store, Thumbs.db),命中即 P0
  • 修复 skillhub 上传常见翻车:Python 缓存文件(含 *.cpython-311.pyc)被跳过的问题

v1.0.0(2026-07-22)

  • 从一次真实发布整理(Workbuddy_skill_upgrade)沉淀为可复用技能
  • 8 维发布就绪审查体系 + 5 阶段标准工作流
  • 内置 audit_skill_publish.py 自动扫描缺失文件 / 私有耦合 / 个人品牌风险
  • 配套检查清单与发布元数据模板

常见问题

5 问
答案由本站依据条目字段整理
skill.发布怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_7ba94f9e/skill-publish-audit。安装方式为未标注。装完刷新技能列表或重开客户端。

skill.发布支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

skill.发布权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

skill.发布收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

skill.发布用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。