with one click
blindspot
// Systematically find blind spots in code, architecture, APIs, and deployment — structured critique that catches what familiarity hides
// Systematically find blind spots in code, architecture, APIs, and deployment — structured critique that catches what familiarity hides
Multi-source research synthesis — aggregate and compare 3+ sources or any source >5KB using sub-agent dispatch and SharedState
Find your way home — register with the yoyo family, introduce yourself, and participate in family discussions
RLM-style large-codebase comprehension — build a mental map of any codebase by dispatching sub-agents to explore regions without bloating main context
Interact with the community through GitHub Discussions — reply, share, learn
Read X (Twitter) via xurl — search posts, fetch threads, read profiles, and read long-form articles
Evaluate readiness and publish to crates.io
| name | blindspot |
| description | Systematically find blind spots in code, architecture, APIs, and deployment — structured critique that catches what familiarity hides |
| tools | ["bash","read_file","list_files","search","sub_agent"] |
| core | false |
| origin | yoyo |
| status | active |
| score | 0.5 |
| uses | 0 |
| wins | 0 |
| last_used | null |
| last_evolved | null |
| parent_pattern_key | null |
| keywords | ["blindspot","roast","critique","audit","security","architecture","code review","debt"] |
You are performing a structured critique of code, architecture, or systems. Your job is to find what the author can't see — the gaps that familiarity hides, the risks that daily use normalizes, the debt that accumulates silently.
This is not a linter. Linters catch syntax and style. You catch design decisions that will hurt later — the unwrap() that will panic in production, the O(n²) that's fine with 10 items but fatal with 10,000, the API that can't evolve without breaking clients.
/skill run blindspot with a targetexplore-codebase first)What to analyze. One of:
src/tools.rssrc/format/self — yoyo's own codebase (defaults to src/)Controls the threshold for reporting:
Examine the target through these lenses:
unwrap() / expect() on fallible operations in non-test codeOk(()) but swallow errors silently? without .context() or .map_err())../)String when &str would sufficeCargo.lock entries or version pinningDetermine what you're analyzing and how large it is.
# For a file
wc -l <target_file>
# For a directory
find <target_dir> -name '*.rs' | xargs wc -l | sort -rn | head -20
# For "self"
find src/ -name '*.rs' | xargs wc -l | sort -rn | head -20
For sub-agent dispatch, store the file contents in SharedState and dispatch focused questions:
For each of the 7 dimensions, scan the target with appropriate tools:
# Error handling: find unwrap/expect in non-test code
grep -rn '\.unwrap()' <target> | grep -v '#\[cfg(test)\]' | grep -v 'tests/'
grep -rn '\.expect(' <target> | grep -v '#\[cfg(test)\]' | grep -v 'tests/'
# Security: find potential secrets
grep -rn 'password\|secret\|token\|api_key' <target> --include='*.rs'
# Architecture: find large files (potential god objects)
find <target> -name '*.rs' -exec wc -l {} \; | sort -rn | head -10
# Scalability: find nested loops
grep -rn 'for.*{' <target> --include='*.rs' -A 5 | grep -B 1 'for.*{'
# Testing: find public functions and check for corresponding tests
grep -rn '^pub fn' <target> --include='*.rs'
These are starting points. Use judgment — not every grep hit is a real finding. Read context around hits before reporting.
Assign each finding a severity:
Format output as:
🔍 BLINDSPOT REPORT — [target]
Roast level: [gentle|standard|brutal]
Analyzed: [N files, M lines]
## Critical (fix now)
- **[category]** `file:line` — [description of the issue and why it matters]
## Warning (fix soon)
- **[category]** `file:line` — [description]
## Smell (consider)
- **[category]** `file:line` — [description]
## Acknowledged (known, accepted)
- [items explicitly documented as accepted trade-offs in the codebase]
---
Summary: N critical, M warnings, K smells
Before including a finding, ask:
The goal is signal, not volume. Ten precise findings beat fifty grep hits.
When the target exceeds 30KB:
shared_state.set("blindspot.group-1", <file contents>)"You are analyzing [files] for [dimension]. Report findings as JSON:
{findings: [{file, line, severity, category, description}]}"
Hard depth cap: 3. If you're already at depth 2, do direct analysis instead of dispatching further.
src/tools.rs:247 — unwrap() on user-supplied path will panic on non-UTF8 filenames" is actionable.