oh-my-claudecode 0.2.4 → 0.2.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.
Files changed (89) hide show
  1. package/README.md +103 -4
  2. package/commands/necronomicon-bind.md +45 -82
  3. package/dist/agents/builtin-agents.d.ts.map +1 -1
  4. package/dist/agents/builtin-agents.js +8 -0
  5. package/dist/agents/builtin-agents.js.map +1 -1
  6. package/dist/agents/cthulhu.d.ts.map +1 -1
  7. package/dist/agents/cthulhu.js +11 -0
  8. package/dist/agents/cthulhu.js.map +1 -1
  9. package/dist/agents/dagon.d.ts.map +1 -1
  10. package/dist/agents/dagon.js +13 -0
  11. package/dist/agents/dagon.js.map +1 -1
  12. package/dist/agents/nodens-advanced.d.ts +182 -0
  13. package/dist/agents/nodens-advanced.d.ts.map +1 -0
  14. package/dist/agents/nodens-advanced.js +297 -0
  15. package/dist/agents/nodens-advanced.js.map +1 -0
  16. package/dist/agents/nodens.d.ts +42 -0
  17. package/dist/agents/nodens.d.ts.map +1 -0
  18. package/dist/agents/nodens.js +147 -0
  19. package/dist/agents/nodens.js.map +1 -0
  20. package/dist/agents/shoggoth.d.ts.map +1 -1
  21. package/dist/agents/shoggoth.js +11 -1
  22. package/dist/agents/shoggoth.js.map +1 -1
  23. package/dist/cli/bind.d.ts +24 -0
  24. package/dist/cli/bind.d.ts.map +1 -1
  25. package/dist/cli/bind.js +92 -25
  26. package/dist/cli/bind.js.map +1 -1
  27. package/dist/cli/doctor.d.ts.map +1 -1
  28. package/dist/cli/doctor.js +7 -5
  29. package/dist/cli/doctor.js.map +1 -1
  30. package/dist/cli/index.js +54 -4
  31. package/dist/cli/index.js.map +1 -1
  32. package/dist/cli/version.d.ts +2 -0
  33. package/dist/cli/version.d.ts.map +1 -0
  34. package/dist/cli/version.js +28 -0
  35. package/dist/cli/version.js.map +1 -0
  36. package/dist/config/schema.d.ts +648 -17
  37. package/dist/config/schema.d.ts.map +1 -1
  38. package/dist/config/schema.js +21 -2
  39. package/dist/config/schema.js.map +1 -1
  40. package/dist/features/web-research-background/advanced-patterns.d.ts +44 -0
  41. package/dist/features/web-research-background/advanced-patterns.d.ts.map +1 -0
  42. package/dist/features/web-research-background/advanced-patterns.js +139 -0
  43. package/dist/features/web-research-background/advanced-patterns.js.map +1 -0
  44. package/dist/features/web-research-background/index.d.ts +73 -0
  45. package/dist/features/web-research-background/index.d.ts.map +1 -0
  46. package/dist/features/web-research-background/index.js +131 -0
  47. package/dist/features/web-research-background/index.js.map +1 -0
  48. package/dist/features/yith-archive/functions/opencode-import.d.ts.map +1 -1
  49. package/dist/features/yith-archive/functions/opencode-import.js +129 -90
  50. package/dist/features/yith-archive/functions/opencode-import.js.map +1 -1
  51. package/dist/features/yith-archive/index.d.ts +8 -0
  52. package/dist/features/yith-archive/index.d.ts.map +1 -1
  53. package/dist/features/yith-archive/index.js +1 -0
  54. package/dist/features/yith-archive/index.js.map +1 -1
  55. package/dist/features/yith-archive/types.d.ts +15 -0
  56. package/dist/features/yith-archive/types.d.ts.map +1 -1
  57. package/dist/hooks/design-detector-hook.d.ts +12 -0
  58. package/dist/hooks/design-detector-hook.d.ts.map +1 -0
  59. package/dist/hooks/design-detector-hook.js +42 -0
  60. package/dist/hooks/design-detector-hook.js.map +1 -0
  61. package/dist/hooks/design-detector.d.ts +47 -0
  62. package/dist/hooks/design-detector.d.ts.map +1 -0
  63. package/dist/hooks/design-detector.js +251 -0
  64. package/dist/hooks/design-detector.js.map +1 -0
  65. package/dist/hooks/index.d.ts +3 -0
  66. package/dist/hooks/index.d.ts.map +1 -1
  67. package/dist/hooks/index.js +27 -0
  68. package/dist/hooks/index.js.map +1 -1
  69. package/dist/hooks/web-research-detector.d.ts +58 -0
  70. package/dist/hooks/web-research-detector.d.ts.map +1 -0
  71. package/dist/hooks/web-research-detector.js +205 -0
  72. package/dist/hooks/web-research-detector.js.map +1 -0
  73. package/dist/hooks/web-research-hook.d.ts +12 -0
  74. package/dist/hooks/web-research-hook.d.ts.map +1 -0
  75. package/dist/hooks/web-research-hook.js +43 -0
  76. package/dist/hooks/web-research-hook.js.map +1 -0
  77. package/dist/hooks/yith-capture.d.ts +35 -0
  78. package/dist/hooks/yith-capture.d.ts.map +1 -0
  79. package/dist/hooks/yith-capture.js +113 -0
  80. package/dist/hooks/yith-capture.js.map +1 -0
  81. package/dist/linters/type-safety-ast.d.ts +108 -0
  82. package/dist/linters/type-safety-ast.d.ts.map +1 -0
  83. package/dist/linters/type-safety-ast.js +293 -0
  84. package/dist/linters/type-safety-ast.js.map +1 -0
  85. package/dist/linters/type-safety-linter.d.ts +66 -0
  86. package/dist/linters/type-safety-linter.d.ts.map +1 -0
  87. package/dist/linters/type-safety-linter.js +317 -0
  88. package/dist/linters/type-safety-linter.js.map +1 -0
  89. package/package.json +1 -1
