openhermes 4.3.0 → 4.11.2

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 (143) hide show
  1. package/CONTEXT.md +10 -1
  2. package/README.md +54 -42
  3. package/bootstrap.ts +396 -142
  4. package/harness/agents/oh-browser.md +97 -0
  5. package/harness/agents/oh-builder.md +78 -0
  6. package/harness/agents/oh-facade.md +75 -0
  7. package/harness/agents/oh-fusion.md +45 -0
  8. package/harness/agents/oh-gauntlet.md +71 -0
  9. package/harness/agents/oh-grill.md +71 -0
  10. package/harness/agents/oh-investigate.md +60 -0
  11. package/harness/agents/oh-manifest.md +95 -0
  12. package/harness/agents/oh-plan-review.md +40 -0
  13. package/harness/agents/oh-planner.md +50 -0
  14. package/harness/agents/oh-refactor.md +37 -0
  15. package/harness/agents/oh-retro.md +46 -0
  16. package/harness/agents/oh-review.md +85 -0
  17. package/harness/agents/oh-security.md +83 -0
  18. package/harness/agents/oh-ship.md +76 -0
  19. package/harness/agents/oh-skill-craft.md +38 -0
  20. package/harness/agents/openhermes.md +28 -73
  21. package/harness/codex/AUTOPILOT.md +235 -87
  22. package/harness/codex/CHARTER.md +80 -0
  23. package/harness/instructions/SHELL.md +76 -0
  24. package/harness/lib/background/background.test.ts +197 -0
  25. package/harness/lib/background/index.ts +7 -0
  26. package/harness/lib/background/interfaces.ts +31 -0
  27. package/harness/lib/background/manager.ts +320 -0
  28. package/harness/lib/composer/compose.test.ts +168 -0
  29. package/harness/lib/composer/compose.ts +65 -0
  30. package/harness/lib/composer/fragments/01-identity.md +1 -0
  31. package/harness/lib/composer/fragments/02-delegation.md +6 -0
  32. package/harness/lib/composer/fragments/03-permissions.md +13 -0
  33. package/harness/lib/composer/fragments/04-task-flow.md +15 -0
  34. package/harness/lib/composer/fragments/05-confidence.md +5 -0
  35. package/harness/lib/composer/fragments/06-parallelization.md +17 -0
  36. package/harness/lib/composer/fragments/07-shell.md +41 -0
  37. package/harness/lib/composer/fragments/08-routing.md +8 -0
  38. package/harness/lib/composer/fragments/09-guardrails.md +12 -0
  39. package/harness/lib/composer/index.ts +1 -0
  40. package/harness/lib/hooks/builtins/confidence-gate-hook.ts +70 -0
  41. package/harness/lib/hooks/builtins/delegation-depth-hook.ts +59 -0
  42. package/harness/lib/hooks/builtins/error-recovery-hook.ts +107 -0
  43. package/harness/lib/hooks/builtins/memory-sync-hook.ts +73 -0
  44. package/harness/lib/hooks/builtins/plan-check-hook.ts +43 -0
  45. package/harness/lib/hooks/builtins/route-tracking-hook.ts +147 -0
  46. package/harness/lib/hooks/builtins/sanity-check-hook.ts +52 -0
  47. package/harness/lib/hooks/builtins/shell-detect-hook.ts +96 -0
  48. package/harness/lib/hooks/hooks.test.ts +1016 -0
  49. package/harness/lib/hooks/index.ts +30 -0
  50. package/harness/lib/hooks/registry.ts +416 -0
  51. package/harness/lib/hooks/types.ts +71 -0
  52. package/harness/lib/memory/index.ts +18 -0
  53. package/harness/lib/memory/interfaces.ts +53 -0
  54. package/harness/lib/memory/memory-manager.ts +205 -0
  55. package/harness/lib/memory/memory.test.ts +491 -0
  56. package/harness/lib/memory/plan-store.ts +366 -0
  57. package/harness/lib/recovery/handler.ts +243 -0
  58. package/harness/lib/recovery/index.ts +14 -0
  59. package/harness/lib/recovery/interfaces.ts +48 -0
  60. package/harness/lib/recovery/patterns.ts +149 -0
  61. package/harness/lib/recovery/recovery.test.ts +312 -0
  62. package/harness/lib/sanity/anomaly-tracker.ts +127 -0
  63. package/harness/lib/sanity/checker.ts +178 -0
  64. package/harness/lib/sanity/index.ts +13 -0
  65. package/harness/lib/sanity/interfaces.ts +24 -0
  66. package/harness/lib/sanity/sanity.test.ts +472 -0
  67. package/harness/lib/sync/file-watcher.ts +174 -0
  68. package/harness/lib/sync/index.ts +11 -0
  69. package/harness/lib/sync/interfaces.ts +27 -0
  70. package/harness/lib/sync/plan-sync.ts +536 -0
  71. package/harness/lib/sync/sync.test.ts +832 -0
  72. package/harness/skills/oh-ascii/DEEP.md +292 -0
  73. package/harness/skills/oh-ascii/SKILL.md +31 -0
  74. package/harness/skills/oh-ascii/scripts/check_ascii_alignment.py +596 -0
  75. package/harness/skills/oh-browser/DEEP.md +54 -0
  76. package/harness/skills/oh-browser/SKILL.md +30 -0
  77. package/harness/skills/oh-builder/DEEP.md +63 -0
  78. package/harness/skills/oh-builder/SKILL.md +12 -90
  79. package/harness/skills/oh-expert/DEEP.md +85 -0
  80. package/harness/skills/oh-expert/SKILL.md +13 -106
  81. package/harness/skills/oh-facade/DEEP.md +182 -0
  82. package/harness/skills/oh-facade/SKILL.md +15 -279
  83. package/harness/skills/oh-freeze/DEEP.md +18 -0
  84. package/harness/skills/oh-freeze/SKILL.md +10 -19
  85. package/harness/skills/oh-full-output/DEEP.md +25 -0
  86. package/harness/skills/oh-full-output/SKILL.md +12 -65
  87. package/harness/skills/oh-fusion/DEEP.md +120 -0
  88. package/harness/skills/oh-fusion/SKILL.md +17 -295
  89. package/harness/skills/oh-gauntlet/DEEP.md +77 -0
  90. package/harness/skills/oh-gauntlet/SKILL.md +13 -105
  91. package/harness/skills/oh-grill/DEEP.md +51 -0
  92. package/harness/skills/oh-grill/SKILL.md +12 -63
  93. package/harness/skills/oh-guard/DEEP.md +19 -0
  94. package/harness/skills/oh-guard/SKILL.md +10 -24
  95. package/harness/skills/oh-handoff/DEEP.md +48 -0
  96. package/harness/skills/oh-handoff/SKILL.md +13 -23
  97. package/harness/skills/oh-health/DEEP.md +74 -0
  98. package/harness/skills/oh-health/SKILL.md +13 -76
  99. package/harness/skills/oh-init/DEEP.md +85 -0
  100. package/harness/skills/oh-init/SKILL.md +13 -127
  101. package/harness/skills/oh-investigate/DEEP.md +171 -0
  102. package/harness/skills/oh-investigate/SKILL.md +13 -66
  103. package/harness/skills/oh-issue/DEEP.md +21 -0
  104. package/harness/skills/oh-issue/SKILL.md +11 -27
  105. package/harness/skills/oh-manifest/DEEP.md +92 -0
  106. package/harness/skills/oh-manifest/SKILL.md +12 -109
  107. package/harness/skills/oh-plan-review/DEEP.md +90 -0
  108. package/harness/skills/oh-plan-review/SKILL.md +13 -115
  109. package/harness/skills/oh-planner/DEEP.md +172 -0
  110. package/harness/skills/oh-planner/SKILL.md +12 -149
  111. package/harness/skills/oh-prd/DEEP.md +45 -0
  112. package/harness/skills/oh-prd/SKILL.md +10 -26
  113. package/harness/skills/oh-refactor/DEEP.md +122 -0
  114. package/harness/skills/oh-refactor/SKILL.md +17 -410
  115. package/harness/skills/oh-retro/DEEP.md +26 -0
  116. package/harness/skills/oh-retro/SKILL.md +12 -24
  117. package/harness/skills/oh-review/DEEP.md +87 -0
  118. package/harness/skills/oh-review/SKILL.md +11 -97
  119. package/harness/skills/oh-security/DEEP.md +83 -0
  120. package/harness/skills/oh-security/SKILL.md +14 -96
  121. package/harness/skills/oh-ship/DEEP.md +141 -0
  122. package/harness/skills/oh-ship/SKILL.md +14 -32
  123. package/harness/skills/oh-skill-craft/DEEP.md +369 -0
  124. package/harness/skills/oh-skill-craft/SKILL.md +13 -177
  125. package/harness/skills/oh-skills-link/DEEP.md +16 -0
  126. package/harness/skills/oh-skills-link/SKILL.md +10 -20
  127. package/harness/skills/oh-skills-list/DEEP.md +20 -0
  128. package/harness/skills/oh-skills-list/SKILL.md +9 -22
  129. package/harness/skills/oh-triage/DEEP.md +23 -0
  130. package/harness/skills/oh-triage/SKILL.md +8 -24
  131. package/harness/skills/oh-worktree/DEEP.md +169 -0
  132. package/harness/skills/oh-worktree/SKILL.md +32 -0
  133. package/lib/harness-resolver.ts +8 -10
  134. package/package.json +7 -5
  135. package/tsconfig.json +1 -1
  136. package/harness/codex/CONSTITUTION.md +0 -73
  137. package/harness/codex/ROUTING.md +0 -92
  138. package/harness/commands/oh-doctor.md +0 -26
  139. package/harness/commands/oh-log.md +0 -18
  140. package/harness/instructions/RUNTIME.md +0 -30
  141. package/harness/skills/oh-caveman/SKILL.md +0 -42
  142. package/harness/skills/oh-learn/SKILL.md +0 -101
  143. package/lib/logger.ts +0 -75
