opencodekit 0.15.9 → 0.15.10

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.
Files changed (49) hide show
  1. package/dist/index.js +9 -7
  2. package/dist/template/.opencode/AGENTS.md +7 -2
  3. package/dist/template/.opencode/agent/general.md +1 -0
  4. package/dist/template/.opencode/agent/looker.md +1 -0
  5. package/dist/template/.opencode/agent/painter.md +218 -0
  6. package/dist/template/.opencode/agent/plan.md +3 -0
  7. package/dist/template/.opencode/agent/vision.md +1 -0
  8. package/dist/template/.opencode/command/edit-image.md +1 -2
  9. package/dist/template/.opencode/command/generate-icon.md +1 -2
  10. package/dist/template/.opencode/command/generate-image.md +1 -2
  11. package/dist/template/.opencode/command/generate-pattern.md +1 -2
  12. package/dist/template/.opencode/command/generate-storyboard.md +1 -2
  13. package/dist/template/.opencode/command/restore-image.md +1 -2
  14. package/dist/template/.opencode/dcp.jsonc +1 -15
  15. package/dist/template/.opencode/opencode.json +707 -704
  16. package/dist/template/.opencode/package.json +1 -1
  17. package/dist/template/.opencode/skill/supabase-postgres-best-practices/AGENTS.md +1490 -0
  18. package/dist/template/.opencode/skill/supabase-postgres-best-practices/SKILL.md +57 -0
  19. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/advanced-full-text-search.md +55 -0
  20. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/advanced-jsonb-indexing.md +49 -0
  21. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/conn-idle-timeout.md +46 -0
  22. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/conn-limits.md +44 -0
  23. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/conn-pooling.md +41 -0
  24. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/conn-prepared-statements.md +46 -0
  25. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/data-batch-inserts.md +54 -0
  26. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/data-n-plus-one.md +53 -0
  27. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/data-pagination.md +50 -0
  28. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/data-upsert.md +50 -0
  29. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/lock-advisory.md +56 -0
  30. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/lock-deadlock-prevention.md +68 -0
  31. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/lock-short-transactions.md +50 -0
  32. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/lock-skip-locked.md +54 -0
  33. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/monitor-explain-analyze.md +45 -0
  34. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/monitor-pg-stat-statements.md +55 -0
  35. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/monitor-vacuum-analyze.md +55 -0
  36. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-composite-indexes.md +44 -0
  37. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-covering-indexes.md +40 -0
  38. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-index-types.md +45 -0
  39. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-missing-indexes.md +43 -0
  40. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-partial-indexes.md +45 -0
  41. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-data-types.md +46 -0
  42. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-foreign-key-indexes.md +59 -0
  43. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-lowercase-identifiers.md +55 -0
  44. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-partitioning.md +55 -0
  45. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-primary-keys.md +61 -0
  46. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/security-privileges.md +54 -0
  47. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/security-rls-basics.md +50 -0
  48. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/security-rls-performance.md +57 -0
  49. package/package.json +1 -1
