audit-item · v1.1.0 · 2026-09-29 · sha256 ccae159e39e9d17f

audit-item v1.1.0A

Immutable. This exact content never changes and is served at /api/v1/blob/ccae159e39e9d17f.

---
name: audit-item
description: >-
  Track audit/review findings as numbered issue files (audit-items/NNN-slug.md,
  under the directory the project keeps such findings) with id, severity, source
  audit, status (open/fixed/recorded), fix commit, regression test, and closing
  evidence, plus a summary index README that the stage-completion gate enumerates.
  Use when an audit or review produces findings and the user asks to record them
  (e.g. "log the audit findings"). USER-INVOKED ONLY: it writes tracked files —
  the agent must not auto-invoke it. NOT for: finding the issues (that is the
  review or audit pass itself) — this skill only tracks them.
slug: audit-item
disable-model-invocation: true
version: 1.1.0
displayName: audit-item
---

# Audit Item(审计问题 issue 化跟踪)

## 定位

审计/评审产出的发现 → 编号 issue 文件 + 汇总索引,让每个发现可追踪到关闭,
且**可被 stage-gate 枚举**(门禁「审计状态」断言核对 open 项)。

## 何时使用

- 审计/评审产出发现后:「把审计发现入账」「审计项」
- 覆盖矩阵缺口、code-review 阶段评审、文档审计、领域审计——任何来源的发现

## 目录约定

- 单条:`audit-items/NNN-slug.md`(NNN = 顺序编号,slug = kebab)
- 索引:`audit-items/README.md`(汇总表)
- 目录不存在 → 创建(含 README 骨架)

## 模板(字段必填)

```markdown
# A-NNN {标题}

- id: NNN
- 严重度: high | medium | low
- 来源审计: {报告路径 + 轮次/章节,如 docs/audits/intent-confirmation-impl-audit.md §S2}
- 状态: open | fixed | recorded
- 修复 commit: {hash(fixed 时)}
- 回归测试: {测试文件::用例(fixed 时)}
- 关闭证据: {链接/命令输出尾部(fixed/recorded 时)}

## 发现

{现象 + 证据 + 影响}

## 关闭条件

{可勾选:修复 commit 存在 / 回归测试红→绿 / 证据链接}
```

## 状态流转

```
open ──修复──→ fixed(修复 commit + 回归测试 + 关闭证据,三缺一不算 fixed)
open ──裁决──→ recorded(裁决不修:记录理由,不再要求修复——门禁视为已收)
```

- **fixed**:修复 commit 可查 + 回归测试证明(红→绿或等价证据)+ 关闭证据链接。
- **recorded**:明确裁决不修(如「V2 规模待拍板」)——理由写入关闭证据;与 fixed 同样满足门禁。
- 状态变更时更新 README 索引行(状态 + 关闭证据列)。

## 索引 README

```markdown
# Audit Items 索引

| # | 标题 | 严重度 | 状态 | 来源 | 关闭证据 |
|---|------|--------|------|------|---------|
| 001 | … | medium | fixed | … | commit abc + 测试 |
```

- stage-gate「审计状态」断言 = 枚举本索引 open 行(应为空,或每条有 fixed/recorded 证据)。

## 验收

- [ ] 每条发现一条 issue 文件(字段齐全),索引已加行
- [ ] open 项可被 stage-gate 枚举(README 状态列可过滤)
- [ ] fixed 项含验证证据(commit + 回归测试 + 链接)
- [ ] recorded 项含裁决理由

## 边界(分工)

| 相邻技能 | 分工 |
|---------|------|
| `code-review` | 阶段末评审产出发现 → 入账本技能(评审只管发现,跟踪归这里) |
| `coverage-matrix` | 矩阵缺口 → 入账本技能 |
| `stage-gate` | 门禁枚举 open 项核对(消费本技能的索引) |
| 各类 audit | 领域/文档/产品审计发现的落点(来源审计字段指向报告) |

## 反模式

- 发现只写在审计报告里不入账(门禁看不见)
- fixed 无回归测试/无证据链(「修了」不算数)
- recorded 无理由(变成永久 open 的挡箭牌)
- 编号跳号/覆盖旧 issue
- 关闭后删文件(历史审计轨迹保留)

## 显式调用示例

```text
@audit-item
把 docs/audits/intent-confirmation-impl-audit.md §S2 的 3 条发现入账(severity 见报告)
```

- 入账 N 条 → 产出 N 个 issue 文件 + README 索引 N 行;无参数时先问来源审计报告路径,**不猜**。
- 本技能只做入账与跟踪,不自主触发审计;`disable-model-invocation: true` 时仅用户显式调用。

## 最短真实样例(前置 → 调用 → 产出摘录)

前置:一轮文档审计已产出报告 `docs/audits/xxx-audit.md`,其中 §S2 有 1 条 medium 发现。

产出摘录(`audit-items/007-intent-confirm-missing.md`):

```markdown
# A-007 意图确认缺少驳回分支

- id: 007
- 严重度: medium
- 来源审计: docs/audits/xxx-audit.md §S2
- 状态: open
- 修复 commit:
- 回归测试:
- 关闭证据:

## 发现

意图确认只处理"确认",驳回时流程静默继续(证据:报告 §S2 截图 2)。

## 关闭条件

- [ ] 修复 commit 存在
- [ ] 回归测试红→绿
- [ ] 关闭证据链接
```

索引 README 对应行:

```markdown
| 007 | 意图确认缺少驳回分支 | medium | open | xxx-audit.md §S2 | — |
```

## 失败出口与校验(可观察)

本技能无自带脚本;每步出口都是**文件与文本层面可核对**的检查,不通过就停在原地并报告,不带病入账:

| 情形 | 可观察出口 |
|------|-----------|
| 来源审计路径不存在 | 停止入账该条;回复「来源审计文件不存在: <路径>」,不创建 issue 文件 |
| 发现无证据(只写"感觉有问题") | 退回补证据行号/引用后才入账;issue 文件里「发现」节不得为空 |
| NNN 编号与已有文件冲突(`ls audit-items/ | grep ^NNN` 命中) | 取下一个空闲编号,不覆盖旧文件 |
| 状态改为 fixed 但三要素缺一(commit/回归测试/证据) | 保持 open,回复「三缺一不算 fixed,缺:<字段>」——不许中间态 |
| recorded 无裁决理由 | 不改状态;回复「recorded 需把理由写入关闭证据字段」 |
| 目录不存在 | 创建目录 + README 骨架(这是唯一允许的自动动作) |

## 错法 → 改法(FAQ)

| 错法 | 后果 | 改法 |
|------|------|------|
| 发现只留在审计报告里,不入账 | stage-gate 枚举不到,门禁形同虚设 | 每条发现一条 issue 文件 + 索引行 |
| 修完直接标 fixed,没留测试与证据 | 「修了」不算数,回归无从验证 | 三要素齐了才改 fixed(commit + 回归测试 + 关闭证据) |
| 用 recorded 永久挂起不想修的项 | 变成规避门禁的挡箭牌 | recorded 必须写明裁决理由(如「V2 规模待拍板」),无理由不许 recorded |
| 关闭后删 issue 文件 | 历史审计轨迹丢失,复查无据 | 文件只改状态列,永不删除 |
| 编号随手起(复用已关闭的号) | 索引与文件对不上,门禁误判 | 严格递增 NNN;冲突时取下一个空闲号 |
| 手改 README 索引但不同步 issue 文件 | 两处状态不一致,枚举结果不可信 | 状态变更时先改 issue 文件,再同步索引行 |