agentleFS
bosfor273-cryptobosfor273-crypto/claude-skills/skills/cleaner/SKILL.md

cleaner

Skill0 starsChanged 4 months agoMITView on GitHub

Поиск и удаление мусорных файлов в проекте — пустые/битые, артефакты сборки, логи, скриншоты, темпы. ЕДИНСТВЕННЫЙ способ удалять мусор: любое удаление мусорного файла идёт через этот скилл, включая уборку перед коммитом. Групповое подтверждение с запоминанием правил. Не путать с wiki-LINT (аудит страниц). Триггеры: убери мусор, почисти проект, почисти мусор, найди мусор, убери временные файлы, cleaner, garbage, junk files, tmp-файлы, а также ЛЮБОЙ момент, когда собрался удалить мусорный файл — `git status` показал лишнее, чистка перед коммитом, пустые файлы/битые имена в корне.

  • Reads credentials

3 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions3 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 3

    1. 0xSero/claude-skill-dir★ 4same name
    2. epoko77-ai/tidy-undo★ 2same name
    3. ChrisAraneo/skills★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository7 other files it gives its agents.

The file

Files
SKILL.md

cleaner — уборщик мусорных файлов

Когда применять

  • Явная просьба почистить проект.
  • Всегда, когда ты собрался удалить мусорный файл — даже один, даже «по-быстрому»: git status показал лишнее, уборка перед коммитом, пустой файл в корне, битое имя. Скилл поднимается ДО удаления, а не после (см. правило 0).

Скилл сканирует проект, группирует находки, спрашивает подтверждение по каждой группе и запоминает решения для будущих авточисток.

Правила (must follow)

  1. Любое удаление мусора — только через этот скилл. Никаких rm/Remove-Item мимо него — даже для одного файла, даже когда «очевидно». Ручное удаление обходит подтверждение групп, правила cleaner_rules.json и защиту из правил 6-7 (секреты, значимые пустышки, битые имена), а на битых именах ещё и молча блокируется классификатором. Поднимать скилл ДО первого rm — типовой промах: увидел мусор в git status перед коммитом и удалил руками, не открыв скилл.
  2. Ничего не удалять без подтверждения (кроме групп с сохранённым правилом auto: true).
  3. Сначала скан, потом план, потом действие. Показать группы → дождаться ответа по каждой → только потом удалять.
  4. Правила хранить в data/cleaner_rules.json этого скилла. Формат: {"<project_name>": {"<group_key>": {"auto": true|false, "since": "<date>"}}}
  5. При auto:true — удалять без вопроса, но показывать сводку что удалено.
  6. Группы, для которых нет правила — всегда спрашивать.
  7. Не трогать: .git/, .obsidian/, .env, credentials.*, *.key, *.pem, secrets/, файлы в .gitignore кроме явно указанных категорий.
  8. Файлы с не-ASCII/битыми именами — отдельная группа broken_names, всегда ручное подтверждение (auto-правило не применяется — имена разные). Пустые значимые конфиги/код (empty_significant) — тоже вне auto.
  9. Удаление — только через движок scripts/cleaner.py (Python, не shell). Почему: auto-mode классификатор блокирует shell-команды с битыми/не-ASCII именами в аргументах (Remove-Item/rm с кракозябрами → denied). Python удаляет по абсолютному пути через os.remove/shutil.rmtree — имена файлов не попадают в argv, классификатор пропускает вызов. Не удалять файлы напрямую через Bash/PowerShell tool.

Движок scripts/cleaner.py

Все скан/удаление идут через него. Всегда печатает JSON в stdout. На Windows перед вызовом ставить PYTHONIOENCODING=utf-8 (иначе печать битых имён падает на cp1251-консоли). Интерпретатор — общее окружение скиллов $env:SKILLS_PY ($SKILLS_RUNTIME/.venv), а не venv проекта: движку хватает stdlib, но скилл подключён к разным проектам, и проектного venv может не быть.

# Скан → JSON-план (группы, счётчики, имена, размеры)
$env:PYTHONIOENCODING='utf-8'; & $env:SKILLS_PY $SKILLS_HOME/skills\cleaner\scripts\cleaner.py <project_dir> --scan

# Удалить подтверждённые группы (одна или несколько)
$env:PYTHONIOENCODING='utf-8'; & $env:SKILLS_PY $SKILLS_HOME/skills\cleaner\scripts\cleaner.py <project_dir> --delete empty_files broken_names

# Удалить ВЫБОРОЧНО внутри группы (--items: имя или полный путь)
$env:PYTHONIOENCODING='utf-8'; & $env:SKILLS_PY $SKILLS_HOME/skills\cleaner\scripts\cleaner.py <project_dir> --delete empty_significant --items "a.yml" "b.yml"

# Авто-режим: применить сохранённые auto-правила, остальное вернуть в план
$env:PYTHONIOENCODING='utf-8'; & $env:SKILLS_PY $SKILLS_HOME/skills\cleaner\scripts\cleaner.py <project_dir> --auto

Ключ правил (--rules) по умолчанию — ../data/cleaner_rules.json рядом со скриптом.

