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