oh-my-opencode 1.1.0 → 1.1.2

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
@@ -233,7 +233,7 @@ opencode auth login
233
233
  ### Agents: 당신의 새로운 팀원들
234
234
 
235
235
  - **oracle** (`openai/gpt-5.2`): 아키텍처, 코드 리뷰, 전략 수립을 위한 전문가 조언자. GPT-5.2의 뛰어난 논리적 추론과 깊은 분석 능력을 활용합니다. AmpCode 에서 영감을 받았습니다.
236
- - **librarian** (`anthropic/claude-haiku-4-5`): 멀티 레포 분석, 문서 조회, 구현 예제 담당. Haiku의 빠른 속도, 적절한 지능, 훌륭한 도구 호출 능력, 저렴한 비용을 활용합니다. AmpCode 에서 영감을 받았습니다.
236
+ - **librarian** (`anthropic/claude-sonnet-4-5`): 멀티 레포 분석, 문서 조회, 구현 예제 담당. Claude Sonnet 4.5 뛰어난 지능, 훌륭한 도구 호출 능력을 활용합니다. AmpCode 에서 영감을 받았습니다.
237
237
  - **explore** (`opencode/grok-code`): 빠른 코드베이스 탐색, 파일 패턴 매칭. Claude Code는 Haiku를 쓰지만, 우리는 Grok을 씁니다. 현재 무료이고, 극도로 빠르며, 파일 탐색 작업에 충분한 지능을 갖췄기 때문입니다. Claude Code 에서 영감을 받았습니다.
238
238
  - **frontend-ui-ux-engineer** (`google/gemini-3-pro-preview`): 개발자로 전향한 디자이너라는 설정을 갖고 있습니다. 멋진 UI를 만듭니다. 아름답고 창의적인 UI 코드를 생성하는 데 탁월한 Gemini를 사용합니다.
239
239
  - **document-writer** (`google/gemini-3-pro-preview`): 기술 문서 전문가라는 설정을 갖고 있습니다. Gemini 는 문학가입니다. 글을 기가막히게 씁니다.
@@ -317,7 +317,10 @@ Syntax Highlighting, Autocomplete, Refactoring, Navigation, Analysis, 그리고
317
317
  - Use PascalCase for interface names
318
318
  - Use camelCase for function names
319
319
  ```
320
- - **Online**: 프로젝트 규칙이 전부는 아니겠죠. exa, context7 mcp내장하여 검색 기능을 제공합니다.
320
+ - **Online**: 프로젝트 규칙이 전부는 아니겠죠. 확장 기능을 위한 내장 MCP제공합니다:
321
+ - **context7**: 공식 문서 조회
322
+ - **websearch_exa**: 실시간 웹 검색
323
+ - **grep_app**: 공개 GitHub 저장소에서 초고속 코드 검색 (구현 예제 찾기에 최적)
321
324
 
322
325
  #### 멀티모달을 다 활용하면서, 토큰은 덜 쓰도록.
323
326
 
@@ -488,13 +491,17 @@ Google Gemini 모델을 위한 내장 Antigravity OAuth를 활성화합니다:
488
491
 
489
492
  ### MCPs
490
493
 
491
- 기본적으로 Context7, Exa MCP 를 지원합니다.
494
+ 기본적으로 Context7, Exa, grep.app MCP 를 지원합니다.
495
+
496
+ - **context7**: 라이브러리의 최신 공식 문서를 가져옵니다
497
+ - **websearch_exa**: Exa AI 기반 실시간 웹 검색
498
+ - **grep_app**: [grep.app](https://grep.app)을 통해 수백만 개의 공개 GitHub 저장소에서 초고속 코드 검색
492
499
 
493
500
  이것이 마음에 들지 않는다면, ~/.config/opencode/oh-my-opencode.json 혹은 .opencode/oh-my-opencode.json 의 `disabled_mcps` 를 사용하여 비활성화할 수 있습니다:
494
501
 
495
502
  ```json
