STARTER_CHARACTER = 🔎
Full Review
Review the entire codebase across 9 focus areas in parallel. Each agent reads from a single repomix-packed snapshot via MCP. Output goes to per-area files in .llmtmp/review-full/.
Arguments
If the user provided a path with the invocation, treat it as the target directory relative to the repo root. Otherwise pack the whole repo.
Step 1: Resolve Target
PROJECT_ROOT=$(git rev-parse --show-toplevel)
PROJECT_ROOT=$(cd -P "$PROJECT_ROOT" && pwd -P)
TARGET_PATH="<user-provided path or empty>"
[ -z "$TARGET_PATH" ] && TARGET_PATH="$PROJECT_ROOT"
# Resolve to physical absolute path and verify it stays inside the repo (no traversal, no symlink escape).
TARGET_PATH=$(cd -P "$TARGET_PATH" 2>/dev/null && pwd -P) || { echo "TARGET_PATH does not exist"; exit 1; }
case "$TARGET_PATH" in
"$PROJECT_ROOT"|"$PROJECT_ROOT"/*) ;;
*) echo "TARGET_PATH escapes PROJECT_ROOT"; exit 1 ;;
esac
TARGET_NAME=$(basename "$TARGET_PATH")
[ "$TARGET_PATH" = "$PROJECT_ROOT" ] && TARGET_NAME="repo"
Step 2: Clean and Prepare Output
OUTPUT_DIR="$PROJECT_ROOT/.llmtmp/review-full"
mkdir -p "$OUTPUT_DIR"
find "$OUTPUT_DIR" -mindepth 1 -delete
mkdir -p then find -delete rather than rm -rf. A safe-rm shim on PATH (as in some dotfiles setups) moves paths to Trash and exits non-zero on a missing path even under -f, which breaks the wipe on a first run.
Step 3: Pack Codebase
REPOMIX_FILE="$OUTPUT_DIR/repomix.xml"
npx repomix -o "$REPOMIX_FILE" --quiet --output-show-line-numbers "$TARGET_PATH"
The repomix file lives inside OUTPUT_DIR (.llmtmp/review-full/), which is gitignored and wiped at the start of every run by Step 2. No /tmp leakage and no trap needed. A trap does not work here because each bash code block in this skill runs in a separate shell process; an EXIT trap registered in Step 3 would fire as soon as Step 3's bash block ends, deleting the file before Step 4 (attach_packed_output) can read it.
Repomix reads .repomixignore from the project root automatically.
Verify the file was created. Confirm REPOMIX_FILE before proceeding.
Step 4: Attach Packed Output
Call attach_packed_output with filePath=REPOMIX_FILE. Record the returned outputId string. This is the codebase access handle the agents will use.
Do not delegate this step to a subagent. The orchestrator must own the outputId.
Step 5: Dispatch 9 Review Agents in Parallel
Issue all 9 Agent calls in a single tool block with run_in_background: false. Subagents default to running in the background, and a backgrounded fan-out delivers its results in later turns, so Step 6 would verify files that no agent has written yet.
| Agent | Subagent type | Output file |
|---|---|---|
| Architecture & Design | reviewer-architecture |
architecture.md |
| Correctness & Bugs | reviewer-correctness |
correctness.md |
| Data & Information Architecture | reviewer-data |
data.md |
| Operational Readiness | reviewer-ops |
ops.md |
| Performance | reviewer-performance |
performance.md |
| Code Quality | reviewer-quality |
quality.md |
| Security | reviewer-security |
security.md |
| SOLID Principles | reviewer-solid |
solid.md |
| Testing | reviewer-testing |
testing.md |
Each review prompt contains:
- The
outputIdfrom Step 4 - Instruction to use
read_repomix_outputandgrep_repomix_outputfor navigation - Instruction: "Read AGENTS.md (or CLAUDE.md) and .llmdocs/architecture.md (if present) via the repomix output for project context."
- Instruction: "Write findings to
<OUTPUT_DIR>/<area>.md. Use H2 header followed by findings or 'No findings.'"
Step 6: Wait and Verify
After all 9 agents complete, verify each file in <OUTPUT_DIR>:
- File exists and is non-empty
- First non-blank line is an H2 header (
## <Area>) - Body contains at least one finding OR exactly the literal
No findings.
If a file fails any of those checks, treat the agent as having silently failed and re-dispatch that one agent. Do NOT accept a stub like ## Testing\n with no body or content that omits the H2 header.
Step 7: Summarize
Produce a summary in the conversation:
# Full Review Summary
Target: <TARGET_NAME>
Files reviewed: <count from repomix>
## Findings Counts
| Area | High | Medium | Low |
| --------------------- | ---- | ------ | --- |
| Architecture & Design | <N> | <N> | <N> |
| Correctness & Bugs | <N> | <N> | <N> |
| Operational Readiness | <N> | <N> | <N> |
| Performance | <N> | <N> | <N> |
| Code Quality | <N> | <N> | <N> |
| Security | <N> | <N> | <N> |
| SOLID Principles | <N> | <N> | <N> |
| Testing | <N> | <N> | <N> |
## Output Files
- `.llmtmp/review-full/architecture.md`
- `.llmtmp/review-full/correctness.md`
- `.llmtmp/review-full/ops.md`
- `.llmtmp/review-full/performance.md`
- `.llmtmp/review-full/quality.md`
- `.llmtmp/review-full/security.md`
- `.llmtmp/review-full/solid.md`
- `.llmtmp/review-full/testing.md`
Read individual files for detailed findings.
Do not load the file contents into the conversation. The summary is the artifact; files are persistent for follow-up.