oh-my-opencode 0.3.3 → 0.3.4

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
@@ -242,6 +242,32 @@ OpenCode 는 아주 확장가능하고 아주 커스터마이저블합니다.
242
242
 
243
243
  Oh My OpenCode는 Claude Code 설정과 완벽하게 호환됩니다. Claude Code를 사용하셨다면, 기존 설정을 그대로 사용할 수 있습니다.
244
244
 
245
+ #### 호환성 토글
246
+
247
+ 특정 Claude Code 호환 기능을 비활성화하려면 `claude_code` 설정 객체를 사용하세요:
248
+
249
+ ```json
250
+ {
251
+ "claude_code": {
252
+ "mcp": false,
253
+ "commands": false,
254
+ "skills": false,
255
+ "agents": false,
256
+ "hooks": false
257
+ }
258
+ }
259
+ ```
260
+
261
+ | 토글 | `false`일 때 로딩 비활성화 경로 | 영향 받지 않음 |
262
+ |------|-------------------------------|---------------|
263
+ | `mcp` | `~/.claude/.mcp.json`, `./.mcp.json`, `./.claude/.mcp.json` | 내장 MCP (context7, websearch_exa) |
264
+ | `commands` | `~/.claude/commands/*.md`, `./.claude/commands/*.md` | `~/.config/opencode/command/`, `./.opencode/command/` |
265
+ | `skills` | `~/.claude/skills/*/SKILL.md`, `./.claude/skills/*/SKILL.md` | - |
266
+ | `agents` | `~/.claude/agents/*.md`, `./.claude/agents/*.md` | 내장 에이전트 (oracle, librarian 등) |
267
+ | `hooks` | `~/.claude/settings.json`, `./.claude/settings.json`, `./.claude/settings.local.json` | - |
268
+
269
+ 모든 토글은 기본값이 `true` (활성화)입니다. 완전한 Claude Code 호환성을 원하면 `claude_code` 객체를 생략하세요.
270
+
245
271
  #### Hooks 통합
246
272
 
247
273
  Claude Code의 `settings.json` 훅 시스템을 통해 커스텀 스크립트를 실행합니다. Oh My OpenCode는 다음 위치의 훅을 읽고 실행합니다:
package/README.md CHANGED
@@ -240,6 +240,32 @@ Don't need these? Disable them via `oh-my-opencode.json`:
240
240
 
241
241
  Oh My OpenCode provides seamless Claude Code configuration compatibility. If you've been using Claude Code, your existing setup works out of the box.
242
242
 
243
+ #### Compatibility Toggles
244
+
245
+ If you want to disable specific Claude Code compatibility features, use the `claude_code` configuration object:
246
+
247
+ ```json
248
+ {
249
+ "claude_code": {
250
+ "mcp": false,
251
+ "commands": false,
252
+ "skills": false,
253
+ "agents": false,
254
+ "hooks": false
255
+ }
256
+ }
257
+ ```
258
+
259
+ | Toggle | When `false`, disables loading from... | NOT affected |
260
+ |--------|----------------------------------------|--------------|
261
+ | `mcp` | `~/.claude/.mcp.json`, `./.mcp.json`, `./.claude/.mcp.json` | Built-in MCPs (context7, websearch_exa) |
262
+ | `commands` | `~/.claude/commands/*.md`, `./.claude/commands/*.md` | `~/.config/opencode/command/`, `./.opencode/command/` |
263
+ | `skills` | `~/.claude/skills/*/SKILL.md`, `./.claude/skills/*/SKILL.md` | - |
264
+ | `agents` | `~/.claude/agents/*.md`, `./.claude/agents/*.md` | Built-in agents (oracle, librarian, etc.) |
265
+ | `hooks` | `~/.claude/settings.json`, `./.claude/settings.json`, `./.claude/settings.local.json` | - |
266
+
267
+ All toggles default to `true` (enabled). Omit the entire `claude_code` object for full Claude Code compatibility.
268
+
243
269
  #### Hooks Integration
244
270
 
245
271
  Execute custom scripts via Claude Code's `settings.json` hook system. Oh My OpenCode reads and executes hooks defined in:
