Agent Skills › gmickel/flow-next › flow-next-impl-review

flow-next-impl-review

GitHub

协调配置的后端代理对代码变更进行实施审查,支持任务级审查焦点、多后端路由及深度验证模式。

plugins/flow-next/codex/skills/flow-next-impl-review/SKILL.md gmickel/flow-next

Trigger Scenarios

请求审查代码或差异 执行 flow-next 仓库的评审流程

Install

npx skills add gmickel/flow-next --skill flow-next-impl-review -g -y
More Options

Non-standard path

npx skills add https://github.com/gmickel/flow-next/tree/main/plugins/flow-next/codex/skills/flow-next-impl-review -g -y

Use without installing

npx skills use gmickel/flow-next@flow-next-impl-review

指定 Agent (Claude Code)

npx skills add gmickel/flow-next --skill flow-next-impl-review -a claude-code -g -y

安装 repo 全部 skill

npx skills add gmickel/flow-next --all -g -y

预览 repo 内 skill

npx skills add gmickel/flow-next --list

SKILL.md

Frontmatter
{
    "name": "flow-next-impl-review",
    "description": "Carmack-level implementation review of changes via the configured backend. Use when asked to review code or a diff in a flow-next repo.",
    "user-invocable": false
}

Implementation review

You coordinate; the configured backend reviews. Never author a verdict yourself, and use one backend for the whole review. Read working-rules.md first: its Review section decides which findings you fix.

Arguments: [task id] [--base <commit>] [--review=<backend>] [--deep[=passes]] [--validate] [--interactive] [--no-triage] [focus areas]. Without --base the whole branch is reviewed against main. A spec or branch review passes no id.

1. Setup

One Bash call; fill the three literals from the arguments.

set -e
FLOWCTL="${CODEX_HOME:-$HOME/.codex}/scripts/flowctl"
[ -x "$FLOWCTL" ] || FLOWCTL="<plugin-root>/scripts/flowctl"   # <plugin-root> = the directory two levels above this skill's SKILL.md file (the harness gave you that file's absolute path when the skill loaded); substitute it literally
[ -x "$FLOWCTL" ] || FLOWCTL=".flow/bin/flowctl"
REVIEW_ID="<task id, or empty for a spec or branch review>"
BACKEND="<value of --review, or empty>"
DIFF_BASE="<value of --base, or empty>"
[ -n "$BACKEND" ] || BACKEND=$("$FLOWCTL" review-backend "$REVIEW_ID")
[ -n "$DIFF_BASE" ] || { DIFF_BASE=main; git rev-parse -q --verify main >/dev/null || DIFF_BASE=master; }
echo "FLOWCTL=$FLOWCTL BACKEND=$BACKEND DIFF_BASE=$DIFF_BASE"
git diff --shortstat "$DIFF_BASE"...HEAD
  • ASK: stop; no backend is configured (/flow-next:setup, or pass --review=<backend>).
  • none: no review; say so.
  • rp or export: removed; tell the user in one line "RepoPrompt review (rp, export) was removed in flow-next 8.0.0; review backends: claude, codex, copilot, cursor, host." and stop as for ASK.
  • host, any of --deep, --validate, --interactive, --no-triage, FLOW_VALIDATE_REVIEW=1 or FLOW_REVIEW_DEEP=1 in the environment, or an instruction about the reviewers ("one reviewer", "three model families"): read other-paths.md and follow it and the backend's workflow file to the end. That file owns the verdict, fix and re-review handling; of step 4, only the OVERRIDDEN: line ending an unattended loop applies, never its fix pass or re-review.
  • claude when a Claude model wrote the change: say once that this review is same-family, then continue.

Shell state does not survive between Bash calls: each block below resolves FLOWCTL again and takes REVIEW_ID, DIFF_BASE and BACKEND as literals.

The panel, on every backend. The first round runs one reviewer for a small diff in one area (one module or feature, not spread across subsystems) that touches no persisted or shared state, concurrency, security or data layout, and three otherwise, one per lens: correctness, contracts, integration. The re-review after fixes runs one reviewer. You make the call; flowctl runs it.

2. CLI review

For codex, claude, copilot and cursor. Run each review command as one blocking foreground Bash call with a 600-second timeout. Never run it in the background: its completion would not resume you.