package/README.md CHANGED
@@ -60,7 +60,7 @@ These aren't three plugins you pick and choose. They're one integrated system th
60
60
  | **Yith Archive** | Persistent cross-session memory with retrieval-based injection. Dozens of memory primitives: remember, search, consolidate, evict, crystallize, reflect, temporal graph, pattern extraction, and more. Exposed to Claude Code as a stdio MCP server with 7 tools. |
61
61
  | **Work-packet protocol** | LLM-requiring memory ops (consolidate, summarize, reflect, etc.) run in sessions with no API key — each function has a state-machine variant that emits prompts for the parent agent to execute with its own subscription auth. |
62
62
  | **Block Summarizer** | In-session delegation summarization with on-disk block archive |
63
- | **8 lifecycle hooks** | Auto-activation, memory redirect, todo enforcement, completion loops, code-quality checks, rule injection, write guards |
63
+ | **8 lifecycle hooks** | Auto-activation, memory redirect, continuous Yith capture, todo enforcement, completion loops, code-quality checks, rule injection, write guards |
64
64
  | **10 slash commands** | Direct-invoke any mode or flow from the Claude Code chat bar |
65
65
  | **Intent gate** | Every user message is classified and routed before Cthulhu acts |
66
66
  | **Work plan system** | Multi-step planning flow with interview → scope → plan → review before execution |
@@ -80,9 +80,10 @@ The installer asks a few questions and then:
80
80
 
81
81
  1. Drops hook scripts into `~/.claude/hooks/`
82
82
  2. Registers them in `~/.claude/settings.json`
83
- 3. Copies slash command definitions to `~/.claude/commands/`
84
- 4. Creates `~/.claude/oh-my-claudecode.jsonc` with sensible defaults
85
- 5. Leaves your existing Claude Code config intact (backup is made)
83
+ 3. Registers the Yith Archive MCP server in `~/.claude.json`
84
+ 4. Copies slash command definitions to `~/.claude/commands/`
85
+ 5. Creates `~/.claude/oh-my-claudecode.jsonc` with sensible defaults
86
+ 6. Leaves your existing Claude Code config intact (backup is made)
86
87
 
87
88
  Non-interactive install (for CI or scripts):
88
89
 
@@ -130,6 +131,103 @@ On your next session in the same project, steps 4 and the initial memory injecti
130
131
  | **The Deep One** | Sonnet | subagent | Vision agent — images, screenshots, diagrams |
131
132
  | **Shoggoth** | Haiku | subagent | Fast parallel codebase search |
132
133
 