@@ -52,78 +52,192 @@ export declare const AgentOverrideConfigSchema: z.ZodObject<{
52
52
  }>>;
53
53
  }, z.core.$strip>>;
54
54
  }, z.core.$strip>;
55
- export declare const AgentOverridesSchema: z.ZodRecord<z.ZodEnum<{
56
- oracle: "oracle";
57
- librarian: "librarian";
58
- explore: "explore";
59
- "frontend-ui-ux-engineer": "frontend-ui-ux-engineer";
60
- "document-writer": "document-writer";
61
- }>, z.ZodObject<{
62
- model: z.ZodOptional<z.ZodString>;
63
- temperature: z.ZodOptional<z.ZodNumber>;
64
- top_p: z.ZodOptional<z.ZodNumber>;
65
- prompt: z.ZodOptional<z.ZodString>;
66
- tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
67
- disable: z.ZodOptional<z.ZodBoolean>;
68
- description: z.ZodOptional<z.ZodString>;
69
- mode: z.ZodOptional<z.ZodEnum<{
70
- subagent: "subagent";
71
- primary: "primary";
72
- all: "all";
73
- }>>;
74
- color: z.ZodOptional<z.ZodString>;
75
- permission: z.ZodOptional<z.ZodObject<{
76
- edit: z.ZodOptional<z.ZodEnum<{
77
- ask: "ask";
78
- allow: "allow";
79
- deny: "deny";
55
+ export declare const AgentOverridesSchema: z.ZodObject<{
56
+ oracle: z.ZodOptional<z.ZodOptional<z.ZodObject<{
57
+ model: z.ZodOptional<z.ZodString>;
58
+ temperature: z.ZodOptional<z.ZodNumber>;
59
+ top_p: z.ZodOptional<z.ZodNumber>;
60
+ prompt: z.ZodOptional<z.ZodString>;
61
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
62
+ disable: z.ZodOptional<z.ZodBoolean>;
63
+ description: z.ZodOptional<z.ZodString>;
64
+ mode: z.ZodOptional<z.ZodEnum<{
65
+ subagent: "subagent";
66
+ primary: "primary";
67
+ all: "all";
80
68
  }>>;
81
- bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
82
- ask: "ask";
83
- allow: "allow";
84
- deny: "deny";
85
- }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
86
- ask: "ask";
87
- allow: "allow";
88
- deny: "deny";
89
- }>>]>>;
90
- webfetch: z.ZodOptional<z.ZodEnum<{
91
- ask: "ask";
92
- allow: "allow";
93
- deny: "deny";
69
+ color: z.ZodOptional<z.ZodString>;
70
+ permission: z.ZodOptional<z.ZodObject<{
71
+ edit: z.ZodOptional<z.ZodEnum<{
72
+ ask: "ask";
73
+ allow: "allow";
74
+ deny: "deny";
75
+ }>>;
76
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
77
+ ask: "ask";
78
+ allow: "allow";
79
+ deny: "deny";
80
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
81
+ ask: "ask";
82
+ allow: "allow";
83
+ deny: "deny";
84
+ }>>]>>;
85
+ webfetch: z.ZodOptional<z.ZodEnum<{
86
+ ask: "ask";
87
+ allow: "allow";
88
+ deny: "deny";
89
+ }>>;
90
+ doom_loop: z.ZodOptional<z.ZodEnum<{
91
+ ask: "ask";
92
+ allow: "allow";
93
+ deny: "deny";
94
+ }>>;
95
+ external_directory: z.ZodOptional<z.ZodEnum<{
96
+ ask: "ask";
97
+ allow: "allow";
98
+ deny: "deny";
99
+ }>>;
100
+ }, z.core.$strip>>;
101
+ }, z.core.$strip>>>;
102
+ librarian: z.ZodOptional<z.ZodOptional<z.ZodObject<{
103
+ model: z.ZodOptional<z.ZodString>;
104
+ temperature: z.ZodOptional<z.ZodNumber>;
105
+ top_p: z.ZodOptional<z.ZodNumber>;
106
+ prompt: z.ZodOptional<z.ZodString>;
107
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
108
+ disable: z.ZodOptional<z.ZodBoolean>;
109
+ description: z.ZodOptional<z.ZodString>;
110
+ mode: z.ZodOptional<z.ZodEnum<{
111
+ subagent: "subagent";
112
+ primary: "primary";
113
+ all: "all";
94
114
  }>>;
95
- doom_loop: z.ZodOptional<z.ZodEnum<{
96
- ask: "ask";
97
- allow: "allow";
98
- deny: "deny";
115
+ color: z.ZodOptional<z.ZodString>;
116
+ permission: z.ZodOptional<z.ZodObject<{
117
+ edit: z.ZodOptional<z.ZodEnum<{
118
+ ask: "ask";
119
+ allow: "allow";
120
+ deny: "deny";
121
+ }>>;
122
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
123
+ ask: "ask";
124
+ allow: "allow";
125
+ deny: "deny";
126
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
127
+ ask: "ask";
128
+ allow: "allow";
129
+ deny: "deny";
130
+ }>>]>>;
131
+ webfetch: z.ZodOptional<z.ZodEnum<{
132
+ ask: "ask";
133
+ allow: "allow";
134
+ deny: "deny";
135
+ }>>;
136
+ doom_loop: z.ZodOptional<z.ZodEnum<{
137
+ ask: "ask";
138
+ allow: "allow";
139
+ deny: "deny";
140
+ }>>;
141
+ external_directory: z.ZodOptional<z.ZodEnum<{
142
+ ask: "ask";
143
+ allow: "allow";
144
+ deny: "deny";
145
+ }>>;
146
+ }, z.core.$strip>>;
147
+ }, z.core.$strip>>>;
148
+ explore: z.ZodOptional<z.ZodOptional<z.ZodObject<{
149
+ model: z.ZodOptional<z.ZodString>;
150
+ temperature: z.ZodOptional<z.ZodNumber>;
151
+ top_p: z.ZodOptional<z.ZodNumber>;
152
+ prompt: z.ZodOptional<z.ZodString>;
153
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
154
+ disable: z.ZodOptional<z.ZodBoolean>;
155
+ description: z.ZodOptional<z.ZodString>;
156
+ mode: z.ZodOptional<z.ZodEnum<{
157
+ subagent: "subagent";
158
+ primary: "primary";
159
+ all: "all";
99
160
  }>>;
100
- external_directory: z.ZodOptional<z.ZodEnum<{
101
- ask: "ask";
102
- allow: "allow";
103
- deny: "deny";
161
+ color: z.ZodOptional<z.ZodString>;
162
+ permission: z.ZodOptional<z.ZodObject<{
163
+ edit: z.ZodOptional<z.ZodEnum<{
164
+ ask: "ask";
165
+ allow: "allow";
166
+ deny: "deny";
167
+ }>>;
168
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
169
+ ask: "ask";
170
+ allow: "allow";
171
+ deny: "deny";
172
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
173
+ ask: "ask";
174
+ allow: "allow";
175
+ deny: "deny";
176
+ }>>]>>;
177
+ webfetch: z.ZodOptional<z.ZodEnum<{
178
+ ask: "ask";
179
+ allow: "allow";
180
+ deny: "deny";
181
+ }>>;
182
+ doom_loop: z.ZodOptional<z.ZodEnum<{
183
+ ask: "ask";
184
+ allow: "allow";
185
+ deny: "deny";
186
+ }>>;
187
+ external_directory: z.ZodOptional<z.ZodEnum<{
188
+ ask: "ask";
189
+ allow: "allow";
190
+ deny: "deny";
191
+ }>>;
192
+ }, z.core.$strip>>;
193
+ }, z.core.$strip>>>;
194
+ "frontend-ui-ux-engineer": z.ZodOptional<z.ZodOptional<z.ZodObject<{
195
+ model: z.ZodOptional<z.ZodString>;
196
+ temperature: z.ZodOptional<z.ZodNumber>;
197
+ top_p: z.ZodOptional<z.ZodNumber>;
198
+ prompt: z.ZodOptional<z.ZodString>;
199
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
200
+ disable: z.ZodOptional<z.ZodBoolean>;
201
+ description: z.ZodOptional<z.ZodString>;
202
+ mode: z.ZodOptional<z.ZodEnum<{
203
+ subagent: "subagent";
204
+ primary: "primary";
205
+ all: "all";
104
206
  }>>;
105
- }, z.core.$strip>>;
106
- }, z.core.$strip>>;
107
- export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
108
- $schema: z.ZodOptional<z.ZodString>;
109
- disabled_mcps: z.ZodOptional<z.ZodArray<z.ZodEnum<{
110
- websearch_exa: "websearch_exa";
111
- context7: "context7";
112
- }>>>;
113
- disabled_agents: z.ZodOptional<z.ZodArray<z.ZodEnum<{
114
- oracle: "oracle";
115
- librarian: "librarian";
116
- explore: "explore";
117
- "frontend-ui-ux-engineer": "frontend-ui-ux-engineer";
118
- "document-writer": "document-writer";
119
- }>>>;
120
- agents: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
121
- oracle: "oracle";
122
- librarian: "librarian";
123
- explore: "explore";
124
- "frontend-ui-ux-engineer": "frontend-ui-ux-engineer";
125
- "document-writer": "document-writer";
126
- }>, z.ZodObject<{
207
+ color: z.ZodOptional<z.ZodString>;
208
+ permission: z.ZodOptional<z.ZodObject<{
209
+ edit: z.ZodOptional<z.ZodEnum<{
210
+ ask: "ask";
211
+ allow: "allow";
212
+ deny: "deny";
213
+ }>>;
214
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
215
+ ask: "ask";
216
+ allow: "allow";
217
+ deny: "deny";
218
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
219
+ ask: "ask";
220
+ allow: "allow";
221
+ deny: "deny";
222
+ }>>]>>;
223
+ webfetch: z.ZodOptional<z.ZodEnum<{
224
+ ask: "ask";
225
+ allow: "allow";
226
+ deny: "deny";
227
+ }>>;
228
+ doom_loop: z.ZodOptional<z.ZodEnum<{
229
+ ask: "ask";
230
+ allow: "allow";
231
+ deny: "deny";
232
+ }>>;
233
+ external_directory: z.ZodOptional<z.ZodEnum<{
234
+ ask: "ask";
235
+ allow: "allow";
236
+ deny: "deny";
237
+ }>>;
238
+ }, z.core.$strip>>;
239
+ }, z.core.$strip>>>;
240
+ "document-writer": z.ZodOptional<z.ZodOptional<z.ZodObject<{
127
241
  model: z.ZodOptional<z.ZodString>;
128
242
  temperature: z.ZodOptional<z.ZodNumber>;
129
243
  top_p: z.ZodOptional<z.ZodNumber>;
@@ -170,6 +284,266 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
170
284
  }, z.core.$strip>>;