FLOWCTL="${CODEX_HOME:-$HOME/.codex}/scripts/flowctl"
[ -x "$FLOWCTL" ] || FLOWCTL="<plugin-root>/scripts/flowctl"   # <plugin-root> = the directory two levels above this skill's SKILL.md file (the harness gave you that file's absolute path when the skill loaded); substitute it literally
[ -x "$FLOWCTL" ] || FLOWCTL=".flow/bin/flowctl"
REVIEW_ID="<literal or empty>"; DIFF_BASE="<literal>"; BACKEND="<literal>"
ROUTE="$("$FLOWCTL" review-route ${REVIEW_ID:+"$REVIEW_ID"} --rotate-stale --json)" || { printf '%s\n' "$ROUTE" >&2; exit 1; }
ACTION="$(jq -r '.action' <<<"$ROUTE")"; TASK_ID="$(jq -r '.task_id // empty' <<<"$ROUTE")"
RECEIPT_PATH="$(jq -r '.receipt_path' <<<"$ROUTE")"
echo "TASK_ID=$TASK_ID RECEIPT_PATH=$RECEIPT_PATH"
case "$ACTION" in
  stop) jq -r '.message' <<<"$ROUTE" >&2; exit 1 ;;
  fix-then-rereview) echo "RESUMED: the receipt holds findings still to fix; go to step 4"; exit 0 ;;
esac
TRIAGE=(--receipt "$RECEIPT_PATH" --base "$DIFF_BASE" --no-llm); [ -n "$TASK_ID" ] && TRIAGE+=(--task "$TASK_ID")
if OUT=$("$FLOWCTL" triage-skip --json "${TRIAGE[@]}" 2>/dev/null); then
  echo "Triage-skip: $(jq -r '.reason // "trivial diff"' <<<"$OUT")"; echo "VERDICT=SHIP"; exit 0
fi
args=(); [ -n "$TASK_ID" ] && args+=("$TASK_ID")
args+=(--base "$DIFF_BASE" --receipt "$RECEIPT_PATH" --json)
ONE_REVIEWER=0   # 1 when the panel rule above calls for one reviewer
[ "$ONE_REVIEWER" = 1 ] && args+=(--draw correctness)
"$FLOWCTL" "$BACKEND" impl-review-fanout "${args[@]}"

Pass the caller's focus areas with --focus "<areas>", or else the review focus the project's instructions state, for task and branch reviews alike. Triage passing means lockfile, docs, release or generated files only: the review is done.

3. Merge and finalize

The fan-out JSON lists each draw's <axis>.review.md, its rid, and the finalize command. Read each review and write a merge plan to a file: {"keep":["correctness:1"],"collapse":{"contracts:2":"correctness:1"}}, where references are <axis>:<finding number>. Collapse findings that describe the same defect onto the one with the strongest evidence; leave out findings with no concrete failing scenario in the change. Then, in the foreground:

FLOWCTL="${CODEX_HOME:-$HOME/.codex}/scripts/flowctl"
[ -x "$FLOWCTL" ] || FLOWCTL="<plugin-root>/scripts/flowctl"   # <plugin-root> = the directory two levels above this skill's SKILL.md file (the harness gave you that file's absolute path when the skill loaded); substitute it literally
[ -x "$FLOWCTL" ] || FLOWCTL=".flow/bin/flowctl"
BACKEND="<literal>"
"$FLOWCTL" "$BACKEND" impl-review-fanout-finalize --rid "<rid>" --merge-plan "<plan path>" --json

flowctl computes the verdict (the worst draw wins; failed draws do not vote) and writes the receipt. Report VERDICT=<verdict> with the kept findings; your own reading never changes it. Finalize before you change or commit anything: a commit moves HEAD past the reviewed head, flowctl refuses the round, and the retry is a full fresh review instead of the scoped re-review.

4. Act on the verdict (every backend)

  • SHIP: done. Report the verdict and any follow-ups.
  • MAJOR_RETHINK: the approach is wrong. Stop with BLOCKED: DESIGN_CONFLICT and the reviewer's rationale; do not patch finding by finding.
  • NEEDS_HUMAN (flowctl reports it as ESCALATE: reviewer requested human review): stop and hand the reviewer's question to the person. Unattended, when that question is a human call that does not block the rest of the work (working-rules-unattended.md), run the NEEDS_WORK fix pass below instead, declining the call itself with Declined #<n>: open item for the person; when that loop ends, print OPEN_ITEM: <the question> after the verdict. The caller completes the task on it and the pull request opens as a draft.
  • NEEDS_WORK: on the path above, read references/fix-pass.md and run its one fix pass and re-review; a path through other-paths.md runs its workflow file's fix loop.

On any backend, when an unattended loop ends with the reviewer keeping only findings you declined under working-rules.md's rule, all below Major, print OVERRIDDEN: <n> declined findings with each finding and both sides' reasons after VERDICT=NEEDS_WORK; the caller completes the task on it.

If a review command ends without a verdict (a transport error), retry it once, unless its CLI message: reports a usage, credit or spend limit: a retry fails the same way, so report that message and stop. ESCALATE: (other than the NEEDS_HUMAN case above), TRANSPORT_UNHEALTHY, NOT_RETRYABLE: and other refusals end this review: report the message as printed and stop. Never widen the reviewer's sandbox, call the reviewer CLI directly, or reset review state to get past one.

