skills/ar4mirez/samuel/cleanup-project

cleanup-project

SKILL.md

Project Cleanup Workflow

When to Use

Trigger Description
Post-Initialization After initialize-project.md completes
Quarterly Maintenance Every 3 months as part of project hygiene
Pre-Release Before major releases to reduce deployment footprint
Size Threshold When .claude/ exceeds 1MB
Stack Change After removing a language/framework from the project

Prerequisites

Before starting cleanup:

  • Project has been initialized (CLAUDE.md exists or stack is clear)
  • No active development in progress that might need guides being pruned
  • Git working directory is clean (commit or stash changes first)

Process Overview

Step 1: Analyze Project Stack
Step 2: Prune Unused Guides
Step 3: Archive Stale Tasks
Step 4: Consolidate Memory
Step 5: Clean Patterns
Step 6: Update Documentation
Output: Leaner .claude/ directory

Step 1: Analyze Project Stack

1.1 Detect Active Languages

Scan project files to identify which languages are actually used:

File Language
package.json TypeScript/JavaScript
tsconfig.json TypeScript
requirements.txt, pyproject.toml, setup.py Python
go.mod Go
Cargo.toml Rust
build.gradle.kts, *.kt Kotlin
pom.xml, build.gradle, *.java Java
*.csproj, *.sln C#
composer.json PHP
Package.swift, *.swift Swift
CMakeLists.txt, Makefile, *.cpp, *.c C/C++
Gemfile, *.rb Ruby
pubspec.yaml Dart

AI Action: List all detected languages based on project files.

1.2 Detect Active Frameworks

Check dependency files for framework usage:

Node.js/TypeScript (package.json dependencies):

  • react, react-dom → React
  • next → Next.js
  • express → Express

Python (requirements.txt, pyproject.toml):

  • django → Django
  • fastapi → FastAPI
  • flask → Flask

Go (go.mod):

  • github.com/gin-gonic/gin → Gin
  • github.com/labstack/echo → Echo
  • github.com/gofiber/fiber → Fiber

Rust (Cargo.toml):

  • axum → Axum
  • actix-web → Actix-web
  • rocket → Rocket

(Continue for all language families)

AI Action: List all detected frameworks based on dependencies.

1.3 Generate Active Guides Manifest

Create .claude/active-guides.json:

{
  "generated": "2025-01-15T10:00:00Z",
  "languages": [
    "typescript"
  ],
  "frameworks": [
    "react",
    "nextjs"
  ],
  "guides_kept": [
    "skills/typescript-guide/SKILL.md",
    "skills/react/SKILL.md",
    "skills/nextjs/SKILL.md"
  ],
  "guides_archived": [
    "skills/python-guide/SKILL.md",
    "skills/go-guide/SKILL.md",
    "..."
  ]
}

AI Action: Create active-guides.json with detected stack.


Step 2: Prune Unused Guides

2.1 Identify Unused Guides

Compare existing guides against active-guides.json:

All Language Guides: 21
Active Languages: 1 (TypeScript)
Unused Guides: 20 (95% reduction possible)

All Framework Skills: 33
Active Frameworks: 2 (React, Next.js)
Unused Skills: 31 (94% reduction possible)

2.2 Archive Strategy (Recommended)

Move unused guides to .claude/.archive/ for potential future use:

# Create archive directories
mkdir -p .claude/.archive/skills

# Move unused language guide skills
mv .claude/skills/python-guide/ .claude/.archive/skills/
mv .claude/skills/go-guide/ .claude/.archive/skills/
# ... (all unused)

# Move unused framework skills
mv .claude/skills/django/ .claude/.archive/skills/
mv .claude/skills/fastapi/ .claude/.archive/skills/
# ... (all unused)

2.3 Delete Strategy (Minimal Footprint)

For maximum reduction, delete unused guides entirely:

# Delete unused language guide skills
rm -rf .claude/skills/python-guide/
rm -rf .claude/skills/go-guide/
# ... (all unused)

# Delete unused framework skills
rm -rf .claude/skills/django/
rm -rf .claude/skills/fastapi/
# ... (all unused)

Note: Deleted guides can be restored from the template repository if needed later.

2.4 Always Keep

