SpecKit Workspace
历史版本目录规则(History Layout)
历史版本和历史原型属于正式交付资产,不是待隐藏的临时文件。archive 只允许表示本地
.specify/archive/<timestamp>/ 中可恢复的临时残留;禁止在 feature 根目录、versions/
或产品 Git 树中创建 archive 目录。
同一产品版本下的历史迭代必须按版本号直接并列:
<Product-ID>/<Product-Version>/R0.1.0/
<Product-ID>/<Product-Version>/R0.2.0/
<Product-ID>/<Product-Version>/R0.4.0/
不得生成 <Product-Version>/archive/ 或把旧原型放进其中。版本号就是历史索引,
INDEX.md、product-index.json 和 release.json 用来标识最新修订。
这个 Skill 负责跨 Skill 的目录治理,不负责编写业务 spec 或产品页面。它维护三层边界:feature 工作区、prototype/ 产品原型包、prototype/evidence/ 证据仓。默认先审计,只有明确的归档操作才移动文件,禁止未经确认递归删除。
核心规则
- 正式契约、运行状态、产品页面、证据、临时文件和历史归档必须分类存放。
- 每个生产 Skill 只清理自己生成的临时文件;Workspace 负责跨目录审计和可恢复归档。
- Version 冻结前自动运行
audit_workspace.py --mode gate;不能通过的 Unknown 文件必须人工处理。 - 已知临时文件只允许移动到
.specify/archive/<timestamp>/,不直接删除。 prototype/pages/只放正式 HTML 页面,prototype/partials/只放 HTML 片段,运行资源放入prototype/assets/。- 诊断、迁移、提取和一次性修复脚本不得进入产品页面目录或正式资源目录。
- Evidence 必须由
evidence-manifest.json登记;未登记、重复或孤立证据在冻结前必须处理。
常用操作
python -X utf8 "<skill-dir>\scripts\audit_workspace.py" --feature-dir "<FEATURE_DIR>" --scope feature --mode audit --write-report
python -X utf8 "<skill-dir>\scripts\resolve_execution_profile.py" --feature-dir "<FEATURE_DIR>" --intent "<USER_INTENT>"
python -X utf8 "<skill-dir>\scripts\build_inventory.py" --feature-dir "<FEATURE_DIR>"
python -X utf8 "<skill-dir>\scripts\archive_workspace.py" --feature-dir "<FEATURE_DIR>" --known-only --apply
python -X utf8 "<skill-dir>\scripts\index_evidence.py" --feature-dir "<FEATURE_DIR>"
python -X utf8 "<skill-dir>\scripts\validate_prototype_package.py" --feature-dir "<FEATURE_DIR>" --write-gate
audit 是只读审计;archive 只移动已确认的临时文件,并生成归档清单;它不负责收纳历史版本,也不得把历史原型移动到 archive;
gate 用于 Version 冻结前门禁。详细路径白名单和迁移策略见
references/workspace-contract.md。
默认命令只输出 summary,完整 findings 写入 .specify/audit/ 或对应 run report。
Version 会先生成 .specify/cache/workspace-inventory.json,Archive、Audit 和冻结门禁复用
这份 inventory,避免对同一批文件重复计算 SHA-256。
执行档位和跨 Skill 路由见 references/execution-profiles.md,只在需要判断影响范围时读取。
自动接入边界
- Analyze、Clarify、Review:把一次性脚本写入
.specify/work/<skill>/<run-id>/,完成后清理自己的 run。 - Prototype:原型页面、资源、契约和证据必须符合 prototype package contract;活动中的
.specify/work/prototype/<run-id>/preflight.json是可恢复执行状态,不能在 run 未完成时清理。
.specify/current-prototype-run.json记录当前 run 和 source digest;完成后的
prototype/evidence/executions/<run-id>/receipt.json必须由 evidence manifest 登记。 - Version:自动执行 feature 级 Workspace audit 和 prototype package gate。
- Publish:只消费 Frozen manifest 声明的文件,不扫描并发布未知文件。
- 字段契约:
field-contract.json、field-coverage.json、schema-snapshot.json和
prototype/field-render-map.json是受管控的正式资产,不得被归类为 Unknown。 - 手动使用本 Skill 仅用于老项目迁移、残留归档、Unknown 文件处理和工作区健康检查。
版本路径审计(Version Path Audit)
审计所有版本上下文:Product-ID、Product-Version、Spec-Revision、Feature-ID 和
Artifact-Key。Artifact-Key 必须唯一且符合
<Product-ID>/<Product-Version>/<Spec-Revision>;发现 DUPLICATE_ARTIFACT_KEY、
PRODUCT_VERSION_MISSING、SPEC_REVISION_MISSING 或 REGISTRY_OUT_OF_DATE 时阻断冻结或发布。
旧的 Version 字段只作为迁移别名,不得继续生成 project/V0.1.0/ 目录。
内容归属校验(Content Routing Validation)
Workspace 维护 content-routing-contract.md 作为跨 Skill 的机器标识契约,并提供 scripts/validate_spec_scope.py。它只审计 spec.md 是否混入原型演示、夹具和证据细节;不把原型上传、阶段性展示或 Git 推送绑定到冻结流程。