一键导入
age
Staff Engineer code review orchestrator. Runs nine orthogonal LLM dimensions over a diff and emits a stake-weighted report plus hash-anchored sidecar JSON.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Staff Engineer code review orchestrator. Runs nine orthogonal LLM dimensions over a diff and emits a stake-weighted report plus hash-anchored sidecar JSON.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Finish what /age started. Loads both sidecars (fixes + suggestions), renders a unified stake table, gates on user approval, routes each approved item to the right handler (/cleanup or a cook sub-agent), then re-ages the touched paths up to a hard 3-turn cap.
Iterative thinking amplifier for fuzzy ideas. Routes input to the right starting mode (Explore, Ground, Shape, Sketch, Grill, Diagnose), runs Validate Cycles to anchor claims, locks down interfaces in pseudocode, and only curdles a spec (and optional issues) after a two-key handshake plus a coherence self-check.
Scan a codebase for custom code that duplicates what open-source libraries already do, then recommend which libraries to adopt. Detects hand-rolled utility functions, custom retry logic, manual validation, DIY date handling, home-grown argument parsers, and other reinvented wheels. Cross-checks against installed dependencies and open specs. Returns scored migration recommendations with effort estimates. Use when the user mentions reinventing the wheel, asks if there is a library for something they built, wants a build-vs-buy audit, asks "should we just use lodash for this", or wants to find dependency opportunities.
AST-aware code search using tilth MCP. Finds definitions first, then usages. Use tree-sitter structural matching instead of blind text grep. Understand dependencies and call graphs. Use when: finding where symbols are defined, tracing call chains, understanding code structure, finding all callers of a function. Do NOT use for reading files — use cheez-read. Do NOT use for editing — use cheez-write. Examples: "find where handleAuth is defined", "what calls validateToken?", "trace the ServeHTTP, HandlersChain, Next functions", "find all implementations of the UserService interface".
Mechanical apply of /age's hash-anchored sidecar fixes via tilth_edit. The cleanup-wolf sub-agent is the only LLM in the path, fired per anchor mismatch.
Multi-source research orchestrator that routes questions across Context7 library docs, Tavily web research, codebase analysis, and GitHub examples, then returns a compact synthesis with confidence scoring.
| name | age |
| description | Staff Engineer code review orchestrator. Runs nine orthogonal LLM dimensions over a diff and emits a stake-weighted report plus hash-anchored sidecar JSON. |
| license | MIT |
| compatibility | Requires Claude Code >= 2.1.30 / claude-agent-sdk >= 0.2.63 (older versions cannot expose tilth tools to plugin sub-agents). |
| metadata | {"owner":"cheese-flow","category":"review"} |
| allowed-tools | ["read","write","bash","subagent","mcp"] |
Amplify the human reviewer's attention. Surface evidence, unknowns, and tradeoffs. Do not render verdicts.
Before dispatching agents, verify tilth_* MCP tools are available to
plugin sub-agents. If unavailable, fail fast:
ERROR: tilth MCP tools are not exposed to sub-agents.
Upgrade to Claude Code >= 2.1.30 / claude-agent-sdk >= 0.2.63.
See: anthropics/claude-code#13605
Do not attempt graceful degradation. The dim agents require tilth_read
and tilth_search; without them every agent silently misses evidence.
All 9 dims fire on every invocation. Gating by file-type heuristics risks
silent misses. Each agent self-noops with scope_match: false + empty
observations when its rubric does not apply. Empty dims are tallied ("ran
9; N had findings"); only non-empty dims render as report sections.
Cost: ~35-45K Haiku tokens per /age. This is intentional and acceptable (see spec D-32, D-21-final).
/age [<ref>] [--scope <path>] [--comprehensive]
ref — git ref or range. Default: $(git merge-base origin/main HEAD)..HEAD--scope <path> — restrict evidence fetch to this path prefix--comprehensive — pass-through hint to dim agents; they may widen review windowParse argv: extract ref, scope, comprehensive flag.
REF="${1:-$(git merge-base origin/main HEAD)..HEAD}"
SLUG="$(echo "$REF" | tr '/..:' '----' | head -c 32)"
RUN_DIR="${TMPDIR:-/tmp}/cheese-flow-age-$(date +%Y%m%d-%H%M%S)-${SLUG}"
mkdir -p "$RUN_DIR"
Run all fetches in parallel. Merge into $RUN_DIR/evidence-pack.yaml.
Parallel tasks:
git diff --unified=3 $REF > $RUN_DIR/diff.patch
python python/tools/git_diagnose.py precedent \
--symbols <touched-symbols> --paths <touched-paths> \
> $RUN_DIR/precedent.json
python python/tools/git_diagnose.py concurrent-prs \
--paths <touched-paths> \
> $RUN_DIR/concurrent-prs.json
For each file touched by the diff:
cheez-read in outline mode → file structure without inline sourcetilth_deps → import/export graphcheez-search --kind callers for each touched symbolOptional — code-review-graph impact radius:
Try get_impact_radius_tool(touched_symbols). If the MCP tool is
unavailable (plugin not loaded, tool not found), write:
{"impact_radius": null}
and continue. Do NOT fail the run. Log a one-line notice.
Merge into evidence pack:
# $RUN_DIR/evidence-pack.yaml
ref: <REF>
outlines:
<path>: <tilth outline>
deps:
<path>: <tilth_deps output>
callers:
<symbol>: [<call sites>]
precedent: <precedent.json contents>
concurrent_prs: <concurrent-prs.json contents>
impact_radius: <get_impact_radius output or null>
No inline source content in the pack. Agents use cheez-read for
follow-up source reads after reviewing the outline.
Spawn all agents in parallel. Each agent:
$RUN_DIR/evidence-pack.yaml as primary evidence$RUN_DIR/diff.patch for the change context$RUN_DIR/<dim>.json per the per-agent return contract
(see skills/age/references/sidecar-schema.md)Agents to dispatch:
age-correctnessage-securityage-complexityage-encapsulationage-specage-precedentage-deslopage-assertionsage-nihPass to each agent: RUN_DIR, REF, SCOPE, COMPREHENSIVE flag.
When an agent's dim does not apply to the diff, it emits:
{"dimension": "<dim>", "scope_match": false, "observations": [], "stake": "<dim-stake>", "summary": "Dim does not apply to this diff."}
Collect all $RUN_DIR/<dim>.json files.
observations = union(all dim.json observations)
callouts = group_by_locus(observations, window=3 lines, min_dims=2)
group_by_locus: observations from 2+ dims whose anchor.start line
numbers fall within 3 lines of each other become a cross-dim callout.
Render Markdown report → .cheese/age/<slug>.md:
# Age Report — <slug>
## Orientation
<1-2 sentence factual description of what the diff does>
Ran 9 dims. <N> had findings. <9-N> were empty (scope_match: false or no observations).
## High-Stake Dimensions
(correctness, security, encapsulation, spec — non-empty only)
## Medium-Stake Dimensions
(complexity, deslop, assertions, nih — non-empty only)
## Advisory Dimensions
(precedent — non-empty only)
## Cross-Dimension Callouts
(loci where 2+ dims agree; omit section if empty)
See skills/age/references/report-template.md for full layout and
narrative format rules.
Split observations into sidecar JSON files:
.cheese/age/<slug>.fixes.json:
fix field (hash-anchored, syntactically narrow,
complete content).cheese/age/<slug>.suggestions.json:
consideration only (no fix)Both match the schema in skills/age/references/sidecar-schema.md.
Print:
Age report: .cheese/age/<slug>.md
Fixes: .cheese/age/<slug>.fixes.json (<N> entries)
Suggestions: .cheese/age/<slug>.suggestions.json (<M> entries)
Next step:
/cure <slug> — apply fixes, route suggestions, re-age
Do NOT auto-invoke /cure. The amplifier-pure boundary forbids it (spec D-14-final). The report is the deliverable; the user types the hand-off.
rm -rf "$RUN_DIR"
cheez-read / cheez-search (NFR-1).
No host Read / Grep / Edit, no direct tilth_edit.line:hash strings natively (NFR-2, D-24).low | med | high bucket only.