MCP HubMCP Hub
Retour aux compétences

clean-codebase

pjt222
Mis à jour Yesterday
1 vues
17
2
17
Voir sur GitHub
Documentationapi

À propos

Cette compétence nettoie automatiquement les problèmes d'hygiène du code tels que le code mort, les imports inutilisés et les avertissements de lint, tout en standardisant la mise en forme. Elle est idéale pour traiter la dette technique après un développement rapide, sans altérer la logique métier principale. L'outil fonctionne avec plusieurs langages et se concentre sur les tâches de maintenance que les outils d'analyse statique signalent généralement.

Installation rapide

Claude Code

Recommandé
Principal
npx skills add pjt222/agent-almanac -a claude-code
Commande PluginAlternatif
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternatif
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/clean-codebase

Copiez et collez cette commande dans Claude Code pour installer cette compétence

Documentation

コードベースのクリーンアップ

使用タイミング

Use this skill when a codebase has accumulated hygiene debt:

  • Lint warnings have piled up during rapid development
  • Unused imports and variables clutter files
  • Dead code paths exist but were never removed
  • Formatting is inconsistent across files
  • Static analysis tools report fixable issues

Do NOT use for architectural refactoring, bug fixes, or business logic changes. This skill focuses purely on hygiene and automated cleanup.

入力

ParameterTypeRequiredDescription
codebase_pathstringYesAbsolute path to codebase root
languagestringYesPrimary language (js, python, r, rust, etc.)
cleanup_modeenumNosafe (default) or aggressive
run_testsbooleanNoRun test suite after cleanup (default: true)
backupbooleanNoCreate backup before deletion (default: true)

手順

ステップ1: Pre-Cleanup Assessment

Measure the current state to quantify improvements later.

# Count lint warnings by severity
lint_tool --format json > lint_before.json

# Count lines of code
cloc . --json > cloc_before.json

# List unused symbols (language-dependent)
# JavaScript/TypeScript: ts-prune or depcheck
# Python: vulture
# R: lintr unused function checks

期待結果: Baseline metrics saved to lint_before.json and cloc_before.json

失敗時: If lint tool not found, skip automated fixes and focus on manual review

ステップ2: Fix Automated Lint Warnings

Apply safe automated fixes (spacing, quotes, semicolons, trailing whitespace).

JavaScript/TypeScript:

eslint --fix .
prettier --write .

Python:

black .
isort .
ruff check --fix .

R:

Rscript -e "styler::style_dir('.')"

Rust:

cargo fmt
cargo clippy --fix --allow-dirty

期待結果: All safe lint warnings resolved; files formatted consistently

失敗時: If automated fixes introduce test failures, revert changes and escalate

ステップ3: Identify Dead Code Paths

Use static analysis to find unreferenced functions, unused variables, and orphaned files.

JavaScript/TypeScript:

ts-prune | tee dead_code.txt
depcheck | tee unused_deps.txt

Python:

vulture . | tee dead_code.txt

R:

Rscript -e "lintr::lint_dir('.', linters = lintr::unused_function_linter())"

General approach:

  1. Grep for function definitions
  2. Grep for function calls
  3. Report functions defined but never called

期待結果: dead_code.txt lists unused functions, variables, and files

失敗時: If static analysis tool unavailable, manually review recent commit history for orphaned code

ステップ4: Remove Unused Imports

Clean up import blocks by removing references to packages never used.

JavaScript:

eslint --fix --rule 'no-unused-vars: error'

Python:

autoflake --remove-all-unused-imports --in-place --recursive .

R:

# Manual review: grep for library() calls, check if package used
grep -r "library(" . | cut -d: -f2 | sort | uniq

期待結果: All unused import statements removed

失敗時: If removing imports breaks build, they were used indirectly — restore and document

ステップ5: Remove Dead Code (Mode-Dependent)

Safe Mode (default):

  • Only remove code explicitly marked as deprecated
  • Remove commented-out code blocks (if >10 lines and >6 months old)
  • Remove TODO comments referencing completed issues

Aggressive Mode (opt-in):

  • Remove all functions identified as unused in Step 3
  • Remove private methods with zero references
  • Remove feature flags for deprecated features

For each candidate deletion:

  1. Verify zero references in codebase
  2. Check git history for recent activity (skip if modified in last 30 days)
  3. Remove code and add entry to CLEANUP_LOG.md

期待結果: Dead code removed; CLEANUP_LOG.md documents all deletions

失敗時: If uncertain whether code is truly dead, move to archive/ directory instead

ステップ6: Normalize Formatting

Ensure consistent formatting across all files (even if not caught by linters).

  1. Normalize line endings (LF vs CRLF)
  2. Ensure single newline at end of file
  3. Remove trailing whitespace
  4. Normalize indentation (spaces vs tabs, indent width)
