code-audit
Perform a human-assisted code audit. Use when asked to audit, review architecture, document a codebase, or create technical documentation with diagrams.
Best use case
code-audit is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Perform a human-assisted code audit. Use when asked to audit, review architecture, document a codebase, or create technical documentation with diagrams.
Teams using code-audit should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/code-audit/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How code-audit Compares
| Feature / Agent | code-audit | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Perform a human-assisted code audit. Use when asked to audit, review architecture, document a codebase, or create technical documentation with diagrams.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
SKILL.md Source
# Code Audit Skill
This skill guides a structured, bottom-up code audit process that produces clear documentation with PlantUML diagrams.
## Quick Reference
| Phase | Action |
|-------|--------|
| 0 | Initialize or resume audit |
| 1 | Define scope (boundaries, aspects) |
| 2 | Analyze components bottom-up |
| 3 | Synthesize findings into docs/diagrams |
| 4 | Human review and finalization |
## Invocation
All audits are stored in `code-audits/` relative to the current working directory.
**Directory naming**: `code-audits/<system-title>-YYMMDD/`
- Example: `code-audits/redemption-service-250106/`
When invoked:
1. Check `code-audits/` for existing audits with `state.json`
2. If found, list them and offer to resume
3. If starting fresh, ask for a short system title (kebab-case), then create directory
## Output Directory Structure
```
<audit-dir>/
├── state.json # Tracks progress for resumption
├── index.md # Main audit index (created in Phase 3)
├── boundaries.md # Scope definition (created in Phase 1)
├── entry-points.md # System entry points (created in Phase 3)
├── techdebt.md # TODOs and technical debt (created in Phase 3)
├── components/ # Per-file summaries (created in Phase 2)
├── aspects/ # Cross-cutting concerns (created in Phase 3)
├── diagrams/ # PlantUML source files (created in Phase 3)
└── generated/ # Post-processed with SVGs (created in Phase 4)
```
## State File Format
```json
{
"version": 1,
"title": "redemption-service",
"phase": "scoping|discovery|synthesis|review|complete",
"boundaries": {
"directories": ["app/services/**"],
"files": [],
"excludes": ["**/*_test.rb", "**/*.spec.ts"]
},
"aspects": ["error-handling", "retry-patterns", "execution-contexts", "authorization"],
"components": {
"app/services/foo.rb": {
"status": "pending|in_progress|complete",
"summary_file": "components/app-services-foo.md"
}
},
"checkpoint_interval": 5,
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-01-01T00:00:00Z"
}
```
## Required Focus Areas
Every audit MUST document these cross-cutting concerns:
1. **Error Handling** - How errors are caught, propagated, logged, and recovered from
2. **Retry Patterns** - Any retry logic, backoff strategies, idempotency handling
3. **Execution Contexts** - How code is invoked (web request, background job, scheduler, CLI, etc.)
4. **Authorization** - Access control, permission checks, authentication requirements
5. **Testing Patterns** - Test coverage approach, test types used, mocking strategies, what's tested vs. not
6. **Database Patterns** - Transactions, queries, migrations, connection management, N+1 risks
7. **Configuration & Secrets** - Environment variables, feature flags, secrets management, config loading
8. **Logging & Observability** - Log levels, structured logging, tracing, metrics, health checks
9. **Concurrency & Thread Safety** - Locks, async patterns, race condition risks, thread pools
10. **External Integrations** - API clients, webhooks, third-party services, failure handling
## Phase Workflow
See `workflow.md` for detailed instructions on each phase.
Use subagents/tasks for individual, isolated task execution to maintain efficient context.
### Phase 0: Initialize/Resume
1. Check for existing audits in `code-audits/`:
- Look for directories containing `state.json`
- If found, list them with their phase and progress
- Offer to resume any incomplete audit
2. If resuming:
- Read and parse `state.json`
- Jump to the current phase
3. If starting fresh:
- Ask for a short system title (kebab-case, e.g., "redemption-service")
- Generate directory name: `code-audits/<title>-YYMMDD/`
- Create directory structure:
```
mkdir -p code-audits/<title>-YYMMDD/{components,aspects,diagrams,generated}
```
- Initialize `state.json` with phase="scoping"
- Proceed to Phase 1
### Phase 1: Scoping
Use `AskUserQuestion` to gather:
1. **Boundaries**: Which directories/files to include
- Accept glob patterns (e.g., `app/services/**/*.rb`)
- Can be specific files or broad directories
2. **Excludes**: What to skip
- Tests, generated files, vendor code, etc.
3. **Additional Aspects**: Beyond the 4 required ones
- Performance patterns, caching, external integrations, etc.
Then:
- Write `boundaries.md` documenting the scope
- Update `state.json` with boundaries and aspects
- Set phase to "discovery"
### Phase 2: Discovery (Bottom-Up)
1. Enumerate all files matching boundaries (respecting excludes)
2. Register each in `state.json` with status "pending"
3. Use `TodoWrite` to track progress
For each file:
1. Mark "in_progress" in state
2. Read and analyze the code
3. Create component summary in `components/` using the template
4. Mark "complete" in state
5. Every N files (checkpoint_interval), pause and ask user to verify
When all components complete:
- Update phase to "synthesis"
### Phase 3: Synthesis
1. Read all component summaries
2. Identify patterns across components
3. Create aspect documentation:
- `aspects/error-handling.md`
- `aspects/retry-patterns.md`
- `aspects/execution-contexts.md`
- `aspects/authorization.md`
- `aspects/testing-patterns.md`
- `aspects/database-patterns.md`
- `aspects/configuration-secrets.md`
- `aspects/logging-observability.md`
- `aspects/concurrency-thread-safety.md`
- `aspects/external-integrations.md`
- Plus any user-specified aspects
4. Create `entry-points.md` documenting:
- Where external requests enter the system (routes, endpoints, CLI)
- Background job entry points
- Scheduled task triggers
- Event/webhook handlers
- Recommended reading order for newcomers
5. Create `techdebt.md` consolidating:
- TODOs and FIXMEs found in code
- Deprecated patterns still in use
- Known issues and workarounds
- Suggested improvements from component analysis
6. Design PlantUML diagrams:
- Architecture overview (component relationships)
- Data flow diagrams (how data moves through system)
- Sequence diagrams (for key flows)
- State diagrams (where relevant)
7. Write `index.md` tying everything together
8. Update phase to "review"
### Phase 4: Review
1. Present audit summary to user
2. Walk through each aspect
3. Show diagram previews (describe what they show)
4. Allow corrections/additions
5. Run the render script automatically:
```bash
~/.claude/skills/audit/scripts/render-puml.sh <audit-dir>
```
6. Mark phase as "complete"
## Diagram Guidelines
### Embedding in Markdown
Small diagrams can be embedded directly:
~~~markdown
```plantuml
@startuml
Alice -> Bob: Hello
Bob -> Alice: Hi
@enduml
```
~~~
### Separate Files
Larger diagrams go in `diagrams/`:
- Reference in markdown: ``
### Supported Types
- `@startuml` / `@enduml` - class, sequence, activity, component
- `@startmindmap` / `@endmindmap` - hierarchical views
- `@startwbs` / `@endwbs` - work breakdown structures
- `@startjson` / `@endjson` - data structure visualization
### Valid Colors
PlantUML only supports specific color names. Use these valid colors:
| Category | Valid Colors |
|----------|--------------|
| Basic | Red, Green, Blue, Yellow, Orange, Purple, Pink, Cyan, Magenta, White, Black, Gray |
| Light | LightBlue, LightGreen, LightYellow, LightGray, LightPink, LightCyan, LightCoral, LightSalmon |
| Purple variants | Lavender, Plum, Violet, Orchid, MediumPurple, DarkViolet, Indigo, Thistle |
| Other | Aqua, Beige, Coral, Crimson, Gold, Khaki, Lime, Maroon, Navy, Olive, Silver, Teal, Tomato |
**Invalid colors to avoid**: LightPurple, LightOrange, LightRed (use alternatives above)
You can also use hex codes: `#E6E6FA` (lavender), `#DDA0DD` (plum), `#EE82EE` (violet)
## Templates
Use templates from `templates/` directory for consistency:
- `templates/index.md` - Main audit index
- `templates/component.md` - Per-file component summary
- `templates/aspect.md` - Cross-cutting concern documentation
- `templates/entry-points.md` - System entry points documentation
- `templates/techdebt.md` - Technical debt tracking
## Render Script
The `scripts/render-puml.sh` script:
- Uses Docker (`plantuml/plantuml` image)
- Converts `.puml` files to SVG
- Processes markdown files to replace plantuml blocks/references with SVG
- Outputs to `generated/` directory
Usage:
```bash
~/.claude/skills/audit/scripts/render-puml.sh /path/to/audit
```Related Skills
calendar-audit
Protect your deep work time. Calendar Audit scores every meeting on your calendar, calculates your deep work gap, and makes specific suggestions to reclaim focus time. Supports multiple calendar tools (screenshot, Google Calendar MCP, Apple Calendar, icalBuddy, gcalcli) and scoring frameworks (5-Dimension, Eisenhower, RACI, Value vs Effort, Custom). Value first — your first audit takes 2 minutes with just a screenshot. Just say "calendar-audit" to get going.
auditor-frontend-ui-ux
Audit frontend code quality, UI/UX, forms, state management, and translations. Typically loaded by the audit-orchestrator skill via sub-agents, but can be used standalone.
audit_logging
Ensure every critical action is logged (vital for UAG/Trust Room).
audit-code
Run a single-session code review audit on the codebase
architecture-auditor
Architecture audit and analysis specialist for Modular Monoliths. **ALWAYS use when reviewing codebase architecture, evaluating bounded contexts, assessing shared kernel size, detecting "Core Obesity Syndrome", or comparing implementation against ADR-0001 and anti-patterns guide.** Use proactively when user asks about context isolation, cross-context coupling, or shared kernel growth. Examples - "audit contexts structure", "check shared kernel size", "find cross-context imports", "detect base classes", "review bounded context isolation", "check for Core Obesity".
ux-audit
AI skill for automated design audits. Evaluate interfaces against proven UX principles for visual hierarchy, accessibility, cognitive load, navigation, and more. Based on Making UX Decisions by Tommy Geoco.
Audit UI/UX Consistency
COMPREHENSIVE UI/UX audit combining code analysis AND visual screenshot analysis. Detects design system violations, visual inconsistencies across views, button/card/modal style variants, color palette chaos, theme breaks, and accessibility issues. Provides detailed visual evidence and prioritized fixes. INCLUDES Storybook design decision workflow for user-driven choices. CRITICAL - Must analyze actual rendered screenshots, not just code.
audit-style
Audit and refactor CSS to comply with Game Loopers design system and BEM methodology
accessibility-ux-audit
Audit and enhance accessibility and UX across all pages and components.
accessibility-contrast-audit
[Design System] Quantitative accessibility audit for UI - contrast ratios, font sizes, tap targets, heading hierarchy. Use when (1) checking WCAG color contrast compliance, (2) auditing text sizes for readability, (3) validating touch/click target sizes, (4) reviewing heading structure and landmarks, (5) user asks to 'check accessibility', 'audit contrast', 'WCAG compliance', or 'a11y check'.
seo-aeo-audit
Optimize for search engine visibility, ranking, and AI citations. Use when asked to improve SEO, optimize for search, fix meta tags, add structured data, or improve AEO and AI visibility.
geo-audit
Audit and optimize website for AI search engines like ChatGPT, Perplexity, Google AI Overviews, and Claude. Use when discussing GEO (Generative Engine Optimization), SEO for AI, llms.txt, AI crawlers, structured data for LLMs, or visibility in AI search results.