claude/skills/age/SKILL.md
Staff Engineer code review orchestrator. Spawns 6 parallel review sub-agents (safety, arch, encap, yagni, history, spec), merges findings with history-based score modifiers, and produces a unified Age Report. Two modes: focused (changes) and comprehensive (full audit). Use when the user invokes /age, or when a command needs code review (fromage Phase 8, move-my-cheese, copilot-review, fromagerie). This is a SKILL, not an agent — it runs inline in the caller's context so the 6 sub-agents are first-level agents, avoiding nested-agent depth issues. Do NOT use for implementation (fromage-cook), cleanup fixes (simplify/de-slop), or PR comment triage (respond/copilot-review).
npx skillsauth add paulnsorensen/dotfiles ageInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Staff Engineer code review. Spawn 6 focused reviewers, merge findings.
| Agent | Charter | Produces |
|-------|---------|----------|
| fromage-age-safety | Bugs, security, silent failures | Scored findings |
| fromage-age-arch | Complexity budgets, nesting, file structure | Scored findings + complexity table |
| fromage-age-encap | Encapsulation, leaky abstractions, boundary violations | Scored findings |
| fromage-age-yagni | Dead code (must be justified), speculative abstractions, AI noise | Scored findings |
| fromage-age-history | Git blame risk analysis | Score modifiers (not findings) |
| fromage-age-spec | Spec drift, monkey patches, missing implementations | Scored findings |
Review changes against principles, score issues. Used by /age, /fromage Phase 8, /copilot-review.
Input: a diff or set of changed files.
Full architectural audit — business model inventory, architecture assessment, risk areas, strengths, + scored issues. Used by /code-review.
Input: a module, directory, or entire codebase.
From the arguments or calling context, extract:
HEAD~3, main..HEAD)Run git diff --stat (or equivalent) to get the list of changed files if not provided.
Launch ALL SIX sub-agents in a SINGLE message (one message, six Agent tool calls):
Agent(subagent_type="fromage-age-safety", prompt="Focused mode. Review these changed files for correctness and safety issues:\n\nFiles: <list>\nDiff:\n<diff or ref range>\n\n<lsp strategy hint if applicable>")
Agent(subagent_type="fromage-age-arch", prompt="Focused mode. Check complexity budgets and structure for these changed files:\n\nFiles: <list>\nDiff:\n<diff or ref range>\n\n<lsp strategy hint if applicable>")
Agent(subagent_type="fromage-age-encap", prompt="Focused mode. Check encapsulation and boundary compliance for these changed files:\n\nFiles: <list>\nDiff:\n<diff or ref range>\n\n<lsp strategy hint if applicable>")
Agent(subagent_type="fromage-age-yagni", prompt="Focused mode. Find unjustified dead code, speculative abstractions, and AI noise in these changed files:\n\nFiles: <list>\nDiff:\n<diff or ref range>\n\n<lsp strategy hint if applicable>")
Agent(subagent_type="fromage-age-history", prompt="Analyze git history for these changed files and provide per-file score modifiers:\n\nFiles: <list>")
Agent(subagent_type="fromage-age-spec", prompt="Focused mode. Check spec adherence for these changed files. Read .claude/specs/*.md for relevant specs:\n\nFiles: <list>\nDiff:\n<diff or ref range>")
Each sub-agent prompt MUST include:
Once all six sub-agents return:
Apply history modifiers — Take the per-file modifiers from fromage-age-history and adjust scores from all other agents' findings. A bug in a hotspot file gets the file's modifier applied. Re-check the >= 50 threshold after adjustment.
Deduplicate — Same file:line AND same category = true duplicate, keep the higher-scored finding. Same file:line but different categories = both surface (different concerns). When a history modifier pushes a finding across the 50 threshold, note the adjustment in the output.
Sort by score — Highest first.
Build comprehensive sections (comprehensive mode only):
Write the full merged report to $TMPDIR/fromage-age-<slug>.md.
Present findings to the user or return a structured summary to the calling command (max 2000 chars):
## Age Summary
**Assessment**: <one-sentence: "Clean implementation" or "N issues found, M critical">
**Findings >= 50**:
| # | Score | Category | File:Line | Issue |
|---|-------|----------|-----------|-------|
| 1 | 95 | BUG | path:42 | Null check missing |
**Complexity**: all pass | N files over budget
**Nesting**: clean | N smells (depth 2: N, depth 3+: N)
**Encapsulation**: clean | N leaks
**YAGNI**: clean | N unjustified items
**Spec adherence**: aligned | N divergences | no applicable specs
**Below threshold**: N findings scored < 50
**Full report**: $TMPDIR/fromage-age-<slug>.md
## Age Report — Code Review
### Summary
<One-sentence assessment>
### Findings (score >= 50)
| # | Score | Category | Source | File:Line | Issue | Fix |
|---|-------|----------|--------|-----------|-------|-----|
(Source = which sub-agent: safety/arch/encap/yagni/spec)
### Complexity Check
| File | Lines | Longest Function | Max Nesting | Max Params | Status |
|---|---|---|---|---|---|
### Nesting Smells (if any)
| File:Line | Depth | Recommended Fix |
|-----------|-------|-----------------|
### History Context
<File risk profile and modifier table from history agent>
### Below Threshold
N findings scored < 50 (not shown)
## Age Report — Comprehensive Review
### Business Model Inventory
- {Model1} — {description, purity status}
### Architecture Assessment
- Data flow: {how data moves}
- Boundaries: {where business logic meets infrastructure}
- Dependency direction: {correct or inverted?}
- Public API surface: {clean or leaky?}
### Risk Areas
- {risk 1}
### Strengths
- {what's working well}
### Findings (score >= 50)
| # | Score | Category | Source | File:Line | Issue | Fix |
|---|-------|----------|--------|-----------|-------|-----|
### Complexity Check
| File | Lines | Longest Function | Max Nesting | Max Params | Status |
|---|---|---|---|---|---|
### Nesting Smells (if any)
| File:Line | Depth | Recommended Fix |
|-----------|-------|-----------------|
### History Context
<File risk profile and modifier table from history agent>
### Below Threshold
N findings scored < 50 (not shown)
Categories: BUG, SECURITY, SILENT_FAILURE, COMPLEXITY, NESTING, STRUCTURE, LEAK_DEPENDENCY, LEAK_BYPASS, LEAK_ABSTRACTION, LEAK_MUTATION, LEAK_SURFACE, DEAD_CODE, SPECULATIVE, PASSTHROUGH, AI_NOISE, DEFENSIVE, SPEC_DRIFT, MONKEY_PATCH, SPEC_MISSING, SCOPE_CREEP
tools
Reconstruct what a past coding-agent session was doing so you can resume it — goal, files touched, last verified state, and the next step — by querying the session logs. Use when the user says "what was I working on", "recover that session", "reconstruct where I left off", "resume my last session", "what did that session change", "rebuild context from logs", or invokes /work-recovery. Report-only — it never scores or judges. Do NOT use for usage scoring (that is /skill-improver, /tool-efficiency, /prompt-analytics) or one-off interactive log queries (that is /session-analytics).
development
Curate this repo's hallouminate wiki (.hallouminate/wiki/, the repo:dotfiles:wiki corpus) — add or update architecture pages, per-harness docs, and gotchas. Use when the user says "update the wiki", "document this in the wiki", "refresh the harness docs", "add a wiki page", "curate the wiki", "the wiki is stale", or invokes /wiki-curator. Also use at session end to write back a non-obvious decision or gotcha worth preserving. Grounds the existing wiki first, follows one-topic-per-file conventions, verifies every external doc URL before writing, and reindexes. Do NOT use for general code search (that is cheez-search) or for editing AGENTS.md command reference.
tools
Audit how a tool, command, or MCP server is actually used across coding-agent sessions and produce calibrated recommendations — tool-vs-task fit, error forensics, fix recommendations, permission friction, MCP health, and token economics. Use when the user says "tool efficiency", "am I using X efficiently", "audit tool usage", "why does X keep failing", "how do I fix this error", "what should I change", "permission friction", "is this MCP worth it", "tool error rate", "fix recommendations", or invokes /tool-efficiency. Do NOT use for auditing a skill or agent definition (that is /skill-improver) or for one-off interactive log queries (that is /session-analytics).
tools
Analyze how prompts and skill routing behave across coding-agent sessions and produce calibrated recommendations — prompt-pattern analysis, routing accuracy, and knowledge gaps. Use when the user says "analyze my prompts", "prompt patterns", "is routing working", "which skill should have fired", "knowledge gaps", "what do I keep asking", or invokes /prompt-analytics. Do NOT use for auditing a single skill/agent definition (that is /skill-improver), tool/MCP efficiency (that is /tool-efficiency), or one-off interactive log queries (that is /session-analytics).