BF assemble-ppmplugin
Собирает финальный бинарный пакет `.ppmplugin` для нативного расширения PAM и проверяет его содержимое. Сначала **сопоставляет** заявленные в манифесте `entrypoints` с фактически подготовленными бинарными файлами — если манифест объявляет платформу без соответствующего бинарного файла, он блокирует процесс (собрать его / выпустить без него / остановить), а не выпускает сломанный пакет. Затем повторно запускает проверки совместимости загрузки плагина на сопоставленном манифесте, упаковывает манифест вместе с присутствующими `android/<PascalName>Plugin.dex` и `ios/<PascalName>Plugin.framework/` в `ppmplugin/<name>.ppmplugin` и проверяет структуру архива с помощью `jar tf` (точно манифест + выпущенные бинарные файлы — ничего не пропущено, ничего лишнего). Выходные данные: статически проверенный файл `.ppmplugin` на диске. Предварительные требования: `jar` (JDK). Запускать после /generate-ppmplugin-manifest и навыков сборки.
машинный переводПоказать оригиналСкрыть оригинал«Assemble the final `.ppmplugin` binary bundle for a PAM native extensi…»
Assemble the final `.ppmplugin` binary bundle for a PAM native extension and verify its contents. First **reconciles** the manifest's declared `entrypoints` against the binaries actually staged — if the manifest declares a platform with no built binary it gates (build it / ship without it / stop) rather than shipping a broken bundle. Then re-runs the plugin's upload-compatibility checks on the reconciled manifest, zips the manifest plus whichever of `android/<PascalName>Plugin.dex` and `ios/<PascalName>Plugin.framework/` are present into `ppmplugin/<name>.ppmplugin`, and verifies the archive layout with `jar tf` (exactly the manifest + the shipped binaries — nothing missing, nothing extra). Output: a statically verified `.ppmplugin` file on disk. Prereqs: `jar` (JDK). Run after /generate-ppmplugin-manifest and the build skill(s).
Собирает финальный бинарный пакет .ppmplugin для нативного расширения PAM и проверяет его содержимое. Сначала сопоставляет заявленные в манифесте entrypoints…
Как процесс F 41/100 · Не запустится — Скилл ссылается на файлы, которых нет в архиве: ../generate-ppmplugin-manifest/SKILL.md, ../../shared/ppmplugin-format.md, ../../shared/shared-instructions.md
Чем это грозит
Находки средней серьёзности: скорее всего скилл честный, но прочитайте, что именно насторожило сканер.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
Скилл просит больше прав, чем нужно для задачи: широкий доступ к инструментам, секретные переменные окружения, бинарные файлы. Каждое лишнее право расширяет ущерб при ошибке или взломе.
Сузьте allowed-tools и список переменных до минимума, замените бинарники на исходники или скрипты, которые можно прочитать.
Как улучшить
- Скажите в description, КОГДА применять скилл («используй, когда…», примеры запросов): это главный сигнал для агента.
- В тексте есть ссылки на отсутствующие файлы: добавьте файлы или уберите ссылки.
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 1
✓ Критических и высоких находок нет
Средние и низкие: 1
-
средняя Широкие права
meta-broad-allowed-toolsSKILL.md:1Заранее разрешены широкие инструменты: Bashallowed-tools: Read Write Edit Bash Glob Grep AskUserQuestion Skill
Просканировано файлов: 1. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
- предупреждение
description-no-whendescription не говорит, КОГДА применять скилл (нет "use when / используй когда") - предупреждение
missing-refссылка на отсутствующий файл: ../generate-ppmplugin-manifest/SKILL.md - предупреждение
missing-refссылка на отсутствующий файл: ../../shared/ppmplugin-format.md - предупреждение
missing-refссылка на отсутствующий файл: ../../shared/shared-instructions.md
Процессный рейтинг: все десять параметров 41/100
- 0Инструменты и файлы. Не хватает 3 файла(ов): ../generate-ppmplugin-manifest/SKILL.md, ../../shared/ppmplugin-format.md, ../../shared/shared-instructions.md
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 0Отчётность по ходу. Скилл ничего не сообщает по ходу работы
- 20Когда включается. Не сказано, при каком запросе скилл включается
- 55Ошибки и развилки. Развилок: 1
- 100Шаги. Шагов: 19
- 100Согласованность. Имя и обязательные поля на месте
- 100Стоимость исполнения. Тело инструкции 2185 токенов
- 100Повторный запуск. Изменяющие операции проверяют текущее состояние
- low Ответ описан самодельной разметкой (12 тегов): типизированный вызов надёжнее
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Длина description 841: рекомендуется 120–800 символов
- +3Формат ответа не описан: модель каждый раз решает сама
- +1Лицензия не указана
- +2Инструкции на одном языке
- +4Структура: 7 заголовков
- +3Пошаговые инструкции: 19 пунктов
- +4Есть примеры (6 блоков кода)
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 57.