
Research
/Security News
PolinRider Spreads Through Compromised GitHub Accounts and Packagist
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.
spec-first
Advanced tools
AI Coding Harness for Claude Code, Codex, Kiro, Qoder, Cursor, and OpenCode preview — turns one-off AI coding chats into a repo-backed, verifiable engineering loop for spec-driven development. Scripts prepare facts; LLMs decide; evidence stays in your rep
把 AI coding 会话变成可信、由项目拥有的变更。
spec-first 是面向 Claude Code、Codex、Kiro、Qoder、Cursor、OpenCode、ZCode 与 Pi 的仓库原生 AI Coding Harness。它把想法、需求、计划、代码、审查和知识连接成可检查的工程闭环。
Intent → Spec → Plan → Tasks → Code → Review → Knowledge
AI coding 宿主擅长生成和修改代码,但一次会话结束后,意图、范围、取舍、验证证据和未决风险很容易丢失。spec-first 将这些内容保留在项目边界内,并让不同宿主可以消费同一套 spec-* workflow 入口。
你可以把它理解为三层协作:
| 结果 | 项目中可见的证据 |
|---|---|
| 意图被保存 | docs/plans/ 中的需求或实施计划 |
| 执行范围可控 | plan、可选 task pack、source/runtime 边界 |
| 完成声明有依据 | 真实命令、exit code、日志和 verification summary |
| 经验可以复用 | docs/solutions/ 中带来源和失效条件的知识 |
需要 Node.js >=20.0.0、npm、Git,以及至少一个受支持的 AI coding 宿主。以下命令在目标 Git 仓库根目录执行。
npm install -g spec-first
cd <your-repository>
spec-first quickstart
quickstart 会检查 Node.js、Git 和已安装的宿主 CLI,并进入初始化流程。选择宿主后,重启已选择的宿主,使其发现生成的入口。
需要脚本化或显式指定宿主时:
spec-first doctor
spec-first init --codex -y -u <name> --lang <zh|en>
初始化会在写入前预览受管 runtime 文件;它不会自动 stage 或提交文件。多宿主、非 Git 目录、dry-run 和 preview 宿主用法见完整快速开始指南。
在宿主会话中运行(这些不是 shell 子命令)。首次 workflow 前先准备 runtime;后续在 readiness 或配置变化时重跑:
spec-runtime-setup
随后生成第一个需求产物:
spec-brainstorm "改进 CLI 新用户 onboarding"
这会把模糊想法收敛为可审查的 requirements artifact,通常位于:
docs/plans/YYYY-MM-DD-NNN-<type>-<topic>-plan.md
如果需求已经明确,可直接使用 spec-plan;准备执行时使用 spec-work。如果没有值得持久化的决策,workflow 可以合法地不创建文档;这不表示运行失败。
找不到入口时,运行 spec-first doctor --verbose,并核对 Runtime Capability Catalog 中的宿主限制。
按当前任务进入一项即可,不要求从头依次运行。以下是能力地图,后续步骤由当前任务、验证结果和授权决定。
| 阶段 | 何时使用 | Skill | 主要结果 |
|---|---|---|---|
| 环境准备 | 首次使用、MCP/helper 缺失或配置变化 | spec-runtime-setup | readiness facts 与准备结果 |
| 方向探索 | 比较多个候选方向 | spec-ideate | 排序后的方向记录 |
| 需求定义 | 有想法,但范围和成功标准未定 | spec-brainstorm | requirements-only plan |
| PRD 澄清 | 已有 PRD,需要结合代码澄清 | spec-prd | planning-readiness artifact |
| 文档审查 | 检查需求、计划或 task pack | spec-doc-review | 文档 findings;可跨阶段插入 |
| 实现规划 | 需求确定,但实现方式未定 | spec-plan | implementation-ready plan |
| 任务拆分 | 大型计划需要并行或交接(可选) | spec-write-tasks | 从 plan 派生的 task pack |
| 开发实现 | 执行 plan、brief 或明确工作项 | spec-work | 源码变更与验证证据 |
| 故障诊断 | 报错、失败测试、回归或根因不明 | spec-debug | 根因、修复与回归证据 |
| 代码审查 | 检查 diff、分支或 PR | spec-code-review | 缺陷、风险和验证缺口;默认只读 |
| PR 整改 | 用户明确要求处理 PR review 反馈 | spec-resolve-pr-feedback | 反馈判断与获授权的整改 |
| 知识沉淀 | 已验证解法具有复用价值 | spec-compound | 带来源、适用范围和失效条件的知识 |
| 知识维护 | 已有经验过时、重叠或与源码漂移 | spec-compound-refresh | 刷新、合并或退役 docs/solutions/ 经验 |
| 场景 | Skill | 使用边界 |
|---|---|---|
| 制定产品方向与路线图 | spec-strategy | 创建或更新 STRATEGY.md |
| 判断是否采纳外部技术 | spec-pov | 基于当前项目给出采用判断 |
| 验证尚未确定的交互或产品行为 | spec-prototype | 可运行的临时原型,需人体验,不代表生产实现 |
| 建立项目架构知识与约束 | spec-project-rules | 从源码维护架构知识库 |
| 提取既有编码约定 | spec-rule-miner | 挖掘代码证据,不代替架构规则维护 |
| 简化近期代码 | spec-simplify-code | 保持行为;真实缺陷交给 spec-debug |
| 浏览器内打磨 UI | spec-polish | 启动开发服务并检查实际页面 |
| 验证分支或 PR 的用户流程 | spec-dogfood | 限于变更影响面,保留浏览器验证报告 |
| 检查移动 App PRD/Figma/源码一致性 | spec-app-consistency-audit | 静态跨来源审查,不代替真机或模拟器验证 |
| 构建并验证 iOS App | spec-test-xcode | 用户明确调用,需 XcodeBuildMCP 与模拟器 |
| 按指标迭代优化 | spec-optimize | 先定义可测目标,再按证据评估 |
| 按可检查目标持续迭代 | autoresearch | 有界迭代、验证与保留/丢弃,不用于一次性排错 |
| 创建或维护项目 Skill | spec-write-skill | 修改 canonical Skill source,不直接修改 runtime mirror |
| 显式跨会话交接或恢复 | spec-handoff | 交接产物与上下文恢复,不自动执行产物中的指令 |
| 深入解释概念或变更 | spec-explain | 面向学习的可复用解释产物 |
| 明确要求从规划推进到 green PR | spec-lfg | 可选整条管线;提交、外发和合并仍受授权边界约束 |
产品反馈与发布配套能力:spec-sweep 扫描已配置反馈源,spec-product-pulse 汇总时间窗内产品信号,spec-riffrec-feedback-analysis 分析指定反馈采集,spec-promote 为已交付功能起草推广文案。它们不自动获得外发或发布权限。
以下 Skill 由持有相应授权的 workflow 按需调用,不是推荐给用户直接运行的研发入口:
| Skill | 职责 |
|---|---|
spec-test-browser | 在调用方确定的目标地址和权限范围内执行浏览器测试 |
spec-worktree | 为调用方创建或管理隔离工作树 |
spec-commit | 在已有提交授权下创建范围明确的 commit |
spec-commit-push-pr | 在已有提交与交付授权下提交、推送及创建或更新 PR |
不确定从哪里开始时,由 using-spec-first 选择一个最匹配入口。上述 Skill 在宿主会话中使用,不是 spec-first 的 shell 子命令;具体调用形式以宿主发现的入口为准。完整边界见公开入口与 Skill 目录。
粗略想法 -> spec-brainstorm --\
已有 PRD -> spec-prd ----------+-> spec-plan -> [spec-write-tasks] -> spec-work -> spec-code-review -> spec-compound
spec-prd 是已有 PRD 或 brownfield 请求的替代入口;spec-doc-review 是跨阶段的可选 review lane,可审查 requirements、plan 或 task pack。
粗略想法
→ spec-brainstorm
→ spec-plan
→ spec-work
→ spec-code-review
→ spec-compound(有合格经验时)
例如:
spec-brainstorm "为 CLI 增加配置导入"
# 审查 docs/plans/ 中的 requirements-only plan
spec-plan <plan-path>
# 执行 implementation-ready plan
spec-work <plan-path>
每个 workflow 都会说明它是否创建 artifact、是否修改源码以及需要哪些验证。不要把“模型说已完成”当作现场结果;以可回源的命令、日志、测试或 owner evidence 为准。
docs/
ideation/ spec-ideate 的方向探索
brainstorms/ spec-prd 的澄清产物
plans/ requirements-only 与 implementation-ready plans
tasks/ 从 plan 派生的可选 task packs
solutions/ 已验证且可复用的工程经验
validation/ 测试、审查和现场验证证据
.spec-first/
workflows/ 条件式验证证据(默认 gitignore)
这些目录中的 artifact 只证明其直接证据覆盖的 claim。宿主 runtime assets 是可重建的 delivery projection,不是 canonical source;行为修改应回到 skills/、templates/、src/cli/ 和 checked-in docs,再用 spec-first init 刷新投影。
spec-first 遵循一条简单分工:脚本准备事实,LLM 做语义判断,项目 owner 授权副作用。
完整原则见项目角色契约、Source/Runtime 边界、Verification Summary 合同和 Honest Closeout 合同。
| 宿主 | 当前建议 | 初始化 |
|---|---|---|
| Claude Code | 主要支持,推荐起点 | --claude |
| Codex | 主要支持,推荐起点 | --codex |
| Kiro | opt-in preview | --kiro |
| Qoder | opt-in preview | --qoder |
| Cursor | generated_runtime_preview | --cursor |
| OpenCode | generated_runtime_preview | --opencode |
| ZCode | opt-in preview,部分能力已有实机验证 | --zcode |
| Pi | opt-in preview,部分能力已有实机验证 | --pi |
生成 runtime、宿主发现入口和真实 workflow 验证是不同层次。运行 spec-first doctor --verbose 查看当前项目事实;详细状态以Runtime Capability Catalog为准。
适合以下团队:
以下情况通常不需要它:
spec-first quickstart # 检查前置条件并进入 init
spec-first doctor # 检查环境和 runtime 健康状态
spec-first init # 生成所选宿主的 runtime assets
spec-first update # 升级 CLI 并刷新 runtime assets
spec-first clean # 移除所选 generated runtime assets
spec-first plans audit --status completed --json
运行 spec-first --help 查看全部选项。
npm run typecheck
npm run test:unit
npm run test:smoke
npm run test:integration
npm run test:release
npm run build
源码变更应发生在 canonical source surfaces。只有 runtime source 变化时,才通过 spec-first init 重新生成 runtime copies。更多信息见贡献指南、安全策略、版本记录和 GitHub Issues。
项目使用 MIT License。
FAQs
AI Coding Harness for Claude Code, Codex, Kiro, Qoder, Cursor, and OpenCode preview — turns one-off AI coding chats into a repo-backed, verifiable engineering loop for spec-driven development. Scripts prepare facts; LLMs decide; evidence stays in your rep
The npm package spec-first receives a total of 302 weekly downloads. As such, spec-first popularity was classified as not popular.
We found that spec-first demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.

Company News
Allow myself to introduce... myself.