Skip to content

Releases: rtwsvj/skill-switch

v0.9.0

Choose a tag to compare

@rtwsvj rtwsvj released this 04 Jul 13:27
f25db1f

安装 / Install

macOS(Apple Silicon)桌面 App:下载下方 skill-switch_0.9.0_aarch64.dmg(29M,Developer ID 签名 + Apple 公证),拖进「应用程序」即可。

  • SHA-256: d415f3b1346de71c57b1e537e3da961c9cc9d19d375f743af7bc15e1adc7c0fd

CLI:npx @rtwsvj/skill-switch audit


[0.9.0] - 2026-07-01

自 v0.6.0(npm 上最后一个已发布版本)以来累积的所有内容一次发布:含原 0.7 / 0.8 批次 + 第三波(RE2/shadcn/bun)+ 第四波「集众家之所长」+ SkillsMP 源 + GUI 各屏 shadcn 迁移。

本轮:11 路并行的「开源对标」实现(见 docs/oss-comparison.md)。第二波再上 5 项获批新依赖(下方「质量&GUI 增强」)。第三波全部落地:RE2 线性正则引擎、GUI shadcn 重设计基建、bun compile 并列打包路径。第四波「集众家之所长」(见 docs/best-of-breed-plan.md):安全深度(二进制魔数伪装 / taint 数据流 / 跨-skill 协同 / OWASP Agentic+ATLAS 映射)+ apm.yml 互操作 + GUI Markdown 渲染 + registry 注册表只读接入(见 docs/registry-integration-plan.md);全部自研重写、零复制竞品代码。

新增 Added

  • 二进制魔数伪装检测(第四波·安全深度):masquerade/binary-magic-bytes(critical)+ masquerade/binary-lossy-head(high)——识别声明为文本却以 PE/ELF/Mach-O/PDF/ZIP/JAR/gzip/7z/RAR/Wasm 等可执行/归档魔数开头的伪装文件;只看文件起始,正文提及魔数名不误报。魔数表从公开格式规范自写。
  • taint 数据流多步攻击链(第四波·安全深度):exfiltration/taint-source-to-sink(high)——单文件内识别"读敏感源(环境变量/凭据文件/历史/浏览器·钱包数据)→ 近距离外发(curl 上传/nc//dev/tcp/外渗端点/base64 管道/scp 等)"的跨行数据外渗链;仅命令上下文计数,散文零误报。
  • 跨-skill 协同攻击检测(第四波·安全深度):analyzeCrossSkillCollusion——识别多个 skill 经共享 dropzone 路径 / 共享外部端点(high)或全局配置蔓延(medium)联合构成的凭据外泄与提权链;需具体共享线索、能力横跨两个 skill 才报,重精确低误报;接入 audit home 全格式输出与退出码,补齐已有跨-MCP-server 检测。
  • OWASP Agentic Top10 + MITRE ATLAS 映射(第四波·安全深度):规则类目新增 MITRE ATLAS 技法(atlas:AML.Txxxx)与 OWASP Agentic Top10(owasp-agentic:Txx)标签,additive 并入 SARIF rule properties.tags,与既有 OWASP LLM 标签并存;不影响 severity 或阻断逻辑。
  • apm-import <apm.yml> — 与 microsoft/apm 互操作(第四波,只读):默认 dry-run 预览将纳管的 skill,--apply 才写入声明;只挑 skill 类原语映射到 skill-switch 治理模型,明确跳过 prompts/agents/hooks 等非 skill 原语。绝不执行 apm.yml 中的命令/脚本、绝不联网,纯本地文件解析。定位:互操作而非硬刚,做 APM 生态里"最强安全+治理"那一环。
  • GUI 技能描述 Markdown 安全渲染(第四波):技能详情的描述用 react-markdown + rehype-sanitize(默认 schema、禁 raw HTML、外链 noopener)渲染为富文本,杜绝描述内 XSS/钓鱼链接;样式走设计系统 token、明暗自适应。
  • registry 命令 — 注册表只读接入(第四波·C 线):从官方 MCP Registry(registry.modelcontextprotocol.io)、GitHub marketplace.json 市场、SkillsMP(可选)只读搜索(registry search)并经安全审计后安装(registry install)skill / MCP server。纯 opt-in(仅运行该命令才联网)、仅 HTTPS、零遥测(credentials:'omit'、不带指纹)、零新依赖(Node 内置 fetch)、限时限大小;安装复用既有「解析→克隆→审计→拦截」管线,DANGER 默认拦截需 --force 留痕放行,绝不执行远端内容。SkillsMP 是唯一需鉴权的源:严格 opt-in + 用户自带 SKILLSMP_TOKEN 环境变量,token 只发往 skillsmp.com、只进请求头(不进 URL/日志)、skill-switch 绝不存储;未设 token 则该源自动跳过。不抓无公开 API 的聚合站 HTML。

