首页
/ Decision: <short title>

Decision: <short title>

2026-09-04 11:10:17作者:俞予舒Fleming
  • Slug: <ASSESS_SLUG>
  • Decided: <ISO 8601 date>
  • Verdict: go | needs-clarification | kill
  • Artifacts reviewed: intake.md? | research.md? | problem.md | concept.md?

Scorecard

Criterion Rating Justification
Problem validity strong/adequate/weak/unknown
Evidence strength
Value vs. inaction
Feasibility / appetite
Strategic fit
Risk posture

Verdict & Rationale

<The call and why, in a short paragraph. Reference the scorecard.>

If needs-clarification

  • Blocking questions: [NEEDS CLARIFICATION: …]
  • Revisit stage: intake | research | define | shape

If go — Handoff to speckit.specify

  • Problem:
  • Chosen approach:
  • In scope / out of scope:
  • Success metrics:
  • Carried-forward open questions:

模板本身体现了裁决的纪律:头部记录 slug、ISO 8601 日期、三选一 verdict 与**实际审阅过的工件清单**(`intake.md?` 这种带问号的写法表示"若存在则列出");`Scorecard` 表强制逐标准留痕;`needs-clarification` 与 `go` 两个分支章节互斥——前者用 `[NEEDS CLARIFICATION: …]` 标记阻塞问题并指明回退阶段,后者携带交接摘要。裁决段落被要求"参考记分卡"写,防止理由与评分脱节。

## 报告与按裁决分流的下一步

命令执行完毕后必须回报:slug(独占一行)、**清晰陈述的 verdict**、路径 `.specify/assessments/<ASSESS_SLUG>/decision.md`,以及按裁决分流的下一步:

- **go** → 运行 `speckit.specify`,以交接摘要作为其输入;
- **needs-clarification** → 重跑被点名的阶段,例如 `speckit.assess.research slug=<ASSESS_SLUG>`;
- **kill** → 无后续步骤;评估就此关闭,但记录保留供日后查阅。

