erne-universal 0.10.25 → 0.11.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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "erne-universal",
3
- "version": "0.10.6",
4
- "description": "Complete AI coding agent harness for React Native and Expo development — 13 agents, 21 commands, 7 skills, 10 MCP integrations, autonomous worker mode",
3
+ "version": "0.10.25",
4
+ "description": "Complete AI coding agent harness for React Native and Expo — 13 agents, 22 commands, 7 skills, 10 MCP integrations, autonomous worker mode, visual debugging, smart routing",
5
5
  "author": "JubaKitiashvili",
6
6
  "license": "MIT",
7
7
  "repository": "https://github.com/JubaKitiashvili/everything-react-native-expo",
@@ -20,12 +20,7 @@
20
20
  "autonomous-worker",
21
21
  "visual-debugging"
22
22
  ],
23
- "categories": [
24
- "mobile-development",
25
- "react-native",
26
- "ai-agents",
27
- "developer-tools"
28
- ],
23
+ "categories": ["mobile-development", "react-native", "ai-agents", "developer-tools"],
29
24
  "components": {
30
25
  "agents": [
31
26
  "architect",
@@ -43,6 +38,7 @@
43
38
  "visual-debugger"
44
39
  ],
45
40
  "commands": [
41
+ "erne-init",
46
42
  "erne-plan",
47
43
  "erne-code-review",
48
44
  "erne-tdd",
@@ -74,11 +70,7 @@
74
70
  "tdd-workflow",
75
71
  "upgrade-workflow"
76
72
  ],
77
- "hooks": [
78
- "minimal",
79
- "standard",
80
- "strict"
81
- ],
73
+ "hooks": ["minimal", "standard", "strict"],
82
74
  "mcp-configs": [
83
75
  "agent-device",
84
76
  "appstore-connect",
@@ -91,11 +83,7 @@
91
83
  "sentry",
92
84
  "supabase"
93
85
  ],
94
- "contexts": [
95
- "dev",
96
- "review",
97
- "vibe"
98
- ]
86
+ "contexts": ["dev", "review", "vibe"]
99
87
  },
100
88
  "install": "npx erne-universal init",
