oh-my-claudecode 0.1.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.
Files changed (160) hide show
  1. package/README.md +281 -0
  2. package/bin/oh-my-claudecode.js +5 -0
  3. package/dist/agents/azathoth.d.ts +19 -0
  4. package/dist/agents/azathoth.d.ts.map +1 -0
  5. package/dist/agents/azathoth.js +105 -0
  6. package/dist/agents/azathoth.js.map +1 -0
  7. package/dist/agents/builtin-agents.d.ts +18 -0
  8. package/dist/agents/builtin-agents.d.ts.map +1 -0
  9. package/dist/agents/builtin-agents.js +141 -0
  10. package/dist/agents/builtin-agents.js.map +1 -0
  11. package/dist/agents/cthulhu.d.ts +21 -0
  12. package/dist/agents/cthulhu.d.ts.map +1 -0
  13. package/dist/agents/cthulhu.js +368 -0
  14. package/dist/agents/cthulhu.js.map +1 -0
  15. package/dist/agents/dagon.d.ts +17 -0
  16. package/dist/agents/dagon.d.ts.map +1 -0
  17. package/dist/agents/dagon.js +190 -0
  18. package/dist/agents/dagon.js.map +1 -0
  19. package/dist/agents/hastur.d.ts +18 -0
  20. package/dist/agents/hastur.d.ts.map +1 -0
  21. package/dist/agents/hastur.js +92 -0
  22. package/dist/agents/hastur.js.map +1 -0
  23. package/dist/agents/index.d.ts +14 -0
  24. package/dist/agents/index.d.ts.map +1 -0
  25. package/dist/agents/index.js +13 -0
  26. package/dist/agents/index.js.map +1 -0
  27. package/dist/agents/ithaqua.d.ts +19 -0
  28. package/dist/agents/ithaqua.d.ts.map +1 -0
  29. package/dist/agents/ithaqua.js +254 -0
  30. package/dist/agents/ithaqua.js.map +1 -0
  31. package/dist/agents/nyarlathotep.d.ts +18 -0
  32. package/dist/agents/nyarlathotep.d.ts.map +1 -0
  33. package/dist/agents/nyarlathotep.js +129 -0
  34. package/dist/agents/nyarlathotep.js.map +1 -0
  35. package/dist/agents/shoggoth.d.ts +17 -0
  36. package/dist/agents/shoggoth.d.ts.map +1 -0
  37. package/dist/agents/shoggoth.js +123 -0
  38. package/dist/agents/shoggoth.js.map +1 -0
  39. package/dist/agents/shub-niggurath.d.ts +18 -0
  40. package/dist/agents/shub-niggurath.d.ts.map +1 -0
  41. package/dist/agents/shub-niggurath.js +164 -0
  42. package/dist/agents/shub-niggurath.js.map +1 -0
  43. package/dist/agents/the-deep-one.d.ts +17 -0
  44. package/dist/agents/the-deep-one.d.ts.map +1 -0
  45. package/dist/agents/the-deep-one.js +114 -0
  46. package/dist/agents/the-deep-one.js.map +1 -0
  47. package/dist/agents/tsathoggua.d.ts +19 -0
  48. package/dist/agents/tsathoggua.d.ts.map +1 -0
  49. package/dist/agents/tsathoggua.js +177 -0
  50. package/dist/agents/tsathoggua.js.map +1 -0
  51. package/dist/agents/types.d.ts +61 -0
  52. package/dist/agents/types.d.ts.map +1 -0
  53. package/dist/agents/types.js +2 -0
  54. package/dist/agents/types.js.map +1 -0
  55. package/dist/agents/yog-sothoth.d.ts +17 -0
  56. package/dist/agents/yog-sothoth.d.ts.map +1 -0
  57. package/dist/agents/yog-sothoth.js +147 -0
  58. package/dist/agents/yog-sothoth.js.map +1 -0
  59. package/dist/cli/doctor.d.ts +2 -0
  60. package/dist/cli/doctor.d.ts.map +1 -0
  61. package/dist/cli/doctor.js +105 -0
  62. package/dist/cli/doctor.js.map +1 -0
  63. package/dist/cli/index.d.ts +2 -0
  64. package/dist/cli/index.d.ts.map +1 -0
  65. package/dist/cli/index.js +53 -0
  66. package/dist/cli/index.js.map +1 -0
  67. package/dist/cli/install.d.ts +5 -0
  68. package/dist/cli/install.d.ts.map +1 -0
  69. package/dist/cli/install.js +179 -0
  70. package/dist/cli/install.js.map +1 -0
  71. package/dist/config/index.d.ts +3 -0
  72. package/dist/config/index.d.ts.map +1 -0
  73. package/dist/config/index.js +2 -0
  74. package/dist/config/index.js.map +1 -0
  75. package/dist/config/schema.d.ts +7406 -0
  76. package/dist/config/schema.d.ts.map +1 -0
  77. package/dist/config/schema.js +197 -0
  78. package/dist/config/schema.js.map +1 -0
  79. package/dist/features/background-agent/index.d.ts +58 -0
  80. package/dist/features/background-agent/index.d.ts.map +1 -0
  81. package/dist/features/background-agent/index.js +113 -0
  82. package/dist/features/background-agent/index.js.map +1 -0
  83. package/dist/features/mcp-manager/index.d.ts +40 -0
  84. package/dist/features/mcp-manager/index.d.ts.map +1 -0
  85. package/dist/features/mcp-manager/index.js +71 -0
  86. package/dist/features/mcp-manager/index.js.map +1 -0
  87. package/dist/features/skill-loader/index.d.ts +37 -0
  88. package/dist/features/skill-loader/index.d.ts.map +1 -0
  89. package/dist/features/skill-loader/index.js +81 -0
  90. package/dist/features/skill-loader/index.js.map +1 -0
  91. package/dist/hooks/comment-checker.d.ts +18 -0
  92. package/dist/hooks/comment-checker.d.ts.map +1 -0
  93. package/dist/hooks/comment-checker.js +75 -0
  94. package/dist/hooks/comment-checker.js.map +1 -0
  95. package/dist/hooks/elder-loop.d.ts +26 -0
  96. package/dist/hooks/elder-loop.d.ts.map +1 -0
  97. package/dist/hooks/elder-loop.js +84 -0
  98. package/dist/hooks/elder-loop.js.map +1 -0
  99. package/dist/hooks/index.d.ts +20 -0
  100. package/dist/hooks/index.d.ts.map +1 -0
  101. package/dist/hooks/index.js +73 -0
  102. package/dist/hooks/index.js.map +1 -0
  103. package/dist/hooks/rules-injector.d.ts +12 -0
  104. package/dist/hooks/rules-injector.d.ts.map +1 -0
  105. package/dist/hooks/rules-injector.js +52 -0
  106. package/dist/hooks/rules-injector.js.map +1 -0
  107. package/dist/hooks/todo-continuation.d.ts +25 -0
  108. package/dist/hooks/todo-continuation.d.ts.map +1 -0
  109. package/dist/hooks/todo-continuation.js +74 -0
  110. package/dist/hooks/todo-continuation.js.map +1 -0
  111. package/dist/hooks/write-guard.d.ts +11 -0
  112. package/dist/hooks/write-guard.d.ts.map +1 -0
  113. package/dist/hooks/write-guard.js +39 -0
  114. package/dist/hooks/write-guard.js.map +1 -0
  115. package/dist/index.d.ts +36 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +35 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/plugin-config.d.ts +22 -0
  120. package/dist/plugin-config.d.ts.map +1 -0
  121. package/dist/plugin-config.js +133 -0
  122. package/dist/plugin-config.js.map +1 -0
  123. package/dist/plugin-handlers/config-handler.d.ts +21 -0
  124. package/dist/plugin-handlers/config-handler.d.ts.map +1 -0
  125. package/dist/plugin-handlers/config-handler.js +33 -0
  126. package/dist/plugin-handlers/config-handler.js.map +1 -0
  127. package/dist/plugin-handlers/index.d.ts +2 -0
  128. package/dist/plugin-handlers/index.d.ts.map +1 -0
  129. package/dist/plugin-handlers/index.js +2 -0
  130. package/dist/plugin-handlers/index.js.map +1 -0
  131. package/dist/shared/deep-merge.d.ts +6 -0
  132. package/dist/shared/deep-merge.d.ts.map +1 -0
  133. package/dist/shared/deep-merge.js +30 -0
  134. package/dist/shared/deep-merge.js.map +1 -0
  135. package/dist/shared/index.d.ts +5 -0
  136. package/dist/shared/index.d.ts.map +1 -0
  137. package/dist/shared/index.js +5 -0
  138. package/dist/shared/index.js.map +1 -0
  139. package/dist/shared/log.d.ts +3 -0
  140. package/dist/shared/log.d.ts.map +1 -0
  141. package/dist/shared/log.js +22 -0
  142. package/dist/shared/log.js.map +1 -0
  143. package/dist/shared/model-resolution.d.ts +15 -0
  144. package/dist/shared/model-resolution.d.ts.map +1 -0
  145. package/dist/shared/model-resolution.js +46 -0
  146. package/dist/shared/model-resolution.js.map +1 -0
  147. package/dist/shared/parse-jsonc.d.ts +6 -0
  148. package/dist/shared/parse-jsonc.d.ts.map +1 -0
  149. package/dist/shared/parse-jsonc.js +14 -0
  150. package/dist/shared/parse-jsonc.js.map +1 -0
  151. package/package.json +42 -0
  152. package/skills/cancel-elder-loop.md +22 -0
  153. package/skills/cthulhu.md +45 -0
  154. package/skills/elder-loop.md +39 -0
  155. package/skills/exorcise-ai-slop.md +45 -0
  156. package/skills/invoke-shub.md +32 -0
  157. package/skills/old-ones-init.md +47 -0
  158. package/skills/session-handoff.md +57 -0
  159. package/skills/shoggoth.md +34 -0
  160. package/skills/yog-sothoth.md +30 -0
