diff --git a/dist/inter-session-messaging.skill b/dist/inter-session-messaging.skill index d7ab9cc..0b77289 100644 Binary files a/dist/inter-session-messaging.skill and b/dist/inter-session-messaging.skill differ diff --git a/dist/using-wiki-graph.skill b/dist/using-wiki-graph.skill index cf378b0..d836537 100644 Binary files a/dist/using-wiki-graph.skill and b/dist/using-wiki-graph.skill differ diff --git a/dist/using-wiki.skill b/dist/using-wiki.skill index 988b42f..0ce5eb1 100644 Binary files a/dist/using-wiki.skill and b/dist/using-wiki.skill differ diff --git a/skills/inter-session-messaging/SKILL.md b/skills/inter-session-messaging/SKILL.md index 843a66f..12f94db 100644 --- a/skills/inter-session-messaging/SKILL.md +++ b/skills/inter-session-messaging/SKILL.md @@ -1,10 +1,10 @@ --- name: inter-session-messaging author: ours -version: 2.1.0 +version: 2.2.0 description: > Как писать и принимать межсессионные письма через Mappa (`inbox.send` / - `inbox.monitor` / `entity.get`, письма — сущности `i:N`, карв-аут без лиза). + `inbox.monitor` / `entity.get`, письма — сущности `inbox:N`, карв-аут без лиза). Один источник правды по канону отправки: адрес = имя папки проекта как есть (из адресной книги `concepts/projects-address-book.md` в shared wiki; проект должен существовать в Mappa), `from` = своё имя папки, никогда не писать себе. @@ -22,7 +22,7 @@ description: > и какая политика действует на содержание (peer ≠ authority). Канал — Mappa (`mcp__mappa__*`), НЕ файлы. Письмо — сущность типа `inbox` -(`i:N`), живёт в сервисе, доставка и чтение — карв-аут (не требуют лиза +(`inbox:N`), живёт в сервисе, доставка и чтение — карв-аут (не требуют лиза проекта, решение 19). Файловый канал `.agents/inbox/` выпилен (флип решения 15). Три секции — SEND (механика), RECEIVE (обработка входящего), POLICY (дисциплина). @@ -63,9 +63,18 @@ mcp__mappa__inbox_send( выдуманным `from` нельзя ответить. - Ответ на письмо: `inbox_send(project=, from=<своя папка>)`. В `subject` — префикс `Re: `, в теле первая строка — ссылка на исходное - письмо (`i:<номер>` или его subject). Поля `in_reply_to`/`event` в Mappa нет — + письмо (`inbox:<номер>` или его subject). Поля `in_reply_to`/`event` в Mappa нет — вместо них subject-префиксы `Re:` и `[event: closed]` при lifecycle-письмах. +### Реф-формат (#1028): слаг/имя первым, полное имя рефа как якорь + +Конвенция на прозу и ссылки: **имя/слаг первым, реф как якорь** — «письмо +`i:2046`» → «письмо про деплой (inbox:2046)», «таска `session-live-ingest-impl` +(task:1022)». Рефы писать **полными именами**: `task:`/`wiki:`/`inbox:`/`session:`/ +`handoff:`/`storm:`/`repo:`/`commit:`/`project:` (короткие `t:`/`w:`/`i:`/… +парсер принимает, но писать полные). Вики-реф единый `wiki:NNNN` для всех +бакетов (подтип — в слаге: `wiki:2604` = concepts/session-live-ingest). + ### Ссылки на задачи — по номеру (формат v2) Ссылка на задачу в письме — **по глобальному номеру**: `#452` (формат v2, diff --git a/skills/using-wiki-graph/SKILL.md b/skills/using-wiki-graph/SKILL.md index 28905df..119a70d 100644 --- a/skills/using-wiki-graph/SKILL.md +++ b/skills/using-wiki-graph/SKILL.md @@ -1,7 +1,7 @@ --- name: using-wiki-graph author: ours -version: 1.0.0 +version: 1.1.0 description: > Use when a question is RELATIONAL about a wiki or any entities in Mappa — «что связывает X и Y», «как связаны», «путь между X и Y», «what connects X @@ -12,7 +12,8 @@ description: > [[refs]] в body → рёбра). Guarded failure-mode: на реляционные вопросы агент читает одну страницу и ОСТАНАВЛИВАЕТСЯ, никогда не ходит по многохоповым цепочкам сам. Адресация — internal id (из wiki_get/entity_search); ответы - несут per-type refs (t:N/i:N/w:N, решение 20/#1037). Read-only, без лиза + несут per-type refs полными именами (task:N/inbox:N/wiki:N, решение 20/#1037, + конвенция #1028). Read-only, без лиза (карв-аут, решение 19). Skip для одно-страничных контентных вопросов. --- @@ -51,8 +52,8 @@ wiki-страницы или любые сущности mappa (таски, пи 1. `mcp__mappa__wiki_get(project, slug)` (или `entity_search(q, type='wiki')`) — из ответа бери `id` (последнее поле; публичные `ref`/`num` — для показа). 2. Передавай `id` в graph-тулы. -3. Ответы graph несут `ref` (t:N/i:N/w:N) на узлах и рёбрах (`from_ref`/`to_ref`) - — реферируй по ним в ответе, не по id. +3. Ответы graph несут `ref` (task:N/inbox:N/wiki:N — полные имена, #1028) на + узлах и рёбрах (`from_ref`/`to_ref`) — реферируй по ним в ответе, не по id. ## Steps diff --git a/skills/using-wiki/SKILL.md b/skills/using-wiki/SKILL.md index 2222e2b..7f09f2e 100644 --- a/skills/using-wiki/SKILL.md +++ b/skills/using-wiki/SKILL.md @@ -1,7 +1,7 @@ --- name: using-wiki author: ours -version: 2.1.0 +version: 2.2.0 description: > Policy skill for working with the project wiki in Mappa (Karpathy LLM Wiki pattern, channel = mappa-сущности, решения 14/15 спеки mappa). Use when the @@ -9,7 +9,8 @@ description: > says «use project wiki», «обнови вики», «проверь вики», «запроси вики», «заингесть», «query the wiki». Also use when modifying any wiki page — the workflow and formats below are mandatory, and project-specific conventions live - in the `CLAUDE` wiki-сущности проекта. Wiki = сущности `type=wiki` в сервисе + in the `AGENTS` wiki-сущности проекта (legacy — `CLAUDE`-указатель). Wiki = + сущности `type=wiki` в сервисе (чтение — карв-аут лиза; запись — под лизом проекта, решение 19). Файлового `.wiki/` больше нет; `setup-wiki` умер (нечего настраивать). --- @@ -26,8 +27,8 @@ description: > ## Prerequisites Wiki проекта = сущности в сервисе Mappa (HTTP-ядро, MCP-адаптер `mcp__mappa__*`). -Слаг страницы = путь от корня вики без расширения (`index`, `log`, `CLAUDE`, -`concepts/foo`, `entities/bar`, `packages/baz`, `sources/doc`, `overview`). +Слаг страницы = путь от корня вики без расширения (`index`, `log`, `AGENTS`, +`CLAUDE`, `concepts/foo`, `entities/bar`, `packages/baz`, `sources/doc`, `overview`). Body = frontmatter + markdown как есть (content-модель сохраняется, решение 2). Проектная вики (scope=project) читается/пишется с параметром проекта; @@ -36,7 +37,7 @@ Body = frontmatter + markdown как есть (content-модель сохран Файловый `.wiki/` в репозиториях — легаси: источник истины — сервис. Если вики проекта пуста (нет сущностей) — **ничего настраивать не надо** -(setup-wiki умер): первый ingest сам создаёт `CLAUDE` (+ опционально `index`); +(setup-wiki умер): первый ingest сам создаёт `AGENTS` (+ `CLAUDE`-указатель); оп-лог вести не нужно — сервис пишет его в таблицу `logs` автоматически (решение 12, ратификация 2026-08-24). @@ -56,11 +57,13 @@ Body = frontmatter + markdown как есть (content-модель сохран закрыть вручную нечем (кроме `admin_release_lease` для залипших) — пиши, затем отпусти (не держи лиз на время чтения/размышлений). -**Рефы и id (#1037).** Публичная поверхность несёт per-type реф первым полем: -`ref: "w:3"` (тип+номер, решение 20), `num` следом, глобальный `id` — internal -(последним полем). Для `wiki.update` нужен internal `id` — бери его из ответа -`wiki_get`/`entity_search`. В тексте страниц ссылайся викилинками по слагу -(`[[concepts/foo]]`, решение 4) или per-type рефами (`[[i:N]]`/`[[t:N]]`). +**Рефы и id (#1037/#1028).** Публичная поверхность несёт per-type реф первым полем: +`ref: "wiki:3"` (полное имя типа + номер, решение 20, конвенция #1028), `num` +следом, глобальный `id` — internal (последним полем). Для `wiki.update` нужен +internal `id` — бери его из ответа `wiki_get`/`entity_search`. В тексте страниц +ссылайся викилинками по слагу (`[[concepts/foo]]`, решение 4) или per-type +рефами полными именами (`[[inbox:N]]`/`[[task:N]]`). В прозе — слаг/имя первым, +реф как якорь: «спека `concepts/session-live-ingest` (wiki:2604)». ## Три слоя (не смешивать) @@ -68,18 +71,21 @@ Body = frontmatter + markdown как есть (content-модель сохран редактируй (единственное исключение — блок-цитата `> Status` по явной просьбе пользователя). 2. **Вики** — все остальные страницы (entities/concepts/packages/…). -3. **Схема** — сущность `CLAUDE` (slug `CLAUDE`). Конвенции проекта. Читай её - первой; она перекрывает этот скил при конфликте. +3. **Схема** — сущности `AGENTS` (канон, slug `AGENTS`) + `CLAUDE` (legacy- + указатель «Canon is AGENTS»). Конвенции проекта. Читай `AGENTS` первой; она + перекрывает этот скил при конфликте. ## Первый шаг любой операции -1. `mcp__mappa__wiki_get(project, 'CLAUDE')` — если есть, читай (схема). +1. `mcp__mappa__wiki_get(project, 'AGENTS')` — если есть, читай (канон; если + нет — `wiki_get(project, 'CLAUDE')`, легаси-указатель). 2. `mcp__mappa__wiki_get(project, 'index')` — каталог, найди нужные страницы. 3. Только потом действуй. -Если `CLAUDE` нет — вики либо новая, либо неухоженная: не импровизируй -структуру, создай `CLAUDE` при первом ingest (см. ниже). Каталог — через -`entity_search` (решение 1); `index`-страница опциональна (для ориентации). +Если `AGENTS`/`CLAUDE` нет — вики либо новая, либо неухоженная: не +импровизируй структуру, создай `AGENTS` (+ `CLAUDE`-указатель) при первом +ingest (см. ниже). Каталог — через `entity_search` (решение 1); `index`-страница +опциональна (для ориентации). ## Три операции @@ -97,6 +103,7 @@ Body = frontmatter + markdown как есть (content-модель сохран 5. Обнови `index` (каталог: одна строка на страницу) — опционально; каталог по умолчанию — `entity_search` (решение 1). 6. Отчитайся пользователю: что создано, что обновлено, какие противоречия. + Первый ingest новой вики: создай `AGENTS` (канон) + `CLAUDE` (указатель). **Оп-лог — автоматический.** Каждая write-операция уже пишется сервисом в таблицу `logs` (component=тип сущности, message=slug+operation; смотреть — @@ -180,7 +187,7 @@ level/since/component/entity, retention 14d). Ручную `log`-страниц | Ingest одного документа | `sources/` (новая) + 3–15 entities/concepts/packages (+ опционально `index`) | | Query | (чтение) + возможно новая страница | | Lint | (чтение) | -| Новая вики проекта | первый ingest создаёт `CLAUDE` (+ опционально `index`); оп-лог — автоматический | +| Новая вики проекта | первый ingest создаёт `AGENTS` + `CLAUDE`-указатель; оп-лог — автоматический | ## Частые ошибки