496
503
  {
497
- "disabled_mcps": ["context7", "websearch_exa"]
504
+ "disabled_mcps": ["context7", "websearch_exa", "grep_app"]
498
505
  }
499
506
  ```
500
507
 
package/README.md CHANGED
@@ -230,7 +230,7 @@ The plugin works perfectly with defaults. Aside from the recommended `google_aut
230
230
  ### Agents: Your Teammates
231
231
 
232
232
  - **oracle** (`openai/gpt-5.2`): Architecture, code review, strategy. Uses GPT-5.2 for its stellar logical reasoning and deep analysis. Inspired by AmpCode.
233
- - **librarian** (`anthropic/claude-haiku-4-5`): Multi-repo analysis, doc lookup, implementation examples. Haiku is fast, smart enough, great at tool calls, and cheap. Inspired by AmpCode.
233
+ - **librarian** (`anthropic/claude-sonnet-4-5`): Multi-repo analysis, doc lookup, implementation examples. Claude Sonnet 4 is fast, smart, great at tool calls, and excellent for documentation research. Inspired by AmpCode.
234
234
  - **explore** (`opencode/grok-code`): Fast codebase exploration and pattern matching. Claude Code uses Haiku; we use Grok—it's free, blazing fast, and plenty smart for file traversal. Inspired by Claude Code.
235
235
  - **frontend-ui-ux-engineer** (`google/gemini-3-pro-preview`): A designer turned developer. Builds gorgeous UIs. Gemini excels at creative, beautiful UI code.
236
236
  - **document-writer** (`google/gemini-3-pro-preview`): Technical writing expert. Gemini is a wordsmith—writes prose that flows.
@@ -314,7 +314,10 @@ Hand your best tools to your best colleagues. Now they can properly refactor, na
314
314
  - Use PascalCase for interface names
315
315
  - Use camelCase for function names
316
316
  ```
317
- - **Online**: Project rules aren't everything. Built-in exa and context7 MCP for web search.
317
+ - **Online**: Project rules aren't everything. Built-in MCPs for extended capabilities:
318
+ - **context7**: Official documentation lookup
319
+ - **websearch_exa**: Real-time web search
320
+ - **grep_app**: Ultra-fast code search across public GitHub repos (great for finding implementation examples)
318
321
 
319
322
  #### Be Multimodal. Save Tokens.
320
323
 
@@ -485,13 +488,17 @@ Available agents: `oracle`, `librarian`, `explore`, `frontend-ui-ux-engineer`, `
485
488
 
486
489
  ### MCPs
487
490
 
488
- Context7 and Exa MCP enabled by default.
491
+ Context7, Exa, and grep.app MCP enabled by default.
492
+
493
+ - **context7**: Fetches up-to-date official documentation for libraries
494
+ - **websearch_exa**: Real-time web search powered by Exa AI
495
+ - **grep_app**: Ultra-fast code search across millions of public GitHub repositories via [grep.app](https://grep.app)
489
496
 
490
497
  Don't want them? Disable via `disabled_mcps` in `~/.config/opencode/oh-my-opencode.json` or `.opencode/oh-my-opencode.json`:
491
498
 
492
499
  ```json
493
500
  {
494
- "disabled_mcps": ["context7", "websearch_exa"]
501
+ "disabled_mcps": ["context7", "websearch_exa", "grep_app"]
495
502
  }
496
503
  ```
497
504
 
@@ -5,6 +5,7 @@ export declare const AgentNameSchema: z.ZodEnum<{
5
5
  explore: "explore";
6
6
  "frontend-ui-ux-engineer": "frontend-ui-ux-engineer";
7
7
  "document-writer": "document-writer";
8
+ "multimodal-looker": "multimodal-looker";
8
9
  }>;
9
10
  export declare const HookNameSchema: z.ZodEnum<{
10
11
  "comment-checker": "comment-checker";
@@ -300,6 +301,52 @@ export declare const AgentOverridesSchema: z.ZodObject<{
300
301
  }>>;
301
302
  }, z.core.$strip>>;
302
303
  }, z.core.$strip>>>;
