
Brutal Honesty Review
- 3 installs
- 43 repo stars
- Updated June 17, 2026
- proffesor-for-testing/sentinel-api-testing
brutal-honesty-review is a Claude Code skill for ai & agent building.
About
brutal-honesty-review is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.
- brutal-honesty-review
- AI & Agent Building
- AI-coding skill
Brutal Honesty Review by the numbers
- 3 all-time installs (skills.sh)
- Ranked #13,677 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 1, 2026 (Skillselion catalog sync)
npx skills add https://github.com/proffesor-for-testing/sentinel-api-testing --skill brutal-honesty-reviewAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 3 |
|---|---|
| repo stars | ★ 43 |
| Last updated | June 17, 2026 |
| Repository | proffesor-for-testing/sentinel-api-testing ↗ |
How do I helps with ai & agent building tasks.?
Helps with ai & agent building tasks.
Who is it for?
Best when you're working on ai & agent building and need structured help with brutal honesty review.
Skip if: Teams with no ai & agent building needs, or anyone wanting a generic chat assistant without this specific workflow.
When should I use this skill?
When you need to helps with ai & agent building tasks., or when brutal-honesty-review is a claude code skill for ai & agent building.
What you get
Structured output aligned to brutal-honesty-review: brutal-honesty-review, AI & Agent Building.
Files
Brutal Honesty Review
<default_to_action> When brutal honesty is needed: 1. CHOOSE MODE: Linus (technical), Ramsay (standards), Bach (BS detection) 2. VERIFY CONTEXT: Senior engineer? Repeated mistake? Critical bug? Explicit request? 3. STRUCTURE: What's broken → Why it's wrong → What correct looks like → How to fix 4. ATTACK THE WORK, not the worker 5. ALWAYS provide actionable path forward
Quick Mode Selection:
- Linus: Code is technically wrong, inefficient, misunderstands fundamentals
- Ramsay: Quality is subpar compared to clear excellence model
- Bach: Certifications, best practices, or vendor hype need reality check
Calibration:
- Level 1 (Direct): "This approach is fundamentally flawed because..."
- Level 2 (Harsh): "We've discussed this three times. Why is it back?"
- Level 3 (Brutal): "This is negligent. You're exposing user data because..."
DO NOT USE FOR: Junior devs' first PRs, demoralized teams, public forums, low psychological safety </default_to_action>
Quick Reference Card
When to Use
| Context | Appropriate? | Why |
|---|---|---|
| Senior engineer code review | ✅ Yes | Can handle directness, respects precision |
| Repeated architectural mistakes | ✅ Yes | Gentle approaches failed |
| Security vulnerabilities | ✅ Yes | Stakes too high for sugar-coating |
| Evaluating vendor claims | ✅ Yes | BS detection prevents expensive mistakes |
| Junior dev's first PR | ❌ No | Use constructive mentoring |
| Demoralized team | ❌ No | Will break, not motivate |
| Public forum | ❌ No | Public humiliation destroys trust |
Three Modes
| Mode | When | Example Output |
|---|---|---|
| Linus | Code technically wrong | "You're holding the lock for the entire I/O. Did you test under load?" |
| Ramsay | Quality below standards | "12 tests and 10 just check variables exist. Where's the business logic?" |
| Bach | BS detection needed | "This cert tests memorization, not bug-finding. Who actually benefits?" |
---
The Criticism Structure
## What's Broken
[Surgical description - specific, technical]
## Why It's Wrong
[Technical explanation, not opinion]
## What Correct Looks Like
[Clear model of excellence]
## How to Fix It
[Actionable steps, specific to context]
## Why This Matters
[Impact if not fixed]---
Mode Examples
Linus Mode: Technical Precision
**Problem**: Holding database connection during HTTP call
"This is completely broken. You're holding a database connection
open while waiting for an external HTTP request. Under load, you'll
exhaust the connection pool in seconds.
Did you even test this with more than one concurrent user?
The correct approach is:
1. Fetch data from DB
2. Close connection
3. Make HTTP call
4. Open new connection if needed
This is Connection Management 101. Why wasn't this caught in review?"Ramsay Mode: Standards-Driven Quality
**Problem**: Tests only verify happy path
"Look at this test suite. 15 tests, 14 happy path scenarios.
Where's the validation testing? Edge cases? Failure modes?
This is RAW. You're testing if code runs, not if it's correct.
Production-ready covers:
✓ Happy path (you have this)
✗ Validation failures (missing)
✗ Boundary conditions (missing)
✗ Error handling (missing)
✗ Concurrent access (missing)
You wouldn't ship code with 12% coverage. Don't merge tests
with 12% scenario coverage."Bach Mode: BS Detection
**Problem**: ISTQB certification required for QE roles
"ISTQB tests if you memorized terminology, not if you can test software.
Real testing skills:
- Finding bugs others miss
- Designing effective strategies for context
- Communicating risk to stakeholders
ISTQB tests:
- Definitions of 'alpha' vs 'beta' testing
- Names of techniques you'll never use
- V-model terminology
If ISTQB helped testers, companies with certified teams would ship
higher quality. They don't."---
Assessment Rubrics
Code Quality (Linus Mode)
| Criteria | Failing | Passing | Excellent |
|---|---|---|---|
| Correctness | Wrong algorithm | Works in tested cases | Proven across edge cases |
| Performance | Naive O(n²) | Acceptable complexity | Optimal + profiled |
| Error Handling | Crashes on invalid | Returns error codes | Graceful degradation |
| Testability | Impossible to test | Can mock | Self-testing design |
Test Quality (Ramsay Mode)
| Criteria | Raw | Acceptable | Michelin Star |
|---|---|---|---|
| Coverage | <50% branch | 80%+ branch | 95%+ mutation tested |
| Edge Cases | Only happy path | Common failures | Boundary analysis complete |
| Stability | Flaky (>1% failure) | Stable but slow | Deterministic + fast |
BS Detection (Bach Mode)
| Red Flag | Evidence | Impact |
|---|---|---|
| Cargo Cult Practice | "Best practice" with no context | Wasted effort |
| Certification Theater | Required cert unrelated to skills | Filters out thinkers |
| Vendor Lock-In | Tool solves problem it created | Expensive dependency |
---
Agent Integration
// Brutal honesty code review
await Task("Code Review", {
code: pullRequestDiff,
mode: 'linus', // or 'ramsay', 'bach'
calibration: 'direct', // or 'harsh', 'brutal'
requireActionable: true
}, "qe-code-reviewer");
// BS detection for vendor claims
await Task("Vendor Evaluation", {
claims: vendorMarketingClaims,
mode: 'bach',
requireEvidence: true
}, "qe-quality-gate");---
Agent Coordination Hints
Memory Namespace
aqe/brutal-honesty/
├── code-reviews/* - Technical review findings
├── bs-detection/* - Vendor/cert evaluations
└── calibration/* - Context-appropriate levelsFleet Coordination
const reviewFleet = await FleetManager.coordinate({
strategy: 'brutal-review',
agents: [
'qe-code-reviewer', // Technical precision
'qe-security-auditor', // Security brutality
'qe-quality-gate' // Standards enforcement
],
topology: 'parallel'
});---
Related Skills
- code-review-quality - Diplomatic version
- context-driven-testing - Foundation for Bach mode
- sherlock-review - Evidence-based investigation
---
Remember
Brutal honesty eliminates ambiguity but has costs. Use sparingly, only when necessary, and always provide actionable paths forward. Attack the work, never the worker.
The Brutal Honesty Contract: Get explicit consent. "I'm going to give unfiltered technical feedback. This will be direct, possibly harsh. The goal is clarity, not cruelty."
Brutal Honesty Review Skill
Overview
A QE skill that delivers unvarnished technical criticism combining three legendary personas:
- Linus Torvalds: Surgical technical precision
- Gordon Ramsay: Standards-driven quality assessment
- James Bach: BS detection in testing practices
Purpose
Unlike diplomatic reviews, this skill eliminates ambiguity about technical standards. It dissects why something is wrong, explains the correct approach, and has zero patience for repeated mistakes or sloppy thinking.
When to Use
✅ Appropriate:
- Senior engineers wanting unfiltered feedback
- Repeated architectural mistakes
- Critical bugs requiring immediate attention
- Evaluating vendor claims/certifications
- Teams explicitly requesting no-BS feedback
❌ Inappropriate:
- Junior developers' first contributions
- Demoralized teams
- Public forums (avoid humiliation)
- When psychological safety is low
Three Modes
1. Linus Mode (Technical Precision)
Focus on code correctness, performance, concurrency, and architecture.
Example:
"This is completely broken. You're holding the lock during I/O, which means every thread serializes. Did you even test under load? The correct approach is..."
2. Ramsay Mode (Standards-Driven Quality)
Compare reality against clear excellence model using concrete metrics.
Example:
"Look at this! 12 tests and 10 are just checking if variables exist. Where's the business logic coverage? This is RAW. Don't merge it."
3. Bach Mode (BS Detection)
Question certifications, best practices, and vendor hype.
Example:
"This certification teaches scripts, not thinking. Does it help testers find bugs faster? No. It helps the cert body make money."
Quick Start
Using the Skill
Invoke the skill when you need brutal honesty:
Use brutal-honesty-review skill in Linus mode to review this code:
[paste code]Using Assessment Scripts
# Assess code quality (Linus Mode)
./scripts/assess-code.sh src/myfile.js
# Assess test quality (Ramsay Mode)
./scripts/assess-tests.sh tests/Files Included
brutal-honesty-review/
├── SKILL.md # Main skill instructions
├── README.md # This file
├── resources/
│ ├── review-template.md # Template for structured reviews
│ └── assessment-rubrics.md # Scoring rubrics for all modes
└── scripts/
├── assess-code.sh # Automated code quality check
└── assess-tests.sh # Automated test quality checkAssessment Rubrics
Code Quality (Linus Mode)
| Criteria | Failing | Passing | Excellent |
|---|---|---|---|
| Correctness | Wrong logic | Works in tested cases | Proven across edge cases |
| Performance | O(n²) where O(n) exists | Acceptable | Optimal + profiled |
| Error Handling | Crashes | Returns errors | Graceful degradation |
| Concurrency | Race conditions | Thread-safe | Lock-free/proven |
| Testability | Can't unit test | Mockable | Self-testing |
| Maintainability | "Clever" code | Clear | Self-documenting |
Threshold: Minimum "Passing" on ALL to merge.
Test Quality (Ramsay Mode)
| Criteria | Raw | Acceptable | Michelin Star |
|---|---|---|---|
| Coverage | <50% | 80%+ | 95%+ + mutation |
| Edge Cases | Happy path only | Common failures | Boundary analysis |
| Clarity | Unclear names | Clear names | Self-documenting |
| Speed | Minutes | <10s | <1s, parallel |
| Stability | Flaky (>1%) | Stable | Deterministic |
| Isolation | Dependent | Independent | Pure, stateless |
Threshold: Minimum "Acceptable" on ALL to merge.
BS Detection (Bach Mode)
Red flags:
- Cargo cult practices (no context)
- Certification theater (filters thinkers)
- Vendor lock-in (solves own problem)
- False automation (still needs humans)
- Checkbox quality (compliance, not outcomes)
- Hype cycle (10x claims without proof)
Green flag test: "Does this help testers/developers do better work in THIS context?"
Examples
Example 1: Linus Mode - Concurrency Bug
Problem: Holding DB connection during HTTP call
Brutal Honesty:
"This is completely broken. You're holding a database connection open while waiting for an HTTP request. Under load, you'll exhaust the connection pool in seconds. Did you test with >1 user? The correct approach: 1) Fetch data, 2) Close connection, 3) Make HTTP call."
Example 2: Ramsay Mode - Weak Tests
Problem: 15 tests, all happy path
Brutal Honesty:
"Look at this test suite. 15 tests, 14 are happy path. Where's validation? Where are edge cases? This is RAW. You're testing if code runs, not if it's correct. You have 35% coverage. Production needs 80%+. Don't merge this."
Example 3: Bach Mode - Certification Theater
Problem: Required ISTQB certification
Brutal Honesty:
"ISTQB tests if you memorized terminology, not if you can test software. Real skills: finding bugs, designing strategies, communicating risk. ISTQB tests: definitions, model names, checkbox thinking. If it helped, ISTQB-certified teams would ship higher quality. They don't."
Calibration Guide
Harshness Levels
Level 1 - Direct: For experienced engineers
"This approach is flawed because..."
Level 2 - Harsh: For repeated mistakes
"We've discussed this pattern three times. Why is it back?"
Level 3 - Brutal: For critical issues or willful ignorance
"This is negligent. You're exposing user data because..."
Context Matters
Before being brutal, verify: 1. Audience maturity: Can they handle directness? 2. Relationship capital: Have you earned harsh feedback rights? 3. Actionability: Can they actually fix this? 4. Intent: Helping or venting?
Philosophy
Why Brutal Honesty Works
1. Eliminates Ambiguity: No confusion about technical standards 2. Scales Teaching: Public technical breakdown teaches entire team 3. Cuts Through BS: Exposes cargo cult practices and vendor hype
The Costs
1. Relationship Damage: Harsh criticism without trust destroys collaboration 2. Chills Participation: Fear stops newcomers from contributing 3. Burnout: Constant harshness is exhausting
The Contract
Before using brutal honesty, establish explicit contract:
"I'm going to give unfiltered technical feedback. This will be direct, possibly harsh. Goal is clarity, not cruelty. I'll explain: 1) What's wrong, 2) Why, 3) What correct looks like, 4) How to fix. Want diplomatic instead?"
Get explicit consent first.
Integration with Agentic QE Fleet
This skill extends the QE skill set:
- Complements:
code-review-quality,context-driven-testing - Contrasts with: Diplomatic, constructive review approaches
- Use when: Technical precision and BS-cutting are priorities
- Avoid when: Building confidence or psychological safety
Related Skills
code-review-quality- Diplomatic code reviewcontext-driven-testing- Foundation for BS detectiontdd-london-chicago- Systematic quality approachexploratory-testing-advanced- Critical thinking in testing
License
MIT - Part of Agentic QE Fleet
Contributing
Found this too harsh? Good. Found this too soft? You're Linus Torvalds.
Submit issues if the skill produces ineffective criticism (not actionable, personal attacks, wrong context).
---
Remember: Brutal honesty is a tool, not a personality. Use it when it helps, not when it harms.
Assessment Rubrics for Brutal Honesty Reviews
Code Quality Rubric (Linus Mode)
Correctness
| Level | Criteria | Example |
|---|---|---|
| 🔴 Failing | Wrong algorithm, logic errors, crashes | null pointer dereference, off-by-one errors |
| 🟡 Passing | Works in tested cases, no obvious bugs | Handles expected inputs correctly |
| 🟢 Excellent | Proven correct across edge cases | Property-based tests, formal verification |
Performance
| Level | Criteria | Example |
|---|---|---|
| 🔴 Failing | Naive O(n²) where O(n) exists | Nested loops for searchable data |
| 🟡 Passing | Acceptable complexity for scale | O(n log n) for reasonable n |
| 🟢 Excellent | Optimal algorithm + profiled | Cached, indexed, benchmarked |
Error Handling
| Level | Criteria | Example |
|---|---|---|
| 🔴 Failing | Crashes on invalid input | Uncaught exceptions, panics |
| 🟡 Passing | Returns error codes/exceptions | try/catch, error returns |
| 🟢 Excellent | Graceful degradation + logging | Circuit breakers, retry logic |
Concurrency Safety
| Level | Criteria | Example |
|---|---|---|
| 🔴 Failing | Race conditions, deadlocks | Shared mutable state, no locks |
| 🟡 Passing | Thread-safe with locks | Proper mutex usage |
| 🟢 Excellent | Lock-free or proven safe | Immutable data, atomic operations |
Testability
| Level | Criteria | Example |
|---|---|---|
| 🔴 Failing | Impossible to unit test | Hard-coded dependencies, global state |
| 🟡 Passing | Can be tested with mocks | Dependency injection |
| 🟢 Excellent | Self-testing design | Pure functions, property-based |
Maintainability
| Level | Criteria | Example |
|---|---|---|
| 🔴 Failing | "Clever" code, unclear intent | Obfuscated logic, magic numbers |
| 🟡 Passing | Clear intent, reasonable | Named variables, comments |
| 🟢 Excellent | Self-documenting + simple | Obvious code, minimal complexity |
Passing Threshold: Minimum 🟡 on ALL criteria Ship-Ready: Minimum 🟢 on Correctness, Performance, Error Handling
---
Test Quality Rubric (Ramsay Mode)
Coverage
| Level | Criteria | Acceptable % |
|---|---|---|
| 🔴 Raw | Only happy path | <50% branch |
| 🟡 Acceptable | Common failures covered | 80%+ branch |
| 🟢 Michelin Star | Complete boundary analysis | 95%+ branch + mutation tested |
Edge Case Testing
| Level | Criteria | Example |
|---|---|---|
| 🔴 Raw | Only happy path tested | test('adds 2+2') |
| 🟡 Acceptable | Common failures tested | Null, empty, invalid input |
| 🟢 Michelin Star | Boundary analysis complete | Min/max values, overflow, underflow |
Test Clarity
| Level | Criteria | Example |
|---|---|---|
| 🔴 Raw | Unclear what's being tested | test('test1') |
| 🟡 Acceptable | Clear test names | test('handles null input') |
| 🟢 Michelin Star | Self-documenting test pyramid | Given-When-Then, BDD style |
Speed
| Level | Criteria | Example |
|---|---|---|
| 🔴 Raw | Minutes to run unit tests | Calls real database/network |
| 🟡 Acceptable | <10s for unit tests | Mocked dependencies |
| 🟢 Michelin Star | <1s, parallelized | Pure functions, in-memory |
Stability
| Level | Criteria | Flake Rate |
|---|---|---|
| 🔴 Raw | Flaky, timing-dependent | >1% failure rate |
| 🟡 Acceptable | Stable but potentially slow | 0% flake, deterministic |
| 🟢 Michelin Star | Deterministic + fast | 0% flake, <100ms per test |
Isolation
| Level | Criteria | Example |
|---|---|---|
| 🔴 Raw | Tests depend on each other | Shared state, execution order matters |
| 🟡 Acceptable | Independent tests | Each test sets up own state |
| 🟢 Michelin Star | Pure functions, no shared state | Immutable, stateless |
Merge Threshold: Minimum 🟡 on ALL criteria Production-Ready: Minimum 🟢 on Coverage, Stability, Isolation
---
BS Detection Rubric (Bach Mode)
Red Flags in Testing Practices
| Red Flag | Evidence | Impact | Harshness Level |
|---|---|---|---|
| Cargo Cult Practice | "Best practice" with no context | Wasted effort, false confidence | 🟡 Harsh |
| Certification Theater | Required cert unrelated to actual skills | Filters out critical thinkers | 🟢 Brutal |
| Vendor Lock-In | Tool solves problem it created | Expensive dependency | 🟡 Harsh |
| False Automation | "AI testing" still needs human verification | Automation debt | 🟡 Harsh |
| Checkbox Quality | Compliance without outcome measurement | Audit passes, customers suffer | 🟢 Brutal |
| Hype Cycle | Promises 10x improvement without evidence | Budget waste, disillusionment | 🟡 Harsh |
| Coverage Theater | 100% coverage of trivial code | False sense of quality | 🟡 Harsh |
| Test Script Slavery | Following test cases without thinking | Misses actual bugs | 🟢 Brutal |
| Magic Tool Thinking | Tool will solve all problems | Dependency without skill growth | 🟡 Harsh |
| Certification Over Competence | Hiring based on credentials, not ability | Weak team, strong resumes | 🟢 Brutal |
Green Flag Test
Ask these questions about any practice/tool/certification:
1. Does this help testers/developers do better work in THIS context?
- If yes → Worth considering
- If no → BS alert
2. Who benefits economically from this?
- Vendor/Consultant more than users → BS alert
- Users demonstrably benefit → Potentially useful
3. Can you measure the impact?
- Measurable outcomes → Worth evaluating
- Vague claims → BS alert
4. Does this promote thinking or compliance?
- Critical thinking → Good
- Checkbox compliance → BS alert
5. What happens if you don't adopt this?
- Concrete negative consequence → Worth considering
- FOMO, vendor says so → BS alert
---
Calibration Matrix
When to Be Brutal
| Scenario | Linus | Ramsay | Bach | Notes |
|---|---|---|---|---|
| Senior engineer, repeated mistake | ✅ | ✅ | ✅ | They should know better |
| Critical security bug | ✅ | ✅ | ❌ | Technical precision needed |
| Production incident | ✅ | ✅ | ❌ | No time for sugar-coating |
| Vendor evaluating claims | ❌ | ❌ | ✅ | BS detection prevents waste |
| Team explicitly requests no-BS | ✅ | ✅ | ✅ | Permission granted |
| Certification/process evaluation | ❌ | ❌ | ✅ | Bach's specialty |
When to Dial Back
| Scenario | Instead Use | Reason |
|---|---|---|
| Junior dev, first PR | Constructive mentoring | Build confidence |
| Demoralized team | Supportive guidance | Rebuild trust |
| Public forum | Private feedback | Avoid humiliation |
| Unclear if fixable | Collaborative problem-solving | Avoid frustration |
| Personal, not technical | Empathy + support | Not a code issue |
---
Scoring Guide
Overall Code Review Score (Linus Mode)
Score = (Correctness × 3) + (Performance × 2) + (Error Handling × 3) +
(Concurrency × 2) + (Testability × 1) + (Maintainability × 1)
Maximum: 60 points (all Excellent)
Passing: 36 points (all Passing)
Failing: <36 points
Harshness Level:
- 0-24 points: 🔴 Brutal ("This is fundamentally broken")
- 25-35 points: 🟡 Harsh ("Multiple issues need addressing")
- 36-48 points: 🟢 Direct ("Some improvements needed")
- 49-60 points: ⚪ Professional ("Minor suggestions")Test Suite Score (Ramsay Mode)
Score = (Coverage × 3) + (Edge Cases × 3) + (Clarity × 1) +
(Speed × 1) + (Stability × 3) + (Isolation × 1)
Maximum: 60 points (all Michelin Star)
Merge Threshold: 36 points (all Acceptable)
Failing: <36 points
Harshness Level:
- 0-24 points: 🔴 Brutal ("This is RAW. Don't serve it.")
- 25-35 points: 🟡 Harsh ("You know what good looks like.")
- 36-48 points: 🟢 Direct ("Close, but needs refinement.")
- 49-60 points: ⚪ Professional ("Well done, minor polish.")BS Detection Score (Bach Mode)
Red Flags: Count from BS Detection Rubric
Green Flags: Passes all 5 Green Flag Tests
Score = (Green Flags × 20) - (Red Flags × 10)
Maximum: 100 (all green flags, no red flags)
Acceptable: 50+ (more green than red)
BS Alert: <50 (more red than green)
Harshness Level:
- Negative score: 🔴 Brutal ("This is harmful")
- 0-40: 🟡 Harsh ("This is questionable")
- 41-70: 🟢 Direct ("Some concerns")
- 71-100: ⚪ Professional ("Reasonable approach")---
Example Assessments
Code Review Example (Linus Mode)
Code: Database query in HTTP handler without connection pooling
Assessment:
- Correctness: 🔴 Failing (connection leak)
- Performance: 🔴 Failing (O(n) connections)
- Error Handling: 🟡 Passing (has try/catch)
- Concurrency: 🔴 Failing (connection exhaustion)
- Testability: 🟡 Passing (can mock)
- Maintainability: 🟡 Passing (clear intent)
Score: (0×3) + (0×2) + (1×3) + (0×2) + (1×1) + (1×1) = 5/60
Harshness: 🔴 Brutal
Feedback:
"This is fundamentally broken. You're creating a new database connection
for every HTTP request without pooling. Under load, you'll exhaust
connections in seconds. Did you even test this with concurrent users?
>
Use a connection pool. This is Database 101."
---
Test Suite Example (Ramsay Mode)
Tests: 15 tests, all happy path, no edge cases
Assessment:
- Coverage: 🔴 Raw (35% branch)
- Edge Cases: 🔴 Raw (none tested)
- Clarity: 🟡 Acceptable (clear names)
- Speed: 🟢 Michelin (fast)
- Stability: 🟢 Michelin (no flakes)
- Isolation: 🟡 Acceptable (independent)
Score: (0×3) + (0×3) + (1×1) + (2×1) + (2×3) + (1×1) = 9/60
Harshness: 🔴 Brutal
Feedback:
"Look at this. You've got 15 tests and 14 of them are happy path.
Where's the validation testing? Where's the error handling?
>
This is RAW. You're testing if the code runs, not if it's correct.
Don't merge this."
---
BS Detection Example (Bach Mode)
Claim: "Our AI-powered test automation eliminates manual testing"
Assessment:
- Red Flags: Hype Cycle, Magic Tool Thinking, False Automation
- Green Flags: 0/5 (fails all tests)
Score: (0×20) - (3×10) = -30/100
Harshness: 🔴 Brutal
Feedback:
"This is vendor hype. 'AI-powered' doesn't eliminate the need for humans
to define test oracles, handle edge cases, or investigate failures.
>
The real question: Does this tool help YOUR testers on YOUR product
in YOUR context? If you can't answer specifically, you're buying hype."
Brutal Honesty Review Template
Review Type
- [ ] Linus Mode (Technical Precision)
- [ ] Ramsay Mode (Standards-Driven Quality)
- [ ] Bach Mode (BS Detection)
---
What's Broken
[Surgical description of the problem - be specific, not vague]
Evidence:
[Code snippet, claim, or practice being reviewed]---
Why It's Wrong
[Technical/logical explanation - facts, not opinions]
Fundamental Issue:
- Root cause:
- Why this matters:
- When it breaks:
---
What Correct Looks Like
[Clear model of excellence - show, don't just tell]
Best Practice:
[Example of correct approach]Why This Works:
- Reason 1:
- Reason 2:
- Reason 3:
---
How to Fix It
[Actionable steps - specific to context]
1. Immediate Fix:
[Command or code change]2. Verify Fix:
[How to test the fix]3. Prevent Recurrence:
- [ ] Add test coverage
- [ ] Update documentation
- [ ] Review similar code
---
Why This Matters
Impact if Not Fixed:
- [ ] Security vulnerability
- [ ] Performance degradation
- [ ] Data corruption
- [ ] User experience failure
- [ ] Technical debt
- [ ] Team velocity reduction
Priority: 🔴 Critical | 🟡 High | 🟢 Medium | ⚪ Low
---
Harshness Calibration
Audience: [Junior/Mid/Senior] Context: [First offense/Repeated mistake/Critical bug] Delivery: [Private/Team review/Public]
Tone Level:
- [ ] Level 1 - Direct (experienced engineers)
- [ ] Level 2 - Harsh (repeated mistakes)
- [ ] Level 3 - Brutal (critical issues/willful ignorance)
---
Follow-Up
- [ ] Reviewed by recipient
- [ ] Fix implemented
- [ ] Tests added
- [ ] Documentation updated
- [ ] Knowledge shared with team
#!/bin/bash
# Brutal Honesty Code Assessment Script (Linus Mode)
set -e
# Colors
RED='\033[0;31m'
YELLOW='\033[1;33m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color
echo "🔥 BRUTAL HONESTY CODE ASSESSMENT (Linus Mode)"
echo "================================================"
echo ""
# Check if file argument provided
if [ -z "$1" ]; then
echo "Usage: $0 <file-or-directory>"
exit 1
fi
TARGET="$1"
# Function to assess correctness
assess_correctness() {
echo "📊 CORRECTNESS CHECK"
echo "-------------------"
# Check for common bug patterns
if grep -r "TODO\|FIXME\|BUG\|HACK" "$TARGET" 2>/dev/null; then
echo -e "${RED}🔴 FAILING: Found TODO/FIXME/BUG/HACK comments${NC}"
echo " → This code admits it's broken. Fix it before review."
return 0
fi
# Check for error-prone patterns
if grep -r "null\|undefined" "$TARGET" 2>/dev/null | grep -v "!== null" | grep -v "!== undefined" > /dev/null; then
echo -e "${YELLOW}🟡 WARNING: Potential null/undefined issues${NC}"
echo " → Are you handling null cases properly?"
fi
echo -e "${GREEN}✓ No obvious correctness issues${NC}"
}
# Function to assess performance
assess_performance() {
echo ""
echo "⚡ PERFORMANCE CHECK"
echo "-------------------"
# Check for nested loops (potential O(n²))
nested_loops=$(grep -r "for.*{" "$TARGET" | wc -l)
if [ "$nested_loops" -gt 5 ]; then
echo -e "${RED}🔴 FAILING: Found $nested_loops loops${NC}"
echo " → Are you creating O(n²) complexity where O(n) exists?"
echo " → Use hash maps, sets, or better algorithms."
fi
# Check for synchronous I/O in hot paths
if grep -r "readFileSync\|writeFileSync" "$TARGET" 2>/dev/null; then
echo -e "${RED}🔴 FAILING: Synchronous file I/O detected${NC}"
echo " → You're blocking the event loop. Use async operations."
fi
echo -e "${GREEN}✓ No obvious performance issues${NC}"
}
# Function to assess error handling
assess_error_handling() {
echo ""
echo "🛡️ ERROR HANDLING CHECK"
echo "----------------------"
# Check for try/catch usage
try_count=$(grep -r "try\|catch" "$TARGET" 2>/dev/null | wc -l)
if [ "$try_count" -eq 0 ]; then
echo -e "${RED}🔴 FAILING: No error handling found${NC}"
echo " → What happens when this code fails? It crashes."
else
echo -e "${GREEN}✓ Found error handling (verify it's sufficient)${NC}"
fi
# Check for empty catch blocks
if grep -A 1 "catch" "$TARGET" 2>/dev/null | grep -q "^\s*}"; then
echo -e "${RED}🔴 FAILING: Empty catch blocks detected${NC}"
echo " → Swallowing errors silently is worse than crashing."
fi
}
# Function to assess concurrency
assess_concurrency() {
echo ""
echo "🔀 CONCURRENCY CHECK"
echo "-------------------"
# Check for global state mutations
if grep -r "global\.\|window\." "$TARGET" 2>/dev/null; then
echo -e "${YELLOW}🟡 WARNING: Global state mutations detected${NC}"
echo " → Are you handling concurrent access safely?"
fi
# Check for race condition patterns
if grep -r "setTimeout\|setInterval" "$TARGET" 2>/dev/null; then
echo -e "${YELLOW}🟡 WARNING: Timing-based code detected${NC}"
echo " → Are you creating race conditions?"
fi
echo -e "${GREEN}✓ Review concurrency manually${NC}"
}
# Function to assess testability
assess_testability() {
echo ""
echo "🧪 TESTABILITY CHECK"
echo "-------------------"
# Check if tests exist
if [ -d "tests" ] || [ -d "test" ] || [ -d "__tests__" ]; then
echo -e "${GREEN}✓ Test directory exists${NC}"
else
echo -e "${RED}🔴 FAILING: No test directory found${NC}"
echo " → Where are the tests? Did you even test this?"
fi
# Check for dependency injection
if grep -r "new\s\+\w\+(" "$TARGET" 2>/dev/null | grep -v "Error\|Date" > /dev/null; then
echo -e "${YELLOW}🟡 WARNING: Hard-coded dependencies detected${NC}"
echo " → Use dependency injection for testability."
fi
}
# Function to assess maintainability
assess_maintainability() {
echo ""
echo "🔧 MAINTAINABILITY CHECK"
echo "-----------------------"
# Check function length (should be <50 lines)
if [ -f "$TARGET" ]; then
long_functions=$(awk '/^function|^const.*=>/ {start=NR} /^}/ {if(NR-start>50) print "Line",start}' "$TARGET" | wc -l)
if [ "$long_functions" -gt 0 ]; then
echo -e "${YELLOW}🟡 WARNING: Found $long_functions functions >50 lines${NC}"
echo " → Break down complex functions."
fi
fi
# Check for magic numbers
if grep -rE "\s[0-9]{3,}" "$TARGET" 2>/dev/null | grep -v "1000\|2000" > /dev/null; then
echo -e "${YELLOW}🟡 WARNING: Magic numbers detected${NC}"
echo " → Use named constants."
fi
echo -e "${GREEN}✓ Review code clarity manually${NC}"
}
# Run all assessments
assess_correctness
assess_performance
assess_error_handling
assess_concurrency
assess_testability
assess_maintainability
# Final verdict
echo ""
echo "================================================"
echo "🎯 FINAL VERDICT"
echo "================================================"
echo ""
echo "Review the findings above. If you see multiple 🔴 FAILING marks,"
echo "this code is NOT ready for review."
echo ""
echo "Expected standards:"
echo " - All error paths handled"
echo " - No obvious performance issues"
echo " - Tests exist and pass"
echo " - Code is clear and maintainable"
echo ""
echo "If you wouldn't deploy this to production, don't submit it for review."
#!/bin/bash
# Brutal Honesty Test Assessment Script (Ramsay Mode)
set -e
# Colors
RED='\033[0;31m'
YELLOW='\033[1;33m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color
echo "👨🍳 BRUTAL HONESTY TEST ASSESSMENT (Ramsay Mode)"
echo "=================================================="
echo ""
# Check if test directory argument provided
if [ -z "$1" ]; then
echo "Usage: $0 <test-directory>"
exit 1
fi
TEST_DIR="$1"
# Check if test directory exists
if [ ! -d "$TEST_DIR" ]; then
echo -e "${RED}🔴 FAILING: Test directory '$TEST_DIR' doesn't exist${NC}"
echo " → Where are the tests? Did you even write any?"
exit 1
fi
# Function to assess coverage
assess_coverage() {
echo "📊 COVERAGE CHECK"
echo "----------------"
# Run coverage if npm test with coverage exists
if [ -f "package.json" ] && grep -q "test:coverage" package.json; then
echo "Running coverage analysis..."
npm run test:coverage 2>/dev/null || true
# Extract coverage percentage
coverage=$(npm run test:coverage 2>&1 | grep -oP '\d+\.\d+(?=%)' | head -1 || echo "0")
if (( $(echo "$coverage < 50" | bc -l) )); then
echo -e "${RED}🔴 RAW: ${coverage}% coverage${NC}"
echo " → This is embarrassing. You're barely testing anything."
elif (( $(echo "$coverage < 80" | bc -l) )); then
echo -e "${YELLOW}🟡 ACCEPTABLE: ${coverage}% coverage${NC}"
echo " → Minimum is 80%. You're not there yet."
else
echo -e "${GREEN}🟢 MICHELIN STAR: ${coverage}% coverage${NC}"
fi
else
echo -e "${YELLOW}⚠️ No coverage command found${NC}"
echo " → Add 'test:coverage' script to package.json"
fi
}
# Function to assess edge cases
assess_edge_cases() {
echo ""
echo "🎯 EDGE CASE CHECK"
echo "-----------------"
# Check for common edge case patterns
edge_case_patterns=(
"null"
"undefined"
"empty"
"zero"
"negative"
"max"
"min"
"overflow"
"boundary"
)
found_count=0
for pattern in "${edge_case_patterns[@]}"; do
if grep -ri "$pattern" "$TEST_DIR" > /dev/null 2>&1; then
((found_count++))
fi
done
if [ "$found_count" -eq 0 ]; then
echo -e "${RED}🔴 RAW: No edge cases tested${NC}"
echo " → You're only testing the happy path. That's not testing."
elif [ "$found_count" -lt 3 ]; then
echo -e "${YELLOW}🟡 ACCEPTABLE: Found $found_count edge case patterns${NC}"
echo " → Test more: null, empty, boundaries, overflow"
else
echo -e "${GREEN}🟢 MICHELIN STAR: Found $found_count edge case patterns${NC}"
fi
}
# Function to assess test clarity
assess_clarity() {
echo ""
echo "📖 CLARITY CHECK"
echo "---------------"
# Check for descriptive test names
unclear_tests=$(grep -r "test('test" "$TEST_DIR" 2>/dev/null | wc -l)
if [ "$unclear_tests" -gt 0 ]; then
echo -e "${RED}🔴 RAW: Found $unclear_tests unclear test names${NC}"
echo " → 'test1', 'test2' - What are you testing? Use descriptive names."
fi
# Check for describe/it blocks
if grep -r "describe\|it\|test" "$TEST_DIR" > /dev/null 2>&1; then
echo -e "${GREEN}✓ Tests have structure${NC}"
else
echo -e "${YELLOW}⚠️ No test framework patterns detected${NC}"
fi
}
# Function to assess test speed
assess_speed() {
echo ""
echo "⚡ SPEED CHECK"
echo "-------------"
echo "Running tests..."
start_time=$(date +%s)
# Run tests (suppress output)
if npm test > /dev/null 2>&1; then
end_time=$(date +%s)
duration=$((end_time - start_time))
if [ "$duration" -gt 60 ]; then
echo -e "${RED}🔴 RAW: Tests took ${duration}s${NC}"
echo " → Unit tests should run in seconds, not minutes."
echo " → Are you calling real databases/networks?"
elif [ "$duration" -gt 10 ]; then
echo -e "${YELLOW}🟡 ACCEPTABLE: Tests took ${duration}s${NC}"
echo " → Aim for <10s. Use mocks and in-memory operations."
else
echo -e "${GREEN}🟢 MICHELIN STAR: Tests took ${duration}s${NC}"
fi
else
echo -e "${RED}🔴 FAILING: Tests don't even pass${NC}"
echo " → Fix your broken tests before worrying about speed."
fi
}
# Function to assess stability
assess_stability() {
echo ""
echo "🎲 STABILITY CHECK"
echo "-----------------"
# Check for flaky patterns
if grep -ri "setTimeout\|sleep\|wait" "$TEST_DIR" > /dev/null 2>&1; then
echo -e "${RED}🔴 RAW: Timing-based tests detected${NC}"
echo " → You're creating flaky tests. Use proper async/await."
fi
# Run tests multiple times to detect flakes
echo "Running tests 3x to detect flakes..."
failures=0
for i in {1..3}; do
if ! npm test > /dev/null 2>&1; then
((failures++))
fi
done
if [ "$failures" -gt 0 ]; then
echo -e "${RED}🔴 RAW: Tests failed $failures/3 times${NC}"
echo " → FLAKY TESTS. These are worse than no tests."
echo " → Fix the non-determinism before merging."
else
echo -e "${GREEN}🟢 MICHELIN STAR: Tests are stable${NC}"
fi
}
# Function to assess isolation
assess_isolation() {
echo ""
echo "🏝️ ISOLATION CHECK"
echo "------------------"
# Check for shared state patterns
if grep -ri "global\|beforeAll\|shared" "$TEST_DIR" > /dev/null 2>&1; then
echo -e "${YELLOW}🟡 WARNING: Shared state patterns detected${NC}"
echo " → Are your tests independent? Can they run in any order?"
fi
# Check for test order dependencies
if grep -r "\.only\|\.skip" "$TEST_DIR" > /dev/null 2>&1; then
echo -e "${YELLOW}🟡 WARNING: .only or .skip found${NC}"
echo " → Don't commit tests with .only or .skip"
fi
echo -e "${GREEN}✓ Review test isolation manually${NC}"
}
# Run all assessments
assess_coverage
assess_edge_cases
assess_clarity
assess_speed
assess_stability
assess_isolation
# Final verdict
echo ""
echo "=================================================="
echo "🎯 FINAL VERDICT"
echo "=================================================="
echo ""
echo "Look at the results above. If you see multiple 🔴 RAW marks,"
echo "these tests are NOT production-ready."
echo ""
echo "Expected standards:"
echo " - 80%+ branch coverage"
echo " - Edge cases tested (null, empty, boundaries)"
echo " - Clear test names"
echo " - <10s to run"
echo " - 0% flaky"
echo " - Independent tests"
echo ""
echo "You know what good tests look like. Why aren't you writing them?"
Related skills
FAQ
What does brutal-honesty-review do?
brutal-honesty-review is a Claude Code skill for ai & agent building.
When should I use brutal-honesty-review?
When you need to helps with ai & agent building tasks., or when brutal-honesty-review is a claude code skill for ai & agent building.
What are the main capabilities?
brutal-honesty-review; AI & Agent Building; AI-coding skill.