Capstone Radar
Capstone Radar is the aggregator + gap filler for the 6-skill radar family (5 companions + capstone). It consumes findings from 5 companion skills, runs its own scans for 5 domains the companions don't cover, grades everything on one unified scale, and makes the ship/no-ship decision.
It does NOT:
- Re-scan domains already covered by companion skills
- Dispatch Axiom auditor agents
- Produce separate reports for domains companions already cover
Usage
| Command | Description |
|---|---|
/capstone-radar | Full analysis — checks everything and reads companion handoffs |
/capstone-radar quick | Quick check — own domains only, ignores companion results |
/capstone-radar report | No scanning, re-grade from existing handoff files only |
/capstone-radar diff | Compare against previous audit — show resolved/new issues |
--trust-all | Override staleness decay -- treat all companion handoffs as Fresh |
--show-suppressed | Show findings suppressed by known-intentional entries |
Diff Command
Audit comparison — compare current codebase against a previous audit to show what changed.
Usage
/capstone-radar diff
/capstone-radar diff 2026-03-15
How It Works
- Find previous audit — Read the most recent (or specified date)
.agents/research/*-capstone-audit.md - Parse previous findings — Extract all issues from the GRADES_YAML block and findings tables
- Re-check each finding:
- Read the file at the reported line number
- Check if the problematic pattern still exists
- Classify as: ✅ RESOLVED, 🔴 STILL OPEN, 📁 FILE CHANGED
- Scan for new issues — Quick grep scan for new violations not in previous report
- Output diff summary
Output Format
Audit Diff: 2026-03-15 → 2026-03-29
Summary:
✅ Resolved: 8 issues fixed since last audit
🔴 Still Open: 3 issues remain
🆕 New: 2 new issues detected
📁 Changed: 4 files modified (may need re-verification)
Grade Trend:
Overall: B [83] → B+ [87] ↑
Code Hygiene: B- → A- ↑
Security Basics: A → A (stable)
Test Health: C → C+ ↑
Resolved Issues:
| # | Finding | Was | File | Resolved By |
|---|---------|-----|------|-------------|
| 1 | TODO marker in production | 🟡 HIGH | CloudSyncManager.swift:142 | Commit abc123 |
Still Open:
| # | Finding | Urgency | File | Age |
|---|---------|---------|------|-----|
| 1 | Force unwrap in error path | 🟡 HIGH | BackupManager.swift:89 | 14 days |
New Issues:
| # | Finding | Urgency | Risk: Fix | Risk: No Fix | ROI | Blast Radius | Fix Effort | Status |
When to Use
- Pre-release check — "What's changed since our last audit?"
- Progress tracking — Verify issues are being resolved over time
- Regression detection — Catch new issues introduced since last audit
Velocity Tracking
If 3+ previous audits exist, show trend line:
Grade Velocity (last 5 audits):
Build 21: C+ [78]
Build 22: B- [80]
Build 23: B [84]
Build 24: B+ [87]
Build 25: B+ [88] ← current
Trend: Improving (+2.5 pts/build avg)
Projection: A- by Build 28 at current rate
Skill Introduction (MANDATORY — run before anything else)
On first invocation, ask the user three questions in a single AskUserQuestion call:
Question 1: "What's your experience level with Swift/SwiftUI?"
- Beginner — New to Swift. Plain language, analogies, define terms on first use.
- Intermediate — Comfortable with SwiftUI basics. Standard terms, explain non-obvious patterns.
- Experienced (Recommended) — Fluent with SwiftUI. Concise findings, no definitions.
- Senior/Expert — Deep expertise. Terse, file:line only, skip explanations.
Question 2: "Which audit mode?"
- Full (Recommended) — Full analysis — checks everything and reads findings from other audits you've run
- Quick — Quick check — only looks at its own areas, ignores other audit results
- Report only — No scanning, just re-grade from existing handoff files
Question 3: "Include user impact explanations?"
- No (default) — Table only. Findings speak for themselves.
- Yes — After the table, each finding gets a 3-line explanation: what's wrong, the fix, and how a user experiences it before/after.
Can also be toggled mid-session with --explain / --no-explain. See radar-suite-core.md § Experience-Level Output Rules for format and rules.
Experience-adapted explanations for Capstone Radar:
-
Beginner: "Capstone Radar is the final check before your app goes to the App Store. It combines results from 5 other audit tools (if you've run them) with its own security, testing, and code quality checks, then gives your whole app a letter grade and tells you if it's safe to ship. Think of it as the building inspector who reviews all the specialist reports plus checks the things no one else covered."
-
Intermediate: "Capstone Radar aggregates findings from 5 companion skills (data-model-radar, ui-path-radar, roundtrip-radar, ui-enhancer-radar, time-bomb-radar) and adds its own scans for security, test health, code hygiene, dependencies, and build health. It grades 11 weighted inputs on one scale (5 own + 5 consumed + 1 cross-domain synthesis), tracks trends across runs, and makes a ship/no-ship recommendation."
-
Experienced: "Aggregator + gap filler for the radar family. Consumes 5 companion handoffs, owns 5 grep-reliable domains, unified A-F grading across 11 weighted inputs, velocity tracking, risk heatmap, ship/no-ship decision."
-
Senior/Expert: "5 owned + 5 consumed + 1 cross-domain = 11 weighted domains. Velocity. Heatmap. Ship/no-ship."
Store the experience level as USER_EXPERIENCE and apply to ALL output for the session.
Shared Patterns
See radar-suite-core.md for: Tier System, Pipeline UX Enhancements, Table Format, Plain Language Communication, Work Receipts, Contradiction Detection, Finding Classification, Audit Methodology, Context Exhaustion, Progress Banner, Issue Rating Tables, Handoff YAML schema, Known-Intentional Suppression, Pattern Reintroduction Detection, Experience-Level Output Rules, Implementation Sort Algorithm, short_title requirement.
Tier Awareness (MANDATORY -- read before any scanning)
Read .radar-suite/session-prefs.yaml for the tier field. Capstone behavior adapts based on the active tier:
Tier 3 (Full Pipeline)
All 5 companion skills are expected. If a handoff is missing, treat it as an error (not "not audited"):
ERROR: data-model-radar handoff missing. Full pipeline requires all 5 companions.
Options: [Re-run data-model-radar / Continue without it (grade will be partial)]
Before starting own scans, emit the Pre-Capstone Summary (see radar-suite-core.md Pipeline UX Enhancements #5):
- Read all 5 handoff files
- Emit the consolidated findings table (skill, count, critical/high/medium/low breakdown)
- Show top findings by urgency with
RS-NNN (short_title) - Ask: "Review summary before capstone grading? [Enter to continue / Review details]"
Tier 2 (Targeted Pipeline)
Read tier_skills from session prefs to know which skills were in the subset. Only expect handoffs for those skills. For skills not in the subset:
- Mark as "not in scope" (not "not audited")
- Grade is scoped to audited domains only
- Emit: "Partial audit: [N] of 5 skills ran. Grade reflects audited domains only. Missing coverage: [list of excluded skills]."
Weight redistribution: redistribute missing domain weights proportionally to audited domains (same as existing missing-handoff logic).
Tier 1 / No Tier / Standalone
Existing behavior. Missing handoffs show "Not audited -- run [skill-name] for coverage."
Pre-Scan Startup (MANDATORY — before Step 1)
- Known-intentional suppression: Run the protocol in
radar-suite-core.md § Known-Intentional Suppression. Core owns this — do not restate the steps here. (Note: companion findings already excluded at the compan