304
+ "multimodal-looker": z.ZodOptional<z.ZodOptional<z.ZodObject<{
305
+ model: z.ZodOptional<z.ZodString>;
306
+ temperature: z.ZodOptional<z.ZodNumber>;
307
+ top_p: z.ZodOptional<z.ZodNumber>;
308
+ prompt: z.ZodOptional<z.ZodString>;
309
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
310
+ disable: z.ZodOptional<z.ZodBoolean>;
311
+ description: z.ZodOptional<z.ZodString>;
312
+ mode: z.ZodOptional<z.ZodEnum<{
313
+ subagent: "subagent";
314
+ primary: "primary";
315
+ all: "all";
316
+ }>>;
317
+ color: z.ZodOptional<z.ZodString>;
318
+ permission: z.ZodOptional<z.ZodObject<{
319
+ edit: z.ZodOptional<z.ZodEnum<{
320
+ allow: "allow";
321
+ deny: "deny";
322
+ ask: "ask";
323
+ }>>;
324
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
325
+ allow: "allow";
326
+ deny: "deny";
327
+ ask: "ask";
328
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
329
+ allow: "allow";
330
+ deny: "deny";
331
+ ask: "ask";
332
+ }>>]>>;
333
+ webfetch: z.ZodOptional<z.ZodEnum<{
334
+ allow: "allow";
335
+ deny: "deny";
336
+ ask: "ask";
337
+ }>>;
338
+ doom_loop: z.ZodOptional<z.ZodEnum<{
339
+ allow: "allow";
340
+ deny: "deny";
341
+ ask: "ask";
342
+ }>>;
343
+ external_directory: z.ZodOptional<z.ZodEnum<{
344
+ allow: "allow";
345
+ deny: "deny";
346
+ ask: "ask";
347
+ }>>;
348
+ }, z.core.$strip>>;
349
+ }, z.core.$strip>>>;
303
350
  }, z.core.$strip>;
304
351
  export declare const ClaudeCodeConfigSchema: z.ZodObject<{
305
352
  mcp: z.ZodOptional<z.ZodBoolean>;
@@ -313,6 +360,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
313
360
  disabled_mcps: z.ZodOptional<z.ZodArray<z.ZodEnum<{
314
361
  websearch_exa: "websearch_exa";
315
362
  context7: "context7";
363
+ grep_app: "grep_app";
316
364
  }>>>;
317
365
  disabled_agents: z.ZodOptional<z.ZodArray<z.ZodEnum<{
318
366
  oracle: "oracle";
@@ -320,6 +368,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
320
368
  explore: "explore";
321
369
  "frontend-ui-ux-engineer": "frontend-ui-ux-engineer";
322
370
  "document-writer": "document-writer";
371
+ "multimodal-looker": "multimodal-looker";
323
372
  }>>>;
324
373
  disabled_hooks: z.ZodOptional<z.ZodArray<z.ZodEnum<{
325
374
  "comment-checker": "comment-checker";
@@ -569,6 +618,52 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
569
618
  }>>;
570
619
  }, z.core.$strip>>;
571
620
  }, z.core.$strip>>>;