# Example: Fix line endings and trailing whitespace
find . -type f -name "*.js" -exec sed -i 's/\r$//' {} +
find . -type f -name "*.js" -exec sed -i 's/[[:space:]]*$//' {} +

期待結果: All files follow consistent formatting conventions

失敗時: If sed breaks binary files, skip and document

ステップ7: Run Tests

Validate that cleanup didn't break functionality.

# Language-specific test command
npm test              # JavaScript
pytest                # Python
R CMD check           # R
cargo test            # Rust

期待結果: All tests pass (or same failures as before cleanup)

失敗時: Revert changes incrementally to identify breaking change, then escalate

ステップ8: Generate Cleanup Report

Document all changes for review.

# Codebase Cleanup Report

**Date**: YYYY-MM-DD
**Mode**: safe | aggressive
**Language**: <language>

## Metrics

| Metric | Before | After | Change |
|--------|--------|-------|--------|
| Lint warnings | X | Y | -Z |
| Lines of code | A | B | -C |
| Unused imports | D | 0 | -D |
| Dead functions | E | F | -G |

## Changes Applied

1. Fixed X lint warnings (automated)
2. Removed Y unused imports
3. Deleted Z lines of dead code (see CLEANUP_LOG.md)
4. Normalized formatting across W files

## Escalations

- [Issue description requiring human review]
- [Uncertain deletion moved to archive/]

## Validation

- [x] All tests pass
- [x] Backup created: backup_YYYYMMDD/
- [x] CLEANUP_LOG.md updated

期待結果: Report saved to CLEANUP_REPORT.md in project root

失敗時: (N/A — generate report regardless of outcome)

バリデーション Checklist

After cleanup:

  • All tests pass (or same failures as before)
  • No new lint warnings introduced
  • Backup created before any deletions
  • CLEANUP_LOG.md documents all removed code
  • Cleanup report generated with metrics
  • Git diff reviewed for unexpected changes
  • CI pipeline passes

よくある落とし穴

  1. Removing Code Still Used via Reflection: Static analysis misses dynamic calls (e.g., eval(), metaprogramming). Always check git history.

  2. Breaking Implicit Dependencies: Removing imports that were used by dependencies. Run tests after every import removal.

  3. Deleting Feature Flags for Active Features: Even if unused in current branch, feature flags may be active in other environments. Check deployment configs.

  4. Over-Aggressive Formatting: Tools like black or prettier may reformat code in ways that trigger unnecessary diffs. Configure tools to match project style.

  5. Ignoring Test Coverage: Cannot safely clean codebases without tests. If coverage is low, escalate for test additions first.

  6. Not Backing Up: Always create backup_YYYYMMDD/ directory before deleting anything, even if using git.

  7. Wrong R binary on hybrid systems: On WSL or Docker, Rscript may resolve to a cross-platform wrapper instead of native R. Check with which Rscript && Rscript --version. Prefer the native R binary (e.g., /usr/local/bin/Rscript on Linux/WSL) for reliability. See Setting Up Your Environment for R path configuration.

関連スキル

Dépôt GitHub

pjt222/agent-almanac
Chemin: i18n/ja/skills/clean-codebase
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Compétences associées

railway-docs

Documentation

Cette compétence récupère la documentation actuelle de Railway pour répondre aux questions sur les fonctionnalités, le fonctionnement ou des URL spécifiques de la documentation. Elle garantit que les développeurs reçoivent des informations précises et à jour directement depuis les sources officielles de Railway. Utilisez-la lorsque les utilisateurs demandent comment fonctionne Railway ou font référence à la documentation de Railway.

Voir la compétence

n8n-code-python

Documentation

Cette compétence Claude offre un accompagnement expert pour écrire du code Python dans les nœuds Code de n8n, en particulier pour utiliser la bibliothèque standard de Python et travailler avec la syntaxe spéciale de n8n comme `_input`, `_json` et `_node`. Elle aide les développeurs à comprendre les limites de Python dans n8n et recommande d'utiliser JavaScript pour la plupart des workflows, tout en proposant des solutions Python pour des besoins spécifiques de transformation de données.

Voir la compétence

archon

Documentation

La compétence Archon offre une recherche sémantique alimentée par RAG et une gestion de projet via une API REST. Utilisez-la pour interroger la documentation, gérer des projets/tâches hiérarchiques et effectuer de la recherche de connaissances avec des capacités de téléchargement de documents. Priorisez toujours Archon en premier lors de la recherche dans une documentation externe avant d'utiliser d'autres sources.

Voir la compétence

n8n-code-javascript

Documentation

Cette compétence Claude fournit des conseils d'expert pour écrire du code JavaScript dans les nœuds Code d'n8n. Elle couvre la syntaxe essentielle spécifique à n8n comme les variables `$input`/`$json`, les assistants HTTP et la gestion des DateTime, tout en résolvant les erreurs courantes. Utilisez-la lors du développement de workflows n8n nécessitant un traitement JavaScript personnalisé dans les nœuds Code.

Voir la compétence