171
285
  }, z.core.$strip>>>;
172
286
  }, z.core.$strip>;
287
+ export declare const ClaudeCodeConfigSchema: z.ZodObject<{
288
+ mcp: z.ZodOptional<z.ZodBoolean>;
289
+ commands: z.ZodOptional<z.ZodBoolean>;
290
+ skills: z.ZodOptional<z.ZodBoolean>;
291
+ agents: z.ZodOptional<z.ZodBoolean>;
292
+ hooks: z.ZodOptional<z.ZodBoolean>;
293
+ }, z.core.$strip>;
294
+ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
295
+ $schema: z.ZodOptional<z.ZodString>;
296
+ disabled_mcps: z.ZodOptional<z.ZodArray<z.ZodEnum<{
297
+ websearch_exa: "websearch_exa";
298
+ context7: "context7";
299
+ }>>>;
300
+ disabled_agents: z.ZodOptional<z.ZodArray<z.ZodEnum<{
301
+ oracle: "oracle";
302
+ librarian: "librarian";
303
+ explore: "explore";
304
+ "frontend-ui-ux-engineer": "frontend-ui-ux-engineer";
305
+ "document-writer": "document-writer";
306
+ }>>>;
307
+ agents: z.ZodOptional<z.ZodObject<{
308
+ oracle: z.ZodOptional<z.ZodOptional<z.ZodObject<{
309
+ model: z.ZodOptional<z.ZodString>;
310
+ temperature: z.ZodOptional<z.ZodNumber>;
311
+ top_p: z.ZodOptional<z.ZodNumber>;
312
+ prompt: z.ZodOptional<z.ZodString>;
313
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
314
+ disable: z.ZodOptional<z.ZodBoolean>;
315
+ description: z.ZodOptional<z.ZodString>;
316
+ mode: z.ZodOptional<z.ZodEnum<{
317
+ subagent: "subagent";
318
+ primary: "primary";
319
+ all: "all";
320
+ }>>;
321
+ color: z.ZodOptional<z.ZodString>;
322
+ permission: z.ZodOptional<z.ZodObject<{
323
+ edit: z.ZodOptional<z.ZodEnum<{
324
+ ask: "ask";
325
+ allow: "allow";
326
+ deny: "deny";
327
+ }>>;
328
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
329
+ ask: "ask";
330
+ allow: "allow";
331
+ deny: "deny";
332
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
333
+ ask: "ask";
334
+ allow: "allow";
335
+ deny: "deny";
336
+ }>>]>>;
337
+ webfetch: z.ZodOptional<z.ZodEnum<{
338
+ ask: "ask";
339
+ allow: "allow";
340
+ deny: "deny";
341
+ }>>;
342
+ doom_loop: z.ZodOptional<z.ZodEnum<{
343
+ ask: "ask";
344
+ allow: "allow";
345
+ deny: "deny";
346
+ }>>;
347
+ external_directory: z.ZodOptional<z.ZodEnum<{
348
+ ask: "ask";
349
+ allow: "allow";
350
+ deny: "deny";
351
+ }>>;
352
+ }, z.core.$strip>>;
353
+ }, z.core.$strip>>>;
354
+ librarian: z.ZodOptional<z.ZodOptional<z.ZodObject<{
355
+ model: z.ZodOptional<z.ZodString>;
356
+ temperature: z.ZodOptional<z.ZodNumber>;
357
+ top_p: z.ZodOptional<z.ZodNumber>;
358
+ prompt: z.ZodOptional<z.ZodString>;
359
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
360
+ disable: z.ZodOptional<z.ZodBoolean>;
361
+ description: z.ZodOptional<z.ZodString>;
362
+ mode: z.ZodOptional<z.ZodEnum<{
363
+ subagent: "subagent";
364
+ primary: "primary";
365
+ all: "all";
366
+ }>>;
367
+ color: z.ZodOptional<z.ZodString>;
368
+ permission: z.ZodOptional<z.ZodObject<{
369
+ edit: z.ZodOptional<z.ZodEnum<{
370
+ ask: "ask";
371
+ allow: "allow";
372
+ deny: "deny";
373
+ }>>;
374
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
375
+ ask: "ask";
376
+ allow: "allow";
377
+ deny: "deny";
378
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
379
+ ask: "ask";
380
+ allow: "allow";
381
+ deny: "deny";
382
+ }>>]>>;
383
+ webfetch: z.ZodOptional<z.ZodEnum<{
384
+ ask: "ask";
385
+ allow: "allow";
386
+ deny: "deny";
387
+ }>>;
388
+ doom_loop: z.ZodOptional<z.ZodEnum<{
389
+ ask: "ask";
390
+ allow: "allow";
391
+ deny: "deny";
392
+ }>>;
393
+ external_directory: z.ZodOptional<z.ZodEnum<{
394
+ ask: "ask";
395
+ allow: "allow";
396
+ deny: "deny";
397
+ }>>;
398
+ }, z.core.$strip>>;
399
+ }, z.core.$strip>>>;
400
+ explore: z.ZodOptional<z.ZodOptional<z.ZodObject<{
401
+ model: z.ZodOptional<z.ZodString>;
402
+ temperature: z.ZodOptional<z.ZodNumber>;
403
+ top_p: z.ZodOptional<z.ZodNumber>;
404
+ prompt: z.ZodOptional<z.ZodString>;
405
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
406
+ disable: z.ZodOptional<z.ZodBoolean>;
407
+ description: z.ZodOptional<z.ZodString>;
408
+ mode: z.ZodOptional<z.ZodEnum<{
409
+ subagent: "subagent";
410
+ primary: "primary";
411
+ all: "all";
412
+ }>>;
413
+ color: z.ZodOptional<z.ZodString>;
414
+ permission: z.ZodOptional<z.ZodObject<{
415
+ edit: z.ZodOptional<z.ZodEnum<{
416
+ ask: "ask";
417
+ allow: "allow";
418
+ deny: "deny";
419
+ }>>;
420
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
421
+ ask: "ask";
422
+ allow: "allow";
423
+ deny: "deny";
424
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
425
+ ask: "ask";
426
+ allow: "allow";
427
+ deny: "deny";
428
+ }>>]>>;
429
+ webfetch: z.ZodOptional<z.ZodEnum<{
430
+ ask: "ask";
431
+ allow: "allow";
432
+ deny: "deny";
433
+ }>>;
434
+ doom_loop: z.ZodOptional<z.ZodEnum<{
435
+ ask: "ask";
436
+ allow: "allow";
437
+ deny: "deny";
438
+ }>>;
439
+ external_directory: z.ZodOptional<z.ZodEnum<{
440
+ ask: "ask";
441
+ allow: "allow";
442
+ deny: "deny";
443
+ }>>;
444
+ }, z.core.$strip>>;
445
+ }, z.core.$strip>>>;
446
+ "frontend-ui-ux-engineer": z.ZodOptional<z.ZodOptional<z.ZodObject<{
447
+ model: z.ZodOptional<z.ZodString>;
448
+ temperature: z.ZodOptional<z.ZodNumber>;
449
+ top_p: z.ZodOptional<z.ZodNumber>;
450
+ prompt: z.ZodOptional<z.ZodString>;
451
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
452
+ disable: z.ZodOptional<z.ZodBoolean>;
453
+ description: z.ZodOptional<z.ZodString>;
454
+ mode: z.ZodOptional<z.ZodEnum<{
455
+ subagent: "subagent";
456
+ primary: "primary";
457
+ all: "all";
458
+ }>>;
459
+ color: z.ZodOptional<z.ZodString>;
460
+ permission: z.ZodOptional<z.ZodObject<{
461
+ edit: z.ZodOptional<z.ZodEnum<{
462
+ ask: "ask";
463
+ allow: "allow";
464
+ deny: "deny";
465
+ }>>;
466
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
467
+ ask: "ask";
468
+ allow: "allow";
469
+ deny: "deny";
470
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
471
+ ask: "ask";
472
+ allow: "allow";
473
+ deny: "deny";
474
+ }>>]>>;
475
+ webfetch: z.ZodOptional<z.ZodEnum<{
476
+ ask: "ask";
477
+ allow: "allow";
478
+ deny: "deny";
479
+ }>>;
480
+ doom_loop: z.ZodOptional<z.ZodEnum<{
481
+ ask: "ask";
482
+ allow: "allow";
483
+ deny: "deny";
484
+ }>>;
485
+ external_directory: z.ZodOptional<z.ZodEnum<{
486
+ ask: "ask";
487
+ allow: "allow";
488
+ deny: "deny";
489
+ }>>;
490
+ }, z.core.$strip>>;
491
+ }, z.core.$strip>>>;
492
+ "document-writer": z.ZodOptional<z.ZodOptional<z.ZodObject<{
493
+ model: z.ZodOptional<z.ZodString>;
494
+ temperature: z.ZodOptional<z.ZodNumber>;
495
+ top_p: z.ZodOptional<z.ZodNumber>;
496
+ prompt: z.ZodOptional<z.ZodString>;
497
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
498
+ disable: z.ZodOptional<z.ZodBoolean>;
499
+ description: z.ZodOptional<z.ZodString>;
500
+ mode: z.ZodOptional<z.ZodEnum<{
501
+ subagent: "subagent";
502
+ primary: "primary";
503
+ all: "all";
504
+ }>>;
505
+ color: z.ZodOptional<z.ZodString>;
506
+ permission: z.ZodOptional<z.ZodObject<{
507
+ edit: z.ZodOptional<z.ZodEnum<{
508
+ ask: "ask";
509
+ allow: "allow";
510
+ deny: "deny";
511
+ }>>;
512
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
513
+ ask: "ask";
514
+ allow: "allow";
515
+ deny: "deny";
516
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
517
+ ask: "ask";
518
+ allow: "allow";
519
+ deny: "deny";
520
+ }>>]>>;
521
+ webfetch: z.ZodOptional<z.ZodEnum<{
522
+ ask: "ask";
523
+ allow: "allow";
524
+ deny: "deny";
525
+ }>>;
526
+ doom_loop: z.ZodOptional<z.ZodEnum<{
527
+ ask: "ask";
528
+ allow: "allow";
529
+ deny: "deny";
530
+ }>>;
531
+ external_directory: z.ZodOptional<z.ZodEnum<{
532
+ ask: "ask";
533
+ allow: "allow";
534
+ deny: "deny";
535
+ }>>;
536
+ }, z.core.$strip>>;
537
+ }, z.core.$strip>>>;
538
+ }, z.core.$strip>>;
539
+ claude_code: z.ZodOptional<z.ZodObject<{
540
+ mcp: z.ZodOptional<z.ZodBoolean>;
541
+ commands: z.ZodOptional<z.ZodBoolean>;
542
+ skills: z.ZodOptional<z.ZodBoolean>;
543
+ agents: z.ZodOptional<z.ZodBoolean>;
544
+ hooks: z.ZodOptional<z.ZodBoolean>;
545
+ }, z.core.$strip>>;
546
+ }, z.core.$strip>;
173
547
  export type OhMyOpenCodeConfig = z.infer<typeof OhMyOpenCodeConfigSchema>;
