oh-my-claude-sisyphus 3.5.6 → 3.5.7
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.md +58 -343
- package/commands/omc-setup.md +51 -0
- package/dist/__tests__/analytics/tokscale-adapter.test.d.ts +2 -0
- package/dist/__tests__/analytics/tokscale-adapter.test.d.ts.map +1 -0
- package/dist/__tests__/analytics/tokscale-adapter.test.js +79 -0
- package/dist/__tests__/analytics/tokscale-adapter.test.js.map +1 -0
- package/dist/analytics/cost-estimator.d.ts +14 -0
- package/dist/analytics/cost-estimator.d.ts.map +1 -1
- package/dist/analytics/cost-estimator.js +65 -0
- package/dist/analytics/cost-estimator.js.map +1 -1
- package/dist/analytics/index.d.ts +1 -0
- package/dist/analytics/index.d.ts.map +1 -1
- package/dist/analytics/index.js +4 -0
- package/dist/analytics/index.js.map +1 -1
- package/dist/analytics/query-engine.d.ts +3 -0
- package/dist/analytics/query-engine.d.ts.map +1 -1
- package/dist/analytics/query-engine.js +87 -0
- package/dist/analytics/query-engine.js.map +1 -1
- package/dist/analytics/token-tracker.d.ts +3 -0
- package/dist/analytics/token-tracker.d.ts.map +1 -1
- package/dist/analytics/token-tracker.js +89 -0
- package/dist/analytics/token-tracker.js.map +1 -1
- package/dist/analytics/tokscale-adapter.d.ts +71 -0
- package/dist/analytics/tokscale-adapter.d.ts.map +1 -0
- package/dist/analytics/tokscale-adapter.js +223 -0
- package/dist/analytics/tokscale-adapter.js.map +1 -0
- package/dist/analytics/types.d.ts +17 -0
- package/dist/analytics/types.d.ts.map +1 -1
- package/dist/analytics/types.js +5 -0
- package/dist/analytics/types.js.map +1 -1
- package/dist/cli/analytics.js +35 -0
- package/dist/cli/analytics.js.map +1 -1
- package/dist/cli/commands/agents.d.ts.map +1 -1
- package/dist/cli/commands/agents.js +4 -2
- package/dist/cli/commands/agents.js.map +1 -1
- package/dist/cli/commands/stats.d.ts.map +1 -1
- package/dist/cli/commands/stats.js +6 -1
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/index.js +95 -35
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/tokscale-launcher.d.ts +18 -0
- package/dist/cli/utils/tokscale-launcher.d.ts.map +1 -0
- package/dist/cli/utils/tokscale-launcher.js +64 -0
- package/dist/cli/utils/tokscale-launcher.js.map +1 -0
- package/dist/features/auto-update.js +5 -5
- package/dist/features/auto-update.js.map +1 -1
- package/dist/hud/types.d.ts +6 -2
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js.map +1 -1
- package/dist/hud/usage-api.d.ts.map +1 -1
- package/dist/hud/usage-api.js +13 -1
- package/dist/hud/usage-api.js.map +1 -1
- package/docs/ARCHITECTURE.md +80 -397
- package/docs/FEATURES.md +396 -1981
- package/docs/MIGRATION.md +4 -4
- package/docs/REFERENCE.md +545 -0
- package/docs/SYNC-SYSTEM.md +6 -6
- package/package.json +2 -1
- package/scripts/sync-metadata.ts +2 -2
- package/skills/omc-setup/SKILL.md +51 -0
- package/docs/FULL-README.md +0 -1001
package/README.md
CHANGED
|
@@ -11,407 +11,122 @@
|
|
|
11
11
|
|
|
12
12
|
**Multi-agent orchestration for Claude Code. Zero learning curve.**
|
|
13
13
|
|
|
14
|
-
*Some advanced users customize zsh for years — most of us just use oh-my-zsh.*
|
|
15
14
|
*Don't learn Claude Code. Just use OMC.*
|
|
16
15
|
|
|
17
|
-
[Get Started](#
|
|
16
|
+
[Get Started](#quick-start) • [Documentation](https://yeachan-heo.github.io/oh-my-claudecode-website) • [Migration Guide](docs/MIGRATION.md)
|
|
18
17
|
|
|
19
18
|
</div>
|
|
20
19
|
|
|
21
20
|
---
|
|
22
21
|
|
|
23
|
-
##
|
|
22
|
+
## Quick Start
|
|
24
23
|
|
|
25
|
-
**Step 1
|
|
26
|
-
```
|
|
24
|
+
**Step 1: Install**
|
|
25
|
+
```bash
|
|
27
26
|
/plugin marketplace add https://github.com/Yeachan-Heo/oh-my-claudecode
|
|
28
27
|
/plugin install oh-my-claudecode
|
|
29
28
|
```
|
|
30
29
|
|
|
31
|
-
**Step 2
|
|
32
|
-
```
|
|
30
|
+
**Step 2: Setup**
|
|
31
|
+
```bash
|
|
33
32
|
/oh-my-claudecode:omc-setup
|
|
34
33
|
```
|
|
35
34
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## What Happens Now
|
|
41
|
-
|
|
42
|
-
| When You... | I Automatically... |
|
|
43
|
-
|-------------|-------------------|
|
|
44
|
-
| Give me a complex task | Parallelize with specialist agents |
|
|
45
|
-
| Say "plan this" | Start a planning interview |
|
|
46
|
-
| Say "don't stop until done" | Persist until verified complete |
|
|
47
|
-
| Work on UI/frontend | Activate design sensibility |
|
|
48
|
-
| Need research or exploration | Delegate to specialized agents |
|
|
49
|
-
| Say "build me..." or use autopilot | Execute full autonomous workflow |
|
|
50
|
-
|
|
51
|
-
**You don't need to memorize commands.** I detect intent from natural language and activate the right behaviors automatically.
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
## Magic Keywords (Optional Shortcuts)
|
|
56
|
-
|
|
57
|
-
These are **optional shortcuts** for power users who want explicit control. Natural language works just fine - these keywords simply provide precision when you want it.
|
|
58
|
-
|
|
59
|
-
Include these words anywhere in your message:
|
|
60
|
-
|
|
61
|
-
| Keyword | Effect |
|
|
62
|
-
|---------|--------|
|
|
63
|
-
| `ralph` | Persistence mode - won't stop until done |
|
|
64
|
-
| `ralplan` | Iterative planning with consensus |
|
|
65
|
-
| `ulw` / `ultrawork` | Maximum parallel execution |
|
|
66
|
-
| `ultrapilot` | Parallel autopilot (3-5x faster) |
|
|
67
|
-
| `swarm` | N coordinated agents |
|
|
68
|
-
| `pipeline` | Sequential agent chaining |
|
|
69
|
-
| `eco` / `ecomode` | Token-efficient parallel execution |
|
|
70
|
-
| `plan` | Start a planning interview |
|
|
71
|
-
| `autopilot` / `ap` | Full autonomous execution |
|
|
72
|
-
|
|
73
|
-
**Combine them:** `ralph ulw: migrate the database` or `eco: refactor auth system`
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## Execution Modes (v3.4.0)
|
|
78
|
-
|
|
79
|
-
### Ultrapilot: Parallel Autopilot
|
|
80
|
-
|
|
81
|
-
3-5x faster execution with up to 5 parallel workers. Perfect for multi-component systems and large refactoring:
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
/oh-my-claudecode:ultrapilot "build a fullstack todo app"
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
**How it works:**
|
|
88
|
-
- Automatic task decomposition into parallelizable subtasks
|
|
89
|
-
- Non-overlapping file ownership prevents conflicts
|
|
90
|
-
- Parallel execution with intelligent coordination
|
|
91
|
-
- Automatic conflict detection and resolution
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
### Swarm: Coordinated Agents
|
|
96
|
-
|
|
97
|
-
N independent agents claiming tasks from a shared pool:
|
|
98
|
-
|
|
99
|
-
```
|
|
100
|
-
/oh-my-claudecode:swarm 5:executor "fix all TypeScript errors"
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
**Features:**
|
|
104
|
-
- Atomic task claiming prevents duplicate work
|
|
105
|
-
- 5-minute timeout per task with auto-release
|
|
106
|
-
- Scales from 2 to 10 workers
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
### Pipeline: Sequential Chaining
|
|
111
|
-
|
|
112
|
-
Chain agents together with data passing between stages:
|
|
113
|
-
|
|
114
|
-
```
|
|
115
|
-
/oh-my-claudecode:pipeline explore:haiku -> architect:opus -> executor:sonnet
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
**Built-in Presets:**
|
|
119
|
-
- `review` - explore → architect → critic → executor
|
|
120
|
-
- `implement` - planner → executor → tdd-guide
|
|
121
|
-
- `debug` - explore → architect → build-fixer
|
|
122
|
-
- `security` - explore → security-reviewer → executor
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
### Ecomode: Token-Efficient
|
|
127
|
-
|
|
128
|
-
Maximum parallelism with Haiku where possible, falling back to Sonnet/Opus for complex reasoning:
|
|
129
|
-
|
|
130
|
-
```
|
|
131
|
-
/oh-my-claudecode:ecomode "refactor the authentication system"
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
**30-50% token savings** compared to standard ultrawork while maintaining quality.
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## Auto Skill Learning (v3.5.0)
|
|
139
|
-
|
|
140
|
-
OMC can automatically detect patterns in your problem-solving and suggest extracting them as reusable skills.
|
|
141
|
-
|
|
142
|
-
### How It Works
|
|
143
|
-
|
|
144
|
-
1. **Pattern Detection** - Recognizes problem-solution pairs in conversations
|
|
145
|
-
2. **Skill Extraction** - `/oh-my-claudecode:learner` extracts reusable knowledge
|
|
146
|
-
3. **Auto-Matching** - Fuzzy matching detects when skills apply to new problems
|
|
147
|
-
4. **Auto-Invocation** - High-confidence matches (80+) auto-apply without prompting
|
|
148
|
-
|
|
149
|
-
### Managing Local Skills
|
|
150
|
-
|
|
151
|
-
```
|
|
152
|
-
/oh-my-claudecode:skill list # List all learned skills
|
|
153
|
-
/oh-my-claudecode:skill search "auth" # Find skills by keyword
|
|
154
|
-
/oh-my-claudecode:skill edit <name> # Edit a skill
|
|
155
|
-
/oh-my-claudecode:skill sync # Sync user + project skills
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
### Skill Storage
|
|
159
|
-
|
|
160
|
-
- **User-level**: `~/.claude/skills/sisyphus-learned/` (shared across projects)
|
|
161
|
-
- **Project-level**: `.omc/skills/` (project-specific)
|
|
162
|
-
|
|
163
|
-
Skills use YAML frontmatter with triggers, tags, and quality scores.
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
## Analytics & Cost Tracking (v3.5.0)
|
|
168
|
-
|
|
169
|
-
Track your Claude Code usage across all sessions with automatic transcript analysis.
|
|
170
|
-
|
|
171
|
-
### Backfill Historical Data
|
|
172
|
-
|
|
173
|
-
```
|
|
174
|
-
omc backfill # Analyze all transcripts
|
|
175
|
-
omc backfill --from 2026-01-01 # From specific date
|
|
176
|
-
omc backfill --project "*/myproject/*" # Filter by project
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
### View Statistics
|
|
180
|
-
|
|
181
|
-
```
|
|
182
|
-
omc stats # All sessions aggregate
|
|
183
|
-
omc stats --session # Current session only
|
|
184
|
-
omc stats --json # JSON output
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
**Sample Output:**
|
|
188
|
-
```
|
|
189
|
-
📊 All Sessions Stats
|
|
190
|
-
Sessions: 18
|
|
191
|
-
Entries: 3356
|
|
192
|
-
|
|
193
|
-
💰 Token Usage & Cost
|
|
194
|
-
Total Tokens: 4.36M
|
|
195
|
-
Total Cost: $2620.49
|
|
196
|
-
|
|
197
|
-
🤖 Top Agents by Cost (All Sessions)
|
|
198
|
-
(main session) 700.7k tokens $1546.46
|
|
199
|
-
oh-my-claudecode:architect 1.18M tokens $432.68
|
|
200
|
-
oh-my-claudecode:planner 540.9k tokens $274.85
|
|
201
|
-
oh-my-claudecode:executor 306.9k tokens $77.43
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
**Features:**
|
|
205
|
-
- Automatic backfill on first `omc stats` run
|
|
206
|
-
- Global storage in `~/.omc/state/` (cross-project)
|
|
207
|
-
- Proper agent attribution (main session vs spawned agents)
|
|
208
|
-
- Deduplication prevents double-counting
|
|
209
|
-
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
## Data Analysis & Research (v3.4.0)
|
|
213
|
-
|
|
214
|
-
### Scientist Agent Tiers
|
|
215
|
-
|
|
216
|
-
Three tiers of scientist agents for quantitative analysis and data science:
|
|
217
|
-
|
|
218
|
-
| Agent | Model | Use For |
|
|
219
|
-
|-------|-------|---------|
|
|
220
|
-
| `scientist-low` | Haiku | Quick data inspection, simple statistics, file enumeration |
|
|
221
|
-
| `scientist` | Sonnet | Standard analysis, pattern detection, visualization |
|
|
222
|
-
| `scientist-high` | Opus | Complex reasoning, hypothesis validation, ML workflows |
|
|
223
|
-
|
|
224
|
-
**Features:**
|
|
225
|
-
- **Persistent Python REPL** - Variables persist across calls (no pickle/reload overhead)
|
|
226
|
-
- **Structured markers** - `[FINDING]`, `[STAT:*]`, `[DATA]`, `[LIMITATION]` for parsed output
|
|
227
|
-
- **Quality gates** - Every finding requires statistical evidence (CI, effect size, p-value)
|
|
228
|
-
- **Auto-visualization** - Charts saved to `.omc/scientist/figures/`
|
|
229
|
-
- **Report generation** - Markdown reports with embedded figures
|
|
230
|
-
|
|
231
|
-
```python
|
|
232
|
-
# Variables persist across calls!
|
|
233
|
-
python_repl(action="execute", researchSessionID="analysis",
|
|
234
|
-
code="import pandas as pd; df = pd.read_csv('data.csv')")
|
|
235
|
-
|
|
236
|
-
# df still exists - no need to reload
|
|
237
|
-
python_repl(action="execute", researchSessionID="analysis",
|
|
238
|
-
code="print(df.describe())")
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
### /oh-my-claudecode:research Command (NEW)
|
|
242
|
-
|
|
243
|
-
Orchestrate parallel scientist agents for comprehensive research workflows:
|
|
244
|
-
|
|
245
|
-
```
|
|
246
|
-
/oh-my-claudecode:research <goal> # Standard research with checkpoints
|
|
247
|
-
/oh-my-claudecode:research AUTO: <goal> # Fully autonomous until complete
|
|
248
|
-
/oh-my-claudecode:research status # Check current session
|
|
249
|
-
/oh-my-claudecode:research resume # Resume interrupted session
|
|
250
|
-
/oh-my-claudecode:research list # List all sessions
|
|
251
|
-
/oh-my-claudecode:research report <session-id> # Generate report for session
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
**Research Protocol:**
|
|
255
|
-
1. **Decomposition** - Breaks goal into 3-7 independent stages
|
|
256
|
-
2. **Parallel Execution** - Fires scientist agents concurrently (max 5)
|
|
257
|
-
3. **Cross-Validation** - Verifies consistency across findings
|
|
258
|
-
4. **Synthesis** - Generates comprehensive markdown report
|
|
259
|
-
|
|
260
|
-
**Smart Model Routing:**
|
|
261
|
-
- Data gathering tasks → `scientist-low` (Haiku)
|
|
262
|
-
- Standard analysis → `scientist` (Sonnet)
|
|
263
|
-
- Complex reasoning → `scientist-high` (Opus)
|
|
264
|
-
|
|
265
|
-
**Session Management:** Research state persists at `.omc/research/{session-id}/` enabling resume after interruption.
|
|
266
|
-
|
|
267
|
-
---
|
|
268
|
-
|
|
269
|
-
## Stopping Things
|
|
270
|
-
|
|
271
|
-
Just say:
|
|
272
|
-
- "stop"
|
|
273
|
-
- "cancel"
|
|
274
|
-
- "abort"
|
|
275
|
-
|
|
276
|
-
I'll intelligently determine what to stop based on context.
|
|
277
|
-
|
|
278
|
-
---
|
|
279
|
-
|
|
280
|
-
## MCP Server Configuration
|
|
281
|
-
|
|
282
|
-
Extend Claude Code with additional tools via Model Context Protocol (MCP) servers.
|
|
283
|
-
|
|
284
|
-
```
|
|
285
|
-
/oh-my-claudecode:mcp-setup
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
### Supported MCP Servers
|
|
289
|
-
|
|
290
|
-
| Server | Description | API Key Required |
|
|
291
|
-
|--------|-------------|------------------|
|
|
292
|
-
| **Context7** | Documentation and code context from popular libraries | No |
|
|
293
|
-
| **Exa** | Enhanced web search (replaces built-in websearch) | Yes |
|
|
294
|
-
| **Filesystem** | Extended file system access | No |
|
|
295
|
-
| **GitHub** | GitHub API for issues, PRs, repos | Yes (PAT) |
|
|
296
|
-
|
|
297
|
-
### Quick Setup
|
|
298
|
-
|
|
299
|
-
Run the setup command and follow the prompts:
|
|
300
|
-
```
|
|
301
|
-
/oh-my-claudecode:mcp-setup
|
|
35
|
+
**Step 3: Build something**
|
|
302
36
|
```
|
|
303
|
-
|
|
304
|
-
Or configure manually in `~/.claude/settings.json`:
|
|
305
|
-
```json
|
|
306
|
-
{
|
|
307
|
-
"mcpServers": {
|
|
308
|
-
"context7": {
|
|
309
|
-
"command": "npx",
|
|
310
|
-
"args": ["-y", "@upstash/context7-mcp"]
|
|
311
|
-
},
|
|
312
|
-
"exa": {
|
|
313
|
-
"command": "npx",
|
|
314
|
-
"args": ["-y", "exa-mcp-server"],
|
|
315
|
-
"env": {
|
|
316
|
-
"EXA_API_KEY": "your-key-here"
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
}
|
|
37
|
+
autopilot: build a REST API for managing tasks
|
|
321
38
|
```
|
|
322
39
|
|
|
323
|
-
|
|
40
|
+
That's it. Everything else is automatic.
|
|
324
41
|
|
|
325
42
|
---
|
|
326
43
|
|
|
327
|
-
##
|
|
44
|
+
## Why oh-my-claudecode?
|
|
328
45
|
|
|
329
|
-
- **
|
|
330
|
-
- **
|
|
331
|
-
- **
|
|
332
|
-
- **
|
|
333
|
-
- **
|
|
334
|
-
- **
|
|
335
|
-
- **
|
|
336
|
-
- **Learned Skills** - Extract reusable insights from sessions with `/oh-my-claudecode:learner`
|
|
337
|
-
- **Memory System** - Persistent context that survives compaction
|
|
46
|
+
- **Zero configuration required** - Works out of the box with intelligent defaults
|
|
47
|
+
- **Natural language interface** - No commands to memorize, just describe what you want
|
|
48
|
+
- **Automatic parallelization** - Complex tasks distributed across specialized agents
|
|
49
|
+
- **Persistent execution** - Won't give up until the job is verified complete
|
|
50
|
+
- **Cost optimization** - Smart model routing saves 30-50% on tokens
|
|
51
|
+
- **Learn from experience** - Automatically extracts and reuses problem-solving patterns
|
|
52
|
+
- **Real-time visibility** - HUD statusline shows what's happening under the hood
|
|
338
53
|
|
|
339
54
|
---
|
|
340
55
|
|
|
341
|
-
##
|
|
56
|
+
## Features
|
|
342
57
|
|
|
343
|
-
|
|
58
|
+
### Execution Modes
|
|
59
|
+
Multiple strategies for different use cases - from fully autonomous builds to token-efficient refactoring. [Learn more →](https://yeachan-heo.github.io/oh-my-claudecode-website/execution-modes)
|
|
344
60
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
61
|
+
| Mode | Speed | Use For |
|
|
62
|
+
|------|-------|---------|
|
|
63
|
+
| **Autopilot** | Fast | Full autonomous workflows |
|
|
64
|
+
| **Ultrapilot** | 3-5x faster | Multi-component systems |
|
|
65
|
+
| **Ecomode** | Fast + 30-50% cheaper | Budget-conscious projects |
|
|
66
|
+
| **Swarm** | Coordinated | Parallel independent tasks |
|
|
67
|
+
| **Pipeline** | Sequential | Multi-stage processing |
|
|
349
68
|
|
|
350
|
-
|
|
351
|
-
-
|
|
352
|
-
-
|
|
353
|
-
-
|
|
69
|
+
### Intelligent Orchestration
|
|
70
|
+
- **32 specialized agents** for architecture, research, design, testing, data science
|
|
71
|
+
- **Smart model routing** - Haiku for simple tasks, Opus for complex reasoning
|
|
72
|
+
- **Automatic delegation** - Right agent for the job, every time
|
|
354
73
|
|
|
355
|
-
|
|
356
|
-
-
|
|
357
|
-
-
|
|
74
|
+
### Developer Experience
|
|
75
|
+
- **Magic keywords** - `ralph`, `ulw`, `eco`, `plan` for explicit control
|
|
76
|
+
- **HUD statusline** - Real-time orchestration metrics in your status bar
|
|
77
|
+
- **Skill learning** - Extract reusable patterns from your sessions
|
|
78
|
+
- **Analytics & cost tracking** - Understand token usage across all sessions
|
|
358
79
|
|
|
359
|
-
|
|
80
|
+
[Full feature list →](docs/REFERENCE.md)
|
|
360
81
|
|
|
361
82
|
---
|
|
362
83
|
|
|
363
|
-
##
|
|
84
|
+
## Magic Keywords
|
|
364
85
|
|
|
365
|
-
|
|
86
|
+
Optional shortcuts for power users. Natural language works fine without them.
|
|
366
87
|
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
88
|
+
| Keyword | Effect | Example |
|
|
89
|
+
|---------|--------|---------|
|
|
90
|
+
| `autopilot` | Full autonomous execution | `autopilot: build a todo app` |
|
|
91
|
+
| `ralph` | Persistence mode | `ralph: refactor auth` |
|
|
92
|
+
| `ulw` | Maximum parallelism | `ulw fix all errors` |
|
|
93
|
+
| `eco` | Token-efficient execution | `eco: migrate database` |
|
|
94
|
+
| `plan` | Planning interview | `plan the API` |
|
|
372
95
|
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
See the [Migration Guide](docs/MIGRATION.md) for details.
|
|
96
|
+
**Combine them:** `ralph ulw: migrate database` = persistence + parallelism
|
|
376
97
|
|
|
377
98
|
---
|
|
378
99
|
|
|
379
100
|
## Documentation
|
|
380
101
|
|
|
381
|
-
- [Full Reference](docs/
|
|
382
|
-
- [
|
|
383
|
-
- [
|
|
384
|
-
- [
|
|
102
|
+
- **[Full Reference](docs/REFERENCE.md)** - Complete feature documentation
|
|
103
|
+
- **[Website](https://yeachan-heo.github.io/oh-my-claudecode-website)** - Interactive guides and examples
|
|
104
|
+
- **[Migration Guide](docs/MIGRATION.md)** - Upgrade from v2.x
|
|
105
|
+
- **[Architecture](docs/ARCHITECTURE.md)** - How it works under the hood
|
|
385
106
|
|
|
386
107
|
---
|
|
387
108
|
|
|
388
109
|
## Requirements
|
|
389
110
|
|
|
390
111
|
- [Claude Code](https://docs.anthropic.com/claude-code) CLI
|
|
391
|
-
-
|
|
392
|
-
- **Claude Max/Pro subscription** (recommended for individuals)
|
|
393
|
-
- **Anthropic API key** (for API-based usage)
|
|
394
|
-
|
|
395
|
-
---
|
|
396
|
-
|
|
397
|
-
## Star History
|
|
398
|
-
|
|
399
|
-
[](https://star-history.com/#Yeachan-Heo/oh-my-claudecode&Date)
|
|
112
|
+
- Claude Max/Pro subscription OR Anthropic API key
|
|
400
113
|
|
|
401
114
|
---
|
|
402
115
|
|
|
403
116
|
## License
|
|
404
117
|
|
|
405
|
-
MIT
|
|
118
|
+
MIT
|
|
406
119
|
|
|
407
120
|
---
|
|
408
121
|
|
|
409
122
|
<div align="center">
|
|
410
123
|
|
|
411
|
-
**Inspired by:**
|
|
412
|
-
|
|
413
|
-
[oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) • [claude-hud](https://github.com/ryanjoachim/claude-hud) • [Superpowers](https://github.com/NexTechFusion/Superpowers) • [everything-claude-code](https://github.com/affaan-m/everything-claude-code)
|
|
124
|
+
**Inspired by:** [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) • [claude-hud](https://github.com/ryanjoachim/claude-hud) • [Superpowers](https://github.com/NexTechFusion/Superpowers) • [everything-claude-code](https://github.com/affaan-m/everything-claude-code)
|
|
414
125
|
|
|
415
126
|
**Zero learning curve. Maximum power.**
|
|
416
127
|
|
|
417
128
|
</div>
|
|
129
|
+
|
|
130
|
+
## Star History
|
|
131
|
+
|
|
132
|
+
[](https://www.star-history.com/#Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)
|
package/commands/omc-setup.md
CHANGED
|
@@ -82,6 +82,45 @@ fi
|
|
|
82
82
|
|
|
83
83
|
**Note:** The `npm install` command triggers the `prepare` script which runs `npm run build`, creating the dist/ directory with all compiled HUD files.
|
|
84
84
|
|
|
85
|
+
## Step 3.6: Install CLI Analytics Tools (Optional)
|
|
86
|
+
|
|
87
|
+
The OMC CLI provides standalone token analytics commands (`omc stats`, `omc agents`, `omc backfill`, `omc tui`).
|
|
88
|
+
|
|
89
|
+
Ask user: "Would you like to install the OMC CLI for standalone analytics? (Recommended for tracking token usage and costs)"
|
|
90
|
+
|
|
91
|
+
**Options:**
|
|
92
|
+
1. **Yes (Recommended)** - Install CLI tools globally for `omc stats`, `omc agents`, etc.
|
|
93
|
+
2. **No** - Skip CLI installation, use only plugin skills
|
|
94
|
+
|
|
95
|
+
### If User Chooses YES:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# Check for bun (preferred) or npm
|
|
99
|
+
if command -v bun &> /dev/null; then
|
|
100
|
+
echo "Installing OMC CLI via bun..."
|
|
101
|
+
bun install -g oh-my-claudecode
|
|
102
|
+
elif command -v npm &> /dev/null; then
|
|
103
|
+
echo "Installing OMC CLI via npm..."
|
|
104
|
+
npm install -g oh-my-claudecode
|
|
105
|
+
else
|
|
106
|
+
echo "ERROR: Neither bun nor npm found. Please install Node.js or Bun first."
|
|
107
|
+
exit 1
|
|
108
|
+
fi
|
|
109
|
+
|
|
110
|
+
# Verify installation
|
|
111
|
+
if command -v omc &> /dev/null; then
|
|
112
|
+
echo "✓ OMC CLI installed successfully!"
|
|
113
|
+
echo " Try: omc stats, omc agents, omc backfill"
|
|
114
|
+
else
|
|
115
|
+
echo "⚠ CLI installed but 'omc' not in PATH."
|
|
116
|
+
echo " You may need to restart your terminal or add npm/bun global bin to PATH."
|
|
117
|
+
fi
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### If User Chooses NO:
|
|
121
|
+
|
|
122
|
+
Skip this step. User can install later with `npm install -g oh-my-claudecode`.
|
|
123
|
+
|
|
85
124
|
## Step 4: Verify Plugin Installation
|
|
86
125
|
|
|
87
126
|
```bash
|
|
@@ -144,6 +183,12 @@ Run /oh-my-claudecode:mcp-setup to add tools like web search, GitHub, etc.
|
|
|
144
183
|
HUD STATUSLINE:
|
|
145
184
|
The status bar now shows OMC state. Restart Claude Code to see it.
|
|
146
185
|
|
|
186
|
+
CLI ANALYTICS (if installed):
|
|
187
|
+
- omc - Full dashboard (stats + agents + cost)
|
|
188
|
+
- omc stats - View token usage and costs
|
|
189
|
+
- omc agents - See agent breakdown by cost
|
|
190
|
+
- omc tui - Launch interactive TUI dashboard
|
|
191
|
+
|
|
147
192
|
That's it! Just use Claude Code normally.
|
|
148
193
|
```
|
|
149
194
|
|
|
@@ -173,6 +218,12 @@ MAGIC KEYWORDS (power-user shortcuts):
|
|
|
173
218
|
HUD STATUSLINE:
|
|
174
219
|
The status bar now shows OMC state. Restart Claude Code to see it.
|
|
175
220
|
|
|
221
|
+
CLI ANALYTICS (if installed):
|
|
222
|
+
- omc - Full dashboard (stats + agents + cost)
|
|
223
|
+
- omc stats - View token usage and costs
|
|
224
|
+
- omc agents - See agent breakdown by cost
|
|
225
|
+
- omc tui - Launch interactive TUI dashboard
|
|
226
|
+
|
|
176
227
|
Your workflow won't break - it just got easier!
|
|
177
228
|
```
|
|
178
229
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokscale-adapter.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/analytics/tokscale-adapter.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach } from 'vitest';
|
|
2
|
+
import { getTokscaleAdapter, lookupPricingWithFallback, isTokscaleAvailable, resetAdapterCache } from '../../analytics/tokscale-adapter.js';
|
|
3
|
+
describe('tokscale-adapter', () => {
|
|
4
|
+
beforeEach(() => {
|
|
5
|
+
// Reset the cached adapter before each test
|
|
6
|
+
resetAdapterCache();
|
|
7
|
+
});
|
|
8
|
+
describe('getTokscaleAdapter', () => {
|
|
9
|
+
it('returns adapter with isAvailable property', async () => {
|
|
10
|
+
const adapter = await getTokscaleAdapter();
|
|
11
|
+
expect(adapter).toHaveProperty('isAvailable');
|
|
12
|
+
expect(typeof adapter.isAvailable).toBe('boolean');
|
|
13
|
+
});
|
|
14
|
+
it('caches adapter instance', async () => {
|
|
15
|
+
const adapter1 = await getTokscaleAdapter();
|
|
16
|
+
const adapter2 = await getTokscaleAdapter();
|
|
17
|
+
expect(adapter1).toBe(adapter2);
|
|
18
|
+
});
|
|
19
|
+
it('returns adapter with expected properties when available', async () => {
|
|
20
|
+
const adapter = await getTokscaleAdapter();
|
|
21
|
+
// Even when unavailable, should have isAvailable property
|
|
22
|
+
expect(adapter).toHaveProperty('isAvailable');
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
describe('lookupPricingWithFallback', () => {
|
|
26
|
+
it('returns pricing for known models', async () => {
|
|
27
|
+
const pricing = await lookupPricingWithFallback('claude-sonnet-4.5');
|
|
28
|
+
expect(pricing).toHaveProperty('inputPerMillion');
|
|
29
|
+
expect(pricing).toHaveProperty('outputPerMillion');
|
|
30
|
+
expect(pricing.inputPerMillion).toBeGreaterThan(0);
|
|
31
|
+
expect(pricing.outputPerMillion).toBeGreaterThan(0);
|
|
32
|
+
});
|
|
33
|
+
it('returns pricing for haiku model', async () => {
|
|
34
|
+
const pricing = await lookupPricingWithFallback('claude-haiku-4');
|
|
35
|
+
// Tokscale returns live pricing from LiteLLM database
|
|
36
|
+
expect(pricing.inputPerMillion).toBeGreaterThan(0);
|
|
37
|
+
expect(pricing.outputPerMillion).toBeGreaterThan(0);
|
|
38
|
+
expect(pricing.outputPerMillion).toBeGreaterThan(pricing.inputPerMillion);
|
|
39
|
+
});
|
|
40
|
+
it('returns pricing for opus model', async () => {
|
|
41
|
+
const pricing = await lookupPricingWithFallback('claude-opus-4.5');
|
|
42
|
+
// Tokscale returns live pricing from LiteLLM database
|
|
43
|
+
expect(pricing.inputPerMillion).toBeGreaterThan(0);
|
|
44
|
+
expect(pricing.outputPerMillion).toBeGreaterThan(0);
|
|
45
|
+
expect(pricing.outputPerMillion).toBeGreaterThan(pricing.inputPerMillion);
|
|
46
|
+
});
|
|
47
|
+
it('returns default pricing for unknown models', async () => {
|
|
48
|
+
const pricing = await lookupPricingWithFallback('unknown-model-xyz');
|
|
49
|
+
expect(pricing).toBeDefined();
|
|
50
|
+
expect(pricing).toHaveProperty('inputPerMillion');
|
|
51
|
+
expect(pricing).toHaveProperty('outputPerMillion');
|
|
52
|
+
});
|
|
53
|
+
it('includes cache pricing fields', async () => {
|
|
54
|
+
const pricing = await lookupPricingWithFallback('claude-sonnet-4.5');
|
|
55
|
+
expect(pricing).toHaveProperty('cacheWriteMarkup');
|
|
56
|
+
expect(pricing).toHaveProperty('cacheReadDiscount');
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe('isTokscaleAvailable', () => {
|
|
60
|
+
it('returns a boolean', async () => {
|
|
61
|
+
const available = await isTokscaleAvailable();
|
|
62
|
+
expect(typeof available).toBe('boolean');
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
describe('resetAdapterCache', () => {
|
|
66
|
+
it('clears the cached adapter', async () => {
|
|
67
|
+
// Get adapter to populate cache
|
|
68
|
+
const adapter1 = await getTokscaleAdapter();
|
|
69
|
+
// Reset cache
|
|
70
|
+
resetAdapterCache();
|
|
71
|
+
// Get adapter again - should create new instance
|
|
72
|
+
const adapter2 = await getTokscaleAdapter();
|
|
73
|
+
// Both should have same structure but might be different instances
|
|
74
|
+
// depending on whether tokscale is available
|
|
75
|
+
expect(adapter2).toHaveProperty('isAvailable');
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=tokscale-adapter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokscale-adapter.test.js","sourceRoot":"","sources":["../../../src/__tests__/analytics/tokscale-adapter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,21 @@ export interface CostInput {
|
|
|
6
6
|
cacheCreationTokens: number;
|
|
7
7
|
cacheReadTokens: number;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Synchronous cost calculation using hardcoded pricing.
|
|
11
|
+
* Fast path for HUD and sync operations that need instant response.
|
|
12
|
+
*/
|
|
9
13
|
export declare function calculateCost(input: CostInput): CostBreakdown;
|
|
14
|
+
/**
|
|
15
|
+
* Asynchronous cost calculation using live TokScale pricing.
|
|
16
|
+
* Provides up-to-date pricing with fallback to hardcoded values.
|
|
17
|
+
*/
|
|
18
|
+
export declare function calculateCostAsync(input: CostInput): Promise<CostBreakdown>;
|
|
19
|
+
/**
|
|
20
|
+
* Batch cost calculation with efficient pricing lookup.
|
|
21
|
+
* Fetches pricing once per unique model for better performance.
|
|
22
|
+
*/
|
|
23
|
+
export declare function batchCalculateCost(inputs: CostInput[]): Promise<CostBreakdown[]>;
|
|
10
24
|
export declare function formatCost(cost: number): string;
|
|
11
25
|
export declare function getCostColor(cost: number): 'green' | 'yellow' | 'red';
|
|
12
26
|
export declare function estimateDailyCost(tokensPerHour: number, modelName: string): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost-estimator.d.ts","sourceRoot":"","sources":["../../src/analytics/cost-estimator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"cost-estimator.d.ts","sourceRoot":"","sources":["../../src/analytics/cost-estimator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,aAAa,EAAE,MAAM,YAAY,CAAC;AAGlE,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,CA0B7D;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CA0BjF;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAsCtF;AA8BD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAIrE;AAED,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKlF;AAED,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpF"}
|