Repository navigation
Releases: decoded-cipher/makleen
Release list
makleen 0.3.0
Install with Homebrew, and let an AI agent do the cleanup for you.
Added
-
Homebrew.
brew install decoded-cipher/tap/makleen.brew upgrade makleenkeeps it current. -
An Agent Skill for Claude Code, Codex and other agents that read
SKILL.md. Ask your agent to free up space: it scans, explains what it found, looks into the check first items, shows you the dry-run plan, and cleans only what you approve. Link it once:ln -s "$(brew --prefix)/share/makleen/skills/makleen" ~/.claude/skills/makleen # Claude Code ln -s "$(brew --prefix)/share/makleen/skills/makleen" ~/.agents/skills/makleen # Codex and others
-
makleen scan --jsonlists every item with an ID, its paths or command, and whether it's preselected, flagged or locked. -
makleen clean --id ID,...cleans exactly those items, without the checklist, and scans only their categories.
Changed
- Logs outside a clone go to
~/.makleen/logs, so a Homebrew upgrade doesn't delete them. Run from a clone, makleen still writes them tologs/in the repo. - The weekly report survives
brew upgrade. If you scheduled it from a clone and switch to Homebrew, runmakleen schedule installagain. --dry-runwithout a terminal now shows the plan instead of failing.
Fixed
- With two or more Android emulators, only the last one's
.inifile was deleted. The others were left behind pointing at deleted emulators. If you cleaned emulators before, check~/.android/avdfor leftover.inifiles.
makleen 0.2.1
Protection patterns now work however you write them.
Fixed
NEVER_TOUCHpatterns with capital letters protected nothing. Paths were lowercased before matching but patterns weren't, so'*/Application Support/Foo*'silently matched nothing. Matching now ignores case on both sides.- Other ways of writing a pattern were silently ignored too. In
NEVER_TOUCHandPROTECT, these now work:- a leading
~for your home folder:'~/Library/Application Support/Foo' - a trailing slash:
'~/.ssh/' - a bare folder name, which protects every folder of that name and its contents:
mkcert - a pattern for a folder's contents, which now also covers the folder itself:
'*/foo/*'protects…/foo
- a leading
PROTECTandLEFTOVER_IGNOREcared about case. Both now ignore it.
If you set any of these, run makleen scan --all to check that what you meant to protect no longer shows up.
Thanks to HOL on X for the question that found this.
makleen 0.2.0
First release of makleen, a lightweight CLI (~65 KB) that frees disk space on a developer's Mac. It scans, shows everything it found in a checklist, and cleans only what you tick.
What it finds
- Tool caches: 40+ of them, including npm, Bun, pnpm, Yarn, Go, Cargo, uv, pip, Gradle, CocoaPods, Xcode DerivedData, Homebrew, Docker, browsers, and VS Code, Cursor and JetBrains caches. Where a tool has its own clean command, makleen uses it.
- Build folders in idle projects:
node_modules,.next,target,Pods,.venvand more, but only in projects with no commit, checkout or build for 60 days, and only next to the file that produces them. - Leftovers of deleted apps: data in
~/Librarythat no installed app owns. These go to a quarantine you can restore from. - Optional extras: iOS simulators, Android emulators, unused Docker images, Ollama and Hugging Face models, old Node versions, Xcode archives and more. These start unticked.
Safety
- No
sudo, and nothing outside your home folder. - Nothing changes until you confirm the plan;
--dry-runshows it without cleaning. - Items that belong to a running app can't be selected.
- Every run that changes something writes a log of what it deleted, moved or ran.
Install
Needs macOS. makleen runs on the zsh that macOS ships, from whatever shell you use.
git clone https://github.com/decoded-cipher/makleen.git && cd makleen
./makleen --dry-run # see the plan, nothing changes
./makleen # pick, confirm, cleanSee the README for the full list, configuration and adding your own caches.