174
548
  export type AgentOverrideConfig = z.infer<typeof AgentOverrideConfigSchema>;
175
549
  export type AgentOverrides = z.infer<typeof AgentOverridesSchema>;
package/dist/index.js CHANGED
@@ -19796,12 +19796,26 @@ var AgentOverrideConfigSchema = exports_external.object({
19796
19796
  color: exports_external.string().regex(/^#[0-9A-Fa-f]{6}$/).optional(),
19797
19797
  permission: AgentPermissionSchema.optional()
19798
19798
  });
19799
- var AgentOverridesSchema = exports_external.record(AgentNameSchema, AgentOverrideConfigSchema);
19799
+ var AgentOverridesSchema = exports_external.object({
19800
+ oracle: AgentOverrideConfigSchema.optional(),
19801
+ librarian: AgentOverrideConfigSchema.optional(),
19802
+ explore: AgentOverrideConfigSchema.optional(),
19803
+ "frontend-ui-ux-engineer": AgentOverrideConfigSchema.optional(),
19804
+ "document-writer": AgentOverrideConfigSchema.optional()
19805
+ }).partial();
19806
+ var ClaudeCodeConfigSchema = exports_external.object({
19807
+ mcp: exports_external.boolean().optional(),
19808
+ commands: exports_external.boolean().optional(),
19809
+ skills: exports_external.boolean().optional(),
19810
+ agents: exports_external.boolean().optional(),
19811
+ hooks: exports_external.boolean().optional()
19812
+ });
19800
19813
  var OhMyOpenCodeConfigSchema = exports_external.object({
19801
19814
  $schema: exports_external.string().optional(),
19802
19815
  disabled_mcps: exports_external.array(McpNameSchema).optional(),
19803
19816
  disabled_agents: exports_external.array(AgentNameSchema).optional(),
19804
- agents: AgentOverridesSchema.optional()
19817
+ agents: AgentOverridesSchema.optional(),
19818
+ claude_code: ClaudeCodeConfigSchema.optional()
19805
19819
  });
19806
19820
  // src/index.ts
19807
19821
  import * as fs4 from "fs";
@@ -19847,7 +19861,8 @@ function mergeConfigs(base, override) {
19847
19861
  ...base.disabled_mcps ?? [],
19848
19862
  ...override.disabled_mcps ?? []
19849
19863
  ])
