关于 backlog-templates
backlog-templates 为多个规划器提供统一的 ADO 与 GitHub 工作项模板、内容清理规则和 ID 约定。它还规定自主级别及免责声明的处理方式,供各规划器生成待办交接内容时复用。
主要功能
- 01提供 ADO 与 GitHub 模板
- 02规定工作项字段映射
- 03清理外发内容中的路径与状态数据
- 04定义 manual、supervised 和 autonomous 级别
- 05统一免责声明与工作项 ID 约定
适用场景
- 01生成 ADO 工作项描述
- 02创建 GitHub issue 的元数据和正文
- 03在不同规划器间统一待办交接格式
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ microsoft/ hve-core --skill backlog-templates安装后在 Claude Code 中输入/backlog-templates确认已加载。
详细介绍
Backlog 模板
为输出待办事项移交内容的所有规划器提供共享参考,涵盖 ADO 和 GitHub 工作项模板生成、内容清理、自主性级别用语、免责声明块放置位置,以及工作项 ID 约定。
概述
输出阶段最终待办工作项的规划器都需要相同的双格式模板骨架、相同的内容清理规则,以及相同的工作项 ID 分配位置约定。本技能整合了这些共享内容,让每个规划器指令文件都能引用同一来源,而不必重复说明。
调用方:
- RAI 规划器(
rai-planner技能references/backlog-handoff.md) - 安全规划器(
Security PlannerAgent;安全专属移交详情见security-planning技能的references/backlog-formats.md) - SSSC 规划器(
SSSC PlannerAgent,遵循sssc-planner.instructions.md) - 无障碍规划器(
accessibility/accessibility技能references/phases/backlog-handoff.md) - 隐私规划器(
Privacy PlannerAgent,遵循privacy-identity.instructions.md)
各规划器专属内容(不属于本技能):
- 领域专属的 HTML 和 Markdown 正文内容(NIST 特征与 STRIDE 类别、WCAG 标准与 Scorecard 检查项)。
- 严重性到优先级、严重性到级别的映射表——各规划器的输入用语不同。
- 工作项层级映射(Epic / Feature / Story / Task / Bug)。
- 无障碍免责声明文本(由 L7 免责声明杠杆固定在
accessibility-identity.instructions.md中)。
ADO 工作项模板
ADO 描述字段使用 HTML,并嵌入规划器专属字段块和原文免责声明引用块。使用规划器 ID 前缀和各规划器字段集对模板骨架进行参数化。
模板骨架:
<div>
<h3>{Domain} Control: {control_name}</h3>
<h4>Implementation</h4>
<p>{implementation_details}</p>
<h4>Acceptance Criteria</h4>
<ul>
<li>{criterion_1}</li>
<li>{criterion_2}</li>
</ul>
<blockquote>
<p><strong>Note</strong> — The author created this content with assistance from AI. All outputs should be reviewed and validated by a qualified {role} reviewer before use.</p>
<ul><li><input type="checkbox" disabled /> Reviewed and validated by a qualified {role} reviewer</li></ul>
</blockquote>
</div>
示例(安全规划器):
<div>
<h3>Security Control: {mitigation_name}</h3>
<p><strong>Threat:</strong> {threat_id} - {threat_description}</p>
<p><strong>Bucket:</strong> {bucket_name}</p>
<p><strong>Standards:</strong> {owasp_ref}, {nist_ref}</p>
<h4>Implementation</h4>
<p>{implementation_details}</p>
<h4>Acceptance Criteria</h4>
<ul>
<li>{criterion_1}</li>
<li>{criterion_2}</li>
</ul>
</div>
各规划器需替换为自己的字段块(RAI 使用 NIST 特征 + 威胁 + 控制面;无障碍使用框架 + 标准 + 面 + 用户角色 + 证据 + 权衡;SSSC 使用供应链控制 + Scorecard 检查项 + 采用类型;隐私使用数据类别 + 处理目的 + DPIA 参考 + 合法依据 + 风险级别)。
各规划器专属的 ADO 描述字段块(替换 `` 槽位的键):
- RAI —
characteristic、subcategory、principle、maturity_level、tradeoff_ref(适用时)。 - Security —
threat_id、stride_category、bucket、risk_level。 - SSSC — Scorecard Check、Risk Level、Effort、Adoption Type、Prerequisite、Adoption Steps、Source References (Workflow, Script, Documentation)。
- Accessibility —
framework、criterion、surface、wcag_level、severity、category、risk_tier、tradeoff_ref(适用时)。当severity为critical或major时,添加辅助技术验证说明。 - Privacy —
data_category、processing_purpose、dpia_ref、lawful_basis、risk_tier。
GitHub Issue 模板
GitHub Issue 使用 YAML 元数据头,后接 Markdown 正文。创建时,格式为 {{<PREFIX>-TEMP-N}} 的临时 ID 会替换为真实 Issue 编号。
规范 YAML 元数据头:
---
id: "{{<PREFIX>-TEMP-N}}"
planner: {rai|security|sssc|accessibility|privacy}
priority: {Critical|High|Medium|Low}
standards: ["{standard_id_1}", "{standard_id_2}"]
evidence_refs: ["{evidence_id_1}"]
cross_planner_refs: ["{wi_id_1}"]
---
各规划器专属的扩展字段(添加到同一 YAML 块中,而非替换该块):
- RAI —
characteristic、subcategory、principle、maturity_level、tradeoff_ref、horizon、standards。 - Security —
threat_id、stride_category、risk_level、bucket、standards。 - SSSC —
scorecard_check、risk_level、adoption_type、effort、standards。 - Accessibility —
framework、criterion、surface、wcag_level、severity、category、risk_tier、tradeoff_ref、standards。 - Privacy —
data_category、processing_purpose、dpia_ref、lawful_basis、risk_tier、standards。
Markdown 正文骨架:
## {Domain} Control: {control_name}
{planner_specific_summary_lines}
### Implementation
{implementation_details}
### Acceptance Criteria
* [ ] {criterion_1}
* [ ] {criterion_2}
ADO 模板中的免责声明引用块会原样复用于 Markdown 正文末尾,以确保不同格式的内容一致。
平台字段映射
ADO
| Field | 用途 | 必填 | 各规划器的覆盖项 |
|---|---|---|---|
| Title | 方括号标签前缀 + 简洁描述 | 是 | 标题前缀不同([Security]、[RAI]、[A11Y][{framework}])。 |
| Description | 符合 ADO 模板框架的 HTML 正文 | 是 | 字段块内容不同。 |
| AcceptanceCriteria | 可验证的检查项 | 是 | 如有要求,无障碍规划会添加辅助技术验证。 |
| Tags | 领域标签 + 适用的属性标签 | 是 | 标签词汇不同(CIA 三元组、RAI 原则、WCAG 级别等)。 |
| Priority | 根据风险或严重程度确定 | 是 | 每个规划器使用各自的映射表。 |
| Iteration | 用户提供的迭代路径 | 可选 | 留空时默认进入待办事项细化阶段。 |
| AreaPath | 用户提供的项目区域 | 是 | 所有规划器在输出 ADO 工作项时都必须填写。 |
| Parent | Epic 或 Feature 父项引用 | 可选 | 当种子项映射到规划器专属层级时设置。 |
GitHub
| Field | 用途 | 必填 | 各规划器的覆盖项 |
|---|---|---|---|
| title | 方括号标签前缀 + 简洁描述 | 是 | 标题前缀不同(与 ADO Title 惯例一致)。 |
| body | 符合 GitHub 模板的 Markdown 正文 | 是 | YAML 标头补充内容和正文摘要行各不相同。 |
| labels | 小写的领域标签 + 属性标签 | 是 | 标签词汇不同;不允许使用冒号时,去掉 prefix: 形式。 |
| milestone | 如有则使用规划里程碑 | 可选 | 每个规划器可指定领域里程碑;否则留空。 |
| assignees | 所有者角色建议 | 可选 | 默认填写 TBD — assign during backlog refinement. |
内容清理协议
在将任何工作项输出到 ADO 或 GitHub 之前,应用以下五条规则进行清理。清理在渲染后、由 MCP 驱动创建前执行。
- 将
.copilot-tracking/的所有出现位置替换为描述性短语,例如{domain} plan artifacts(例如security plan artifacts、accessibility plan artifacts)。 - 将绝对文件系统路径替换为相对于工作区的引用。
- 移除嵌入的状态 JSON 或指向状态 JSON 文件的指针;提取后保留状态中的标准引用。
- 原样保留标准标识符:OWASP A{NN}、NIST AI RMF 子类别 ID、CIS 控制编号、WCAG 准则 ID(1.1.1、1.3.5)、Scorecard 检查名称、SLSA 级别字符串、Section 508 章节 ID、EN 301 549 条款编号。
- 为每个经过清理的产物追加一条
state.noticeLog条目,包含noticeType: "sanitization"、source: "<planner-handoff-instruction-path>"、产物路径,以及触发的清理规则。
保存在 .copilot-tracking/<planner-domain>/{slug}/debug/ 下的调试模式输出会保留完整路径,且绝不会进入面向外部的工作项。
自主性等级枚举
三个等级控制渲染后的工作项如何进入目标待办事项系统。规范词汇为 manual / supervised / autonomous。第四个值 coached 表示一种不会生成任何工作项的能力。
manual— 规划器会在.copilot-tracking/下生成待办事项交接文件。用户在目标系统中独立创建每个工作项。不调用任何 MCP 工具。supervised— 规划器会在.copilot-tracking/下起草渲染后的工作项,每批向用户展示 5 到 10 个工作项供其审核,并且仅在用户批准后调用 MCP 创建工具。这是默认等级。autonomous— 用户预先批准本次运行后,规划器会直接对清理后的批次调用 MCP 创建工具。所有工作项会在单次操作中创建。coached— 此能力会生成对话及其自身输出,而不是待办事项工作项。它不会渲染任何内容,不会调用创建工具,也不会接入任何待办事项系统,因此不适用任何等级。没有待办事项规划器会选择此值,也没有规划器状态架构接受此值;设置此值是为了让具有辅导性质的能力在此词汇中有据可依,而不是未记录的缺失项。辅导能力不会在自身状态中记录自主性字段。
使用不同词汇的规划器之间的交叉引用映射。每个规划器都会使用自身的词汇,在会话状态的 userPreferences.autonomyTier 下保存所选值;此表是规划器之间等价关系的唯一事实来源。
| 规范值(此技能) | 无障碍(种子架构) | 安全 | RAI | SSSC | 隐私 |
|---|---|---|---|---|---|
| autonomous | autonomous | Full | Full | Full | Full |
| supervised(默认) | supervised | Partial | Partial | Partial(默认) | Partial(默认) |
| manual | manual | Manual | Manual | Guided | Manual |
| coached | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 |
说明:
- 无障碍的词汇已与规范名称一致;种子架构中的
autonomyTier字段是其持久化形式。 - SSSC 使用
Guided作为自主性最低等级的标签。交叉引用和报告时,将Guided与Manual视为规划器之间的等价值。 coached不是一个等级,也没有对应的规划器选项。它不可选,不会持久化到任何规划器状态架构中,也不包含严重性到等级的路由规则。规划器遇到此值时,应将其视为超出范围。- 严重性到等级的映射(即将哪种严重性路由到哪个等级)仍由各规划器的交接说明文件定义。
免责声明块放置约定
每个待办事项交接产物(交接摘要、ADO 输出文件、GitHub 输出文件)都会在文件末尾原样输出免责声明块。该免责声明块是证明规划器输出由 AI 辅助生成,并且执行前须由具备资质的人员审核的权威依据。
免责声明文本的事实来源划分:
- RAI、安全、SSSC——从相应规划器章节下自动应用的
disclaimer-language.instructions.md中读取免责声明文本。 - 隐私——从 Privacy Planning 章节下自动应用的
disclaimer-language.instructions.md中读取免责声明文本。 - 无障碍——从
Disclaimer Handling标题下自动应用的accessibility-identity.instructions.md中读取免责声明文本。L7 免责声明规则明确规定,无障碍免责声明应以该文件为准。请勿将其移至disclaimer-language.instructions.md。
放置规则:
- 在每个输出产物的末尾输出该块,而非开头。
- 在会话中首次输出时,将
state.disclaimerShownAt设为 ISO 8601 时间戳。 - 每次输出都在
state.noticeLog中追加一条记录,包含noticeType: "handoff-disclaimer"、source: "<authoritative-instruction-path>"和产物路径。 - 对于 ADO 输出,描述字段中每个工作项单独使用的 HTML 引用块是独立的审核提示,不能替代文件级免责声明块。
本技能不会复述免责声明文本。输出时请从上述权威来源读取文本,以便规范文本的更新无需修改技能即可生效。
工作项 ID 命名约定
工作项采用 WI-{PREFIX}-{NNN} 格式,其中前缀标识来源规划器,{NNN} 是在计划 slug 范围内从零开始填充的单调递增序列。
| 规划器 | ADO 前缀 | GitHub 临时 ID |
|---|---|---|
| RAI | WI-RAI- | {{RAI-TEMP-N}} |
| 安全 | WI-SEC- | {{SEC-TEMP-N}} |
| SSSC | WI-SSSC- | {{SSSC-TEMP-N}} |
| 无障碍 | WI-A11Y- | {{A11Y-TEMP-N}} |
| 隐私 | WI-PRIV- | {{PRIV-TEMP-N}} |
规则:
- 不同前缀可避免多个规划器针对同一项目生成待办事项时发生 ID 冲突。
- 序列在每个计划 slug 范围内单调递增。请勿在不同计划或会话中重复使用标识符。
- GitHub 临时 ID 会在创建时替换为真实问题编号;请在
state.noticeLog中保留临时 ID,以便追溯。 - 跨规划器引用使用目标规划器的完整 ID,并在前面加上关系类型:
Accessibility-Ref: WI-A11Y-{NNN}、Security-Ref: WI-SEC-{NNN}、RAI-Ref: WI-RAI-{NNN}、SSSC-Ref: WI-SSSC-{NNN}、Privacy-Ref: WI-PRIV-{NNN}。
内部引用 ID(威胁使用 T-{BUCKET}-{NNN},证据使用 EV-A11Y-{NNN},种子使用 SEED-A11Y-{NNN},权衡使用 TO-A11Y-{NNN})仅在其所属规划器范围内有效,不属于本技能的范围。