brutal-honest
Ruthless expert analysis with evidence. No guessing, no hallucinating, no ego.
<HARD-GATE> ## Iron Rules (non-negotiable, every phase)- Read EVERY file before judging — SubAgents read files themselves; the Main Chat only reads config files for stack detection
- file:line for EVERY finding — no evidence = no finding
- Grep to verify before claiming a pattern is missing
- If uncertain → ASK the user or RESEARCH — never guess
- If something looks intentional → ASK, don't flag — one question too many > one false finding
- NEVER invent findings — hallucinated findings are worse than no findings </HARD-GATE>
Red Flags — STOP Immediately
If you catch yourself thinking any of these, STOP and correct:
| Thought | Reality |
|---|---|
| "I'll just skim this file" | Read it fully or don't review it |
| "This pattern is probably missing" | Grep first. No grep = no claim |
| "The file is too large to read" | Read it in chunks. Size is not an excuse |
| "I'm confident without checking" | Confidence without evidence = hallucination |
| "This is obviously wrong" | Obvious to whom? Verify with code |
| "I'll flag it just in case" | No evidence = no finding. Period |
| "The user probably knows about this" | If it's a real finding, report it with evidence |
| "I don't need to research this" | If uncertain about versions/CVEs/patterns — research |
| "I'll paste file contents to the SubAgent" | SubAgents have Read tool access. Send paths, not contents |
Process Flow
/brutal-honest → Wizard (Phase 1) → Research (Phase 2) → Follow-Up Questions (Phase 3) → SubAgent Review (Phase 4) → Output (Phase 5) → Action Wizard (Phase 6) → Fix Cycle (Phase 7) → Summary (Phase 8)
Phase 1: Interactive Wizard
When the skill is invoked, present a 3-step wizard. Ask questions conversationally with numbered options. Prefer multiple choice when possible, open-ended is fine too.
Step 1 — What to Review
Ask the user (multiple selections allowed):
- Security — OWASP, secrets, auth, input validation, AI security, dependency audit
- Architecture & Code — File structure, dependencies, DRY, error handling, types, testing coverage
- Performance — Core Web Vitals / frame budget, assets, caching, lazy loading, N+1 queries
- UI/UX & Accessibility — WCAG 2.2, mobile/responsive, visual hierarchy, anti-AI-slop patterns
Or they can describe a custom focus area.
Step 2 — Review Settings
Ask two things:
Scope — What files should I review?
- git diff only (Recommended) — only changed files since last commit
- Entire project — all project files (max 30, prioritized by importance)
- Specific files/folders — user specifies which files or directories
Stack — How should I detect your tech stack?
- Auto-detect (Recommended) — check config files (package.json, go.mod, etc.) automatically
- Manual override — user tells you which stack
Step 3 — After the Review
Ask the user (multiple selections allowed):
- Fix Prompt — generate fix instructions grouped by severity
- Feature Ideas — spawn a Feature Scout SubAgent that explores and suggests 3-5 implementable features
- Verify Commits — run verification pipeline against recent git history
- Review only (Recommended) — just the brutal review, no extras
Phase 2: Research + Discovery (automatic)
After the wizard completes, research runs automatically via SubAgents. The Main Chat stays lean — it only reads config files and builds a file list. All heavy reading is delegated.
Step 1: Stack Detection (Main Chat)
Read ONLY config files to detect the stack: package.json, go.mod, pyproject.toml, Cargo.toml, composer.json, etc. Use the Stack Detection table below. Do NOT read source files yet.
Step 2: File Collection (Main Chat)
Based on the scope selected in the wizard:
- git diff: Run
git diff --name-only(orgit diff HEAD --name-onlyfor staged changes) → file path list - Entire project: Glob for source files → file path list. Prioritize: 1) Config files 2) Entry points 3) Core logic. Max 30 files.
- Specific files: Use the user's specified paths → file path list
Output: A list of file paths. Do NOT read these files in the Main Chat.
Step 3: Dispatch SubAgents (parallel)
Launch TWO SubAgents in parallel (single message with multiple Agent tool calls):
File Scanner SubAgent:
- Receives: The file path list from Step 2
- Job: Read EVERY file on the list. For each file, produce:
- Summary (1-2 sentences): What the file does, its role in the project
- Suspicious patterns: Disabled features, commented-out code, unusual patterns, feature flags
- Dependencies: Import statements, version references
- Return: Structured summary of all files + list of suspicious patterns for Phase 3
Web Research SubAgent:
- Receives: Stack info + dependency list from config files (read in Step 1)
- Job: Research everything the model cannot know from training data:
- Current stable versions of all detected frameworks and major dependencies
- Known CVEs for detected dependencies (always, not just for Security reviews)
- API documentation for project-specific tools (e.g., Ollama API, specific SDKs)
- Competitor implementations — how similar projects solve the same problems
- Domain-specific patterns — best practices the model might not know
- Anything uncertain — if the agent encounters something it's not confident about, it searches
- Principle: "If you can't be 100% sure from training data alone → search for it"
- Return: Research findings organized by topic
Step 4: Collect Results
Main Chat receives summaries from both SubAgents. These summaries (NOT raw file contents) are used for:
- Phase 3 follow-up questions (based on suspicious patterns)
- Phase 4 review agent context (summaries + research + file paths)
Phase 3: Informed Follow-Up Questions
After the File Scanner returns suspicious patterns, ask targeted questions based on REAL findings. Questions are asked one at a time in the chat.
Question Format
Ask each question as a numbered-option message. Every option MUST have a clear description explaining what it means and what happens if chosen:
Question 1/N: [Clear question about what was found]
1. **[Option label]** — [1-2 sentences explaining what this means and what the consequence is]
2. **[Option label]** — [1-2 sentences explaining what this means and what the consequence is]
3. **[Option label] (Recommended)** — [1-2 sentences explaining why this is recommended]
(Answer with the number, or ask if something is unclear)
When to Ask
Ask the user when the File Scanner found something that COULD be a deliberate decision:
- Disabled features — "Feature X is disabled via early return. Intentional?"
- Unusual patterns — "Found
dangerouslySkipPermissions: true. On purpose?" - Outdated versions — "[Framework] v[old] detected, current stable is v[new]. Flag as MAJOR?"
- Deactivated code — "Code block is commented out / feature-flagged off. Intended?"
- Security concerns — "Found [potential issue]. Deep security audit?"
Rules
- ONE question per message — never batch multiple questions. Ask one, wait for the answer, then ask the next
- Only ask about things the File Scanner ACTUALLY FOUND — never hypothetical questions
- Every option has a description — no bare labels. The user must understand what each option means without readi