产物目录与 Git 边界
本页说明 Spec-First 常见产物由谁生成、谁读取、是否应提交,以及哪些目录是 generated runtime assets。重点是边界,不是把 workflow 固化成状态机。
核心原则
- 长期协作知识写入
docs/下的 requirements、plans、tasks 和 solutions。 - CLI、skill、agent、template 的 source truth 位于
src/cli/、skills/、agents/和templates/。 .claude/、.codex/和.agents/skills/是 generated runtime assets,可由spec-first init重建,不应手改。.spec-first/下多为 runtime/control-plane facts,通常不提交到 Git。.spec-first/standards/中经团队确认需要共享的 reviewable artifacts 可以提交;scratch/raw/cache/logs 不提交。- 脚本负责确定性事实和格式校验,LLM 负责需求、取舍、实现和评审判断。
Workflow 文档产物
| 路径 | 主要生成者 | 主要读取方 | Git 边界 |
|---|---|---|---|
docs/brainstorms/*-requirements.md | $spec-brainstorm / /spec:brainstorm | $spec-plan / /spec:plan、doc review、维护者 | 通常提交 |
docs/plans/*-plan.md | $spec-plan / /spec:plan | $spec-work / /spec:work、spec-write-tasks、review | 通常提交 |
docs/tasks/*-tasks.md | standalone spec-write-tasks skill | $spec-work / /spec:work | 视团队协作需要提交 |
docs/solutions/**/* | $spec-compound / /spec:compound | 后续 workflow 和维护者 | 通常提交 |
CHANGELOG.md | 执行变更的 agent / 维护者 | reviewer、release、用户 | 本仓库要求变更同步记录 |
Generated runtime assets
| 路径 | 生成方式 | 是否 source truth | 是否手改 |
|---|---|---|---|
.claude/commands/spec/ | spec-first init --claude | 否 | 否 |
.claude/skills/ | spec-first init --claude | 否 | 否 |
.claude/spec-first/workflows/ | spec-first init --claude | 否 | 否 |
.claude/agents/ | spec-first init --claude | 否 | 否 |
.agents/skills/ | spec-first init --codex | 否 | 否 |
.codex/agents/ | spec-first init --codex | 否 | 否 |
.gitignore(managed block) | spec-first init --claude|--codex | 部分 | 仅在 spec-first managed block 之外手改 |
如果这些目录漂移,修复方式是重新运行对应宿主的 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-mcp-setup | host baseline、graph provider 配置、fallback 能力和 artifact path contract |
.spec-first/providers/<provider>/ | spec-graph-bootstrap | provider 原始日志、状态和 normalized facts |
.spec-first/graph/ | spec-graph-bootstrap | canonical graph readiness facts 和 bootstrap report |
.spec-first/impact/ | spec-graph-bootstrap | context selection、impact radius、review support 的 capability envelope |
.spec-first/workspace/ | parent workspace advisory | child repo 候选、批量 setup/bootstrap summary 和只读 graph target 建议 |
.spec-first/standards/ | spec-standards | 项目形态、规范候选、shared standards 导入、freshness decision 和 glue/reuse capability baseline |
.spec-first/audits/skill-audit/ | spec-skill-audit | skill audit inventory、scorecard、安全/治理/runtime drift 信号和改进计划 |
.spec-first/app-audit/runs/<run-id>/ | spec-app-consistency-audit | PRD / Figma / source / route / architecture / analytics / i18n 一致性审查证据 |
.spec-first/workflows/verification/<slug>/ | verification evidence | doctor 可读取的验证证据 |
.spec-first/workflows/quality-gates/ai-dev-quality-gate/ | AI Dev Quality Gate | 质量门结果与失败主题 |
这些目录回答“当前机器事实是什么”,不是长期手工维护知识库。若 facts stale、blocked 或 degraded,下游 workflow 应说明限制,并回退到 bounded direct repo reads 或已配置 provider。
Source truth 资产
| 路径 | 角色 | 修改后通常需要 |
|---|---|---|
src/cli/ | CLI 行为、命令实现、contract 校验 | 单元/集成/smoke 测试,必要时 build |
skills/ | source skill 定义和脚本 | source 文件检查、contract 测试,必要时 fresh-source eval |
agents/ | source agent 定义 | 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 --claude或spec-first init --codex重建。 - 父 workspace 下不确定该写哪个 repo:先回到 plan/task scope,让文档写明
target_repo或 per-unit/per-tasktarget_repo。
阅读下一步
- .gitignore 参考:init 自动维护 managed block 的完整内容
- 运行模型:CLI / runtime / control-plane 三层资产分类
- 三种开发模式:不同 Git 拓扑下的产物边界
- 记忆与知识沉淀:长期文档如何跨会话支撑工作
