The catalog of skills and protocols this Navi has been taught: reusable methodologies, stored per user or shared by the hive. search finds entries; load returns one in full; create/update write a skill; propose offers a protocol to the user.
Search before improvising a recurring task — one call often replaces several turns of rediscovery. Write a skill once a way of working proved itself; never create a protocol directly — propose it and let the user decide.
| Parameter | Required | Description | ||||
|---|---|---|---|---|---|---|
op |
yes | search \ |
load \ |
create \ |
update \ |
propose. |
query |
for search |
Words matched against name, description, triggers and tags. | ||||
kind |
no | skill \ |
protocol — filter, or disambiguate on load. |
|||
tag |
no | Require this tag. | ||||
area |
no | home \ |
infrastructure \ |
workflows \ |
general. |
|
id |
for load/update |
Entry id from a search result. | ||||
name |
for load |
Exact name, when you have no id. | ||||
content |
for create/update/propose |
The whole document (front matter + body). | ||||
replaces_id |
for propose |
Id of an existing protocol this proposal replaces. |
search{"op": "search", "query": "энергосбережение", "area": "home"}
{"op": "search", "kind": "protocol", "tag": "power"}
Returns one line per entry: kind, name, version, area/visibility, description, tags, id. Personal entries come first.
load{"op": "load", "id": "3f2a9c1d8e4b7a60"}
{"op": "load", "name": "Корректное выключение инфраструктуры", "kind": "protocol"}
For a skill, returns the instructions. For a protocol, returns the steps, the precondition list, the post-checks and the three escape hatches.
create{"op": "create", "content": "---\nkind: skill\nname: Разбор логов\n---\n\nГрепай ERROR, сужай по времени."}
Saves a skill owned by the current user and returns its id and version. A protocol sent here is refused — use propose.
update{"op": "update", "id": "3f2a9c1d8e4b7a60", "content": "<the full document>"}
Saves a new version of a skill you own (an admin may edit a shared one). The previous version stays in the history. A protocol sent here is refused: propose it with replaces_id instead.
propose{"op": "propose", "content": "<protocol document>"}
{"op": "propose", "content": "<protocol document>", "replaces_id": "9c4d2b7a1e6f8035"}
Stores the protocol as a proposal — it is not in the catalog yet. The result carries a card with the whole document and two buttons, "Добавить" and "Отклонить"; the protocol becomes a catalog entry only when the user clicks "Добавить". Say what the protocol does and wait for the decision — do not run it on your own, and do not claim it is saved.
Read the escape hatches before step 1. They are part of the procedure, not commentary:
on_deviation) — what to do when reality differs from the plan;on_blocked) — how to stop cleanly and report;on_already_done) — how to verify and skip a step whose result already exists.Do not silently improvise around a step. A protocol exists because the user pre-agreed to the exact actions it names; deviating is an execution error to report, not a variation to choose.
A document is a YAML front matter block plus a markdown body:
--- kind: protocol name: Корректное выключение инфраструктуры description: Останавливает сервисы в порядке зависимостей и проверяет, что диск не в работе. area: infrastructure tags: [power, shutdown] triggers: - "пользователь просит выключить сервер" - "плановое отключение питания" steps: - "Остановить сервисы приложений" - "Остановить базы данных" - "Синхронизировать и отмонтировать диски" post_checks: - "systemctl list-units --state=running не содержит прикладных юнитов" on_deviation: "Если шаг не удался — не продолжать, вернуться к предыдущему и доложить." on_blocked: "Если сервис не останавливается за 60 с — остановить выключение и доложить." on_already_done: "Проверить статус; если сервис уже остановлен — отметить шаг выполненным." --- Дополнительный контекст, порядок зависимостей и известные ловушки.
steps, post_checks, on_deviation, on_blocked, on_already_done are mandatory for kind: protocol; a skill needs only name and a body.