| name | cleanup |
| description | MUST run after writing or modifying code — reviews changed files for verbose patterns, inconsistencies, and readability issues before considering work done |
Post-Implementation Cleanup
This skill is mandatory. After writing or modifying code, you MUST review all changed files before reporting the task as complete. Code must be readable at a glance.
When to Run
- After completing any implementation work
- After fixing bugs
- After refactoring
- Before committing
Checklist
For every file you changed, verify:
1. No Verbose Defensive Checks
Extract repeated patterns into typed helpers.
const perms = typeof role.permissions === 'string'
? JSON.parse(role.permissions) : role.permissions;
if (perms && typeof perms === 'object' && Array.isArray(perms.portal) && perms.portal.length > 0) {
const perms = parseRolePermissions(role.permissions);
if (perms?.portal?.length) {
2. Consistent Idioms Across Files
The same check must use the same pattern everywhere.
file1: perms?.portal?.length > 0
file2: perms?.portal?.length
perms?.portal?.length
3. No Redundant Type Casts
If you need a cast to satisfy TypeScript, extract a helper function instead.
const restrictedRoles: readonly string[] = RESTRICTED_ROLES;
restrictedRoles.includes(role);
export function isRestrictedRole(role: string): boolean {
return (RESTRICTED_ROLES as readonly string[]).includes(role);
}
4. Error Handling on Boundaries
JSON.parse, external API calls, and DB queries at system boundaries need error handling.
const parsed = JSON.parse(value);
try {
return JSON.parse(value);
} catch {
return null;
}
5. Shared Patterns Belong in Shared Packages
If the same logic appears in 2+ apps (api, app, portal), extract it to a shared package (packages/auth, packages/db, etc.).
6. No Dead Code
- Remove unused imports
- Remove unused variables
- Remove unused function parameters
- Remove props that are always null/false
7. Readable at a Glance
- Function and variable names should convey intent without reading the implementation
- One-liner expressions over multi-line when equally clear
- No nested ternaries
How to Run
- List all files you modified:
git diff --name-only
- Read each file and check against this checklist
- Fix any issues found
- Typecheck after fixes:
npx tsc --noEmit