Version History

  • 4eba935 Current 2026-10-19 16:48

    新增任务级审查焦点支持;修复 Windows jq 问题;移除 RepoPrompt 后端;优化测试临时目录隔离。

  • 7db792a 2026-09-28 08:12

    修复无头运行正确性审计问题,包括保留审查状态、处理接收回执及控制字绕过等修正。

  • b91f43c 2026-09-22 21:15

    重构路由矩阵优先级逻辑,移除重复规则;完善 fn-238 审查回执与完成检查。

  • c9f7a79 2026-09-09 15:22

    新增Claude CLI作为审查后端支持,优化模型解析与错误处理机制。

  • cd9ddf8 2026-08-28 18:46

    修复 land 流程中同步状态旁路文件的 git add 命名问题;完善完成审查状态的词汇定义与调度逻辑;修正实施审查边界与更广泛的关闭者清单。

  • 8baa538 2026-08-20 07:58

Same Skill Collection

optimization/audit/baseline/SKILL.md
optimization/interview/baseline/SKILL.md
optimization/make-pr/baseline/SKILL.md
optimization/plan/baseline/SKILL.md
optimization/prospect/baseline/SKILL.md
plugins/flow-next/codex/skills/flow-next-audit/SKILL.md
plugins/flow-next/codex/skills/flow-next-capture/SKILL.md
plugins/flow-next/codex/skills/flow-next-chart/SKILL.md
plugins/flow-next/codex/skills/flow-next-deps/SKILL.md
plugins/flow-next/codex/skills/flow-next-export-context/SKILL.md
plugins/flow-next/codex/skills/flow-next-features/SKILL.md
plugins/flow-next/codex/skills/flow-next-flow/SKILL.md
plugins/flow-next/codex/skills/flow-next-guide/SKILL.md
plugins/flow-next/codex/skills/flow-next-interview/SKILL.md
plugins/flow-next/codex/skills/flow-next-land/SKILL.md
plugins/flow-next/codex/skills/flow-next-make-pr/SKILL.md
plugins/flow-next/codex/skills/flow-next-map/SKILL.md
plugins/flow-next/codex/skills/flow-next-memory-migrate/SKILL.md
plugins/flow-next/codex/skills/flow-next-pilot/SKILL.md
plugins/flow-next/codex/skills/flow-next-plan-review/SKILL.md
plugins/flow-next/codex/skills/flow-next-plan/SKILL.md
plugins/flow-next/codex/skills/flow-next-prime/SKILL.md
plugins/flow-next/codex/skills/flow-next-prose/SKILL.md
plugins/flow-next/codex/skills/flow-next-prospect/SKILL.md
plugins/flow-next/codex/skills/flow-next-qa/SKILL.md
plugins/flow-next/codex/skills/flow-next-ralph-init/SKILL.md
plugins/flow-next/codex/skills/flow-next-resolve-pr/SKILL.md
plugins/flow-next/codex/skills/flow-next-setup/SKILL.md
plugins/flow-next/codex/skills/flow-next-spec-completion-review/SKILL.md
plugins/flow-next/codex/skills/flow-next-strategy/SKILL.md
plugins/flow-next/codex/skills/flow-next-sync/SKILL.md
plugins/flow-next/codex/skills/flow-next-tracker-sync/SKILL.md
plugins/flow-next/codex/skills/flow-next-visual/SKILL.md
plugins/flow-next/codex/skills/flow-next-work-rolling/SKILL.md
plugins/flow-next/codex/skills/flow-next-work/SKILL.md
plugins/flow-next/codex/skills/flow-next-worktree-kit/SKILL.md
plugins/flow-next/codex/skills/flow-next/SKILL.md
plugins/flow-next/skills/flow-next-chart/SKILL.md
plugins/flow-next/skills/flow-next-deps/SKILL.md
plugins/flow-next/skills/flow-next-export-context/SKILL.md
plugins/flow-next/skills/flow-next-features/SKILL.md
plugins/flow-next/skills/flow-next-guide/SKILL.md
plugins/flow-next/skills/flow-next-impl-review/SKILL.md
plugins/flow-next/skills/flow-next-interview/SKILL.md
plugins/flow-next/skills/flow-next-land/SKILL.md
plugins/flow-next/skills/flow-next-make-pr/SKILL.md
plugins/flow-next/skills/flow-next-map/SKILL.md
plugins/flow-next/skills/flow-next-pilot/SKILL.md
plugins/flow-next/skills/flow-next-plan-review/SKILL.md

Metadata

Files
0
Version
4eba935
Hash
d57dc294
Indexed
2026-08-20 07:58

Accueil - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-10-31 11:38
浙ICP备14020137号-1