F fluxmount
FluxMount - 让 macOS 自由读写外接 NTFS 硬盘,傻瓜式、一次到位、插上即用、不再复发。当用户把 NTFS 格式的移动硬盘或 SSD 接到 Mac 却无法写入或复制文件、抱怨各种插件都传不进去、问 Mac 怎么往 NTFS 盘里写文件、或想要开机与热插拔自动可读写挂载时使用。覆盖国内网络典型坑(GitHub 被墙、Homebrew Tier-3 无预编译包、新版 Clang 编译报错、launchctl 弃用、沙箱禁 sudo),并提供一键安装、健康自检与干净卸载。作者 张昌宇 (Changyu Zhang)。
FluxMount - 让 macOS 自由读写外接 NTFS 硬盘,傻瓜式、一次到位、插上即用、不再复发。当用户把 NTFS 格式的移动硬盘或 SSD 接到 Mac 却无法写入或复制文件、抱怨各种插件都传不进去、问 Mac 怎么往 NTFS…
- Безопасность 60%
- Качество 40%
- Тесты бонус
Чем это грозит
Скилл содержит фрагменты, которые в чужих руках стоят денег или данных. Ниже, что рискует потерять тот, кто установит, и что должен сделать автор.
Скилл содержит команды, которые удаляют файлы, переписывают диски или исполняют код, скачанный из сети. Агент может выполнить их без вопроса, если считает, что так требует инструкция.
Замените разрушительные команды на безопасные аналоги с подтверждением, ограничьте область действия конкретной папкой и не тяните код через curl | bash: укажите версию и контрольную сумму.
Как улучшить
- Разберите находки высокой серьёзности: каждая стоит 18 баллов безопасности. Если это ложное срабатывание, добавьте id правила в guard.allow в spec.yaml.
- Скажите в description, КОГДА применять скилл («используй, когда…», примеры запросов): это главный сигнал для срабатывания.
- В тексте есть ссылки на отсутствующие файлы: добавьте файлы или уберите ссылки.
- Добавьте evals/evals.json с 4–6 реальными запросами и ожидаемыми ответами: тогда полная проверка использует ваши кейсы, а не черновик модели.
- Добавьте spec.yaml с триггерами и утверждениями (skilltest init): это контракт поведения для CI.
Находки guard · 21
-
высокая Опасные команды
cmd-persistencescripts/install.sh:203Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре)launchctl bootstrap "gui/$(id -u)" "$AGENT_PLIST" 2>/dev/null && echo " ✅ 自动挂载代理已注册(开机+热插拔)" || echo " ⚠️ 代理注册需在图形会话终端执行,请在本机终端重跑一次本脚本"
Средние и низкие: 20
-
средняя Опасные команды
cmd-persistencereferences/troubleshooting.md:58Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (в кавычках — упоминание, а не команда)### 8. `launchctl load` 在 macOS 15 失效
в кавычках -
средняя Опасные команды
cmd-persistencereferences/troubleshooting.md:60Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (в кавычках — упоминание, а не команда)- 现象: `launchctl list` 查不到、`launchctl load` 报 Input/output error。
в кавычках -
средняя Опасные команды
cmd-persistencereferences/troubleshooting.md:61Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (в кавычках — упоминание, а не команда)- 根因: macOS 15 (Sequoia) 已弃用 `launchctl load`,且远程/沙箱环境会拦截写类 launchctl。
в кавычках -
средняя Опасные команды
cmd-persistencereferences/troubleshooting.md:62Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (в кавычках — упоминание, а не команда)- 解法: 用现代方式 `launchctl bootout gui/$(id -u)/LABEL` 再 `launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/xxx.plist`,且**必须在图形登录会话的真实终端**执行(WorkBuddy 沙箱内的 Bash 无法替你注册)。
в кавычках -
средняя Опасные команды
cmd-persistenceSAFETY.md:14Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (строка таблицы в документации)| 开机/热插拔代理 | `~/Library/LaunchAgents/com.changyu.fluxmount.plist` | 自动挂载触发器(覆盖前会备份) |
таблица -
средняя Опасные команды
cmd-persistencescripts/install.sh:23Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (строковый литерал в коде, не выполняется)AGENT_PLIST="$HOME/Library/LaunchAgents/$AGENT_LABEL.plist"
строка в коде -
средняя Опасные команды
cmd-quarantine-filescripts/install.sh:120Снятие флага карантина macOS с одного файла (обычно для скачанного CLI; проверьте, что это нужный бинарник)xattr -d com.apple.quarantine "$dmg" 2>/dev/null || true
-
средняя Опасные команды
cmd-privilegescripts/install.sh:168Повышение привилегий / права на запись для всехsudo cp "$(dirname "$0")/mount-ntfs-rw" "$MOUNT_SH"
-
средняя Опасные команды
cmd-privilegescripts/install.sh:169Повышение привилегий / права на запись для всехsudo cp "$(dirname "$0")/ntfs-automount" "$AUTO_SH"
-
средняя Опасные команды
cmd-privilegescripts/install.sh:170Повышение привилегий / права на запись для всехsudo chmod +x "$MOUNT_SH" "$AUTO_SH"
-
средняя Опасные команды
cmd-privilegescripts/install.sh:174Повышение привилегий / права на запись для всехecho "$USER ALL=(root) NOPASSWD: $MOUNT_SH" | sudo tee "$SUDOERS" >/dev/null
-
средняя Опасные команды
cmd-privilegescripts/install.sh:175Повышение привилегий / права на запись для всехsudo chmod 440 "$SUDOERS"
-
средняя Опасные команды
cmd-persistencescripts/install.sh:179Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (строковый литерал в коде, не выполняется)OLD_AGENT="$HOME/Library/LaunchAgents/com.user.ntfs-automount.plist"
строка в коде -
средняя Опасные команды
cmd-persistencescripts/uninstall.sh:13Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (строковый литерал в коде, не выполняется)AGENT_PLIST="$HOME/Library/LaunchAgents/$AGENT_LABEL.plist"
строка в коде -
средняя Опасные команды
cmd-privilegescripts/uninstall.sh:31Повышение привилегий / права на запись для всехsudo rm -f "$STATE_FILE" 2>/dev/null || true
-
средняя Опасные команды
cmd-privilegescripts/uninstall.sh:42Повышение привилегий / права на запись для всехsudo rm -f "$SUDOERS"
-
средняя Опасные команды
cmd-privilegescripts/uninstall.sh:49Повышение привилегий / права на запись для всехsudo cp -a "$bak" "$f" 2>/dev/null && echo " ♻️ 已还原安装前文件: $f" || echo " ⚠️ 还原失败: $f"
-
средняя Опасные команды
cmd-privilegescripts/uninstall.sh:51Повышение привилегий / права на запись для всехsudo rm -f "$f" 2>/dev/null && echo " 🗑️ 已移除: $f" || echo " ⚠️ 移除失败(可能需手动): $f"
-
средняя Опасные команды
cmd-persistenceSKILL.md:84Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (в кавычках — упоминание, а не команда)> 踩坑经验(已固化到 troubleshooting.md):GitHub 被墙用国内镜像;Homebrew `brew install ntfs-3g` 在 2026 年 macOS 15 Intel 上因 Tier-3 无 bottle 失败,应改 `ntfs-3g-mac`;新版 Xcode/Clang 把隐式函数声明当硬错误导致源码编译失败;`launchctl load` 在 macO
в кавычках -
низкая Опасные команды
cmd-privilegereferences/troubleshooting.md:31Повышение привилегий / права на запись для всех (в кавычках — упоминание, а не команда)- 解法: `sudo chown -R $USER /usr/local/share/man/man8 && chmod u+w /usr/local/share/man/man8`,再重跑。
в кавычках
Просканировано файлов: 18. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
Lint
- предупреждение
description-no-whendescription не говорит, КОГДА применять скилл (нет "use when / используй когда") - предупреждение
missing-refссылка на отсутствующий файл: scripts/mount-ntfs-rw - предупреждение
missing-refссылка на отсутствующий файл: scripts/ntfs-automount - заметка
frontmatter-keyнеизвестное поле фронтматтера "agent_created"
Процессная зрелость 35/100
- 0Инструменты и файлы. Не хватает 2 файла(ов): scripts/mount-ntfs-rw, scripts/ntfs-automount
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 0Ошибки и развилки. Линейный процесс без обработки сбоев
- 0Отчётность по ходу. Скилл ничего не сообщает по ходу работы
- 20Когда включается. Не сказано, при каком запросе скилл включается
- 100Шаги. Шагов: 20
- 100Согласованность. Имя и обязательные поля на месте
- 100Стоимость исполнения. Тело инструкции 719 токенов
- 100Повторный запуск. Изменяющих операций нет
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Формат ответа не описан: модель каждый раз решает сама
- -31 из 3 скриптов не упомянуты в SKILL.md
- +2Инструкции на одном языке
- +3Длина description 268 символов: достаточно сигнала, не съедает бюджет
- +4Структура: 10 заголовков
- +3Пошаговые инструкции: 20 пунктов
- +4Есть примеры (3 блоков кода)
- +4Справочные файлы упоминаются в инструкциях (1 из 1)
- +1Лицензия указана
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 64.