134
+ ## Agent Behavior Enhancements (v0.2.6)
135
+
136
+ v0.2.6 introduces three orthogonal agent behavior improvements, all enabled by default. These pillars extend how agents reason and operate without changing the core delegation model.
137
+
138
+ ### Web Research Enforcement
139
+
140
+ Agents automatically trigger web search when they encounter queries about:
141
+ - **Version checks**: "v1.0", "Node 18", "2024", "latest"
142
+ - **API updates and breaking changes**: "what changed", "deprecated", "breaking"
143
+ - **Framework release schedules**: "Next.js 15 coming soon", "LTS version"
144
+ - **Security vulnerabilities**: CVE references, vulnerability announcements
145
+ - **Package management**: npm audit patterns, outdated dependencies
146
+
147
+ Powered by the PreToolUse hook which detects these patterns and injects a Dagon background research agent prompt before the user's message reaches the main orchestrator. Results are available in the context window for the agent to reference.
148
+
149
+ **Default**: Enabled
150
+
151
+ **Disable**: Set `web_research.enabled: false` in `~/.claude/oh-my-claudecode.jsonc`
152
+
153
+ ```jsonc
154
+ {
155
+ "web_research": {
156
+ "enabled": false
157
+ }
158
+ }
159
+ ```
160
+
161
+ ### TypeScript Type Safety Linting
162
+
163
+ Automatic validation enforces type safety across the codebase:
164
+ - **Bans `any` types** — forces explicit typing or `unknown` with type guards
165
+ - **Unsafe casts** — flags `as any` and `as unknown` patterns
166
+ - **Missing return types** — detects functions without explicit return type annotations
167
+ - **@ts-ignore without reason** — requires inline comments explaining suppression
168
+ - **Auto-fix support** — safe violations can be fixed automatically via pre-commit hook
169
+
170
+ The linter runs at pre-commit time and blocks unsafe code from entering the repository. Type safety metrics are exported for CI/CD dashboards to track compliance over time.
171
+
172
+ **Default**: Enabled
173
+
174
+ **Disable**: Set `type_safety.enabled: false` in `~/.claude/oh-my-claudecode.jsonc`
175
+
176
+ ```jsonc
177
+ {
178
+ "type_safety": {
179
+ "enabled": false
180
+ }
181
+ }
182
+ ```
183
+
184
+ ### Nodens — Design Specialization Agent
185
+
186
+ A dedicated design agent routes UI/component design tasks and provides:
187
+ - **Accessibility automation**: WCAG compliance testing, keyboard navigation, screen reader support via Axe-core
188
+ - **Responsive design**: Automatically generates component variants for multiple breakpoints
189
+ - **Playwright test generation**: Creates visual regression and interaction tests
190
+ - **Figma integration**: Extracts design tokens (colors, typography, spacing) from Figma files
191
+ - **Vision capability**: Analyzes screenshots and design mockups with Claude Opus
192
+
193
+ When design-related queries are detected (via the design-detector hook), they are automatically routed to Nodens instead of the general orchestrator. Nodens has a design-first system prompt and specialized tools for component generation, accessibility testing, and design token management.
194
+
195
+ **Default**: Enabled
196
+
197
+ **Disable**: Set `frontend_design.enabled: false` in `~/.claude/oh-my-claudecode.jsonc`
198
+
199
+ ```jsonc
200
+ {
201
+ "frontend_design": {
202
+ "enabled": false
203
+ }
204
+ }
205
+ ```
206
+
207
+ ### Configuration Examples
208
+
209
+ Disable all three pillars:
210
+
211
+ ```jsonc
212
+ {
213
+ "web_research": { "enabled": false },
214
+ "type_safety": { "enabled": false },
215
+ "frontend_design": { "enabled": false }
216
+ }
217
+ ```
218
+
219
+ Enable selective behavior (type safety and design, disable web research):
220
+
221
+ ```jsonc
222
+ {
223
+ "web_research": { "enabled": false },
224
+ "type_safety": { "enabled": true },
225
+ "frontend_design": { "enabled": true }
226
+ }
227
+ ```
228
+
229
+ Each pillar is independent — disable any combination without affecting the others. All three are checked and active by default on fresh installs.
230
+
133
231
  ## Yith Archive — persistent cross-session memory
134
232
 
135
233
  Named for the Great Race of Yith from *The Shadow Out of Time* — mind-transferring archivists who maintain records across time — Yith Archive is OMC's canonical persistent memory subsystem. It is a novel, in-process combined implementation inspired by the broader ecosystem of agent-memory research, rewritten from scratch to fit a single-process Claude Code plugin instead of a multi-client service.
@@ -298,6 +396,7 @@ After installation these are available in Claude Code sessions:
298
396
  |------|-------|-------------|
299
397
  | `cthulhu-auto` | SessionStart | Auto-activate Cthulhu orchestrator mode when `.elder-gods/` is present in the project |
300
398
  | `memory-override` | SessionStart | Redirect persistent memory writes from Claude Code's built-in auto-memory to Yith Archive |
399
+ | `yith-capture` | Stop | Continuous Yith ingestion — after every assistant turn, spawns a background `bind --resume --claude-only` to pull new transcript lines into the archive, and occasionally spawns `claude -p` to drain pending compression when the queue grows past threshold. Debounced; non-blocking; fail-safe. |
301
400
  | `todo-continuation` | Stop | Inject a reminder to continue if incomplete todos exist when stopping |
302
401
  | `elder-loop` | Stop | Self-referential completion loop — keeps running until the promise is met |
303
402
  | `comment-checker` | PostToolUse | Warn when AI-slop comments are introduced (comments that explain obvious code) |
@@ -1,106 +1,69 @@
1
1
  ---
2
- name: bind-necronomicon
3
- description: First-run setup ritual for Yith Archive. Verifies the MCP server is reachable, warms up the embedding model, and offers to backfill past Claude Code sessions into the Necronomicon. Safe to run multiple times it detects what's already done.
2
+ name: necronomicon-bind
3
+ description: Start, continue, or resume the Necronomicon binding ritual. Thin wrapper that shells out to `oh-my-claudecode bind` (real progress bars, state-machine resumption, all-projects ingestion) and then offers to drain any pending compression via the work-packet loop using this session's own LLM.
4
4
  ---
5
5
 
6
- You are performing the binding ritual for the **Necronomicon** the on-disk grimoire that the Great Race of Yith maintains for this machine. The Necronomicon is the physical JSON file at `~/.oh-my-claudecode/yith/necronomicon.json`; Yith Archive is the archival practice that writes to and reads from it. Both names refer to the same system, viewed through different lenses.
6
+ You are invoking the **Necronomicon Binding Ritual**. The ritual has two halves that must work together:
7
7
 