变更 Changed

  • GUI 各屏迁移到 shadcn 设计系统:继 W4 基建后,「安全」(审计 + 配置安全)、「历史/撤销」、「使用」统计、「安装维护 + 一键装」各屏全部从手写 CSS 迁到 shadcn(Card/Table/Badge/Button/Input + 设计 token),卡片化、语义色 Badge(good/warn/danger)、明暗主题自适应,与总览统一;数据流 / props / 安全文案 / 无障碍语义(toast a11y)一律不变,四语言 i18n 齐全。
  • 测试稳定性:全局 testTimeout 提到 30s——大量 CLI 集成测试每例 spawn tsx 冷启动子进程,满负载并发下曾偶发 5s 超时误红(隔离重跑皆过);w3-re2 病态输入墙钟预算 50ms→500ms(吸收 GC/JIT 抖动,真 ReDoS 秒级仍判失败)。
  • 审计引擎 → RE2 线性正则(第三波):compileMatcher 用 RE2(线性时间、无回溯)匹配审计规则,从根上消除 ReDoS;prompt-injection/zero-width-chars 去 lookbehind/lookahead、base64-payload rm-rf 去 lookahead(均附 test() 语义等价证明,findings 不变);4 条 {0,2048} 超量词规则回退原生 RegExp + 行截断保护;编译结果 WeakMap 缓存。corpus/评分/verdict 行为零改变。
  • GUI 重设计基建(第三波):引入 shadcn/ui + Tailwind 设计系统(Button/Card/Badge/Tabs/Dialog/Input/Select/Tooltip/Skeleton/Table)+ 明暗主题(跟随系统、localStorage 持久化、Header 一键切换)+ Overview 卡片化(指标卡 + lucide 图标 + 骨架占位);CSS 变量走 shadcn 标准 token + 语义色 --good/--warn/--danger;为后续各屏迁移提供设计系统契约。四语言 i18n 100%(新增主题切换/对话框关闭文案)。
  • bun compile 并列打包路径(第三波,实验性):新增 gui/scripts/bundle-cli-bun.mjs(pnpm bundle:cli:bun),用 bun build --compile 产出单文件 CLI(产物命名/路径与现有 SEA 路径一致),wrapper 入口绕过 node:sea 禁区;实测冷启动 ~71ms vs tsx ~765ms(约 10x)。bun 为 devDependency(不随应用发),测试用 it.skipIf(!bunAvailable) 守卫(无 bun 环境不红);现有 bundle:cli(SEA)/src/**/Tauri sidecar 完全保留。
  • 质量门禁(第二波):recheck ReDoS 静态守卫——遍历全部审计规则正则,写规则时即拦下会回溯灾难的 evil 正则(测试门禁,无需 eslint);stryker 变异测试配置(pnpm mutate,收敛到 audit engine/score,衡量测试有效性);i18next-cli GUI 漏译检测进 CI(pnpm --dir gui i18n:check,漏译即失败,当前四语言 100%)。
  • GUI 数据层 → TanStack Query(第二波):App 手写的 sections 加载状态机替换为 @tanstack/react-query(staleTime 5min / retry 1 / 不随窗口聚焦重取,贴合 Tauri 本地 IPC);写操作后精细 invalidateQueries(toggle/remove/install/sync 后不重跑 stats),取代全量刷新;DashboardShell 对外接口不变。
  • GUI 自动更新(第二波):接入 tauri-plugin-updater + tauri-plugin-process,UpdateChecker 横幅组件(有更新提示版本+一键更新+重启,非 Tauri 运行时优雅 no-op),四语言 update.* 文案;更新源指向 GitHub Releases 的 latest.json,发布前需 tauri signer generate 填真实 pubkey(已占位+注释)。
  • 审计引擎/SARIF 增强:SARIF result 加 partialFingerprints(GitHub code-scanning 跨 run 去重)+ suppression.status="accepted" + rule helpUri;Unicode 同形字表 18 → 140+(Cyrillic 全集 / 希腊 / 全角 / Latin lookalike);Markdown 围栏代码块内的 finding 加 inCodeBlock 标注(additive,不改 severity);SARIF rule 加 OWASP LLM Top10 标签。
  • 审计输出 & CI 适配:audit --format codeclimate(GitLab Code Quality)、--format rdjson(reviewdog PR 内联)、--diff-from <commit>(只报 PR 改动文件的 finding)、.skill-switch-ignore(.gitignore 风格忽略);ci --format codeclimate|rdjson 生成对应工作流。
  • MCP/配置安全:mcp/tool-name-collision 跨文件同名 server 影子化检测(2025 高危向量);密钥检测加 Shannon 熵 + 示例白名单降误报;Claude Desktop(~/Library/Application Support/Claude/… 等)路径纳入深扫。
  • 供应链 & 漂移:drift --osv(opt-in,POST OSV.dev querybatch 查 skill 依赖的已知 CVE,默认关、仅 flag 时联网)、审批 --criteria safe-to-run|safe-to-deploy 分级、drift --upstream-summary(本地 git log 拼上游新增 commit 摘要)。
  • 套餐 & 用法挖掘:共现分析加 lift/confidence 关联规则指标(过滤"高频 skill 与谁都共现"的假关联);transcript adapter 架构 + 内置 Codex CLI 解析器(~/.codex/sessions/);内置套餐改 readdir 自动发现。
  • MCP server 深化:协议升级 2025-06-18;5 个只读工具加 readOnlyHint 注解(客户端可免确认弹窗);实现 resources(规则知识库 / 最近审计报告)、prompts(3 条审计模板)、audit 工具 outputSchema;新增 server.json + package.json mcpName(MCP Registry 上架)。
  • completion 命令 + CLI 分发:skill-switch completion [bash|zsh|fish] 输出 shell 自动补全;--help 用 Commander 原生 helpGroup 分组;新增 release.yml(tauri-action 跨平台构建 DMG/AppImage/deb/MSI)+ Homebrew Formula + Scoop manifest + docs/distribution.md
  • GUI 无障碍加固:撤销 toast 升为有名 landmark + 关闭后焦点恢复;技能列表行 aria-current + 键盘 Enter/Space 选中;写操作按钮带技能名 aria-label
  • 质量门禁:CI 加 coverage 阈值门禁(保守下限,防倒退);audit/doctor/add 的 golden snapshot 扩面;零依赖安全自检(查自身 shell 注入/path traversal 等)。
  • 文档:docs/oss-comparison.md(11 领域 × 开源对标的产品路线图,带来源 URL);docs/auditing-ai-agent-skills.md 加「静态装前审计 ≠ 运行时防护」诚实定位节(指向 garak/mcp-scan 等互补工具)。
  • GUI i18n 修复:数据层超时/取消/JSON 错误改结构化 LocalizedCommandError(英文兜底 + UI 按语言渲染),窗口标题 skill-switch Governanceskill-switch,英文/日/西模式不再泄漏中文。
  • sync --out <file> / sync --plan <file> — plan artifact 持久化(对标 Terraform plan -out):sync --out <file> 把 planSync 结果 + 声明文件 sha256 摘要 + 时间戳序列化写盘;sync --plan <file> 读回后先校验声明 sha256 未变(变了则拒绝并提示重 plan),校验通过再执行——保证"看到的 plan"和"实际执行的 plan"完全一致。现有 sync / sync --dry-run 行为零改变。
  • doctor --fix — 漂移自修复(对标 chezmoi apply):doctor 已产结构化 finding,--fix 按 kind 映射:content-drift → 从声明 source 重铺(copy/symlink);extra-locked → removeLockEntries 清孤儿锁条目;missing/stale-lock → 提示手动跑 sync/install。写操作前自动先快照受影响的 agent 目录。无 --fix 时只报告,行为不变。
  • restore prune — 快照生命周期清理(对标 Nix expire-generations):restore prune --keep-last <N> 保留最近 N 个快照删除其余;--older-than <Nd> 删除 N 天前的快照;两者可组合;--dry-run 只列将删不执行。基于 listSnapshots 的 epochMs 排序,.tar.gz 与 .json sidecar 一并删除。
  • import --apply — 一条命令 bootstrap(对标 chezmoi init --apply):import 后追加 --apply 即直接执行 applySync,快照 + 同步一气呵成;无 --apply 时行为不变,仍只写声明/锁文件并提示手动 sync。

