CD Li_codeql_LLM
CodeQL 安全扫描与 LLM 智能分析融合工具。自动检测 CodeQL 安装、扫描指定目录、生成漏洞报告、LLM 分析、Jenkins 集成、输出验证 Checklist。
Как процесс D 41/100 · Процесс не доведён — слабые места: результат и критерий готовности, когда включается, входы и предусловия
Чем это грозит
Находки средней серьёзности: скорее всего скилл честный, но прочитайте, что именно насторожило сканер.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
Скилл содержит команды, которые удаляют файлы, переписывают диски или исполняют код, скачанный из сети. Агент может выполнить их без вопроса, если считает, что так требует инструкция.
Замените разрушительные команды на безопасные аналоги с подтверждением, ограничьте область действия конкретной папкой и не тяните код через curl | bash: укажите версию и контрольную сумму.
Как улучшить
- Скажите в description, КОГДА применять скилл («используй, когда…», примеры запросов): это главный сигнал для агента.
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 19
✓ Критических и высоких находок нет
Средние и низкие: 19
-
средняя Опасные команды
cmd-shell-rcREADME_BILINGUAL.md:425Запись в файл автозагрузки shell (.bashrc / .zshrc / .profile)echo 'export PATH=/opt/codeql/codeql:$PATH' >> ~/.bashrc
-
средняя Опасные команды
cmd-shell-rcREADME_BILINGUAL.md:451Запись в файл автозагрузки shell (.bashrc / .zshrc / .profile)echo 'export PATH=/opt/codeql/codeql:$PATH' >> ~/.bashrc
-
средняя Опасные команды
cmd-shell-rcREADME.md:29Запись в файл автозагрузки shell (.bashrc / .zshrc / .profile)echo 'export PATH=/opt/codeql/codeql:$PATH' >> ~/.bashrc
-
средняя Опасные команды
cmd-shell-rcREADME.md:255Запись в файл автозагрузки shell (.bashrc / .zshrc / .profile)echo 'export PATH=/opt/codeql/codeql:$PATH' >> ~/.bashrc
-
низкая Утечка данных
read-dotenvCONFIG_GUIDE.md:9Чтение файла .envcp .env.example .env
-
низкая Утечка данных
read-dotenvQUICK_START.md:156Чтение файла .envcat .env | grep -E "JENKINS|CODEQL"
-
низкая Утечка данных
read-dotenvREADME_FINAL.md:349Чтение файла .envcp .env.example .env
-
низкая Утечка данных
read-dotenvrun.sh:27Чтение файла .envsource .env
-
низкая Утечка данных
read-dotenvrun.sh:32Чтение файла .env (в кавычках — упоминание, а не команда)echo -e "${BLUE}💡 提示 / Tip: cp .env.example .env${NC}"в кавычках -
низкая Утечка данных
read-dotenvTEST_REPORT.md:161Чтение файла .env (тестовый файл / пример)cat .env | grep -E "JENKINS|GITEA|CODEQL"
тестовый файл -
низкая Утечка данных
read-dotenvtest_scan.sh:41Чтение файла .env (тестовый файл / пример; документация security-скилла)source .env 2>/dev/null || true
тестовый файлsecurity-скилл -
низкая Опасные команды
cmd-eval-dynamictest-20260319-072752/codeql-db/results/run-info-20260318.232800.466.yml:681Динамическое выполнение кода из декодированного/недоверенного ввода (в кавычках — упоминание, а не команда)\ os\n\ndef download(path): \n os.system(\"wget \" + path) # NOT OK\n\n```\n\
в кавычках -
низкая Опасные команды
cmd-eval-dynamictest-output/codeql-db/results/run-info-20260318.230324.362.yml:681Динамическое выполнение кода из декодированного/недоверенного ввода (в кавычках — упоминание, а не команда)\ os\n\ndef download(path): \n os.system(\"wget \" + path) # NOT OK\n\n```\n\
в кавычках -
низкая Опасные команды
cmd-eval-dynamictest-output2/codeql-db/results/run-info-20260318.230454.430.yml:681Динамическое выполнение кода из декодированного/недоверенного ввода (в кавычках — упоминание, а не команда)\ os\n\ndef download(path): \n os.system(\"wget \" + path) # NOT OK\n\n```\n\
в кавычках -
низкая Опасные команды
cmd-eval-dynamictest-output3/codeql-db/results/run-info-20260318.231603.503.yml:681Динамическое выполнение кода из декодированного/недоверенного ввода (в кавычках — упоминание, а не команда)\ os\n\ndef download(path): \n os.system(\"wget \" + path) # NOT OK\n\n```\n\
в кавычках -
низкая Утечка данных
read-dotenv配置检查报告.md:150Чтение файла .env (определение детектора / чёрного списка)- ✅ `run.sh` - 使用 `source .env`
детектор -
низкая Утечка данных
read-dotenv配置检查报告.md:151Чтение файла .env (определение детектора / чёрного списка)- ✅ `test_scan.sh` - 使用 `source .env`
детектор
Ещё 2 совпадений отнесены к цитатам в документации скилла по безопасности и не считаются находками.
Просканировано файлов: 79. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
- предупреждение
name-formatname должен быть в kebab-case (строчные буквы, цифры, дефисы) - предупреждение
description-no-whendescription не говорит, КОГДА применять скилл (нет "use when / используй когда")
Процессный рейтинг: все десять параметров 41/100
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 0Ошибки и развилки. Линейный процесс без обработки сбоев
- 0Отчётность по ходу. Скилл ничего не сообщает по ходу работы
- 20Когда включается. Не сказано, при каком запросе скилл включается
- 40Согласованность. Имя во frontmatter (Li_codeql_LLM) не совпадает с папкой (li-codeql-llm)
- 60Инструменты и файлы. Используются инструменты (python), но во frontmatter они не объявлены
- 100Шаги. Шагов: 47
- 100Стоимость исполнения. Тело инструкции 1208 токенов
- 100Повторный запуск. Изменяющих операций нет
- low Разделов верхнего уровня: 11. Похоже на несколько доменов в одном скилле
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Длина description 88: рекомендуется 120–800 символов
- +3Формат ответа не описан: модель каждый раз решает сама
- -216 эмодзи в инструкциях: шум для модели
- +1Лицензия не указана
- +2Инструкции на одном языке
- +4Структура: 36 заголовков
- +3Пошаговые инструкции: 47 пунктов
- +4Есть примеры (18 блоков кода)
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 62.