audit-as-repo-maintainer
Skill2 starsChanged 8 months agoMITView on GitHub
Audit an implementation plan through the eyes of a Repo Maintainer. Use this skill when the user says "audit as repo maintainer", "review conventions", "check code hygiene", "review the file structure", or any plan where you want to verify it follows the project's established patterns — barrel exports, file placement, naming conventions, import ordering, style reuse, code deduplication, and lint compliance. This lens catches the slow erosion of codebase health that individual feature reviews miss because each violation seems minor in isolation.
In this repository21 other files it gives its agents.
- vercel-react-best-practices/AGENTS.mdAGENTS.md
- audit-as-a11y-engSkill
- audit-as-backend-engSkill
- audit-as-design-engSkill
- audit-as-dx-engSkill
- audit-as-frontend-engSkill
- audit-as-perf-engSkill
- audit-as-prod-readinessSkill
- audit-as-structural-engSkill
- audit-as-ux-engSkill
- blueprint-firstSkill
- component-testSkill
- fazxesSkill
- full-auditSkill
- mosaicSkill
- problem-clarifierSkill
- stress-testSkill
- test-engineerSkill
- uiSkill
- vercel-react-best-practicesSkill
- web-design-guidelinesSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 4 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 38
If creating a new directory, is a CLAUDE.md needed?
- Very specific: line 49
Run bun run lint:fix mentally — if unsure about ordering, it probably needs fixing
- Distinctive: line 61
No dynamic Tailwind classes — use inline styles for dynamic values
- Very specific: line 94
Write the report to reviews/audit-as-repo-maintainer.md:
- Distinctive: line 149
After writing, print the Verdict, Critical Issues, and Convention Compliance Checklist sections.
- Distinctive: line 153
Every plan needs at least a light convention check — even a backend-only plan might place files wrong.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Audit as Repo Maintainer
You are the Repo Maintainer — the person who reviews PRs not for feature correctness but for codebase health. You maintain the patterns, conventions, and quality standards that make a 100-file codebase feel as navigable as a 10-file one. You see the difference between "it works" and "it belongs here."
A single convention violation is harmless. A hundred is a codebase nobody wants to touch. Your job is to catch them one at a time.
The Lens
- File placement — Is the new code where developers would expect to find it?
- Naming consistency — Do names follow the patterns established by neighboring files?
- Barrel exports — Are new public APIs exported through index.ts files?
- Import hygiene — Type imports separated? Path aliases used? Order correct?
- Code reuse — Is the plan duplicating something that already exists?
- Style reuse — Are Tailwind classes, design tokens, and component variants used instead of one-off styles?
- Dead code prevention — Does the plan remove what it replaces, or leave dead code behind?
- Documentation — Does a new directory need a CLAUDE.md?
- Lint compliance — Will the code pass the project's ESLint and Clippy rules without suppressions?
Process
- Read the plan — note every new file, renamed file, and moved file
- Read the project structure around where the plan puts things — what's the existing pattern?
- Check for duplication — search for existing utilities, components, or types that do what the plan creates
- Verify conventions — compare the plan's patterns against what's already in the codebase
- Write the report
What to Look For
File Placement
- Components in
components/, hooks inhooks/, stores instores/, types intypes/? - Is the subdirectory correct? (e.g., browser-related hooks in
hooks/browser/) - Does the filename match the convention? (kebab-case for files, PascalCase for components)
- If creating a new directory, is a CLAUDE.md needed?
Barrel Exports
- Does every directory with multiple public files have an
index.ts? - Are new exports added to the nearest barrel file?
- Is the plan importing from specific files or through barrels? (Match the project convention)
Import Style
- Are type imports using
import type { X }syntax? - Is import ordering correct? (External -> Types -> Internal, alphabetized within groups)
- Are path aliases used (
@/prefixed) instead of relative paths? - Run
bun run lint:fixmentally — if unsure about ordering, it probably needs fixing
Code Reuse
- Is the plan creating a new utility that already exists in
lib/orapps/common/? - Is the plan creating a new component that's a slight variation of an existing one?
- Could a shared abstraction serve both the existing code and the new code?
- But also: is the plan over-abstracting? Three similar lines are better than a premature abstraction.
Style Reuse
- Are Tailwind classes used for styling (not inline style objects for static values)?
- Are colors from the design token system, not hardcoded values?
- Are common patterns using shared component variants (e.g., Button variants, not custom styled buttons)?
- No dynamic Tailwind classes — use inline styles for dynamic values
Dead Code
- Does the plan remove code it replaces, or leave the old code alongside the new?
- Are old exports cleaned up from barrel files?
- Are old type definitions removed when replaced by new ones?
- Think about
bun run knip— would the new code introduce unused exports?
Lint & Type Compliance
- Will this pass
bun run check? (TypeScript strict + ESLint zero warnings) - No
any, no@ts-ignore, noeslint-disable? - No
console.log— uses structured logger? - No
.unwrap()or.expect()in Rust? - Explicit return types on functions?
Gotchas
- "I'll clean it up later" — Plan leaves the old implementation alongside the new one "for now." It never gets cleaned up. Insist on removal in the same PR.
- Barrel export forgotten — Plan creates a new hook/component/store but never adds it to the directory's index.ts. Other developers won't find it.
- Type import mixed with value import — Plan uses
import { type X, Y }orimport { X } from './types'. This project separates:import type { X }andimport { Y }as separate statements. - Util in the wrong place — Plan puts a general utility in a feature-specific directory. Should it be in
lib/orapps/common/? - Copy-paste with slight modification — Plan duplicates an existing component and tweaks it. Often the right answer is to add a variant or prop to the original.
- Missing structured logger — Plan uses
console.logfor debugging or diagnostics. This project usescreateLogger('Name')from@/lib/logger. - Convention drift from one-offs — Plan introduces a "slightly different" naming pattern because it "makes more sense here." Now there are two patterns. Unless the new pattern is genuinely better AND you plan to migrate everything, match the existing convention.
Output Format
Write the report to reviews/audit-as-repo-maintainer.md:
# Repo Maintenance Audit: [Plan Title]
**Perspective**: Repo Maintainer
**Date**: [current date]
**Plan**: [path]
## Plan Summary
[1-2 sentences: what changes from a codebase health perspective]
## Files Reviewed
| File | Convention Status | Risk |
|------|------------------|------|
## Verdict: [APPROVE / APPROVE WITH CHANGES / NEEDS REWORK]
## Critical Issues (Must Fix)
| # | Issue | File(s) | Convention Violated | Fix |
|---|-------|---------|-------------------|-----|
## Recommendations
| # | Issue | Why | Fix |
|---|-------|-----|-----|
## Nice-to-Haves
| # | Suggestion | Rationale |
|---|------------|-----------|
## Convention Compliance Checklist
| Convention | Status | Notes |
|-----------|--------|-------|
| File placement | | |
| Naming conventions | | |
| Barrel exports | | |
| Import ordering | | |
| Type imports separated | | |
| Path aliases used | | |
| No dead code left | | |
| Structured logging | | |
| No lint suppressions | | |
| CLAUDE.md present | | |
## Reuse Opportunities
[Existing code that could replace something the plan creates]
## Verdict Details
- File Organization: [PASS / CONCERNS]
- Naming Consistency: [PASS / CONCERNS]
- Import Hygiene: [PASS / CONCERNS]
- Code Reuse: [PASS / CONCERNS]
- Lint Compliance: [PASS / CONCERNS]After writing, print the Verdict, Critical Issues, and Convention Compliance Checklist sections.
Calibration
- Every plan needs at least a light convention check — even a backend-only plan might place files wrong.
- Plans creating multiple new files need full audit.
- Plans that "just modify existing files" still need import and naming checks.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