skill-switch v0.7.0 — 让审计在 CI 里留得下来

Choose a tag to compare

@rtwsvj rtwsvj released this 25 Jun 15:22

「让审计在真实 CI 里留得下来」 —— 把已上线的 GitHub Action 从"试一次"变成"团队长期留用"。三件直击安全工具的采用卡点。纯增量,CLI/审计行为与 v0.6.x 一致,1,629 测试

亮点

  • 基线模式 audit --write-baseline / --baseline:把已有仓库的当前 finding 存成基线,之后 CI 只对新增问题 fail——加进存量项目不再被一墙历史报错劝退。指纹不含行号,插入/移动代码不会误判为新增。
  • PR 行内注解 audit --format github:直接输出 GitHub Actions 工作流注解,findings 内联标在 PR diff 对应行上(::error/::warning),无需 security-events: write 权限或 code-scanning 设置。Action 加 format: github 选项。
  • 规则目录 docs/rules.md:列出 audit 可命中的全部 ruleId(80+ 条)按威胁类别分组 + 严重度;同步测试保证不过期。

安装

  • CLI(任意平台):npx @rtwsvj/skill-switch audit
  • GitHub Action:uses: rtwsvj/skill-switch@v0.7.0(详见 docs/github-action.md)
  • macOS 桌面 App:下方 skill-switch_0.7.0_aarch64.dmg,Developer ID 签名 + Apple 公证,双击即开。