8
- Run the ritual in phases. For each phase, print a header line, run the check, and report the outcome with a status glyph (`✓`, `⚠`, `✗`, or `…`) and a short explanation. Do NOT proceed to the next phase until the current one is resolved.
8
+ 1. **The fast half** (no LLM) download the embedding model, scan every past Claude Code transcript across every project on this machine, import opencode history, migrate `.sisyphus/` dirs, seed preliminary memories from project code. This runs as a **real Node process** in the user's terminal with an ANSI TUI showing actual download progress bars and per-phase status. It must run OUTSIDE this Claude Code session.
9
9
 
10
- ## Phase IThe Tome Exists
10
+ 2. **The slow half** (LLM-dependent) compress the thousands of raw observations the fast half ingested into searchable memories. This runs **inside this session** via the work-packet protocol, using the session's own subscription auth. Each round is one `yith_trigger → yith_commit_work` loop iteration.
11
11
 
12
- Check whether the Necronomicon has been bound on this machine.
12
+ ## Why not do everything from this slash command?
13
13
 
14
- 1. Use the `yith_context` MCP tool with a placeholder project like `{ project: "." }`. This is a lightweight call that exercises the MCP server without writing anything.
15
- 2. If the tool returns successfully (even with empty context), the server is reachable → `✓ Necronomicon is bound and the Great Race answers.`
16
- 3. If the MCP tool is not available at all (the `yith_trigger`/`yith_context` tools don't appear in your tool list), the MCP server is not registered. Tell the user to run `oh-my-claudecode install` in their terminal, then start a NEW Claude Code session and re-run `/bind-necronomicon`. Stop here.
17
- 4. If the tool is available but errors out, report the error verbatim and stop.
14
+ Previous versions of this ritual were prompt-only — they asked Claude to call `yith_remember` / `yith_trigger` inline from this slash command. That design was unreliable: Claude would skip steps, print cosmetic ✓ marks without actually invoking the tools, and the user would see "bound in 5 seconds" with an empty Necronomicon. **Do not try to recreate that approach.** The fast half MUST run as a real CLI, and this command's job is to drive it and then handle the compression half.
18
15
 
19
- ## Phase IIThe Embedding Sigil
16
+ ## Phase 1Delegate to the CLI
20
17
 
21
- If this is a fresh install, the local nomic embedding model (~137 MB) has not been downloaded yet. The first memory write or search triggers the download. We'll warm it up explicitly now so the first real use is fast.
18
+ Do this BEFORE anything else:
22
19
 
23
- 1. Call `yith_remember` with a harmless sentinel memory:
24
- ```
25
- yith_remember({
26
- content: "Necronomicon binding sentinel — written during /bind-necronomicon ritual",
27
- type: "reference",
28
- concepts: ["bind-necronomicon", "sentinel"]
29
- })
30
- ```
31
- 2. The response may take 30-90 seconds on first call because the nomic model downloads in the background. While you wait, print a progress indicator to the user:
32
- ```
33
- ▓▓▓▓▓▓▓▓▓░░░░░░░░ warming up the embedding sigil...
20
+ 1. Tell the user: "Running `oh-my-claudecode bind` in your terminal. This downloads the embedding model (~137 MB, one-time), scans every past Claude Code transcript, imports opencode data, migrates sisyphus directories, and seeds preliminary memories from project code. It's resumable — if it errors mid-run, re-running this command picks up where it stopped."
21
+
22
+ 2. Run via `Bash`:
23
+ ```bash
24
+ oh-my-claudecode bind
34
25
  ```
35
- (Only one frame you cannot actually animate in a Claude Code session. The single bar communicates "work is happening, this is the expected delay.")
36
- 3. If the call succeeds → `✓ The embedding sigil pulses. Model is cached under ~/.cache/huggingface/.`
37
- 4. If the call fails with a network error, tell the user the nomic download needs internet and offer to skip this phase (BM25-only mode still works). Continue.
38
- 5. If the call fails with a parse or validation error, report it and stop.
26
+ Stream the output to the user as it arrives. The CLI already produces its own TUI (section headers, progress bars, status glyphs) so you should forward the output verbatim without adding your own commentary.
39
27
 
40
- ## Phase IIISearching the Tome
28
+ 3. When `oh-my-claudecode bind` exits, inspect its final lines. If the CLI reports "Ritual elapsed: Xs" and a green ✓, the fast half succeeded. If it reports a red ✗ with an error, surface that to the user and stop re-running this command will retry the failed phase automatically from the state machine cursor.
41
29
 
42
- Verify hybrid search actually returns the sentinel memory we just wrote.
30
+ ## Phase 2 Drain pending compression via the work-packet loop
43
31
 
44
- 1. Call `yith_search({ query: "Necronomicon binding sentinel", limit: 5 })`.
45
- 2. If the result contains at least one hit referencing the sentinel → `✓ Hybrid search is operational (BM25 + vector index in sync).`
46
- 3. If zero hits but the sentinel is definitely in KV (you can verify with `yith_trigger({ name: "mem::diagnose", args: {} })`), the index is out of sync. Call `yith_trigger({ name: "mem::rebuild-index", args: {} })` if such a function exists, or tell the user to restart their Claude Code session (the MCP server rebuilds the index on boot). Continue.
32
+ The CLI's last line tells you how many raw observations are pending compression. That's the input to this half.
47
33
 
48
- ## Phase IV Past Sessions (Optional)
34
+ 1. Call `yith_trigger({ name: "mem::compress-batch-step", args: { limit: 100 } })`. Expect a `needs_llm_work` envelope with one or more `workPackets` and a `continuation` token.
49
35
 
50
- The user may have Claude Code transcripts from past sessions on this machine, in `~/.claude/projects/<sanitized-cwd>/*.jsonl`. Offer to backfill them into the Necronomicon so the archive has history from before it existed.
36
+ 2. For each packet in the envelope: read `systemPrompt` + `userPrompt`, reason about them inline (you ARE the LLM for Yith — just produce the compression XML the system prompt asks for), and collect the results.
51
37
 
52
- 1. Ask the user: "Would you like to backfill past Claude Code sessions into the Necronomicon? This reads your historical `~/.claude/projects/` transcripts and converts user prompts + assistant responses + tool calls into observations that get compressed and made searchable. (yes / skip / specific-project-path)"
53
- 2. If the user says `skip`, note it and move on.
54
- 3. If they say `yes` or provide a path, run:
55
- ```
56
- yith_trigger({
57
- name: "mem::backfill-sessions",
58
- args: {
59
- projectCwd: <path or "." for cwd>,
60
- dryRun: false,
61
- maxObservations: 500
62
- }
63
- })
64
- ```
65
- 4. The backfill runs through the work-packet loop. Each compression round will return a `needs_llm_work` envelope with one or more packets. For each round:
66
- - Run the packets' prompts through your own reasoning (inline — the systemPrompt + userPrompt describe a compression task, you act as the LLM for Yith).
67
- - Commit the completions via `yith_commit_work({ continuation, packetResults: [...] })`.
68
- - Loop until the response is terminal.
69
- 5. Between rounds, render a progress bar using monospace ASCII:
38
+ 3. Call `yith_commit_work({ continuation, packetResults: [{id, completion}, ...] })`. The response is either terminal (`{status: "success"}`) or another `needs_llm_work` for the next batch.
39
+
40
+ 4. Between rounds, render a monospace ASCII progress bar so the user sees forward motion:
70
41
  ```
71
- [▓▓▓▓▓▓░░░░░░░░░░░░] 34% 171/500 observations compressed
42
+ [▓▓▓▓▓▓░░░░░░░░░░░░░░] 34% 171/500 raw observations compressed
72
43
  ```
73
- Update the numbers in each round's status message. Users can't get an animated bar, but a re-printed bar in each tool call shows forward motion.
74
- 6. Report the final counts from the backfill terminal result.
44
+ Re-print the bar each round with updated numbers. (The Claude Code chat UI won't animate in place, but a re-printed bar per tool call shows clear progress.)
75
45
 
76
- ## Phase VSealing the Ritual
46
+ 5. Loop until terminal. Each round's `limit` can be 50-100 adjust based on how large the prompts are. If a round takes more than ~2 minutes, drop the limit for the next one.
77
47
 
78
- 1. Print a summary of what was done:
79
- ```
80
- ═════════════════════════════════════════════════════
81
- The Necronomicon is bound.
82
- ═════════════════════════════════════════════════════
83
- Tome: ~/.oh-my-claudecode/yith/necronomicon.json
84
- MCP server: yith-archive (reachable)
85
- Embedding model: local:nomic-embed-text-v1.5 (768 dims)
86
- Memories: <count from yith_trigger mem::diagnose>
87
- Observations: <count from yith_trigger mem::diagnose>
88
- Backfill: <yes/skipped + counts>
89
- ═════════════════════════════════════════════════════
90
- The Great Race of Yith now remembers this machine.
91
- Every new Claude Code session will have access to
92
- the Necronomicon through yith_search, yith_remember,
93
- yith_context, and the other MCP tools.
94
- ```
95
- 2. If any phase reported a warning, restate the warnings at the end so the user doesn't miss them.
48
+ ## Phase 3 Seal the ritual
49
+
50
+ Final output:
51
+
52
+ ```
53
+ ═══════════════════════════════════════════════════════
54
+ The Necronomicon is bound.
55
+ ═══════════════════════════════════════════════════════
56
+ Tome: ~/.oh-my-claudecode/yith/necronomicon.json
57
+ MCP server: yith-archive (via ~/.claude.json)
58
+ Embedding: local:nomic-embed-text-v1.5 (768 dims)
59
+ Observations: <total from mem::diagnose>
60
+ Compressed: <total - pending>
61
+ Pending: <remaining count>
62
+ ═══════════════════════════════════════════════════════
63
+ ```
96
64
 
97
- ## Re-entry
65
+ If there are still pending observations (either because `limit` capped the batch or because the user interrupted), tell them exactly how many and that running `/necronomicon-bind` again resumes from where it stopped.
98
66
 
99
- This command is idempotent. Running it twice in a row:
100
- - Phase I passes immediately (MCP reachable)
101
- - Phase II is a no-op if the embedding model is already cached (the call returns fast)
102
- - Phase III passes immediately
103
- - Phase IV offers to backfill again (the user can skip if they already did it)
104
- - Phase V prints the final summary
67
+ ## Unattended mode
105
68
 
106
- Run it any time you want to verify the Necronomicon is still bound.
69
+ Mention once at the end: if the user wants this to happen in the background without opening a session, they can run `oh-my-claudecode bind --install-cron [--interval 1h]` once, and a cron entry will run `oh-my-claudecode bind --resume` on the interval. That form uses `claude -p` (Claude Code's non-interactive mode) to drive the compression half, so nothing needs to be open.
@@ -1 +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"}
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;AAiBzD,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAalE,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,CAsIhG"}
@@ -9,6 +9,7 @@ import { createNyarlathotepAgent, NYARLATHOTEP_PROMPT_METADATA } from "./nyarlat
9
9
  import { createAzathothAgent, AZATHOTH_PROMPT_METADATA } from "./azathoth.js";
10
10
  import { createShubNiggurathAgent, SHUB_NIGGURATH_PROMPT_METADATA } from "./shub-niggurath.js";
11
11
  import { createDeepOneAgent, DEEP_ONE_PROMPT_METADATA } from "./the-deep-one.js";
12
+ import { createNodenAgent, NODENS_PROMPT_METADATA } from "./nodens.js";
12
13
  import { resolveAgentModel } from "../shared/model-resolution.js";
13
14
  import { deepMerge } from "../shared/deep-merge.js";
14
15
  /** Maps each agent name to its metadata (for orchestrator prompt building) */
@@ -24,6 +25,7 @@ export const AGENT_METADATA_MAP = {
24
25
  azathoth: AZATHOTH_PROMPT_METADATA,
25
26
  "shub-niggurath": SHUB_NIGGURATH_PROMPT_METADATA,
26
27
  "the-deep-one": DEEP_ONE_PROMPT_METADATA,
28
+ nodens: NODENS_PROMPT_METADATA,
27
29
  };
28
30
  /**
29
31
  * Creates all built-in Elder God agents with model resolution and overrides applied.
@@ -120,6 +122,11 @@ export function buildBuiltinAgents(options = {}) {
120
122
  const config = createDeepOneAgent(resolveModel("the-deep-one"));
121
123
  result["the-deep-one"] = applyOverride(config, "the-deep-one");
122
124
  }
125
+ // ── Nodens (frontend design) ────────────────────────────────────────────────
126
+ if (isEnabled("nodens")) {
127
+ const config = createNodenAgent(resolveModel("nodens"));
128
+ result["nodens"] = applyOverride(config, "nodens");
129
+ }
123
130
  return result;
124
131
  }
125
132
  /** Short descriptions for the delegation table in Cthulhu's prompt */
@@ -135,6 +142,7 @@ function getAgentDescription(name) {
135
142
  azathoth: "First-message planner. Initial context gathering.",
136
143
  "shub-niggurath": "Strategic planner. Interview → scope → plan.",
137
144
  "the-deep-one": "Vision specialist. Analyzes images and visual content.",
145
+ nodens: "Nodens — God of Craftsmanship. Frontend design specialist. Intent → spec → impl → polish.",
138
146
  };
139
147
  return descriptions[name] ?? "Specialized agent.";
140
148
  }
