名称: flatnotes-tasksmd-github-audit
描述: "全面审计 Tasks.md 与 Flatnotes 系统,确保其准确性与时效性;以 GitHub (gh CLI) 为事实来源,检测过时笔记/卡片与缺失链接。生成审计报告及可选的修复方案。"
当 Brandon 要求审计 Flatnotes/Tasks.md 系统,以确保其准确且最新,并以 GitHub 为事实来源时,请使用此技能。
运行内置的审计脚本(仅生成报告):
node skills/flatnotes-tasksmd-github-audit/scripts/audit.mjs --since-days 30 --write
输出:
- Markdown 报告:tmp/flatnotes-tasksmd-audit.md
- JSON 报告:tmp/flatnotes-tasksmd-audit.json
如果
gh未认证,审计仍会运行,但 GitHub 相关检查将标记为SKIPPED_GITHUB。
/home/ds/.config/appdata/tasksmd/tasks/home/ds/.config/appdata/flatnotes/datanotes/resources/flatnotes-system/可通过环境变量覆盖:
- TASKS_ROOT
- FLATNOTES_ROOT
00 Inbox, 05 Backlog, 10 Next, 20 Doing, 30 Blocked, 40 Waiting, 90 Done。prio-p2 默认应位于 05 Backlog 中(10 Next 中不应有 prio-p2)。Unblock: 说明。Flatnotes: ...)。对于 SYS Workspace - Project Registry 中的每个活跃项目:
- 必需的项目笔记存在:
- PJT <slug> - 00 Overview
- PJT <slug> - 10 Research
- PJT <slug> - 20 Plan
- PJT <slug> - 90 Log
- 中心笔记 (Hub Note) 包含:
- 当前状态(1–3 条要点)
- 链接部分,包含仓库地址与 Tasks 筛选器
- 决策部分,链接到相关 ADR 笔记
对于注册表中的每个项目仓库:
- 开放的 PR 应有对应的 Tasks 卡片(位于 Doing/Next/Blocked/Waiting 中)或明确说明为何没有。
- 最近合并的 PR 应在系统中有所体现:
- 最好在项目日志 (PJT <slug> - 90 Log) 中有简短记录,并更新中心笔记状态;或
- 在 Done 卡片中包含 PR 链接。
- (审计将以上任一种视为已核对;如果合并的 PR 仅存在于 Done 卡片但未记入日志,可能会发出警告。)
- Done 卡片在通过 PR 交付工作时,理想情况下应包含 PR 链接。
1) 解析注册表
- 从 Flatnotes 读取 SYS Workspace - Project Registry。
- 提取:项目标识符 (slug)、状态、Tasks 标签、GitHub 仓库 URL。
2) 扫描 Tasks.md
- 按泳道和 proj-* 标签索引卡片。
- 标记违反泳道规则的情况(如 prio-p2 在 Next 中等)。
- 标记缺少 Flatnotes 引用链接的卡片。
3) 扫描 Flatnotes
- 检查必需的项目笔记是否存在。
- 检查中心笔记的决策部分是否链接了 ADR 笔记。
4) GitHub 交叉核对
- 使用 gh 命令:
- gh pr list --state open --json ...
- gh pr list --state merged --search "merged:>=<date>" --json ...(或等效命令)
- 尝试通过以下方式匹配 PR ↔ Tasks 卡片:
- 卡片内容中的 PR URL
- PR 编号
- 标题子字符串启发式匹配
5) 生成报告
- 输出:摘要 + 按项目列出的差异清单 + 修复方案。
默认模式为仅生成报告。
如果 Brandon 明确要求应用修复:
- 允许的自动安全修复:
- 使用现有模板创建缺失的 Flatnotes 笔记(如 10 Research 等)
- 为中心笔记的决策部分添加缺失的 ADR 链接
- 将 prio-p2 卡片从 Next 移至 Backlog
- 为 Tasks 卡片添加缺失的 Flatnotes 引用链接
- 任何涉及重命名文件或删除内容的操作: 需先询问确认。
scripts/audit.mjs — 生成报告(Markdown + JSON)。如需修改,请优先考虑修补此文件,而非重写。