完整变更见 CHANGELOG

skill-switch v0.6.1 — npm + GitHub Action

Choose a tag to compare

@rtwsvj rtwsvj released this 25 Jun 01:02

分发与定位版本:CLI 正式登陆公共 npm,新增可复用 GitHub Action,并把项目重新定位为「AI agent skills 与 MCP 配置的安全审计器」。CLI / 审计行为与 v0.6.0 一致,纯新增。

亮点

  • npx @rtwsvj/skill-switch audit —— CLI 已发布到公共 npm,任意项目 / CI 里一行即用,无需安装桌面 App(命令名仍是 skill-switch)。
  • 可复用 GitHub Action(action.yml):setup-node → npx @rtwsvj/skill-switch audit --format sarif → 上传 GitHub code-scanning → 命中阻断级问题即 fail。用法见 docs/github-action.md:
    - uses: rtwsvj/skill-switch@v0.6.1
      with: { path: ., args: --configs }
  • README 重定位(中/英):主打 audit / SARIF / 策略 / 受控修复 的安全差异化。

安装

  • CLI(任意平台):npx @rtwsvj/skill-switch audit
  • macOS 桌面 App(Apple Silicon):下方 skill-switch_0.6.1_aarch64.dmg,已 Developer ID 签名 + Apple 公证,双击即开

