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
|
||||
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,
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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`-указатель; оп-лог — автоматический |
|
||||
|
||||
## Частые ошибки
|
||||
|
||||
|
||||
Reference in New Issue
Block a user