package/CONTEXT.md CHANGED
@@ -8,6 +8,15 @@
8
8
  **Instruction** — Markdown loaded through `AGENTS.md` or `opencode.json` instructions.
9
9
  **Bootstrap** — The first-message context injected by the OpenHermes plugin.
10
10
 
11
+ ### Confidence Gate Terms
12
+ **Confidence Gate** — Phase 0.5 protocol in the autopilot loop that evaluates signal strength before routing. Bounded to 1 conversational exchange max.
13
+ **Confidence Level** — One of HIGH, MEDIUM, LOW, derived from signal axis evaluation.
14
+ **Transparent Gate** — HIGH confidence behavior: zero conversational overhead, proceed directly to Auto-Classify.
15
+ **Echo Gate** — MEDIUM confidence behavior: one-liner echo to confirm understanding, then classify.
16
+ **Question Gate** — LOW confidence behavior: one targeted question, then classify. Fallback to oh-planner on no answer.
17
+ **1 Exchange** — One user response to one orchestrator prompt. The gate is bounded to exactly 0 (HIGH) or 1 (MEDIUM/LOW) exchanges.
18
+ **Signal** — Evidence in user input used to evaluate confidence across 6 axes (domain vocabulary, deliverable clarity, scope, ambiguity, file reference, domain count).
19
+
11
20
  ## Relationships
