oh-my-claudecode-opencode 0.2.1 → 0.3.0
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/assets/agents/analyst.md +85 -0
- package/assets/agents/architect-low.md +88 -0
- package/assets/agents/architect-medium.md +147 -0
- package/assets/agents/architect.md +147 -0
- package/assets/agents/build-fixer-low.md +83 -0
- package/assets/agents/build-fixer.md +160 -0
- package/assets/agents/code-reviewer-low.md +82 -0
- package/assets/agents/code-reviewer.md +155 -0
- package/assets/agents/critic.md +131 -0
- package/assets/agents/designer-high.md +113 -0
- package/assets/agents/designer-low.md +89 -0
- package/assets/agents/designer.md +80 -0
- package/assets/agents/executor-high.md +139 -0
- package/assets/agents/executor-low.md +94 -0
- package/assets/agents/executor.md +78 -0
- package/assets/agents/explore-medium.md +113 -0
- package/assets/agents/explore.md +86 -0
- package/assets/agents/planner.md +299 -0
- package/assets/agents/qa-tester.md +109 -0
- package/assets/agents/researcher-low.md +84 -0
- package/assets/agents/researcher.md +70 -0
- package/assets/agents/scientist-high.md +1023 -0
- package/assets/agents/scientist-low.md +258 -0
- package/assets/agents/scientist.md +1302 -0
- package/assets/agents/security-reviewer-low.md +83 -0
- package/assets/agents/security-reviewer.md +186 -0
- package/assets/agents/tdd-guide-low.md +81 -0
- package/assets/agents/tdd-guide.md +191 -0
- package/assets/agents/vision.md +39 -0
- package/assets/agents/writer.md +152 -0
- package/assets/skills/analyze.md +64 -0
- package/assets/skills/autopilot.md +168 -0
- package/assets/skills/cancel-autopilot.md +53 -0
- package/assets/skills/cancel-ralph.md +43 -0
- package/assets/skills/cancel-ultraqa.md +29 -0
- package/assets/skills/cancel-ultrawork.md +42 -0
- package/assets/skills/deepinit.md +321 -0
- package/assets/skills/deepsearch.md +39 -0
- package/assets/skills/doctor.md +192 -0
- package/assets/skills/frontend-ui-ux.md +53 -0
- package/assets/skills/git-master.md +58 -0
- package/assets/skills/help.md +66 -0
- package/assets/skills/hud.md +239 -0
- package/assets/skills/learner.md +136 -0
- package/assets/skills/mcp-setup.md +196 -0
- package/assets/skills/note.md +63 -0
- package/assets/skills/omc-default-global.md +75 -0
- package/assets/skills/omc-default.md +78 -0
- package/assets/skills/omc-setup.md +245 -0
- package/assets/skills/orchestrate.md +409 -0
- package/assets/skills/plan.md +38 -0
- package/assets/skills/planner.md +106 -0
- package/assets/skills/ralph-init.md +61 -0
- package/assets/skills/ralph.md +136 -0
- package/assets/skills/ralplan.md +272 -0
- package/assets/skills/release.md +84 -0
- package/assets/skills/research.md +511 -0
- package/assets/skills/review.md +37 -0
- package/assets/skills/tdd.md +80 -0
- package/assets/skills/ultraqa.md +123 -0
- package/assets/skills/ultrawork.md +93 -0
- package/dist/agents/index.d.ts +14 -1
- package/dist/agents/loader.d.ts +13 -0
- package/dist/agents/types.d.ts +14 -0
- package/dist/index.js +7269 -131
- package/dist/skills/index.d.ts +14 -0
- package/dist/skills/loader.d.ts +9 -0
- package/dist/skills/types.d.ts +9 -0
- package/package.json +6 -3
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: help
|
|
3
|
+
description: Guide on using oh-my-claudecode plugin
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# How OMC Works
|
|
8
|
+
|
|
9
|
+
**You don't need to learn any commands!** OMC enhances Claude Code with intelligent behaviors that activate automatically.
|
|
10
|
+
|
|
11
|
+
## What Happens Automatically
|
|
12
|
+
|
|
13
|
+
| When You... | I Automatically... |
|
|
14
|
+
|-------------|-------------------|
|
|
15
|
+
| Give me a complex task | Parallelize and delegate to specialist agents |
|
|
16
|
+
| Ask me to plan something | Start a planning interview |
|
|
17
|
+
| Need something done completely | Persist until verified complete |
|
|
18
|
+
| Work on UI/frontend | Activate design sensibility |
|
|
19
|
+
| Say "stop" or "cancel" | Intelligently stop current operation |
|
|
20
|
+
|
|
21
|
+
## Magic Keywords (Optional Shortcuts)
|
|
22
|
+
|
|
23
|
+
You can include these words naturally in your request for explicit control:
|
|
24
|
+
|
|
25
|
+
| Keyword | Effect | Example |
|
|
26
|
+
|---------|--------|---------|
|
|
27
|
+
| **ralph** | Persistence mode | "ralph: fix all the bugs" |
|
|
28
|
+
| **ralplan** | Iterative planning | "ralplan this feature" |
|
|
29
|
+
| **ulw** | Max parallelism | "ulw refactor the API" |
|
|
30
|
+
| **plan** | Planning interview | "plan the new endpoints" |
|
|
31
|
+
|
|
32
|
+
**Combine them:** "ralph ulw: migrate the database"
|
|
33
|
+
|
|
34
|
+
## Stopping Things
|
|
35
|
+
|
|
36
|
+
Just say:
|
|
37
|
+
- "stop"
|
|
38
|
+
- "cancel"
|
|
39
|
+
- "abort"
|
|
40
|
+
|
|
41
|
+
I'll figure out what to stop based on context.
|
|
42
|
+
|
|
43
|
+
## First Time Setup
|
|
44
|
+
|
|
45
|
+
If you haven't configured OMC yet:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
/oh-my-claudecode:omc-setup
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
This is the **only command** you need to know. It downloads the configuration and you're done.
|
|
52
|
+
|
|
53
|
+
## For 2.x Users
|
|
54
|
+
|
|
55
|
+
Your old commands still work! `/ralph`, `/ultrawork`, `/planner`, etc. all function exactly as before.
|
|
56
|
+
|
|
57
|
+
But now you don't NEED them - everything is automatic.
|
|
58
|
+
|
|
59
|
+
## Need More Help?
|
|
60
|
+
|
|
61
|
+
- **README**: https://github.com/Yeachan-Heo/oh-my-claudecode
|
|
62
|
+
- **Issues**: https://github.com/Yeachan-Heo/oh-my-claudecode/issues
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
*Version: 3.0.11*
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hud
|
|
3
|
+
description: Configure HUD display options (layout, presets, display elements)
|
|
4
|
+
user-invocable: true
|
|
5
|
+
role: config-writer # DOCUMENTATION ONLY - This skill writes to ~/.claude/ paths
|
|
6
|
+
scope: ~/.claude/** # DOCUMENTATION ONLY - Allowed write scope
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# HUD Skill
|
|
10
|
+
|
|
11
|
+
Configure the OMC HUD (Heads-Up Display) for the statusline.
|
|
12
|
+
|
|
13
|
+
## Quick Commands
|
|
14
|
+
|
|
15
|
+
| Command | Description |
|
|
16
|
+
|---------|-------------|
|
|
17
|
+
| `/oh-my-claudecode:hud` | Show current HUD status (auto-setup if needed) |
|
|
18
|
+
| `/oh-my-claudecode:hud setup` | Install/repair HUD statusline |
|
|
19
|
+
| `/oh-my-claudecode:hud minimal` | Switch to minimal display |
|
|
20
|
+
| `/oh-my-claudecode:hud focused` | Switch to focused display (default) |
|
|
21
|
+
| `/oh-my-claudecode:hud full` | Switch to full display |
|
|
22
|
+
| `/oh-my-claudecode:hud status` | Show detailed HUD status |
|
|
23
|
+
|
|
24
|
+
## Auto-Setup
|
|
25
|
+
|
|
26
|
+
When you run `/oh-my-claudecode:hud` or `/oh-my-claudecode:hud setup`, the system will automatically:
|
|
27
|
+
1. Check if `~/.claude/hud/omc-hud.mjs` exists
|
|
28
|
+
2. Check if `statusLine` is configured in `~/.claude/settings.json`
|
|
29
|
+
3. If missing, create the HUD wrapper script and configure settings
|
|
30
|
+
4. Report status and prompt to restart Claude Code if changes were made
|
|
31
|
+
|
|
32
|
+
**IMPORTANT**: If the argument is `setup` OR if the HUD script doesn't exist at `~/.claude/hud/omc-hud.mjs`, you MUST create the HUD files directly using the instructions below.
|
|
33
|
+
|
|
34
|
+
### Setup Instructions (Run These Commands)
|
|
35
|
+
|
|
36
|
+
**Step 1:** Check if setup is needed:
|
|
37
|
+
```bash
|
|
38
|
+
ls ~/.claude/hud/omc-hud.mjs 2>/dev/null && echo "EXISTS" || echo "MISSING"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Step 2:** Check if the plugin is built (CRITICAL - common issue!):
|
|
42
|
+
```bash
|
|
43
|
+
# Find the latest version and check if dist/hud/index.js exists
|
|
44
|
+
PLUGIN_VERSION=$(ls ~/.claude/plugins/cache/omc/oh-my-claudecode/ 2>/dev/null | sort -V | tail -1)
|
|
45
|
+
if [ -n "$PLUGIN_VERSION" ]; then
|
|
46
|
+
ls ~/.claude/plugins/cache/omc/oh-my-claudecode/$PLUGIN_VERSION/dist/hud/index.js 2>/dev/null && echo "BUILT" || echo "NOT_BUILT"
|
|
47
|
+
fi
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**If NOT_BUILT**, the plugin needs to be compiled. Run:
|
|
51
|
+
```bash
|
|
52
|
+
cd ~/.claude/plugins/cache/omc/oh-my-claudecode/$PLUGIN_VERSION && npm install
|
|
53
|
+
```
|
|
54
|
+
This will install dependencies and build the TypeScript code automatically (via the `prepare` script).
|
|
55
|
+
|
|
56
|
+
**Step 3:** If omc-hud.mjs is MISSING or argument is `setup`, create the HUD directory and script:
|
|
57
|
+
|
|
58
|
+
First, create the directory:
|
|
59
|
+
```bash
|
|
60
|
+
mkdir -p ~/.claude/hud
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Then, use the Write tool to create `~/.claude/hud/omc-hud.mjs` with this exact content:
|
|
64
|
+
|
|
65
|
+
```javascript
|
|
66
|
+
#!/usr/bin/env node
|
|
67
|
+
/**
|
|
68
|
+
* OMC HUD - Statusline Script
|
|
69
|
+
* Wrapper that imports from plugin cache or development paths
|
|
70
|
+
*/
|
|
71
|
+
|
|
72
|
+
import { existsSync, readdirSync } from "node:fs";
|
|
73
|
+
import { homedir } from "node:os";
|
|
74
|
+
import { join } from "node:path";
|
|
75
|
+
|
|
76
|
+
async function main() {
|
|
77
|
+
const home = homedir();
|
|
78
|
+
|
|
79
|
+
// 1. Try plugin cache first (marketplace: omc, plugin: oh-my-claudecode)
|
|
80
|
+
const pluginCacheBase = join(home, ".claude/plugins/cache/omc/oh-my-claudecode");
|
|
81
|
+
if (existsSync(pluginCacheBase)) {
|
|
82
|
+
try {
|
|
83
|
+
const versions = readdirSync(pluginCacheBase);
|
|
84
|
+
if (versions.length > 0) {
|
|
85
|
+
const latestVersion = versions.sort().reverse()[0];
|
|
86
|
+
const pluginPath = join(pluginCacheBase, latestVersion, "dist/hud/index.js");
|
|
87
|
+
if (existsSync(pluginPath)) {
|
|
88
|
+
await import(pluginPath);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
} catch { /* continue */ }
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// 2. Development paths
|
|
96
|
+
const devPaths = [
|
|
97
|
+
join(home, "Workspace/oh-my-claude-sisyphus/dist/hud/index.js"),
|
|
98
|
+
join(home, "workspace/oh-my-claude-sisyphus/dist/hud/index.js"),
|
|
99
|
+
join(home, "Workspace/oh-my-claudecode/dist/hud/index.js"),
|
|
100
|
+
join(home, "workspace/oh-my-claudecode/dist/hud/index.js"),
|
|
101
|
+
];
|
|
102
|
+
|
|
103
|
+
for (const devPath of devPaths) {
|
|
104
|
+
if (existsSync(devPath)) {
|
|
105
|
+
try {
|
|
106
|
+
await import(devPath);
|
|
107
|
+
return;
|
|
108
|
+
} catch { /* continue */ }
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// 3. Fallback
|
|
113
|
+
console.log("[OMC] run /omc-setup to install properly");
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
main();
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Step 3:** Make it executable:
|
|
120
|
+
```bash
|
|
121
|
+
chmod +x ~/.claude/hud/omc-hud.mjs
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**Step 4:** Update settings.json to use the HUD:
|
|
125
|
+
|
|
126
|
+
Read `~/.claude/settings.json`, then update/add the `statusLine` field:
|
|
127
|
+
```json
|
|
128
|
+
{
|
|
129
|
+
"statusLine": {
|
|
130
|
+
"type": "command",
|
|
131
|
+
"command": "node ~/.claude/hud/omc-hud.mjs"
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Use the Edit tool to add/update this field while preserving other settings.
|
|
137
|
+
|
|
138
|
+
**Step 5:** Clean up old HUD scripts (if any):
|
|
139
|
+
```bash
|
|
140
|
+
rm -f ~/.claude/hud/sisyphus-hud.mjs 2>/dev/null
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Step 6:** Tell the user to restart Claude Code for changes to take effect.
|
|
144
|
+
|
|
145
|
+
## Display Presets
|
|
146
|
+
|
|
147
|
+
### Minimal
|
|
148
|
+
Shows only the essentials:
|
|
149
|
+
```
|
|
150
|
+
[OMC] ralph | ultrawork | todos:2/5
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Focused (Default)
|
|
154
|
+
Shows all relevant elements:
|
|
155
|
+
```
|
|
156
|
+
[OMC] ralph:3/10 | US-002 | ultrawork skill:planner | ctx:67% | agents:2 | bg:3/5 | todos:2/5
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Full
|
|
160
|
+
Shows everything including multi-line agent details:
|
|
161
|
+
```
|
|
162
|
+
[OMC] ralph:3/10 | US-002 (2/5) | ultrawork | ctx:[████░░]67% | agents:3 | bg:3/5 | todos:2/5
|
|
163
|
+
├─ O architect 2m analyzing architecture patterns...
|
|
164
|
+
├─ e explore 45s searching for test files
|
|
165
|
+
└─ s executor 1m implementing validation logic
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Multi-Line Agent Display
|
|
169
|
+
|
|
170
|
+
When agents are running, the HUD shows detailed information on separate lines:
|
|
171
|
+
- **Tree characters** (`├─`, `└─`) show visual hierarchy
|
|
172
|
+
- **Agent code** (O, e, s) indicates agent type with model tier color
|
|
173
|
+
- **Duration** shows how long each agent has been running
|
|
174
|
+
- **Description** shows what each agent is doing (up to 45 chars)
|
|
175
|
+
|
|
176
|
+
## Display Elements
|
|
177
|
+
|
|
178
|
+
| Element | Description |
|
|
179
|
+
|---------|-------------|
|
|
180
|
+
| `[OMC]` | Mode identifier |
|
|
181
|
+
| `ralph:3/10` | Ralph loop iteration/max |
|
|
182
|
+
| `US-002` | Current PRD story ID |
|
|
183
|
+
| `ultrawork` | Active mode badge |
|
|
184
|
+
| `skill:name` | Last activated skill (cyan) |
|
|
185
|
+
| `ctx:67%` | Context window usage |
|
|
186
|
+
| `agents:2` | Running subagent count |
|
|
187
|
+
| `bg:3/5` | Background task slots |
|
|
188
|
+
| `todos:2/5` | Todo completion |
|
|
189
|
+
|
|
190
|
+
## Color Coding
|
|
191
|
+
|
|
192
|
+
- **Green**: Normal/healthy
|
|
193
|
+
- **Yellow**: Warning (context >70%, ralph >7)
|
|
194
|
+
- **Red**: Critical (context >85%, ralph at max)
|
|
195
|
+
|
|
196
|
+
## Configuration Location
|
|
197
|
+
|
|
198
|
+
HUD config is stored at: `~/.claude/.omc/hud-config.json`
|
|
199
|
+
|
|
200
|
+
## Manual Configuration
|
|
201
|
+
|
|
202
|
+
You can manually edit the config file:
|
|
203
|
+
|
|
204
|
+
```json
|
|
205
|
+
{
|
|
206
|
+
"preset": "focused",
|
|
207
|
+
"elements": {
|
|
208
|
+
"omcLabel": true,
|
|
209
|
+
"ralph": true,
|
|
210
|
+
"prdStory": true,
|
|
211
|
+
"activeSkills": true,
|
|
212
|
+
"lastSkill": true,
|
|
213
|
+
"contextBar": true,
|
|
214
|
+
"agents": true,
|
|
215
|
+
"backgroundTasks": true,
|
|
216
|
+
"todos": true
|
|
217
|
+
},
|
|
218
|
+
"thresholds": {
|
|
219
|
+
"contextWarning": 70,
|
|
220
|
+
"contextCritical": 85,
|
|
221
|
+
"ralphWarning": 7
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## Troubleshooting
|
|
227
|
+
|
|
228
|
+
If the HUD is not showing:
|
|
229
|
+
1. Run `/oh-my-claudecode:hud setup` to auto-install and configure
|
|
230
|
+
2. Restart Claude Code after setup completes
|
|
231
|
+
3. If still not working, run `/oh-my-claudecode:doctor` for full diagnostics
|
|
232
|
+
|
|
233
|
+
Manual verification:
|
|
234
|
+
- HUD script: `~/.claude/hud/omc-hud.mjs`
|
|
235
|
+
- Settings: `~/.claude/settings.json` should have `statusLine` configured
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
*The HUD updates automatically every ~300ms during active sessions.*
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: learner
|
|
3
|
+
description: Extract a learned skill from the current conversation
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Learner Skill
|
|
8
|
+
|
|
9
|
+
## The Insight
|
|
10
|
+
|
|
11
|
+
Reusable skills are not code snippets to copy-paste, but **principles and decision-making heuristics** that teach Claude HOW TO THINK about a class of problems.
|
|
12
|
+
|
|
13
|
+
**The difference:**
|
|
14
|
+
- BAD (mimicking): "When you see ConnectionResetError, add this try/except block"
|
|
15
|
+
- GOOD (reusable skill): "In async network code, any I/O operation can fail independently due to client/server lifecycle mismatches. The principle: wrap each I/O operation separately, because failure between operations is the common case, not the exception."
|
|
16
|
+
|
|
17
|
+
A good skill changes how Claude APPROACHES problems, not just what code it produces.
|
|
18
|
+
|
|
19
|
+
## Why This Matters
|
|
20
|
+
|
|
21
|
+
Before extracting a skill, ask yourself:
|
|
22
|
+
- "Could someone Google this in 5 minutes?" → If yes, STOP. Don't extract.
|
|
23
|
+
- "Is this specific to THIS codebase?" → If no, STOP. Don't extract.
|
|
24
|
+
- "Did this take real debugging effort to discover?" → If no, STOP. Don't extract.
|
|
25
|
+
|
|
26
|
+
If a potential skill fails any of these questions, it's not worth saving.
|
|
27
|
+
|
|
28
|
+
## Recognition Pattern
|
|
29
|
+
|
|
30
|
+
Use /oh-my-claudecode:learner ONLY after:
|
|
31
|
+
- Solving a tricky bug that required deep investigation
|
|
32
|
+
- Discovering a non-obvious workaround specific to this codebase
|
|
33
|
+
- Finding a hidden gotcha that wastes time when forgotten
|
|
34
|
+
- Uncovering undocumented behavior that affects this project
|
|
35
|
+
|
|
36
|
+
## The Approach
|
|
37
|
+
|
|
38
|
+
### Extraction Process
|
|
39
|
+
|
|
40
|
+
**Step 1: Gather Required Information**
|
|
41
|
+
|
|
42
|
+
- **Problem Statement**: The SPECIFIC error, symptom, or confusion that occurred
|
|
43
|
+
- Include actual error messages, file paths, line numbers
|
|
44
|
+
- Example: "TypeError in src/hooks/session.ts:45 when sessionId is undefined after restart"
|
|
45
|
+
|
|
46
|
+
- **Solution**: The EXACT fix, not general advice
|
|
47
|
+
- Include code snippets, file paths, configuration changes
|
|
48
|
+
- Example: "Add null check before accessing session.user, regenerate session on 401"
|
|
49
|
+
|
|
50
|
+
- **Triggers**: Keywords that would appear when hitting this problem again
|
|
51
|
+
- Use error message fragments, file names, symptom descriptions
|
|
52
|
+
- Example: ["sessionId undefined", "session.ts TypeError", "401 session"]
|
|
53
|
+
|
|
54
|
+
- **Scope**: Almost always Project-level unless it's a truly universal insight
|
|
55
|
+
|
|
56
|
+
**Step 2: Quality Validation**
|
|
57
|
+
|
|
58
|
+
The system REJECTS skills that are:
|
|
59
|
+
- Too generic (no file paths, line numbers, or specific error messages)
|
|
60
|
+
- Easily Googleable (standard patterns, library usage)
|
|
61
|
+
- Vague solutions (no code snippets or precise instructions)
|
|
62
|
+
- Poor triggers (generic words that match everything)
|
|
63
|
+
|
|
64
|
+
**Step 3: Save Location**
|
|
65
|
+
|
|
66
|
+
- **User-level**: ~/.claude/skills/omc-learned/ - Rare. Only for truly portable insights.
|
|
67
|
+
- **Project-level**: .omc/skills/ - Default. Version-controlled with repo.
|
|
68
|
+
|
|
69
|
+
### What Makes a USEFUL Skill
|
|
70
|
+
|
|
71
|
+
**CRITICAL**: Not every solution is worth saving. A good skill is:
|
|
72
|
+
|
|
73
|
+
1. **Non-Googleable**: Something you couldn't easily find via search
|
|
74
|
+
- BAD: "How to read files in TypeScript" ❌
|
|
75
|
+
- GOOD: "This codebase uses custom path resolution in ESM that requires fileURLToPath + specific relative paths" ✓
|
|
76
|
+
|
|
77
|
+
2. **Context-Specific**: References actual files, error messages, or patterns from THIS codebase
|
|
78
|
+
- BAD: "Use try/catch for error handling" ❌
|
|
79
|
+
- GOOD: "The aiohttp proxy in server.py:42 crashes on ClientDisconnectedError - wrap StreamResponse in try/except" ✓
|
|
80
|
+
|
|
81
|
+
3. **Actionable with Precision**: Tells you exactly WHAT to do and WHERE
|
|
82
|
+
- BAD: "Handle edge cases" ❌
|
|
83
|
+
- GOOD: "When seeing 'Cannot find module' in dist/, check tsconfig.json moduleResolution matches package.json type field" ✓
|
|
84
|
+
|
|
85
|
+
4. **Hard-Won**: Took significant debugging effort to discover
|
|
86
|
+
- BAD: Generic programming patterns ❌
|
|
87
|
+
- GOOD: "Race condition in worker.ts - the Promise.all at line 89 needs await before the map callback returns" ✓
|
|
88
|
+
|
|
89
|
+
### Anti-Patterns (DO NOT EXTRACT)
|
|
90
|
+
|
|
91
|
+
- Generic programming patterns (use documentation instead)
|
|
92
|
+
- Refactoring techniques (these are universal)
|
|
93
|
+
- Library usage examples (use library docs)
|
|
94
|
+
- Type definitions or boilerplate
|
|
95
|
+
- Anything a junior dev could Google in 5 minutes
|
|
96
|
+
|
|
97
|
+
## Skill Format
|
|
98
|
+
|
|
99
|
+
Skills are saved as markdown with this structure:
|
|
100
|
+
|
|
101
|
+
### YAML Frontmatter
|
|
102
|
+
|
|
103
|
+
Standard metadata fields:
|
|
104
|
+
- id, name, description, source, triggers, quality
|
|
105
|
+
|
|
106
|
+
### Body Structure (Required)
|
|
107
|
+
|
|
108
|
+
```markdown
|
|
109
|
+
# [Skill Name]
|
|
110
|
+
|
|
111
|
+
## The Insight
|
|
112
|
+
What is the underlying PRINCIPLE you discovered? Not the code, but the mental model.
|
|
113
|
+
Example: "Async I/O operations are independently failable. Client lifecycle != server lifecycle."
|
|
114
|
+
|
|
115
|
+
## Why This Matters
|
|
116
|
+
What goes wrong if you don't know this? What symptom led you here?
|
|
117
|
+
Example: "Proxy server crashes on client disconnect, taking down other requests."
|
|
118
|
+
|
|
119
|
+
## Recognition Pattern
|
|
120
|
+
How do you know when this skill applies? What are the signs?
|
|
121
|
+
Example: "Building any long-lived connection handler (proxy, websocket, SSE)"
|
|
122
|
+
|
|
123
|
+
## The Approach
|
|
124
|
+
The decision-making heuristic, not just code. How should Claude THINK about this?
|
|
125
|
+
Example: "For each I/O operation, ask: what if this fails right now? Handle it locally."
|
|
126
|
+
|
|
127
|
+
## Example (Optional)
|
|
128
|
+
If code helps, show it - but as illustration of the principle, not copy-paste material.
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Key**: A skill is REUSABLE if Claude can apply it to NEW situations, not just identical ones.
|
|
132
|
+
|
|
133
|
+
## Related Commands
|
|
134
|
+
|
|
135
|
+
- /oh-my-claudecode:note - Save quick notes that survive compaction (less formal than skills)
|
|
136
|
+
- /oh-my-claudecode:ralph - Start a development loop with learning capture
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mcp-setup
|
|
3
|
+
description: Configure popular MCP servers for enhanced agent capabilities
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# MCP Setup
|
|
8
|
+
|
|
9
|
+
Configure Model Context Protocol (MCP) servers to extend Claude Code's capabilities with external tools like web search, file system access, and GitHub integration.
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
MCP servers provide additional tools that Claude Code agents can use. This skill helps you configure popular MCP servers in your `~/.claude/settings.json`.
|
|
14
|
+
|
|
15
|
+
## Step 1: Show Available MCP Servers
|
|
16
|
+
|
|
17
|
+
Present the user with available MCP server options using AskUserQuestion:
|
|
18
|
+
|
|
19
|
+
**Question:** "Which MCP server would you like to configure?"
|
|
20
|
+
|
|
21
|
+
**Options:**
|
|
22
|
+
1. **Context7** - Documentation and code context from popular libraries
|
|
23
|
+
2. **Exa Web Search** - Enhanced web search (replaces built-in websearch)
|
|
24
|
+
3. **Filesystem** - Extended file system access with additional capabilities
|
|
25
|
+
4. **GitHub** - GitHub API integration for issues, PRs, and repository management
|
|
26
|
+
5. **All of the above** - Configure all recommended MCP servers
|
|
27
|
+
6. **Custom** - Add a custom MCP server
|
|
28
|
+
|
|
29
|
+
## Step 2: Gather Required Information
|
|
30
|
+
|
|
31
|
+
### For Context7:
|
|
32
|
+
No API key required. Ready to use immediately.
|
|
33
|
+
|
|
34
|
+
### For Exa Web Search:
|
|
35
|
+
Ask for API key:
|
|
36
|
+
```
|
|
37
|
+
Do you have an Exa API key?
|
|
38
|
+
- Get one at: https://exa.ai
|
|
39
|
+
- Enter your API key, or type 'skip' to configure later
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### For Filesystem:
|
|
43
|
+
Ask for allowed directories:
|
|
44
|
+
```
|
|
45
|
+
Which directories should the filesystem MCP have access to?
|
|
46
|
+
Default: Current working directory
|
|
47
|
+
Enter comma-separated paths, or press Enter for default
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### For GitHub:
|
|
51
|
+
Ask for token:
|
|
52
|
+
```
|
|
53
|
+
Do you have a GitHub Personal Access Token?
|
|
54
|
+
- Create one at: https://github.com/settings/tokens
|
|
55
|
+
- Recommended scopes: repo, read:org
|
|
56
|
+
- Enter your token, or type 'skip' to configure later
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Step 3: Update settings.json
|
|
60
|
+
|
|
61
|
+
Read the current `~/.claude/settings.json` and add/update the `mcpServers` section.
|
|
62
|
+
|
|
63
|
+
### Context7 Configuration:
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"mcpServers": {
|
|
67
|
+
"context7": {
|
|
68
|
+
"command": "npx",
|
|
69
|
+
"args": ["-y", "@context7/mcp"]
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Exa Web Search Configuration:
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"mcpServers": {
|
|
79
|
+
"exa": {
|
|
80
|
+
"command": "npx",
|
|
81
|
+
"args": ["-y", "@anthropic/exa-mcp-server"],
|
|
82
|
+
"env": {
|
|
83
|
+
"EXA_API_KEY": "<user-provided-key>"
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Filesystem Configuration:
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"mcpServers": {
|
|
94
|
+
"filesystem": {
|
|
95
|
+
"command": "npx",
|
|
96
|
+
"args": ["-y", "@anthropic/mcp-server-filesystem", "<allowed-directories>"]
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### GitHub Configuration:
|
|
103
|
+
```json
|
|
104
|
+
{
|
|
105
|
+
"mcpServers": {
|
|
106
|
+
"github": {
|
|
107
|
+
"command": "npx",
|
|
108
|
+
"args": ["-y", "@anthropic/github-mcp-server"],
|
|
109
|
+
"env": {
|
|
110
|
+
"GITHUB_TOKEN": "<user-provided-token>"
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Step 4: Merge Configuration
|
|
118
|
+
|
|
119
|
+
When updating settings.json:
|
|
120
|
+
|
|
121
|
+
1. Read existing file: `~/.claude/settings.json`
|
|
122
|
+
2. Parse as JSON (handle comments with jsonc-parser if needed)
|
|
123
|
+
3. Merge new `mcpServers` entries with existing ones (don't overwrite user's other MCP servers)
|
|
124
|
+
4. Write back to file with proper formatting
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Backup existing settings first
|
|
128
|
+
cp ~/.claude/settings.json ~/.claude/settings.json.bak 2>/dev/null || true
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Use the Edit tool or Write tool to update the settings file, preserving existing configuration.
|
|
132
|
+
|
|
133
|
+
## Step 5: Verify Installation
|
|
134
|
+
|
|
135
|
+
After configuration, verify the MCP servers are properly set up:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Check if settings.json has mcpServers
|
|
139
|
+
grep -q "mcpServers" ~/.claude/settings.json && echo "MCP servers configured" || echo "Configuration may have failed"
|
|
140
|
+
|
|
141
|
+
# List configured servers
|
|
142
|
+
node -e "const s = require('$HOME/.claude/settings.json'); console.log('Configured MCP servers:', Object.keys(s.mcpServers || {}).join(', ') || 'none')"
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Step 6: Show Completion Message
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
MCP Server Configuration Complete!
|
|
149
|
+
|
|
150
|
+
CONFIGURED SERVERS:
|
|
151
|
+
[List the servers that were configured]
|
|
152
|
+
|
|
153
|
+
NEXT STEPS:
|
|
154
|
+
1. Restart Claude Code for changes to take effect
|
|
155
|
+
2. The configured MCP tools will be available to all agents
|
|
156
|
+
|
|
157
|
+
USAGE TIPS:
|
|
158
|
+
- Context7: Ask about library documentation (e.g., "How do I use React hooks?")
|
|
159
|
+
- Exa: Use for web searches (e.g., "Search the web for latest TypeScript features")
|
|
160
|
+
- Filesystem: Extended file operations beyond the working directory
|
|
161
|
+
- GitHub: Interact with GitHub repos, issues, and PRs
|
|
162
|
+
|
|
163
|
+
TROUBLESHOOTING:
|
|
164
|
+
- If MCP servers don't appear, check ~/.claude/settings.json for syntax errors
|
|
165
|
+
- Ensure you have Node.js 18+ installed for npx commands
|
|
166
|
+
- Run /oh-my-claudecode:doctor to diagnose issues
|
|
167
|
+
|
|
168
|
+
To add more MCP servers later, run: /oh-my-claudecode:mcp-setup
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## Custom MCP Server
|
|
172
|
+
|
|
173
|
+
If user selects "Custom":
|
|
174
|
+
|
|
175
|
+
Ask for:
|
|
176
|
+
1. Server name (identifier)
|
|
177
|
+
2. Command to run (e.g., `npx`, `node`, path to executable)
|
|
178
|
+
3. Arguments (comma-separated)
|
|
179
|
+
4. Environment variables (optional, key=value pairs)
|
|
180
|
+
|
|
181
|
+
Then add to mcpServers section accordingly.
|
|
182
|
+
|
|
183
|
+
## Common Issues
|
|
184
|
+
|
|
185
|
+
### MCP Server Not Loading
|
|
186
|
+
- Ensure Node.js 18+ is installed
|
|
187
|
+
- Check that npx is available in PATH
|
|
188
|
+
- Verify no JSON syntax errors in settings.json
|
|
189
|
+
|
|
190
|
+
### API Key Issues
|
|
191
|
+
- Exa: Verify key at https://dashboard.exa.ai
|
|
192
|
+
- GitHub: Ensure token has required scopes
|
|
193
|
+
|
|
194
|
+
### Agents Still Using Built-in Tools
|
|
195
|
+
- Restart Claude Code after configuration
|
|
196
|
+
- The built-in websearch will be deprioritized when exa is configured
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: note
|
|
3
|
+
description: Save notes to notepad.md for compaction resilience
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Note Skill
|
|
8
|
+
|
|
9
|
+
Save important context to `.omc/notepad.md` that survives conversation compaction.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
| Command | Action |
|
|
14
|
+
|---------|--------|
|
|
15
|
+
| `/oh-my-claudecode:note <content>` | Add to Working Memory with timestamp |
|
|
16
|
+
| `/oh-my-claudecode:note --priority <content>` | Add to Priority Context (always loaded) |
|
|
17
|
+
| `/oh-my-claudecode:note --manual <content>` | Add to MANUAL section (never pruned) |
|
|
18
|
+
| `/oh-my-claudecode:note --show` | Display current notepad contents |
|
|
19
|
+
| `/oh-my-claudecode:note --prune` | Remove entries older than 7 days |
|
|
20
|
+
| `/oh-my-claudecode:note --clear` | Clear Working Memory (keep Priority + MANUAL) |
|
|
21
|
+
|
|
22
|
+
## Sections
|
|
23
|
+
|
|
24
|
+
### Priority Context (500 char limit)
|
|
25
|
+
- **Always** injected on session start
|
|
26
|
+
- Use for critical facts: "Project uses pnpm", "API in src/api/client.ts"
|
|
27
|
+
- Keep it SHORT - this eats into your context budget
|
|
28
|
+
|
|
29
|
+
### Working Memory
|
|
30
|
+
- Timestamped session notes
|
|
31
|
+
- Auto-pruned after 7 days
|
|
32
|
+
- Good for: debugging breadcrumbs, temporary findings
|
|
33
|
+
|
|
34
|
+
### MANUAL
|
|
35
|
+
- Never auto-pruned
|
|
36
|
+
- User-controlled permanent notes
|
|
37
|
+
- Good for: team contacts, deployment info
|
|
38
|
+
|
|
39
|
+
## Examples
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
/oh-my-claudecode:note Found auth bug in UserContext - missing useEffect dependency
|
|
43
|
+
/oh-my-claudecode:note --priority Project uses TypeScript strict mode, all files in src/
|
|
44
|
+
/oh-my-claudecode:note --manual Contact: api-team@company.com for backend questions
|
|
45
|
+
/oh-my-claudecode:note --show
|
|
46
|
+
/oh-my-claudecode:note --prune
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Behavior
|
|
50
|
+
|
|
51
|
+
1. Creates `.omc/notepad.md` if it doesn't exist
|
|
52
|
+
2. Parses the argument to determine section
|
|
53
|
+
3. Appends content with timestamp (for Working Memory)
|
|
54
|
+
4. Warns if Priority Context exceeds 500 chars
|
|
55
|
+
5. Confirms what was saved
|
|
56
|
+
|
|
57
|
+
## Integration
|
|
58
|
+
|
|
59
|
+
Notepad content is automatically loaded on session start:
|
|
60
|
+
- Priority Context: ALWAYS loaded
|
|
61
|
+
- Working Memory: Loaded if recent entries exist
|
|
62
|
+
|
|
63
|
+
This helps survive conversation compaction without losing critical context.
|