mcpField
A
age

age

github.com/paulnsorensen测试与质量19662 次安装6 天前更新
代码仓库

关于 age

age 是面向开发者的代码审查技能,可在合并前或 /press 后检查差异或指定路径,并提供有依据的发现。它按多个维度和严重级别组织审查结果,还可将建议修复交给 /cure。

主要功能

  1. 01审查差异或指定路径
  2. 02检查多个审查维度
  3. 03为发现标注严重级别
  4. 04生成 Markdown 和可选 HTML 报告
  5. 05将发现交给 /cure 处理

适用场景

  1. 01合并前检查代码变更
  2. 02在 /press 后审查路径
  3. 03生成静态 HTML 审查报告

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/paulnsorensen/easy-cheese --skill age

安装后在 Claude Code 中输入/age确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

wedge.toml
assets/
review-flow.svg
references/
commands.md
deslop-go.md
deslop-python.md
deslop-rust.md
deslop-shell.md
deslop-typescript.md
dimensions.md
fan-out.md
handoff-detail.md
packet.md
report-example.md
sub-agent-gate.md
voice.md

详细介绍

/age

在合并前或执行 /press 后,审查差异或指定路径。只要用户需要有证据支撑的观察,而非审批结论,就使用此技能。

阶段入口

运行 python3 skills/age/scripts/age.pyz wheypoint-resolve --ref <slug>。 authoritative 使用记录;其 working_context 是第一批 tilth_read。 not-found 则从冷启动继续;legacy 显示其来源和 slug,然后继续。 遇到 gated、ambiguous 和 error 时停止并显示载荷。 显示提示性发现 stale-commit 和 grounded-path-missing。 将其 record.revision_id 保留为 <base>(§ 基准修订)。

输入

/age [<ref-or-range>] [--scope <path>]... [--slug <slug>] [--effort quick|normal|deep] [--overall] [--full] [--safe] [--open-pr] [--auto] [--hard] [--html]
/age <slug> [--effort quick|normal|deep] [--overall] [--full] [--safe] [--open-pr] [--auto] [--hard] [--html]

每个待审查路径都重复使用 --scope <path>。 每份报告都需要一个 slug。 从 <slug> 表单中获取 slug。 对于指定范围或区间的审查,从 --slug <slug> 获取 slug。 仅当调用方未提供两者时,才用 slugify 推导 slug。 流水线中的调用方始终会传入流水线 slug。

存在十条或更多低严重性发现时,--full 会展开 ## Low 部分。 默认报告会将该部分折叠为一行摘要。

--safe 会重新引入补救措施选择。 --open-pr 会经由 /cure 传递到终端 /plate。 新 PR 遵循 /plate 关于明确选择和审查形式的策略。

进入阶段后,使用 .cheese/press/<slug>.md(如果存在)作为 Press 上下文。

审查当前工作差异。 对于 <ref-or-range>,审查该区间。 用户未提供任何输入时,审查当前工作差异。 如果基准分支不明确,请询问用户,或使用仓库中记录的默认分支。

--auto 是从 /cook --auto 传递而来的自主模式标志。 有关上限规则和完整链路,请参阅 ## Handoff 和 references/handoff-detail.md § 自动模式。

handoff_context.wiki_hits 是来自 /cheese 的可选定向输入。 每条命中项包含 page、line 和 why。 在重新进行依据核验前,先复用每条有效命中项。 在 ## Wiki context 中呈现复用的命中项。

--hard 会经由 /cure 传递到 /plate。 Age 不会触发关卡。 发布前,/plate 会向 /hard-cheese 提供最终核验过的产物状态。

--html 会在 .cheese/age/<slug>.md 旁生成一份静态 HTML 副本。 先写入 Markdown。 然后运行 python3 skills/age/scripts/age.pyz html-report --report .cheese/age/<slug>.md --slug <slug>。 打印返回的路径。 HTML 会在共享的 HTML 外壳中按严重性对发现分组。 输出可离线使用,且不使用 CDN 或 JS。

阅读 ../cheese/references/harness-portability.md,了解辅助工具解析、子 Agent 分派、GitHub 操作和交接转换。 优先使用捆绑的辅助工具或仓库本地辅助工具。 将 ${CLAUDE_SKILL_DIR} 视为宿主可选提供的回退路径。 斜杠命令是宿主环境中的呈现形式,并非控制模型。 以下交接块定义了可移植契约。

审查力度和范围

使用 --effort quick|normal|deep;默认值为 normal。 使用 --overall 对审查目标进行完整的主题分派。 --full 仍用于控制发现项的可见性,而非审查范围。

审查维度

审查正确性、安全性、封装、规范、复杂度、去赘、断言、NIH、效率、遥测、惯例、高度和重新构架。 为每项发现指定 blocker、high、medium 或 low 严重性。 严重性规则和建议格式请参阅 references/dimensions.md。 此工作流不包含 git 历史/先例维度。

