feat: add install-codebuddy for CodeBuddy Code CLI - #86
Conversation
…CLI(~/.codebuddy/skills/ + hooks) 提交人: 黄俊 评审人: 影响范围: scripts/install-codebuddy.mjs(新增)、scripts/lib/cmd-install-codebuddy.mjs(新增)、scripts/spec-superflow.mjs(注册 install-codebuddy 命令 + help)、INSTALL.md(新增 CodeBuddy Code CLI 章节)
|
感谢贡献 CodeBuddy 安装器,整体方向是对的:skills、runtime、commands 的部署流程已经跑通,CI 也保持绿色,基础实现质量不错。 当前建议先补几处兼容性问题,再合并:
推荐至少覆盖:首次安装、重复安装、已有用户 Hook、保留其它 skill、--local、--dry-run,以及卸载安全性。 这些问题主要集中在 CodeBuddy 配置约定和边界场景,不影响整体设计方向。修复后直接 push 到当前分支即可自动更新 PR,期待下一版! |
MageByte-Zero
left a comment
There was a problem hiding this comment.
建议暂缓合并。当前安装器已能复制 runtime、skills、rules 与 commands,但仍未可靠完成“可用且安全地部署到 CodeBuddy Code CLI”的目标。
合并前请修复
-
--local recovery commands 必须使用已部署 runtime(P1)
copyValidatedCommands()当前原样复制commands/ssf/*.md,导致/ssf:resume、/ssf:save、/ssf:switch仍运行固定版本的npx --package spec-superflow@0.12.1,而非<config-dir>/spec-superflow/scripts/spec-superflow.mjs。请在复制 command adapter 时同时重写命令与allowed-tools,并新增 --local 回归测试。 -
按 CodeBuddy 的真实配置契约启用 SessionStart(P1)
当前写入~/.codebuddy/hooks/hooks.json,且hooks/session-start在该环境输出顶层additionalContext。请依据 CodeBuddy 官方配置方式写入/启用(例如 settings.json 或完整插件流程),并确保输出符合其要求的hookSpecificOutput格式。请用真实 CLI 或可复现的契约测试验证“重启后自动加载”。 -
卸载不得删除用户所有 hooks(P1)
INSTALL.md目前建议删除整个~/.codebuddy/hooks/hooks.json,这与“保留非 spec-superflow hooks”的安装承诺冲突。请提供精确移除 spec-superflow 条目的卸载流程/命令,并覆盖已有用户 Hook 的场景。 -
限制全局 phase-guard 的影响范围(P2)
用户级rules/phase-guard.md写入后会要求所有项目从 workflow-start 开始,与普通任务直接执行的预期冲突。请增加项目范围限制或显式 opt-in,并补充相应说明与测试。 -
补齐测试、CI 和发布文档(P1)
新增安装器需要覆盖:首次/重复安装、保留其他 skill 与 hook、--local command 重写、--dry-run 零写入、异常配置、卸载安全性。CI 的 platform-install smoke 也应纳入 CodeBuddy。同步 README、docs/README_en.md、docs/platform-matrix.md、CHANGELOG.md 和 release checklist。
我已在隔离目录复现:安装会复制 9 个 skills 和 runtime,但 --local 安装后的三个 command adapter 仍使用固定 npx 版本。现有 CI 全绿,但尚未覆盖 CodeBuddy installer,因此不足以作为合并依据。
…mands 重写为已部署 runtime;SessionStart hook 写入 settings.json 并输出 hookSpecificOutput;新增 ssf uninstall-codebuddy 精确卸载;phase-guard 加 alwaysApply:false 限制作用域;补齐测试/CI/文档 提交人: 黄俊 评审人: 影响范围: scripts/lib/cmd-install-codebuddy.mjs, scripts/lib/cmd-uninstall-codebuddy.mjs(新), scripts/spec-superflow.mjs, hooks/session-start, tests/lib/cmd-install-codebuddy.test.mjs(新), INSTALL.md, README.md, docs/platform-matrix.md, docs/release-checklist.md, CHANGELOG.md, .github/workflows/ci.yml
修复说明(针对评审意见)已按 MageByte-Zero 的评审意见修复以下问题,并 push 到本分支(commit 7c22560): P1-① --local recovery commands 使用已部署 runtime
P1-② 按 CodeBuddy 配置契约启用 SessionStart
P1-③ 卸载不删用户 hooks新增 P2-④ phase-guard 作用域限制
P1-⑤ 测试/CI/文档
端到端验证
workbuddy 的 command adapter 仍用 npx(未在本 PR scope,如需同步修复可单独处理)。 |
….0 发布后的临时状态),加 CodeBuddy 未发布变更后改为只确保 MageByte-Zero#64 修复仍在 v0.11.0 record,符合 Keep a Changelog 惯例 提交人: 黄俊 评审人: 影响范围: tests/lib/closing-terminal-semantics.test.mjs
补充:CI Build & Test 失败已修复(commit 6a1c920)之前 Build & Test (22) 失败在 根因:该测试行 196 断言 修复:更新断言为只确保 本地验证(40/40 通过)
CI 整体
CI 现在应一把绿。 |
MageByte-Zero
left a comment
There was a problem hiding this comment.
复核了最新提交(1434ac2):此前阻塞项中的 --local runtime 重写、settings.json SessionStart、hookSpecificOutput、phase-guard 作用域、专项测试与 9 平台 CI 均已修复;Node 20/22 CI 也已全绿。
不过仍有一个数据安全阻塞项,暂不能批准:uninstallCodeBuddy() 会递归删除整个共享目录 ~/.codebuddy/commands/ssf(cmd-uninstall-codebuddy.mjs 第 129–133 行),而不是只删除本安装器创建的 resume.md、save.md、switch.md。
我已在隔离目录复现:先安装,再在 commands/ssf/custom.md 放入用户自建 command,运行 ssf uninstall-codebuddy 后该文件被删除。共享命名空间中的用户数据不应被卸载命令删除。
请改为仅删除三个受管 command 文件(或用安装清单精确识别);仅当目录为空时才移除目录,并新增“保留 commands/ssf/custom.md”的回归测试。另请同步 docs/README_en.md 与 README 的平台/命令表,INSTALL 的部署树也不应声称 runtime 下含 commands/ssf,实际路径在共享 ~/.codebuddy/commands/ssf。
…sume/save/switch.md 三个受管文件,仅当目录为空时才移除 commands/ssf 目录,保留用户自建 command;同步 README/docs/README_en.md 平台与命令表加 CodeBuddy;修正 INSTALL 部署树(commands/ssf 在共享目录非 runtime 下);新增 3 个测试(skills npx 重写、custom.md 保留、9 skill 全删) 提交人: 黄俊 评审人: 影响范围: scripts/lib/cmd-uninstall-codebuddy.mjs, tests/lib/cmd-install-codebuddy.test.mjs, INSTALL.md, README.md, docs/README_en.md
修复:uninstall 数据安全阻塞项(commit eff4637)MageByte-Zero 指出 1. 精确删除 command 文件(cmd-uninstall-codebuddy.mjs)改为只删除 2. 文档同步
3. 新增测试
验证
跨平台: |
|
@ZiyiXingYao 合并前还需修复一个 P1 数据安全问题: 我已复现:安装后新增 请调整为:
另外请同步 |
MageByte-Zero
left a comment
There was a problem hiding this comment.
已复核最新提交 36faa92,批准合并。
此前阻塞的卸载数据安全问题已修复:卸载仅删除受管的 resume.md、save.md、switch.md,并保留用户的 commands/ssf/custom.md;相应回归测试已加入。README、docs/README_en.md 与 INSTALL 部署路径也已同步。
验证通过:隔离副本 npm run build、完整 npm test、以及 CodeBuddy 专项 16/16 测试;GitHub Node 20/22 CI 与 9 平台 installer smoke 均为绿色。
非阻塞后续建议:目录是否为空的判断不要忽略 dotfile,避免仅含 .gitkeep 等隐藏用户文件时被删除。
修改内容
新增
install-codebuddy安装脚本,支持将 spec-superflow 部署到 CodeBuddy Code CLI(~/.codebuddy/skills/ + hooks)。新增文件
scripts/install-codebuddy.mjs— 独立入口脚本scripts/lib/cmd-install-codebuddy.mjs— 安装命令模块修改文件
scripts/spec-superflow.mjs— 注册install-codebuddy命令、help 描述、使用示例INSTALL.md— 新增## CodeBuddy Code CLI章节(安装/升级/卸载/验证/部署结构)功能特点
~/.codebuddy/skills/,不覆盖其他 skill(如project-init)~/.codebuddy/spec-superflow/~/.codebuddy/rules/phase-guard.md~/.codebuddy/hooks/hooks.json~/.codebuddy/commands/ssf/--local、--tag、--config-dir、--dry-run参数