Best Practices
Scope
Support both:
- Targeted refactoring: recently modified code in the current session, or specific files/directories provided by the user
- Project-wide refactoring: entire repository when explicitly requested
Agent Invocation
Launch the code-simplifier agent for execution. Pass the target scope and any constraints. If already running inside code-simplifier, skip launching and proceed with the workflow.
Language References
Based on file extension, load the appropriate reference:
.ts, .tsx, .js, .jsx → See references/typescript.md
.py → See references/python.md
.go → See references/go.md
.swift → See references/swift.md
For universal principles applicable to all languages, see references/universal.md.
Next.js Best Practices References
Use the Next.js reference set when the target includes Next.js code (typically .tsx, .jsx, Next.js app/pages routes, Server Components, Client Components).
Reference directory:
Recommended entry points:
- Read
references/nextjs/INDEX.md for complete pattern index organized by impact level and category.
- Read
references/nextjs/_sections.md to understand priorities and categories.
- Read the specific rule file(s) that match the pattern observed (for example,
async-defer-await.md, bundle-dynamic-imports.md).
Rule Application Guidance
- Prefer CRITICAL rules first when there is evidence of user-facing impact (waterfalls, bundle size, hydration issues).
- Keep changes minimal and targeted; optimize only when the pattern is present in the code.
- Preserve behavior and public interfaces; do not change externally visible semantics during a refactor.
Framework and Language Detection
Before applying refactoring rules, detect the project's frameworks and languages:
Framework Detection:
- Check for Next.js: Look for
next.config.js, next.config.ts, or "next" in package.json dependencies
- Check for React: Look for
"react" in package.json dependencies
- Check for Vite: Look for
vite.config.js, vite.config.ts
- Check for other frameworks as needed
Language Detection:
- Scan file extensions:
.ts, .tsx (TypeScript), .js, .jsx (JavaScript)
.py (Python), .go (Go), .swift (Swift)
Rule Category Selection:
- Based on detected frameworks and user configuration, determine which rule categories to apply:
- Next.js projects only: async, bundle, server, client, rerender, rendering, js, advanced
- React (non-Next.js) projects: client, rerender, rendering, js
- All projects: Universal principles, language-specific rules
IMPORTANT: Only apply Next.js-specific rules if Next.js is actually detected. For Tauri + React + Vite projects or other React setups without Next.js, only apply React-specific and universal rules.
Rule Application Strategy
Apply rules based on framework detection and project characteristics:
- Next.js-specific rules: Only applied if Next.js is detected
- Language-specific rules: Applied based on detected file types
- Universal rules: Applied to all projects
Framework detection determines which rule categories are applicable.
Code Quality Standards
Apply these standards during all refactoring operations:
- Comments: Only add comments explaining complex business logic or non-obvious decisions; remove comments that restate code or conflict with file style
- Error Handling: Add try-catch only where errors can be handled/recovered; remove defensive checks in trusted internal paths (validate only at boundaries: user input, external APIs)
- Type Safety: Never use
any to bypass type issues; use proper types, unknown with type guards, or refactor the root cause
- Style Consistency: Match existing code style in file and project; check CLAUDE.md for conventions
- Aggressive cleanup: Remove unused imports, variables, functions, and type definitions completely
- No backwards-compatibility hacks: Delete unused
_vars, remove re-exports of deleted code, remove // removed comments
- Proper renaming: Rename poorly named variables/functions to descriptive names instead of marking them unused
- Delete dead code: If code is unreachable or unused, delete it completely rather than commenting it out
Workflow
- Identify: Determine target scope (specified files/directories, session modifications, or entire project)
- Detect: Identify frameworks (Next.js, React, Vite, etc.) and languages in the codebase
- Load References: Load language references for the target files, plus framework-specific references when applicable
- Filter Rules: Only apply rules for detected frameworks (e.g., skip Next.js rules if Next.js not present)
- Analyze: Review code for complexity, redundancy, and best-practice violations that matter for the target scope
- Execute: Apply behavior-preserving refinements following the loaded references and Code Quality Standards
- Validate: Ensure tests pass (or suggest the most relevant tests to run) and the code is cleaner
1---2name: best-practices-33description: This skill should be used when the user asks to "refactor", "refactor the whole project", "simplify code", "clean up code", "apply best practices", "improve readability", "reduce duplication", "standardize patterns", "improve performance", "optimize Next.js performance", "make code more maintainable", "follow coding standards", "optimize code quality", or requests behavior-preserving refactoring with best-practice guidance.4---5
6# Best Practices
7
8## Scope
9
10Support both:
11
12- **Targeted refactoring**: recently modified code in the current session, or specific files/directories provided by the user
13- **Project-wide refactoring**: entire repository when explicitly requested
14
15## Agent Invocation
16
17Launch the `code-simplifier` agent for execution. Pass the target scope and any constraints. If already running inside `code-simplifier`, skip launching and proceed with the workflow.
18
19## Language References
20
21Based on file extension, load the appropriate reference:
22
23- `.ts`, `.tsx`, `.js`, `.jsx` → See `references/typescript.md`
24- `.py` → See `references/python.md`
25- `.go` → See `references/go.md`
26- `.swift` → See `references/swift.md`
27
28For universal principles applicable to all languages, see `references/universal.md`.
29
30## Next.js Best Practices References
31
32Use the Next.js reference set when the target includes Next.js code (typically `.tsx`, `.jsx`, Next.js app/pages routes, Server Components, Client Components).
33
34Reference directory:
35
36- `references/nextjs/`
37
38Recommended entry points:
39
401. Read `references/nextjs/INDEX.md` for complete pattern index organized by impact level and category.
412. Read `references/nextjs/_sections.md` to understand priorities and categories.
423. Read the specific rule file(s) that match the pattern observed (for example, `async-defer-await.md`, `bundle-dynamic-imports.md`).
43
44## Rule Application Guidance
45
46- Prefer **CRITICAL** rules first when there is evidence of user-facing impact (waterfalls, bundle size, hydration issues).
47- Keep changes minimal and targeted; optimize only when the pattern is present in the code.
48- Preserve behavior and public interfaces; do not change externally visible semantics during a refactor.
49
50## Framework and Language Detection
51
52Before applying refactoring rules, detect the project's frameworks and languages:
53
541. **Framework Detection**:
55 - Check for Next.js: Look for `next.config.js`, `next.config.ts`, or `"next"` in package.json dependencies
56 - Check for React: Look for `"react"` in package.json dependencies
57 - Check for Vite: Look for `vite.config.js`, `vite.config.ts`
58 - Check for other frameworks as needed
59
602. **Language Detection**:
61 - Scan file extensions: `.ts`, `.tsx` (TypeScript), `.js`, `.jsx` (JavaScript)
62 - `.py` (Python), `.go` (Go), `.swift` (Swift)
63
643. **Rule Category Selection**:
65 - Based on detected frameworks and user configuration, determine which rule categories to apply:
66 - **Next.js projects only**: async, bundle, server, client, rerender, rendering, js, advanced
67 - **React (non-Next.js) projects**: client, rerender, rendering, js
68 - **All projects**: Universal principles, language-specific rules
69
70**IMPORTANT**: Only apply Next.js-specific rules if Next.js is actually detected. For Tauri + React + Vite projects or other React setups without Next.js, only apply React-specific and universal rules.
71
72## Rule Application Strategy
73
74Apply rules based on framework detection and project characteristics:
75
76- **Next.js-specific rules**: Only applied if Next.js is detected
77- **Language-specific rules**: Applied based on detected file types
78- **Universal rules**: Applied to all projects
79
80Framework detection determines which rule categories are applicable.
81
82## Code Quality Standards
83
84Apply these standards during all refactoring operations:
85
86- **Comments**: Only add comments explaining complex business logic or non-obvious decisions; remove comments that restate code or conflict with file style
87- **Error Handling**: Add try-catch only where errors can be handled/recovered; remove defensive checks in trusted internal paths (validate only at boundaries: user input, external APIs)
88- **Type Safety**: Never use `any` to bypass type issues; use proper types, `unknown` with type guards, or refactor the root cause
89- **Style Consistency**: Match existing code style in file and project; check CLAUDE.md for conventions
90- **Aggressive cleanup**: Remove unused imports, variables, functions, and type definitions completely
91- **No backwards-compatibility hacks**: Delete unused `_vars`, remove re-exports of deleted code, remove `// removed` comments
92- **Proper renaming**: Rename poorly named variables/functions to descriptive names instead of marking them unused
93- **Delete dead code**: If code is unreachable or unused, delete it completely rather than commenting it out
94
95## Workflow
96
971. **Identify**: Determine target scope (specified files/directories, session modifications, or entire project)
982. **Detect**: Identify frameworks (Next.js, React, Vite, etc.) and languages in the codebase
993. **Load References**: Load language references for the target files, plus framework-specific references when applicable
1004. **Filter Rules**: Only apply rules for detected frameworks (e.g., skip Next.js rules if Next.js not present)
1015. **Analyze**: Review code for complexity, redundancy, and best-practice violations that matter for the target scope
1026. **Execute**: Apply behavior-preserving refinements following the loaded references and Code Quality Standards
1037. **Validate**: Ensure tests pass (or suggest the most relevant tests to run) and the code is cleaner