Never remove these files regardless of stack:

  • .claude/README.md - Directory documentation
  • .claude/skills/README.md - Skills index (language guides, framework skills, custom skills)
  • .claude/skills/* - All skills (stack-agnostic utilities and workflows)

AI Action: Execute chosen strategy (archive or delete). Report space saved.


Step 3: Archive Stale Tasks

3.1 Identify Stale PRDs

Find PRDs and task files older than 6 months:

# Find PRDs older than 180 days
find .claude/tasks -name "*" -mtime +180 -type f

3.2 Check Status

For each old PRD, determine status:

Status Action
Completed Archive to .claude/tasks/ARCHIVE/
Abandoned Archive with ABANDONED- prefix
Active Keep in place (update modified date)

3.3 Archive Process

# Create archive directory
mkdir -p .claude/tasks/ARCHIVE

# Move completed/abandoned PRDs
mv .claude/tasks/0001-prd-old-feature.md .claude/tasks/ARCHIVE/
mv .claude/tasks/tasks-0001-prd-old-feature.md .claude/tasks/ARCHIVE/

# For abandoned, rename with prefix
mv .claude/tasks/0002-prd-never-built.md .claude/tasks/ARCHIVE/ABANDONED-0002-prd-never-built.md

AI Action: Identify stale tasks, confirm status with user, archive appropriately.


Step 4: Consolidate Memory

4.1 Identify Old Memory Files

Find memory files older than 3 months:

# Find memory files older than 90 days
find .claude/memory -name "*" -mtime +90 -type f

4.2 Create Quarterly Summary

Consolidate old memory files into quarterly summaries:

# Q4 2024 Decision Summary

## Overview
This file consolidates decisions from October-December 2024.

## Key Decisions

### Authentication Strategy (2024-10-15)
- Chose JWT over sessions for stateless API
- See: archived/2024-10-15-auth-strategy.md

### Database Selection (2024-11-02)
- Selected PostgreSQL over MySQL
- See: archived/2024-11-02-database-choice.md

### Caching Approach (2024-12-10)
- Implemented Redis for distributed caching
- See: archived/2024-12-10-caching-approach.md

## Archived Files
- 2024-10-15-auth-strategy.md
- 2024-11-02-database-choice.md
- 2024-12-10-caching-approach.md

4.3 Archive Individual Files

# Create archive directory
mkdir -p .claude/memory/archived

# Move old files
mv .claude/memory/2024-10-* .claude/memory/archived/
mv .claude/memory/2024-11-* .claude/memory/archived/
mv .claude/memory/2024-12-* .claude/memory/archived/

AI Action: Create quarterly summary, archive old memory files.


Step 5: Clean Patterns

5.1 Review patterns.md

If CLAUDE.md exists, review for:

  • Patterns referencing pruned languages/frameworks
  • Duplicate or similar patterns
  • Outdated patterns (superseded by newer approaches)

5.2 Remove Irrelevant Patterns

Example: If Python was pruned, remove Python-specific patterns:

## Removed Patterns

<!-- Remove this section if Python pruned -->
## Python Patterns
...

5.3 Consolidate Similar Patterns

Merge similar patterns across languages into generic versions where applicable.

AI Action: Review and clean patterns.md if it exists.


Step 6: Update Documentation

6.1 Update .claude/README.md

Add project-specific information:

# .claude/ Directory

> **Project**: MyApp
> **Stack**: TypeScript, React, Next.js
> **Last Cleaned**: 2025-01-15

## Active Guides
- Language: TypeScript
- Frameworks: React, Next.js

## Archived Content
See `.archive/` for pruned guides (can be restored if stack changes).

6.2 Update active-guides.json

Ensure manifest reflects final state after cleanup.

6.3 Add to .gitignore (Optional)

If not tracking generated content:

# Optional: Don't track cleanup artifacts
.claude/active-guides.json
.claude/.archive/
.claude/memory/archived/
.claude/tasks/ARCHIVE/

AI Action: Update documentation to reflect cleaned state.


Output Summary

After cleanup, report:

## Cleanup Summary

### Space Reduction
- Before: 2.4 MB
- After: 156 KB
- Saved: 2.24 MB (93% reduction)

### Guides
- Language guide skills: 21 → 1 (20 archived)
- Framework skills: 33 → 2 (31 archived)

### Tasks
- Active PRDs: 3
- Archived PRDs: 5

### Memory
- Active decisions: 4
- Archived to quarterly: 12

### Files Updated
- .claude/README.md ✓
- .claude/active-guides.json ✓

Restoration

If you need a pruned guide later:

From Archive

# Restore from archive
mv .claude/.archive/skills/python-guide/ .claude/skills/
mv .claude/.archive/skills/django/ .claude/skills/

From Template Repository

# Re-download language guide skill from template
curl -o .claude/skills/python-guide/SKILL.md --create-dirs \
  https://raw.githubusercontent.com/ar4mirez/samuel/main/.claude/skills/python-guide/SKILL.md

# Re-download framework skill from template
curl -o .claude/skills/django/SKILL.md --create-dirs \
  https://raw.githubusercontent.com/ar4mirez/samuel/main/.claude/skills/django/SKILL.md

Update Manifest

After restoration, regenerate active-guides.json by re-running Step 1.


Automation (Future)

This workflow can be automated with a script:

#!/bin/bash
# .claude/scripts/cleanup.sh

# Run cleanup workflow
# TODO: Implement automated detection and cleanup

Checklist

Before completing cleanup:

  • Active languages correctly identified
  • Active frameworks correctly identified
  • active-guides.json created
  • Unused guides archived/deleted
  • Stale tasks archived
  • Memory files consolidated
  • patterns.md cleaned (if exists)
  • README.md updated with project info
  • Space reduction reported
  • Git commit created (if desired)

Related Workflows

Weekly Installs
5
Repository
ar4mirez/samuel
GitHub Stars
3
First Seen
Mar 1, 2026
Installed on
opencode5
gemini-cli5
codebuddy5
github-copilot5
codex5
kimi-cli5