12
21
  - OpenHermes contains many Skills, Commands, Agents, and Instructions.
13
22
  - Skills are invoked on demand.
@@ -15,4 +24,4 @@
15
24
  - OpenHermes is the default primary Agent.
16
25
 
17
26
  ## Flagged Ambiguities
18
- - Durable state is deferred for now and not a domain term for this pass.
27
+ - Durable state resolved 4-Tier Memory subsystem (System/Project/Mission/Task) now provides structured persistence with importance-driven retention.
package/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  <p align="center">
2
2
  <h1 align="center">⟳ OpenHermes</h1>
3
- <p align="center"><b>Closed loop. Zero permission.</b><br>
4
- <i>The AI orchestrator that never asks "should I continue?" it just routes.</i></p>
3
+ <p align="center"><b>Pragmatic. Task-focused. Concise.</b><br>
4
+ <i>The AI orchestrator that never stalls it classifies, delegates, and routes.</i></p>
5
5
  </p>
6
6
 
7
7
  <p align="center">
8
- <a href="https://www.npmjs.com/package/openhermes"><img src="https://img.shields.io/npm/v/openhermes?style=for-the-badge&label=version&color=FFD700" alt="npm version"></a>
8
+ <a href="https://www.npmjs.com/package/openhermes"><img src="https://img.shields.io/npm/v/openhermes?style=for-the-badge&label=version&color=FFD700" alt="v4.11.1"></a>
9
9
  <a href="https://github.com/nathwn12/openhermes/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green?style=for-the-badge" alt="License: MIT"></a>
