opencode-config/docs/handoff/pr-112-add-repo-readme-skill-and-tool.md
Sergey 7ea12b982d
feat(skills): add repo-readme skill and create-readme tool (#112)
* 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>
2026-07-29 01:04:51 +03:00

3 KiB
Raw Permalink Blame History


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()).