Skip to content

产物目录与 Git 边界

本页说明 Spec-First 常见产物由谁生成、谁读取、是否应提交,以及哪些目录是 generated runtime assets。重点是边界,不是把 workflow 固化成状态机。

核心原则

  • 长期协作知识写入 docs/ 下的 requirements、plans、tasks 和 solutions。
  • CLI、skill、agent、template 的 source truth 位于 src/cli/skills/(含 skill-local references/agents)和 templates/
  • .claude/.codex/.agents/skills/.cursor/.kiro/.qoder/.opencode/ 是 generated runtime assets,可由 spec-first init 重建,不应手改。
  • .spec-first/ 下多为 runtime/control-plane facts 与 opt-in session advisory records,通常不提交到 Git。
  • 项目规范应写入 AGENTS.mdCLAUDE.mddocs/contracts/**、README、测试或 docs/solutions/**,不要放进 generated runtime 目录。
  • 脚本负责确定性事实和格式校验,LLM 负责需求、取舍、实现和评审判断。

Workflow 文档产物

路径主要生成者主要读取方Git 边界
docs/brainstorms/*-requirements.mdspec-brainstormspec-plan、doc review、维护者通常提交
docs/plans/*-plan.mdspec-planspec-workspec-write-tasks、review通常提交
docs/tasks/*-tasks.mdstandalone spec-write-tasks skillspec-work视团队协作需要提交
docs/solutions/**/*spec-compound后续 workflow 和维护者通常提交
CHANGELOG.md执行变更的 agent / 维护者reviewer、release、用户本仓库要求变更同步记录

Generated runtime assets

路径生成方式是否 source truth是否手改
.claude/commands/spec-*.mdspec-first init(选择 Claude Code)
.claude/commands/spec/legacy managed command namespace;仅用于旧资产清理或迁移证据
.claude/skills/spec-first init(选择 Claude Code)
.claude/spec-first/workflows/spec-first init(选择 Claude Code)
.claude/agents/spec-first init(选择 Claude Code)
.claude/hooks/session-startspec-first init(选择 Claude Code)
.agents/skills/spec-first init(选择 Codex)
.codex/agents/spec-first init(选择 Codex)
.gitignore(managed block)spec-first init部分仅在 spec-first managed block 之外手改

如果这些目录漂移,修复方式是重新运行 spec-first init 并选择对应宿主,而不是直接编辑 runtime copy。init 会在仓库根 .gitignore 中维护一个 spec-first managed block,把 generated runtime assets 与 control-plane facts 默认排除提交;managed block 之外的规则不会被覆盖。

.spec-first/ control-plane facts

目录写入阶段主要作用
.spec-first/config/spec-runtime-setuphost baseline、required MCP、helper readiness、provider opt-in 配置和 artifact path contract
.spec-first/providers/<provider>/provider pack / setup 调试opt-in provider 原始日志、状态和 normalized facts;不是默认 source truth
.spec-first/workspace/parent workspace advisorychild repo 候选、批量 setup summary 和只读 target 建议
.spec-first/sessions/spec-first session CLIopt-in 多 actor session advisory records,提示同一 worktree 中的并行 agent 活动
.spec-first/app-audit/runs/<run-id>/spec-app-consistency-auditPRD / Figma / source / route / architecture / analytics / i18n 一致性审查证据
.spec-first/workflows/verification/<slug>/verification evidencedoctor 可读取的验证证据
.spec-first/workflows/quality-gates/ai-dev-quality-gate/AI Dev Quality Gate质量门结果与失败主题

这些目录回答“当前机器事实是什么”,不是长期手工维护知识库。若 facts stale、blocked 或 degraded,下游 workflow 应说明限制,并回退到 bounded direct repo reads 或已配置 provider。

Provider / Runtime 关键文件

文件生成者消费者说明
.spec-first/config/runtime-capabilities.jsonspec-runtime-setupsetup/downstream workflowshost ledger pointer、fallback 能力和 readiness projection
.spec-first/config/provider-artifacts.jsonspec-runtime-setupprovider pack / 维护者provider artifact path contract
.spec-first/config/graph-providers.jsonspec-runtime-setupprovider pack / 维护者required provider command argv 与 package projection;--only 仅表示子集修复
.codegraph/codegraph.dbCodeGraph provideropt-in evidence consumerCodeGraph 本地数据库,来自 @colbymchenry/codegraph@1.5.0
graphify-out/Graphify provideropt-in evidence consumer当前 Graphify 项目图谱产物,来自 PyPI graphifyy@0.9.29
.graphify/Graphify provider (legacy)opt-in evidence consumer旧版 spec-first 适配目录;setup 可在单独存在时迁移到 graphify-out/

下游 workflow 不应把 provider-local 缓存当作 source truth。Provider evidence 只能辅助定位;与当前源码、测试、日志或用户证据冲突时,采用已验证的直接事实。

是否可以删除

路径可以删除吗删除后如何重建
.claude/.codex/.agents/skills/可以,但会让宿主入口失效重跑 spec-first init 并选择对应宿主
.spec-first/config/可以,但 setup facts 会丢失重跑 spec-runtime-setup
.spec-first/providers/.codegraph/graphify-out/.graphify/(legacy)可以,但 opt-in provider evidence 会丢失重新运行显式启用 provider pack 的 setup / provider 命令
.spec-first/workspace/可以在父 workspace 重跑 init/setup
.spec-first/sessions/可以需要 session advisory 时重新运行 spec-first session register
docs/brainstorms/docs/plans/docs/tasks/docs/solutions/不建议随意删除这些是长期协作文档,删除前应 review

Source truth 资产

路径角色修改后通常需要
src/cli/CLI 行为、命令实现、contract 校验单元/集成/smoke 测试,必要时 build
skills/source skill 定义和脚本source 文件检查、contract 测试,必要时 fresh-source eval
skills/**/references/agents/skill-local agent prompt 资产source 文件检查、contract 测试,必要时 fresh-source eval
templates/runtime 生成模板init / smoke / governance contract 测试
docs/协作文档、计划、手册和长期知识Markdown link、内容 contract 或相关文档测试
tests/回归和 contract 保障对应测试命令

选择建议

  • 只想记录需求:写 docs/brainstorms/
  • 需要执行前共识:写 docs/plans/
  • 计划很大、需要交接或并行执行:从 plan 派生 docs/tasks/
  • 问题已经解决且经验可复用:写 docs/solutions/
  • runtime 看起来坏了:先判断 source truth 是否正确,再用 spec-first init 重建并选择对应宿主。
  • 父 workspace 下不确定该写哪个 repo:先回到 plan/task scope,让文档写明 target_repo 或 per-unit/per-task target_repo

阅读下一步