10
10
  <a href="https://opencode.ai"><img src="https://img.shields.io/badge/runs%20on-OpenCode-6366f1?style=for-the-badge" alt="Runs on OpenCode"></a>
11
11
  <a href="https://github.com/nathwn12/openhermes"><img src="https://img.shields.io/badge/⭐%20star%20on-GitHub-181717?style=for-the-badge" alt="Star on GitHub"></a>
@@ -17,7 +17,7 @@
17
17
 
18
18
  OpenHermes doesn't.
19
19
 
20
- Drop it into OpenCode. Get a self-driving pipeline: auto-classify every request, delegate to specialists, route results automatically. No "can I?", no "shall I?", no "what next?" — just execution until the job is done.
20
+ Drop it into OpenCode. Get a closed-loop pipeline: auto-classify every request, delegate to specialists, route results automatically. No "can I?", no "shall I?", no "what next?" — just concise execution until the job is done.
21
21
 
22
22
  ```json
23
23
  { "plugin": ["openhermes@git+https://github.com/nathwn12/openhermes.git"] }
@@ -31,36 +31,37 @@ To install from `dev` (latest features, may be unstable):
31
31
 
32
32
  ---
33
33
 
34
- ## One sentence. Nine steps.
34
+ ## One sentence. One engine.
35
35
 
36
- Add the plugin. Restart. Type:
36
+ OpenHermes v4.11 ships with a hardened internal architecture — 8 subsystems working together to make every session faster, more reliable, and fully autonomous:
37
37
 
38
- > *"Plan a CLI tool for managing dotfiles."*
39
-
40
- You see output. Behind the scenes, this runs:
41
-
42
- | # | What fires | What it does |
43
- |---|---|---|
44
- | **1** | `AUTOPILOT.md` decision matrix | Multi-step, vague `PLANNING NEEDED` |
45
- | **2** | `oh-planner` | Brainstorm mode: architecture, user flow, risks |
46
- | **3** | `oh-planner` `oh-grill` | Plan passes stress-test it |
47
- | **4** | `oh-grill` `oh-planner` (revise) | Gaps found planner revises |
48
- | **5** | `oh-planner` → `oh-manifest` | Plan solid → enter build loop |
49
- | **6** | `oh-planner` → `oh-builder` → `oh-gauntlet` | Implement → test → review → loop |
50
- | **7** | `oh-gauntlet` → `oh-ship` | Tests pass → PR pipeline |
51
- | **8** | `oh-ship` → `oh-retro` | Shipped → retrospective |
52
- | **9** | `oh-retro` → `oh-planner` | Ready for the next cycle |
53
-
54
- One sentence. Nine automated steps. Each skill loaded on demand, executed in isolation, routed to the next specialist. **Auto-classify, delegate, route, repeat.** That's the entire model.
38
+ | Subsystem | What it does |
39
+ |-----------|-------------|
40
+ | **Prompt Composer** | 9 modular fragments joined at runtime → byte-identical. Add a fragment, never edit the composition code. |
41
+ | **Auto-Recovery** | 9 error categories with typed actions — retry with backoff, compact on overflow, escalate on unknowns. Self-healing. |
42
+ | **4-Tier Memory** | System Project Mission Task. Importance-scored, budget-enforced, plan-file-persisted. Context that survives hops. |
43
+ | **Hook Registry** | Pluggable pre-tool, post-tool, route, and session hooks with topological sort. 8 built-in hooks, zero routing boilerplate. |
44
+ | **MVCC Sync** | Atomic writes, version counters, conflict detection. Multiple sub-agents writing the same plan file — no data loss. |
45
+ | **Sanity Checker** | 8 output degeneration detectors — repetition, gibberish, low diversity — with automatic escalation and recovery injection. |
46
+ | **Background Cmd** | Fire-and-forget process spawning with timeout, status polling, and auto-cleanup. Non-blocking long-running tasks. |
47
+ | **Test Harness** | Disposable temp dirs (Symbol.asyncDispose), factory builders, restore-capable mocks. Professional-grade test utilities. |
55
48
 
56
49
  ---
57
50
 
58
- ### Three safety layers
51
+ ### Four safety layers
59
52
 
60
53
  The loop runs unsupervised because these never turn off:
61
54
 
62
- - **🔁 Loop Guard** — stops if the same skill fires 3+ times or 5+ hops produce no progress
55
+ - **🔁 Loop Guard** — stops if the same skill fires 5+ times or 8+ hops produce no progress
63
56
  - **❓ Question Gate** — never routes into uncertainty; surfaces if input is missing
57
+ - **💬 Confidence Gate** — calibrates whether to skip, echo, or ask before classifying
58
+
59
+ ```
60
+ HIGH ──→ classify silently (transparent gate)
61
+ MEDIUM ──→ echo + confirm, then classify
62
+ LOW ──→ ask + classify (defaults to oh-planner)
63
+ ```
64
+
64
65
  - **📋 Auto-Handoff** — writes a structured session artifact before context switches
65
66
 
66
67
  ---
@@ -69,15 +70,16 @@ The loop runs unsupervised because these never turn off:
69
70
 
70
71
  | Capability | Why it matters |
71
72
  |---|---|
72
- | **Self-driving loop** | Type once. OpenHermes classifies, delegates, and routes — no pauses, no asking permission. |
73
- | **29 specialist skills** | Planning → building → testing → security → review → shipping → retro. Every dev cycle phase. |
73
+ | **Self-driving loop** | Type once. OpenHermes classifies, delegates, and routes — no pauses, no asking permission, no verbosity. |
74
+ | **30 specialist skills** | Planning → building → testing → browser → security → review → shipping → retro. Every dev cycle phase. |
74
75
  | **Auto-detected user skills** | Drop a skill in `~/.agents/skills/`. OpenHermes finds it. Same name as a built-in? Your version wins. Survives `npm update`. |
75
- | **`/oh-doctor`** | Verify plugin load, skill discovery, command registration, config safety. |
76
- | **`/oh-log`** | Session log routing hops, skill loads, compaction events. |
77
- | **Shared operating model** | CONSTITUTION + RUNTIME + CONTEXT + ETHOS injected every session. Every interaction grounded in the same rules. |
78
- | **Plan file storage** | `~/.local/share/opencode/openhermes/plans/`. Survives `npm update`. |
76
+ | **Shared operating model** | CHARTER + AUTOPILOT + CONTEXT + ETHOS injected every session. Every interaction grounded in the same rules. |
77
+ | **CORE/DEEP skill format** | Every skill is a two-file system: CORE (SKILL.md) handles 80% of passes in one read. DEEP.md loads on demand for hard cases. |
78
+ | **Plan file storage** | `~/.local/share/openhermes/plans/`. Survives `npm update`. |
79
+ | **8 internal subsystems** | Compositor, hooks, memory, recovery, sync, sanity checks, background commands, test harness — all native Node.js / TypeScript. |
80
+ | **Zero npm dependency additions** | All new subsystems use native Node.js and TypeScript only. No new packages. |
79
81
 
80
- ## 29 skills — three tiers
82
+ ## 30 skills — three tiers
81
83
 
82
84
  ### Tier 4 — Pipeline orchestrators
83
85
  Full multi-phase workflows:
@@ -95,20 +97,23 @@ Span multiple phases and coordinate other skills:
95
97
 
96
98
  | Skill | Purpose |
97
99
  |---|---|
98
- | **oh-planner** | Brainstorm, architect, autoplan, decision pipeline |
100
+ | **oh-browser** | Browser automation via agent-browser CLI. Navigate pages, fill forms, take screenshots, scrape data, test web apps. |
99
101
  | **oh-grill** | Stress-test plans through relentless Socratic questioning |
100
102
  | **oh-plan-review** | Multi-lens review: Engineering, Design, DX, Strategy |
103
+ | **oh-planner** | Brainstorm, architect, autoplan, decision pipeline |
101
104
  | **oh-security** | Audit: secrets, supply chain, CI/CD, OWASP, LLM security |
102
105
  | **oh-refactor** | Surgical behavior-preserving refactoring |
103
106
  | **oh-review** | Two-axis review (Standards + Spec) in parallel sub-agents |
104
107
  | **oh-fusion** | Skill ingestion pipeline: discover → analyze → adapt → fuse → integrate |
105
108
  | **oh-retro** | Weekly retrospective — analyze commit history and patterns |
109
+ | **oh-worktree** | Workspace isolation via git worktrees. Detect existing isolation, create isolated workspaces, run project setup, verify clean baseline. |
106
110
 
107
111
  ### Tier 2 — Focused skills
108
112
  Single-purpose, one thing well:
109
113
 
110
114
  | Skill | Purpose |
111
115
  |---|---|
116
+ | **oh-ascii** | Complete ASCII diagramming: design patterns, generation, structural validation |
112
117
  | **oh-expert** | AI self-diagnosis: sycophancy, hallucination, attention dynamics |
113
118
  | **oh-full-output** | Override truncation, ban placeholders, enforce complete generation |
114
119
  | **oh-health** | Code quality dashboard: tools, composite score, trend |
@@ -119,9 +124,7 @@ Single-purpose, one thing well:
119
124
  | **oh-triage** | Issue triage state machine — classify, prioritise, assign |
120
125
  | **oh-issue** | Break a plan/spec/PRD into independently-grabbable issues |
121
126
  | **oh-prd** | Conversation → PRD → GitHub issue |
122
- | **oh-caveman** | Ultra-compressed mode — cut token usage ~75% |
123
127
  | **oh-freeze** | Restrict file edits to a specific directory |
124
- | **oh-learn** | Extract, evolve, promote session learnings as instincts |
125
128
  | **oh-guard** | Safety confirmation — warn before destructive operations |
126
129
  | **oh-skills-link** | Verify OpenCode discovers the skill directory |
127
130
  | **oh-skills-list** | List all available `oh-*` skills |
@@ -137,17 +140,26 @@ openhermes-pkg/
137
140
  ├── ETHOS.md # Operating principles
138
141
  ├── bootstrap.ts # Plugin entry — registers everything
139
142
  ├── index.ts # Package entrypoint
140
- ├── lib/ # harness-resolver.ts, logger.ts
141
143
  ├── harness/
142
144
  │ ├── agents/ # Agent manifests (OpenHermes primary)
143
- │ ├── codex/ # CONSTITUTION, AUTOPILOT, ROUTING
144
- │ ├── commands/ # Slash commands (/oh-doctor, /oh-log)
145
- │ ├── instructions/ # RUNTIME.md
146
- └── skills/ # 29 skill SKILL.md files
145
+ │ ├── codex/ # CHARTER, AUTOPILOT
146
+ │ ├── commands/ # Slash commands
147
+ │ ├── instructions/ # SHELL.md
148
+ ├── lib/ # Internal subsystems
149
+ │ │ ├── composer/ # Prompt fragment composition
150
+ │ │ ├── recovery/ # Auto-recovery with error patterns
151
+ │ │ ├── memory/ # 4-tier hierarchical memory
152
+ │ │ ├── sync/ # MVCC plan synchronization
153
+ │ │ ├── hooks/ # Pluggable hook registry
154
+ │ │ ├── sanity/ # Output degeneration detection
155
+ │ │ └── background/ # Fire-and-forget command system
156
+ │ └── skills/ # 30 skill SKILL.md files (CORE/DEEP format)
157
+ ├── lib/ # harness-resolver.ts
147
158
  └── test/
159
+ └── harness/ # Test utilities (fixture, builders, mocks)
148
160
  ```
149
161
 
150
- Plan files: `~/.local/share/opencode/openhermes/plans/<project>-plan-<nnn>.md`
162
+ Plan files: `~/.local/share/openhermes/plans/<project>/plan-<nnn>.md`
151
163
 
152
164
  ---
153
165
 
@@ -155,7 +167,7 @@ Plan files: `~/.local/share/opencode/openhermes/plans/<project>-plan-<nnn>.md`
155
167
 
156
168
  1. Add the plugin line to `opencode.json`
157
169
  2. Restart or reload OpenCode
158
- 3. Run `/oh-doctor` to verify everything loaded
170
+ 3. Verify the plugin loaded in the startup log
159
171
  4. Type *any* prompt — "plan a feature", "investigate this bug", "refactor this module"
160
172
 
161
173
  The first time you see OpenHermes auto-route to a specialist skill without you asking — you'll feel the loop.