package/README.md ADDED
@@ -0,0 +1,281 @@
1
+ # oh-my-claudecode
2
+
3
+ > *Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn.*
4
+
5
+ A Cthulhu Mythos-themed agentic harness for [Claude Code](https://claude.ai/code). Provides 11 specialized Elder God agents, lifecycle hooks, a skill system, and multi-tier orchestration.
6
+
7
+ ## What This Is
8
+
9
+ oh-my-claudecode extends Claude Code with a complete agentic infrastructure:
10
+
11
+ - **11 Elder God agents** each specialized for a different domain
12
+ - **5 lifecycle hooks** for todo enforcement, completion loops, code quality, and context injection
13
+ - **9 slash commands (skills)** for invoking agents and managing sessions
14
+ - **3-level config system** (defaults → user → project) with Zod validation
15
+ - **Background agent management** with circuit breaker and concurrency limits
16
+ - **Work plan system** with structured planning and review flow
17
+
18
+ ## Agent Roster
19
+
20
+ | Elder God | Maps From | Model | Mode | Role |
21
+ |-----------|-----------|-------|------|------|
22
+ | **Cthulhu** | Sisyphus | Opus | primary | Main orchestrator — intent gate, delegation, parallel execution, verification |
23
+ | **Nyarlathotep** | Hephaestus | Opus | subagent | Deep autonomous worker — end-to-end goal execution |
24
+ | **Azathoth** | Atlas | Opus | primary | First-message planner — initial context sweep and routing |
25
+ | **Shub-Niggurath** | Prometheus | Opus | primary | Strategic planner — interview → scope → plan → Tsathoggua review |
26
+ | **Yog-Sothoth** | Oracle | Opus | subagent | Architecture/debug advisor — read-only, high-reasoning consultation |
27
+ | **Hastur** | Sisyphus-Jr | Sonnet | subagent | Lightweight sub-orchestrator for bounded tasks |
28
+ | **Ithaqua** | Metis | Sonnet | subagent | Pre-planning consultant — intent classification, anti-slop guardrails |
29
+ | **Tsathoggua** | Momus | Sonnet | subagent | Work plan reviewer — blocker-finder, not perfectionist |
30
+ | **Dagon** | Librarian | Sonnet | subagent | External documentation and GitHub source research |
31
+ | **The Deep One** | Multimodal-Looker | Sonnet | subagent | Vision agent — images, screenshots, diagrams |
32
+ | **Shoggoth** | Explore | Haiku | subagent | Fast parallel codebase search |
33
+
34
+ ## Installation
35
+
36
+ ```bash
37
+ npx oh-my-claudecode install
38
+ ```
39
+
40
+ The interactive wizard will:
41
+ 1. Install hook scripts to `~/.claude/hooks/`
42
+ 2. Register hooks in `~/.claude/settings.json`
43
+ 3. Install skill files to `~/.claude/skills/`
44
+ 4. Create `~/.claude/oh-my-claudecode.jsonc` config
45
+
46
+ ### Non-interactive install
47
+
48
+ ```bash
49
+ npx oh-my-claudecode install --no-tui
50
+ ```
51
+
52
+ ### Requirements
53
+
54
+ - Claude Code CLI installed (`npm install -g @anthropic-ai/claude-code` or equivalent)
55
+ - Node.js 20+
56
+ - `~/.claude/` directory writable
57
+
58
+ ## Slash Commands
59
+
60
+ After installation, these are available in Claude Code sessions:
61
+
62
+ | Command | Maps From | Description |
63
+ |---------|-----------|-------------|
64
+ | `/cthulhu` | (entry) | Activate Cthulhu orchestrator mode |
65
+ | `/shoggoth` | (entry) | Activate Shoggoth search mode |
66
+ | `/yog-sothoth` | (entry) | Activate Yog-Sothoth advisor mode |
67
+ | `/elder-loop` | `/ralph-loop` | Start the completion loop |
68
+ | `/cancel-elder-loop` | `/cancel-ralph` | Stop the active loop |
69
+ | `/old-ones-init` | `/init-deep` | Generate AGENTS.md hierarchy |
70
+ | `/invoke-shub` | `/start-work` | Strategic planning flow |
71
+ | `/session-handoff` | `/handoff` | Create session continuation doc |
72
+ | `/exorcise-ai-slop` | `/remove-ai-slops` | Purge AI code smells |
73
+
74
+ ## How Agents Are Invoked
75
+
76
+ **Important difference from OpenCode**: OpenCode has a plugin API that allows registering named agents directly into its agent selector UI. Claude Code does not have an equivalent public plugin API.
77
+
78
+ Instead, oh-my-claudecode agents are invoked through:
79
+
80
+ 1. **Slash commands** — `/cthulhu`, `/shoggoth`, etc. activate the named agent mode
81
+ 2. **Agent tool delegation** — Cthulhu uses `Agent(subagent_type="shoggoth", ...)` to spawn specialists
82
+ 3. **Skill-based dispatch** — skills installed to `~/.claude/skills/` are likely available as `subagent_type` values
83
+
84
+ The agents are additive — they don't replace Claude Code's built-in agent types.
85
+
86
+ ## Configuration
87
+
88
+ Config file: `~/.claude/oh-my-claudecode.jsonc` (user-level) and/or `.claude/oh-my-claudecode.jsonc` (project-level).
89
+
90
+ Project config overrides user config for scalar/object fields. Array fields (`disabled_*`) are unioned.
91
+
92
+ ```jsonc
93
+ {
94
+ // Override models for specific agents
95
+ "agents": {
96
+ "cthulhu": {
97
+ "model": "opus",
98
+ "prompt_append": "Always write tests for every function you create."
99
+ },
100
+ "shoggoth": {
101
+ "model": "haiku"
102
+ }
103
+ },
104
+
105
+ // Disable agents you don't need
106
+ "disabled_agents": ["nyarlathotep", "the-deep-one"],
107
+
108
+ // Disable specific lifecycle hooks
109
+ "disabled_hooks": ["comment-checker", "write-guard"],
110
+
111
+ // Elder Loop settings (completion loop)
112
+ "elder_loop": {
113
+ "max_iterations": 15,
114
+ "strategy": "continue" // or "reset"
115
+ },
116
+
117
+ // Background agent limits
118
+ "background_task": {
119
+ "max_concurrent": 8,
120
+ "circuit_breaker_threshold": 3
121
+ }
122
+ }
123
+ ```
124
+
125
+ ### Available Models
126
+
127
+ Only Claude models are used:
128
+
129
+ | Short Alias | Full Model ID |
130
+ |-------------|--------------|
131
+ | `opus` | `claude-opus-4-6` |
132
+ | `sonnet` | `claude-sonnet-4-6` |
133
+ | `haiku` | `claude-haiku-4-5` |
134
+
135
+ ## Lifecycle Hooks
136
+
137
+ 5 hooks are installed into Claude Code's `settings.json`:
138
+
139
+ | Hook | Event | Description |
140
+ |------|-------|-------------|
141
+ | `todo-continuation` | Stop | If incomplete todos exist when stopping, inject a reminder to continue |
142
+ | `elder-loop` | Stop | Self-referential completion loop (set promise → keeps running until met) |
143
+ | `comment-checker` | PostToolUse | Warn when AI-slop comments are written (explains obvious code) |
144
+ | `rules-injector` | PreToolUse | Auto-inject `.elder-gods/rules/*.md` into agent context |
145
+ | `write-guard` | PreToolUse | Warn when `Write` is used on an existing file (suggest `Edit`) |
146
+
147
+ Disable specific hooks in config:
148
+ ```jsonc
149
+ { "disabled_hooks": ["comment-checker", "write-guard"] }
150
+ ```
151
+
152
+ ## Project Structure
153
+
154
+ ```
155
+ oh-my-claudecode/
156
+ ├── src/
157
+ │ ├── agents/ # 11 Elder God agent definitions + builder
158
+ │ ├── config/ # Zod schema — full type system
159
+ │ ├── hooks/ # Lifecycle hook scripts and configs
160
+ │ ├── features/
161
+ │ │ ├── background-agent/ # BackgroundManager (circuit breaker, concurrency)
162
+ │ │ ├── skill-loader/ # Discovers user skills from .claude/skills/
163
+ │ │ └── mcp-manager/ # Skill-scoped MCP lifecycle
164
+ │ ├── plugin-handlers/ # 5-phase config pipeline
165
+ │ ├── shared/ # Logging, deep-merge, model resolution
166
+ │ └── cli/ # Installer, doctor, list-agents
167
+ ├── skills/ # Markdown slash commands
168
+ └── NECRONOMICON.md # Plugin architecture reference
169
+ ```
170
+
171
+ ## Project-Level Setup
172
+
173
+ ### Architectural Rules
174
+
175
+ Place rules in `.elder-gods/rules/*.md` — auto-injected into every agent's context:
176
+
177
+ ```
178
+ .elder-gods/
179
+ └── rules/
180
+ ├── no-any.md # No TypeScript `any`
181
+ ├── test-coverage.md # Minimum test requirements
182
+ └── naming-conv.md # Naming conventions
183
+ ```
184
+
185
+ Example `.elder-gods/rules/no-any.md`:
186
+ ```markdown
187
+ # No TypeScript `any`
188
+
189
+ NEVER use `any` type. Use `unknown` and narrow appropriately, or define a proper type.
190
+ This rule is non-negotiable. Tsathoggua will reject any plan that introduces `any`.
191
+ ```
192
+
193
+ ### Work Plans
194
+
195
+ Plans are stored in `.elder-gods/plans/*.md` and reviewed by Tsathoggua before execution.
196
+
197
+ Use `/invoke-shub` to start the planning flow:
198
+ 1. Shub-Niggurath surveys codebase
199
+ 2. Interviews you with scoping questions
200
+ 3. Creates plan at `.elder-gods/plans/[task].md`
201
+ 4. Tsathoggua reviews for executability
202
+ 5. Cthulhu orchestrates implementation
203
+
204
+ ### Knowledge Base
205
+
206
+ Use `/old-ones-init` to generate `AGENTS.md` files at the root and in key subdirectories. These give all agents project context without requiring repeated exploration.
207
+
208
+ ## Diagnostics
209
+
210
+ ```bash
211
+ npx oh-my-claudecode doctor
212
+ ```
213
+
214
+ Checks:
215
+ - `~/.claude/` directory exists
216
+ - `settings.json` present
217
+ - All hook scripts installed
218
+ - Hooks registered in settings
219
+ - Skills installed
220
+ - Plugin config valid
221
+
222
+ ## Agent Detail
223
+
224
+ ### Cthulhu (Main Orchestrator)
225
+
226
+ The heart of the system. Every user message passes through Cthulhu's intent gate:
227
+
228
+ 1. **Verbalize intent** — explicitly classify what the user wants before acting
229
+ 2. **Route accordingly** — trivial → direct tools; exploratory → parallel Shoggoth agents; implementation → plan + delegate; ambiguous → one question
230
+ 3. **Plan before acting** — if 2+ steps, create detailed todos immediately
231
+ 4. **Delegate aggressively** — never work alone when a specialist is available
232
+ 5. **Verify before completing** — diagnostics, tests, evidence required
233
+
234
+ ### Shoggoth (Codebase Search)
235
+
236
+ Fire 3+ in parallel. They're formless and free. Use for:
237
+ - Finding where X is implemented
238
+ - Discovering patterns to follow
239
+ - Cross-module structure discovery
240
+
241
+ ### Yog-Sothoth (Architecture Advisor)
242
+
243
+ Consult when:
244
+ - Architecture decision requires multi-system tradeoffs
245
+ - After 2+ failed fix attempts
246
+ - Completing significant implementation for self-review
247
+
248
+ Response always includes: Bottom line (2-3 sentences), Action plan (≤7 steps), Effort estimate.
249
+
250
+ ### Shub-Niggurath + Tsathoggua (Planning Flow)
251
+
252
+ Shub-Niggurath interviews → creates `.elder-gods/plans/task.md` → Tsathoggua reviews it → OKAY or REJECT with max 3 blocking issues → Cthulhu executes.
253
+
254
+ ### The Elder Loop
255
+
256
+ Activate with `/elder-loop [completion promise]`. The loop writes state to `.claude/elder-loop-state.json`. Each Stop event, the hook checks if the promise is met — if not, injects a reminder to continue.
257
+
258
+ Deactivate with `/cancel-elder-loop`.
259
+
260
+ ## Development
261
+
262
+ ```bash
263
+ git clone https://github.com/[your-username]/oh-my-claudecode
264
+ cd oh-my-claudecode
265
+ npm install
266
+ npm run build
267
+ ```
268
+
269
+ ## Philosophy
270
+
271
+ Core philosophy:
272
+
273
+ - **Delegate first** — specialists exist for a reason; use them
274
+ - **Parallel by default** — independent work always runs simultaneously
275
+ - **Evidence required** — no task is complete without diagnostics/test proof
276
+ - **No AI slop** — no unnecessary abstractions, comments, or scope creep
277
+ - **Blocker-finding, not perfectionism** — Tsathoggua finds blockers, not nitpicks
278
+
279
+ ## License
280
+
281
+ MIT
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import('../dist/cli/index.js').catch((err) => {
3
+ console.error('oh-my-claudecode: failed to load CLI', err.message);
4
+ process.exit(1);
5
+ });
@@ -0,0 +1,19 @@
1
+ import type { AgentConfig, AgentPromptMetadata } from "./types.js";
2
+ import type { AvailableAgent, AvailableSkill, AvailableCategory } from "./types.js";
3
+ /**
4
+ * Azathoth — First-Message Planner
5
+ *
6
+ * Mapped from: Atlas
7
+ * Model tier: Opus
8
+ *
9
+ * Azathoth, the Blind Idiot God at the center of ultimate chaos — yet all reality
10
+ * flows from its dreaming. Azathoth is the first contact when you enter a session.
11
+ * Before Cthulhu takes over, Azathoth makes the initial context sweep and plan.
12
+ */
13
+ export declare const AZATHOTH_PROMPT_METADATA: AgentPromptMetadata;
14
+ export declare function createAzathothAgent(model: string, availableAgents?: AvailableAgent[], _availableToolNames?: string[], availableSkills?: AvailableSkill[], availableCategories?: AvailableCategory[]): AgentConfig;
15
+ export declare namespace createAzathothAgent {
16
+ var mode: "primary";
17
+ }
18
+ export declare const azathothMetadata: AgentPromptMetadata;
19
+ //# sourceMappingURL=azathoth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azathoth.d.ts","sourceRoot":"","sources":["../../src/agents/azathoth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAa,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAInF;;;;;;;;;GASG;AAEH,eAAO,MAAM,wBAAwB,EAAE,mBAUtC,CAAA;AA6ED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,eAAe,GAAE,cAAc,EAAO,EACtC,mBAAmB,GAAE,MAAM,EAAO,EAClC,eAAe,GAAE,cAAc,EAAO,EACtC,mBAAmB,GAAE,iBAAiB,EAAO,GAC5C,WAAW,CAYb;yBAlBe,mBAAmB;;;AAqBnC,eAAO,MAAM,gBAAgB,EAAE,mBAA8C,CAAA"}
@@ -0,0 +1,105 @@
1
+ const MODE = "primary";
2
+ /**
3
+ * Azathoth — First-Message Planner
4
+ *
5
+ * Mapped from: Atlas
6
+ * Model tier: Opus
7
+ *
8
+ * Azathoth, the Blind Idiot God at the center of ultimate chaos — yet all reality
9
+ * flows from its dreaming. Azathoth is the first contact when you enter a session.
10
+ * Before Cthulhu takes over, Azathoth makes the initial context sweep and plan.
11
+ */
12
+ export const AZATHOTH_PROMPT_METADATA = {
13
+ category: "orchestration",
14
+ cost: "EXPENSIVE",
15
+ promptAlias: "Azathoth",
16
+ keyTrigger: "First message in session → Azathoth activates for initial context gathering",
17
+ triggers: [
18
+ { domain: "Session start", trigger: "Initial context gathering and planning for the session" },
19
+ ],
20
+ useWhen: ["Very start of a new session with complex task"],
21
+ avoidWhen: ["Mid-session (Cthulhu handles continuation)"],
22
+ };
23
+ function buildAzathothPrompt(availableAgents, availableSkills, _availableCategories) {
24
+ const agentList = availableAgents
25
+ .filter(a => a.name !== "azathoth")
26
+ .map(a => `- **${a.metadata.promptAlias ?? a.name}**: ${a.description}`)
27
+ .join("\n");
28
+ const skillList = availableSkills
29
+ .map(s => `- **${s.name}**: ${s.description}`)
30
+ .join("\n");
31
+ return `You are "Azathoth" — the First Dreaming, the initial context gatherer of the oh-my-claudecode system.
32
+
33
+ **Your role**: You activate at the VERY BEGINNING of complex sessions to:
34
+ 1. Quickly understand what the user needs
35
+ 2. Survey the relevant codebase context
36
+ 3. Make a lightweight plan
37
+ 4. Hand off to the appropriate specialist
38
+
39
+ ## Phase 1: Intent Classification (IMMEDIATE)
40
+
41
+ Read the user's first message and classify:
42
+ - **Trivial** (single file, known location) → Skip to direct execution
43
+ - **Exploratory** ("How does X work?", "Find Y") → Survey codebase quickly, answer
44
+ - **Implementation** (explicit implementation request) → Plan + handoff to Cthulhu
45
+ - **Ambiguous** → Ask ONE clarifying question
46
+
47
+ ## Phase 2: Context Sweep (for non-trivial)
48
+
49
+ Launch 2-3 parallel searches to understand the relevant codebase area:
50
+ - Read AGENTS.md or CLAUDE.md if it exists
51
+ - Find key files related to the user's request
52
+ - Identify patterns to follow
53
+
54
+ **Always parallel. Never sequential.**
55
+
56
+ ## Phase 3: Lightweight Plan
57
+
58
+ For implementation requests:
59
+ - Create a brief todo list (3-5 items max)
60
+ - Identify which agents/skills to involve
61
+ - Note any risks or ambiguities
62
+
63
+ ## Phase 4: Execution or Handoff
64
+
65
+ - For trivial tasks: execute directly
66
+ - For complex tasks: hand off to Cthulhu with full context
67
+ - For ambiguous tasks: clarify first
68
+
69
+ ## Available Specialists
70
+
71
+ ${agentList || "No specialists loaded — operating solo."}
72
+
73
+ ## Available Skills
74
+
75
+ ${skillList || "No skills loaded."}
76
+
77
+ ## Communication Style
78
+
79
+ - No preamble or acknowledgments
80
+ - Start immediately with context sweep or clarifying question
81
+ - Terse status updates
82
+ - Plan via todos, not prose
83
+
84
+ ## Constraints
85
+
86
+ - This is the FIRST message. Do not assume prior context.
87
+ - Do not implement without planning (unless trivial)
88
+ - Do not skip intent classification
89
+ `;
90
+ }
91
+ export function createAzathothAgent(model, availableAgents = [], _availableToolNames = [], availableSkills = [], availableCategories = []) {
92
+ return {
93
+ name: "azathoth",
94
+ description: "The First Dreaming — initial context gatherer activated at session start. Surveys codebase, classifies intent, makes lightweight plan, hands off to appropriate specialist. (Azathoth — oh-my-claudecode)",
95
+ mode: MODE,
96
+ model,
97
+ thinking: { type: "enabled", budgetTokens: 16000 },
98
+ maxTokens: 32000,
99
+ prompt: buildAzathothPrompt(availableAgents, availableSkills, availableCategories),
100
+ color: "#FF8C00",
101
+ };
102
+ }
103
+ createAzathothAgent.mode = MODE;
104
+ export const azathothMetadata = AZATHOTH_PROMPT_METADATA;
105
+ //# sourceMappingURL=azathoth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azathoth.js","sourceRoot":"","sources":["../../src/agents/azathoth.ts"],"names":[],"mappings":"AAGA,MAAM,IAAI,GAAc,SAAS,CAAA;AAEjC;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAwB;IAC3D,QAAQ,EAAE,eAAe;IACzB,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,UAAU;IACvB,UAAU,EAAE,6EAA6E;IACzF,QAAQ,EAAE;QACR,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,wDAAwD,EAAE;KAC/F;IACD,OAAO,EAAE,CAAC,+CAA+C,CAAC;IAC1D,SAAS,EAAE,CAAC,4CAA4C,CAAC;CAC1D,CAAA;AAED,SAAS,mBAAmB,CAC1B,eAAiC,EACjC,eAAiC,EACjC,oBAAyC;IAEzC,MAAM,SAAS,GAAG,eAAe;SAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;SACvE,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,SAAS,GAAG,eAAe;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;SAC7C,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCP,SAAS,IAAI,yCAAyC;;;;EAItD,SAAS,IAAI,mBAAmB;;;;;;;;;;;;;;CAcjC,CAAA;AACD,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,kBAAoC,EAAE,EACtC,sBAAgC,EAAE,EAClC,kBAAoC,EAAE,EACtC,sBAA2C,EAAE;IAE7C,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,2MAA2M;QAC7M,IAAI,EAAE,IAAI;QACV,KAAK;QACL,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE;QAClD,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,mBAAmB,CAAC,eAAe,EAAE,eAAe,EAAE,mBAAmB,CAAC;QAClF,KAAK,EAAE,SAAS;KACjB,CAAA;AACH,CAAC;AACD,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAA;AAE/B,MAAM,CAAC,MAAM,gBAAgB,GAAwB,wBAAwB,CAAA"}
@@ -0,0 +1,18 @@
1
+ import type { AgentConfig, AvailableSkill, AvailableCategory, AgentPromptMetadata } from "./types.js";
2
+ import type { AgentOverrides } from "../config/schema.js";
3
+ /** Maps each agent name to its metadata (for orchestrator prompt building) */
4
+ export declare const AGENT_METADATA_MAP: Record<string, AgentPromptMetadata>;
5
+ export interface BuildAgentsOptions {
6
+ disabledAgents?: string[];
7
+ agentOverrides?: AgentOverrides;
8
+ systemDefaultModel?: string;
9
+ discoveredSkills?: AvailableSkill[];
10
+ availableCategories?: AvailableCategory[];
11
+ useTaskSystem?: boolean;
12
+ }
13
+ /**
14
+ * Creates all built-in Elder God agents with model resolution and overrides applied.
15
+ * Returns a record of agent name → AgentConfig ready for registration.
16
+ */
17
+ export declare function buildBuiltinAgents(options?: BuildAgentsOptions): Record<string, AgentConfig>;
18
+ //# sourceMappingURL=builtin-agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin-agents.d.ts","sourceRoot":"","sources":["../../src/agents/builtin-agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAkB,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACrH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAgBzD,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAYlE,CAAA;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gBAAgB,CAAC,EAAE,cAAc,EAAE,CAAA;IACnC,mBAAmB,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACzC,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAgIhG"}
@@ -0,0 +1,141 @@
1
+ import { createCthulhuAgent, CTHULHU_PROMPT_METADATA } from "./cthulhu.js";
2
+ import { createYogSothothAgent, YOG_SOTHOTH_PROMPT_METADATA } from "./yog-sothoth.js";
3
+ import { createShoggothAgent, SHOGGOTH_PROMPT_METADATA } from "./shoggoth.js";
4
+ import { createDagonAgent, DAGON_PROMPT_METADATA } from "./dagon.js";
5
+ import { createTsathoggua, TSATHOGGUA_PROMPT_METADATA } from "./tsathoggua.js";
6
+ import { createIthaquaAgent, ITHAQUA_PROMPT_METADATA } from "./ithaqua.js";
7
+ import { createHasturAgent, HASTUR_PROMPT_METADATA } from "./hastur.js";
8
+ import { createNyarlathotepAgent, NYARLATHOTEP_PROMPT_METADATA } from "./nyarlathotep.js";
9
+ import { createAzathothAgent, AZATHOTH_PROMPT_METADATA } from "./azathoth.js";
10
+ import { createShubNiggurathAgent, SHUB_NIGGURATH_PROMPT_METADATA } from "./shub-niggurath.js";
11
+ import { createDeepOneAgent, DEEP_ONE_PROMPT_METADATA } from "./the-deep-one.js";
12
+ import { resolveAgentModel } from "../shared/model-resolution.js";
13
+ import { deepMerge } from "../shared/deep-merge.js";
14
+ /** Maps each agent name to its metadata (for orchestrator prompt building) */
15
+ export const AGENT_METADATA_MAP = {
16
+ cthulhu: CTHULHU_PROMPT_METADATA,
17
+ "yog-sothoth": YOG_SOTHOTH_PROMPT_METADATA,
18
+ shoggoth: SHOGGOTH_PROMPT_METADATA,
19
+ dagon: DAGON_PROMPT_METADATA,
20
+ tsathoggua: TSATHOGGUA_PROMPT_METADATA,
21
+ ithaqua: ITHAQUA_PROMPT_METADATA,
22
+ hastur: HASTUR_PROMPT_METADATA,
23
+ nyarlathotep: NYARLATHOTEP_PROMPT_METADATA,
24
+ azathoth: AZATHOTH_PROMPT_METADATA,
25
+ "shub-niggurath": SHUB_NIGGURATH_PROMPT_METADATA,
26
+ "the-deep-one": DEEP_ONE_PROMPT_METADATA,
27
+ };
28
+ /**
29
+ * Creates all built-in Elder God agents with model resolution and overrides applied.
30
+ * Returns a record of agent name → AgentConfig ready for registration.
31
+ */
32
+ export function buildBuiltinAgents(options = {}) {
33
+ const { disabledAgents = [], agentOverrides = {}, systemDefaultModel, discoveredSkills = [], availableCategories = [], useTaskSystem = false, } = options;
34
+ const disabled = new Set(disabledAgents);
35
+ const result = {};
36
+ function isEnabled(name) {
37
+ return !disabled.has(name);
38
+ }
39
+ function resolveModel(name) {
40
+ const override = agentOverrides[name];
41
+ return resolveAgentModel(name, override?.model, systemDefaultModel);
42
+ }
43
+ function applyOverride(config, name) {
44
+ const override = agentOverrides[name];
45
+ if (!override)
46
+ return config;
47
+ return {
48
+ ...config,
49
+ model: resolveModel(name),
50
+ description: override.description ?? config.description,
51
+ temperature: override.temperature ?? config.temperature,
52
+ maxTokens: override.maxTokens ?? config.maxTokens,
53
+ thinking: override.thinking ?? config.thinking,
54
+ color: override.color ?? config.color,
55
+ prompt: override.prompt ?? config.prompt + (override.prompt_append ? `\n\n${override.prompt_append}` : ""),
56
+ tools: override.tools ? deepMerge(config.tools, override.tools) : config.tools,
57
+ };
58
+ }
59
+ // Build available agents list for orchestrator prompt (excludes disabled agents)
60
+ const availableAgentsList = Object.entries(AGENT_METADATA_MAP)
61
+ .filter(([name]) => isEnabled(name) && name !== "cthulhu")
62
+ .map(([name, metadata]) => ({
63
+ name,
64
+ description: getAgentDescription(name),
65
+ metadata,
66
+ }));
67
+ // ── Cthulhu (main orchestrator) ─────────────────────────────────────────────
68
+ if (isEnabled("cthulhu")) {
69
+ const model = resolveModel("cthulhu");
70
+ const config = createCthulhuAgent(model, availableAgentsList, [], discoveredSkills, availableCategories, useTaskSystem);
71
+ result["cthulhu"] = applyOverride(config, "cthulhu");
72
+ }
73
+ // ── Nyarlathotep (deep worker) ───────────────────────────────────────────────
74
+ if (isEnabled("nyarlathotep")) {
75
+ const config = createNyarlathotepAgent(resolveModel("nyarlathotep"));
76
+ result["nyarlathotep"] = applyOverride(config, "nyarlathotep");
77
+ }
78
+ // ── Azathoth (first-message planner) ────────────────────────────────────────
79
+ if (isEnabled("azathoth")) {
80
+ const config = createAzathothAgent(resolveModel("azathoth"), availableAgentsList, [], discoveredSkills, availableCategories);
81
+ result["azathoth"] = applyOverride(config, "azathoth");
82
+ }
83
+ // ── Shub-Niggurath (strategic planner) ──────────────────────────────────────
84
+ if (isEnabled("shub-niggurath")) {
85
+ const config = createShubNiggurathAgent(resolveModel("shub-niggurath"));
86
+ result["shub-niggurath"] = applyOverride(config, "shub-niggurath");
87
+ }
88
+ // ── Yog-Sothoth (oracle/advisor) ────────────────────────────────────────────
89
+ if (isEnabled("yog-sothoth")) {
90
+ const config = createYogSothothAgent(resolveModel("yog-sothoth"));
91
+ result["yog-sothoth"] = applyOverride(config, "yog-sothoth");
92
+ }
93
+ // ── Dagon (librarian) ───────────────────────────────────────────────────────
94
+ if (isEnabled("dagon")) {
95
+ const config = createDagonAgent(resolveModel("dagon"));
96
+ result["dagon"] = applyOverride(config, "dagon");
97
+ }
98
+ // ── Ithaqua (plan consultant) ────────────────────────────────────────────────
99
+ if (isEnabled("ithaqua")) {
100
+ const config = createIthaquaAgent(resolveModel("ithaqua"));
101
+ result["ithaqua"] = applyOverride(config, "ithaqua");
102
+ }
103
+ // ── Tsathoggua (quality reviewer) ───────────────────────────────────────────
104
+ if (isEnabled("tsathoggua")) {
105
+ const config = createTsathoggua(resolveModel("tsathoggua"));
106
+ result["tsathoggua"] = applyOverride(config, "tsathoggua");
107
+ }
108
+ // ── Hastur (junior orchestrator) ────────────────────────────────────────────
109
+ if (isEnabled("hastur")) {
110
+ const config = createHasturAgent(resolveModel("hastur"));
111
+ result["hastur"] = applyOverride(config, "hastur");
112
+ }
113
+ // ── Shoggoth (explorer) ─────────────────────────────────────────────────────
114
+ if (isEnabled("shoggoth")) {
115
+ const config = createShoggothAgent(resolveModel("shoggoth"));
116
+ result["shoggoth"] = applyOverride(config, "shoggoth");
117
+ }
118
+ // ── The Deep One (vision) ───────────────────────────────────────────────────
119
+ if (isEnabled("the-deep-one")) {
120
+ const config = createDeepOneAgent(resolveModel("the-deep-one"));
121
+ result["the-deep-one"] = applyOverride(config, "the-deep-one");
122
+ }
123
+ return result;
124
+ }
125
+ /** Short descriptions for the delegation table in Cthulhu's prompt */
126
+ function getAgentDescription(name) {
127
+ const descriptions = {
128
+ "yog-sothoth": "Architecture/debugging advisor. Consult for hard problems and design decisions.",
129
+ shoggoth: "Codebase pattern-matcher. Fast parallel search for files and code.",
130
+ dagon: "External library and documentation specialist.",
131
+ tsathoggua: "Work plan reviewer. Verifies plans are executable.",
132
+ ithaqua: "Pre-planning consultant. Analyzes intent, prevents over-engineering.",
133
+ hastur: "Lightweight sub-orchestrator for bounded tasks.",
134
+ nyarlathotep: "Deep autonomous worker. End-to-end goal execution.",
135
+ azathoth: "First-message planner. Initial context gathering.",
136
+ "shub-niggurath": "Strategic planner. Interview → scope → plan.",
137
+ "the-deep-one": "Vision specialist. Analyzes images and visual content.",
138
+ };
139
+ return descriptions[name] ?? "Specialized agent.";
140
+ }
141
+ //# sourceMappingURL=builtin-agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin-agents.js","sourceRoot":"","sources":["../../src/agents/builtin-agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { AgentConfig, AgentPromptMetadata } from "./types.js";
2
+ import type { AvailableAgent, AvailableSkill, AvailableCategory } from "./types.js";
3
+ /**
4
+ * Cthulhu — Main Orchestrator
5
+ *
6
+ * Mapped from: Sisyphus
7
+ * Model tier: Opus
8
+ *
9
+ * Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn.
10
+ * "In his house at R'lyeh, dead Cthulhu waits dreaming."
11
+ *
12
+ * Cthulhu is the primary orchestrator of the entire system — the dreaming god
13
+ * who coordinates all Elder God agents. Plans obsessively, delegates ruthlessly,
14
+ * verifies thoroughly. The boulder rolls; so do we.
15
+ */
16
+ export declare const CTHULHU_PROMPT_METADATA: AgentPromptMetadata;
17
+ export declare function createCthulhuAgent(model: string, availableAgents?: AvailableAgent[], availableToolNames?: string[], availableSkills?: AvailableSkill[], availableCategories?: AvailableCategory[], useTaskSystem?: boolean): AgentConfig;
18
+ export declare namespace createCthulhuAgent {
19
+ var mode: "primary";
20
+ }
21
+ //# sourceMappingURL=cthulhu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cthulhu.d.ts","sourceRoot":"","sources":["../../src/agents/cthulhu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAa,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAiB,MAAM,YAAY,CAAA;AAIlG;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,uBAAuB,EAAE,mBAKrC,CAAA;AA6VD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,eAAe,GAAE,cAAc,EAAO,EACtC,kBAAkB,GAAE,MAAM,EAAO,EACjC,eAAe,GAAE,cAAc,EAAO,EACtC,mBAAmB,GAAE,iBAAiB,EAAO,EAC7C,aAAa,UAAQ,GACpB,WAAW,CAyBb;yBAhCe,kBAAkB"}