完整变更见 CHANGELOG

skill-switch v0.6.0 — 深化审计

Choose a tag to compare

@rtwsvj rtwsvj released this 24 Jun 16:11

v0.6 在 v0.5「团队与 CI 集成」基础上深化审计能力。纯增量,无破坏性变更——无新标志时行为、输出、退出码与既往一致。1555 测试绿。

亮点

  • audit --fix --format json 机器可读修复报告:--fix + --format json 时,JSON 报告新增顶层 guidedFix 字段(每条含 kind/applied/backupPath/diff + 汇总计数),CI 流水线可程序化消费修复建议。--apply 写盘副作用与 human 格式完全一致(备份/幂等不变);无 --fix 时 JSON 逐字节同旧。
  • 静态 MCP 远程凭据暴露检查:audit --configs 再加三项静态检查(零进程/零网络/零依赖)——headers 硬编码密钥(mcp/header-literal-secret)、url 内嵌 user:pass@ 凭据(mcp/url-embedded-credential)、字面密钥 env 传给远程 server(mcp/env-secret-to-remote)。变量引用、Content-Type 等非鉴权头、无 userinfo 的 URL 等近似情形零误报;输出中密钥值一律脱敏。
  • 端到端 CLI 集成测试:以真实子进程驱动 audit,锁定 SARIF / 策略文件 / 引导式修复 / 配置发现 / 静态 MCP 等 v0.5–v0.6 全部审计行为。

安装(macOS · Apple Silicon)

DMG 已用 Developer ID 签名并经 Apple 公证(Team 8QQ823QM99),下载后直接双击打开即可。

详见 CHANGELOG

skill-switch v0.5.0 — 团队与 CI 集成

Choose a tag to compare

@rtwsvj rtwsvj released this 24 Jun 15:10

audit 从单机安全体检升级为可接入团队工作流与 CI 流水线的安全门禁。纯增量:无新标志时行为、输出、退出码与 v0.4 逐字节一致。1479 测试绿。

亮点

  • SARIF 输出 audit --format sarif:SARIF 2.1.0,直接接入 GitHub code-scanning。
  • 项目级策略 .skill-switch-policy.json:failOn 设阻断严重度下限、suppress[] 抑制规则;--policy / --no-policy
  • 受控引导式修复 audit --fix / --fix --apply:dry-run 预览 → 显式落盘(先写 .skill-switch.bak 备份、幂等、真实配置只读)。
  • 更广的配置覆盖 audit --configs:新增 Windsurf、Zed AI(共 6 个 agent)。
  • 静态运行时 MCP 能力审计:明文 http:// 远程传输、autoApprove 自动批准、根/家目录范围参数、--no-sandbox 等危险权限标志——6 项新检查,零进程 / 零网络 / 零依赖。

安装(macOS · Apple Silicon)

DMG 已用 Developer ID 签名并经 Apple 公证(Team 8QQ823QM99),下载后直接双击打开即可。

详见 CHANGELOG

skill-switch v0.4.0 — 安全网 · 秩序 · 命令与深度审计

Choose a tag to compare

@rtwsvj rtwsvj released this 22 Jun 15:20

[0.4.0] — 2026-06-22

自 v0.1.0 以来的全部成果一次发布。三个产品批次:v0.2「安全网」(让普通人也能安全、可回滚地管理技能)+ v0.3「秩序」(跨 agent 一致性与更深的安全)+ v0.4「命令与深度审计」(新命令 + 把审计扩展到混淆载荷与 agent 配置);外加一轮自治维护强化(更多检测精度、数据安全硬化、性能与稳定性、真 bug 修复——详见下方「自治维护强化」分组)。macOS 分发需 Developer ID 签名(见 docs/release/signing.md)。