19850
- ]
19864
+ ],
19865
+ claude_code: override.claude_code !== undefined || base.claude_code !== undefined ? { ...base.claude_code ?? {}, ...override.claude_code ?? {} } : undefined
19851
19866
  };
19852
19867
  }
19853
19868
  function loadPluginConfig(directory) {
@@ -19861,7 +19876,8 @@ function loadPluginConfig(directory) {
19861
19876
  log("Final merged config", {
19862
19877
  agents: config3.agents,
19863
19878
  disabled_agents: config3.disabled_agents,
19864
- disabled_mcps: config3.disabled_mcps
19879
+ disabled_mcps: config3.disabled_mcps,
19880
+ claude_code: config3.claude_code
19865
19881
  });
19866
19882
  return config3;
19867
19883
  }
@@ -19876,7 +19892,9 @@ var OhMyOpenCodePlugin = async (ctx) => {
19876
19892
  const directoryReadmeInjector = createDirectoryReadmeInjectorHook(ctx);
19877
19893
  const emptyTaskResponseDetector = createEmptyTaskResponseDetectorHook(ctx);
19878
19894
  const thinkMode = createThinkModeHook();
19879
- const claudeCodeHooks = createClaudeCodeHooksHook(ctx, {});
19895
+ const claudeCodeHooks = createClaudeCodeHooksHook(ctx, {
19896
+ disabledHooks: pluginConfig.claude_code?.hooks ?? true ? undefined : true
19897
+ });
19880
19898
  const anthropicAutoCompact = createAnthropicAutoCompactHook(ctx);
19881
19899
  updateTerminalTitle({ sessionId: "main" });
19882
19900
  return {
@@ -19886,8 +19904,8 @@ var OhMyOpenCodePlugin = async (ctx) => {
19886
19904
  },
19887
19905
  config: async (config3) => {
19888
19906
  const builtinAgents = createBuiltinAgents(pluginConfig.disabled_agents, pluginConfig.agents);
19889
- const userAgents = loadUserAgents();
19890
- const projectAgents = loadProjectAgents();
19907
+ const userAgents = pluginConfig.claude_code?.agents ?? true ? loadUserAgents() : {};
19908
+ const projectAgents = pluginConfig.claude_code?.agents ?? true ? loadProjectAgents() : {};
19891
19909
  config3.agent = {
19892
19910
  ...builtinAgents,
19893
19911
  ...userAgents,
@@ -19897,19 +19915,19 @@ var OhMyOpenCodePlugin = async (ctx) => {
19897
19915
  config3.tools = {
19898
19916
  ...config3.tools
19899
19917
  };
19900
- const mcpResult = await loadMcpConfigs();
19918
+ const mcpResult = pluginConfig.claude_code?.mcp ?? true ? await loadMcpConfigs() : { servers: {} };
19901
19919
  config3.mcp = {
19902
19920
  ...config3.mcp,
19903
19921
  ...createBuiltinMcps(pluginConfig.disabled_mcps),
19904
19922
  ...mcpResult.servers
19905
19923
  };
19906
- const userCommands = loadUserCommands();
19924
+ const userCommands = pluginConfig.claude_code?.commands ?? true ? loadUserCommands() : {};
19907
19925
  const opencodeGlobalCommands = loadOpencodeGlobalCommands();
19908
19926
  const systemCommands = config3.command ?? {};
19909
- const projectCommands = loadProjectCommands();
19927
+ const projectCommands = pluginConfig.claude_code?.commands ?? true ? loadProjectCommands() : {};
19910
19928
  const opencodeProjectCommands = loadOpencodeProjectCommands();
19911
- const userSkills = loadUserSkillsAsCommands();
19912
- const projectSkills = loadProjectSkillsAsCommands();
19929
+ const userSkills = pluginConfig.claude_code?.skills ?? true ? loadUserSkillsAsCommands() : {};
19930
+ const projectSkills = pluginConfig.claude_code?.skills ?? true ? loadProjectSkillsAsCommands() : {};
19913
19931
  config3.command = {
19914
19932
  ...userCommands,
19915
19933
  ...userSkills,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "0.3.3",
3
+ "version": "0.3.4",
4
4
  "description": "OpenCode plugin - custom agents (oracle, librarian) and enhanced features",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",