oh-my-opencode 0.1.12 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.ko.md CHANGED
@@ -3,9 +3,14 @@
3
3
  ## 목차
4
4
 
5
5
  - [Oh My OpenCode](#oh-my-opencode)
6
- - [설치](#설치)
7
6
  - [세 줄 요약](#세-줄-요약)
8
- - [Why OpenCode \& Why Oh My OpenCode](#why-opencode--why-oh-my-opencode)
7
+ - [설치](#설치)
8
+ - [설정](#설정)
9
+ - [특정 MCP 비활성화](#특정-mcp-비활성화)
10
+ - [특정 Agent 비활성화](#특정-agent-비활성화)
11
+ - [Agent 설정](#agent-설정)
12
+ - [LLM Agent를 위한 안내](#llm-agent를-위한-안내)
13
+ - [Why OpenCode & Why Oh My OpenCode](#why-opencode--why-oh-my-opencode)
9
14
  - [기능](#기능)
10
15
  - [Hooks](#hooks)
11
16
  - [Agents](#agents)
@@ -33,6 +38,17 @@ OpenCode 가 낭만이 사라진것같은 오늘날의 시대에, 당신에게
33
38
  당신이 코딩을 좋아하고 컴퓨터를 좋아한다면, OpenCode 는 윈도우만 사용하다가 리눅스를 처음 접하게 된 그런 느낌일겁니다.
34
39
  그렇지 않은 당신도 약간의 시간을 투자해서 당신의 실력과 생산성을 몇배로 부스트하세요.
35
40
 
41
+ ## 세 줄 요약
42
+
43
+ - **모델 설정이 필요합니다**
44
+ - 이 플러그인은 [OpenCode Zen](https://opencode.ai/docs/zen/), Google, OpenAI, Anthropic 의 모델을 사용합니다.
45
+ - Anthropic 모델들을 사용하기 위해 [OpenCode 의 내장 Claude Code Max Plan 로그인 기능](https://opencode.ai/docs/providers/#anthropic)을 사용하세요. (Anthropic 플랜은 유료입니다)
46
+ - OpenAI 모델들을 사용하기 위해 이 [OpenCode-OpenAI-Codex-Auth 플러그인](https://github.com/numman-ali/opencode-openai-codex-auth)을 추천합니다. (OpenAI 플랜은 유료입니다)
47
+ - Gemini, GPT 를 위해 [VibeProxy (macOS Only)](https://github.com/automazeio/vibeproxy) 또는 [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)를 추천합니다. (Gemini 는 구독하지 않아도 사용 할 수 있습니다)
48
+ - **사실 밑의 내용은 읽지 않아도 됩니다. 그냥 설치하시면 됩니다. 모델 설정하고나면 추가로 공부하거나 알 필요가 없고, 설치하고 나면 그냥 더 좋아집니다.**
49
+ - **이 문서도 그냥 Claude Code, OpenCode, Cursor에 붙여넣고, 설치하고, 사용자의 개입이 필요할 때 알려달라고 프롬프팅하세요. 그럼 그냥 깔립니다.**
50
+ - 당신이 LLM Agent 라면, 필요한 플러그인과 의존성을 설치하고, tmux 를 통해 opencode auth login 을 실행하여 사용자의 구성을 도와주세요.
51
+
36
52
  ## 설치
37
53
 
38
54
  `~/.config/opencode/opencode.json`에 추가:
@@ -45,16 +61,162 @@ OpenCode 가 낭만이 사라진것같은 오늘날의 시대에, 당신에게
45
61
  }
46
62
  ```
47
63
 
48
- ## 세 줄 요약
64
+ ## 설정
49
65
 
50
- - **모델 설정이 필요합니다**
51
- - 이 플러그인은 [OpenCode Zen](https://opencode.ai/docs/zen/), Google, OpenAI, Anthropic 의 모델을 사용합니다.
52
- - Anthropic 모델들을 사용하기 위해 [OpenCode 의 내장 Claude Code Max Plan 로그인 기능](https://opencode.ai/docs/providers/#anthropic)을 사용하세요. (Anthropic 플랜은 유료입니다)
53
- - OpenAI 모델들을 사용하기 위해 이 [OpenCode-OpenAI-Codex-Auth 플러그인](https://github.com/numman-ali/opencode-openai-codex-auth)을 추천합니다. (OpenAI 플랜은 유료입니다)
54
- - Gemini, GPT 를 위해 [VibeProxy (macOS Only)](https://github.com/automazeio/vibeproxy) 또는 [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)를 추천합니다. (Gemini 는 구독하지 않아도 사용 할 수 있습니다)
55
- - **사실 밑의 내용은 읽지 않아도 됩니다. 그냥 설치하시면 됩니다. 모델 설정하고나면 추가로 공부하거나 알 필요가 없고, 설치하고 나면 그냥 더 좋아집니다.**
56
- - **이 문서도 그냥 Claude Code, OpenCode, Cursor에 붙여넣고, 설치하고, 사용자의 개입이 필요할 때 알려달라고 프롬프팅하세요. 그럼 그냥 깔립니다.**
57
- - 당신이 LLM Agent 라면, 필요한 플러그인과 의존성을 설치하고, tmux 를 통해 opencode auth login 을 실행하여 사용자의 구성을 도와주세요.
66
+ `oh-my-opencode.json` (또는 `.oh-my-opencode.json`) 파일을 프로젝트 루트에 생성해서 Oh My OpenCode를 입맛대로 설정할 수 있어.
67
+
68
+ ```json
69
+ {
70
+ "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/dist/oh-my-opencode.schema.json"
71
+ }
72
+ ```
73
+
74
+ 설정 파일은 스키마를 통해 자동완성을 지원합니다. 자세한 내용은 각 기능 섹션에서 설명합니다.
75
+
76
+ ### 특정 MCP 비활성화
77
+
78
+ 특정 MCP가 거슬린다면 끌 수 있어.
79
+
80
+ ```json
81
+ {
82
+ "disabled_mcps": ["websearch_exa"]
83
+ }
84
+ ```
85
+
86
+ ### 특정 Agent 비활성화
87
+
88
+ 특정 에이전트가 마음에 안 들거나, 토큰을 아끼고 싶다면 비활성화해.
89
+ 비활성화 가능한 목록: `oracle`, `librarian`, `explore`, `frontend-ui-ux-engineer`, `document-writer`
90
+
91
+ ```json
92
+ {
93
+ "disabled_agents": ["frontend-ui-ux-engineer"]
94
+ }
95
+ ```
96
+
97
+ ### Agent 설정
98
+
99
+ 각 에이전트의 모델, 프롬프트, 권한 등을 세밀하게 조정할 수 있어.
100
+
101
+ **설정 옵션:**
102
+
103
+ | 옵션 | 설명 |
104
+ |------|------|
105
+ | `model` | 사용할 모델 ID (예: `anthropic/claude-sonnet-4`) |
106
+ | `temperature` | 창의성 조절 (0.0 ~ 2.0) |
107
+ | `top_p` | 단어 선택 다양성 (0.0 ~ 1.0) |
108
+ | `prompt` | 시스템 프롬프트 오버라이드 |
109
+ | `tools` | 특정 도구 활성화/비활성화 (`{"tool_name": false}`) |
110
+ | `disable` | 에이전트 비활성화 (`true`/`false`) |
111
+ | `description` | 에이전트 설명 수정 |
112
+ | `mode` | 에이전트 모드 (`subagent`, `primary`, `all`) |
113
+ | `color` | 터미널 출력 색상 (HEX 코드) |
114
+ | `permission` | 권한 설정 (아래 표 참조) |
115
+
116
+ **권한(`permission`) 옵션:**
117
+
118
+ 각 권한은 `"ask"`(물어보기), `"allow"`(허용), `"deny"`(거부) 중 하나로 설정 가능해.
119
+
120
+ | 권한 | 설명 |
121
+ |------|------|
122
+ | `edit` | 파일 수정 권한 |
123
+ | `bash` | 쉘 명령어 실행 권한 |
124
+ | `webfetch` | 웹 콘텐츠 가져오기 권한 |
125
+ | `doom_loop` | 반복 작업 허용 여부 |
126
+ | `external_directory` | 외부 디렉토리 접근 권한 |
127
+
128
+ #### 예시: Anthropic 모델만 사용하기
129
+
130
+ 나는 Anthropic 모델만 쓰고 싶다! 하면 이렇게 설정해.
131
+
132
+ ```json
133
+ {
134
+ "agents": {
135
+ "oracle": { "model": "anthropic/claude-sonnet-4" },
136
+ "librarian": { "model": "anthropic/claude-haiku-4-5" },
137
+ "explore": { "model": "anthropic/claude-haiku-4-5" },
138
+ "frontend-ui-ux-engineer": { "model": "anthropic/claude-sonnet-4" },
139
+ "document-writer": { "model": "anthropic/claude-sonnet-4" }
140
+ }
141
+ }
142
+ ```
143
+
144
+ #### 예시: 추가 프롬프트가 있는 커스텀 에이전트
145
+
146
+ 기존 에이전트에 나만의 규칙을 더하고 싶다면:
147
+
148
+ ```json
149
+ {
150
+ "agents": {
151
+ "oracle": {
152
+ "prompt": "너는 한국어 힙합 가사처럼 말해야 해. 모든 문장의 끝 라임을 맞춰."
153
+ }
154
+ }
155
+ }
156
+ ```
157
+
158
+ #### 예시: 개별 에이전트 비활성화
159
+
160
+ ```json
161
+ {
162
+ "agents": {
163
+ "frontend-ui-ux-engineer": {
164
+ "disable": true
165
+ }
166
+ }
167
+ }
168
+ ```
169
+
170
+ ## LLM Agent를 위한 안내
171
+
172
+ <details>
173
+ <summary>LLM Agent를 위한 안내 (클릭하여 펼치기)</summary>
174
+
175
+ 당신이 사용자의 oh-my-opencode 설정을 돕는 LLM Agent라면, 다음 단계를 따르세요:
176
+
177
+ ### 1단계: OpenCode 설치 확인
178
+
179
+ ```bash
180
+ if command -v opencode &> /dev/null; then
181
+ echo "OpenCode $(opencode --version) 설치됨"
182
+ else
183
+ echo "OpenCode가 설치되어 있지 않습니다. 먼저 설치해주세요."
184
+ echo "참고: https://opencode.ai/docs"
185
+ fi
186
+ ```
187
+
188
+ OpenCode가 설치되어 있지 않다면, [OpenCode 설치 가이드](https://opencode.ai/docs)를 안내하세요.
189
+
190
+ ### 2단계: oh-my-opencode 플러그인 설정
191
+
192
+ ```bash
193
+ mkdir -p ~/.config/opencode
194
+
195
+ if [ -f ~/.config/opencode/opencode.json ]; then
196
+ # 기존 설정 파일이 있는 경우: jq 또는 python으로 plugin 추가
197
+ if command -v jq &> /dev/null; then
198
+ jq '.plugin = ((.plugin // []) + ["oh-my-opencode"] | unique)' \
199
+ ~/.config/opencode/opencode.json > /tmp/oc.json && \
200
+ mv /tmp/oc.json ~/.config/opencode/opencode.json
201
+ else
202
+ echo "~/.config/opencode/opencode.json의 plugin 배열에 \"oh-my-opencode\"를 추가하세요"
203
+ fi
204
+ else
205
+ # 새 설정 파일 생성
206
+ echo '{"plugin":["oh-my-opencode"]}' > ~/.config/opencode/opencode.json
207
+ fi
208
+ ```
209
+
210
+ ### 3단계: 설정 확인
211
+
212
+ ```bash
213
+ opencode --version # 1.0.132 이상이어야 함
214
+ cat ~/.config/opencode/opencode.json # plugin 배열에 "oh-my-opencode"가 있어야 함
215
+ ```
216
+
217
+ > **참고**: 모델 인증이 필요하면, `opencode` 실행 후 `/connect` 명령어를 사용하거나, tmux를 통해 `opencode auth login`을 안내하세요.
218
+
219
+ </details>
58
220
 
59
221
  ## Why OpenCode & Why Oh My OpenCode
60
222
 
@@ -93,6 +255,23 @@ OpenCode 는 아주 확장가능하고 아주 커스터마이저블합니다.
93
255
  - **frontend-ui-ux-engineer** (`google/gemini-3-pro-preview`): 개발자로 전향한 디자이너라는 설정을 갖고 있습니다. 멋진 UI를 만듭니다. 아름답고 창의적인 UI 코드를 생성하는 데 탁월한 Gemini를 사용합니다.
94
256
  - **document-writer** (`google/gemini-3-pro-preview`): 기술 문서 전문가라는 설정을 갖고 있습니다. Gemini 는 문학가입니다. 글을 기가막히게 씁니다.
95
257
 
258
+ #### 모델 설정 오버라이드
259
+
260
+ 에이전트들은 [OpenCode의 모델 설정](https://opencode.ai/docs/models/#configure-models)과 완전히 동일한 스펙으로 오버라이드를 지원합니다. 권장하진 않지만, 예를 들어 Anthropic 모델만 사용하기로 결정했다면 이렇게 구성할 수 있습니다:
261
+
262
+ ```json
263
+ {
264
+ "agents": {
265
+ "explore": {
266
+ "model": "anthropic/claude-haiku-4-5"
267
+ },
268
+ "frontend-ui-ux-engineer": {
269
+ "model": "anthropic/claude-opus-4"
270
+ }
271
+ }
272
+ }
273
+ ```
274
+
96
275
  ### Tools
97
276
 
98
277
  #### 내장 LSP Tools
@@ -124,6 +303,7 @@ OpenCode 는 아주 확장가능하고 아주 커스터마이저블합니다.
124
303
  #### 내장 MCPs
125
304
 
126
305
  - **websearch_exa**: Exa AI 웹 검색. 실시간 웹 검색과 콘텐츠 스크래핑을 수행합니다. 관련 웹사이트에서 LLM에 최적화된 컨텍스트를 반환합니다.
306
+ - **context7**: 라이브러리 문서 조회. 정확한 코딩을 위해 최신 라이브러리 문서를 가져옵니다.
127
307
 
128
308
  ### 기타 편의 기능
129
309
  - **Terminal Title**: 세션 상태에 따라 터미널 타이틀을 자동 업데이트합니다 (유휴 ○, 처리중 ◐, 도구 ⚡, 에러 ✖). tmux를 지원합니다.
@@ -153,5 +333,3 @@ OpenCode 를 사용하여 이 프로젝트의 99% 를 작성했습니다. 기능
153
333
 
154
334
  - [1.0.132](https://github.com/sst/opencode/releases/tag/v1.0.132) 혹은 이것보다 낮은 버전을 사용중이라면, OpenCode 의 버그로 인해 제대로 구성이 되지 않을 수 있습니다.
155
335
  - [이를 고치는 PR 이 1.0.132 배포 이후에 병합되었으므로](https://github.com/sst/opencode/pull/5040) 이 변경사항이 포함된 최신 버전을 사용해주세요.
156
-
157
-
package/README.md CHANGED
@@ -3,11 +3,14 @@ English | [한국어](README.ko.md)
3
3
  ## Contents
4
4
 
5
5
  - [Oh My OpenCode](#oh-my-opencode)
6
+ - [TL;DR](#tldr)
6
7
  - [Installation](#installation)
8
+ - [For LLM Agents](#for-llm-agents)
7
9
  - [Configuration](#configuration)
8
10
  - [Disable specific MCPs](#disable-specific-mcps)
9
- - [TL;DR](#tldr)
10
- - [Why OpenCode \& Why Oh My OpenCode](#why-opencode--why-oh-my-opencode)
11
+ - [Disable specific Agents](#disable-specific-agents)
12
+ - [Agent Configuration](#agent-configuration)
13
+ - [Why OpenCode & Why Oh My OpenCode](#why-opencode--why-oh-my-opencode)
11
14
  - [Features](#features)
12
15
  - [Hooks](#hooks)
13
16
  - [Agents](#agents)
@@ -33,6 +36,17 @@ You don't write code just for a paycheck? You write because you genuinely love i
33
36
 
34
37
  To you, OpenCode will feel like the paradigm shift from Windows to Linux. Not you? It's still worth the investment. Give it 10 minutes. Your work and life will improve. I promise.
35
38
 
39
+ ## TL;DR
40
+
41
+ - **Model Setup Required**
42
+ - This plugin utilizes models from [OpenCode Zen](https://opencode.ai/docs/zen/), Google, OpenAI, and Anthropic.
43
+ - For Anthropic models, use [OpenCode's built-in Claude Code Max Plan login](https://opencode.ai/docs/providers/#anthropic).
44
+ - For OpenAI models, I recommend the [OpenCode-OpenAI-Codex-Auth plugin](https://github.com/numman-ali/opencode-openai-codex-auth).
45
+ - For Gemini and GPT, use [VibeProxy (macOS Only)](https://github.com/automazeio/vibeproxy) or [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI).
46
+ - **Truth be told, the rest is optional. Just install it. Once set up, no further learning is required. It simply evolves.**
47
+ - **Paste this document into Claude Code, OpenCode, or Cursor, instruct it to install, and ask for assistance if needed. It works seamlessly.**
48
+ - If you are an LLM Agent, install the required plugins and dependencies, then run `opencode auth login` via tmux to assist the user with configuration.
49
+
36
50
  ## Installation
37
51
 
38
52
  Add to `~/.config/opencode/opencode.json`:
@@ -45,49 +59,176 @@ Add to `~/.config/opencode/opencode.json`:
45
59
  }
46
60
  ```
47
61
 
62
+ ## For LLM Agents
63
+
64
+ <details>
65
+ <summary>For LLM Agents (Click to expand)</summary>
66
+
67
+ If you are an LLM Agent helping a user set up oh-my-opencode, follow these steps:
68
+
69
+ ### Step 1: Verify OpenCode Installation
70
+
71
+ ```bash
72
+ if command -v opencode &> /dev/null; then
73
+ echo "OpenCode $(opencode --version) is installed"
74
+ else
75
+ echo "OpenCode is not installed. Please install it first."
76
+ echo "See: https://opencode.ai/docs"
77
+ fi
78
+ ```
79
+
80
+ If OpenCode is not installed, guide the user to [OpenCode Installation Guide](https://opencode.ai/docs).
81
+
82
+ ### Step 2: Configure oh-my-opencode Plugin
83
+
84
+ ```bash
85
+ mkdir -p ~/.config/opencode
86
+
87
+ if [ -f ~/.config/opencode/opencode.json ]; then
88
+ # Existing config: add plugin using jq or python
89
+ if command -v jq &> /dev/null; then
90
+ jq '.plugin = ((.plugin // []) + ["oh-my-opencode"] | unique)' \
91
+ ~/.config/opencode/opencode.json > /tmp/oc.json && \
92
+ mv /tmp/oc.json ~/.config/opencode/opencode.json
93
+ else
94
+ echo "Add \"oh-my-opencode\" to plugin array in ~/.config/opencode/opencode.json"
95
+ fi
96
+ else
97
+ # New config
98
+ echo '{"plugin":["oh-my-opencode"]}' > ~/.config/opencode/opencode.json
99
+ fi
100
+ ```
101
+
102
+ ### Step 3: Verify Setup
103
+
104
+ ```bash
105
+ opencode --version # Should be >= 1.0.132
106
+ cat ~/.config/opencode/opencode.json # Should contain "oh-my-opencode" in plugin array
107
+ ```
108
+
109
+ > **Note**: If model authentication is needed, run `opencode` and use `/connect` command, or assist the user with `opencode auth login` via tmux.
110
+
111
+ </details>
112
+
48
113
  ## Configuration
49
114
 
50
115
  You can configure Oh My OpenCode by creating a `oh-my-opencode.json` (or `.oh-my-opencode.json`) file in your project root.
51
116
 
52
- ### JSON Schema Support
117
+ Configuration supports autocomplete via schema. Details are covered in each feature section below.
53
118
 
54
- For autocompletion and validation in VS Code (or other editors), add the `$schema` property to your configuration file.
119
+ ```json
120
+ {
121
+ "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/dist/oh-my-opencode.schema.json"
122
+ }
123
+ ```
124
+
125
+ ### Disable specific MCPs
126
+
127
+ If you want to disable specific built-in MCPs, you can use the `disabled_mcps` option.
55
128
 
56
- **Using Remote Schema (Recommended):**
57
129
  ```json
58
130
  {
59
- "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/dist/oh-my-opencode.schema.json",
60
- "disabled_mcps": ["context7"]
131
+ "disabled_mcps": ["context7", "websearch_exa"]
61
132
  }
62
133
  ```
63
134
 
64
- **Using Local Schema:**
135
+ ### Disable specific Agents
136
+
137
+ If you want to disable specific built-in agents, you can use the `disabled_agents` option.
138
+
65
139
  ```json
66
140
  {
67
- "$schema": "./node_modules/oh-my-opencode/dist/oh-my-opencode.schema.json"
141
+ "disabled_agents": ["explore", "frontend-ui-ux-engineer"]
68
142
  }
69
143
  ```
70
144
 
71
- ### Disable specific MCPs
145
+ Available agents: `oracle`, `librarian`, `explore`, `frontend-ui-ux-engineer`, `document-writer`
72
146
 
73
- If you want to disable specific built-in MCPs, you can use the `disabled_mcps` option.
147
+ ### Agent Configuration
148
+
149
+ You can override the configuration of any built-in agent using the `agents` option. This allows you to change models, adjust creativity, modify permissions, or disable agents individually.
150
+
151
+ #### Configuration Options
152
+
153
+ | Option | Type | Description |
154
+ |--------|------|-------------|
155
+ | `model` | string | Override the default model (e.g., "anthropic/claude-sonnet-4") |
156
+ | `temperature` | number (0-2) | Controls randomness (0 = deterministic, 2 = creative) |
157
+ | `top_p` | number (0-1) | Nucleus sampling parameter |
158
+ | `prompt` | string | Additional system prompt to append |
159
+ | `tools` | object | Enable/disable specific tools (e.g., `{"websearch_exa": false}`) |
160
+ | `disable` | boolean | Completely disable the agent |
161
+ | `description` | string | Override agent description |
162
+ | `mode` | "subagent" | "primary" | "all" | When agent is available |
163
+ | `color` | string | Hex color code for terminal output (e.g., "#FF0000") |
164
+ | `permission` | object | Permission settings for sensitive operations |
165
+
166
+ #### Permission Options
167
+
168
+ | Option | Values | Description |
169
+ |--------|--------|-------------|
170
+ | `edit` | "ask" | "allow" | "deny" | File modification permissions |
171
+ | `bash` | "ask" | "allow" | "deny" | object | Shell command execution permissions |
172
+ | `webfetch` | "ask" | "allow" | "deny" | Web access permissions |
173
+ | `doom_loop` | "ask" | "allow" | "deny" | Infinite loop prevention |
174
+ | `external_directory` | "ask" | "allow" | "deny" | Access outside project root |
175
+
176
+ #### Examples
177
+
178
+ **Using Only Anthropic Models**
179
+
180
+ This configuration forces all agents to use Anthropic models, suitable for users with only Anthropic API access.
74
181
 
75
182
  ```json
76
183
  {
77
- "disabled_mcps": ["context7", "websearch_exa"]
184
+ "agents": {
185
+ "oracle": {
186
+ "model": "anthropic/claude-sonnet-4"
187
+ },
188
+ "librarian": {
189
+ "model": "anthropic/claude-haiku-4-5"
190
+ },
191
+ "explore": {
192
+ "model": "anthropic/claude-haiku-4-5"
193
+ },
194
+ "frontend-ui-ux-engineer": {
195
+ "model": "anthropic/claude-sonnet-4"
196
+ },
197
+ "document-writer": {
198
+ "model": "anthropic/claude-sonnet-4"
199
+ }
200
+ }
78
201
  }
79
202
  ```
80
203
 
81
- ## TL;DR
204
+ **Custom Agent with Additional Prompt**
82
205
 
83
- - **Model Setup Required**
84
- - This plugin utilizes models from [OpenCode Zen](https://opencode.ai/docs/zen/), Google, OpenAI, and Anthropic.
85
- - For Anthropic models, use [OpenCode's built-in Claude Code Max Plan login](https://opencode.ai/docs/providers/#anthropic).
86
- - For OpenAI models, I recommend the [OpenCode-OpenAI-Codex-Auth plugin](https://github.com/numman-ali/opencode-openai-codex-auth).
87
- - For Gemini and GPT, use [VibeProxy (macOS Only)](https://github.com/automazeio/vibeproxy) or [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI).
88
- - **Truth be told, the rest is optional. Just install it. Once set up, no further learning is required. It simply evolves.**
89
- - **Paste this document into Claude Code, OpenCode, or Cursor, instruct it to install, and ask for assistance if needed. It works seamlessly.**
90
- - If you are an LLM Agent, install the required plugins and dependencies, then run `opencode auth login` via tmux to assist the user with configuration.
206
+ Inject custom instructions into an agent's system prompt.
207
+
208
+ ```json
209
+ {
210
+ "agents": {
211
+ "frontend-ui-ux-engineer": {
212
+ "prompt": "ALWAYS use Tailwind CSS. NEVER use inline styles. Prefer dark mode defaults.",
213
+ "temperature": 0.8
214
+ }
215
+ }
216
+ }
217
+ ```
218
+
219
+ **Disable Agents Individually**
220
+
221
+ You can also disable agents using the `disable` property within the agent config.
222
+
223
+ ```json
224
+ {
225
+ "agents": {
226
+ "explore": {
227
+ "disable": true
228
+ }
229
+ }
230
+ }
231
+ ```
91
232
 
92
233
  ## Why OpenCode & Why Oh My OpenCode
93
234
 
@@ -124,6 +265,23 @@ I believe in the right tool for the job. For your wallet's sake, use CLIProxyAPI
124
265
  - **frontend-ui-ux-engineer** (`google/gemini-3-pro-preview`): A designer turned developer. Creates stunning UIs. Uses Gemini because its creativity and UI code generation are superior.
125
266
  - **document-writer** (`google/gemini-3-pro-preview`): A technical writing expert. Gemini is a wordsmith; it writes prose that flows naturally.
126
267
 
268
+ #### Model Configuration Override
269
+
270
+ Agents follow the exact same model configuration spec as [OpenCode's model configuration](https://opencode.ai/docs/models/#configure-models). While not generally recommended, if you decide to use only Anthropic models, you could configure like this:
271
+
272
+ ```json
273
+ {
274
+ "agents": {
275
+ "explore": {
276
+ "model": "anthropic/claude-haiku-4-5"
277
+ },
278
+ "frontend-ui-ux-engineer": {
279
+ "model": "anthropic/claude-opus-4"
280
+ }
281
+ }
282
+ }
283
+ ```
284
+
127
285
  ### Tools
128
286
 
129
287
  #### Built-in LSP Tools
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Asynchronously get comment-checker binary path.
3
+ * Will trigger lazy download if binary not found.
4
+ */
5
+ export declare function getCommentCheckerPath(): Promise<string | null>;
6
+ /**
7
+ * Synchronously get comment-checker path (no download).
8
+ * Returns cached path or searches known locations.
9
+ */
10
+ export declare function getCommentCheckerPathSync(): string | null;
11
+ /**
12
+ * Start background initialization.
13
+ * Call this early to trigger download while other init happens.
14
+ */
15
+ export declare function startBackgroundInit(): void;
16
+ export declare const COMMENT_CHECKER_CLI_PATH: string | null;
17
+ export interface HookInput {
18
+ session_id: string;
19
+ tool_name: string;
20
+ transcript_path: string;
21
+ cwd: string;
22
+ hook_event_name: string;
23
+ tool_input: {
24
+ file_path?: string;
25
+ content?: string;
26
+ old_string?: string;
27
+ new_string?: string;
28
+ edits?: Array<{
29
+ old_string: string;
30
+ new_string: string;
31
+ }>;
32
+ };
33
+ tool_response?: unknown;
34
+ }
35
+ export interface CheckResult {
36
+ hasComments: boolean;
37
+ message: string;
38
+ }
39
+ /**
40
+ * Run comment-checker CLI with given input.
41
+ * @param input Hook input to check
42
+ * @param cliPath Optional explicit path to CLI binary
43
+ */
44
+ export declare function runCommentChecker(input: HookInput, cliPath?: string): Promise<CheckResult>;
45
+ /**
46
+ * Check if CLI is available (sync check, no download).
47
+ */
48
+ export declare function isCliAvailable(): boolean;
49
+ /**
50
+ * Check if CLI will be available (async, may trigger download).
51
+ */
52
+ export declare function ensureCliAvailable(): Promise<boolean>;
@@ -1,7 +1,3 @@
1
- export declare const EXTENSION_TO_LANGUAGE: Record<string, string>;
2
- export declare const QUERY_TEMPLATES: Record<string, string>;
3
- export declare const DOCSTRING_QUERIES: Record<string, string>;
4
1
  export declare const BDD_KEYWORDS: Set<string>;
5
2
  export declare const TYPE_CHECKER_PREFIXES: string[];
6
3
  export declare const HOOK_MESSAGE_HEADER = "COMMENT/DOCSTRING DETECTED - IMMEDIATE ACTION REQUIRED\n\nYour recent changes contain comments or docstrings, which triggered this hook.\nYou need to take immediate action. You must follow the conditions below.\n(Listed in priority order - you must always act according to this priority order)\n\nCRITICAL WARNING: This hook message MUST NEVER be ignored, even if you receive it multiple times.\nYou MUST provide corresponding explanation or action for EACH occurrence of this message.\nIgnoring this message or failing to respond appropriately is strictly prohibited.\n\nPRIORITY-BASED ACTION GUIDELINES:\n\n1. This is a comment/docstring that already existed before\n\t-> Explain to the user that this is an existing comment/docstring and proceed (justify it)\n\n2. This is a newly written comment: but it's in given, when, then format\n\t-> Tell the user it's a BDD comment and proceed (justify it)\n\t-> Note: This applies to comments only, not docstrings\n\n3. This is a newly written comment/docstring: but it's a necessary comment/docstring\n\t-> Tell the user why this comment/docstring is absolutely necessary and proceed (justify it)\n\t-> Examples of necessary comments: complex algorithms, security-related, performance optimization, regex, mathematical formulas\n\t-> Examples of necessary docstrings: public API documentation, complex module/class interfaces\n\t-> IMPORTANT: Most docstrings are unnecessary if the code is self-explanatory. Only keep truly essential ones.\n\n4. This is a newly written comment/docstring: but it's an unnecessary comment/docstring\n\t-> Apologize to the user and remove the comment/docstring.\n\t-> Make the code itself clearer so it can be understood without comments/docstrings.\n\t-> For verbose docstrings: refactor code to be self-documenting instead of adding lengthy explanations.\n\nMANDATORY REQUIREMENT: You must acknowledge this hook message and take one of the above actions.\nReview in the above priority order and take the corresponding action EVERY TIME this appears.\n\nDetected comments/docstrings:\n";
7
- export declare function getLanguageByExtension(filePath: string): string | null;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Get the cache directory for oh-my-opencode binaries.
3
+ * Follows XDG Base Directory Specification.
4
+ */
5
+ export declare function getCacheDir(): string;
6
+ /**
7
+ * Get the binary name based on platform.
8
+ */
9
+ export declare function getBinaryName(): string;
10
+ /**
11
+ * Get the cached binary path if it exists.
12
+ */
13
+ export declare function getCachedBinaryPath(): string | null;
14
+ /**
15
+ * Download the comment-checker binary from GitHub Releases.
16
+ * Returns the path to the downloaded binary, or null on failure.
17
+ */
18
+ export declare function downloadCommentChecker(): Promise<string | null>;
19
+ /**
20
+ * Ensure the comment-checker binary is available.
21
+ * First checks cache, then downloads if needed.
22
+ * Returns the binary path or null if unavailable.
23
+ */
24
+ export declare function ensureCommentCheckerBinary(): Promise<string | null>;
@@ -7,14 +7,15 @@ export interface CommentInfo {
7
7
  isDocstring: boolean;
8
8
  metadata?: Record<string, string>;
9
9
  }
10
- export interface LanguageConfig {
11
- extensions: string[];
12
- commentQuery: string;
13
- docstringQuery?: string;
14
- }
15
10
  export interface PendingCall {
16
11
  filePath: string;
17
12
  content?: string;
13
+ oldString?: string;
14
+ newString?: string;
15
+ edits?: Array<{
16
+ old_string: string;
17
+ new_string: string;
18
+ }>;
18
19
  tool: "write" | "edit" | "multiedit";
19
20
  sessionID: string;
20
21
  timestamp: number;