diff --git a/dist/using-wiki.skill b/dist/using-wiki.skill index e0b64f9..988b42f 100644 Binary files a/dist/using-wiki.skill and b/dist/using-wiki.skill differ diff --git a/skills/using-wiki/SKILL.md b/skills/using-wiki/SKILL.md index 0b4a909..2222e2b 100644 --- a/skills/using-wiki/SKILL.md +++ b/skills/using-wiki/SKILL.md @@ -1,7 +1,7 @@ --- name: using-wiki author: ours -version: 2.0.0 +version: 2.1.0 description: > Policy skill for working with the project wiki in Mappa (Karpathy LLM Wiki pattern, channel = mappa-сущности, решения 14/15 спеки mappa). Use when the @@ -36,7 +36,9 @@ Body = frontmatter + markdown как есть (content-модель сохран Файловый `.wiki/` в репозиториях — легаси: источник истины — сервис. Если вики проекта пуста (нет сущностей) — **ничего настраивать не надо** -(setup-wiki умер): первый ingest сам создаёт `CLAUDE`, `index`, `log` (см. Ingest). +(setup-wiki умер): первый ingest сам создаёт `CLAUDE` (+ опционально `index`); +оп-лог вести не нужно — сервис пишет его в таблицу `logs` автоматически +(решение 12, ратификация 2026-08-24). ## MCP-поверхность @@ -76,7 +78,8 @@ Body = frontmatter + markdown как есть (content-модель сохран 3. Только потом действуй. Если `CLAUDE` нет — вики либо новая, либо неухоженная: не импровизируй -структуру, создай `CLAUDE`/`index`/`log` при первом ingest (см. ниже). +структуру, создай `CLAUDE` при первом ingest (см. ниже). Каталог — через +`entity_search` (решение 1); `index`-страница опциональна (для ориентации). ## Три операции @@ -91,9 +94,14 @@ Body = frontmatter + markdown как есть (content-модель сохран помечай явно** блоком `> **Противоречие:** источник A говорит X, источник B — Y`. Не затирай молча. - нет → создай (`wiki_create`). -5. Обнови `index` (каталог: одна строка на страницу). -6. Допиши одну строку в `log` (формат ниже). -7. Отчитайся пользователю: что создано, что обновлено, какие противоречия. +5. Обнови `index` (каталог: одна строка на страницу) — опционально; каталог + по умолчанию — `entity_search` (решение 1). +6. Отчитайся пользователю: что создано, что обновлено, какие противоречия. + +**Оп-лог — автоматический.** Каждая write-операция уже пишется сервисом в +таблицу `logs` (component=тип сущности, message=slug+operation; смотреть — +`mcp__mappa__admin_logs`). Ручную `log`-страницу НЕ веди — это дубль, +аудит-след живёт в сервисе (решение 12, ратификация 2026-08-24). **Один ingest может затронуть 10–15 страниц. Это нормально — для того LLM и нужны.** @@ -109,7 +117,8 @@ Body = frontmatter + markdown как есть (content-модель сохран 3. **Компаундируй вики.** Если ответ — реальный синтез (сравнение, анализ, новая связь) — спроси пользователя: «Сохранить как страницу wiki?» Хорошие вопросы становятся страницами в `concepts/`. -4. Допиши строку в `log`. + +Оп-лог в query — автоматический (logs-таблица); строку вручную не дописывай. ### Lint — «проверь вики» @@ -123,7 +132,7 @@ Body = frontmatter + markdown как есть (content-модель сохран - **Пустые/TODO-секции.** Отчёт — панч-лист. Ничего не удаляй автоматически. -Допиши строку в `log` с итогом. +Оп-лог в lint — автоматический (logs-таблица); строку вручную не дописывай. ## Форматы страниц (ОБЯЗАТЕЛЬНО) @@ -150,30 +159,28 @@ updated: 2026-08-24 - `entities/`, `concepts/`, `packages/`, `sources/`, `contradictions/`, `open-questions/`. -### `log` — append-only, grep-parseable +### Оп-лог — таблица `logs`, не страница -Каждая запись **обязана** начинаться с: +File-based `log.md` мёртв (решение 12/15, ратификация 2026-08-24). Сервис пишет +оп-лог сам при каждой write-операции: `mcp__mappa__admin_logs` (фильтры +level/since/component/entity, retention 14d). Ручную `log`-страницу не заводи, +не дописывай, не парси. -``` -## [YYYY-MM-DD] | -``` +### `index` — каталог через поиск -Операции: `ingest`, `query`, `lint`, `refactor`, `decision`, `init`. -Парсится: `entity_search(q="## [", type="wiki", project=…)` по сущности `log`. - -### `index` - -Каталог, не нарратив. Одна строка на страницу: `- [Title](concepts/foo.md) — hook.` -Секции по типам. Обновляется на каждом ingest. +Каталог = `entity_search(q, type='wiki', project)` (решение 1). `index`-страница +— опциональная опора для ориентации: одна строка на страницу +`- [Title](concepts/foo.md) — hook.`, секции по типам. Обновляй только если +страница уже существует; не плоди каталог-дубли. ## Quick reference | Ситуация | Что трогаем | |---|---| -| Ingest одного документа | `sources/` (новая) + 3–15 entities/concepts/packages + `index` + `log` | -| Query | (чтение) + возможно новая страница + `log` | -| Lint | (чтение) + `log` | -| Новая вики проекта | первый ingest создаёт `CLAUDE`/`index`/`log` + контент | +| Ingest одного документа | `sources/` (новая) + 3–15 entities/concepts/packages (+ опционально `index`) | +| Query | (чтение) + возможно новая страница | +| Lint | (чтение) | +| Новая вики проекта | первый ingest создаёт `CLAUDE` (+ опционально `index`); оп-лог — автоматический | ## Частые ошибки @@ -181,10 +188,11 @@ updated: 2026-08-24 - **Дамп сырья в `sources/`.** Резюме — это резюме. Ссылайся на raw, не копируй. - **Молчаливые перезаписи.** Новый источник противоречит странице — пометь блоком `> **Противоречие:**`; не затирай. -- **Нарративный `log`.** «Сегодня я добавил…» — неверно. Формат: - `## [YYYY-MM-DD] ingest | <что>`. +- **Нарративный оп-лог.** Не веди его руками: сервис пишет logs сам (admin.logs). + «Сегодня я добавил…» — даже вручную писать не надо. - **Не-ASCII слаги.** Ломают grep и кросс-платформенность. Транслитерируй. -- **Забытый `index`.** Страницы без записи в каталоге невидимы для будущих query. +- **Забытый `index`.** Страницы без записи в каталоге невидимы для будущих query + (если index-страница ведётся; дефолтный каталог — entity_search). - **Пропущенные противоречия в lint.** Ценность вики — в вскрытых напряжениях, а не в ложном консенсусе. - **Запись без лиза.** Wiki-мутации без `claim_token` → 422 busy; не пытайся