* 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>
3 KiB
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.mdPUT с 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()).