* feat(tools): add create-readme tool * feat(skills): add repo-readme skill * docs(handoff): add handoff and ADR * docs(handoff): set PR number * docs(project-map): update after structural changes --------- Co-authored-by: opencode-agent <agent@opencode.local>
49 lines
3 KiB
Markdown
49 lines
3 KiB
Markdown
---
|
||
pr: 112
|
||
title: feat(skills): add repo-readme skill and create-readme tool
|
||
---
|
||
|
||
## Что сделано
|
||
|
||
Создана тулза `create-readme` (`.opencode/tools/create-readme.ts`, TS-плагин) с
|
||
двумя режимами:
|
||
- `create` — генерирует стандартизированный двуязычный README.md по шаблону с
|
||
разделителями `<!-- summary-en:start/end -->` и `<!-- summary-ru:start/end -->`,
|
||
Support & Contact блоком, Quick Start, language switcher. Поддерживает
|
||
`custom_sections_en/ru`, `tier` (flagship/utility), `demo_gif`, `telegram`.
|
||
Локальный режим (`fs.writeFileSync` в `file_path`) и удалённый (`gh api
|
||
repos/{owner}/{repo}/contents/README.md` PUT с base64 + SHA).
|
||
- `validate` — проверяет существующий README на 6 критериев: наличие обоих
|
||
EN/RU разделителей, непустой контент между ними, ссылку slaid098.dev/support,
|
||
секции Quick Start (EN) + Быстрый старт (RU), language switcher.
|
||
|
||
Создан скилл `repo-readme` (`.opencode/skills/repo-readme/SKILL.md`): когда
|
||
использовать create vs validate, tier system, GitHub metadata как отдельный
|
||
шаг, workflow (create → ручные правки → validate), зачем разделители (парсинг
|
||
витриной slaid098.dev), шаблон README как reference, независимость от
|
||
repo-init, краткий список параметров тулзы.
|
||
|
||
Проверки: `tsc --noEmit` чисто; `check-permissions.py` OK (тулза вызывает
|
||
`gh api` через `spawnSync` внутри плагина — не bash-команда агента, не требует
|
||
allow-rule).
|
||
|
||
## Почему
|
||
|
||
Структура README критична для витрины slaid098.dev — она скачивает raw
|
||
README и извлекает фрагмент между разделителями. Тулза обеспечивает
|
||
детерминированную генерацию структуры, скилл даёт контекст агенту (когда
|
||
вызывать, tier, metadata). Ручная генерация README агентом через Write
|
||
рискует нарушить разделители.
|
||
|
||
## Pending
|
||
|
||
—
|
||
|
||
## Watch out
|
||
|
||
Handoff/ADR файлы названы `pr-0-*` (placeholder) — номер PR подставится после
|
||
create-pr и отдельного коммита `docs(handoff): set PR number`. Тулза
|
||
регистрации в `opencode.json` не требует (плагины авто-дискаверятся из
|
||
`.opencode/tools/*.ts`, как `tunnel.ts`). `tier`/`file_path` реализованы через
|
||
`.optional()` + fallback в handler (не `.default()`), консистентно с
|
||
существующими тулзами (commit.ts, create-issue.ts не используют zod `.default()`).
|