ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Superpowers 跨平台钩子指南:三步让脚本在 Windows 和 Linux 同时跑通

Superpowers 跨平台钩子指南:三步让脚本在 Windows 和 Linux 同时跑通 Superpowers 跨平台钩子指南三步让脚本在 Windows 和 Linux 同时跑通【免费下载链接】superpowersAn agentic skills framework software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers你大概遇到过这种情况自己写了一个.sh钩子脚本在自己的 Mac 上测试没问题交给 Windows 的同事后却完全跑不起来——CMD 不会执行.sh路径格式互相打架环境变量也被直接忽略。Superpowers 用一种包装技巧把这整套跨平台兼容问题解决了让同一套插件在 Windows、macOS、Linux 上表现一致。从换个系统就罢工的痛点说起 先看 Windows 上到底卡在哪几处脚本执行CMD 把.sh当成文本文件经常直接用编辑器打开而不是运行路径格式Windows 用反斜杠Unix 用正斜杠混用即失效环境变量$VAR这种写法在 CMD 里不被识别bash 缺失即使装了 Git BashCMD 运行时它通常也不在 PATH 里四个小问题单独都不难凑在一起就让钩子脚本在 Windows 上彻底跑不动。Superpowers一套跨三系统的技能框架Superpowers 是面向 Claude Code 等 AI 编码工具的技能框架把系统化调试、测试驱动开发、计划与代码评审等方法论打包成一个插件。它的跨平台部分有三个具体、可验证的好处一份脚本双系统识别同一份钩子逻辑文件CMD 和 bash 各读各的路径自动转换包装器用cygpath把 Windows 路径翻成 Unix 形式不用手动转义包装器可复用多个钩子指向同一个包装器把脚本名作为参数传入即可原理一个双语包装脚本谁打开谁读 可以把这个文件想象成一份双语告示。第一行: CMDBLOCK同时是 CMD 脚本的一行普通命令和 bash 的 here-doc 标记从这里开始分叉CMD 视角从第二行开始执行用完整路径找到bash.exe用cygpath转换路径后运行钩子遇到exit /b就停后面的内容一概不读bash 视角这一行开启 here-doc把整块 CMD 内容当引号字符串整个吞掉然后直接执行下方的 Unix 命令整套双系统魔术核心就这几行: CMDBLOCK echo off C:\Program Files\Git\bin\bash.exe -l -c \$(cygpath -u \$CLAUDE_PLUGIN_ROOT\)/hooks/session-start.sh\ exit /b CMDBLOCK下一行就是 Unix 侧的入口直接运行真正的逻辑脚本。对应地文件结构是三个hooks/hooks.json配置指向包装器、hooks/session-start.cmd双语包装器、hooks/session-start.sh实际钩子逻辑。配置里的command只需填包装器的完整路径记得加引号防止路径带空格时被拆断。三步跑通克隆、核对、模拟测试拿到代码执行git clone https://gitcode.com/GitHub_Trending/su/superpowers核对配置打开hooks/hooks.json确认command指向session-start.cmdmatcher覆盖你要的触发事件比如startup|resume|clear|compact模拟钩子环境在 PowerShell 里设置$env:CLAUDE_PLUGIN_ROOT C:\path\to\plugin再执行cmd /c C:\path\to\plugin\hooks\session-start.cmd输出符合预期挂进钩子也没问题顺带两个写法建议优先用纯 bash 内置命令用$(...)代替反引号变量一律写成$VAR尽量不依赖 PATH 里未必存在的外部工具。报错速查表现象 → 原因 → 一句话解法 ️现象原因一句话解决bash is not recognizedCMD 找不到 bash默认只找C:\Program Files\Git\bin\bash.exe把包装器里的路径改成你实际的 bash 安装位置cygpath: command not foundbash 没以登录 shell 模式启动PATH 不全给 bash 调用加上-l标志路径里出现奇怪的\/变量展开成以反斜杠结尾的 Windows 路径后直接拼接用cygpath对整条路径做一次转换终端里能跑当钩子就不行Claude Code 的钩子环境和你终端不一样按上面第 3 步用 PowerShell 模拟验证一句话收尾 去哪看源码这个机制的价值一句话逻辑只写一份两个系统各读包装器里自己那一段。想深入的话先读 docs/windows/polyglot-hooks.md 里的设计说明再看 hooks/run-hook.cmd 这个可直接复用的通用包装器示例。【免费下载链接】superpowersAn agentic skills framework software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表