621
+ "multimodal-looker": z.ZodOptional<z.ZodOptional<z.ZodObject<{
622
+ model: z.ZodOptional<z.ZodString>;
623
+ temperature: z.ZodOptional<z.ZodNumber>;
624
+ top_p: z.ZodOptional<z.ZodNumber>;
625
+ prompt: z.ZodOptional<z.ZodString>;
626
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
627
+ disable: z.ZodOptional<z.ZodBoolean>;
628
+ description: z.ZodOptional<z.ZodString>;
629
+ mode: z.ZodOptional<z.ZodEnum<{
630
+ subagent: "subagent";
631
+ primary: "primary";
632
+ all: "all";
633
+ }>>;
634
+ color: z.ZodOptional<z.ZodString>;
635
+ permission: z.ZodOptional<z.ZodObject<{
636
+ edit: z.ZodOptional<z.ZodEnum<{
637
+ allow: "allow";
638
+ deny: "deny";
639
+ ask: "ask";
640
+ }>>;
641
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
642
+ allow: "allow";
643
+ deny: "deny";
644
+ ask: "ask";
645
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
646
+ allow: "allow";
647
+ deny: "deny";
648
+ ask: "ask";
649
+ }>>]>>;
650
+ webfetch: z.ZodOptional<z.ZodEnum<{
651
+ allow: "allow";
652
+ deny: "deny";
653
+ ask: "ask";
654
+ }>>;
655
+ doom_loop: z.ZodOptional<z.ZodEnum<{
656
+ allow: "allow";
657
+ deny: "deny";
658
+ ask: "ask";
659
+ }>>;
660
+ external_directory: z.ZodOptional<z.ZodEnum<{
661
+ allow: "allow";
662
+ deny: "deny";
663
+ ask: "ask";
664
+ }>>;
665
+ }, z.core.$strip>>;
666
+ }, z.core.$strip>>>;
572
667
  }, z.core.$strip>>;