101
89
  "engines": {
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # 🏗️ ERNE — Everything React Native & Expo
2
2
 
3
- > **The complete AI coding agent harness for React Native and Expo** 11 specialized agents, adaptive stack detection, multi-agent orchestration, and a pixel-art dashboard. Every config is generated to match *your* exact project setup.
3
+ > **AI agent harness with 13 specialized agents, autonomous worker mode, visual debugging, and smart routing.** Adaptive stack detection, multi-agent orchestration, and a pixel-art dashboard. Every config is generated to match _your_ exact project setup.
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/erne-universal?color=cc3534&label=npm)](https://www.npmjs.com/package/erne-universal)
6
6
  [![GitHub stars](https://img.shields.io/github/stars/JubaKitiashvili/everything-react-native-expo?style=social)](https://github.com/JubaKitiashvili/everything-react-native-expo)
@@ -15,13 +15,14 @@
15
15
 
16
16
  ## ⚡ Quick Start
17
17
 
18
- > **Prerequisite:** [Claude Code](https://claude.ai/claude-code) is required for the full experience (11 agents, pipeline orchestration, dashboard, hooks). Other IDEs receive adaptive rules and configuration — see [IDE Support](#%EF%B8%8F-ide--editor-support).
18
+ > **Prerequisite:** [Claude Code](https://claude.ai/claude-code) is required for the full experience (13 agents, pipeline orchestration, dashboard, hooks). Other IDEs receive adaptive rules and configuration — see [IDE Support](#%EF%B8%8F-ide--editor-support).
19
19
 
20
20
  ```bash
21
21
  npx erne-universal init
22
22
  ```
23
23
 
24
24
  This will:
25
+
25
26
  1. 🔍 **Deep-scan your project** — detects 15 stack dimensions (state management, navigation, styling, lists, images, forms, storage, testing, build system, component style, monorepo, New Architecture, and more)
26
27
  2. 🎚️ Let you choose a hook profile (minimal / standard / strict)
27
28
  3. 🔌 Select MCP integrations (simulator control, GitHub, etc.)
@@ -31,19 +32,19 @@ This will:
31
32
 
32
33
  ## 📦 What's Included
33
34
 
34
- | Component | Count | Description |
35
- |-----------|-------|-------------|
36
- | 🤖 Agents | 11 | Specialized AI agents for architecture, development, review, testing, UI, native, orchestration |
37
- | 🔀 Agent variants | 9 | Stack-adaptive agent configurations (StyleSheet vs NativeWind, Zustand vs Redux, etc.) |
38
- | ⚡ Commands | 19 | Slash commands for every React Native workflow |
39
- | 📏 Rule layers | 5 | Conditional rules: common, expo, bare-rn, native-ios, native-android |
40
- | 🎯 Rule variants | 15 | Stack-specific rules selected by deep detection (state, navigation, styling, security, etc.) |
41
- | 🛡️ Hook profiles | 3 | Minimal, standard, strict — quality enforcement your way |
42
- | 📚 Skills | 7 | Reusable knowledge modules loaded on-demand |
43
- | 🎭 Contexts | 3 | Behavior modes: dev, review, vibe |
44
- | 🔌 MCP configs | 10 | Pre-configured server integrations |
45
- | 📋 Workflow examples | 4 | End-to-end multi-agent workflow guides |
46
- | 🤝 Handoff templates | 4 | Structured agent-to-agent context passing |
35
+ | Component | Count | Description |
36
+ | -------------------- | ----- | -------------------------------------------------------------------------------------------- |
37
+ | 🤖 Agents | 13 | Specialized AI agents incl. visual debugger, doc generator, smart routing |
38
+ | 🔀 Agent variants | 9 | Stack-adaptive agent configurations (StyleSheet vs NativeWind, Zustand vs Redux, etc.) |
39
+ | ⚡ Commands | 22 | Slash commands for every React Native workflow |
40
+ | 📏 Rule layers | 5 | Conditional rules: common, expo, bare-rn, native-ios, native-android |
41
+ | 🎯 Rule variants | 15 | Stack-specific rules selected by deep detection (state, navigation, styling, security, etc.) |
42
+ | 🛡️ Hook profiles | 3 | Minimal, standard, strict — quality enforcement your way |
43
+ | 📚 Skills | 7 | Reusable knowledge modules loaded on-demand |
44
+ | 🎭 Contexts | 3 | Behavior modes: dev, review, vibe |
45
+ | 🔌 MCP configs | 10 | Pre-configured server integrations |
46
+ | 📋 Workflow examples | 4 | End-to-end multi-agent workflow guides |
47
+ | 🤝 Handoff templates | 4 | Structured agent-to-agent context passing |
47
48
 
48
49
  ---
49
50
 
@@ -156,19 +157,21 @@ Features retry logic (max 3 attempts), escalation to user on persistent failures
156
157
 
157
158
  Each agent has a distinct personality, quantified success metrics, and memory integration for cross-session learning.
158
159
 
159
- | Agent | Emoji | Domain | Room |
160
- |-------|-------|--------|------|
161
- | **architect** | 🏗️ | System design and project structure | Development |
162
- | **senior-developer** | 👨‍💻 | End-to-end feature implementation, screens, hooks, API | Development |
163
- | **feature-builder** | ⚡ | Focused implementation units, works in parallel | Development |
164
- | **native-bridge-builder** | 🌉 | Turbo Modules and native platform APIs | Development |
165
- | **expo-config-resolver** | ⚙️ | Expo configuration and build issues | Development |
166
- | **ui-designer** | 🎨 | Accessible, performant UI components | Development |
167
- | **code-reviewer** | 🔍 | Code quality with evidence-based approval | Code Review |
168
- | **upgrade-assistant** | 📦 | Version migration guidance | Code Review |
169
- | **tdd-guide** | 🚦 | Test-driven development workflow | Testing |
170
- | **performance-profiler** | 🏎️ | FPS diagnostics and bundle optimization | Testing |
171
- | **pipeline-orchestrator** | 🎯 | Multi-agent workflow coordination | Conference |
160
+ | Agent | Emoji | Domain | Room |
161
+ | --------------------------- | ----- | ------------------------------------------------------ | ----------- |
162
+ | **architect** | 🏗️ | System design and project structure | Development |
163
+ | **senior-developer** | 👨‍💻 | End-to-end feature implementation, screens, hooks, API | Development |
164
+ | **feature-builder** | ⚡ | Focused implementation units, works in parallel | Development |
165
+ | **native-bridge-builder** | 🌉 | Turbo Modules and native platform APIs | Development |
166
+ | **expo-config-resolver** | ⚙️ | Expo configuration and build issues | Development |
167
+ | **ui-designer** | 🎨 | Accessible, performant UI components | Development |
168
+ | **code-reviewer** | 🔍 | Code quality with evidence-based approval | Code Review |
169
+ | **upgrade-assistant** | 📦 | Version migration guidance | Code Review |
170
+ | **tdd-guide** | 🚦 | Test-driven development workflow | Testing |
171
+ | **performance-profiler** | 🏎️ | FPS diagnostics and bundle optimization | Testing |
172
+ | **pipeline-orchestrator** | 🎯 | Multi-agent workflow coordination | Conference |
173
+ | **visual-debugger** | 🔬 | Screenshot-based UI debugging | Development |
174
+ | **documentation-generator** | 📝 | Auto-generate project documentation | Development |
172
175
 
173
176
  ---
174
177
 
@@ -182,11 +185,11 @@ erne dashboard # Context system starts automatically
182
185
 
183
186
  ### Benchmark-verified savings
184
187
 
185
- | Layer | What it does | Savings |
186
- |-------|-------------|---------|
187
- | **Summarizer** | Auto-detects 14 content types (docs, JSON, logs, test output, build output, CSV, git history, etc.) and compresses to statistical summaries | **97–100%** |
188
- | **Index + Search** | Chunks content by headings, indexes in FTS5 with BM25 ranking. Returns only relevant chunks — code examples preserved exactly | **80%** |
189
- | **Full session** | Combined summarizer + search across a real debugging session (docs, snapshots, issues, tests, builds) | **99%** |
188
+ | Layer | What it does | Savings |
189
+ | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
190
+ | **Summarizer** | Auto-detects 14 content types (docs, JSON, logs, test output, build output, CSV, git history, etc.) and compresses to statistical summaries | **97–100%** |
191
+ | **Index + Search** | Chunks content by headings, indexes in FTS5 with BM25 ranking. Returns only relevant chunks — code examples preserved exactly | **80%** |
192
+ | **Full session** | Combined summarizer + search across a real debugging session (docs, snapshots, issues, tests, builds) | **99%** |
190
193
 
191
194
  > **Real numbers:** 537 KB of tool outputs → 2.6 KB of context. That's **0.4%** of a 200K context window instead of 44.5%. See [BENCHMARK.md](BENCHMARK.md) for the full 21-scenario breakdown.
192
195
 
@@ -204,16 +207,16 @@ Knowledge ──▶ 3-Layer Search (FTS5 → Trigram → Levenshtein)
204
207
  Session End ──▶ Snapshot (<2KB) ──▶ Next session restores context
205
208
  ```
206
209
 
207
- | Feature | What it does |
208
- |---------|-------------|
210
+ | Feature | What it does |
211
+ | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
209
212
  | **Content summarizer** | 14 auto-detected content types: markdown, HTML, JSON, test output, TypeScript errors, build output, logs, git history, CSV, and more. Each type gets a specialized summary format |
210
- | **Content store** | FTS5-powered index with Porter stemming. Markdown chunked by headings, code blocks never split or truncated. BM25 relevance ranking with byte budget management |
211
- | **Smart truncation** | 4-tier fallback cascade: Structured → Pattern → Head/Tail → Hash. Handles anything the summarizer doesn't cover |
212
- | **Knowledge base** | SQLite-backed with FTS5 full-text search, trigram fuzzy matching, and Levenshtein fallback. Entries scored by recency + access frequency |
213
- | **Session continuity** | Snapshots capture active tasks, decisions, errors, and commits at session end. Next session restores context in <2KB |
214
- | **Budget manager** | Set per-session and per-agent token limits. Throttles at 80%, supports aggressive truncation / warn / hard stop overflow strategies |
215
- | **Agent preloader** | Tracks agent-to-agent transitions and predicts the next agent for parallel context warmup |
216
- | **Error→Fix tracking** | Correlates errors with subsequent file modifications to build fix patterns over time |
213
+ | **Content store** | FTS5-powered index with Porter stemming. Markdown chunked by headings, code blocks never split or truncated. BM25 relevance ranking with byte budget management |
214
+ | **Smart truncation** | 4-tier fallback cascade: Structured → Pattern → Head/Tail → Hash. Handles anything the summarizer doesn't cover |
215
+ | **Knowledge base** | SQLite-backed with FTS5 full-text search, trigram fuzzy matching, and Levenshtein fallback. Entries scored by recency + access frequency |
216
+ | **Session continuity** | Snapshots capture active tasks, decisions, errors, and commits at session end. Next session restores context in <2KB |
217
+ | **Budget manager** | Set per-session and per-agent token limits. Throttles at 80%, supports aggressive truncation / warn / hard stop overflow strategies |
218
+ | **Agent preloader** | Tracks agent-to-agent transitions and predicts the next agent for parallel context warmup |
219
+ | **Error→Fix tracking** | Correlates errors with subsequent file modifications to build fix patterns over time |
217
220
 
218
221
  ### Dashboard sidebar panels
219
222
 
@@ -236,24 +239,24 @@ ERNE minimizes token usage through two complementary systems: **architecture-lev
236
239
 
237
240
  ### Architecture savings
238
241
 
239
- | Mechanism | How it works | Savings |
240
- |-----------|-------------|---------|
241
- | **Profile-gated hooks** | Minimal profile runs 4 hooks instead of 16 | ~31% |
242
- | **Conditional rules** | Only loads rules matching your project type (Expo, bare RN, native) | ~26% |
243
- | **On-demand skills** | Skills load only when their command is invoked, not always in context | ~12% |
244
- | **Subagent isolation** | Fresh agent per task with only its own definition + relevant rules | ~12% |
245
- | **Task-specific commands** | 19 focused prompts instead of one monolithic instruction set | ~13% |
246
- | **Context-based behavior** | Modes change behavior dynamically without loading new rulesets | ~3% |
242
+ | Mechanism | How it works | Savings |
243
+ | -------------------------- | --------------------------------------------------------------------- | ------- |
244
+ | **Profile-gated hooks** | Minimal profile runs 4 hooks instead of 16 | ~31% |
245
+ | **Conditional rules** | Only loads rules matching your project type (Expo, bare RN, native) | ~26% |
246
+ | **On-demand skills** | Skills load only when their command is invoked, not always in context | ~12% |
247
+ | **Subagent isolation** | Fresh agent per task with only its own definition + relevant rules | ~12% |
248
+ | **Task-specific commands** | 22 focused prompts instead of one monolithic instruction set | ~13% |
249
+ | **Context-based behavior** | Modes change behavior dynamically without loading new rulesets | ~3% |
247
250
 
248
251
  ### Runtime context optimization (benchmark-verified)
249
252
 
250
- | Mechanism | How it works | Savings |
251
- |-----------|-------------|---------|
252
- | **Content summarizer** | Auto-detects 14 content types, produces statistical summaries | **97–100%** per output |
253
- | **Index + Search** | FTS5 BM25 retrieval returns only relevant chunks, code preserved exactly | **80%** per search |
254
- | **Smart truncation** | 4-tier fallback: Structured → Pattern → Head/Tail → Hash | 85–100% per output |
255
- | **Session snapshots** | Captures full session state in <2KB | ~50% vs log replay |
256
- | **Budget enforcement** | Throttling at 80% prevents runaway token usage | Prevents overflow |
253
+ | Mechanism | How it works | Savings |
254
+ | ---------------------- | ------------------------------------------------------------------------ | ---------------------- |
255
+ | **Content summarizer** | Auto-detects 14 content types, produces statistical summaries | **97–100%** per output |
256
+ | **Index + Search** | FTS5 BM25 retrieval returns only relevant chunks, code preserved exactly | **80%** per search |
257
+ | **Smart truncation** | 4-tier fallback: Structured → Pattern → Head/Tail → Hash | 85–100% per output |
258
+ | **Session snapshots** | Captures full session state in <2KB | ~50% vs log replay |
259
+ | **Budget enforcement** | Throttling at 80% prevents runaway token usage | Prevents overflow |
257
260
 
258
261
  **Result:** Architecture saves **60–67%** on what enters context. Runtime optimization achieves **97–100%** compression on tool outputs (verified across 21 benchmark scenarios with 537 KB of real data). In a full debugging session, **99% of tool output tokens are eliminated** — leaving 99.6% of your context window free for actual problem solving. See [BENCHMARK.md](BENCHMARK.md) for complete results.
259
262
 
@@ -261,11 +264,11 @@ ERNE minimizes token usage through two complementary systems: **architecture-lev
261
264
 
262
265
  ## 🛡️ Hook Profiles
263
266
 
264
- | Profile | Hooks | Use Case |
265
- |---------|-------|----------|
266
- | `minimal` | 4 | ⚡ Fast iteration, vibe coding — maximum speed, minimum friction |
267
- | `standard` | 12 | ⚖️ Balanced quality + speed (recommended) — catches real issues |
268
- | `strict` | 16 | 🔒 Production-grade enforcement — full security, accessibility, perf budgets |
267
+ | Profile | Hooks | Use Case |
268
+ | ---------- | ----- | ---------------------------------------------------------------------------- |
269
+ | `minimal` | 4 | ⚡ Fast iteration, vibe coding — maximum speed, minimum friction |
270
+ | `standard` | 12 | ⚖️ Balanced quality + speed (recommended) — catches real issues |
271
+ | `strict` | 16 | 🔒 Production-grade enforcement — full security, accessibility, perf budgets |
269
272
 
270
273
  Change profile: set `ERNE_PROFILE` env var, add `<!-- Hook Profile: standard -->` to CLAUDE.md, or use `/vibe` context.
271
274
 
@@ -273,12 +276,12 @@ Change profile: set `ERNE_PROFILE` env var, add `<!-- Hook Profile: standard -->
273
276
 
274
277
  ## ⚡ Commands
275
278
 
276
- | Category | Commands |
277
- |----------|----------|
278
- | **Core** | `/plan`, `/code-review`, `/tdd`, `/build-fix`, `/perf`, `/upgrade`, `/native-module`, `/navigate`, `/code`, `/feature` |
279
- | **Extended** | `/animate`, `/deploy`, `/component`, `/debug`, `/quality-gate` |
280
- | **Orchestration** | `/orchestrate` |
281
- | **Learning** | `/learn`, `/retrospective`, `/setup-device` |
279
+ | Category | Commands |
280
+ | ----------------- | ---------------------------------------------------------------------------------------------------------------------- |
281
+ | **Core** | `/plan`, `/code-review`, `/tdd`, `/build-fix`, `/perf`, `/upgrade`, `/native-module`, `/navigate`, `/code`, `/feature` |
282
+ | **Extended** | `/animate`, `/deploy`, `/component`, `/debug`, `/debug-visual`, `/quality-gate` |
283
+ | **Orchestration** | `/orchestrate`, `/worker` |
284
+ | **Learning** | `/learn`, `/retrospective`, `/setup-device` |
282
285
 
283
286
  ---
284
287
 
@@ -286,27 +289,27 @@ Change profile: set `ERNE_PROFILE` env var, add `<!-- Hook Profile: standard -->
286
289
 
287
290
  ERNE generates adaptive config files for multiple IDEs, but the **full agent experience requires Claude Code**:
288
291
 
289
- | Feature | Claude Code | Cursor / Windsurf / Copilot / Codex |
290
- |---------|:-----------:|:------------------------------------:|
291
- | Adaptive rules & config | | |
292
- | Stack detection (15 dimensions) | | |
293
- | 19 slash commands | | |
294
- | 11 specialized agents | | |
295
- | Pipeline orchestration | | |
296
- | Hook profiles | | |
297
- | Agent dashboard | | |
298
- | Cross-session memory | | |
292
+ | Feature | Claude Code | Cursor / Windsurf / Copilot / Codex |
293
+ | ------------------------------- | :---------: | :---------------------------------: |
294
+ | Adaptive rules & config | | |
295
+ | Stack detection (15 dimensions) | | |
296
+ | 22 slash commands | | |
297
+ | 13 specialized agents | | |
298
+ | Pipeline orchestration | | |
299
+ | Hook profiles | | |
300
+ | Agent dashboard | | |
301
+ | Cross-session memory | | |
299
302
 
300
303
  **Generated config files:**
301
304
 
302
- | File | IDE / Tool |
303
- |------|-----------|
304
- | `CLAUDE.md` | Claude Code (full experience) |
305
- | `AGENTS.md` | Codex, Windsurf, Cursor, GitHub Copilot |
306
- | `GEMINI.md` | Gemini CLI |
307
- | `.cursorrules` | Cursor |
308
- | `.windsurfrules` | Windsurf |
309
- | `.github/copilot-instructions.md` | GitHub Copilot |
305
+ | File | IDE / Tool |
306
+ | --------------------------------- | --------------------------------------- |
307
+ | `CLAUDE.md` | Claude Code (full experience) |
308
+ | `AGENTS.md` | Codex, Windsurf, Cursor, GitHub Copilot |
309
+ | `GEMINI.md` | Gemini CLI |
310
+ | `.cursorrules` | Cursor |
311
+ | `.windsurfrules` | Windsurf |
312
+ | `.github/copilot-instructions.md` | GitHub Copilot |
310
313
 
311
314
  ---
312
315
 
@@ -328,6 +331,7 @@ Claude Code PostToolUse ┘
328
331
  ```
329
332
 
330
333
  **Key design principles:**
334
+
331
335
  - 🪶 **Zero runtime dependencies** for the harness itself (ws package only for dashboard)
332
336
  - 🎯 **Conditional loading** — rules, skills, and hooks load based on project type and profile
333
337
  - 🧹 **Fresh subagent per task** — no context pollution between agent invocations
@@ -339,12 +343,12 @@ Claude Code PostToolUse ┘
339
343
 
340
344
  We welcome contributions from everyone — from typo fixes to new agents and skills.
341
345
 
342
- | I want to... | Start here |
343
- |--------------|-----------|
344
- | 🐛 Report a bug | [Bug Report](https://github.com/JubaKitiashvili/everything-react-native-expo/issues/new?template=bug_report.md) |
345
- | 💡 Request a feature | [Feature Request](https://github.com/JubaKitiashvili/everything-react-native-expo/issues/new?template=feature_request.md) |
346
- | 📚 Propose a new skill | [Skill Proposal](https://github.com/JubaKitiashvili/everything-react-native-expo/issues/new?template=new_skill.md) |
347
- | 🔀 Submit a PR | [Contributing Guide](CONTRIBUTING.md) |
346
+ | I want to... | Start here |
347
+ | ---------------------- | ------------------------------------------------------------------------------------------------------------------------- |
348
+ | 🐛 Report a bug | [Bug Report](https://github.com/JubaKitiashvili/everything-react-native-expo/issues/new?template=bug_report.md) |
349
+ | 💡 Request a feature | [Feature Request](https://github.com/JubaKitiashvili/everything-react-native-expo/issues/new?template=feature_request.md) |
350
+ | 📚 Propose a new skill | [Skill Proposal](https://github.com/JubaKitiashvili/everything-react-native-expo/issues/new?template=new_skill.md) |
351
+ | 🔀 Submit a PR | [Contributing Guide](CONTRIBUTING.md) |
348
352
 
349
353
  ```bash
350
354
  git checkout -b feat/your-feature
@@ -357,12 +361,12 @@ npm run validate && npm test # Must pass before PR
357
361
 
358
362
  Skills, agents, and MCP configs are open source — anyone can add them via PR. Partnerships are for deeper collaboration:
359
363
 
360
- | Partnership Type | What It Means |
361
- |-----------------|--------------|
362
- | **Co-Maintenance** | You keep your library's ERNE skill up to date as your API evolves |
363
- | **Early Access** | We update ERNE before your breaking changes ship, so users never hit stale guidance |
364
- | **Joint Promotion** | Your docs recommend ERNE for AI-assisted development, we feature you on [erne.dev](https://erne.dev) |
365
- | **Domain Expertise** | Co-develop specialized agents that require deep knowledge of your platform |
364
+ | Partnership Type | What It Means |
365
+ | -------------------- | ---------------------------------------------------------------------------------------------------- |
366
+ | **Co-Maintenance** | You keep your library's ERNE skill up to date as your API evolves |
367
+ | **Early Access** | We update ERNE before your breaking changes ship, so users never hit stale guidance |
368
+ | **Joint Promotion** | Your docs recommend ERNE for AI-assisted development, we feature you on [erne.dev](https://erne.dev) |
369
+ | **Domain Expertise** | Co-develop specialized agents that require deep knowledge of your platform |
366
370
 
367
371
  If you maintain a React Native library, Expo tool, or developer service — [let's talk](https://github.com/JubaKitiashvili/everything-react-native-expo/issues/new?template=partnership.md).
368
372
 
@@ -379,17 +383,17 @@ If you maintain a React Native library, Expo tool, or developer service — [let
379
383
 
380
384
  ## 📖 Documentation
381
385
 
382
- | Doc | Description |
383
- |-----|-------------|
384
- | [Getting Started](docs/getting-started.md) | Installation and first run |
385
- | [Agents Guide](docs/agents.md) | All 11 agents with domains and usage |
386
- | [Commands Reference](docs/commands.md) | All 19 slash commands |
387
- | [Hooks & Profiles](docs/hooks-profiles.md) | Hook system and 3 profiles |
388
- | [Creating Skills](docs/creating-skills.md) | Author your own skills |
389
- | [Pipeline & Orchestration](docs/pipeline.md) | Multi-agent workflow coordination |
390
- | [Memory Integration](docs/memory-integration.md) | Cross-session learning with MCP |
391
- | [Handoff Templates](docs/handoff-templates.md) | Structured agent-to-agent context |
392
- | [Contributing](CONTRIBUTING.md) | How to contribute |
386
+ | Doc | Description |
387
+ | ------------------------------------------------ | ------------------------------------ |
388
+ | [Getting Started](docs/getting-started.md) | Installation and first run |
389
+ | [Agents Guide](docs/agents.md) | All 13 agents with domains and usage |
390
+ | [Commands Reference](docs/commands.md) | All 22 slash commands |
391
+ | [Hooks & Profiles](docs/hooks-profiles.md) | Hook system and 3 profiles |
392
+ | [Creating Skills](docs/creating-skills.md) | Author your own skills |
393
+ | [Pipeline & Orchestration](docs/pipeline.md) | Multi-agent workflow coordination |
394
+ | [Memory Integration](docs/memory-integration.md) | Cross-session learning with MCP |
395
+ | [Handoff Templates](docs/handoff-templates.md) | Structured agent-to-agent context |
396
+ | [Contributing](CONTRIBUTING.md) | How to contribute |
393
397
 
394
398
  ---
395
399
 
package/bin/cli.js CHANGED
@@ -19,6 +19,7 @@ const COMMANDS = {
19
19
  status: () => require('../lib/status'),
20
20
  audit: () => require('../lib/audit-cli'),
21
21
  worker: () => require('../lib/worker'),
22
+ uninstall: () => require('../lib/uninstall'),
22
23
  'sync-configs': () => require('../lib/sync-configs'),
23
24
  sync: () => require('../lib/sync-configs'),
24
25
  version: () => {
@@ -43,6 +44,7 @@ const COMMANDS = {
43
44
  doctor Check project health and ERNE setup
44
45
  status Show current ERNE configuration
45
46
  worker Run autonomous ticket execution agent
47
+ uninstall Remove all ERNE files from your project
46
48
  sync-configs Sync IDE config files from CLAUDE.md (alias: sync)
47
49
  version Show installed version
48
50
  help Show this help message
@@ -76,7 +78,7 @@ const COMMANDS = {
76
78
  Website: https://erne.dev
77
79
  `);
78
80
  process.exit(0);
79
- }
81
+ },
80
82
  };
81
83
 
82
84
  let command = process.argv[2] || 'help';
@@ -95,7 +97,7 @@ if (!COMMANDS[command]) {
95
97
  // Execute command module
96
98
  const run = COMMANDS[command]();
97
99
  if (typeof run === 'function') {
98
- run().catch(err => {
100
+ run().catch((err) => {
99
101
  console.error('Error:', err.message);
100
102
  process.exit(1);
101
103
  });
package/install.sh CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  set -euo pipefail
7
7
 
8
- ERNE_VERSION="0.10.5"
8
+ ERNE_VERSION="0.10.25"
9
9
  REPO_URL="https://github.com/JubaKitiashvili/everything-react-native-expo"
10
10
 
11
11
  echo ""
@@ -0,0 +1,74 @@
1
+ 'use strict';
2
+ const fs = require('fs');
3
+ const path = require('path');
4
+
5
+ module.exports = async function uninstall() {
6
+ const cwd = process.cwd();
7
+ console.log('\n erne — Removing ERNE from project\n');
8
+
9
+ const toRemove = [
10
+ '.claude/agents',
11
+ '.claude/skills',
12
+ '.claude/rules',
13
+ '.claude/contexts',
14
+ '.claude/hooks',
15
+ '.claude/hooks.json',
16
+ '.claude/mcp',
17
+ '.claude/mcp-configs',
18
+ '.claude/settings.json',
19
+ '.mcp.json',
20
+ '.erne',
21
+ 'erne-docs',
22
+ ];
23
+
24
+ let removed = 0;
25
+ for (const rel of toRemove) {
26
+ const full = path.join(cwd, rel);
27
+ if (fs.existsSync(full)) {
28
+ fs.rmSync(full, { recursive: true, force: true });
29
+ console.log(' ✓ Removed ' + rel);
30
+ removed++;
31
+ }
32
+ }
33
+
34
+ // Remove ERNE hooks from settings.local.json
35
+ const settingsLocalPath = path.join(cwd, '.claude', 'settings.local.json');
36
+ if (fs.existsSync(settingsLocalPath)) {
37
+ try {
38
+ const settings = JSON.parse(fs.readFileSync(settingsLocalPath, 'utf8'));
39
+ if (settings.hooks) {
40
+ delete settings.hooks;
41
+ fs.writeFileSync(settingsLocalPath, JSON.stringify(settings, null, 2) + '\n');
42
+ console.log(' ✓ Removed hooks from settings.local.json');
43
+ removed++;
44
+ }
45
+ } catch {
46
+ /* skip */
47
+ }
48
+ }
49
+
50
+ // Restore CLAUDE.md backup
51
+ const backupPath = path.join(cwd, 'CLAUDE.md.pre-erne');
52
+ const claudeMdPath = path.join(cwd, 'CLAUDE.md');
53
+ if (fs.existsSync(backupPath)) {
54
+ if (fs.existsSync(claudeMdPath)) fs.unlinkSync(claudeMdPath);
55
+ fs.renameSync(backupPath, claudeMdPath);
56
+ console.log(' ✓ Restored original CLAUDE.md');
57
+ removed++;
58
+ } else if (fs.existsSync(claudeMdPath)) {
59
+ // Check if CLAUDE.md is ERNE-generated
60
+ const content = fs.readFileSync(claudeMdPath, 'utf8');
61
+ if (content.includes('ERNE-GENERATED') || content.includes('erne-profile:')) {
62
+ fs.unlinkSync(claudeMdPath);
63
+ console.log(' ✓ Removed ERNE-generated CLAUDE.md');
64
+ removed++;
65
+ }
66
+ }
67
+
68
+ if (removed === 0) {
69
+ console.log(' No ERNE files found.\n');
70
+ } else {
71
+ console.log('\n Removed ' + removed + ' items. ERNE has been uninstalled.');
72
+ console.log(' Restart Claude Code session to complete.\n');
73
+ }
74
+ };
package/package.json CHANGED
@@ -1,14 +1,18 @@
1
1
  {
2
2
  "name": "erne-universal",
3
- "version": "0.10.25",
4
- "description": "Complete AI coding agent harness for React Native and Expo development",
3
+ "version": "0.11.0",
4
+ "description": "Complete AI coding agent harness for React Native and Expo — 13 specialized agents, autonomous worker mode, visual debugging, smart routing",
5
5
  "keywords": [
6
6
  "react-native",
7
7
  "expo",
8
8
  "claude-code",
9
9
  "ai-agents",
10
10
  "mobile-development",
11
- "coding-assistant"
11
+ "coding-assistant",
12
+ "autonomous-worker",
13
+ "visual-debugging",
14
+ "documentation-generator",
15
+ "smart-routing"
12
16
  ],
13
17
  "license": "MIT",
14
18
  "author": "Juba Kitiashvili",
@@ -11,9 +11,17 @@ let errors = 0;
11
11
  let warnings = 0;
12
12
  let checked = 0;
13
13
 
14
- function error(msg) { errors++; console.error(` ✗ ${msg}`); }
15
- function warn(msg) { warnings++; console.warn(` ⚠ ${msg}`); }
16
- function ok(msg) { console.log(` ${msg}`); }
14
+ function error(msg) {
15
+ errors++;
16
+ console.error(` ${msg}`);
17
+ }
18
+ function warn(msg) {
19
+ warnings++;
20
+ console.warn(` ⚠ ${msg}`);
21
+ }
22
+ function ok(msg) {
23
+ console.log(` ✓ ${msg}`);
24
+ }
17
25
 
18
26
  // ─── Validate frontmatter in .md files ───
19
27
  function validateFrontmatter(filePath, requiredFields) {
@@ -47,7 +55,7 @@ function validateJson(filePath) {
47
55
 
48
56
  // ─── Validate directory file counts ───
49
57
  function validateCount(dir, ext, expected, label) {
50
- const files = fs.readdirSync(dir).filter(f => f.endsWith(ext));
58
+ const files = fs.readdirSync(dir).filter((f) => f.endsWith(ext));
51
59
  if (files.length !== expected) {
52
60
  error(`${label}: Expected ${expected} files, found ${files.length}`);
53
61
  } else {
@@ -61,15 +69,15 @@ console.log('\n ERNE Content Validation\n');
61
69
  // Agents
62
70
  console.log(' Agents:');
63
71
  validateCount('agents', '.md', 13, 'agents/');
64
- const agentFiles = fs.readdirSync('agents').filter(f => f.endsWith('.md'));
72
+ const agentFiles = fs.readdirSync('agents').filter((f) => f.endsWith('.md'));
65
73
  for (const f of agentFiles) {
66
74
  validateFrontmatter(path.join('agents', f), ['name', 'description']);
67
75
  }
68
76
 
69
77
  // Commands
70
78
  console.log(' Commands:');
71
- validateCount('commands', '.md', 22, 'commands/');
72
- const cmdFiles = fs.readdirSync('commands').filter(f => f.endsWith('.md'));
79
+ validateCount('commands', '.md', 22, 'commands/'); // 22 command files
80
+ const cmdFiles = fs.readdirSync('commands').filter((f) => f.endsWith('.md'));
73
81
  for (const f of cmdFiles) {
74
82
  validateFrontmatter(path.join('commands', f), ['name', 'description']);
75
83
  }
@@ -83,7 +91,7 @@ for (const layer of ruleLayers) {
83
91
  error(`rules/${layer}/: Missing directory`);
84
92
  continue;
85
93
  }
86
- const ruleFiles = fs.readdirSync(layerDir).filter(f => f.endsWith('.md'));
94
+ const ruleFiles = fs.readdirSync(layerDir).filter((f) => f.endsWith('.md'));
87
95
  ok(`rules/${layer}/: ${ruleFiles.length} files`);
88
96
  for (const f of ruleFiles) {
89
97
  validateFrontmatter(path.join(layerDir, f), ['description']);
@@ -99,7 +107,7 @@ for (const profile of ['minimal', 'standard', 'strict']) {
99
107
 
100
108
  // MCP configs
101
109
  console.log(' MCP Configs:');
102
- const mcpFiles = fs.readdirSync('mcp-configs').filter(f => f.endsWith('.json'));
110
+ const mcpFiles = fs.readdirSync('mcp-configs').filter((f) => f.endsWith('.json'));
103
111
  ok(`mcp-configs/: ${mcpFiles.length} files`);
104
112
  for (const f of mcpFiles) {
105
113
  validateJson(path.join('mcp-configs', f));
@@ -111,9 +119,10 @@ validateCount('contexts', '.md', 3, 'contexts/');
111
119
 
112
120
  // Skills
113
121
  console.log(' Skills:');
114
- const skillDirs = fs.readdirSync('skills', { withFileTypes: true })
115
- .filter(d => d.isDirectory())
116
- .map(d => d.name);
122
+ const skillDirs = fs
123
+ .readdirSync('skills', { withFileTypes: true })
124
+ .filter((d) => d.isDirectory())
125
+ .map((d) => d.name);
117
126
  ok(`skills/: ${skillDirs.length} skill directories`);
118
127
  for (const dir of skillDirs) {
119
128
  const skillMd = path.join('skills', dir, 'SKILL.md');