v2.1.0 to v2.2.0

70 added, 43 removed. Audit A to A.

---
name: personal-guide-render
- description: Персональное руководство пилота собирается автоматически на сервере платформы по расписанию. Используй когда пилот просит «пересобери руководство», «обнови мой план», «собери руководство на сегодня» — скилл объясняет текущее состояние и проверяет, что руководство доехало.
+ description: Проверяет доступность персонального руководства и табло за выбранный период. Отдельно сообщает подтверждённые сведения о генерации; не обещает ручную пересборку без опубликованного инструмента.
argument-hint: "[необязательно: дата в формате YYYY-MM-DD, по умолчанию сегодня]"
experimental: true
related: [WP-149, personal-guide-start, DP.SC.187]
- version: 2.1.0
+ version: 2.2.0
layer: L1
- status: awaiting-server-tool
+ status: experimental
browser_safe: true
supersedes: "v2.0.0 (вызов mcp render_personal_guide — инструмент не опубликован на сервере платформы, см. «Текущее состояние»)"
triggers:
slash: [/personal-guide-render]
phrases: []
routing:
executor: sonnet
deterministic: false
agents: single
- interaction: single-step
+ interaction: multi-step
gates_required: []
gates_enforced: []
gates_rationale: "операционный скилл; WP Gate применим только при создании нового РП, не для операционных вызовов"
---
- # Персональное руководство: как оно собирается
-
- ## Текущее состояние (2026-07-29)
+ # Проверка персонального руководства
- Сборка руководства — облачная возможность платформы: она читает данные пилота из баз платформы, обращается к LLM по ключу платформы и публикует результат в GitHub-репозиторий руководства. Всё это происходит **на сервере платформы автоматически по расписанию** — каждое утро появляется новый урок, по понедельникам пересобирается полный комплект.
+ ## When to use
- Ручной пересбор из чата («пересобери сейчас») пока недоступен: серверный MCP-инструмент для этого ещё не опубликован. Когда он выйдет, этот скилл начнёт вызывать его напрямую — следите за обновлениями шаблона.
+ Пользователь просит пересобрать руководство, обновить план или проверить,
+ почему материалы не появились. Скилл выполняет чтение; сам по себе он не запускает
+ серверную генерацию. Вызов из `/personal-guide-start` имеет те же условия.
- ## When to use
+ ## Доступность генерации
- Пилот просит «пересобери руководство», «обнови мой план», «собери руководство на сегодня» — либо спрашивает, почему руководства за сегодня нет.
+ Генерацию выполняет сервер платформы. Ручной MCP-инструмент пересборки пока не
+ опубликован. Не вызывать вымышленный `render_personal_guide`, не генерировать
+ личные материалы вместо сервера и не обещать срок по описанию старого расписания.
+ Только ответ действующего сервиса о конкретном задании подтверждает его запуск.
## Algorithm
- ## Шаг 0. Проверить предусловие (setup завершён)
+ ## Шаг 0. Проверить доступ к источнику
- Вызови `personal_search(source: "DS-personal-guide", path: "README.md")`.
+ Вызови `github_status`, проверь подключение `DS-personal-guide` и отсутствие
+ `github_owner_mismatch: true`. Несовпадение аккаунта или отказ в доступе — остановить
+ чтение и предложить переподключение. Источник не подключён — предложить подключить
+ существующий репозиторий; не считать отсутствие в списке доказательством, что его
+ нужно создать заново.
- > #503: раньше здесь проверялся платформенный путь `.claude/skills/...` —
- > он живёт в шаблоне (слой L1) и в пользовательский репозиторий DS-personal-guide
- > не копируется никогда, проверка гарантированно возвращала пусто и блокировала
- > все следующие шаги. Реальный признак завершённого bootstrap — README.md:
- > его создаёт сам bootstrap при создании репозитория (notes-структура
- > Gateway: inbox/, docs/, README.md), т.е. он существует ДО первого рендера.
+ Прочитай README актуальным вызовом:
+ `personal_get_document(source="DS-personal-guide", filename="README.md", include_sha=true)`.
+ При больших ответах пройти все страницы по контракту инструмента. Если путь
+ подтверждённо отсутствует, сообщить о незавершённой подготовке и предложить
+ `/personal-guide-start`. Ошибка чтения не равна отсутствию файла. Пустой результат
+ `personal_search` может означать задержку индекса — прежде чем заявлять отсутствие,
+ проверь чтение из GitHub. Если оно недоступно, результат «не удалось проверить».
- Если файл **не найден** → сообщить пилоту:
- ```
- Скиллы не установлены или установка не завершена.
- Запусти /personal-guide-start для первичной настройки.
- ```
- Стоп (не переходить к Шагу 1).
+ README — признак доступного репозитория, не полного руководства. Скиллы L1
+ доставляются из шаблона через IWE или общий MCP-загрузчик; их наличие внутри
+ `DS-personal-guide/.claude/skills/` не проверять и не требовать (#503, #1263).
+ Приватность репозитория этот скилл по одному `github_status` не устанавливает;
+ не выдавать результат чтения за завершённую проверку настройки.
- ## Шаг 1. Определить дату
+ ## Шаг 1. Определить период
- `date` = аргумент скилла если передан (формат YYYY-MM-DD), иначе сегодня.
+ `date` = аргумент YYYY-MM-DD, иначе сегодня в часовом поясе пользователя.
+ Определи ISO-неделю `YYYY-Www` с годом ISO-недели: около Нового года он может
+ отличаться от календарного года. Не выбирать режим только по дню недели.
- Определи ISO-неделю выбранной даты в формате `YYYY-Www`, используя год ISO-недели (он может отличаться от календарного года около Нового года).
+ ## Шаг 2. Проверить материалы и табло
- ## Шаг 2. Проверить, доехало ли руководство
+ Через `personal_get_document` с `include_sha=true` прочитай известные пути:
- Проверь в репо `DS-personal-guide` пилота наличие `guide/<ISO-неделя>.md` (недельный материал), `guide/<date>.md` (дневной материал) и `panel/<date>.md` (табло). Первые два пути — кандидаты для разных режимов: не требуй наличия обоих и не определяй режим только по дню недели.
+ - `guide/<ISO-неделя>.md` — недельный материал;
+ - `guide/<date>.md` — дневной материал;
+ - `panel/<date>.md` — табло.
- Если доступен `guide.json`, сверяй явно указанные пути в `sections.weekly` и `days` с выбранным периодом. Подтверждай режим только при явной ссылке на соответствующий материал; иначе укажи, что режим не подтверждён. Оглавление не является маркером полноты: не требуй несуществующих полей `mode`, `complete` или ссылки на табло.
+ Для материала достаточно дневного **или** недельного файла за выбранный период;
+ табло проверяется отдельно и также требуется. Пустой или нечитаемый файл не
+ подтверждает доступность материала. Сохранить различие «не найден» и «чтение
+ не удалось». Если актуальное чтение недоступно, индексированный результат можно
+ назвать только наблюдением индекса, не доказательством текущего состояния GitHub.
- **Сообщи результат отдельно для каждого проверенного пути:**
- ```
- Проверены файлы за <date>:
- <путь учебного материала> — найден / отсутствует.
- panel/<date>.md — найден / отсутствует.
+ Если доступен `guide.json`, сверь явно указанные пути в `sections.weekly` и `days`
+ с выбранным периодом. Режим подтверждай только явной ссылкой на соответствующий
+ материал. Не требуй одновременно оба режима, несуществующие поля `mode`/`complete`
+ или ссылку на табло в оглавлении. Оглавление не доказывает полноту комплекта.
+
+ ## Шаг 3. Сообщить результат и следующий шаг
+
+ Сообщи отдельно для каждого проверенного пути:
+
+ ```text
+ Проверены материалы за <date>:
+ <путь материала> — доступен / отсутствует / не удалось проверить.
+ panel/<date>.md — доступен / отсутствует / не удалось проверить.
Режим: недельный / дневной (подтверждён оглавлением) / не подтверждён.
+ Генерация: запуск подтверждён / ошибка подтверждена / запуск не подтверждён.
```
- Наличие файлов подтверждает их доступность, но не новый успешный запуск генератора или актуальность содержимого. Не объявляй комплект полным по одному файлу или одному оглавлению.
+ Наличие файлов подтверждает доступность, но не новую генерацию или содержательную
+ актуальность. `bootstrap_completed`, ответ загрузчика или отсутствие ошибки
+ у скилла не подтверждают полный комплект. Повторное чтение готового комплекта
+ не требует нового задания генератора.
- **Если для выбранного периода не найден ни один учебный материал или отсутствует табло:**
- ```
- Руководство собирается на сервере платформы автоматически (утром по расписанию).
- Ручной пересбор из чата пока недоступен — серверный инструмент в разработке.
- Если руководства нет к середине дня — сообщи в поддержку платформы.
- ```
+ Если материала за период или табло нет, не обещай автоматическое появление
+ «утром» и не объявляй «ожидает генерации» без подтверждённого задания. Укажи
+ недостающий результат. При доступных диагностических инструментах проверь
+ существующий серверный процесс; иначе предложи обратиться в поддержку с датой,
+ путями и ошибкой чтения, без передачи содержимого личных файлов. Настройку
+ репозитория из-за этого не повторять и историю не перезаписывать.
<!-- USER-SPACE -->
<!-- /USER-SPACE -->