573
668
  claude_code: z.ZodOptional<z.ZodObject<{
574
669
  mcp: z.ZodOptional<z.ZodBoolean>;
package/dist/index.js CHANGED
@@ -1534,7 +1534,7 @@ IMPORTANT: Only your last message is returned to the main agent and displayed to
1534
1534
  var librarianAgent = {
1535
1535
  description: "Specialized codebase understanding agent for multi-repository analysis, searching remote codebases, retrieving official documentation, and finding implementation examples using GitHub CLI, Context7, and Web Search. MUST BE USED when users ask to look up code in remote repositories, explain library internals, or find usage examples in open source.",
1536
1536
  mode: "subagent",
1537
- model: "anthropic/claude-haiku-4-5",
1537
+ model: "anthropic/claude-sonnet-4-5",
1538
1538
  temperature: 0.1,
1539
1539
  tools: { write: false, edit: false },
1540
1540
  prompt: `# THE LIBRARIAN
@@ -1565,39 +1565,45 @@ Your role is to provide thorough, comprehensive analysis and explanations of cod
1565
1565
  - Explain **WHY** it works that way by citing the actual implementation
1566
1566
  - Provide **permalinks** so users can verify your claims
1567
1567
  4. **SOURCE OF TRUTH**:
1568
+ - For **Fast Reconnaissance**: Use \`grep_app_searchGitHub\` (4+ parallel calls) - instant results from famous repos.
1568
1569
  - For **How-To**: Use \`context7\` (Official Docs) + verify with source code.
1569
- - For **Real-World Usage**: Use \`gh search code\` (GitHub).
1570
+ - For **Real-World Usage**: Use \`grep_app_searchGitHub\` first, then \`gh search code\` for deeper search.
1570
1571
  - For **Internal Logic**: Clone repo to \`/tmp\` and read source directly.
1571
1572
  - For **Change History/Intent**: Use \`git log\` or \`git blame\` (Commit History).
1572
- - For **Local Codebase Context**: Use \`Glob\`, \`Grep\`, \`ast_grep_search\` (File patterns, code search).
1573
- - For **Latest Information**: Use \`WebSearch\` for recent updates, blog posts, discussions.
1573
+ - For **Local Codebase Context**: Use \`glob\`, \`grep\`, \`ast_grep_search\` (File patterns, code search).
1574
+ - For **Latest Information**: Use \`websearch_exa_web_search_exa\` for recent updates, blog posts, discussions.
1574
1575
 
1575
1576
  ## MANDATORY PARALLEL TOOL EXECUTION
1576
1577
 
1577
- **CRITICAL**: You MUST execute **AT LEAST 5 tool calls in parallel** whenever possible.
1578
+ **MINIMUM REQUIREMENT**:
1579
+ - \`grep_app_searchGitHub\`: **4+ parallel calls** (fast reconnaissance)
1580
+ - Other tools: **3+ parallel calls** (authoritative verification)
1578
1581
 
1579
- When starting a research task, launch ALL of these simultaneously:
1580
- 1. \`context7_resolve-library-id\` - Get library documentation ID
1581
- 2. \`gh search code\` - Search for code examples
1582
- 3. \`WebSearch\` - Find latest discussions, blog posts, updates
1583
- 4. \`gh repo clone\` to \`/tmp\` - Clone repo for deep analysis
1584
- 5. \`Glob\` / \`Grep\` - Search local codebase for related code
1585
- 6. \`lsp_goto_definition\` / \`lsp_find_references\` - Trace definitions and usages
1586
- 7. \`ast_grep_search\` - AST-aware pattern matching
1582
+ ### grep_app_searchGitHub - FAST START
1583
+
1584
+ | \u2705 Strengths | \u26A0\uFE0F Limitations |
1585
+ |-------------|----------------|
1586
+ | Sub-second, no rate limits | Index ~1-2 weeks behind |
1587
+ | Million+ public repos | Less famous repos missing |
1588
+
1589
+ **Always vary queries** - function calls, configs, imports, regex patterns.
1590
+
1591
+ ### Example: Researching "React Query caching"
1587
1592
 
1588
- **Example parallel execution**:
1589
1593
  \`\`\`
1590
- // Launch ALL 5+ tools in a SINGLE message:
1591
- - Tool 1: context7_resolve-library-id("react-query")
1592
- - Tool 2: gh search code "useQuery" --repo tanstack/query --language typescript
1593
- - Tool 3: WebSearch("tanstack query v5 migration guide 2024")
1594
- - Tool 4: bash: git clone --depth 1 https://github.com/TanStack/query.git /tmp/tanstack-query
1595
- - Tool 5: Glob("**/*query*.ts") - Find query-related files locally
1596
- - Tool 6: gh api repos/tanstack/query/releases/latest
1597
- - Tool 7: ast_grep_search(pattern: "useQuery($$$)", lang: "typescript")
1594
+ // FAST START - grep_app (4+ calls)
1595
+ grep_app_searchGitHub(query: "staleTime:", language: ["TypeScript", "TSX"])
1596
+ grep_app_searchGitHub(query: "gcTime:", language: ["TypeScript"])
1597
+ grep_app_searchGitHub(query: "queryClient.setQueryData", language: ["TypeScript"])
1598
+ grep_app_searchGitHub(query: "useQuery.*cacheTime", useRegexp: true)
1599
+
1600
+ // AUTHORITATIVE (3+ calls)
1601
+ context7_resolve-library-id("tanstack-query")
1602
+ websearch_exa_web_search_exa(query: "react query v5 caching 2024")
1603
+ bash: gh repo clone tanstack/query /tmp/tanstack-query -- --depth 1
1598
1604
  \`\`\`
1599
1605
 
1600
- **NEVER** execute tools sequentially when they can run in parallel. Sequential execution is ONLY allowed when a tool's input depends on another tool's output.
1606
+ **grep_app = speed & breadth. Other tools = depth & authority. Use BOTH.**
1601
1607
 
1602
1608
  ## TOOL USAGE STANDARDS
1603
1609
 
@@ -1633,8 +1639,8 @@ Use this for authoritative API references and framework guides.
1633
1639
  - **Step 2**: Call \`context7_get-library-docs\` with the ID and a specific topic (e.g., "authentication", "middleware").
1634
1640
  - **IMPORTANT**: Documentation alone is NOT sufficient. Always cross-reference with actual source code.
1635
1641
 
1636
- ### 3. WebSearch - MANDATORY FOR LATEST INFO
1637
- Use WebSearch for:
1642
+ ### 3. websearch_exa_web_search_exa - MANDATORY FOR LATEST INFO
1643
+ Use websearch_exa_web_search_exa for:
1638
1644
  - Latest library updates and changelogs
1639
1645
  - Migration guides and breaking changes
1640
1646
  - Community discussions and best practices
@@ -1642,11 +1648,11 @@ Use WebSearch for:
1642
1648
  - Recent bug reports and workarounds
1643
1649
 
1644
1650
  **Example searches**:
1645
- - \`"react 19 new features 2024"\`
1651
+ - \`"django 6.0 new features 2025"\`
1646
1652
  - \`"tanstack query v5 breaking changes"\`
1647
1653
  - \`"next.js app router migration guide"\`
1648
1654
 
1649
- ### 4. WebFetch
1655
+ ### 4. webfetch
1650
1656
  Use this to read content from URLs found during your search (e.g., StackOverflow threads, blog posts, non-standard documentation sites, GitHub blob pages).
1651
1657
 
1652
1658
  ### 5. Repository Cloning to /tmp
@@ -1686,18 +1692,18 @@ Use this for understanding code evolution and authorial intent.
1686
1692
  - **Getting Permalinks from Blame**:
1687
1693
  - Use commit SHA from blame to construct GitHub permalinks.
1688
1694
 
1689
- ### 7. Local Codebase Search (Glob, Grep, Read)
1695
+ ### 7. Local Codebase Search (glob, grep, read)
1690
1696
  Use these for searching files and patterns in the local codebase.
1691
1697
 
1692
- - **Glob**: Find files by pattern (e.g., \`**/*.tsx\`, \`src/**/auth*.ts\`)
1693
- - **Grep**: Search file contents with regex patterns
1694
- - **Read**: Read specific files when you know the path
1698
+ - **glob**: Find files by pattern (e.g., \`**/*.tsx\`, \`src/**/auth*.ts\`)
1699
+ - **grep**: Search file contents with regex patterns
1700
+ - **read**: Read specific files when you know the path
1695
1701
 
1696
1702
  **Parallel Search Strategy**:
1697
1703
  \`\`\`
1698
1704
  // Launch multiple searches in parallel:
1699
- - Tool 1: Glob("**/*auth*.ts") - Find auth-related files
1700
- - Tool 2: Grep("authentication") - Search for auth patterns
1705
+ - Tool 1: glob("**/*auth*.ts") - Find auth-related files
1706
+ - Tool 2: grep("authentication") - Search for auth patterns
1701
1707
  - Tool 3: ast_grep_search(pattern: "function authenticate($$$)", lang: "typescript")
1702
1708
  \`\`\`
1703
1709
 
@@ -1725,7 +1731,7 @@ Use LSP for finding definitions and references - these are its unique strengths
1725
1731
  - Tool 1: lsp_goto_definition(filePath, line, char) - Find where it's defined
1726
1732
  - Tool 2: lsp_find_references(filePath, line, char) - Find all usages
1727
1733
  - Tool 3: ast_grep_search(...) - Find similar patterns
1728
- - Tool 4: Grep(...) - Text fallback
1734
+ - Tool 4: grep(...) - Text fallback
1729
1735
  \`\`\`
1730
1736
 
1731
1737
  ### 9. AST-grep - AST-AWARE PATTERN SEARCH
@@ -1759,15 +1765,15 @@ ast_grep_search(pattern: "fetch($URL, { method: $METHOD })", lang: "typescript")
1759
1765
 
1760
1766
  **When to Use AST-grep vs Grep**:
1761
1767
  - **AST-grep**: When you need structural matching (e.g., "find all function definitions")
1762
- - **Grep**: When you need text matching (e.g., "find all occurrences of 'TODO'")
1768
+ - **grep**: When you need text matching (e.g., "find all occurrences of 'TODO'")
1763
1769
 
1764
1770
  **Parallel AST-grep Execution**:
1765
1771
  \`\`\`
1766
1772
  // When analyzing a codebase pattern, launch in parallel:
1767
1773
  - Tool 1: ast_grep_search(pattern: "useQuery($$$)", lang: "tsx") - Find hook usage
1768
1774
  - Tool 2: ast_grep_search(pattern: "export function $NAME($$$)", lang: "typescript") - Find exports
1769
- - Tool 3: Grep("useQuery") - Text fallback
1770
- - Tool 4: Glob("**/*query*.ts") - Find query-related files
1775
+ - Tool 3: grep("useQuery") - Text fallback
1776
+ - Tool 4: glob("**/*query*.ts") - Find query-related files
1771
1777
  \`\`\`
1772
1778
 
1773
1779
  ## SEARCH STRATEGY PROTOCOL
@@ -1781,9 +1787,9 @@ When given a request, follow this **STRICT** workflow:
1781
1787
  2. **PARALLEL INVESTIGATION** (Launch 5+ tools simultaneously):
1782
1788
  - \`context7\`: Get official documentation
1783
1789
  - \`gh search code\`: Find implementation examples
1784
- - \`WebSearch\`: Get latest updates and discussions
1790
+ - \`websearch_exa_web_search_exa\`: Get latest updates and discussions
1785
1791
  - \`gh repo clone\`: Clone to /tmp for deep analysis
1786
- - \`Glob\` / \`Grep\` / \`ast_grep_search\`: Search local codebase
1792
+ - \`glob\` / \`grep\` / \`ast_grep_search\`: Search local codebase
1787
1793
  - \`gh api\`: Get release/version information
1788
1794
 
1789
1795
  3. **DEEP SOURCE ANALYSIS**:
@@ -1925,6 +1931,46 @@ Your response has FAILED if:
1925
1931
  - **Using Git CLI extensively for repository insights**
1926
1932
  - **Using LSP tools for semantic code analysis**
1927
1933
  - **Using AST-grep for structural code pattern matching**
1934
+ - **Using grep_app (grep.app MCP) for ultra-fast initial code discovery**
1935
+
1936
+ ## grep_app - FAST STARTING POINT (USE FIRST!)
1937
+
1938
+ **grep_app is your fastest weapon for initial code discovery.** It searches millions of public GitHub repositories instantly.
1939
+
1940
+ ### When to Use grep_app:
1941
+ - **ALWAYS start with grep_app** when searching for code patterns, library usage, or implementation examples
1942
+ - Use it to quickly find how others implement similar features
1943
+ - Great for discovering common patterns and best practices
1944
+
1945
+ ### CRITICAL WARNING:
1946
+ grep_app results may be **OUTDATED** or from **different library versions**. You MUST:
1947
+ 1. Use grep_app results as a **starting point only**
1948
+ 2. **Always launch 5+ grep_app calls in parallel** with different query variations
1949
+ 3. **Always add 2+ other search tools** (Grep, ast_grep, context7, LSP, Git) for verification
1950
+ 4. Never blindly trust grep_app results for API signatures or implementation details
1951
+
1952
+ ### MANDATORY: 5+ grep_app Calls + 2+ Other Tools in Parallel
1953
+
1954
+ **grep_app is ultra-fast but potentially inaccurate.** To compensate, you MUST:
1955
+ - Launch **at least 5 grep_app calls** with different query variations (synonyms, different phrasings, related terms)
1956
+ - Launch **at least 2 other search tools** (local Grep, ast_grep, context7, LSP, Git) for cross-validation
1957
+
1958
+ \`\`\`
1959
+ // REQUIRED parallel search pattern:
1960
+ // 5+ grep_app calls with query variations:
1961
+ - Tool 1: grep_app_searchGitHub(query: "useEffect cleanup", language: ["TypeScript"])
1962
+ - Tool 2: grep_app_searchGitHub(query: "useEffect return cleanup", language: ["TypeScript"])
1963
+ - Tool 3: grep_app_searchGitHub(query: "useEffect unmount", language: ["TSX"])
1964
+ - Tool 4: grep_app_searchGitHub(query: "cleanup function useEffect", language: ["TypeScript"])
1965
+ - Tool 5: grep_app_searchGitHub(query: "useEffect addEventListener removeEventListener", language: ["TypeScript"])
1966
+
1967
+ // 2+ other tools for verification:
1968
+ - Tool 6: Grep("useEffect.*return") - Local codebase ground truth
1969
+ - Tool 7: context7_get-library-docs(libraryID: "/facebook/react", topic: "useEffect cleanup") - Official docs
1970
+ - Tool 8 (optional): ast_grep_search(pattern: "useEffect($$$)", lang: "tsx") - Structural search
1971
+ \`\`\`
1972
+
1973
+ **Pattern**: Flood grep_app with query variations (5+) \u2192 verify with local/official sources (2+) \u2192 trust only cross-validated results.
1928
1974
 
1929
1975
  ## Git CLI - USE EXTENSIVELY
1930
1976
 
@@ -24627,13 +24673,21 @@ var context7 = {
24627
24673
  enabled: true
24628
24674
  };
24629
24675
 
24676
+ // src/mcp/grep-app.ts
24677
+ var grep_app = {
24678
+ type: "remote",
24679
+ url: "https://mcp.grep.app",
24680
+ enabled: true
24681
+ };
24682
+
24630
24683
  // src/mcp/types.ts
24631
- var McpNameSchema = exports_external.enum(["websearch_exa", "context7"]);
24684
+ var McpNameSchema = exports_external.enum(["websearch_exa", "context7", "grep_app"]);
24632
24685
 
24633
24686
  // src/mcp/index.ts
24634
24687
  var allBuiltinMcps = {
24635
24688
  websearch_exa,
24636
- context7
24689
+ context7,
24690
+ grep_app
24637
24691
  };
24638
24692
  function createBuiltinMcps(disabledMcps = []) {
24639
24693
  const mcps = {};
@@ -24663,7 +24717,8 @@ var AgentNameSchema = exports_external.enum([
24663
24717
  "librarian",
24664
24718
  "explore",
24665
24719
  "frontend-ui-ux-engineer",
24666
- "document-writer"
24720
+ "document-writer",
24721
+ "multimodal-looker"
24667
24722
  ]);
24668
24723
  var HookNameSchema = exports_external.enum([
24669
24724
  "todo-continuation-enforcer",
@@ -24699,7 +24754,8 @@ var AgentOverridesSchema = exports_external.object({
24699
24754
  librarian: AgentOverrideConfigSchema.optional(),
24700
24755
  explore: AgentOverrideConfigSchema.optional(),
24701
24756
  "frontend-ui-ux-engineer": AgentOverrideConfigSchema.optional(),
24702
- "document-writer": AgentOverrideConfigSchema.optional()
24757
+ "document-writer": AgentOverrideConfigSchema.optional(),
24758
+ "multimodal-looker": AgentOverrideConfigSchema.optional()
24703
24759
  }).partial();
24704
24760
  var ClaudeCodeConfigSchema = exports_external.object({
24705
24761
  mcp: exports_external.boolean().optional(),
@@ -0,0 +1,5 @@
1
+ export declare const grep_app: {
2
+ type: "remote";
3
+ url: string;
4
+ enabled: boolean;
5
+ };
@@ -2,5 +2,6 @@ import { z } from "zod";
2
2
  export declare const McpNameSchema: z.ZodEnum<{
3
3
  websearch_exa: "websearch_exa";
4
4
  context7: "context7";
5
+ grep_app: "grep_app";
5
6
  }>;
6
7
  export type McpName = z.infer<typeof McpNameSchema>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
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",