新增 Added

  • 「历史」页:把每次改动前的自动备份做成时间线,一键还原到任意时间点——误删误改的「后悔药」。
  • 「安全」中心:每个技能的安全评分 + 风险点;并列出「绕过了安全检查」的技能(谁、何时、为什么)。
  • 首次启动引导卡:第一次打开用大白话告诉你三件事——技能页看/停用·删除、安全页看风险、历史页一键还原。
  • 「导入已有技能」:一键把各 AI 工具里已存在、但还没纳入管理的技能收编进来。
  • 健康中心(高级视图):跨 agent 的「声明 × 锁 × 磁盘」一致性可视化,按漂移类型分组、高亮、给出该怎么办。
  • 操作历史:备份记录读成大白话操作日志(「停用『X』前的备份」等)。
  • 隐私页脚:常驻「零遥测 · 本机运行 · 不上传 · 可离线」承诺。
  • (v0.4)init 命令:扫描各工具已装的 skill,一键草拟初始 skills.json(已存在则不覆盖,--force 覆盖、--dry-run 只看草稿)。
  • (v0.4)export / import 命令:把声明 + 锁打包成可携带的 .ssp 档案,跨机迁移你的技能配置(import 不覆盖现有、需 --force,且只写声明、提示你再 sync)。
  • (v0.4)skills.json JSON Schema:发布 docs/schema/ 下的正式 schema,lint 现在会校验声明文件结构并报出具体错误(缺字段 / 类型错 / 未知 mode 等)。
  • (v0.4)lint 规范检查:对 SKILL.md frontmatter 的可选字段(version / tags / triggers)做温和的规范提示。

改进 Changed

  • 所有危险操作先确认,并用大白话说明「这一步会改什么」「能不能撤」(改动前自动备份)。
  • 停用 ≠ 删除:文案与视觉明确区分——停用只是关掉、文件保留、随时再启用;删除才动磁盘(且先备份)。
  • 装东西被拦时讲清「为什么」(列出触发的风险点),确需安装须填写理由(留痕)。
  • 首屏更快:audit/统计改为后台懒加载,不阻塞首屏;各区块有独立「加载中/失败/上次刷新」状态。
  • 可达性:确认弹窗支持 Esc 取消;技能列表为空时给「下一步去哪」的引导。

安全 Security

  • 新增 prompt injection / 隐藏指令 检测(覆盖既有指令、对用户隐瞒、零宽字符、CSS 藏字),对齐业界扫描类目。
  • restore / uninstall 路径穿越加固;skill 命名策略加固(控制字符、Windows 保留名等)。
  • 强制越过安全检查的安装会留痕(可在安全中心查看)。
  • GUI 收紧 CSP,阻断远程内容。
  • (v0.4)识破 base64 编码载荷:base64 -d | sh 形态会解码后再扫,揪出藏在编码里的反弹 shell / 外传。
  • (v0.4)识破 Trojan-Source 伪装:检测用于隐藏指令的双向控制字符(U+202A–202E / U+2066–2069,CVE-2021-42574);对中文/阿拉伯语/希伯来语/emoji 等正常内容不误报。
  • (v0.4)审计扩展到 agent 配置:audit --configs 体检 .claude/settings.json 与 MCP 配置,揪出恶意 hook、过宽权限、明文密钥(默认不开,需显式 --configs)。

修复 Fixed

  • 状态文件解析错误不再被静默当空;关键写入改为原子写(临时文件→rename)。
  • 相对 symlink 正确解析;某个区块加载失败不再让整屏白错误。
  • 修复测试配置漏跑部分 GUI 测试的缺口。

自治维护强化(更多检测 · 数据安全 · 稳定性)

