/SKILL.md
Comprehensive audit toolkit with 14 audit types. Includes a pre-push branch audit (8-category checklist with Clean/Minor/Blocking verdicts) plus 13 deep-dive audits run via sub-agents: code quality, documentation brittleness, docs-code sync, language best practices, concurrency, resource management, test quality, feature completeness, performance, bug patterns, design philosophy compliance, security vulnerabilities, and UI design (CRAP principles). ALWAYS use this skill when the user wants to audit, review before pushing, check their branch, look for duplication or dead code, check docs, review test quality, find concurrency bugs, check resource leaks, analyse security or performance, review UI design, verify feature completeness, or check code against best practices or design principles.
npx skillsauth add adewale/audit-skill auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides two modes:
If the user says "audit" without further context and there's a branch with changes, run the branch audit. If they ask for something specific (e.g., "audit for security vulnerabilities", "check our docs", "review the UI"), run the relevant deep-dive. They can also request multiple audits at once.
Determine the base branch (main, master, or the upstream tracking branch), then:
git diff <base>...HEAD to get the full branch diffgit diff and git diff --cached for any uncommitted/staged changesgit log --oneline <base>..HEAD to see the commit listStart your report with a brief branch summary: branch name, base, number of commits, and a one-sentence description of the purpose of the changes.
Work through each category below. Report only categories that have findings — omit categories with nothing to report (don't include "No findings" sections).
Each finding should appear once. If something could fit multiple categories, put it in the most relevant one and don't repeat it elsewhere.
Check this first — it's the most critical category.
.env files or equivalents staged for commitWhen reporting secrets findings, never include the actual secret value in your
output. Redact credentials to show only enough to identify the location — e.g.,
"API key sk_live_...7dc found at src/config.py:42". The whole point of flagging
secrets is to prevent exposure; echoing them in the report would defeat that purpose.
Be specific: name each file you think is unrelated and explain why.
console.log, debugger, print(), pp, binding.pry, dbg! left in
production code (test files are fine)TODO, FIXME, HACK, XXX introduced in this branch.skip, @pytest.mark.skip, #[ignore])Try to run the project's test suite, linter, and type checker. If the project doesn't have the tooling set up, or dependencies aren't installed, note that and move on — don't spend time troubleshooting environment issues. Report what you can.
<<<<<<<, =======, >>>>>>>)End with a summary table of findings (file, line, issue, severity) and one of these verdicts:
Secrets and unresolved conflict markers are always Blocking. Debug artifacts and missing tests are Blocking. TODO/FIXME comments, commit hygiene, and minor integration issues are typically Minor.
If the user asks you to fix any findings, fix them. Otherwise, just report.
Each deep-dive audit should be delegated to a sub-agent so it can explore the codebase thoroughly without bloating the main conversation. Launch them in parallel when multiple are requested. Each sub-agent should produce a written report saved to a file, then summarize the key findings back to the user.
Spawn a sub-agent to audit the project for:
The report should group findings by theme (not by file) and suggest concrete actions.
Spawn a sub-agent to audit documentation (READMEs, doc comments, guides, wikis, SKILL.md files, onboarding docs) for:
The report should recommend specific rewrites, not just flag problems.
Spawn a sub-agent to verify that documentation actually matches the current state of the code. The brittleness audit (above) asks whether docs will break — this one asks whether they already have.
For each discrepancy, show the doc excerpt and the conflicting code side by side, and recommend which one should change.
Spawn a sub-agent to review the codebase against idiomatic best practices for each programming language used in the project. The agent should first identify which languages are present, then check each against its community standards:
__init__.py, virtual environmentsconst/let over var, async/await
over raw promises, proper error handling in async code, avoiding any in TS,
ESM over CommonJS where appropriatecontext.Contextclone(), proper error types
over unwrap(), using clippy suggestions, derive macros for common traitsset -euo pipefail, quoting variables, avoiding eval, using shellcheck
patternsOnly audit languages actually present in the project. The report should distinguish between style preferences (informational) and genuine anti-patterns that cause bugs or maintenance burden (actionable). Focus on the actionable ones.
Spawn a sub-agent to audit the codebase for concurrency bugs. These are among the hardest bugs to find because they're often intermittent and don't show up in normal testing.
For each finding, describe the race scenario: what two operations can interleave and what goes wrong when they do.
Spawn a sub-agent to audit the codebase for resource leaks and cleanup failures. Leaked resources cause slow degradation — the app works fine in testing but fails under sustained load.
with), missing defer file.Close() (Go), missing
try-with-resources (Java)wait(), zombie processes,
missing signal handling for graceful shutdownThe report should note whether cleanup happens in all code paths, including error paths — resources opened before a try block but closed inside it are a common source of leaks.
Spawn a sub-agent to audit the test suite beyond simple coverage numbers. Existing tests can be worse than no tests if they give false confidence.
sleep() instead of polling or
mocking, tests that depend on filesystem ordering, floating-point equality
checks, tests that race against async operationsThe report should distinguish between tests that are wrong (give false confidence) and tests that are weak (could be stronger). Prioritize the wrong ones.
Spawn a sub-agent to compare what the project claims to support against what it actually implements. This catches the common pattern where documentation, specs, or READMEs describe features that were planned but never built, or were built and later removed without updating the docs.
For each gap, note which side should change — is the feature actually needed (implement it) or was it abandoned (remove it from docs)?
Spawn a sub-agent to review the codebase for performance issues that are detectable through static analysis. This isn't a substitute for profiling, but many performance problems are visible in the code itself.
await on async calls that should be
awaitedThe report should focus on patterns that cause real problems under load, not micro-optimizations. Flag the likely impact (latency, memory, throughput) for each finding.
Spawn a sub-agent to scan the codebase for known bug patterns — recurring shapes that cause defects across many projects. These patterns are language-agnostic and often survive code review because each instance looks reasonable in isolation.
Object.assign
where nested structures need deep merging. The first level looks correct but
nested fields get shared references. Common in state management, config merging,
and option defaults.catch {} blocks with no body, write operations with no error check,
event handlers that mutate local state but don't propagate the change upstream.useEffect dependencies, Go goroutines over loop variables, and setTimeout
callbacks."5" + 3 in JavaScript, falsy-value checks that catch 0 and ""
along with null, integer overflow in languages without checked arithmetic.For each pattern found, show the specific code and explain what would go wrong. Group findings by pattern type so recurring themes are visible.
Spawn a sub-agent to evaluate the project against its own stated design principles. Look for a design philosophy in CLAUDE.md, README, CONTRIBUTING, design docs, or architecture decision records (ADRs). If the project has no stated principles, skip this audit and say so.
The report should list each principle, show examples of compliance and violation, and give an overall compliance score. This isn't about imposing external standards — it's about holding the project accountable to the standards it set for itself.
Spawn a sub-agent to step back from the current task and analyse the codebase for security vulnerabilities. This is not the quick secrets-in-diff check from the branch audit — it's a deeper review of the project's security posture:
The report should rate each finding by severity (Critical/High/Medium/Low) with the affected file and a recommended fix.
Spawn a sub-agent to review the project's UI using Robin Williams' four fundamental design principles — Contrast, Repetition, Alignment, and Proximity (CRAP). This applies to web interfaces, CLI output, terminal UIs, documentation layouts, or any visual/textual output the project produces.
The report should include specific examples with file paths and, where possible, screenshots or descriptions of the visual issues. Suggest concrete improvements for each finding.
tools
Comprehensive audit toolkit with 14 audit types. Includes a pre-push branch audit (8-category checklist with Clean/Minor/Blocking verdicts) plus 13 deep-dive audits run via sub-agents: code quality, documentation brittleness, docs-code sync, language best practices, concurrency, resource management, test quality, feature completeness, performance, bug patterns, design philosophy compliance, security vulnerabilities, and UI design (CRAP principles). ALWAYS use this skill when the user wants to audit, review before pushing, check their branch, look for duplication or dead code, check docs, review test quality, find concurrency bugs, check resource leaks, analyse security or performance, review UI design, verify feature completeness, or check code against best practices or design principles.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------