值得强调的是 [assess 扩展 README](https://gitcode.com/GitHub_Trending/sp/spec-kit/blob/9f19be9cad6e83d8b293041d8dbb1b7787c3ed54/extensions/assess/README.md?utm_source=gitcode_repo_files) Handoff 一节的说法:assess 是**刻意独立进入的流水线**——它不注册任何生命周期钩子(lifecycle hooks),也绝不把自己插入 `speckit.specify`;唯一的耦合是向前的、且由选择触发的:decide 的 go 裁决把 `decision.md` 的摘要交给 `speckit.specify`。发现与规格化保持为两个分离的过程。[assess 的测试](https://gitcode.com/GitHub_Trending/sp/spec-kit/blob/9f19be9cad6e83d8b293041d8dbb1b7787c3ed54/tests/extensions/assess/test_assess_extension.py?utm_source=gitcode_repo_files) 中的 `test_declares_no_hooks` 正是把这一约束固化成了断言:`extension.yml` 中不得出现 hooks 声明。

## Guardrails:五条护栏

[decide 命令文档](https://gitcode.com/GitHub_Trending/sp/spec-kit/blob/9f19be9cad6e83d8b293041d8dbb1b7787c3ed54/extensions/assess/commands/speckit.assess.decide.md?utm_source=gitcode_repo_files) 结尾的 Guardrails 汇总了该命令的行为边界:

- **绝不修改源码文件**——只读;写入只允许发生在 `.specify/assessments/<slug>/` 之内。
- **绝不夸大 go**:证据单薄或没有成型概念时,诚实的裁决是 `needs-clarification`,而不是 `go`。
- **绝不在此处写规格**——go 只是*交接*给 `speckit.specify`,不抢它的活。
- **绝不埋没 kill**——直白陈述决定性原因,使决策日后可以被理解和重新审视。
- **未经确认绝不覆盖已存在的 `decision.md`**(自动化模式下直接拒绝)。

## 源码级印证:命令注册与 `__SPECKIT_COMMAND_*__` 占位符解析

decide 命令文档中出现多处 `__SPECKIT_COMMAND_SPECIFY__`、`__SPECKIT_COMMAND_ASSESS_DEFINE__`、`__SPECKIT_COMMAND_ASSESS_RESEARCH__` 这类双下划线占位符。它们不是写死的命令名,而是 Spec Kit 的跨 Agent 命令引用机制:安装扩展时,CLI 会把占位符渲染成目标 Agent 实际可用的调用形式。

从源码结构看,这条解析链落在两处:

- 扩展命令注册时,[extensions 包](https://gitcode.com/GitHub_Trending/sp/spec-kit/blob/9f19be9cad6e83d8b293041d8dbb1b7787c3ed54/src/specify_cli/extensions/__init__.py?utm_source=gitcode_repo_files#L1579-L1600) 中的 `_resolve_command_ref_tokens` 用正则 `__SPECKIT_COMMAND_([A-Z][A-Z0-9_]*)__` 匹配占位符,把 `SPECKIT_COMMAND_ASSESS_DEFINE` 这类大写蛇形名转成小写点分命令名 `speckit.assess.define`,再根据当前 Agent 的调用风格(`$` 前缀技能、`/` 前缀技能或其他集成)生成最终字符串;
- 通用的替换实现在 [integrations/base.py](https://gitcode.com/GitHub_Trending/sp/spec-kit/blob/9f19be9cad6e83d8b293041d8dbb1b7787c3ed54/src/specify_cli/integrations/base.py?utm_source=gitcode_repo_files#L625-L649) 的 `resolve_command_refs` 中:`separator="."` 时产出 `/speckit.plan`、`/speckit.git.commit` 这类点分斜杠命令,`prefix="$"` 时则适配以美元符号为原生命令前缀的 Agent。

因此,[decide 命令文档](https://gitcode.com/GitHub_Trending/sp/spec-kit/blob/9f19be9cad6e83d8b293041d8dbb1b7787c3ed54/extensions/assess/commands/speckit.assess.decide.md?utm_source=gitcode_repo_files) 里写的 `__SPECKIT_COMMAND_SPECIFY__` 在你安装的 Agent 中最终呈现为 `/speckit.specify`(或该 Agent 等价形式)——这正是文档能以 Agent 无关方式描述"go 交给 specify"的原因。

assess 扩展自身的工程化事实同样有仓库证据支撑:

- [extension.yml](https://gitcode.com/GitHub_Trending/sp/spec-kit/blob/9f19be9cad6e83d8b293041d8dbb1b7787c3ed54/extensions/assess/extension.yml?utm_source=gitcode_repo_files) 声明了扩展元数据(`id: assess`、`version: 1.0.0`、`category: process`、`effect: read-write`)与五个命令的注册表,要求 `speckit_version: ">=0.9.0"`;
- [extensions/catalog.json](https://gitcode.com/GitHub_Trending/sp/spec-kit/blob/9f19be9cad6e83d8b293041d8dbb1b7787c3ed54/extensions/catalog.json?utm_source=gitcode_repo_files) 将 assess 登记为 `bundled: true` 的内置扩展;
- [tests/extensions/assess/test_assess_extension.py](https://gitcode.com/GitHub_Trending/sp/spec-kit/blob/9f19be9cad6e83d8b293041d8dbb1b7787c3ed54/tests/extensions/assess/test_assess_extension.py?utm_source=gitcode_repo_files) 验证了五件套命令文件齐全、目录安装(`install_from_directory`)会把五个 `commands/*.md` 拷贝进 `.specify/extensions/assess/` 并记入清单,以及无 hooks 约束。

安装与启用方式(面向读者,只读说明):

```bash
specify extension add assess
# 临时禁用 / 重新启用
specify extension disable assess
specify extension enable assess
登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.12 K
2.72 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
528
590
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
904
1.82 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
854
1.34 K
docsdocs
暂无描述
Markdown
889
5.78 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.52 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.33 K
1.45 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
982
503
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
540
384