# руководство по испоьлзованию

# Руководство пользователя: wiki-news

## Что это

Личный глобальный инструмент — публикует новости об изменениях на wiki (`wiki.sociometer.ru`, книга «История обновлений»). Установлен один раз на этой машине, работает из любого проекта, не привязан к конкретному репозиторию.

- Код: `/Users/igor/Файлы и папки/_jobs/skills/wiki-news`
- Репозиторий: `gitlab.com/MiroScopeGroup/skills`
- Доступен как скилл `/wiki-news` в любой сессии Claude Code (глобально, через `~/.claude/skills/`)

## 1. Обычный способ — попросить в чате

Из любого проекта (frontV3, APPV3 или другого) — просто:

> «Опубликуй новость про [фичу] в wiki»

Claude сам соберёт данные об изменениях, покажет черновик текста на согласование и опубликует после вашего «ок». Ниже — что происходит под капотом и как вызвать вручную.

## 2. Куда публикуется — определяется автоматически

Wiki устроена так: книга **«История обновлений»**, внутри неё — глава на каждый продукт, внутри главы — одна страница с новостями.

Раздел определяется по имени папки репозитория, в котором вы стоите:

| Папка репозитория | Раздел wiki |
|---|---|
| `frontV3` | Глава «Редактор анкет» |
| `APPV3` | Глава «Мобильное приложение» |

Спрашивать раздел не нужно — если вы (или Claude) стоите внутри одного из этих проектов, `--page` можно не указывать. Список соответствий — в `wiki-news/projects.json`, список известных разделов и их id — в `wiki-news/pages.json`.

Если работаете с другим проектом, не входящим в список — нужно либо передать `--page <алиас>` явно, либо сначала добавить новый проект в конфиг (см. раздел «Новый проект» ниже).

## 3. Команды CLI (для ручного/отладочного запуска)

Все вызываются по абсолютному пути:

```
node "/Users/igor/Файлы и папки/_jobs/skills/wiki-news/src/cli.js" <команда> ...
```

### `gather` — собрать данные об изменениях

```
cd <репозиторий>   # frontV3, APPV3 или любой другой
node ".../wiki-news/src/cli.js" gather --path <путь> [--page <алиас>] [--range a..b] [--since дата]
```

| Параметр | Обязателен | Что делает |
|---|---|---|
| `--path` | да | Директория/файл в репозитории, изменения в которой анализируем |
| `--page` | нет | Алиас раздела wiki. Если не указан — определяется автоматически по имени папки |
| `--range` | нет | Явный диапазон `<sha1>..<sha2>` |
| `--since` | нет | Дата `YYYY-MM-DD` — взять всё после неё |
| `--repo` | нет | Путь к репозиторию, если не хотите/не можете `cd` перед вызовом |

Если `--range`/`--since` не переданы — команда сама определит диапазон по дате последней публикации на wiki-странице.

**Пример (из frontV3, авто-определение раздела):**

```
cd frontV3
node "/Users/igor/Файлы и папки/_jobs/skills/wiki-news/src/cli.js" gather --path src/pages/redaktor
```

Вернёт JSON: `page` (какой раздел определился), `commits`, `stat`, `matchedDocs`, текущий текст wiki-страницы. Ничего не публикует — безопасно вызывать многократно.

### `publish` — опубликовать финальный текст

```
node ".../wiki-news/src/cli.js" publish --file <путь-к-тексту> [--page <алиас>] [--repo <путь>]
```

Дописывает файл **в начало** существующей wiki-страницы (не затирает её). `--page`/`--repo` работают так же, как в `gather` — авто-определение по текущей папке, если не указаны явно.

**Пример:**

```
node "/Users/igor/Файлы и папки/_jobs/skills/wiki-news/src/cli.js" publish --file /tmp/draft.md
```

### `resolve-page` — настройка нового раздела (обычно не нужна вручную)

```
node ".../wiki-news/src/cli.js" resolve-page [--page <алиас>]
```

Нужна только при добавлении нового раздела в `pages.json` с `pageId: null`. Находит главу по `bookSlug`/`chapterSlug`, ищет в ней существующую страницу с новостями — а если такой ещё нет, **создаёт новую автоматически** через BookStack API и сохраняет её id.

## 4. Добавить новый проект/раздел

1. Добавить в `wiki-news/pages.json` новую запись: `{"bookSlug": "istoriya-obnovlenii", "chapterSlug": "<slug-главы-в-wiki>", "pageId": null}`.
2. Если у проекта есть репозиторий с понятным именем папки — добавить строку в `wiki-news/projects.json`: `"ИмяПапки": "новый-алиас"`.
3. Один раз выполнить `resolve-page --page <новый-алиас>` — создаст страницу, если её ещё нет.

## 5. Типичный ручной цикл целиком

```
cd frontV3
node "/Users/igor/Файлы и папки/_jobs/skills/wiki-news/src/cli.js" gather --path src/pages/redaktor
# → пишете черновик по правилам AI_What_News/README.md (если есть в репозитории)
node "/Users/igor/Файлы и папки/_jobs/skills/wiki-news/src/cli.js" publish --file draft.md
```