oh-my-claude-sisyphus 3.7.15 → 3.8.1
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +9 -4
- package/agents/AGENTS.md +8 -8
- package/agents/architect.md +32 -0
- package/agents/build-fixer.md +35 -0
- package/agents/code-reviewer.md +51 -0
- package/agents/executor-high.md +49 -0
- package/agents/explore-high.md +39 -0
- package/agents/explore-medium.md +33 -0
- package/bridge/mcp-server.cjs +57 -1
- package/dist/__tests__/hooks/learner/bridge.test.js +13 -7
- package/dist/__tests__/hooks/learner/bridge.test.js.map +1 -1
- package/dist/__tests__/hooks.test.js +338 -83
- package/dist/__tests__/hooks.test.js.map +1 -1
- package/dist/__tests__/installer.test.js +32 -16
- package/dist/__tests__/installer.test.js.map +1 -1
- package/dist/__tests__/lsp-servers.test.d.ts +2 -0
- package/dist/__tests__/lsp-servers.test.d.ts.map +1 -0
- package/dist/__tests__/lsp-servers.test.js +118 -0
- package/dist/__tests__/lsp-servers.test.js.map +1 -0
- package/dist/__tests__/task-continuation.test.d.ts +2 -0
- package/dist/__tests__/task-continuation.test.d.ts.map +1 -0
- package/dist/__tests__/task-continuation.test.js +740 -0
- package/dist/__tests__/task-continuation.test.js.map +1 -0
- package/dist/hooks/bridge.js +3 -3
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/hooks/clear-suggestions/constants.d.ts +54 -0
- package/dist/hooks/clear-suggestions/constants.d.ts.map +1 -0
- package/dist/hooks/clear-suggestions/constants.js +102 -0
- package/dist/hooks/clear-suggestions/constants.js.map +1 -0
- package/dist/hooks/clear-suggestions/index.d.ts +61 -0
- package/dist/hooks/clear-suggestions/index.d.ts.map +1 -0
- package/dist/hooks/clear-suggestions/index.js +276 -0
- package/dist/hooks/clear-suggestions/index.js.map +1 -0
- package/dist/hooks/clear-suggestions/triggers.d.ts +65 -0
- package/dist/hooks/clear-suggestions/triggers.d.ts.map +1 -0
- package/dist/hooks/clear-suggestions/triggers.js +222 -0
- package/dist/hooks/clear-suggestions/triggers.js.map +1 -0
- package/dist/hooks/clear-suggestions/types.d.ts +92 -0
- package/dist/hooks/clear-suggestions/types.d.ts.map +1 -0
- package/dist/hooks/clear-suggestions/types.js +9 -0
- package/dist/hooks/clear-suggestions/types.js.map +1 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/keyword-detector/__tests__/index.test.js +51 -51
- package/dist/hooks/keyword-detector/__tests__/index.test.js.map +1 -1
- package/dist/hooks/keyword-detector/index.d.ts +1 -1
- package/dist/hooks/keyword-detector/index.d.ts.map +1 -1
- package/dist/hooks/keyword-detector/index.js +18 -5
- package/dist/hooks/keyword-detector/index.js.map +1 -1
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/index.js +6 -3
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/todo-continuation/index.d.ts +111 -3
- package/dist/hooks/todo-continuation/index.d.ts.map +1 -1
- package/dist/hooks/todo-continuation/index.js +204 -23
- package/dist/hooks/todo-continuation/index.js.map +1 -1
- package/dist/installer/index.d.ts +1 -1
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +1 -1
- package/dist/installer/index.js.map +1 -1
- package/dist/tools/lsp/client.d.ts.map +1 -1
- package/dist/tools/lsp/client.js +15 -1
- package/dist/tools/lsp/client.js.map +1 -1
- package/dist/tools/lsp/servers.d.ts.map +1 -1
- package/dist/tools/lsp/servers.js +62 -1
- package/dist/tools/lsp/servers.js.map +1 -1
- package/docs/CLAUDE.md +83 -0
- package/package.json +1 -1
- package/scripts/keyword-detector.mjs +203 -83
- package/scripts/post-tool-verifier.mjs +39 -1
- package/templates/hooks/keyword-detector.sh +197 -31
- package/templates/hooks/persistent-mode.mjs +57 -7
- package/templates/hooks/persistent-mode.sh +62 -5
- package/templates/hooks/stop-continuation.mjs +65 -8
- package/templates/hooks/stop-continuation.sh +57 -4
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{
|
|
11
11
|
"name": "oh-my-claudecode",
|
|
12
12
|
"description": "Claude Code native multi-agent orchestration with intelligent model routing, 28 agent variants, and 30 powerful skills. Zero learning curve. Maximum power.",
|
|
13
|
-
"version": "3.
|
|
13
|
+
"version": "3.8.1",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Yeachan Heo",
|
|
16
16
|
"email": "hurrc04@gmail.com"
|
package/README.md
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
# Oh-My-ClaudeCode
|
|
2
1
|
|
|
3
|
-
[](https://www.npmjs.com/package/oh-my-claude-sisyphus)
|
|
4
|
-
[](https://github.com/sponsors/Yeachan-Heo)
|
|
5
2
|
|
|
6
3
|
|
|
7
|
-

|
|
8
4
|
|
|
9
5
|
# oh-my-claudecode
|
|
10
6
|
|
|
@@ -12,6 +8,7 @@
|
|
|
12
8
|
[](https://www.npmjs.com/package/oh-my-claude-sisyphus)
|
|
13
9
|
[](https://github.com/Yeachan-Heo/oh-my-claudecode/stargazers)
|
|
14
10
|
[](https://opensource.org/licenses/MIT)
|
|
11
|
+
[](https://github.com/sponsors/Yeachan-Heo)
|
|
15
12
|
|
|
16
13
|
**Multi-agent orchestration for Claude Code. Zero learning curve.**
|
|
17
14
|
|
|
@@ -43,6 +40,14 @@ autopilot: build a REST API for managing tasks
|
|
|
43
40
|
|
|
44
41
|
That's it. Everything else is automatic.
|
|
45
42
|
|
|
43
|
+
|
|
44
|
+
<h1 align="center">Your Claude Just Have been Steroided.</h1>
|
|
45
|
+
|
|
46
|
+
<p align="center">
|
|
47
|
+
<img src="assets/omc-character.jpg" alt="oh-my-claudecode" width="400" />
|
|
48
|
+
</p>
|
|
49
|
+
|
|
50
|
+
|
|
46
51
|
---
|
|
47
52
|
|
|
48
53
|
## Why oh-my-claudecode?
|
package/agents/AGENTS.md
CHANGED
|
@@ -126,19 +126,19 @@ None - pure markdown files.
|
|
|
126
126
|
|
|
127
127
|
| Category | Agents | Common Tools |
|
|
128
128
|
|----------|--------|--------------|
|
|
129
|
-
| Analysis | architect, architect-medium, architect-low | Read, Glob, Grep,
|
|
130
|
-
| Execution | executor, executor-low, executor-high | Edit, Write, Bash,
|
|
131
|
-
| Search | explore, explore-medium, explore-high | Read, Glob, Grep |
|
|
129
|
+
| Analysis | architect, architect-medium, architect-low | Read, Glob, Grep, lsp_diagnostics |
|
|
130
|
+
| Execution | executor, executor-low, executor-high | Read, Glob, Grep, Edit, Write, Bash, lsp_diagnostics |
|
|
131
|
+
| Search | explore, explore-medium, explore-high | Read, Glob, Grep, ast_grep_search, lsp_document_symbols, lsp_workspace_symbols |
|
|
132
132
|
| Research | researcher, researcher-low | WebSearch, WebFetch |
|
|
133
133
|
| Frontend | designer, designer-low, designer-high | Edit, Write, Bash |
|
|
134
134
|
| Docs | writer | Edit, Write |
|
|
135
135
|
| Visual | vision | Read, Glob, Grep |
|
|
136
136
|
| Planning | planner, analyst, critic | Read, Glob, Grep |
|
|
137
|
-
| Testing | qa-tester, qa-tester-high | Bash, TodoWrite |
|
|
137
|
+
| Testing | qa-tester, qa-tester-high | Bash, Read, Grep, Glob, TodoWrite, lsp_diagnostics |
|
|
138
138
|
| Security | security-reviewer, security-reviewer-low | Read, Grep, Bash |
|
|
139
|
-
| Build | build-fixer, build-fixer-low | Edit, Write, Bash |
|
|
140
|
-
| TDD | tdd-guide, tdd-guide-low |
|
|
141
|
-
| Review | code-reviewer, code-reviewer-low | Read, Grep, Bash |
|
|
142
|
-
| Data | scientist, scientist-low, scientist-high | Bash, python_repl |
|
|
139
|
+
| Build | build-fixer, build-fixer-low | Read, Glob, Grep, Edit, Write, Bash, lsp_diagnostics, lsp_diagnostics_directory |
|
|
140
|
+
| TDD | tdd-guide, tdd-guide-low | Read, Grep, Glob, Bash, lsp_diagnostics |
|
|
141
|
+
| Review | code-reviewer, code-reviewer-low | Read, Grep, Glob, Bash, lsp_diagnostics |
|
|
142
|
+
| Data | scientist, scientist-low, scientist-high | Read, Glob, Grep, Bash, python_repl |
|
|
143
143
|
|
|
144
144
|
<!-- MANUAL: -->
|
package/agents/architect.md
CHANGED
|
@@ -99,6 +99,38 @@ Before expressing confidence in ANY diagnosis or analysis:
|
|
|
99
99
|
- Dependency chain documentation
|
|
100
100
|
</Verification_Before_Completion>
|
|
101
101
|
|
|
102
|
+
<Tool_Strategy>
|
|
103
|
+
## MCP Tools Available
|
|
104
|
+
|
|
105
|
+
You have access to semantic analysis tools beyond basic search:
|
|
106
|
+
|
|
107
|
+
| Tool | Purpose | When to Use |
|
|
108
|
+
|------|---------|-------------|
|
|
109
|
+
| `lsp_diagnostics` | Get errors/warnings for a single file | Verify specific file has no type errors |
|
|
110
|
+
| `lsp_diagnostics_directory` | Project-wide type checking | Verify entire project compiles cleanly |
|
|
111
|
+
| `ast_grep_search` | Structural code pattern matching | Find code by shape (e.g., "all functions that return Promise") |
|
|
112
|
+
|
|
113
|
+
### Tool Selection
|
|
114
|
+
- **Semantic search** (types, definitions, references): Use LSP diagnostics
|
|
115
|
+
- **Structural patterns** (function shapes, class structures): Use `ast_grep_search`
|
|
116
|
+
- **Text patterns** (strings, comments, logs): Use `grep`
|
|
117
|
+
- **File patterns** (find by name/extension): Use `glob`
|
|
118
|
+
|
|
119
|
+
### Example: ast_grep_search
|
|
120
|
+
Find all async functions that don't have try/catch:
|
|
121
|
+
```
|
|
122
|
+
ast_grep_search(pattern="async function $NAME($$$ARGS) { $$$BODY }", language="typescript")
|
|
123
|
+
```
|
|
124
|
+
Then filter results for missing error handling.
|
|
125
|
+
|
|
126
|
+
### Example: lsp_diagnostics_directory
|
|
127
|
+
Before concluding analysis, verify project health:
|
|
128
|
+
```
|
|
129
|
+
lsp_diagnostics_directory(directory="/path/to/project", strategy="auto")
|
|
130
|
+
```
|
|
131
|
+
Use this to catch type errors your recommendations might introduce.
|
|
132
|
+
</Tool_Strategy>
|
|
133
|
+
|
|
102
134
|
<Systematic_Debugging_Protocol>
|
|
103
135
|
## Iron Law: NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
|
|
104
136
|
|
package/agents/build-fixer.md
CHANGED
|
@@ -28,6 +28,41 @@ FIRST: Detect project type by checking for manifest files:
|
|
|
28
28
|
- `pom.xml` or `build.gradle` → Java (use javac, maven/gradle)
|
|
29
29
|
- None found → Use generic approach, ask user
|
|
30
30
|
|
|
31
|
+
## MCP Diagnostic Tools
|
|
32
|
+
|
|
33
|
+
Beyond CLI commands, you have access to LSP-based diagnostics:
|
|
34
|
+
|
|
35
|
+
| Tool | Purpose | When to Use |
|
|
36
|
+
|------|---------|-------------|
|
|
37
|
+
| `lsp_diagnostics` | Get errors/warnings for a single file | Quick check on specific file |
|
|
38
|
+
| `lsp_diagnostics_directory` | Project-wide type checking | **PREFERRED** for TypeScript projects |
|
|
39
|
+
|
|
40
|
+
### lsp_diagnostics_directory (Recommended)
|
|
41
|
+
|
|
42
|
+
For TypeScript/JavaScript projects, prefer `lsp_diagnostics_directory` over running `tsc` manually:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
lsp_diagnostics_directory(directory="/path/to/project", strategy="auto")
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Why prefer this:**
|
|
49
|
+
- Uses `tsc --noEmit` internally (fast, no output files)
|
|
50
|
+
- Returns structured error data (file, line, character, message)
|
|
51
|
+
- Easier to parse than CLI output
|
|
52
|
+
- Automatically falls back to LSP if tsc unavailable
|
|
53
|
+
|
|
54
|
+
**Strategy options:**
|
|
55
|
+
- `auto` (default): Prefers tsc if tsconfig.json exists, falls back to LSP
|
|
56
|
+
- `tsc`: Force TypeScript compiler
|
|
57
|
+
- `lsp`: Force Language Server Protocol iteration
|
|
58
|
+
|
|
59
|
+
### Workflow Integration
|
|
60
|
+
|
|
61
|
+
1. **Initial diagnosis**: `lsp_diagnostics_directory` to get all errors
|
|
62
|
+
2. **Fix errors**: Edit files to resolve issues
|
|
63
|
+
3. **Verify fix**: `lsp_diagnostics` on each modified file
|
|
64
|
+
4. **Final check**: `lsp_diagnostics_directory` to confirm all clear
|
|
65
|
+
|
|
31
66
|
## Diagnostic Commands
|
|
32
67
|
|
|
33
68
|
### TypeScript/JavaScript
|
package/agents/code-reviewer.md
CHANGED
|
@@ -17,6 +17,57 @@ When invoked:
|
|
|
17
17
|
3. Begin review immediately
|
|
18
18
|
4. Provide severity-rated feedback
|
|
19
19
|
|
|
20
|
+
## MCP Analysis Tools
|
|
21
|
+
|
|
22
|
+
You have access to semantic analysis tools for deeper code review:
|
|
23
|
+
|
|
24
|
+
| Tool | Purpose | When to Use |
|
|
25
|
+
|------|---------|-------------|
|
|
26
|
+
| `lsp_diagnostics` | Get type errors/warnings for a file | Verify modified files have no type issues |
|
|
27
|
+
| `ast_grep_search` | Structural code pattern matching | Find code smells by pattern |
|
|
28
|
+
|
|
29
|
+
### ast_grep_search for Code Review
|
|
30
|
+
|
|
31
|
+
Use `ast_grep_search` to detect patterns programmatically:
|
|
32
|
+
|
|
33
|
+
**Security patterns:**
|
|
34
|
+
```
|
|
35
|
+
# Find hardcoded secrets
|
|
36
|
+
ast_grep_search(pattern="apiKey = \"$VALUE\"", language="typescript")
|
|
37
|
+
ast_grep_search(pattern="password = \"$VALUE\"", language="typescript")
|
|
38
|
+
|
|
39
|
+
# Find SQL injection risks
|
|
40
|
+
ast_grep_search(pattern="query($SQL + $INPUT)", language="typescript")
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Code quality patterns:**
|
|
44
|
+
```
|
|
45
|
+
# Find console.log statements (should be removed)
|
|
46
|
+
ast_grep_search(pattern="console.log($$$ARGS)", language="typescript")
|
|
47
|
+
|
|
48
|
+
# Find empty catch blocks
|
|
49
|
+
ast_grep_search(pattern="catch ($E) { }", language="typescript")
|
|
50
|
+
|
|
51
|
+
# Find TODO comments (use grep for this, not ast_grep)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### lsp_diagnostics for Type Safety
|
|
55
|
+
|
|
56
|
+
Before approving any code change:
|
|
57
|
+
```
|
|
58
|
+
lsp_diagnostics(file="/path/to/modified/file.ts")
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
If diagnostics return errors, the code should NOT be approved until type issues are resolved.
|
|
62
|
+
|
|
63
|
+
### Review Enhancement Workflow
|
|
64
|
+
|
|
65
|
+
1. Run `git diff` to see changes
|
|
66
|
+
2. For each modified file:
|
|
67
|
+
- `lsp_diagnostics` to verify type safety
|
|
68
|
+
- `ast_grep_search` to check for problematic patterns
|
|
69
|
+
3. Proceed with manual review checklist
|
|
70
|
+
|
|
20
71
|
## Two-Stage Review Process (MANDATORY)
|
|
21
72
|
|
|
22
73
|
**Iron Law: Spec compliance BEFORE code quality. Both are LOOPS.**
|
package/agents/executor-high.md
CHANGED
|
@@ -29,6 +29,55 @@ Deep reasoning for multi-file, system-wide changes. Work ALONE - no delegation.
|
|
|
29
29
|
You are the highest execution tier. For consultation on approach, the orchestrator should use `oracle` before delegating to you.
|
|
30
30
|
</Complexity_Boundary>
|
|
31
31
|
|
|
32
|
+
<Tool_Strategy>
|
|
33
|
+
## MCP Tools Available
|
|
34
|
+
|
|
35
|
+
You have access to powerful semantic analysis and transformation tools:
|
|
36
|
+
|
|
37
|
+
| Tool | Purpose | When to Use |
|
|
38
|
+
|------|---------|-------------|
|
|
39
|
+
| `lsp_diagnostics` | Get errors/warnings for a single file | Verify file after editing |
|
|
40
|
+
| `lsp_diagnostics_directory` | Project-wide type checking | Verify entire project after multi-file changes |
|
|
41
|
+
| `ast_grep_search` | Structural code pattern matching | Find code by shape before transformation |
|
|
42
|
+
| `ast_grep_replace` | Structural code transformation | Refactor patterns across codebase (UNIQUE TO YOU) |
|
|
43
|
+
|
|
44
|
+
### ast_grep_replace (Your Unique Capability)
|
|
45
|
+
You are the ONLY executor with `ast_grep_replace`. Use it for:
|
|
46
|
+
- Renaming patterns across files
|
|
47
|
+
- Migrating API calls (e.g., `console.log($MSG)` -> `logger.info($MSG)`)
|
|
48
|
+
- Bulk refactoring that follows consistent patterns
|
|
49
|
+
- Converting code structures (e.g., callbacks to promises)
|
|
50
|
+
|
|
51
|
+
**Critical:** Always use `dryRun=true` first to preview changes before applying.
|
|
52
|
+
|
|
53
|
+
### Tool Selection
|
|
54
|
+
- **Find then transform**: `ast_grep_search` to find targets, `ast_grep_replace` to transform
|
|
55
|
+
- **Verify after changes**: `lsp_diagnostics_directory` on the entire project
|
|
56
|
+
- **Per-file verification**: `lsp_diagnostics` on each modified file
|
|
57
|
+
|
|
58
|
+
### Example: Bulk Refactor
|
|
59
|
+
```
|
|
60
|
+
# Step 1: Preview what will change
|
|
61
|
+
ast_grep_replace(
|
|
62
|
+
pattern="console.log($MSG)",
|
|
63
|
+
replacement="logger.info($MSG)",
|
|
64
|
+
language="typescript",
|
|
65
|
+
dryRun=true
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
# Step 2: Apply changes
|
|
69
|
+
ast_grep_replace(
|
|
70
|
+
pattern="console.log($MSG)",
|
|
71
|
+
replacement="logger.info($MSG)",
|
|
72
|
+
language="typescript",
|
|
73
|
+
dryRun=false
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
# Step 3: Verify
|
|
77
|
+
lsp_diagnostics_directory(directory="/path/to/project")
|
|
78
|
+
```
|
|
79
|
+
</Tool_Strategy>
|
|
80
|
+
|
|
32
81
|
<Critical_Constraints>
|
|
33
82
|
BLOCKED ACTIONS:
|
|
34
83
|
- Task tool: BLOCKED (no delegation)
|
package/agents/explore-high.md
CHANGED
|
@@ -50,6 +50,45 @@ FORBIDDEN:
|
|
|
50
50
|
- Creating files to store results
|
|
51
51
|
</Critical_Constraints>
|
|
52
52
|
|
|
53
|
+
<Tier_Specific_Tools>
|
|
54
|
+
## Your Tool Set (Inherited + Unique)
|
|
55
|
+
|
|
56
|
+
You inherit the base `explore` agent's tools plus one unique capability:
|
|
57
|
+
|
|
58
|
+
| Tool | Purpose | Notes |
|
|
59
|
+
|------|---------|-------|
|
|
60
|
+
| `ast_grep_search` | Structural code pattern matching | Inherited from base |
|
|
61
|
+
| `lsp_document_symbols` | Get outline of all symbols in a file | Inherited from base |
|
|
62
|
+
| `lsp_workspace_symbols` | Search for symbols by name across workspace | Inherited from base |
|
|
63
|
+
| `lsp_find_references` | Find ALL usages of a symbol | **UNIQUE TO YOU** |
|
|
64
|
+
|
|
65
|
+
### lsp_find_references (Your Unique Capability)
|
|
66
|
+
You are the ONLY explore agent with `lsp_find_references`. This is critical for:
|
|
67
|
+
- Impact analysis: "What will break if I change this?"
|
|
68
|
+
- Dependency tracing: "Who calls this function?"
|
|
69
|
+
- Refactoring preparation: "Where is this type used?"
|
|
70
|
+
- Dead code detection: "Is this function ever called?"
|
|
71
|
+
|
|
72
|
+
**Usage:**
|
|
73
|
+
```
|
|
74
|
+
lsp_find_references(file="/path/to/file.ts", line=42, character=10)
|
|
75
|
+
```
|
|
76
|
+
Returns all locations where the symbol at that position is used.
|
|
77
|
+
|
|
78
|
+
### Tool Selection Strategy
|
|
79
|
+
- **Need all usages of a specific symbol?** Use `lsp_find_references`
|
|
80
|
+
- **Need symbol by name (don't know location)?** Use `lsp_workspace_symbols` first, then `lsp_find_references`
|
|
81
|
+
- **Need structural patterns?** Use `ast_grep_search`
|
|
82
|
+
- **Need file symbol outline?** Use `lsp_document_symbols`
|
|
83
|
+
|
|
84
|
+
### Architectural Analysis Pattern
|
|
85
|
+
For comprehensive architectural understanding:
|
|
86
|
+
1. `lsp_workspace_symbols` to find key abstractions
|
|
87
|
+
2. `lsp_find_references` on each to map usage patterns
|
|
88
|
+
3. `ast_grep_search` for structural patterns not captured by symbols
|
|
89
|
+
4. Synthesize into architectural understanding
|
|
90
|
+
</Tier_Specific_Tools>
|
|
91
|
+
|
|
53
92
|
<Workflow>
|
|
54
93
|
## Phase 1: Architectural Intent Analysis
|
|
55
94
|
Before searching, understand:
|
package/agents/explore-medium.md
CHANGED
|
@@ -41,6 +41,39 @@ FORBIDDEN:
|
|
|
41
41
|
- Creating files to store results
|
|
42
42
|
</Critical_Constraints>
|
|
43
43
|
|
|
44
|
+
<Tier_Specific_Tools>
|
|
45
|
+
## Your Tool Set (Inherited + Enhanced)
|
|
46
|
+
|
|
47
|
+
You inherit the base `explore` agent's "Tool Strategy" section. Your tools:
|
|
48
|
+
|
|
49
|
+
| Tool | Purpose |
|
|
50
|
+
|------|---------|
|
|
51
|
+
| `ast_grep_search` | Structural code pattern matching |
|
|
52
|
+
| `lsp_document_symbols` | Get outline of all symbols in a file |
|
|
53
|
+
| `lsp_workspace_symbols` | Search for symbols by name across workspace |
|
|
54
|
+
|
|
55
|
+
### Sonnet-Tier Advantage
|
|
56
|
+
Your deeper reasoning enables:
|
|
57
|
+
- More complex `ast_grep_search` patterns
|
|
58
|
+
- Better interpretation of symbol relationships
|
|
59
|
+
- Cross-module pattern synthesis
|
|
60
|
+
|
|
61
|
+
Use LSP symbol tools when you need **semantic understanding** (types, definitions, relationships).
|
|
62
|
+
Use `ast_grep_search` when you need **structural patterns** (code shapes, regardless of names).
|
|
63
|
+
Use `grep` when you need **text patterns** (strings, comments, literals).
|
|
64
|
+
|
|
65
|
+
### When to Use LSP Symbols
|
|
66
|
+
```
|
|
67
|
+
# Get all symbols in a file (functions, classes, variables)
|
|
68
|
+
lsp_document_symbols(file="/path/to/file.ts")
|
|
69
|
+
|
|
70
|
+
# Find a symbol by name across the entire workspace
|
|
71
|
+
lsp_workspace_symbols(query="UserService", file="/path/to/any/file.ts")
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Note: For finding all **usages** of a symbol, escalate to `explore-high` which has `lsp_find_references`.
|
|
75
|
+
</Tier_Specific_Tools>
|
|
76
|
+
|
|
44
77
|
<Workflow>
|
|
45
78
|
## Phase 1: Intent Analysis
|
|
46
79
|
Before searching, understand:
|
package/bridge/mcp-server.cjs
CHANGED
|
@@ -17831,6 +17831,48 @@ var LSP_SERVERS = {
|
|
|
17831
17831
|
args: ["--stdio"],
|
|
17832
17832
|
extensions: [".yaml", ".yml"],
|
|
17833
17833
|
installHint: "npm install -g yaml-language-server"
|
|
17834
|
+
},
|
|
17835
|
+
php: {
|
|
17836
|
+
name: "PHP Language Server (Intelephense)",
|
|
17837
|
+
command: "intelephense",
|
|
17838
|
+
args: ["--stdio"],
|
|
17839
|
+
extensions: [".php", ".phtml"],
|
|
17840
|
+
installHint: "npm install -g intelephense"
|
|
17841
|
+
},
|
|
17842
|
+
ruby: {
|
|
17843
|
+
name: "Ruby Language Server (Solargraph)",
|
|
17844
|
+
command: "solargraph",
|
|
17845
|
+
args: ["stdio"],
|
|
17846
|
+
extensions: [".rb", ".rake", ".gemspec", ".erb"],
|
|
17847
|
+
installHint: "gem install solargraph"
|
|
17848
|
+
},
|
|
17849
|
+
lua: {
|
|
17850
|
+
name: "Lua Language Server",
|
|
17851
|
+
command: "lua-language-server",
|
|
17852
|
+
args: [],
|
|
17853
|
+
extensions: [".lua"],
|
|
17854
|
+
installHint: "Install from https://github.com/LuaLS/lua-language-server"
|
|
17855
|
+
},
|
|
17856
|
+
kotlin: {
|
|
17857
|
+
name: "Kotlin Language Server",
|
|
17858
|
+
command: "kotlin-language-server",
|
|
17859
|
+
args: [],
|
|
17860
|
+
extensions: [".kt", ".kts"],
|
|
17861
|
+
installHint: "Install from https://github.com/fwcd/kotlin-language-server"
|
|
17862
|
+
},
|
|
17863
|
+
elixir: {
|
|
17864
|
+
name: "ElixirLS",
|
|
17865
|
+
command: "elixir-ls",
|
|
17866
|
+
args: [],
|
|
17867
|
+
extensions: [".ex", ".exs", ".heex", ".eex"],
|
|
17868
|
+
installHint: "Install from https://github.com/elixir-lsp/elixir-ls"
|
|
17869
|
+
},
|
|
17870
|
+
csharp: {
|
|
17871
|
+
name: "OmniSharp",
|
|
17872
|
+
command: "omnisharp",
|
|
17873
|
+
args: ["-lsp"],
|
|
17874
|
+
extensions: [".cs"],
|
|
17875
|
+
installHint: "dotnet tool install -g omnisharp"
|
|
17834
17876
|
}
|
|
17835
17877
|
};
|
|
17836
17878
|
function commandExists(command) {
|
|
@@ -18121,7 +18163,21 @@ ${content}`;
|
|
|
18121
18163
|
"css": "css",
|
|
18122
18164
|
"scss": "scss",
|
|
18123
18165
|
"yaml": "yaml",
|
|
18124
|
-
"yml": "yaml"
|
|
18166
|
+
"yml": "yaml",
|
|
18167
|
+
"php": "php",
|
|
18168
|
+
"phtml": "php",
|
|
18169
|
+
"rb": "ruby",
|
|
18170
|
+
"rake": "ruby",
|
|
18171
|
+
"gemspec": "ruby",
|
|
18172
|
+
"erb": "ruby",
|
|
18173
|
+
"lua": "lua",
|
|
18174
|
+
"kt": "kotlin",
|
|
18175
|
+
"kts": "kotlin",
|
|
18176
|
+
"ex": "elixir",
|
|
18177
|
+
"exs": "elixir",
|
|
18178
|
+
"heex": "elixir",
|
|
18179
|
+
"eex": "elixir",
|
|
18180
|
+
"cs": "csharp"
|
|
18125
18181
|
};
|
|
18126
18182
|
return langMap[ext] || ext;
|
|
18127
18183
|
}
|
|
@@ -33,9 +33,11 @@ describe('Skill Bridge Module', () => {
|
|
|
33
33
|
mkdirSync(skillsDir, { recursive: true });
|
|
34
34
|
writeFileSync(join(skillsDir, 'test-skill.md'), '---\nname: Test Skill\ntriggers:\n - test\n---\nContent');
|
|
35
35
|
const files = findSkillFiles(testProjectRoot);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
expect(
|
|
36
|
+
// Filter to project scope to isolate from user's global skills
|
|
37
|
+
const projectFiles = files.filter((f) => f.scope === 'project');
|
|
38
|
+
expect(projectFiles).toHaveLength(1);
|
|
39
|
+
expect(projectFiles[0].scope).toBe('project');
|
|
40
|
+
expect(projectFiles[0].path).toContain('test-skill.md');
|
|
39
41
|
});
|
|
40
42
|
it('should discover skills recursively in subdirectories', () => {
|
|
41
43
|
const skillsDir = join(testProjectRoot, '.omc', 'skills');
|
|
@@ -44,8 +46,10 @@ describe('Skill Bridge Module', () => {
|
|
|
44
46
|
writeFileSync(join(skillsDir, 'root-skill.md'), '---\nname: Root\ntriggers:\n - root\n---\nRoot content');
|
|
45
47
|
writeFileSync(join(subDir, 'nested-skill.md'), '---\nname: Nested\ntriggers:\n - nested\n---\nNested content');
|
|
46
48
|
const files = findSkillFiles(testProjectRoot);
|
|
47
|
-
|
|
48
|
-
const
|
|
49
|
+
// Filter to project scope to isolate from user's global skills
|
|
50
|
+
const projectFiles = files.filter((f) => f.scope === 'project');
|
|
51
|
+
expect(projectFiles).toHaveLength(2);
|
|
52
|
+
const names = projectFiles.map((f) => f.path);
|
|
49
53
|
expect(names.some((n) => n.includes('root-skill.md'))).toBe(true);
|
|
50
54
|
expect(names.some((n) => n.includes('nested-skill.md'))).toBe(true);
|
|
51
55
|
});
|
|
@@ -56,8 +60,10 @@ describe('Skill Bridge Module', () => {
|
|
|
56
60
|
writeFileSync(join(skillsDir, 'invalid.txt'), 'Not a skill');
|
|
57
61
|
writeFileSync(join(skillsDir, 'README'), 'Documentation');
|
|
58
62
|
const files = findSkillFiles(testProjectRoot);
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
// Filter to project scope to isolate from user's global skills
|
|
64
|
+
const projectFiles = files.filter((f) => f.scope === 'project');
|
|
65
|
+
expect(projectFiles).toHaveLength(1);
|
|
66
|
+
expect(projectFiles[0].path).toContain('valid.md');
|
|
61
67
|
});
|
|
62
68
|
});
|
|
63
69
|
describe('parseSkillFile', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.test.js","sourceRoot":"","sources":["../../../../src/__tests__/hooks/learner/bridge.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EACL,cAAc,EACd,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,kCAAkC,CAAC;AAE1C,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,eAAuB,CAAC;IAC5B,IAAI,WAAmB,CAAC;IAExB,UAAU,CAAC,GAAG,EAAE;QACd,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC5B,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAClE,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3B,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC1D,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE1C,aAAa,CACX,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAChC,0DAA0D,CAC3D,CAAC;YAEF,MAAM,KAAK,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge.test.js","sourceRoot":"","sources":["../../../../src/__tests__/hooks/learner/bridge.test.ts"],"names":[],"mappings":"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"}
|