From agentboard
Systematically discover quality issues in an existing codebase through a single broad sweep, then organize findings into an actionable document. Use when the user wants to clean up a vibe-coded app, audit codebase quality, find technical debt, survey an app for problems, or prepare an existing codebase for improvement. Triggers on "sweep my codebase", "clean up this app", "audit code quality", "find issues in this project", "this app is a mess", "technical debt", "vibe coded", "what's wrong with this code", "review my project", or any request to assess or inventory problems in an existing codebase before fixing things. Use this skill even if the user doesn't explicitly say "sweep" — any request to find or catalog problems in a codebase qualifies.
How this skill is triggered — by the user, by Claude, or both
Slash command
/agentboard:codebase-sweepThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Discover every quality issue in a codebase through a single broad sweep, then organize findings into a prioritized document.
Discover every quality issue in a codebase through a single broad sweep, then organize findings into a prioritized document.
This skill covers discovery and triage only. Do not fix anything. Do not prescribe architecture. Do not run linters or static analysis. You are reading code and reasoning about quality.
Before reading any code, get the lay of the land.
node_modules, .git, dist, build, lock files).README, ARCHITECTURE.md, docs/, etc.) — skim it for stated intentions. The gap between stated intentions and actual code is itself a finding.This step should take one tool call (directory listing) and a quick scan of config/README files. The goal is to know what you're looking at before diving in, so you can make informed decisions about reading order.
Read through every source file in the project. For each file, note anything that's wrong — any quality issue, any code smell, any bug, any inconsistency.
Small projects (under 30 source files): Read every file, in full.
Medium projects (30–80 files): Read every file. For files over 300 lines, read the first 100 lines, last 50 lines, and scan the middle for function signatures and structure. If something looks wrong in the scan, read the full section.
Large projects (80+ files): Read all files in core directories (routes, controllers, services, models, main components). For remaining directories, read a representative sample — at minimum 3 files per directory. If a directory shows problems in the sample, read the rest of it.
Regardless of project size: always read entry points, configuration files, and anything that other files heavily import.
Read with the mindset of a senior engineer doing a code review where the only goal is to find problems. You are not scanning for specific categories in sequence — you are reading code and writing down what's wrong. Here are the kinds of things that should catch your eye (this is calibration, not a sequential checklist):
.catch(() => {}), functions that return null on error with no logging.// TODO items that have clearly been abandoned.As you read each file, write your findings immediately. For each finding:
Good finding:
src/api/users.js:34,src/api/projects.js:67,src/api/auth.js:12— All have empty catch blocks (.catch(() => {})). Errors in API calls are silently swallowed with no logging or user feedback.
Bad finding:
"Error handling needs improvement."
Good finding:
Dashboard.jsx:142—fetchData()is 89 lines. It calls 3 different API endpoints, parses each response differently, updates local state, and triggers 2 side effects. At least 5 distinct responsibilities in one function.
Bad finding:
"Dashboard component is too complex."
Assign each finding a severity as you write it:
After reading all files, organize your raw findings into the deliverable document. Write it to docs/sweep/YYYY-MM-DD-findings.md in the target project (create the directory if needed).
# Codebase Sweep — [date]
**Project:** [name/path]
**Source files scanned:** [count]
**Total findings:** [count]
**Severity breakdown:** [N critical, N high, N medium, N low]
---
## Critical & High Priority
### [Group name — describe the pattern, not the fix]
**Severity:** critical | high
**Files:** `path/file.js`, `path/other.js`, ...
**Depends on:** [other group name, if this must be addressed first]
[2-4 sentences describing the problem pattern. What's wrong, where it appears, why it matters. Key line numbers.]
### [Next group]
...
## Medium Priority
### [Group name]
...
## Low Priority
### [Group name]
...
---
## Raw Findings by File
### src/api/users.js
- **high** — No input validation on route parameters. User IDs from URL params passed directly to DB queries without sanitization.
- **medium** — Error responses use three different formats: `{error: msg}`, `{message: msg}`, and raw strings.
### src/components/Dashboard.jsx
- **medium** — `fetchData()` (line 142) is 89 lines. Fetches from 3 endpoints, parses responses, updates state, triggers side effects.
- **low** — 4 unused imports.
[... every file with findings ...]
The top section (Critical & High, Medium, Low) groups related findings into patterns. The bottom section (Raw Findings by File) preserves every individual finding for reference. Both sections are important — the groups give the big picture, the raw list ensures nothing is lost.
To build the groups:
Depends on: [group A]. Example: "Separate business logic from UI components" should happen before "Add unit tests for business logic."After writing the findings document, present it. Summarize:
Ask the user if priorities look right before anyone moves to fixing things.
npx claudepluginhub maxcogar/agent-armory --plugin agentboardGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.