opencode-config/docs/decisions/007-pr-27-configure-opencode-rewrite.md
Sergey d1d7cf8ef2
refactor: opencode-config skill rewrite + rename /configure-opencode (#27)
* refactor: rename opencode-config to configure-opencode

- command: .opencode/commands/opencode-config.md -> configure-opencode.md
- skill dir: .opencode/skills/opencode-config/ -> configure-opencode/
- command body: skill({name: "opencode-config"}) -> skill({name: "configure-opencode"})
- project-map/README.md: update command+skill entries

* refactor: rewrite configure-opencode skill for .opencode/ auto-discovery

- flip canonical rule: config/opencode.json + bind-mount -> .opencode/opencode.json (project-local, auto-discovered, zero env var)
- repo is the template users clone (git clone && opencode)
- drop: bind-mount as primary (-> optional Docker), OPENCODE_CONFIG_DIR as required (-> power-user/Docker), Windows/ADR-009, internal env vars (ANTIDETECT/CONTEX7/CLOUDFLARE -> generic {env:MY_API_KEY})
- rename paths: config/ -> .opencode/, slaid098/opencode -> slaid098/opencode-config
- preserve: MCP/provider/permission formats, top-level keys, findLast semantic, check-permissions.py guard
- project-map: update entry descriptions for renamed command+skill

* docs(handoff): add pr-12 handoff + ADR-007

* docs(handoff): rename pr-12 handoff/ADR to pr-27 (actual PR number)

---------

Co-authored-by: opencode-agent <agent@slaid098.dev>
2026-07-24 00:21:02 +03:00

2.8 KiB
Raw Permalink Blame History

ADR-007: opencode-config skill rewrite for .opencode/ auto-discovery

Статус

Accepted

Контекст

configure-opencode skill (ранее opencode-config, создан в приватном репо) описывал старую архитектуру: config/opencode.json + bind-mount + OPENCODE_CONFIG_DIR + Windows bare-metal (windows/start.bat, LSP-конфликт pyproject.toml на Windows — не релевантен публичному Linux-шаблону). Новый репо slaid098/opencode-config использует .opencode/ auto-discovery (project-local, zero env var) — см. ADR-002 (миграция config/ → .opencode/). Skill противоречил ADR-002 и вводил в заблуждение пользователей публичного шаблона.

Решение

  • Flip canonical rule (§1, §9): .opencode/opencode.json (project-local, auto-discovered) вместо config/opencode.json + bind-mount. Репо сам — шаблон, который клонируют (git clone … && opencode).
  • Drop: bind-mount как primary механизм (→ optional Docker path), OPENCODE_CONFIG_DIR как required concept (→ power-user/Docker env var only), Windows bare-metal / LSP-конфликт pyproject.toml (не мигрировал в публичный репо), internal env vars (ANTIDETECT_BROWSER_MCP_URL, CONTEX7_API_KEY, CLOUDFLARE_TUNNEL_TOKEN) → generic {env:MY_API_KEY}.
  • Rename paths: config/....opencode/..., slaid098/opencodeslaid098/opencode-config (кроме opencode-memory).
  • Rename command + skill: /opencode-config/configure-opencode (command file, skill dir, skill({name: ...}) ref, frontmatter name).
  • Preserve: форматы MCP/provider/permission (архитектурно-агностичны), top-level keys reference, findLast semantic, check-permissions.py guard, ADR-005/ADR-006 refs.

Альтернативы

  • Drop skill entirely — отклонено: форматы MCP/provider/permission не очевидны из официальных доков opencode; findLast semantic и check-permissions.py guard — repo-specific знания, которые нужно сохранить.
  • Keep old skill — отклонено: противоречит ADR-002 (.opencode/ architecture), вводит в заблуждение пользователей публичного шаблона (они не используют bind-mount).
  • Rewrite без rename — отклонено: rename /opencode-config/configure-opencode устраняет коллизию имени с репо slaid098/opencode-config и лучше отражает action-verb naming остальных commands (/pipeline-driver, /spec-driver).