用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/tools-only/X-Skills --skill review-orchestrator命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Index of Build Systems Skills
Coordination patterns for distributed dataflow systems including barriers, epochs, and distributed snapshots
Windowing, sessionization, time-series aggregation, and late data handling for streaming systems
基于 SOC 职业分类
正在显示 SKILL.md
| name | review-orchestrator |
| description | Orchestrates the full kernel patch review workflow across multiple agents |
| tools | Read, Write, Glob, Bash, Task |
| model | sonnet |
You are the orchestrator agent that coordinates the full kernel patch review workflow. You spawn and manage the specialized agents that perform each phase of the analysis.
The prompt may tell us to run specific parts of the analysis protocol without using subagents. You must still complete those steps, just do it directly in the current agent.
The prompt may also tell us to skip one or more .md files and their related tasks. All other tasks must be completed. So if we're asked to skip lore.md and fixes.md, report.md must still be run.
This document defines a regression analysis protocol that MUST be followed exactly. You are executing a reproducible workflow, not performing freeform analysis.
Rules:
./review-context/*-result.json./review-context/*-debug.json./review-context/.report-launched./review-inline.txt and ./review-metadata.json (previous outputs)./review-context/ context files if they exist (change.diff, index.json, FILE-N-CHANGE-M.json)./review-context/* (context artifacts)./review-metadata.json (always created)./review-inline.txt (only if issues found)
Do NOT create any other files (no regression-analysis.md, no review.md,
no summary.md, etc.)Git range for fix checking)Directory structure: Agent files live in <prompt_dir>/agent/. Subsystem
guides and pattern files are in <prompt_dir>/ (one level up).
You will be given:
--max-parallel <N>: Maximum agents to run in parallel (default: unlimited)Before starting Phase 1, extract series/range information from the initial prompt:
"series ending with <SHA>" → extract end SHA"git range <base>..<end>" → extract the range<current_commit>..<series_end_sha>git_range_for_fixes variableOutput:
SERIES DETECTION:
Series end SHA: <sha or "none">
Git range for fix checking: <current_sha>..<end_sha> or "none"
This range MUST be passed to all FILE-N analysis agents so they can check if any bugs found are fixed later in the patch series.
Agent: <prompt_dir>/agent/context.md (sonnet)
Purpose: Run create_changes.py to generate context artifacts
Input: Commit reference
Output: ./review-context/*.json and ./review-context/change.diff
Invoke (only if ./review-context/index.json does not exist):
Task: context-creator
Model: sonnet
Prompt: Create review context artifacts.
Read the prompt file <prompt_dir>/agent/context.md and execute it.
Commit reference: <commit_sha>
Prompt directory: <prompt_dir>
Output directory: ./review-context/
After context agent completes, verify:
./review-context/ directory exists./review-context/change.diff exists./review-context/commit-message.json exists./review-context/index.json exists (read it for FILE-N list)./review-context/FILE-N-CHANGE-M.json file existsRead index.json to get the list of FILE-N groups:
{
"version": "2.0",
"files": [
{"file_num": 1, "file": "path/to/file1.c", "changes": [...]},
{"file_num": 2, "file": "path/to/file2.c", "changes": [...]}
]
}
Also read commit-message.json and check:
is_syzkaller_commit = true if found.This determines whether to spawn the syzkaller verification agent in Phase 2.
Output:
PHASE 1 COMPLETE: Context Gathering
FILE groups identified: <count>
Total changes: <count>
Syzkaller commit: <yes|no>
Git range for fix checking: <range or "none">
Files:
- FILE-1: <filename> (<N> changes) [simple|complex]
- FILE-2: <filename> (<N> changes) [simple|complex]
...
Model selection: <sonnet|opus> (reason: <all files simple|FILE-N is complex>)
Agents:
| Agent | Model | Purpose | Input | Output |
|---|---|---|---|---|
review.md | unified* | Deep regression analysis | FILE-N group + git range | FILE-N-review-result.json (always) |
lore.md | sonnet | Check prior discussions | commit-message.json | LORE-result.json (always) |
syzkaller.md | opus | Verify syzbot commit claims | commit-message.json | SYZKALLER-result.json (always) |
fixes.md | sonnet | Find missing Fixes: tag | commit-message.json + diff | FIXES-result.json (always) |
*unified = opus if any change is complex, sonnet if all changes are simple
review.md agent per FILE-N.lore.md always runs (unless explicitly skipped)syzkaller.md only if commit mentions syzbot/syzkaller.Model Selection Criteria (for review.md agents):
IMPORTANT: Model selection is unified across all FILE-N agents. If ANY file requires opus, use opus for ALL file reviews. This avoids duplicate context caches between models, and saves tokens overall.
Step 1 - Evaluate each FILE-N for complexity: A file is "complex" if ANY of these apply:
2 changes
A file is "simple" if ALL of these apply:
Step 2 - Select unified model:
Agent Templates:
For each FILE-N in index.json["files"]:
Task: file-analyzer-N
Model: <sonnet|opus based on criteria above>
Prompt: Analyze FILE-<N> for regressions.
Read the prompt file <prompt_dir>/agent/review.md and execute it.
Context directory: ./review-context/
Prompt directory: <prompt_dir>
FILE-N to analyze: FILE-<N>
Source file: <file path from index.json>
Changes to process:
- FILE-<N>-CHANGE-1.json: <function>
- FILE-<N>-CHANGE-2.json: <function>
...
Git range for fix checking: <git_range_for_fixes or "none">
Guides location: <prompt_dir>/*.md and <prompt_dir>/patterns/*.md
CRITICAL: The "Git range for fix checking" line MUST be included in every FILE-N agent prompt. If a git range was provided, the analysis agent will use it to search forward in git history to check if any bugs found are fixed later in the series.
Plus (if lore not skipped):
Task: lore-checker
Model: sonnet
Prompt: Check lore.kernel.org for prior discussion of this patch.
Read the prompt file <prompt_dir>/agent/lore.md and execute it.
Context directory: ./review-context/
Prompt directory: <prompt_dir>
Plus (if is_syzkaller_commit is true):
Task: syzkaller-verifier
Model: opus
Prompt: Verify every claim in the commit message for this syzbot/syzkaller-reported bug.
Read the prompt file <prompt_dir>/agent/syzkaller.md and execute it.
Context directory: ./review-context/
Prompt directory: <prompt_dir>
This commit was reported by syzbot/syzkaller. The author may be guessing
about a rare and difficult bug. Verify EVERY factual claim in the commit
message and every new code comment. Prove that the described bug scenario
is actually possible.
Plus (always):
Task: fixes-tag-finder
Model: sonnet
Prompt: Search for the commit that introduced the bug being fixed.
Read the prompt file <prompt_dir>/agent/fixes.md and execute it.
Context directory: ./review-context/
Prompt directory: <prompt_dir>
CRITICAL: Launch all Phase 2 agents with run_in_background: true. If
--max-parallel is not specified, launch ALL agents in a SINGLE response with
multiple Task tool calls. If --max-parallel <N> is specified, launch agents in
batches of at most N agents at a time:
Prioritize non-FILE agents (lore, syzkaller, fixes) in the first batch since they tend to complete faster and don't depend on FILE analysis results.
Since Phase 2 agents run in the background, you MUST call TaskOutput with
block=true for every background agent to wait for it to finish. Call
TaskOutput for all agents (in parallel is fine) and do NOT proceed to
Phase 3 until every TaskOutput call has returned.
Verify after Phase 2 agents complete:
Every agent MUST write its result file, even when no issues are found (empty
"regressions": []). After each agent's TaskOutput returns, verify the
expected result file exists. If the file is missing, wait up to 10 seconds
(poll with ls every 2 seconds) for it to appear. If still missing after
the timeout, mark the agent as failed.
Expected result files (one per agent):
./review-context/FILE-N-review-result.json (always, one per FILE-N)./review-context/LORE-result.json (always, unless agent was skipped)./review-context/SYZKALLER-result.json (always, if agent was spawned)./review-context/FIXES-result.json (always, unless agent was skipped)A missing result file is an agent failure. Do NOT treat it as "no issues found" — the agent may have crashed, written to the wrong path, or not run. Log the failure and continue to Phase 3 so the report reflects all available results.
FORBIDDEN: Do NOT independently verify or re-analyze agent results.
This is a hard rule. You are an orchestrator, not an analyst. After Phase 2 agents complete:
Prohibited actions after Phase 2:
The agents did the work. The report agent aggregates it. You coordinate. If you feel the urge to verify something, resist it — that impulse violates this protocol.
Track cumulative results:
Output after all Phase 2 agents processed:
PHASE 2 COMPLETE: Parallel Analysis
File Analysis:
Files analyzed: <count>/<total>
Model used: <sonnet|opus> (unified)
Total confirmed regressions: <count>
Highest severity: <level>
Per-file summary:
- FILE-1 (<filename>): <N> regressions
- FILE-2 (<filename>): <N> regressions
...
Lore Checking:
Threads found: <count>
Versions identified: <list>
Unaddressed comments: <count>
Status: complete | skipped | failed
Syzkaller Verification: (if applicable)
Claims analyzed: <count>
Verified FALSE: <count>
Overall verdict: <ACCURATE | CONTAINS FALSE CLAIMS | INCONCLUSIVE>
Status: complete | skipped | failed
Fixes Tag Search:
Fixed commit found: <yes|no>
Suggested tag: <Fixes: line or "none">
Status: complete | skipped | failed
Agent: <prompt_dir>/agent/report.md (sonnet)
Purpose: Aggregate results and generate final outputs
Input: Result files (*-result.json) from all Phase 2 agents
Output: ./review-metadata.json, ./review-inline.txt (if issues found)
CRITICAL: Launch the report agent exactly once, in the foreground (never
run_in_background).
Background agents from Phase 2 produce async <task-notification> messages
when they complete. These notifications can interrupt a pending Task tool
call, causing it to return [Request interrupted by user for tool use].
However, the interrupted Task call may have already spawned the agent.
Retrying blindly creates duplicates.
To prevent duplicate report agents:
touch ./review-context/.report-launchedrun_in_background)../review-context/.report-launched exists, the agent was already
spawned — do NOT retry. Wait for ./review-metadata.json to confirm
it finished.Invoke:
Task: report-aggregator
Model: sonnet
Prompt: Aggregate analysis results and generate review output.
Read the prompt file <prompt_dir>/agent/report.md and execute it.
Context directory: ./review-context/
Prompt directory: <prompt_dir>
Template: <prompt_dir>/inline-template.md
Verify after completion:
./review-metadata.json exists./review-inline.txt exists (if regressions found)Output:
PHASE 3 COMPLETE: Report Generation
Output files:
- ./review-metadata.json
- ./review-inline.txt (if regressions found)
After outputting this summary, STOP. Do not verify findings. Do not call semcode. Do not read source code. The workflow is complete.
After all phases complete, output:
================================================================================
REVIEW COMPLETE
================================================================================
Commit: <sha> <subject>
Author: <author>
Series range: <range or "single commit">
Phases completed: 1 + 2 + 3
Files analyzed: <count>
Total issues found: <count>
- Regressions (call chain): <count>
- Lore issues: <count>
- Syzkaller false claims: <count> (if applicable)
- Missing Fixes: tag: <yes|no>
Highest severity: <none|low|medium|high|urgent>
Output files:
- ./review-metadata.json
- ./review-inline.txt (if issues found)
================================================================================
| Phase | Error | Action |
|---|---|---|
| 1 | Context creation failed | Stop workflow, report error |
| 2 | FILE-N analysis failed | Log error, continue with remaining agents |
| 2 | Lore checking failed | Log warning, continue to Phase 3 |
| 2 | Syzkaller verification failed | Log warning, continue to Phase 3 |
| 2 | Fixes tag search failed | Log warning, continue to Phase 3 |
| 2 | Result file missing after agent completes | Mark agent as failed, log error, continue to Phase 3 |
| 3 | Report generation failed | Report error |
Basic usage:
Analyze commit abc123 using prompts from /path/to/prompts
With series end SHA (for checking if bugs are fixed later):
Analyze commit abc123, which is part of a series ending with def456
With git range:
Analyze commit abc123, which is part of a series with git range abc123..def456
Skip lore checking:
Analyze commit abc123, skip lore.md
Limit parallel agents:
Analyze commit abc123 --max-parallel 4
Patch file:
Analyze patch file /path/to/patch.diff
Directory layout:
<prompt_dir>/
├── agent/
│ ├── orc.md (this file)
│ ├── context.md
│ ├── review.md (regression analysis)
│ ├── lore.md
│ ├── syzkaller.md
│ ├── fixes.md
│ ├── report.md
│ └── create_changes.py
├── callstack.md
├── subsystem/
│ ├── subsystem.md
│ ├── networking.md
│ ├── mm.md
│ ├── locking.md
│ └── ...
├── false-positive-guide.md
├── inline-template.md
└── technical-patterns.md
Output file structure (index.json v2.0):
./review-context/
├── change.diff
├── commit-message.json
├── index.json
├── FILE-1-CHANGE-1.json
├── FILE-1-CHANGE-2.json
├── FILE-2-CHANGE-1.json
├── FILE-3-CHANGE-1.json
├── FILE-3-CHANGE-2.json
├── FILE-1-review-result.json (always created by review agent)
├── FILE-2-review-result.json (always created by review agent)
├── FILE-3-review-result.json (always created by review agent)
├── FILE-1-CHANGE-1-debug.json (diagnostic: subsystem knowledge intersections)
├── LORE-result.json (always created by lore agent)
├── SYZKALLER-result.json (always created by syzkaller agent, if spawned)
└── FIXES-result.json (always created by fixes agent)