Группы (классифицирует движок)

Ключ группыЧтоauto допустим
empty_filesпустые файлы (0 Б) только в корне проекта, незначимые расширенияда
empty_significantпустые .md/.rst/.yml/.yaml/.json/.py/.toml/.ini/.cfg/.sqlнет — всегда ручное
broken_namesбитые имена: псевдографика (U+2500–U+259F), control-символы, �, несбалансированные скобки, ведущий/хвостовой пробелнет — всегда ручное
build_artifacts__pycache__, *.pyc/*.pyo, dist/build/.eggs/*.egg-info, .pytest_cache/.mypy_cacheда
mcp_artifactsснимки сессий браузерных MCP внутри .playwright-mcp/, .puppeteer-mcp/: page-*, console-*, trace-*, snapshot-*, network-* (.yml/.log/.png/.zip). Каталог целиком НЕ удаляетсяда
heavy_envsрабочие окружения: .venv/.venv_s3/.venv_ai/.dbt_venv/venv, node_modules, .rag_cacheнет — всегда ручное
logs_screenshots_root*.log и *.png/*.jpg/*.jpeg в корне (кроме *.banner.*, *.icon.*, README)по проекту
temp_files*.tmp/*.temp/*.bak/*.swp/*.swo, *~, .DS_Store, Thumbs.dbда

heavy_envs — рабочие окружения, а не мусор. Движок держит их отдельной группой и никогда не включает в build_artifacts: до 2026-07-16 venv классифицировались как build_artifacts, и --delete build_artifacts сносил боевые окружения (в корп-проекте это ~3 ГБ: три venv из CLAUDE.md + node_modules), а защита держалась лишь на внимательности вызывающего. Группу показывать в плане как справку и никогда не предлагать к удалению без явного запроса пользователя — их снос ломает проект и стоит часы переустановки.

.playwright-mcp/ — не сплошной мусор. Рядом со снимками там живут chrome-profile (cookies и авторизации — их снос означает переавторизацию везде) и сохранённые пользователем страницы/PDF. Движок с 2026-07-20 спускается внутрь и берёт только файлы по шаблону снимка, профили пруним, остальное не трогает. Не предлагать удаление MCP-каталога целиком.

Пустышки движок чистит только в корне — 0-байтные файлы глубже (в logs/, store/, data/) обычно runtime-данные фич, не мусор скилла.

Грабли: пустой файл ≠ мусор. empty_significant — это группа «посмотри глазами», а не «удали». Проверяй КАЖДЫЙ файл до удаления: 0 байт бывает у сломанного конфига, который надо восстановить, а не снести. Реальные случаи корп-проекте (16.07.2026):

  • .claude/rules/auto-invoke.md — пуст, но на него ссылается CLAUDE.md («Таблица триггеров»). Удалить = закрепить поломку вместо починки. Правильный ответ — сообщить пользователю.
  • src/zrepamak/logs/query_log.sql — пуст, лежит в logs/ робота: может создаваться кодом при запуске. Цена ошибки выше выгоды от 0 Б. Ищи, кто ссылается на файл (grep по имени), прежде чем предлагать удаление.

Процедура

  1. Скан: & $env:SKILLS_PY <cleaner>\scripts\cleaner.py <проект> --scan → распарсить JSON-план.
  2. План: показать группы (счётчик + имена + размер). Смешанные группы разбирать поштучно, а не целиком: в empty_significant/broken_names рядом с мусором лежат файлы, которые трогать нельзя (см. грабли ниже) — для них --delete <группа> --items <имена>, остальные элементы уйдут в skipped. Для каждой группы спросить Удалить группу X? [y/n/auto]:
    • y — удалить сейчас;
    • n — пропустить;
    • auto — удалить сейчас И запомнить правило (кроме broken_names и empty_significant — им auto недоступен).
  3. Удаление: & $env:SKILLS_PY <cleaner>\scripts\cleaner.py <проект> --delete <группы> для подтверждённых y/auto. Показать сводку из JSON (что удалено, байт).
  4. Сохранение правил: обновить data/cleaner_rules.json для групп с auto. Формат: {"<project>": {"<group>": {"auto": true, "since": "<date>"}}}. Ключ проекта = имя каталога. broken_names/empty_significant в auto не пишем (движок их всё равно отфильтрует).

Данные

Перед работой: git -C $SKILLS_HOME pull. При активации допиши строку <дата> cleaner <проект> в data/usage.log. Правила: data/cleaner_rules.json — git add + commit + push после изменений.

Обратная связь

Если пользователь недоволен работой скилла — немедленно:

  1. Прочитай последние ~20 строк CHANGELOG.md — нет ли уже такой жалобы
  2. Спроси: что ожидал, что получил, что поправить
  3. Исправь SKILL.md (только инструкция) и допиши правку в конец CHANGELOG.md: `

    YYYY-MM-DD

    • Запрошено: <что просил пользователь>
    • Изменено: <что конкретно поправлено в SKILL.md> `
  4. Commit + push обоих файлов в master

CHANGELOG.md читается только с конца (последние записи) — не грузи весь в контекст.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.