新增检测 Added

  • 识破伪装的安装源:npm/pip install --registry/--index-url 指向可疑的非官方包仓库(明文 HTTP、裸 IP 地址、保留域名 .invalid/.test/.local、粘贴板/短链域名)会被标记;企业内网的 HTTPS 私有仓库不误报
  • 揪出「翻你密钥目录」的 MCP 配置:被配置成可访问 ~/.ssh~/.aws~/.gnupg.netrc~/.config/gh 等凭据路径的 MCP server 会被标记(可能被用来悄悄读取/外传凭据)。
  • audit --configs 体检面更广:除 .claude/ 外,现在还覆盖 Gemini CLI(~/.gemini/settings.json)、Cursor(~/.cursor/mcp.json)、VS Code(~/.vscode/mcp.json)与 home 根的 ~/.mcp.json

改进 Changed

  • doctor 一并显示「配置安全」:日常体检就能看到危险配置发现的摘要,不必另跑 audit --configs;纯提示,不改变 doctor 的退出码(向后兼容)。
  • --version / -V:CLI 现在能报告自身版本号。

修复 Fixed

  • emoji 不再被误判为隐藏指令:含零宽连接符的常见 emoji(🧑‍💻、👨‍👩‍👧‍👦、🏳️‍🌈)与波斯语等文字不再触发「零宽字符」误报;真正用零宽字符把关键词拆开绕过扫描的手法仍会被抓。
  • 删了技能目录也能从快照还原:此前若已手动删除技能目录,restore 会失败;现在能正确重建并还原。
  • 更稳的数据安全(全有或全无):install / sync / restore 遇到损坏的状态文件、损坏快照或缺失目录等异常时,一律在写盘前失败、不留「写了一半」的撕裂状态;破坏性改动前必有可回滚快照。
  • 大目录扫描更快:技能盘点减少每个技能的多余系统调用(约快 23%),同时保持对符号链接共享技能的正确识别。

稳定性 Stability(内部,面向长期可维护)

  • 审计正则全面通过 ReDoS(灾难性回溯)加固验证;新增端到端生命周期集成测试与 GUI 逻辑层测试;测试总数增至 1340+,CI 全绿。

skill-switch v0.1.0 — 首个公开发布

Choose a tag to compare

@rtwsvj rtwsvj released this 20 Jun 03:59

skill-switch v0.1.0 — 首个公开发布

跨 AI 编程工具的技能(skill)治理台:在 Claude Code、Codex、Gemini CLI、Cursor、Copilot 等之间盘点、体检、开关、安装、同步、回滚你装过的 skill。提供桌面 App(GUI)和命令行(CLI)两种用法,能力对等。

亮点

  • 安全网:所有写操作(install / toggle / sync / remove / restore)改动前自动 tar 快照、可一键回滚;「历史」页把每次备份做成时间线,误删误改都能后悔。
  • 装前体检:任何 skill 装进来前先做安全审计,命中反弹 shell、外传敏感文件、prompt injection / 隐藏指令等会被拦;强制越过会留痕。
  • 三方对账:skills.json(声明)× skills.lock.json(锁)× 磁盘,doctor 检出漂移(--ci 不一致即退出 1)。
  • 跨 agent 一致:claude-code / codex / gemini-cli / cursor / copilot 统一治理。
  • 零遥测 · 本机优先:不收集、不上传任何数据,装好后可完全离线使用。
  • 四语界面:简体中文 / English / 日本語 / Español。

安装(macOS,Apple Silicon)

  1. 下载下方 skill-switch_0.1.0_aarch64.dmg
  2. 双击打开,把 skill-switch 拖进「应用程序」。
  3. 已用 Developer ID 签名 + Apple 公证,双击即可打开(不会被 Gatekeeper 拦)。

从源码运行、CLI 用法、一键卸载都在 README 里。

SHA-256(skill-switch_0.1.0_aarch64.dmg):
1c4c4c781d6e9d1bdffcddbf661331b7e0e819a46547c737c1459f60eb6de165