@@ -1 +1 @@
1
- {"version":3,"file":"builtin-agents.js","sourceRoot":"","sources":["../../src/agents/builtin-agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builtin-agents.js","sourceRoot":"","sources":["../../src/agents/builtin-agents.ts"],"names":[],"mappings":"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"}
@@ -1 +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;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,uBAAuB,EAAE,mBAKrC,CAAA;AAoWD,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"}
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;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,uBAAuB,EAAE,mBAKrC,CAAA;AA+WD,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"}
@@ -350,6 +350,17 @@ If the user's approach seems problematic:
350
350
  - Prefer existing libraries over new dependencies
351
351
  - Prefer small, focused changes over large refactors
352
352
  - When uncertain about scope, ask
353
+
354
+ ## WEB RESEARCH ENFORCEMENT (Phase 2)
355
+
356
+ When delegating to subagents or answering questions involving:
357
+ - **Technology versions** or **release notes** → Delegate to Dagon or require WebSearch
358
+ - **Breaking changes** or **deprecations** → Verify with current documentation
359
+ - **Best practices** for frameworks → Check if recommendations have evolved
360
+ - **Library maintenance status** → Use Dagon to verify active projects
361
+
362
+ Acknowledge when you're operating near your knowledge cutoff.
363
+ Encourage web research for time-sensitive decisions.
353
364
  </Constraints>
354
365
  `;
355
366
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cthulhu.js","sourceRoot":"","sources":["../../src/agents/cthulhu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cthulhu.js","sourceRoot":"","sources":["../../src/agents/cthulhu.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dagon.d.ts","sourceRoot":"","sources":["../../src/agents/dagon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAa,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAI7E;;;;;;;;GAQG;AAEH,eAAO,MAAM,qBAAqB,EAAE,mBAkBnC,CAAA;AAiJD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAgB3D;yBAhBe,gBAAgB"}
1
+ {"version":3,"file":"dagon.d.ts","sourceRoot":"","sources":["../../src/agents/dagon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAa,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAI7E;;;;;;;;GAQG;AAEH,eAAO,MAAM,qBAAqB,EAAE,mBAkBnC,CAAA;AA8JD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAgB3D;yBAhBe,gBAAgB"}
@@ -168,6 +168,19 @@ function example() { ... }
168
168
  2. **ALWAYS CITE**: Every code claim needs a permalink
169
169
  3. **USE MARKDOWN**: Code blocks with language identifiers
170
170
  4. **BE CONCISE**: Facts > opinions, evidence > speculation
171
+
172
+ ---
173
+
174
+ ## WEB RESEARCH ENFORCEMENT (Phase 2)
175
+
176
+ When you encounter requests about:
177
+ - **Version numbers** (v1.5, v18, 2024, etc.) — verify current documentation
178
+ - **Breaking changes** — always check for the latest release notes
179
+ - **Best practices** — confirm if practices have evolved
180
+ - **Library status** — verify if libraries are still maintained
181
+
182
+ Use WebSearch or WebFetch proactively. Do not rely on knowledge cutoff.
183
+ Your role as searcher means you have responsibility to find CURRENT information.
171
184
  `;
172
185
  export function createDagonAgent(model) {
173
186
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"dagon.js","sourceRoot":"","sources":["../../src/agents/dagon.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAc,UAAU,CAAA;AAElC;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAwB;IACxD,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,OAAO;IACpB,UAAU,EAAE,6DAA6D;IACzE,QAAQ,EAAE;QACR;YACE,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,4FAA4F;SACtG;KACF;IACD,OAAO,EAAE;QACP,yBAAyB;QACzB,mDAAmD;QACnD,iDAAiD;QACjD,kCAAkC;QAClC,gDAAgD;KACjD;CACF,CAAA;AAED,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6IpB,CAAA;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO;QACL,IAAI,EAAE,OAAO;QACb,WAAW,EACT,8QAA8Q;QAChR,IAAI,EAAE,IAAI;QACV,KAAK;QACL,WAAW,EAAE,GAAG;QAChB,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE;YACL,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,KAAK;SACb;KACF,CAAA;AACH,CAAC;AACD,gBAAgB,CAAC,IAAI,GAAG,IAAI,CAAA"}
1
+ {"version":3,"file":"dagon.js","sourceRoot":"","sources":["../../src/agents/dagon.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAc,UAAU,CAAA;AAElC;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAwB;IACxD,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,OAAO;IACpB,UAAU,EAAE,6DAA6D;IACzE,QAAQ,EAAE;QACR;YACE,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,4FAA4F;SACtG;KACF;IACD,OAAO,EAAE;QACP,yBAAyB;QACzB,mDAAmD;QACnD,iDAAiD;QACjD,kCAAkC;QAClC,gDAAgD;KACjD;CACF,CAAA;AAED,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0JpB,CAAA;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO;QACL,IAAI,EAAE,OAAO;QACb,WAAW,EACT,8QAA8Q;QAChR,IAAI,EAAE,IAAI;QACV,KAAK;QACL,WAAW,EAAE,GAAG;QAChB,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE;YACL,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,KAAK;SACb;KACF,CAAA;AACH,CAAC;AACD,gBAAgB,CAAC,IAAI,GAAG,IAAI,CAAA"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Nodens - Advanced Design Capabilities
3
+ *
4
+ * Extensions for vision analysis, Figma integration, A11y automation, and Playwright testing.
5
+ */
6
+ /**
7
+ * Vision analysis configuration
8
+ */
9
+ export interface VisionConfig {
10
+ enabled: boolean;
11
+ model?: string;
12
+ capabilities?: ("color_analysis" | "typography" | "spacing" | "layout" | "a11y")[];
13
+ }
14
+ /**
15
+ * Figma integration configuration
16
+ */
17
+ export interface FigmaConfig {
18
+ enabled: boolean;
19
+ apiToken?: string;
20
+ detectLinks?: boolean;
21
+ extractTokens?: boolean;
22
+ }
23
+ /**
24
+ * Accessibility automation configuration
25
+ */
26
+ export interface A11yConfig {
27
+ enabled: boolean;
28
+ wcagLevel?: "A" | "AA" | "AAA";
29
+ rules?: string[];
30
+ generateTests?: boolean;
31
+ }
32
+ /**
33
+ * Playwright test generation configuration
34
+ */
35
+ export interface PlaywrightConfig {
36
+ enabled: boolean;
37
+ generateVisualTests?: boolean;
38
+ generateInteractionTests?: boolean;
39
+ generateResponsiveTests?: boolean;
40
+ breakpoints?: Record<string, number>;
41
+ }
42
+ /**
43
+ * Vision analysis result
44
+ */
45
+ export interface VisionAnalysisResult {
46
+ success: boolean;
47
+ colors?: {
48
+ dominant: string[];
49
+ palette: string[];
50
+ contrast: {
51
+ ratio: number;
52
+ wcagLevel: string;
53
+ }[];
54
+ };
55
+ typography?: {
56
+ families: string[];
57
+ sizes: number[];
58
+ weights: string[];
59
+ };
60
+ spacing?: {
61
+ consistent: boolean;
62
+ baseUnit: number;
63
+ scale: number[];
64
+ };
65
+ layout?: {
66
+ type: "flex" | "grid" | "responsive";
67
+ breakpoints: number[];
68
+ };
69
+ issues?: string[];
70
+ }
71
+ /**
72
+ * Figma design token
73
+ */
74
+ export interface DesignToken {
75
+ name: string;
76
+ value: string;
77
+ category: "color" | "typography" | "spacing" | "sizing" | "other";
78
+ description?: string;
79
+ }
80
+ /**
81
+ * Figma extraction result
82
+ */
83
+ export interface FigmaExtractionResult {
84
+ success: boolean;
85
+ fileId?: string;
86
+ colors?: DesignToken[];
87
+ typography?: DesignToken[];
88
+ spacing?: DesignToken[];
89
+ components?: {
90
+ name: string;
91
+ variants: string[];
92
+ }[];
93
+ issues?: string[];
94
+ }
95
+ /**
96
+ * A11y audit issue
97
+ */
98
+ export interface A11yIssue {
99
+ id: string;
100
+ impact: "critical" | "serious" | "moderate" | "minor";
101
+ description: string;
102
+ wcagLevel: string;
103
+ elements: string[];
104
+ suggestion: string;
105
+ }
106
+ /**
107
+ * A11y audit result
108
+ */
109
+ export interface A11yAuditResult {
110
+ success: boolean;
111
+ violations: A11yIssue[];
112
+ passes: string[];
113
+ wcagAACompliant: boolean;
114
+ testCode?: string;
115
+ }
116
+ /**
117
+ * Playwright test suite
118
+ */
119
+ export interface PlaywrightTestSuite {
120
+ visualTests: string;
121
+ interactionTests: string;
122
+ responsiveTests: string;
123
+ a11yTests: string;
124
+ }
125
+ /**
126
+ * Perform vision analysis on component screenshot
127
+ *
128
+ * @param imageData - Base64 image or image path
129
+ * @param config - Vision configuration
130
+ * @returns Vision analysis result
131
+ */
132
+ export declare function analyzeComponentVision(imageData: string, config?: VisionConfig): Promise<VisionAnalysisResult>;
133
+ /**
134
+ * Extract design tokens from Figma file
135
+ *
136
+ * @param figmaUrl - Figma file URL
137
+ * @param config - Figma configuration
138
+ * @returns Figma extraction result
139
+ */
140
+ export declare function extractFigmaTokens(figmaUrl: string, config?: FigmaConfig): Promise<FigmaExtractionResult>;
141
+ /**
142
+ * Generate A11y audit test code
143
+ *
144
+ * @param componentName - Component name
145
+ * @param config - A11y configuration
146
+ * @returns A11y audit result with test code
147
+ */
148
+ export declare function generateA11yAuditCode(componentName: string, config?: A11yConfig): Promise<A11yAuditResult>;
149
+ /**
150
+ * Generate Playwright test suite for component
151
+ *
152
+ * @param componentName - Component name
153
+ * @param config - Playwright configuration
154
+ * @returns Playwright test suite
155
+ */
156
+ export declare function generatePlaywrightTests(componentName: string, config?: PlaywrightConfig): PlaywrightTestSuite;
157
+ /**
158
+ * Advanced Nodens configuration
159
+ */
160
+ export interface NodensAdvancedConfig {
161
+ vision?: VisionConfig;
162
+ figma?: FigmaConfig;
163
+ a11y?: A11yConfig;
164
+ playwright?: PlaywrightConfig;
165
+ }
166
+ /**
167
+ * Check if vision is enabled
168
+ */
169
+ export declare function isVisionEnabled(config?: NodensAdvancedConfig): boolean;
170
+ /**
171
+ * Check if Figma integration is enabled
172
+ */
173
+ export declare function isFigmaEnabled(config?: NodensAdvancedConfig): boolean;
174
+ /**
175
+ * Check if A11y automation is enabled
176
+ */
177
+ export declare function isA11yEnabled(config?: NodensAdvancedConfig): boolean;
178
+ /**
179
+ * Check if Playwright testing is enabled
180
+ */
181
+ export declare function isPlaywrightEnabled(config?: NodensAdvancedConfig): boolean;
182
+ //# sourceMappingURL=nodens-advanced.d.ts.map