Skip to content

本地源码安装

本页适合贡献者、维护者或需要验证未发布改动的团队。普通使用者优先阅读 安装指南,直接安装 npm 发布包。

本地源码安装的核心目标是验证“当前源码能否被打包成真实 CLI,再投影到目标项目的宿主 runtime”。Claude Code 与 Codex 是主要支持面;Cursor、Kiro、Qoder、OpenCode 需要按当前 source catalog 显式 opt-in,并保留各自 preview / degraded 边界。不要把源码仓库直接当作宿主插件目录,也不要手改 generated runtime copies。

适用场景

场景是否适合
验证 skills/(含 skill-local references/agents)、templates/ 或 CLI 改动适合
在发布前跑一次完整 install / init / doctor 链路适合
普通项目第一次接入 spec-first不需要,直接用 npm 发布包
临时修复某个目标项目里的 .claude/.agents/skills/不适合,应从 source 重新 init

前置要求

要求说明
Node.js >=20与当前 package.jsonengines.node 保持一致
npm >=8 / npx用于 npm pack、全局安装 tarball 和 provider warmup
Git用于仓库识别、变更边界和 workflow evidence
至少一个目标宿主Claude Code、Codex,或显式 opt-in 的 Cursor、Kiro、Qoder、OpenCode

打包并安装本地 tarball

spec-first 源码仓库中执行:

bash
git clone https://github.com/sunrain520/spec-first.git
cd spec-first
npm pack
npm install -g ./spec-first-<version>.tgz

<version> 替换为 npm pack 生成的实际文件名,例如 spec-first-1.14.0.tgz

安装后确认 shell 没有继续缓存旧路径:

bash
hash -r
which spec-first
spec-first --version
spec-first doctor

如果 which spec-first 指向旧目录,先打开新 shell,或清理旧的全局安装路径,再重新检查。

初始化目标项目

切换到要使用 spec-first 的目标 Git repo 根目录,再运行 init:

bash
spec-first init

交互式流程会让你选择一个或多个目标宿主;脚本场景可用 -y 配合显式 host flag,例如 spec-first init -y --claude --codex -u <name> --lang zh。只使用默认宿主时也可以运行 spec-first init -y -u <name> --lang zh。Cursor、Kiro、Qoder、OpenCode 属于显式 opt-in preview,不会因为 -y 自动加入默认宿主集。

init 会从已安装的本地 tarball 读取 source assets,并生成项目内 runtime:

Host主要生成物
Claude Code.claude/commands/spec-*.md.claude/skills/.claude/spec-first/workflows/.claude/agents/CLAUDE.md managed block
Codex.agents/skills/.codex/agents/.codex/spec-first/AGENTS.md managed block
Cursor(preview).cursor/skills/.cursor/agents/.cursor/spec-first/、项目级 .cursor/mcp.json;仅证明 generated runtime 投影
Kiro(preview).kiro/skills/.kiro/agents/.kiro/spec-first/、受管 .kiro/settings/;IDE 实机 smoke 仍需单独验证
Qoder(degraded preview).qoder/commands/spec-*.md.qoder/skills/.qoder/agents/.qoder/spec-first/;本机 CLI 能力取决于 Qoder 环境
OpenCode(preview).opencode/commands/spec-*.md.opencode/skills/.opencode/agents/.opencode/spec-first/;宿主 user journey 仍需单独验证

这些目录是 generated runtime assets。源码修复应回到 skills/(含 skill-local references/agents)、templates/src/cli/ 或 docs source,再重新打包和 init

重启宿主并验证入口

init 写入文件后,需要完全重启宿主进程。关闭窗口通常不够,推荐退出应用后重新打开。

进入目标项目的新会话后,先跑 runtime setup:

text
spec-runtime-setup

Codex 兼容别名:

text
spec-runtime-setup

验证目标不是“目录存在”,而是宿主能发现当前入口,并且 doctor / setup 能解释当前 runtime readiness。完整 spec-runtime-setup 会验证 CodeGraph / Graphify baseline;若本次只做子集或 setup 降级,必须明确标注未完成,并仍以 bounded direct source reads、rg、ast-grep、git diff、测试日志和用户证据作为语义事实。

开发循环

修改 spec-first 源码后,重新执行:

bash
npm run typecheck
npm run test:unit
npm run build
npm pack
npm install -g ./spec-first-<version>.tgz

然后回到目标项目重新:

bash
spec-first doctor
spec-first init

只验证一个宿主时,在交互式 init 中只选择对应宿主;脚本场景可追加 --claude--codex--cursor--kiro--qoder--opencode。影响 MCP/helper/provider setup 的改动还需要在宿主内重新运行 spec-runtime-setup

常见问题

症状处理
spec-first --version 还是旧版本新开 shell,运行 hash -r,再检查 which spec-first
宿主看不到新 workflow确认目标项目重新跑过 init,并完全重启当前宿主
修改 runtime copy 后又被覆盖这是预期行为;runtime copy 不是 source-of-truth
provider evidence 不 ready先跑宿主内 spec-runtime-setup,确认是否显式启用 provider pack;未启用时按 bounded direct reads 降级
本地安装后测试失败回到源码仓库跑最窄失败测试,修 source 后重新 pack/install

源码校准

本页对齐当前 spec-first source:

  • package.json:Node requirement、测试脚本、npm pack --dry-run 构建口径。
  • src/cli/commands/init.js:supported-host runtime projection 行为。
  • src/cli/adapters/*.js:宿主 runtime 目录与 preview 边界。
  • docs/05-用户手册/06-本地源码安装.md:本地安装流程基线。

下一步

  • 安装指南:查看发布包安装和平台注意事项
  • CLI Reference:查看 doctorinitcleantaskssession 命令
  • Provider Pack:理解 CodeGraph / Graphify readiness 与证据边界