claude-maintain
Environment maintenance tool for Claude Code (~/.claude/).
Diagnoses MCP server health, finds sync debris, analyzes tool usage from session logs, and produces a health score with prioritized recommendations.
Install
# With uv (recommended)
uv tool install claude-maintain
# With pip
pip install claude-maintain
# Development (editable)
git clone https://github.com/HermeticOrmus/claude-maintain.git
cd claude-maintain
uv tool install -e .
Commands
maintain health -- MCP Server Health Check
Parses both Claude Code CLI (~/.claude/mcp.json) and Claude Desktop (claude_desktop_config.json) configs. Detects:
- Placeholder API keys (
YOUR_OPENAI_API_KEY_HERE) - Cross-platform path issues (Linux paths on Windows, synced via Syncthing/rsync)
- Duplicate services (e.g., 4 Telegram variants)
- Missing required environment variables
maintain health # Show health report
maintain health --generate-clean # Save fixed configs to ~/.claude/reports/
maintain clean -- Environment Cleanup
Finds accumulated debris in ~/.claude/:
- Syncthing conflict files (
*.sync-conflict-*) - Orphaned files (
.backup,.broken,.old) - Stale session logs (configurable age threshold)
- Skill naming inconsistencies (
SKILL.mdvsskill.md) - Directory size breakdown
maintain clean # Dry run (shows what would be cleaned)
maintain clean --execute # Move debris to ~/.claude/backups/ (safe, reversible)
maintain clean --max-age 60 # Flag sessions older than 60 days
maintain stats -- Usage Analytics
Stream-parses session JSONL files to extract tool usage patterns:
- Per-tool invocation counts (Read, Bash, Write, MCP tools, etc.)
- Skill usage tracking (which
/skillsare actually used) - Cross-reference with filesystem (find never-invoked skills)
- Results cached for fast repeat runs
maintain stats # Full scan (all sessions, cached)
maintain stats --recent 20 # Only 20 most recent sessions
maintain stats --no-cache # Force fresh parse
maintain optimize -- Health Score + Recommendations
Runs all three modules and synthesizes a weighted health score (0-100):
| Category | Weight |
|---|---|
| MCP Health | 25 |
| Storage | 20 |
| Skills | 20 |
| Plugins | 15 |
| Sync Cleanliness | 10 |
| Naming Consistency | 10 |
Produces prioritized recommendations (CRITICAL / HIGH / MEDIUM / LOW) and saves a markdown report to ~/.claude/reports/.
maintain optimize # Full analysis + score
JSON Output
All commands support --json for machine-readable output:
maintain --json health # JSON health report
maintain --json stats # JSON usage data
maintain --json optimize # JSON score + recommendations
Safety
- Dry run by default --
maintain cleanshows what it would do without acting - Backups before deletion --
--executemoves files to~/.claude/backups/maintain-{timestamp}/ - Never overwrites configs --
--generate-cleanwrites fixed versions to~/.claude/reports/ - Never logs secrets -- API tokens are flagged as a security concern but never displayed in reports
Who is this for?
Anyone who:
- Uses Claude Code across multiple machines (Syncthing, rsync, cloud sync)
- Has accumulated MCP servers they've experimented with
- Wants to know which of their 100+ skills are actually used
- Has never cleaned
~/.claude/and suspects it's grown large
Requirements
- Python 3.10+
- Claude Code installed (
~/.claude/directory exists)
License
MIT
Metadata
Release files for claude-maintain 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| claude_maintain-0.1.0.tar.gz | 17.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| claude_maintain-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.7 kB
Release files / claude_maintain-0.1.0.tar.gz
| Download URL | claude_maintain-0.1.0.tar.gz |
|---|---|
| Size | 17.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c17428d5af65f774186d6966ca45f5abbb5c65bcb4c7b87d8f23a31548313b6f
|
|
BLAKE2b-256 checksum How to use checksums |
442ceda04acacaaa7ef74b39e93ab01a6806f94b2b898c7c9de1d8b977107edf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.8
|
Release files / claude_maintain-0.1.0-py3-none-any.whl
| Download URL | claude_maintain-0.1.0-py3-none-any.whl |
|---|---|
| Size | 21.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
443a4c6cf47f43cdfe5474b91d859f1ce1ce62fe799eacf3c7a0760b9f5aad61
|
|
BLAKE2b-256 checksum How to use checksums |
ab908117bb095c96f51a0e90a656ec8064d530c329a629114c20e1bfd383e8f3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.8
|