Post-Implementation Cleanup

SkillFiles & storage

Reviews your recently changed code files for verbose patterns, inconsistencies, and readability issues.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Post-Implementation Cleanup skill

About this capability

MUST run after writing or modifying code — reviews changed files for verbose patterns, inconsistencies, and readability issues before considering work done

What this skill tells your AI

The instructions your AI receives, as published by trycompai/comp in .claude/skills/cleanup/SKILL.md and read by ahel’s review.

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.

// ❌ Verbose and repeated
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) {

// ✅ Typed helper
const perms = parseRolePermissions(role.permissions);
if (perms?.portal?.length) {

2. Consistent Idioms Across Files

The same check must use the same pattern everywhere.

// ❌ Inconsistent
file1: perms?.portal?.length > 0
file2: perms?.portal?.length

// ✅ Pick one
perms?.portal?.length

3. No Redundant Type Casts

If you need a cast to satisfy TypeScript, extract a helper function instead.

// ❌ Verbose cast repeated in every file
const restrictedRoles: readonly string[] = RESTRICTED_ROLES;
restrictedRoles.includes(role);

// ✅ Helper in shared package
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.

// ❌ Unguarded parse
const parsed = JSON.parse(value);

// ✅ Safe parse
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

  1. List all files you modified: git diff --name-only
  2. Read each file and check against this checklist
  3. Fix any issues found
  4. Typecheck after fixes: npx tsc --noEmit

Signals

GitHub stars
2k
Forks
412
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
cleanup-trycompai
Source
github.com/trycompai/comp