@@ -1,706 +1,709 @@
1
1
  {
2
- "$schema": "https://opencode.ai/config.json",
3
- "agent": {
4
- "build": {
5
- "description": "Primary development agent with full codebase access",
6
- "model": "opencode/minimax-m2.1-free"
7
- },
8
- "compaction": {
9
- "description": "Session summarizer for context continuity across compactions",
10
- "model": "opencode/minimax-m2.1-free"
11
- },
12
- "explore": {
13
- "description": "Fast codebase search specialist",
14
- "model": "opencode/grok-code"
15
- },
16
- "general": {
17
- "description": "General-purpose subagent for fast, well-defined tasks; delegates complexity quickly",
18
- "model": "opencode/glm-4.7-free"
19
- },
20
- "looker": {
21
- "description": "Media extraction specialist for images, PDFs, diagrams",
22
- "model": "opencode/gpt-5-nano"
23
- },
24
- "plan": {
25
- "description": "Primary planning agent for architecture and multi-phase execution",
26
- "model": "opencode/minimax-m2.1-free"
27
- },
28
- "review": {
29
- "description": "Code review, debugging, and security audit specialist",
30
- "model": "opencode/minimax-m2.1-free"
31
- },
32
- "scout": {
33
- "description": "External research specialist for library docs and patterns",
34
- "model": "opencode/big-pickle"
35
- },
36
- "vision": {
37
- "description": "Visual content specialist for multimodal analysis and UI/UX guidance",
38
- "model": "opencode/gpt-5-nano"
39
- }
40
- },
41
- "autoupdate": false,
42
- "compaction": {
43
- "auto": true,
44
- "prune": true
45
- },
46
- "experimental": {},
47
- "formatter": {
48
- "biome": {
49
- "command": ["npx", "@biomejs/biome", "check", "--write", "$FILE"],
50
- "extensions": [".js", ".jsx", ".ts", ".tsx", ".json", ".jsonc"]
51
- },
52
- "cargo-fmt": {
53
- "command": ["cargo", "fmt", "--", "$FILE"],
54
- "extensions": [".rs"]
55
- },
56
- "java-formatter": {
57
- "command": ["google-java-format", "--replace", "$FILE"],
58
- "environment": {
59
- "JAVA_HOME": "{env:JAVA_HOME}"
60
- },
61
- "extensions": [".java"]
62
- },
63
- "oxfmt": {
64
- "command": ["npx", "oxfmt", "--write", "$FILE"],
65
- "extensions": [
66
- ".js",
67
- ".jsx",
68
- ".ts",
69
- ".tsx",
70
- ".json",
71
- ".jsonc",
72
- ".html",
73
- ".css",
74
- ".scss",
75
- ".sass",
76
- ".md",
77
- ".mdx",
78
- ".yaml",
79
- ".yml"
80
- ]
81
- },
82
- "laravel-pint": {
83
- "command": ["npx", "laravel-pint", "--preset", "psr12", "$FILE"],
84
- "extensions": [".php"]
85
- }
86
- },
87
- "instructions": [".opencode/memory/user.md", ".opencode/memory/project/*.md"],
88
- "keybinds": {
89
- "command_list": ";",
90
- "leader": "`",
91
- "session_child_cycle": "ctrl+alt+right",
92
- "session_child_cycle_reverse": "ctrl+alt+left",
93
- "session_compact": "ctrl+k"
94
- },
95
- "mcp": {
96
- "context7": {
97
- "command": [
98
- "npx",
99
- "-y",
100
- "@upstash/context7-mcp",
101
- "--api-key",
102
- "{env:CONTEXT7_API_KEY}"
103
- ],
104
- "enabled": true,
105
- "type": "local"
106
- },
107
- "gh_grep": {
108
- "enabled": true,
109
- "type": "remote",
110
- "url": "https://mcp.grep.app"
111
- },
112
- "stitch": {
113
- "enabled": false,
114
- "type": "remote",
115
- "url": "https://stitch.googleapis.com/mcp",
116
- "oauth": false,
117
- "headers": {
118
- "Authorization": "Bearer {env:STITCH_ACCESS_TOKEN}",
119
- "X-Goog-User-Project": "{env:GOOGLE_CLOUD_PROJECT}"
120
- }
121
- }
122
- },
123
- "model": "opencode/minimax-m2.1-free",
124
- "permission": {
125
- "bash": {
126
- "*": "allow",
127
- "cat *": "allow",
128
- "git branch *": "allow",
129
- "git commit *": "ask",
130
- "git diff *": "allow",
131
- "git log *": "allow",
132
- "git push *": "ask",
133
- "git rebase *": "ask",
134
- "git reset *": "ask",
135
- "git status *": "allow",
136
- "ls *": "allow",
137
- "npm *": "allow",
138
- "npx *": "allow",
139
- "rm *": "deny",
140
- "rm -rf *": "deny",
141
- "sudo *": "deny"
142
- },
143
- "doom_loop": "ask",
144
- "edit": "allow",
145
- "external_directory": "ask",
146
- "question": "allow",
147
- "read": {
148
- "*": "allow",
149
- "*.env": "deny",
150
- "*.env.*": "deny",
151
- "*.env.example": "allow"
152
- }
153
- },
154
- "plugin": [
155
- "@tarquinen/opencode-dcp@latest",
156
- "@franlol/opencode-md-table-formatter@0.0.3"
157
- ],
158
- "provider": {
159
- "github-copilot": {
160
- "models": {
161
- "claude-opus-4.5": {
162
- "attachment": true,
163
- "reasoning": true,
164
- "temperature": true,
165
- "tool_call": true,
166
- "variants": {
167
- "high": {
168
- "options": {
169
- "thinking": {
170
- "budgetTokens": 32000,
171
- "type": "enabled"
172
- }
173
- }
174
- },
175
- "medium": {
176
- "options": {
177
- "thinking": {
178
- "budgetTokens": 16000,
179
- "type": "enabled"
180
- }
181
- }
182
- }
183
- }
184
- },
185
- "claude-sonnet-4.5": {
186
- "attachment": true,
187
- "reasoning": true,
188
- "temperature": true,
189
- "tool_call": true,
190
- "variants": {
191
- "high": {
192
- "options": {
193
- "thinking": {
194
- "budgetTokens": 16000,
195
- "type": "enabled"
196
- }
197
- }
198
- },
199
- "medium": {
200
- "options": {
201
- "thinking": {
202
- "budgetTokens": 8000,
203
- "type": "enabled"
204
- }
205
- }
206
- }
207
- }
208
- },
209
- "claude-haiku-4.5": {
210
- "attachment": true,
211
- "reasoning": true,
212
- "temperature": true,
213
- "tool_call": true,
214
- "variants": {
215
- "high": {
216
- "options": {
217
- "thinking": {
218
- "budgetTokens": 32000,
219
- "type": "enabled"
220
- }
221
- }
222
- },
223
- "medium": {
224
- "options": {
225
- "thinking": {
226
- "budgetTokens": 16000,
227
- "type": "enabled"
228
- }
229
- }
230
- }
231
- }
232
- },
233
- "gpt-5-mini": {
234
- "attachment": true,
235
- "reasoning": true,
236
- "temperature": true,
237
- "tool_call": true,
238
- "variants": {
239
- "high": {
240
- "options": {
241
- "reasoning": {
242
- "effort": "high"
243
- }
244
- }
245
- },
246
- "medium": {
247
- "options": {
248
- "reasoning": {
249
- "effort": "medium"
250
- }
251
- }
252
- },
253
- "low": {
254
- "options": {
255
- "reasoning": {
256
- "effort": "low"
257
- }
258
- }
259
- }
260
- }
261
- },
262
- "gpt-5.2-codex": {
263
- "attachment": true,
264
- "reasoning": true,
265
- "temperature": true,
266
- "tool_call": true,
267
- "variants": {
268
- "high": {
269
- "options": {
270
- "reasoning": {
271
- "effort": "high"
272
- }
273
- }
274
- },
275
- "medium": {
276
- "options": {
277
- "reasoning": {
278
- "effort": "medium"
279
- }
280
- }
281
- },
282
- "low": {
283
- "options": {
284
- "reasoning": {
285
- "effort": "low"
286
- }
287
- }
288
- }
289
- }
290
- }
291
- }
292
- },
293
- "openai": {
294
- "models": {
295
- "gpt-5.2": {
296
- "variants": {
297
- "fast": {
298
- "disabled": true
299
- },
300
- "high": {
301
- "include": ["reasoning.encrypted_content"],
302
- "reasoningEffort": "high",
303
- "reasoningSummary": "auto",
304
- "textVerbosity": "low"
305
- },
306
- "medium": {
307
- "include": ["reasoning.encrypted_content"],
308
- "reasoningEffort": "medium",
309
- "reasoningSummary": "auto",
310
- "textVerbosity": "low"
311
- }
312
- }
313
- },
314
- "gpt-5.2-codex": {
315
- "variants": {
316
- "fast": {
317
- "disabled": true
318
- },
319
- "high": {
320
- "include": ["reasoning.encrypted_content"],
321
- "reasoningEffort": "high",
322
- "reasoningSummary": "auto",
323
- "textVerbosity": "low"
324
- },
325
- "medium": {
326
- "include": ["reasoning.encrypted_content"],
327
- "reasoningEffort": "medium",
328
- "reasoningSummary": "auto",
329
- "textVerbosity": "low"
330
- }
331
- }
332
- }
333
- }
334
- },
335
- "opencode": {
336
- "models": {
337
- "big-pickle": {
338
- "options": {
339
- "reasoningEffort": "high",
340
- "temperature": 1,
341
- "top_k": 40,
342
- "top_p": 0.95
343
- },
344
- "reasoning": true
345
- }
346
- }
347
- },
348
- "proxypal": {
349
- "models": {
350
- "gemini-2.5-computer-use-preview-10-2025": {
351
- "limit": {
352
- "context": 880964,
353
- "output": 65536
354
- },
355
- "name": "Gemini 2 5 Computer Use Preview 10 2025",
356
- "modalities": {
357
- "input": ["text", "image", "pdf"],
358
- "output": ["text"]
359
- }
360
- },
361
- "gemini-2.5-flash": {
362
- "limit": {
363
- "context": 880964,
364
- "output": 65536
365
- },
366
- "name": "Gemini 2 5 Flash",
367
- "modalities": {
368
- "input": ["text", "image", "pdf"],
369
- "output": ["text"]
370
- }
371
- },
372
- "gemini-2.5-flash-lite": {
373
- "limit": {
374
- "context": 880964,
375
- "output": 65536
376
- },
377
- "name": "Gemini 2 5 Flash Lite",
378
- "modalities": {
379
- "input": ["text", "image", "pdf"],
380
- "output": ["text"]
381
- }
382
- },
383
- "gemini-2.5-pro": {
384
- "limit": {
385
- "context": 880964,
386
- "output": 65536
387
- },
388
- "name": "Gemini 2 5 Pro",
389
- "modalities": {
390
- "input": ["text", "image", "pdf"],
391
- "output": ["text"]
392
- }
393
- },
394
- "gemini-3-flash-preview": {
395
- "limit": {
396
- "context": 880964,
397
- "output": 65536
398
- },
399
- "name": "Gemini 3 Flash Preview",
400
- "modalities": {
401
- "input": ["text", "image", "pdf"],
402
- "output": ["text"]
403
- },
404
- "variants": {
405
- "low": {
406
- "thinkingLevel": "low"
407
- },
408
- "medium": {
409
- "thinkingLevel": "medium"
410
- },
411
- "high": {
412
- "thinkingLevel": "high"
413
- }
414
- },
415
- "reasoning": true
416
- },
417
- "gemini-3-pro-image-preview": {
418
- "limit": {
419
- "context": 880964,
420
- "output": 65536
421
- },
422
- "name": "Gemini 3 Pro Image Preview",
423
- "modalities": {
424
- "input": ["text", "image", "pdf"],
425
- "output": ["text"]
426
- }
427
- },
428
- "gemini-3-pro-preview": {
429
- "limit": {
430
- "context": 880964,
431
- "output": 65536
432
- },
433
- "name": "Gemini 3 Pro Preview",
434
- "modalities": {
435
- "input": ["text", "image", "pdf"],
436
- "output": ["text"]
437
- },
438
- "variants": {
439
- "low": {
440
- "thinkingLevel": "low"
441
- },
442
- "high": {
443
- "thinkingLevel": "high"
444
- }
445
- },
446
- "reasoning": true
447
- },
448
- "gemini-claude-opus-4-5-thinking": {
449
- "limit": {
450
- "context": 168000,
451
- "output": 64000
452
- },
453
- "modalities": {
454
- "input": ["text", "image", "pdf"],
455
- "output": ["text"]
456
- },
457
- "name": "Gemini Claude Opus 4 5 Thinking",
458
- "variants": {
459
- "low": {
460
- "thinkingConfig": {
461
- "thinkingBudget": 8192
462
- }
463
- },
464
- "max": {
465
- "thinkingConfig": {
466
- "thinkingBudget": 32768
467
- }
468
- }
469
- },
470
- "reasoning": true
471
- },
472
- "gemini-claude-sonnet-4-5": {
473
- "limit": {
474
- "context": 168000,
475
- "output": 64000
476
- },
477
- "modalities": {
478
- "input": ["text", "image", "pdf"],
479
- "output": ["text"]
480
- },
481
- "name": "Gemini Claude Sonnet 4 5"
482
- },
483
- "gemini-claude-sonnet-4-5-thinking": {
484
- "limit": {
485
- "context": 168000,
486
- "output": 64000
487
- },
488
- "modalities": {
489
- "input": ["text", "image", "pdf"],
490
- "output": ["text"]
491
- },
492
- "name": "Gemini Claude Sonnet 4 5 Thinking",
493
- "variants": {
494
- "low": {
495
- "thinkingConfig": {
496
- "thinkingBudget": 8192
497
- }
498
- },
499
- "max": {
500
- "thinkingConfig": {
501
- "thinkingBudget": 32768
502
- }
503
- }
504
- },
505
- "reasoning": true
506
- },
507
- "glm-4.5": {
508
- "limit": {
509
- "context": 107520,
510
- "output": 16384
511
- },
512
- "name": "Glm 4 5"
513
- },
514
- "glm-4.5-air": {
515
- "limit": {
516
- "context": 107520,
517
- "output": 16384
518
- },
519
- "name": "Glm 4 5 Air"
520
- },
521
- "glm-4.6": {
522
- "limit": {
523
- "context": 107520,
524
- "output": 16384
525
- },
526
- "name": "Glm 4 6"
527
- },
528
- "glm-4.7": {
529
- "limit": {
530
- "context": 107520,
531
- "output": 16384
532
- },
533
- "name": "Glm 4 7"
534
- },
535
- "gpt-5": {
536
- "limit": {
537
- "context": 336000,
538
- "output": 32768
539
- },
540
- "name": "Gpt 5",
541
- "options": {
542
- "reasoningEffort": "medium"
543
- },
544
- "reasoning": true
545
- },
546
- "gpt-5-codex": {
547
- "limit": {
548
- "context": 336000,
549
- "output": 32768
550
- },
551
- "name": "Gpt 5 Codex",
552
- "options": {
553
- "reasoningEffort": "medium"
554
- },
555
- "reasoning": true
556
- },
557
- "gpt-5-codex-mini": {
558
- "limit": {
559
- "context": 336000,
560
- "output": 32768
561
- },
562
- "name": "Gpt 5 Codex Mini",
563
- "options": {
564
- "reasoningEffort": "medium"
565
- },
566
- "reasoning": true
567
- },
568
- "gpt-5.1": {
569
- "limit": {
570
- "context": 336000,
571
- "output": 32768
572
- },
573
- "name": "Gpt 5 1",
574
- "options": {
575
- "reasoningEffort": "medium"
576
- },
577
- "reasoning": true
578
- },
579
- "gpt-5.1-codex": {
580
- "limit": {
581
- "context": 336000,
582
- "output": 32768
583
- },
584
- "name": "Gpt 5 1 Codex",
585
- "options": {
586
- "reasoningEffort": "medium"
587
- },
588
- "reasoning": true
589
- },
590
- "gpt-5.1-codex-max": {
591
- "limit": {
592
- "context": 336000,
593
- "output": 32768
594
- },
595
- "name": "Gpt 5 1 Codex Max",
596
- "options": {
597
- "reasoningEffort": "medium"
598
- },
599
- "reasoning": true
600
- },
601
- "gpt-5.1-codex-mini": {
602
- "limit": {
603
- "context": 336000,
604
- "output": 32768
605
- },
606
- "name": "Gpt 5 1 Codex Mini",
607
- "options": {
608
- "reasoningEffort": "medium"
609
- },
610
- "reasoning": true
611
- },
612
- "gpt-5.2": {
613
- "limit": {
614
- "context": 336000,
615
- "output": 32768
616
- },
617
- "name": "Gpt 5 2",
618
- "options": {
619
- "reasoningEffort": "medium"
620
- },
621
- "reasoning": true
622
- },
623
- "gpt-5.2-codex": {
624
- "limit": {
625
- "context": 336000,
626
- "output": 32768
627
- },
628
- "name": "Gpt 5 2 Codex",
629
- "options": {
630
- "reasoningEffort": "medium"
631
- },
632
- "reasoning": true
633
- },
634
- "gpt-oss-120b-medium": {
635
- "limit": {
636
- "context": 107520,
637
- "output": 16384
638
- },
639
- "name": "Gpt Oss 120b Medium"
640
- }
641
- },
642
- "name": "ProxyPal",
643
- "npm": "@ai-sdk/anthropic",
644
- "options": {
645
- "apiKey": "proxypal-local",
646
- "baseURL": "http://127.0.0.1:8317/v1",
647
- "includeUsage": true
648
- }
649
- },
650
- "zai-coding-plan": {
651
- "models": {
652
- "glm-4.6": {
653
- "limit": {
654
- "context": 128000,
655
- "output": 16384
656
- },
657
- "options": {
658
- "temperature": 1,
659
- "thinking": {
660
- "type": "enabled"
661
- }
662
- },
663
- "reasoning": true,
664
- "temperature": true,
665
- "tool_call": true
666
- },
667
- "glm-4.7": {
668
- "id": "glm-4.7",
669
- "interleaved": true,
670
- "limit": {
671
- "context": 200000,
672
- "output": 128000
673
- },
674
- "name": "GLM-4.7",
675
- "options": {
676
- "temperature": 1,
677
- "thinking": {
678
- "type": "enabled"
679
- }
680
- },
681
- "reasoning": true
682
- }
683
- },
684
- "name": "Z.AI Coding Plan"
685
- }
686
- },
687
- "share": "manual",
688
- "small_model": "opencode/gpt-5-nano",
689
- "tui": {
690
- "diff_style": "auto",
691
- "scroll_acceleration": {
692
- "enabled": true
693
- },
694
- "scroll_speed": 3
695
- },
696
- "watcher": {
697
- "ignore": [
698
- "node_modules/**",
699
- ".git/**",
700
- "dist/**",
701
- "build/**",
702
- "*.log",
703
- ".DS_Store"
704
- ]
705
- }
2
+ "$schema": "https://opencode.ai/config.json",
3
+ "agent": {
4
+ "build": {
5
+ "description": "Primary development agent with full codebase access",
6
+ "model": "opencode/big-pickle"
7
+ },
8
+ "compaction": {
9
+ "description": "Session summarizer for context continuity across compactions"
10
+ },
11
+ "explore": {
12
+ "description": "Fast codebase search specialist",
13
+ "model": "opencode/grok-code"
14
+ },
15
+ "general": {
16
+ "description": "General-purpose subagent for fast, well-defined tasks; delegates complexity quickly",
17
+ "model": "opencode/grok-code"
18
+ },
19
+ "looker": {
20
+ "description": "Media extraction specialist for images, PDFs, diagrams",
21
+ "model": "opencode/gpt-5-nano"
22
+ },
23
+ "plan": {
24
+ "description": "Primary planning agent for architecture and multi-phase execution",
25
+ "model": "opencode/big-pickle"
26
+ },
27
+ "review": {
28
+ "description": "Code review, debugging, and security audit specialist",
29
+ "model": "opencode/big-pickle"
30
+ },
31
+ "scout": {
32
+ "description": "External research specialist for library docs and patterns",
33
+ "model": "opencode/big-pickle"
34
+ },
35
+ "vision": {
36
+ "description": "Visual content specialist for multimodal analysis and UI/UX guidance",
37
+ "model": "opencode/gpt-5-nano"
38
+ },
39
+ "painter": {
40
+ "description": "Image generation and editing specialist using Gemini 3 Pro Image. Use for creating UI mockups, app icons, hero images, visual assets, and editing/redacting existing images",
41
+ "model": "opencode/gpt-5-nano"
42
+ }
43
+ },
44
+ "autoupdate": false,
45
+ "compaction": {
46
+ "auto": true,
47
+ "prune": true
48
+ },
49
+ "experimental": {},
50
+ "formatter": {
51
+ "biome": {
52
+ "command": ["npx", "@biomejs/biome", "check", "--write", "$FILE"],
53
+ "extensions": [".js", ".jsx", ".ts", ".tsx", ".json", ".jsonc"]
54
+ },
55
+ "cargo-fmt": {
56
+ "command": ["cargo", "fmt", "--", "$FILE"],
57
+ "extensions": [".rs"]
58
+ },
59
+ "java-formatter": {
60
+ "command": ["google-java-format", "--replace", "$FILE"],
61
+ "environment": {
62
+ "JAVA_HOME": "{env:JAVA_HOME}"
63
+ },
64
+ "extensions": [".java"]
65
+ },
66
+ "oxfmt": {
67
+ "command": ["npx", "oxfmt", "--write", "$FILE"],
68
+ "extensions": [
69
+ ".js",
70
+ ".jsx",
71
+ ".ts",
72
+ ".tsx",
73
+ ".json",
74
+ ".jsonc",
75
+ ".html",
76
+ ".css",
77
+ ".scss",
78
+ ".sass",
79
+ ".md",
80
+ ".mdx",
81
+ ".yaml",
82
+ ".yml"
83
+ ]
84
+ },
85
+ "laravel-pint": {
86
+ "command": ["npx", "laravel-pint", "--preset", "psr12", "$FILE"],
87
+ "extensions": [".php"]
88
+ }
89
+ },
90
+ "instructions": [".opencode/memory/user.md", ".opencode/memory/project/*.md"],
91
+ "keybinds": {
92
+ "command_list": ";",
93
+ "leader": "`",
94
+ "session_child_cycle": "ctrl+alt+right",
95
+ "session_child_cycle_reverse": "ctrl+alt+left",
96
+ "session_compact": "ctrl+k"
97
+ },
98
+ "mcp": {
99
+ "context7": {
100
+ "command": [
101
+ "npx",
102
+ "-y",
103
+ "@upstash/context7-mcp",
104
+ "--api-key",
105
+ "{env:CONTEXT7_API_KEY}"
106
+ ],
107
+ "enabled": true,
108
+ "type": "local"
109
+ },
110
+ "gh_grep": {
111
+ "enabled": true,
112
+ "type": "remote",
113
+ "url": "https://mcp.grep.app"
114
+ },
115
+ "stitch": {
116
+ "enabled": false,
117
+ "type": "remote",
118
+ "url": "https://stitch.googleapis.com/mcp",
119
+ "oauth": false,
120
+ "headers": {
121
+ "Authorization": "Bearer {env:STITCH_ACCESS_TOKEN}",
122
+ "X-Goog-User-Project": "{env:GOOGLE_CLOUD_PROJECT}"
123
+ }
124
+ }
125
+ },
126
+ "model": "opencode/big-pickle",
127
+ "permission": {
128
+ "bash": {
129
+ "*": "allow",
130
+ "cat *": "allow",
131
+ "git branch *": "allow",
132
+ "git commit *": "ask",
133
+ "git diff *": "allow",
134
+ "git log *": "allow",
135
+ "git push *": "ask",
136
+ "git rebase *": "ask",
137
+ "git reset *": "ask",
138
+ "git status *": "allow",
139
+ "ls *": "allow",
140
+ "npm *": "allow",
141
+ "npx *": "allow",
142
+ "rm *": "deny",
143
+ "rm -rf *": "deny",
144
+ "sudo *": "deny"
145
+ },
146
+ "doom_loop": "ask",
147
+ "edit": "allow",
148
+ "external_directory": "ask",
149
+ "question": "allow",
150
+ "read": {
151
+ "*": "allow",
152
+ "*.env": "deny",
153
+ "*.env.*": "deny",
154
+ "*.env.example": "allow"
155
+ }
156
+ },
157
+ "plugin": [
158
+ "@tarquinen/opencode-dcp@latest",
159
+ "@franlol/opencode-md-table-formatter@0.0.3"
160
+ ],
161
+ "provider": {
162
+ "github-copilot": {
163
+ "models": {
164
+ "claude-opus-4.5": {
165
+ "attachment": true,
166
+ "reasoning": true,
167
+ "temperature": true,
168
+ "tool_call": true,
169
+ "variants": {
170
+ "high": {
171
+ "options": {
172
+ "thinking": {
173
+ "budgetTokens": 32000,
174
+ "type": "enabled"
175
+ }
176
+ }
177
+ },
178
+ "medium": {
179
+ "options": {
180
+ "thinking": {
181
+ "budgetTokens": 16000,
182
+ "type": "enabled"
183
+ }
184
+ }
185
+ }
186
+ }
187
+ },
188
+ "claude-sonnet-4.5": {
189
+ "attachment": true,
190
+ "reasoning": true,
191
+ "temperature": true,
192
+ "tool_call": true,
193
+ "variants": {
194
+ "high": {
195
+ "options": {
196
+ "thinking": {
197
+ "budgetTokens": 16000,
198
+ "type": "enabled"
199
+ }
200
+ }
201
+ },
202
+ "medium": {
203
+ "options": {
204
+ "thinking": {
205
+ "budgetTokens": 8000,
206
+ "type": "enabled"
207
+ }
208
+ }
209
+ }
210
+ }
211
+ },
212
+ "claude-haiku-4.5": {
213
+ "attachment": true,
214
+ "reasoning": true,
215
+ "temperature": true,
216
+ "tool_call": true,
217
+ "variants": {
218
+ "high": {
219
+ "options": {
220
+ "thinking": {
221
+ "budgetTokens": 32000,
222
+ "type": "enabled"
223
+ }
224
+ }
225
+ },
226
+ "medium": {
227
+ "options": {
228
+ "thinking": {
229
+ "budgetTokens": 16000,
230
+ "type": "enabled"
231
+ }
232
+ }
233
+ }
234
+ }
235
+ },
236
+ "gpt-5-mini": {
237
+ "attachment": true,
238
+ "reasoning": true,
239
+ "temperature": true,
240
+ "tool_call": true,
241
+ "variants": {
242
+ "high": {
243
+ "options": {
244
+ "reasoning": {
245
+ "effort": "high"
246
+ }
247
+ }
248
+ },
249
+ "medium": {
250
+ "options": {
251
+ "reasoning": {
252
+ "effort": "medium"
253
+ }
254
+ }
255
+ },
256
+ "low": {
257
+ "options": {
258
+ "reasoning": {
259
+ "effort": "low"
260
+ }
261
+ }
262
+ }
263
+ }
264
+ },
265
+ "gpt-5.2-codex": {
266
+ "attachment": true,
267
+ "reasoning": true,
268
+ "temperature": true,
269
+ "tool_call": true,
270
+ "variants": {
271
+ "high": {
272
+ "options": {
273
+ "reasoning": {
274
+ "effort": "high"
275
+ }
276
+ }
277
+ },
278
+ "medium": {
279
+ "options": {
280
+ "reasoning": {
281
+ "effort": "medium"
282
+ }
283
+ }
284
+ },
285
+ "low": {
286
+ "options": {
287
+ "reasoning": {
288
+ "effort": "low"
289
+ }
290
+ }
291
+ }
292
+ }
293
+ }
294
+ }
295
+ },
296
+ "openai": {
297
+ "models": {
298
+ "gpt-5.2": {
299
+ "variants": {
300
+ "fast": {
301
+ "disabled": true
302
+ },
303
+ "high": {
304
+ "include": ["reasoning.encrypted_content"],
305
+ "reasoningEffort": "high",
306
+ "reasoningSummary": "auto",
307
+ "textVerbosity": "low"
308
+ },
309
+ "medium": {
310
+ "include": ["reasoning.encrypted_content"],
311
+ "reasoningEffort": "medium",
312
+ "reasoningSummary": "auto",
313
+ "textVerbosity": "low"
314
+ }
315
+ }
316
+ },
317
+ "gpt-5.2-codex": {
318
+ "variants": {
319
+ "fast": {
320
+ "disabled": true
321
+ },
322
+ "high": {
323
+ "include": ["reasoning.encrypted_content"],
324
+ "reasoningEffort": "high",
325
+ "reasoningSummary": "auto",
326
+ "textVerbosity": "low"
327
+ },
328
+ "medium": {
329
+ "include": ["reasoning.encrypted_content"],
330
+ "reasoningEffort": "medium",
331
+ "reasoningSummary": "auto",
332
+ "textVerbosity": "low"
333
+ }
334
+ }
335
+ }
336
+ }
337
+ },
338
+ "opencode": {
339
+ "models": {
340
+ "big-pickle": {
341
+ "options": {
342
+ "reasoningEffort": "high",
343
+ "temperature": 1,
344
+ "top_k": 40,
345
+ "top_p": 0.95
346
+ },
347
+ "reasoning": true
348
+ }
349
+ }
350
+ },
351
+ "proxypal": {
352
+ "models": {
353
+ "gemini-2.5-computer-use-preview-10-2025": {
354
+ "limit": {
355
+ "context": 880964,
356
+ "output": 65536
357
+ },
358
+ "name": "Gemini 2 5 Computer Use Preview 10 2025",
359
+ "modalities": {
360
+ "input": ["text", "image", "pdf"],
361
+ "output": ["text"]
362
+ }
363
+ },
364
+ "gemini-2.5-flash": {
365
+ "limit": {
366
+ "context": 880964,
367
+ "output": 65536
368
+ },
369
+ "name": "Gemini 2 5 Flash",
370
+ "modalities": {
371
+ "input": ["text", "image", "pdf"],
372
+ "output": ["text"]
373
+ }
374
+ },
375
+ "gemini-2.5-flash-lite": {
376
+ "limit": {
377
+ "context": 880964,
378
+ "output": 65536
379
+ },
380
+ "name": "Gemini 2 5 Flash Lite",
381
+ "modalities": {
382
+ "input": ["text", "image", "pdf"],
383
+ "output": ["text"]
384
+ }
385
+ },
386
+ "gemini-2.5-pro": {
387
+ "limit": {
388
+ "context": 880964,
389
+ "output": 65536
390
+ },
391
+ "name": "Gemini 2 5 Pro",
392
+ "modalities": {
393
+ "input": ["text", "image", "pdf"],
394
+ "output": ["text"]
395
+ }
396
+ },
397
+ "gemini-3-flash-preview": {
398
+ "limit": {
399
+ "context": 880964,
400
+ "output": 65536
401
+ },
402
+ "name": "Gemini 3 Flash Preview",
403
+ "modalities": {
404
+ "input": ["text", "image", "pdf"],
405
+ "output": ["text"]
406
+ },
407
+ "variants": {
408
+ "low": {
409
+ "thinkingLevel": "low"
410
+ },
411
+ "medium": {
412
+ "thinkingLevel": "medium"
413
+ },
414
+ "high": {
415
+ "thinkingLevel": "high"
416
+ }
417
+ },
418
+ "reasoning": true
419
+ },
420
+ "gemini-3-pro-image-preview": {
421
+ "limit": {
422
+ "context": 880964,
423
+ "output": 65536
424
+ },
425
+ "name": "Gemini 3 Pro Image Preview",
426
+ "modalities": {
427
+ "input": ["text", "image", "pdf"],
428
+ "output": ["text"]
429
+ }
430
+ },
431
+ "gemini-3-pro-preview": {
432
+ "limit": {
433
+ "context": 880964,
434
+ "output": 65536
435
+ },
436
+ "name": "Gemini 3 Pro Preview",
437
+ "modalities": {
438
+ "input": ["text", "image", "pdf"],
439
+ "output": ["text"]
440
+ },
441
+ "variants": {
442
+ "low": {
443
+ "thinkingLevel": "low"
444
+ },
445
+ "high": {
446
+ "thinkingLevel": "high"
447
+ }
448
+ },
449
+ "reasoning": true
450
+ },
451
+ "gemini-claude-opus-4-5-thinking": {
452
+ "limit": {
453
+ "context": 168000,
454
+ "output": 64000
455
+ },
456
+ "modalities": {
457
+ "input": ["text", "image", "pdf"],
458
+ "output": ["text"]
459
+ },
460
+ "name": "Gemini Claude Opus 4 5 Thinking",
461
+ "variants": {
462
+ "low": {
463
+ "thinkingConfig": {
464
+ "thinkingBudget": 8192
465
+ }
466
+ },
467
+ "max": {
468
+ "thinkingConfig": {
469
+ "thinkingBudget": 32768
470
+ }
471
+ }
472
+ },
473
+ "reasoning": true
474
+ },
475
+ "gemini-claude-sonnet-4-5": {
476
+ "limit": {
477
+ "context": 168000,
478
+ "output": 64000
479
+ },
480
+ "modalities": {
481
+ "input": ["text", "image", "pdf"],
482
+ "output": ["text"]
483
+ },
484
+ "name": "Gemini Claude Sonnet 4 5"
485
+ },
486
+ "gemini-claude-sonnet-4-5-thinking": {
487
+ "limit": {
488
+ "context": 168000,
489
+ "output": 64000
490
+ },
491
+ "modalities": {
492
+ "input": ["text", "image", "pdf"],
493
+ "output": ["text"]
494
+ },
495
+ "name": "Gemini Claude Sonnet 4 5 Thinking",
496
+ "variants": {
497
+ "low": {
498
+ "thinkingConfig": {
499
+ "thinkingBudget": 8192
500
+ }
501
+ },
502
+ "max": {
503
+ "thinkingConfig": {
504
+ "thinkingBudget": 32768
505
+ }
506
+ }
507
+ },
508
+ "reasoning": true
509
+ },
510
+ "glm-4.5": {
511
+ "limit": {
512
+ "context": 107520,
513
+ "output": 16384
514
+ },
515
+ "name": "Glm 4 5"
516
+ },
517
+ "glm-4.5-air": {
518
+ "limit": {
519
+ "context": 107520,
520
+ "output": 16384
521
+ },
522
+ "name": "Glm 4 5 Air"
523
+ },
524
+ "glm-4.6": {
525
+ "limit": {
526
+ "context": 107520,
527
+ "output": 16384
528
+ },
529
+ "name": "Glm 4 6"
530
+ },
531
+ "glm-4.7": {
532
+ "limit": {
533
+ "context": 107520,
534
+ "output": 16384
535
+ },
536
+ "name": "Glm 4 7"
537
+ },
538
+ "gpt-5": {
539
+ "limit": {
540
+ "context": 336000,
541
+ "output": 32768
542
+ },
543
+ "name": "Gpt 5",
544
+ "options": {
545
+ "reasoningEffort": "medium"
546
+ },
547
+ "reasoning": true
548
+ },
549
+ "gpt-5-codex": {
550
+ "limit": {
551
+ "context": 336000,
552
+ "output": 32768
553
+ },
554
+ "name": "Gpt 5 Codex",
555
+ "options": {
556
+ "reasoningEffort": "medium"
557
+ },
558
+ "reasoning": true
559
+ },
560
+ "gpt-5-codex-mini": {
561
+ "limit": {
562
+ "context": 336000,
563
+ "output": 32768
564
+ },
565
+ "name": "Gpt 5 Codex Mini",
566
+ "options": {
567
+ "reasoningEffort": "medium"
568
+ },
569
+ "reasoning": true
570
+ },
571
+ "gpt-5.1": {
572
+ "limit": {
573
+ "context": 336000,
574
+ "output": 32768
575
+ },
576
+ "name": "Gpt 5 1",
577
+ "options": {
578
+ "reasoningEffort": "medium"
579
+ },
580
+ "reasoning": true
581
+ },
582
+ "gpt-5.1-codex": {
583
+ "limit": {
584
+ "context": 336000,
585
+ "output": 32768
586
+ },
587
+ "name": "Gpt 5 1 Codex",
588
+ "options": {
589
+ "reasoningEffort": "medium"
590
+ },
591
+ "reasoning": true
592
+ },
593
+ "gpt-5.1-codex-max": {
594
+ "limit": {
595
+ "context": 336000,
596
+ "output": 32768
597
+ },
598
+ "name": "Gpt 5 1 Codex Max",
599
+ "options": {
600
+ "reasoningEffort": "medium"
601
+ },
602
+ "reasoning": true
603
+ },
604
+ "gpt-5.1-codex-mini": {
605
+ "limit": {
606
+ "context": 336000,
607
+ "output": 32768
608
+ },
609
+ "name": "Gpt 5 1 Codex Mini",
610
+ "options": {
611
+ "reasoningEffort": "medium"
612
+ },
613
+ "reasoning": true
614
+ },
615
+ "gpt-5.2": {
616
+ "limit": {
617
+ "context": 336000,
618
+ "output": 32768
619
+ },
620
+ "name": "Gpt 5 2",
621
+ "options": {
622
+ "reasoningEffort": "medium"
623
+ },
624
+ "reasoning": true
625
+ },
626
+ "gpt-5.2-codex": {
627
+ "limit": {
628
+ "context": 336000,
629
+ "output": 32768
630
+ },
631
+ "name": "Gpt 5 2 Codex",
632
+ "options": {
633
+ "reasoningEffort": "medium"
634
+ },
635
+ "reasoning": true
636
+ },
637
+ "gpt-oss-120b-medium": {
638
+ "limit": {
639
+ "context": 107520,
640
+ "output": 16384
641
+ },
642
+ "name": "Gpt Oss 120b Medium"
643
+ }
644
+ },
645
+ "name": "ProxyPal",
646
+ "npm": "@ai-sdk/anthropic",
647
+ "options": {
648
+ "apiKey": "proxypal-local",
649
+ "baseURL": "http://127.0.0.1:8317/v1",
650
+ "includeUsage": true
651
+ }
652
+ },
653
+ "zai-coding-plan": {
654
+ "models": {
655
+ "glm-4.6": {
656
+ "limit": {
657
+ "context": 128000,
658
+ "output": 16384
659
+ },
660
+ "options": {
661
+ "temperature": 1,
662
+ "thinking": {
663
+ "type": "enabled"
664
+ }
665
+ },
666
+ "reasoning": true,
667
+ "temperature": true,
668
+ "tool_call": true
669
+ },
670
+ "glm-4.7": {
671
+ "id": "glm-4.7",
672
+ "interleaved": true,
673
+ "limit": {
674
+ "context": 200000,
675
+ "output": 128000
676
+ },
677
+ "name": "GLM-4.7",
678
+ "options": {
679
+ "temperature": 1,
680
+ "thinking": {
681
+ "type": "enabled"
682
+ }
683
+ },
684
+ "reasoning": true
685
+ }
686
+ },
687
+ "name": "Z.AI Coding Plan"
688
+ }
689
+ },
690
+ "share": "manual",
691
+ "small_model": "opencode/gpt-5-nano",
692
+ "tui": {
693
+ "diff_style": "auto",
694
+ "scroll_acceleration": {
695
+ "enabled": true
696
+ },
697
+ "scroll_speed": 3
698
+ },
699
+ "watcher": {
700
+ "ignore": [
701
+ "node_modules/**",
702
+ ".git/**",
703
+ "dist/**",
704
+ "build/**",
705
+ "*.log",
706
+ ".DS_Store"
707
+ ]
708
+ }
706
709
  }