流程

/age 审查流程

  1. 确定差异、范围,以及相关规范或问题。 阅读 references/fan-out.md,了解上下文检查清单和确定性规划约定。 收集指令来源,构建上下文,并通过其 bundle 路径运行 scripts/age.pyz age-route。 使用分配结果、工作量、派发批次和能力限制。 在加锁前整理共享证据和计划;不要启动单独的分类 Agent。 锁定范围涵盖审查包,因为审查包属于审查证据。 然后运行 python3 skills/age/scripts/age.pyz review-lock --slug <slug>,锁定生产树。 使用 ## Inputs 中解析出的 slug。 如果生产文件发生变化,第 5 步会拒绝该报告。

  2. 从差异、改动文件、测试和调用方/导入项中收集证据。 运行 python3 skills/age/scripts/age.pyz artifact-path --phase press --slug <slug>,解析上游报告。 运行 python3 skills/age/scripts/age.pyz read-handoff-slug --phase press --slug <slug>,验证其前言。 该命令只返回前言字段。 阅读解析出的文件本身,查找 ## Review follow-ups 小节及每个未解决事项。 将每个未解决事项复制到 ## Press findings 子小节中。 保留该前言中的 artifact 和 baseline 值,供第 5 步使用。 /cure 只读取 .cheese/age/<slug>.md。

    如果不存在 press 报告,但存在 cook 交接记录,则记录 press: skipped(参见 ## Output)。 在交接时打印警告。 如果也不存在 cook 产物,则省略该标记并继续。 如果存在 .cheese/glossary/<slug>.md,则阅读该文件,将命名偏差标记为 deslop 发现项。

  3. 审查每个维度。 没有发现项的维度应省略。 报告所有缺陷,无论其多么轻微。 不要根据主观重要性筛选发现项。 协调后由验证步骤筛选发现项。 不要报告与差异中记录的 baseline: 区块相符的门禁失败。 阅读 ../cook/references/quality-gates.md,了解基线规则。 只报告新增或发生变化的失败。

  4. 逐项计算严重性(基础值 + 位置增幅 + 叠加增幅,最高为 blocker)。 按严重性分组发现项(## Blocker → ## High → ## Medium → ## Low)。 在每个严重性分组内按文件排序发现项。 在写入前,遵循 references/fan-out.md 完成验证和仅深度审查时执行的差距扫描。

  5. 将报告正文写入 .cheese/age/<slug>-body.md。 只写正文。不要将交接前言写入该文件。 不要自行写入 .cheese/age/<slug>.md。由受门禁控制的写入器创建该文件。 先计算建议集合(参见 ## Handoff)。 如果该集合不为空,将 <next> 设为 cure。 如果该集合为空,将 <next> 设为 done。 将 <artifact> 设为第 2 步中的上游报告路径。只有在不存在上游报告时才使用 ""。 将 <baseline> 设为该上游交接记录中的基线区块。只有上游交接记录中没有基线时才省略 --baseline。 运行 python3 skills/age/scripts/age.pyz write-handoff-artifact --phase age [--base <base>] --slug <slug> --status ok --next <next> --artifact "<artifact>" --orientation "<one-line orientation>" --durable-flags "<none | one line per flag>" --baseline "<baseline>" --grounded <path[#start-end]> --body-file ".cheese/age/<slug>-body.md"。

    打印路径。 只有针对该 slug 的新审查包允许恢复;遵循 references/packet.md § Late evidence。 其他变更都需要重新审查。

  6. 交接(参见下文的 ## Handoff)。

子 Agent 扇出

/age 使用上下文 age 路由器(src/easy_cheese/shared/fanout/age_route.py)规划相互独立的审查主题。 机制说明见 references/fan-out.md、references/packet.md 和 references/sub-agent-gate.md。

通过共享的 code-intelligence-routing.md 契约调用每个源代码后端。

输出

跨领域的风格规范和引用格式请参阅 ../cheese/references/formatting.md。 本节定义问题报告的结构。 formatting.md 定义语气规则和脚注基本格式。

受门控的写入器会写入 .cheese/age/<slug>.md。 它会将最小交接 slug 放在顶部。 slug 包含 status、next、artifact、durable_flags、baseline 和一行概述。 通过第 5 步的命令提供每个值。 将下方正文写入 .cheese/age/<slug>-body.md,不要添加前言。 references/report-example.md § 正文顺序定义了章节顺序、确切的问题格式和完整模板。编写正文前请先阅读。

每个问题的 confidence: 请使用 voice-kernel 量表(参见 references/voice.md § 推理立场)。 对于 diff/代码阅读或命令输出中的直接证据,使用 certain。 对于根据间接信号得出的推断,使用 speculating。 不要将 don't know 评级作为问题条目提交。 请收集缺失的证据或删除该主张。 don't know 仅用于报告级别的 ## Confidence 行。 只有用户传入 --full 时,才将被抑制的低置信度项添加到修复选择表中。

审查完成时,设置 status: ok。 审查无法获取证据时,设置 status: halt: <reason>。 遵循交接契约。 根据 ## Handoff 计算出的推荐集合推导 next。 无论 next 的值是什么,都要在报告中保留每个问题。 默认将 durable_flags: 设为 none,与 cook 的门控一致。 如果计划或宿主限制了覆盖范围,请在 durable_flags 和 ## Confidence 中记录实际限制,而不是仅警告规模。 在正文的 ## Agent resolution 下记录已解析的工作器类型。 为每种拓扑记录调度元数据。使用 report-example.md 中的字段。 写入前,使用 scripts/age.pyz review-plan-check 检查已提供的调度观察结果;未提供的观察结果必须明确标记为未观察。

打印 Age report: .cheese/age/<slug>.md。 设置 press: skipped 时,打印以下警告: Warning: no .cheese/press/<slug>.md. Re-run /cook or /press <slug>, or continue with /cure. 用户传入 --html 时,打印 html-report 返回的 HTML 路径。 渲染命令见 ## Inputs 下的 --html。

交接

流程: culture → mold → cook (⇄ press) → [age] → cure → plate

计算建议集合。 使用 all-medium, cheap 复合选项。 纳入中等严重度下限(blocker+high+medium)。 同时纳入每个 Low 且 fix-cost-now: contained 的问题。

决定采取行动还是询问。

这是唯一的选择。## Output 根据它推导 next。 包含受控低严重度问题且没有中等严重度问题的审查,也会得到非空集合。 此类审查将 next 设为 cure,并在报告中保留所有低严重度问题。

  • 集合为空 — 将 next 设为 done。打印报告路径。停止。
  • 有理由询问 — 如果集合成员的 fix-cost-now: sprawling 或 fix-cost-later: structural,则询问。 如果两个问题相互冲突,也要询问。 如果用户传入 --safe,也要询问。 先阅读 references/handoff-detail.md。 按 ../cheese/references/handoff-gate.md 呈现决策关卡。 预先选择复合选项。标记每个高成本行。
  • 否则 — 采取行动。宣布选择。按照 references/handoff-detail.md § Dispatch 调用 /cure。不要呈现决策关卡。

--auto 会替换为严重度下限选择及其专属链路。 运行 --auto 前,先阅读 references/handoff-detail.md § Auto mode。 该文件还定义了 /cook 的 fan 路径下的无链路覆盖规则。

规则

审查不是裁决。 说明该看哪里以及原因。 不要编辑生产文件。 第 1 步的审查锁会强制执行此规则。 /cure 会应用每项修复。 如果门禁失败与记录的 baseline: 块相符,不要据此提出问题。 默认采取行动。 自动选择建议集合。 无需决策关卡,直接调用 /cure。 只有确有理由或启用了 --safe 时才先询问。 将空的建议集合视为干净地停止,而不是提问。 不要捏造证据。 引用文件、差异、命令或不可用源的说明。 如果差异没有问题,就明确认可。 将空维度视为有效结果,而不是需要填补的缺口。 在报告和每项问题中使用定性置信度(certain | speculating | don't know)。 绝不使用数字评分。 为每项问题提供位置和建议。 按照 references/report-example.md 编写 recommendation: 和可选的 invariants:。 不要添加 JSON 伴随文件或锚定标签的修复载荷。 /cure 会直接读取 Markdown。 遵循 references/voice.md(输出规范、推理立场、置信度词汇)。

参考资料

  • 阅读生成的命令清单:references/commands.md。
  • 对问题评级前,阅读 references/dimensions.md。
  • 每次审查前,阅读 references/fan-out.md。
  • 组装扇出上下文包前,阅读 references/packet.md。
  • 派发子 Agent 前,阅读 references/sub-agent-gate.md。
  • 进行选择决策或派发 /cure 前,阅读 references/handoff-detail.md。
  • 撰写报告正文前,阅读 references/report-example.md § Body order。
  • 收集证据前,阅读 references/packet.md § Evidence tools and fallbacks。
  • 运行 --auto 前,阅读 references/handoff-detail.md § Auto mode。
  • 撰写报告前,阅读 references/voice.md。
  • 对 deslop 评级前,阅读适用的 Rust、TypeScript、Python、Shell 或 Go 目录。

Agent 解析

通过 ../cheese/references/agent-resolution.md 解析每位主题工作者和全新上下文审查者。

工作首选类型权限/隔离最低能力工作量回退方案
审查差异或指定主题reviewer只读、全新上下文强大高兼容的审查者,然后是通用类型

路由器会将每项任务的 effort 设为 low、medium 或 high。 将该任务值传递给工作者,而不是使用计划中的 quick、normal 或 deep 审查模式。

报告正文在 ## Agent resolution 下包含共享的 agent_resolution 块。

评论

支持 Markdown