Agent Skills › doodledood/manifest-dev › review-pr-judgment

review-pr-judgment

GitHub

用于PR整体价值评估,判断变更是否值得存在。基于具体证据触发必要性及痛点重构等检查,仅提出非阻塞性问题,不针对行级细节。

claude-plugins/manifest-dev-tools/skills/review-pr-judgment/SKILL.md doodledood/manifest-dev

触发场景

PR整体或重大组件的价值与必要性评估 变更是否存在重复功能、无效守卫或缺乏实际消费者

安装

npx skills add doodledood/manifest-dev --skill review-pr-judgment -g -y
更多选项

非标准路径

npx skills add https://github.com/doodledood/manifest-dev/tree/main/claude-plugins/manifest-dev-tools/skills/review-pr-judgment -g -y

不安装直接使用

npx skills use doodledood/manifest-dev@review-pr-judgment

指定 Agent (Claude Code)

npx skills add doodledood/manifest-dev --skill review-pr-judgment -a claude-code -g -y

安装 repo 全部 skill

npx skills add doodledood/manifest-dev --all -g -y

预览 repo 内 skill

npx skills add doodledood/manifest-dev --list

SKILL.md

Frontmatter
{
    "name": "review-pr-judgment",
    "description": "Called by review-pr in both of its modes: the whole-PR premise check that asks whether a change earns its keep against the pain it solves, firing only on concrete evidence and returning non-blocking author-facing questions, one per root, with no severity. Not for direct use.",
    "user-invocable": false
}

review-pr-judgment

The reviewer-fleet dimensions find defects inside a change whose intent is taken as given — they judge implementation against explicit requirements and weigh the author's rationale as evidence. The judgment pass adds the one thing they structurally cannot: it asks whether the change earns its keep — whether it should exist, in this shape, at this footprint, given the pain it claims to solve.

The single question: Does this change — its existence, its approach, and its footprint — earn its keep against the pain it solves, and is anything the pain requires missing?

It runs as a wide-context pass. Receives: the PR description, the PR conversation, the codebase direction, the full PR-head diff (base..head, the whole PR), and, in manifest mode, the manifest's Intent as the stated pain. It is non-blocking: every finding is a question the author answers, never a gate. The caller decides where this runs and gates fresh generation to once per PR; this skill only judges and returns.

Altitude — whole-PR only

The judgment pass operates on the PR as a whole, or a major component of it — the big question, never line-level ones. It must never fire on a small-item nitpick — an unused parameter, a single narrow helper, one incidental line; those belong to the defect dimensions or are dropped. The surface, omission, and precedent triggers fire only on a material footprint: a subsystem, a new public API area, a cluster of knobs, an established pattern — never a single incidental item.

Whole-PR altitude is unconditional: whenever the pass runs, it reads the entire PR head, not just the incrementally-reviewed range on a loop or re-review pass, so its question always concerns the whole change. Judgment findings are therefore exempt from any reviewed-range bounding that scopes defect findings to the latest delta.

The evidence bar

The pass exists to remove noise (unjustified changes, orphaned surface). It becomes noise the instant it fires on taste. So every trigger fires only on concrete, nameable evidence — something you can point at. "I'd have done it differently" is not evidence and stays dropped, just as implementation review requires evidence rather than a competing preference. When in doubt, stay silent: a missed premise question costs less than an arrogant one.

Triggers

Each trigger carries what it fires on (concrete evidence) and what it never fires on (taste / nitpick).

1. Necessity

  • Fires on: the change, or a major part of it, duplicates a capability that already exists (point to it), guards a condition that cannot occur, or solves a problem no consumer, caller, or issue actually has.
  • Never: "I wouldn't have built this," with no already-exists or no-consumer anchor to point at.

2. Pain reconstructable

  • Fires on: the pain the change claims to solve cannot be reconstructed from any source — PR description, commits, linked issue, or (manifest mode) the manifest's Intent. Surfaced as a question ("what pain does this solve?"), not a verdict.
  • Never: the pain is stated but you personally find it unconvincing.

3. Surface proportionality

  • Fires on: the change adds material surface — a new public API area, a cluster of options or flags, a new configuration concept — with no consumer in the same change and no stated need for one.
  • Never: one unused parameter or a single narrow helper — that is a defect-dimension / dead-code concern, not this pass.

4. Solution-shape

  • Fires on: a materially simpler or more direct solution to the same pain is concretely nameable — the one-line-upstream fix, the existing primitive that removes the whole mechanism. When a change modifies a shared core, runtime, or framework, test whether the whole capability is expressible through the existing extension surface instead. The evidence is the specific contract members — hooks, tool interfaces, options, middleware, or public functions — that together supply every capability the feature needs. If even one required capability is missing, this ground does not fire.
  • Never: "I'd architect it differently," with no concretely simpler solution to point at.

5. Omission-vs-pain

  • Fires on: the change leaves out something the stated pain demonstrably requires — a path or consumer the pain needs that is absent from the change and uncovered elsewhere. Name the missing piece.
  • Never: "you could also add X," where X is not required by the stated pain.

6. Irreversibility

  • Fires on: the change touches a named one-way-door surface — a schema migration, a public API signature, a persisted data format, a security boundary. The finding is "this is hard to undo — deliberate?", not a defect claim.
  • Never: reversible internal code.

7. Precedent

  • Fires on: the change introduces a new pattern already repeated within it, or clearly positioned to be copied — point to the pattern and its likely propagation.
  • Never: a one-off you simply dislike stylistically.

Findings are a distinct class — not a severity

A judgment finding is not placed on the defect severity scale (low / medium / high / critical). That scale measures defect badness and blocking weight; a premise question is a different axis — non-blocking, yet sometimes the most important thing about the PR. Each judgment finding carries exactly:

{ trigger, concrete evidence, author-facing question }

and no severity. Return shape: the list of such findings, already collapsed to one per root (below), or an empty list. This is load-bearing, not cosmetic:

  • The caller's consolidation step drops Low-severity fleet findings other than defect-class before posting — the only place a drop-Low filter exists, and only because it posts publicly. A judgment finding tagged Low would be silently deleted there. So judgment findings are exempt from the drop-Low filter and carry their own inclusion rule: surface if the evidence-gate fired and the PR does not already cover the point. They are still deduped and merged like any other finding.
  • Manifest-mode contract verification and /do gate verification keep low findings by their own acceptance thresholds; the judgment class is orthogonal to all of that.

Synthesis — one question per root

When several triggers fire on the same root — necessity + solution-shape + surface all pointing at one over-built change — collapse them into one "does this earn its keep, here's why I ask" question. Never post one comment per trigger. The pass does this collapsing itself, before returning, so one-question-per-root holds in every mode (it does not depend on any later consolidation step — which merely dedupes the already-synthesized questions against defect findings on top). Enumeration is exactly how this pass would become the noise it exists to remove.

Non-blocking — always a question, never a gate

Every judgment finding is posted as an author-answerable question through the existing review voice and posting path. The judgment pass:

  • never blocks a merge, submits request_changes, or auto-approves;
  • adds no new posting path — findings ride the existing single batched review and hidden self-marker;
  • in manifest mode, is strictly additive — the manifest contract's PASS/FAIL is computed exactly as it would be without the pass, untouched by any judgment finding.

If nothing clears the evidence bar, the pass stays silent. Silence is the expected default on a sound change.

版本历史

  • 927bf32 当前 2026-11-03 11:09

    清理冗余历史说明,明确比较逻辑,精简表述以消除矛盾,无规则实质变更。

  • d76241f 2026-09-28 09:21

    默认启用持久化结果和基于理由的预防机制

  • 3fc997a 2026-09-22 22:25

同 Skill 集合

.claude/skills/auto-optimize-prompt/SKILL.md
.claude/skills/compress-prompt/SKILL.md
.claude/skills/harden-task-file/SKILL.md
.claude/skills/learn-from-session/SKILL.md
.claude/skills/optimize-prompt-token-efficiency/SKILL.md
.claude/skills/sync-claude-code-plugins/SKILL.md
.claude/skills/sync-tools/SKILL.md
claude-plugins/manifest-dev-tools/skills/babysit-pr/SKILL.md
claude-plugins/manifest-dev-tools/skills/eli5/SKILL.md
claude-plugins/manifest-dev-tools/skills/handoff/SKILL.md
claude-plugins/manifest-dev-tools/skills/manifest-to-goal/SKILL.md
claude-plugins/manifest-dev-tools/skills/prompt-engineering/SKILL.md
claude-plugins/manifest-dev-tools/skills/re-pitch/SKILL.md
claude-plugins/manifest-dev-tools/skills/review-pr-holistic/SKILL.md
claude-plugins/manifest-dev-tools/skills/review-pr-thread-verify/SKILL.md
claude-plugins/manifest-dev-tools/skills/review-pr/SKILL.md
claude-plugins/manifest-dev-tools/skills/review-prompt/SKILL.md
claude-plugins/manifest-dev-tools/skills/walk-pr/SKILL.md
claude-plugins/manifest-dev-tools/skills/write-goal/SKILL.md
claude-plugins/manifest-dev/skills/auto/SKILL.md
claude-plugins/manifest-dev/skills/check-pr/SKILL.md
claude-plugins/manifest-dev/skills/define/SKILL.md
claude-plugins/manifest-dev/skills/design/SKILL.md
claude-plugins/manifest-dev/skills/do/SKILL.md
claude-plugins/manifest-dev/skills/done/SKILL.md
claude-plugins/manifest-dev/skills/escalate/SKILL.md
claude-plugins/manifest-dev/skills/figure-out-team/SKILL.md
claude-plugins/manifest-dev/skills/figure-out/SKILL.md
claude-plugins/manifest-dev/skills/init-context/SKILL.md
claude-plugins/manifest-dev/skills/just-auto/SKILL.md
claude-plugins/manifest-dev/skills/just-do/SKILL.md
claude-plugins/manifest-dev/skills/next-ticket/SKILL.md
claude-plugins/manifest-dev/skills/poll-slack/SKILL.md
claude-plugins/manifest-dev/skills/review-design/SKILL.md
claude-plugins/manifest-dev/skills/review-writing/SKILL.md
claude-plugins/manifest-dev/skills/run-ticket/SKILL.md
claude-plugins/manifest-dev/skills/sweep-tickets/SKILL.md
claude-plugins/manifest-dev/skills/ticket-up/SKILL.md
claude-plugins/PLUGIN_TEMPLATE/skills/example/SKILL.md
claude-plugins/manifest-dev-tools/skills/teach-me/SKILL.md
claude-plugins/manifest-dev/skills/chat-surface/SKILL.md
claude-plugins/manifest-dev/skills/manifest-dev-help/SKILL.md
claude-plugins/manifest-dev/skills/orchestrate/SKILL.md
claude-plugins/manifest-dev/skills/review-code/SKILL.md
claude-plugins/manifest-dev/skills/setup-project/SKILL.md

元信息

文件数
0
版本
927bf32
Hash
b8471e60
收录时间
2026-09-22 22:25

首页 - Wiki
Copyright © 2011-2026 iteam. Current version is 2.156.0. UTC+08:00, 2026-11-06 01:27
浙ICP备14020137号-1