Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Read-only reconnaissance pass over an unfamiliar codebase, system, or feature area to surface hidden risks before any code is written. Use when starting work in unfamiliar territory, before a risky change, or when the user says "blindspot pass", "what am I missing", or "scan for risks".
.claude/skills/hiendinhngoc-blindspot/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 100% | 0% |
| case-16 | ✗→✓ | ▲ Improved | -43% | 0% |
| case-21 | ✗→✓ | ▲ Improved | -65% | 0% |
| case-13 | ✓→✗ | ▼ Worse | -47% | 0% |
Find the unknowns in a system BEFORE touching it. Reconnaissance only.
<HARD-RULE>Read-only. Do not edit, create, or delete any project file. No fixes, however tempting.</HARD-RULE>
Tip for the user (mention once at the start): running this pass in plan mode or a read-only permission mode makes the rule enforced by the harness, not just promised by the model.
from conversation. If no target is discernible, ask for one — don't guess.
one line what kind of system the target is, and list the 2–3 failure classes that domain actually bleeds from. The generic list below is a backend-shaped floor, not a ceiling — a native UI app bleeds from accessibility gaps, lifecycle/identity bugs, and state-restoration loss; a data pipeline from loss, duplication, and ordering; a CLI from argument edge cases and exit codes. Findings should come from the derived list first.
rg/find/cat, or equivalent) and git log for churn hotspots to understand the target. Look for the domain-derived risks from step 2, plus:
state, implicit ordering dependencies
comments, empty catch blocks
contradicting code, dead feature flags
concurrency — anything irreversible with no test coverage
(git log --oneline --no-merges -- <path>, ignoring generated files: lockfiles, *.pbxproj, build outputs — their churn is noise)
than 5 real risks are found, say so instead of padding.
### N. <one-line risk statement> [risk: high|medium|low]
Why it matters: <1-2 sentences, concrete failure scenario>
Investigate: `<ready-to-paste follow-up prompt the user can run next>`End with a one-line recommendation of which finding to chase first.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 4,626 | 2,968 | -36% | 1 | 1 | 0% | 350 | 1,025 | +193% | 0 | 0 | — |
case-02 | fail→fail | 12,758 | 3,573 | -72% | 1 | 1 | 0% | 2,297 | 1,003 | -56% | 0 | 0 | — |
case-03 | fail→fail | 10,049 | 4,296 | -57% | 1 | 1 | 0% | 2,064 | 1,198 | -42% | 0 | 0 | — |
case-04 | fail→fail | 6,053 | 5,135 | -15% | 1 | 1 | 0% | 1,259 | 1,519 | +21% | 0 | 0 | — |
case-05 | fail→fail | 12,968 | 4,493 | -65% | 1 | 1 | 0% | 2,975 | 1,384 | -53% | 0 | 0 | — |
case-06 | fail→fail | 31,622 | 4,397 | -86% | 1 | 1 | 0% | 1,360 | 1,200 | -12% | 0 | 0 | — |
case-07 | fail→pass | 4,738 | 2,895 | -39% | 1 | 1 | 0% | 836 | 1,091 | +31% | 0 | 0 | — |
case-08 | pass→pass | 5,477 | 3,977 | -27% | 1 | 1 | 0% | 880 | 1,215 | +38% | 0 | 0 | — |
case-09 | pass→pass | 18,630 | 21,673 | +16% | 1 | 1 | 0% | 3,231 | 2,696 | -17% | 0 | 0 | — |
case-10 | pass→pass | 6,429 | 2,991 | -53% | 1 | 1 | 0% | 1,084 | 1,026 | -5% | 0 | 0 | — |
case-11 | fail→pass | 11,254 | 16,128 | +43% | 1 | 1 | 0% | 1,617 | 3,227 | +100% | 0 | 0 | — |
case-12 | fail→fail | 3,525 | 2,640 | -25% | 1 | 1 | 0% | 577 | 867 | +50% | 0 | 0 | — |
case-13 | pass→fail | 11,209 | 4,504 | -60% | 1 | 1 | 0% | 2,483 | 1,326 | -47% | 0 | 0 | — |
case-14 | fail→fail | 12,014 | 4,388 | -63% | 1 | 1 | 0% | 2,528 | 1,092 | -57% | 0 | 0 | — |
case-15 | fail→fail | 1,895 | 3,617 | +91% | 1 | 1 | 0% | 298 | 1,091 | +266% | 0 | 0 | — |
case-16 | fail→pass | 9,723 | 3,489 | -64% | 1 | 1 | 0% | 1,825 | 1,035 | -43% | 0 | 0 | — |
case-17 | pass→pass | 14,475 | 4,251 | -71% | 1 | 1 | 0% | 2,682 | 1,087 | -59% | 0 | 0 | — |
case-18 | pass→pass | 13,418 | 3,121 | -77% | 1 | 1 | 0% | 2,462 | 1,015 | -59% | 0 | 0 | — |
case-19 | fail→fail | 7,159 | 5,234 | -27% | 1 | 1 | 0% | 1,251 | 1,078 | -14% | 0 | 0 | — |
case-20 | fail→fail | 8,297 | 3,338 | -60% | 1 | 1 | 0% | 1,213 | 1,070 | -12% | 0 | 0 | — |
case-21 | fail→pass | 18,395 | 5,922 | -68% | 1 | 1 | 0% | 3,218 | 1,129 | -65% | 0 | 0 | — |
case-22 | pass→pass | 16,959 | 4,539 | -73% | 1 | 1 | 0% | 2,452 | 1,148 | -53% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +14 percentage points is the difference between those two pass rates over the 21 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.