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

19 lines
No EOL
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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/opencode``slaid098/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`).