B alist-cli
AList file management CLI for AI agents including Codex, Claude Code, and OpenClaw. Supports upload, download, list, mkdir, rm, mv, search, url. Auth via environment variables with auto-refresh. Trigger: file management, AList operations, upload/download.
- Безопасность 60%
- Качество 40%
- Тесты бонус
Чем это грозит
Находки средней серьёзности: скорее всего скилл честный, но прочитайте, что именно насторожило сканер.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
Скилл содержит команды, которые удаляют файлы, переписывают диски или исполняют код, скачанный из сети. Агент может выполнить их без вопроса, если считает, что так требует инструкция.
Замените разрушительные команды на безопасные аналоги с подтверждением, ограничьте область действия конкретной папкой и не тяните код через curl | bash: укажите версию и контрольную сумму.
Как улучшить
- В тексте есть ссылки на отсутствующие файлы: добавьте файлы или уберите ссылки.
- Добавьте evals/evals.json с 4–6 реальными запросами и ожидаемыми ответами: тогда полная проверка использует ваши кейсы, а не черновик модели.
- Добавьте spec.yaml с триггерами и утверждениями (skilltest init): это контракт поведения для CI.
Находки guard · 4
✓ Критических и высоких находок нет
Средние и низкие: 4
-
средняя Опасные команды
cmd-shell-rcreferences/ONBOARDING.md:108Запись в файл автозагрузки shell (.bashrc / .zshrc / .profile)echo 'export ALIST_URL="https://..."' >> ~/.bashrc
-
средняя Опасные команды
cmd-shell-rcreferences/ONBOARDING.md:109Запись в файл автозагрузки shell (.bashrc / .zshrc / .profile)echo 'export ALIST_USERNAME="xxx"' >> ~/.bashrc
-
средняя Опасные команды
cmd-shell-rcreferences/ONBOARDING.md:110Запись в файл автозагрузки shell (.bashrc / .zshrc / .profile)echo 'export ALIST_PASSWORD="xxx"' >> ~/.bashrc
-
низкая Секреты в коде
secret-password-literalscripts/alist_cli.py:391Захардкоженный пароль / ключ (возможно, пример)password = args.args[1] if len(args.args) > 1 else os.environ.get(ENV_PASSWORD, "")
Просканировано файлов: 8. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
Lint
- предупреждение
missing-refссылка на отсутствующий файл: references/openapi.json - заметка
frontmatter-keyнеизвестное поле фронтматтера "displayName"
Процессная зрелость 43/100
- 0Инструменты и файлы. Не хватает 1 файла(ов): references/openapi.json
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 0Отчётность по ходу. Скилл ничего не сообщает по ходу работы
- 20Когда включается. Не сказано, при каком запросе скилл включается
- 30Повторный запуск. Изменяющих операций: 2, без проверки текущего состояния
- 100Шаги. Шагов: 30
- 100Ошибки и развилки. Развилок: 2, есть раздел про ошибки
- 100Согласованность. Имя и обязательные поля на месте
- 100Стоимость исполнения. Тело инструкции 922 токенов
- low Ответ описан самодельной разметкой (5 тегов): типизированный вызов надёжнее
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Формат ответа не описан: модель каждый раз решает сама
- -32 из 2 скриптов не упомянуты в SKILL.md
- +2Инструкции на одном языке
- +3Длина description 255 символов: достаточно сигнала, не съедает бюджет
- +4Структура: 15 заголовков
- +3Пошаговые инструкции: 30 пунктов
- +4Есть примеры (5 блоков кода)
- +4Справочные файлы упоминаются в инструкциях (1 из 1)
- +1Лицензия указана
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 79.