B kannaka-node
Hand a fresh Linux server to an AI and get back a running Kannaka node. Given an IP or hostname and SSH access, the agent checks the box, installs the signed Kannaka release, writes the node's identity, wires it as a systemd service that joins the constellation swarm and keeps its memory in sync, dreams nightly, and proves it is alive before handing it back. Works on Oracle Cloud free tier (Oracle Linux, aarch64), Ubuntu, Debian, Fedora. Use when someone says "set up a kannaka server", "provision a node", "here is my server, make it a kannaka node", or asks how to install kannaka on a VPS.
Hand a fresh Linux server to an AI and get back a running Kannaka node.
- Безопасность 60%
- Качество 40%
- Тесты бонус
Чем это грозит
Находки средней серьёзности: скорее всего скилл честный, но прочитайте, что именно насторожило сканер.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
Скилл содержит команды, которые удаляют файлы, переписывают диски или исполняют код, скачанный из сети. Агент может выполнить их без вопроса, если считает, что так требует инструкция.
Замените разрушительные команды на безопасные аналоги с подтверждением, ограничьте область действия конкретной папкой и не тяните код через curl | bash: укажите версию и контрольную сумму.
Как улучшить
- Добавьте evals/evals.json с 4–6 реальными запросами и ожидаемыми ответами: тогда полная проверка использует ваши кейсы, а не черновик модели.
- Добавьте spec.yaml с триггерами и утверждениями (skilltest init): это контракт поведения для CI.
Находки guard · 12
✓ Критических и высоких находок нет
Средние и низкие: 12
-
средняя Опасные команды
cmd-pipe-to-shellscripts/provision.sh:121Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (строковый литерал в коде, не выполняется)as_user "curl -fsSL '$INSTALL_URL' | sh -s -- $flags" || { echo "installer failed" >&2; return 1; }строка в коде -
средняя Опасные команды
cmd-privilegescripts/provision.sh:284Повышение привилегий / права на запись для всех[ -f "$SYS_BIN" ] && $SUDO mv "$SYS_BIN" "$SYS_BIN.previous" # never overwrite a running binary in place
-
средняя Опасные команды
cmd-privilegescripts/provision.sh:289Повышение привилегий / права на запись для всехprintf '%s\n' "$runner_body" | $SUDO tee "$RUNNER" >/dev/null && $SUDO chmod 755 "$RUNNER"
-
средняя Опасные команды
cmd-privilegescripts/provision.sh:290Повышение привилегий / права на запись для всехprintf '%s\n' "$unit_node" | $SUDO tee "$UNIT_NODE" >/dev/null
-
средняя Опасные команды
cmd-privilegescripts/provision.sh:291Повышение привилегий / права на запись для всехif [ "$ROLE" = serve ]; then printf '%s\n' "$unit_serve" | $SUDO tee "$UNIT_SERVE" >/dev/null; fi
-
средняя Опасные команды
cmd-privilegescripts/provision.sh:292Повышение привилегий / права на запись для всехif [ "$DREAM" = true ]; then printf '%s\n' "$unit_dream" | $SUDO tee "$UNIT_DREAM" >/dev/null; printf '%s\n' "$timer_dream" | $SUDO tee "$TIMER_DREAM" >/dev/null; fi
-
низкая Опасные команды
cmd-background-processscripts/provision.sh:294Запуск фонового / автозапускаемого процесса$SUDO systemctl enable --now kannaka-node.service >/dev/null 2>&1 || $SUDO systemctl restart kannaka-node.service
-
низкая Опасные команды
cmd-background-processscripts/provision.sh:297Запуск фонового / автозапускаемого процесса[ "$ROLE" = serve ] && $SUDO systemctl enable --now kannaka-serve.service >/dev/null 2>&1
-
низкая Опасные команды
cmd-background-processscripts/provision.sh:298Запуск фонового / автозапускаемого процесса[ "$DREAM" = true ] && $SUDO systemctl enable --now kannaka-dream.timer >/dev/null 2>&1
-
низкая Опасные команды
cmd-privilegeSKILL.md:67Повышение привилегий / права на запись для всех (в кавычках — упоминание, а не команда)**4. Service.** `sudo bash provision.sh service [--role serve] [--no-dream]`. This is the
в кавычках -
низкая Опасные команды
cmd-privilegeSKILL.md:115Повышение привилегий / права на запись для всех (строка таблицы в документации)| `status=127` restart loop | the runner script is missing | `sudo bash provision.sh service` rewrites it |
таблица -
низкая Опасные команды
cmd-privilegeSKILL.md:122Повышение привилегий / права на запись для всех (в кавычках — упоминание, а не команда)(manifest-pinned, sha2…ied) followed by `sudo bash provision.sh service`, which swaps
в кавычках
Просканировано файлов: 5. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
Lint
✓ Lint: замечаний нет
Процессная зрелость 57/100
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 50Когда включается. Не сказано, при каком запросе скилл включается
- 55Ошибки и развилки. Развилок: 1
- 60Инструменты и файлы. Используются инструменты (bash, node), но во frontmatter они не объявлены
- 100Шаги. Шагов: 6
- 100Согласованность. Имя и обязательные поля на месте
- 100Стоимость исполнения. Тело инструкции 2162 токенов
- 100Повторный запуск. Изменяющие операции проверяют текущее состояние
- 100Отчётность по ходу. Скилл сообщает о ходе работы
- high Скилл велит модели самой совершать необратимое действие, без подтверждения человеком
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Формат ответа не описан: модель каждый раз решает сама
- +4Нет примеров входа/выхода
- +1Лицензия не указана
- +2Инструкции на одном языке
- +5В description 3 примера фраз-триггеров в кавычках
- +3Длина description 596 символов: достаточно сигнала, не съедает бюджет
- +4Структура: 6 заголовков
- +3Пошаговые инструкции: 6 пунктов
- +4Справочные файлы упоминаются в инструкциях (2 из 2)
- +3Все 1 скриптов описаны в инструкциях
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 92.