Mac App Uninstaller
Запуск Навыка
При явном вызове или однозначном смысловом совпадении применяйте навык сразу. Перед первым шагом покажите ровно одну короткую контекстную строку (не более 30 слов) и продолжайте работу в том же ответе, не ожидая реакции:
Применяю «Безопасное удаление приложения с Mac»: <кратко назовите конкретную дополнительную процедуру или проверяемый результат для текущего запроса>; продолжаю без ожидания.
Не включайте в строку author_github, внутреннее имя папки или пересказ всего запроса. Не спрашивайте, применять ли навык.
Если одновременно подходят совместимые навыки, выберите минимальный набор и покажите одну общую строку. Если подходы ведут к несовместимым результатам и запрос не позволяет выбрать, спросите только о желаемом результате, не о разрешении применить навык.
Запуск навыка не расширяет полномочия. Выполните всю безопасную и уже разрешённую часть; запросите подтверждение только непосредственно перед ещё не разрешённым внешним или изменяющим действием. Не запрашивайте повторно уже данное разрешение и не дублируйте системное окно подтверждения.
Обзор
Этот skill ведёт Codex через безопасную чистку macOS-приложения в режиме audit + confirm: сначала собрать наблюдаемые следы, затем разделить их по риску, показать пользователю, что именно предлагается удалить, и только после явного подтверждения выполнять удаление.
Главная защита: совпадение по строке никогда не является достаточным основанием для удаления. Codex должен объяснять, почему путь относится к приложению, и отдельно защищать пользовательские файлы.
Быстрый Роутер
- "удали приложение с Mac" -> уточнить или вывести имя приложения, провести аудит, затем запросить подтверждение удаления найденных следов;
- "проверь следы Telegram/Zoom/Slack" -> запустить audit-only скан и дать отчёт без удаления;
- "почисти кэш приложения" -> искать только локальные данные приложения, не трогать документы, загрузки и облачный аккаунт;
- "удали всё, что нашёл" -> остановиться и разделить находки на безопасные, требующие проверки и запрещённые по умолчанию;
- "удали аккаунт" или "удали облачные чаты/данные" -> объяснить, что этот skill только про локальные файлы macOS.
Процесс
- Зафиксируйте цель: удалить приложение, проверить следы или почистить локальный кэш.
- Определите app name и подсказки для bundle id: например
Telegram,org.telegram.desktop,ru.keepcoder.Telegram. - Если приложение может быть запущено, проверьте процессы и попросите пользователя закрыть приложение или закройте только явно относящиеся процессы после подтверждения.
- Запустите scan-only скрипт:
python3 plugins/team-skills/skills/udalenie-prilozheniya-s-mac/scripts/scan_mac_app_footprint.py "Telegram" --hint org.telegram.desktop --hint ru.keepcoder.Telegram
- Разделите результаты:
safe: типовые app support/cache/container/preference пути с высоким совпадением;review: слабые совпадения, маленькие metadata-only контейнеры, старые crash reports, неоднозначные bundle ids;never-delete:Downloads,Documents,Desktop, пользовательские проекты, установщики и любые личные файлы без отдельного явного разрешения.
- Перед удалением покажите короткий список путей и общий размер. Не удаляйте ничего из
reviewиnever-delete, пока пользователь отдельно не подтвердит именно эти пути. - После удаления повторите аудит и отделите факты: что удалено, что осталось, что macOS не дала удалить.
Границы
Не используйте этот skill как деинсталлятор аккаунта, облачных данных, подписок, лицензий или серверных записей. Он работает только с локальными файлами Mac.
Не трогайте ~/Downloads, ~/Documents, ~/Desktop и пользовательские рабочие папки без отдельного явного разрешения. Установщик приложения в Downloads может быть нужен пользователю даже после удаления локального кэша.
При Operation not permitted не форсируйте удаление. Объясните, что macOS защищает container metadata, и предложите один ручной шаг: удалить путь через Finder или выдать Full Disk Access/админ-доступ, если пользователь действительно хочет добить остаток.
Если остались только маленькие container-папки с .com.apple.containermanagerd.metadata.plist, объясните, что содержательный кэш уже удалён, а остаток является системной оболочкой контейнера.
Опрос После Использования
Опрос задаётся один раз — после выдачи отчёта сканера о следах приложения, не посреди рабочего цикла. Если пользователь уже ответил «пропустить» в этой сессии, не переспрашивайте.
Опрос по skill:
1. Что в этом использовании udalenie-prilozheniya-s-mac было полезно?
2. Что стоит доработать в skill или его формате?
Можно ответить коротко или написать "пропустить".
Если пользователь ответил, сохраните санированную карточку в ~/.codex/skill-runs/udalenie-prilozheniya-s-mac/usage-feedback.jsonl — лучше через bundled script:
python3 scripts/log_usage_feedback.py --liked "..." --improve "..." --outcome "..."
Script перед записью редактирует приватные пути, контакты и token-like строки и сохраняет redaction_applied и redaction_types. Если запись невозможна из-за sandbox, прав или отсутствия tools, не делайте вид, что лог сохранён: скажите об этом и покажите короткую JSONL-карточку для ручного сохранения. Raw-ответы, контакты, пути и секреты не коммитить.
Логирование Сбоев
Перед выполнением прочитайте локальный known-exceptions.yaml как список уже известных случаев и применяйте подходящее do_next_time без нового поиска.
Если пользователь поправил skill, tool/API/browser упал, нарушен режим работы, пришлось искать workaround или skill сделал ложное предположение, запишите приватную карточку в ~/.codex/skill-runs/<skill-name>/exception-log.jsonl.
Пишите факты: что skill хотел сделать, что сделал, где сломался, какая предпосылка была ложной и что сделать в следующий раз. Если поле неизвестно, пишите unknown. Raw logs не коммитить.
Definition Of Done
Пользователь видит проверенный список локальных следов приложения, понимает разницу между кэшем, приложением, установщиком и аккаунтом, явно подтвердил удаляемые пути, а финальный ответ разделяет удалённое, оставшееся и требующее ручных прав macOS.