Skill: Audit Blind Spots Walk

SkillDev tools

Walk the B1-B15 AI-to-AI blind-spot catalog systematically. Use during the audit pipeline AFTER hard-stops and Tambon hunt and BEFORE the 13 domain audits. Output: PRESENT / NOT PRESENT for each B-class with evidence. Findings flow into the appropriate domains.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Skill: Audit Blind Spots Walk skill

What this skill tells your AI

The instructions your AI receives, as published by wolverin0/clawtrol in .claude/skills/audit-blind-spots/SKILL.md and read by ahel’s review.

This skill walks the 15 AI-to-AI blind spots from @.claude/context/audit-blind-spots.md and produces a structured report. The findings are then routed by the orchestrator into the appropriate domain sections.

Why this is a separate skill (not folded into domains)

Blind spots cross domain boundaries. B1 (auth not wired) is a security finding AND a code-quality finding AND a reliability finding. Running the blind-spot walk once and routing findings into domains is more efficient than asking each domain to re-discover its share.

Process

Pre-flight

view @.claude/context/audit-rules.md
view @.claude/context/audit-blind-spots.md

Walk B1-B15 in order

For each B-class, follow the detection commands from audit-blind-spots.md. The walk is mostly grep + read, but B1, B7, B8 require substantial code-tracing.

Per-blind-spot template

═══════════════════════════════════════════════════════════════════════
  B<N> — <n>
═══════════════════════════════════════════════════════════════════════

Detection commands run:
  <list>

If output is clean:
  Status:   NOT PRESENT
  Notes:    <e.g., "no auth middleware found, but app uses Supabase Auth
                    integrated into FastAPI dependencies — different
                    pattern, B1 doesn't apply">

If output has matches:
  Status:   PRESENT (<N> instances)

  Findings:
    F-B<N>.1
      Evidence:        <path:line>
      Pattern:         <which sub-pattern>
      Severity:        Critical | High | Medium | Low
      Routing:         Domain <N>  (which domain this finding belongs to)
      What's wrong:    <one paragraph>
      Why it matters:  <one sentence>

    [F-B<N>.2 etc. if more]

Routing table — where each B finding goes

The orchestrator uses this to put findings in the right domain section:

Blind spotPrimary domainSecondary domain
B1 (Auth not wired)Domain 1 (Security)
B2 (Error returns success)Domain 7 (Reliability)Domain 1
B3 (FE-only pagination)Domain 5 (Performance)Domain 3
B4 (Soft-delete unfiltered)Domain 3 (Database)Domain 1
B5 (Env var existence-only)Domain 4 (DevOps)Domain 7
B6 (Single-user assumptions)Domain 5 (Performance)Domain 7
B7 (Validation asymmetry)Domain 1 (Security)Domain 6
B8 (IDOR)Domain 1 (Security)
B9 (Dead utilities)Domain 13 (Code Integrity)Domain 9
B10 (Optimistic UI no rollback)Domain 6 (UX/A11y)Domain 7
B11 (Webhook idempotency)Domain 7 (Reliability)Domain 1
B12 (Stack mixing)Domain 13 (Code Integrity)Domain 2
B13 (Test mirrors code)Domain 13 (Code Integrity)Domain 9
B14 (Comment-code drift)Domain 13 (Code Integrity)Domain 9
B15 (Coverage theater)Domain 9 (Maintainability)Domain 13

Output format

═══════════════════════════════════════════════════════════════════════
  AI-TO-AI BLIND SPOTS WALK
═══════════════════════════════════════════════════════════════════════

Walked 15 blind-spot classes. Findings routed to domains as follows.

  B1  — Auth present but not wired:           [PRESENT/NOT PRESENT]
  B2  — Error handlers returning success:     [PRESENT/NOT PRESENT]
  B3  — Frontend-only pagination:             [PRESENT/NOT PRESENT]
  B4  — Soft-delete unfiltered:               [PRESENT/NOT PRESENT]
  B5  — Env var existence-only checks:        [PRESENT/NOT PRESENT]
  B6  — Single-user assumptions:              [PRESENT/NOT PRESENT]
  B7  — Validation asymmetry:                 [PRESENT/NOT PRESENT]
  B8  — Authorization gap (IDOR):             [PRESENT/NOT PRESENT]
  B9  — Dead imports / unreachable utils:     [PRESENT/NOT PRESENT]
  B10 — Optimistic UI without rollback:       [PRESENT/NOT PRESENT]
  B11 — Webhook idempotency missing:          [PRESENT/NOT PRESENT]
  B12 — Stack mixing:                         [PRESENT/NOT PRESENT]
  B13 — Test mirrors code:                    [PRESENT/NOT PRESENT]
  B14 — Comment-code drift:                   [PRESENT/NOT PRESENT]
  B15 — Coverage theater:                     [PRESENT/NOT PRESENT]

[Then the detailed findings per PRESENT class, routed to domains]

────────────────────────────────────────────────────────────────────────
SUMMARY
────────────────────────────────────────────────────────────────────────

Present:                      <N> of 15
Most pervasive (highest count): <which blind spot, in how many places>
Critical findings from walk:    <count>
High findings from walk:        <count>

[SECTION COMPLETE: audit-blind-spots]

Failure modes to refuse

  • ❌ Skipping a B-class because it "probably doesn't apply" — walk all 15
  • ❌ Marking PRESENT without specific evidence (path:line)
  • ❌ Routing all findings to the same domain to "consolidate" — use the routing table
  • ❌ Reading test files for B13 detection but not source files for B14 detection — they're complementary

Signals

GitHub stars
42
Forks
7
Last commit
Jul 2026
Advanced
Catalog kind
skill
Gateway key
audit-blind-spots
Source
github.com/wolverin0/clawtrol