Skill v1.0.1
currentAutomated scan100/100+2 new
version: "1.0.1" name: specialist-review description: | Tech-stack-aware expert code review using specialized subagents. Detects which tech stacks are in the diff, then dispatches the matching specialist agents (ios-dev, android-dev, ai-engineer, neo4j-dev) to review against their skill-index best practices. Use when the user says "specialist review", "expert review", "stack review", or wants a multi-perspective code review with best practice verification. Also use after completing a significant implementation when thorough review is needed.
Specialist Code Review
Dispatch specialized subagents to review code changes against their domain-specific best practices (skill indices).
Step 1: Determine Review Scope
Detect the review scope automatically, in this priority order:
- User specified a PR number or URL → use that PR's diff
- Current branch has an open PR →
gh pr diff - Current branch is not main/master →
git diff main...HEAD - Uncommitted changes exist →
git diff HEAD(staged + unstaged; plain
git diff misses anything already staged)
- None of the above → ask the user what to review
Run these checks:
git branch --show-currentgh pr list --head $(git branch --show-current) --json number,url --jq '.[0]'git status -s
Once scope is determined, get the full diff and save it to a variable for the subagents.
Step 2: Identify Tech Stacks from Diff
Read the full diff and identify which tech stacks are involved based on file paths and content:
| Signal | Tech Stack | Subagent | |
|---|---|---|---|
*.swift, *.xib, ios/, SwiftUI/UIKit imports | iOS | ios-dev | |
*.kt, *.kts, android/, Compose/Room imports | Android | android-dev | |
| LangChain/LangGraph/OpenAI/Anthropic imports | LLM/AI | ai-engineer | |
*.cypher, Neo4j driver imports, graph schema | Neo4j | neo4j-dev | |
*.py, FastAPI/Flask/Django imports | Python Backend | general-purpose | |
*.ts, *.tsx, *.jsx, React/Next.js imports | Web Frontend | general-purpose | |
docs/gtm/, BRAND.md, marketing copy | Marketing / Brand | marketer | |
*.css, *.scss, design system files | Design | designer |
List all detected stacks and which subagents will be dispatched. If only one stack is detected, dispatch one agent. If multiple, dispatch them in parallel.
On Codex the last two rows never resolve to their agent — marketer and designer publish no Codex package — and general-purpose has no Codex equivalent. All three fall through the ladder in Step 2.25 to the built-in explorer.
Also extract the key libraries/frameworks used in the diff (e.g., jetpack compose, swiftui, langgraph, react, room, fastapi). These will be passed to subagents for documentation lookup.
Step 2.25: Pick a Reviewer for Each Stack
Each specialist agent ships as its own sub-plugin (ios-dev, android-dev, ai-engineer, neo4j-dev). Users may have only installed solopreneur (the core plugin), and on Codex none of the four agents exist yet — only their knowledge skills are published.
For each stack detected in Step 2, take the first rung that works. This is the ladder `plan-review` already uses; don't invent another one.
- The matching specialist agent — dispatch it directly.
- A generic reviewer subagent —
general-purposeon Claude Code, the
built-in explorer on Codex. The general-purpose rows of the Step 2 table start here.
- Inline — when spawning is unavailable or rejected at the current
subagent depth, review that stack yourself in this thread.
Rungs 2 and 3 are degradations, and that stack's section opens with the matching banner, substituting <plugin> with the agent / plugin name for that stack (the agent and plugin share the same name).
Rung 2:
⚠️ Specialist agent<plugin>unavailable. Reviewed by a generic revieweragainst the installed<plugin>skills.
Rung 3:
⚠️ Specialist agent<plugin>unavailable and no subagent could be spawned.Reviewed inline with generic expertise.
The rung-2 banner is written by the reviewer itself — it is in the Step 3 output format — so keep it when you paste the report in. The rung-3 banner is yours to write, since nobody else was there to write it.
Report the rung you actually used, and never narrate a dispatch that did not happen. Any other dispatch error (crash, timeout, tool failure) → surface it to the user; do not silently fall back.
Do not pre-check the plugin cache path to decide the rung — the cache layout depends on the local marketplace name the user chose, and the dispatch error is the authoritative signal.
Step 2.5: Check context7 Availability
Check whether this session exposes the context7 MCP tools — resolve-library-id and query-docs. Enumerate tools however this host does it; each host prefixes MCP tool names its own way (mcp__context7__resolve-library-id on Claude Code). A call that fails because the tool does not exist counts as unavailable.
- Available: Note this for Step 3. Each subagent will query context7 for the
technologies it's reviewing.
- Not available: Display a one-line notice:
> context7 MCP not installed. With context7, review subagents can automatically > query the latest official docs for improved review quality.
Then proceed normally without context7 steps.
Step 3: Dispatch Subagents
For each detected tech stack, spawn the reviewer Step 2.25 picked, in parallel, with this prompt template.
On Codex that is one spawn_agent call per stack. fork_turns="none" is required — a named agent inheriting full parent history is rejected, and a reviewer that inherits your framing is not an independent read. Set agent_type="explorer" for its analysis-shaped persona, but do not mistake it for a boundary: a child spawned with it records agent_role: explorer and still writes files. The role selects an instruction set, not a permission profile — spawn_agent takes no sandbox argument and the child inherits the parent's tools. So the "do NOT modify any files" line below is an instruction; the only enforcement available is starting the session itself with --sandbox read-only.
If context7 is available (from Step 2.5), include the [CONTEXT7 BLOCK] below. If not available, omit it entirely.
You are an expert reviewer. Do NOT modify any files. Only analyze and report.## Task1. Discover the skills for your domain:- **If you have a specialist system prompt** (`agents/<platform>-dev.md`): itlists curated skills and points to the extended skill index. Follow it.- **If you don't** (you are a generic reviewer): resolve the plugin's*enabled* install, then pick the 3-5 skills whose names match the diff.Ask the host which install is active instead of guessing — on Codex,`codex plugin list --json` reports `marketplaceName` and `version` perenabled plugin, giving one exact path:`"${CODEX_HOME:-$HOME/.codex}"/plugins/cache/<marketplaceName>/<plugin>/<version>/skills/`.With no such listing, glob `.../plugins/cache/*/<plugin>/*/skills/*/` andtake the highest semver: both the marketplace name and the version arethe user's, several versions of one plugin do coexist in a cache, andreviewing against a stale copy is worse than finding nothing. Nothingthere means the plugin is not installed — say so and review with yourown expertise.Report the absolute path of every SKILL.md you actually read.2. From the diff below, identify which specific technologies and APIs are used(e.g., "Jetpack Compose remember", "LazyColumn key", "SwiftData @Model","React useEffect")[CONTEXT7 BLOCK — include only when context7 is available]3. Query official documentation for the key technologies found in step 2:- For each major library/framework (e.g., "jetpack compose", "swiftui","langgraph", "react"):a. Call `mcp__context7__resolve-library-id` with the library name to get its IDb. Call `mcp__context7__query-docs` with the resolved ID and a topic relevantto what the diff touches (e.g., if diff uses LazyColumn → query"LazyColumn performance best practices")- Focus on 2-3 most important libraries, not every dependency- Use the retrieved documentation as an additional reference when reviewing[END CONTEXT7 BLOCK]4. Scan whatever step 1 gave you — the curated list plus extended index, or theplugin cache listing — for TWO categories of relevant skills:a. **Technology-specific skills**: skills matching the APIs/frameworks usedb. **Cross-cutting skills**: performance, architecture, patterns, guidelinesskills that apply regardless of specific API (e.g., compose performanceaudit, architecture patterns, accessibility, project conventions)5. For each relevant skill (both categories), read its SKILL.md using the pathstep 1 resolved.6. Review the diff against each relevant skill's best practices AND context7documentation (if queried). For each skill checked, report:- Skill name- What was checked- Conformance: check or warning- Specific findings with file:line references7. Also check for general issues not covered by skills:- Security concerns- Error handling gaps- Performance anti-patterns- Naming/style inconsistencies within the diff## Diff to Review{paste the full diff here}## Output Format### Tech Stack: [platform name][If you are not this platform's specialist agent — you had no specialist systemprompt and discovered skills from the plugin cache — open the section with thisline, substituting `<plugin>`. It is the only signal the reader gets that thenamed specialist did not run:> ⚠️ Specialist agent `<plugin>` unavailable. Reviewed by a generic reviewer> against the installed `<plugin>` skills.If that discovery turned up nothing — the plugin is not installed — open withthis instead. Do not claim skills you never read:> ⚠️ Specialist agent `<plugin>` unavailable and no installed `<plugin>` skills> found. Reviewed with generic expertise.]#### Skills Checked| Skill | Aspect | Status | Finding ||-------|--------|--------|---------|| skill-name | what was checked | check/warning | details |Skills read: one absolute SKILL.md path per line, marketplace and versionsegments included. A bare skill name does not count — the path is the evidence.#### context7 Documentation Consulted| Library | Topic Queried | Key Insight ||---------|--------------|-------------|| library-name | what was queried | relevant finding from docs |(Omit this table if context7 was not used)#### General Findings- [any issues not covered by skills]#### Summary[1-2 sentence overall assessment with taste rating]
Step 4: Aggregate and Report
Wait for all subagents to complete, then compile a unified report:
## Specialist Review: [branch name or PR title]### Scope[what was reviewed: PR #N / branch diff / uncommitted changes]### Reviews[per stack: the Step 2.25 degradation banner whenever rung 2 or 3 ran, then thatstack's report pasted verbatim — keep its Skills Checked table and its Skillsread paths; that list is how the user tells a real skill-backed review from aplausible one. Saying "a generic reviewer ran" in prose is not the banner]### Cross-Cutting Concerns[issues that span multiple platforms, if any]### Verdict[overall assessment: ready to merge / needs fixes / needs discussion][list any blocking issues vs nice-to-haves]
Notes
- If a skill index doesn't exist for a detected stack, the subagent should use
its built-in expertise instead
- Each subagent should read at most 3-5 most relevant skills (not the entire index)
- On Codex, discovery is the installed plugin cache only — the extended skill
index (/rebuild-skill-index) is a Claude Code path and is not ported
- The subagent prompt includes the full diff so it can reference specific lines
- If the diff is very large (>500 lines), mention this to the user and suggest
focusing on specific files