Compare commits

...

2 Commits

13 changed files with 42 additions and 25 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
dist/task-format.skill vendored

Binary file not shown.

Binary file not shown.

BIN
dist/using-tasks.skill vendored

Binary file not shown.

Binary file not shown.

BIN
dist/using-wiki.skill vendored

Binary file not shown.

View File

@@ -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 полученного>, 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,

View File

@@ -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

View File

@@ -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/<slug>` (новая) + 3–15 entities/concepts/packages (+ опционально `index`) |
| Query | (чтение) + возможно новая страница |
| Lint | (чтение) |
| Новая вики проекта | первый ingest создаёт `CLAUDE` (+ опционально `index`); оп-лог — автоматический |
| Новая вики проекта | первый ingest создаёт `AGENTS` + `CLAUDE`-указатель; оп-лог — автоматический |
## Частые ошибки