aether-colony 5.2.1 → 5.3.1

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/.aether/aether-utils.sh +35 -0
  2. package/.aether/agents/aether-ambassador.md +140 -0
  3. package/.aether/agents/aether-archaeologist.md +108 -0
  4. package/.aether/agents/aether-architect.md +133 -0
  5. package/.aether/agents/aether-auditor.md +144 -0
  6. package/.aether/agents/aether-builder.md +184 -0
  7. package/.aether/agents/aether-chaos.md +115 -0
  8. package/.aether/agents/aether-chronicler.md +122 -0
  9. package/.aether/agents/aether-gatekeeper.md +116 -0
  10. package/.aether/agents/aether-includer.md +117 -0
  11. package/.aether/agents/aether-keeper.md +177 -0
  12. package/.aether/agents/aether-measurer.md +128 -0
  13. package/.aether/agents/aether-oracle.md +137 -0
  14. package/.aether/agents/aether-probe.md +133 -0
  15. package/.aether/agents/aether-queen.md +286 -0
  16. package/.aether/agents/aether-route-setter.md +130 -0
  17. package/.aether/agents/aether-sage.md +106 -0
  18. package/.aether/agents/aether-scout.md +101 -0
  19. package/.aether/agents/aether-surveyor-disciplines.md +391 -0
  20. package/.aether/agents/aether-surveyor-nest.md +329 -0
  21. package/.aether/agents/aether-surveyor-pathogens.md +264 -0
  22. package/.aether/agents/aether-surveyor-provisions.md +334 -0
  23. package/.aether/agents/aether-tracker.md +137 -0
  24. package/.aether/agents/aether-watcher.md +174 -0
  25. package/.aether/agents/aether-weaver.md +130 -0
  26. package/.aether/commands/claude/archaeology.md +334 -0
  27. package/.aether/commands/claude/build.md +65 -0
  28. package/.aether/commands/claude/chaos.md +336 -0
  29. package/.aether/commands/claude/colonize.md +259 -0
  30. package/.aether/commands/claude/continue.md +60 -0
  31. package/.aether/commands/claude/council.md +507 -0
  32. package/.aether/commands/claude/data-clean.md +81 -0
  33. package/.aether/commands/claude/dream.md +268 -0
  34. package/.aether/commands/claude/entomb.md +498 -0
  35. package/.aether/commands/claude/export-signals.md +57 -0
  36. package/.aether/commands/claude/feedback.md +96 -0
  37. package/.aether/commands/claude/flag.md +151 -0
  38. package/.aether/commands/claude/flags.md +169 -0
  39. package/.aether/commands/claude/focus.md +76 -0
  40. package/.aether/commands/claude/help.md +154 -0
  41. package/.aether/commands/claude/history.md +140 -0
  42. package/.aether/commands/claude/import-signals.md +71 -0
  43. package/.aether/commands/claude/init.md +505 -0
  44. package/.aether/commands/claude/insert-phase.md +105 -0
  45. package/.aether/commands/claude/interpret.md +278 -0
  46. package/.aether/commands/claude/lay-eggs.md +210 -0
  47. package/.aether/commands/claude/maturity.md +113 -0
  48. package/.aether/commands/claude/memory-details.md +77 -0
  49. package/.aether/commands/claude/migrate-state.md +171 -0
  50. package/.aether/commands/claude/oracle.md +642 -0
  51. package/.aether/commands/claude/organize.md +232 -0
  52. package/.aether/commands/claude/patrol.md +620 -0
  53. package/.aether/commands/claude/pause-colony.md +233 -0
  54. package/.aether/commands/claude/phase.md +115 -0
  55. package/.aether/commands/claude/pheromones.md +156 -0
  56. package/.aether/commands/claude/plan.md +693 -0
  57. package/.aether/commands/claude/preferences.md +65 -0
  58. package/.aether/commands/claude/quick.md +100 -0
  59. package/.aether/commands/claude/redirect.md +76 -0
  60. package/.aether/commands/claude/resume-colony.md +197 -0
  61. package/.aether/commands/claude/resume.md +388 -0
  62. package/.aether/commands/claude/run.md +231 -0
  63. package/.aether/commands/claude/seal.md +774 -0
  64. package/.aether/commands/claude/skill-create.md +286 -0
  65. package/.aether/commands/claude/status.md +410 -0
  66. package/.aether/commands/claude/swarm.md +349 -0
  67. package/.aether/commands/claude/tunnels.md +426 -0
  68. package/.aether/commands/claude/update.md +132 -0
  69. package/.aether/commands/claude/verify-castes.md +143 -0
  70. package/.aether/commands/claude/watch.md +239 -0
  71. package/.aether/commands/opencode/archaeology.md +331 -0
  72. package/.aether/commands/opencode/build.md +1168 -0
  73. package/.aether/commands/opencode/chaos.md +329 -0
  74. package/.aether/commands/opencode/colonize.md +195 -0
  75. package/.aether/commands/opencode/continue.md +1436 -0
  76. package/.aether/commands/opencode/council.md +437 -0
  77. package/.aether/commands/opencode/data-clean.md +77 -0
  78. package/.aether/commands/opencode/dream.md +260 -0
  79. package/.aether/commands/opencode/entomb.md +377 -0
  80. package/.aether/commands/opencode/export-signals.md +54 -0
  81. package/.aether/commands/opencode/feedback.md +99 -0
  82. package/.aether/commands/opencode/flag.md +149 -0
  83. package/.aether/commands/opencode/flags.md +167 -0
  84. package/.aether/commands/opencode/focus.md +73 -0
  85. package/.aether/commands/opencode/help.md +157 -0
  86. package/.aether/commands/opencode/history.md +136 -0
  87. package/.aether/commands/opencode/import-signals.md +68 -0
  88. package/.aether/commands/opencode/init.md +518 -0
  89. package/.aether/commands/opencode/insert-phase.md +111 -0
  90. package/.aether/commands/opencode/interpret.md +272 -0
  91. package/.aether/commands/opencode/lay-eggs.md +213 -0
  92. package/.aether/commands/opencode/maturity.md +108 -0
  93. package/.aether/commands/opencode/memory-details.md +83 -0
  94. package/.aether/commands/opencode/migrate-state.md +165 -0
  95. package/.aether/commands/opencode/oracle.md +593 -0
  96. package/.aether/commands/opencode/organize.md +226 -0
  97. package/.aether/commands/opencode/patrol.md +626 -0
  98. package/.aether/commands/opencode/pause-colony.md +203 -0
  99. package/.aether/commands/opencode/phase.md +113 -0
  100. package/.aether/commands/opencode/pheromones.md +162 -0
  101. package/.aether/commands/opencode/plan.md +684 -0
  102. package/.aether/commands/opencode/preferences.md +71 -0
  103. package/.aether/commands/opencode/quick.md +91 -0
  104. package/.aether/commands/opencode/redirect.md +84 -0
  105. package/.aether/commands/opencode/resume-colony.md +190 -0
  106. package/.aether/commands/opencode/resume.md +394 -0
  107. package/.aether/commands/opencode/run.md +237 -0
  108. package/.aether/commands/opencode/seal.md +452 -0
  109. package/.aether/commands/opencode/skill-create.md +63 -0
  110. package/.aether/commands/opencode/status.md +307 -0
  111. package/.aether/commands/opencode/swarm.md +15 -0
  112. package/.aether/commands/opencode/tunnels.md +400 -0
  113. package/.aether/commands/opencode/update.md +127 -0
  114. package/.aether/commands/opencode/verify-castes.md +139 -0
  115. package/.aether/commands/opencode/watch.md +227 -0
  116. package/.aether/docs/command-playbooks/build-full.md +1 -1
  117. package/.aether/docs/command-playbooks/build-prep.md +10 -3
  118. package/.aether/docs/command-playbooks/build-verify.md +51 -0
  119. package/.aether/docs/command-playbooks/continue-advance.md +115 -6
  120. package/.aether/docs/command-playbooks/continue-verify.md +32 -0
  121. package/.aether/utils/clash-detect.sh +239 -0
  122. package/.aether/utils/hooks/clash-pre-tool-use.js +99 -0
  123. package/.aether/utils/merge-driver-lockfile.sh +35 -0
  124. package/.aether/utils/midden.sh +534 -0
  125. package/.aether/utils/pheromone.sh +1376 -108
  126. package/.aether/utils/queen.sh +2 -4
  127. package/.aether/utils/state-api.sh +25 -4
  128. package/.aether/utils/swarm.sh +1 -1
  129. package/.aether/utils/worktree.sh +189 -0
  130. package/CHANGELOG.md +26 -0
  131. package/README.md +161 -161
  132. package/bin/cli.js +103 -61
  133. package/bin/lib/banner.js +14 -0
  134. package/bin/lib/init.js +8 -7
  135. package/bin/lib/interactive-setup.js +251 -0
  136. package/bin/npx-entry.js +21 -0
  137. package/bin/npx-install.js +9 -167
  138. package/bin/validate-package.sh +23 -0
  139. package/package.json +2 -2
  140. package/.aether/docs/plans/pheromone-display-plan.md +0 -257
  141. package/.aether/schemas/example-prompt-builder.xml +0 -234
  142. package/.aether/scripts/incident-test-add.sh +0 -47
  143. package/.aether/scripts/weekly-audit.sh +0 -79
package/README.md CHANGED
@@ -1,59 +1,54 @@
1
1
  <div align="center">
2
2
 
3
- # 🐜 Aether Colony
3
+ <br>
4
4
 
5
- **Multi-agent AI development for Claude Code and OpenCode**
5
+ <picture>
6
+ <source media="(prefers-color-scheme: dark)" srcset="./AetherLogo.png" />
7
+ <source media="(prefers-color-scheme: light)" srcset="./AetherLogo.png" />
8
+ <img src="./AetherLogo.png" alt="Aether" width="240" />
9
+ </picture>
6
10
 
7
- [![npm version](https://img.shields.io/npm/v/aether-colony.svg?style=flat-square)](https://www.npmjs.com/package/aether-colony)
8
- [![npm downloads](https://img.shields.io/npm/dw/aether-colony.svg?style=flat-square)](https://www.npmjs.com/package/aether-colony)
9
- [![License: MIT](https://img.shields.io/github/license/calcosmic/Aether.svg?style=flat-square)](LICENSE)
10
- [![GitHub stars](https://img.shields.io/github/stars/calcosmic/Aether.svg?style=flat-square)](https://github.com/calcosmic/Aether/stargazers)
11
- [![Sponsor](https://img.shields.io/badge/Sponsor-GitHub-%23ea4aaa.svg?style=flat-square&logo=github)](https://github.com/sponsors/calcosmic)
11
+ <br>
12
12
 
13
- Spawn a colony of 24 AI specialists that self-organize around your goal using pheromone signals.
14
- 1,000+ weekly installs.
13
+ # Aether
15
14
 
16
- *Artificial Ecology For Thought and Emergent Reasoning*
15
+ ### Artificial Ecology for Thought and Emergent Reasoning
17
16
 
18
- *The whole is greater than the sum of its ants.*
17
+ <br>
19
18
 
20
- ```bash
21
- npm install -g aether-colony
22
- ```
19
+ [![npm](https://img.shields.io/npm/v/aether-colony?style=for-the-badge&logo=npm&logoColor=white&label=npm&color=7B3FE4)](https://www.npmjs.com/package/aether-colony)
20
+ [![downloads](https://img.shields.io/npm/dw/aether-colony?style=for-the-badge&logo=npm&logoColor=white&color=333333)](https://www.npmjs.com/package/aether-colony)
21
+ [![license](https://img.shields.io/github/license/calcosmic/Aether?style=for-the-badge&color=333333)](LICENSE)
22
+ [![stars](https://img.shields.io/github/stars/calcosmic/Aether?style=for-the-badge&logo=github&logoColor=white&color=333333)](https://github.com/calcosmic/Aether/stargazers)
23
+ [![sponsor](https://img.shields.io/badge/Sponsor-%E2%9D%A4-ea4aaa?style=for-the-badge&logo=github-sponsors&logoColor=white)](https://github.com/sponsors/calcosmic)
23
24
 
24
- </div>
25
+ <br>
25
26
 
26
- <p align="center">
27
- <img src="./AetherAnts.png" alt="Aether Colony" width="640" />
28
- </p>
27
+ Multi-agent AI development for **Claude Code** and **OpenCode**.
28
+ <br>
29
+ Spawn 24 specialists that self-organize around your goal using pheromone signals.
30
+
31
+ <br>
29
32
 
30
33
  ```
31
- 👑 Queen (you)
32
-
33
- │ set the goal, steer with pheromone signals
34
-
35
- ┌─────────────────────────────────────────┐
36
- │ Colony self-organizes │
37
- │ │
38
- │ 🔨 Builders write code (TDD) │
39
- │ 👁️ Watchers verify & test │
40
- │ 🔍 Scouts research first │
41
- │ 🐛 Trackers investigate bugs │
42
- │ 🗺️ Colonizers explore codebases │
43
- │ 📋 Route-setters plan phases │
44
- │ 🏺 Archaeologists excavate git history │
45
- │ 🎲 Chaos Ants resilience testing │
46
- │ 📚 Keepers preserve knowledge │
47
- │ 🔮 Oracle deep research │
48
- │ ...and 24 specialists total │
49
- └─────────────────────────────────────────┘
34
+ $ npx aether-colony
50
35
  ```
51
36
 
52
- ## 🐜 The Problem
37
+ <br>
38
+
39
+ *The whole is greater than the sum of its ants.*
40
+
41
+ <br>
42
+
43
+ </div>
44
+
45
+ ---
46
+
47
+ ## The Problem
53
48
 
54
49
  AI coding assistants work sequentially — one agent does everything: research, code, test, review. When it hits something complex, it either guesses or asks you. There's no specialization, no parallel work, no memory across sessions.
55
50
 
56
- ## 🐜 The Solution
51
+ ## The Solution
57
52
 
58
53
  Aether brings **ant colony intelligence** to AI-assisted development. Instead of one AI doing everything, you get a colony of specialists that self-organize around your goal.
59
54
 
@@ -62,196 +57,201 @@ Workers spawn workers dynamically (max depth 3, max 10 per phase). When a Builde
62
57
  You steer the colony with **pheromone signals**, not micromanagement:
63
58
 
64
59
  ```
65
- /ant:focus "security" # 🎯 "Pay attention here"
66
- /ant:redirect "no jQuery" # 🚫 "Don't do this" (hard constraint)
67
- /ant:feedback "prefer composition" # 💬 "Adjust based on this"
60
+ /ant:focus "security" # "Pay attention here"
61
+ /ant:redirect "no jQuery" # "Don't do this" (hard constraint)
62
+ /ant:feedback "prefer composition" # "Adjust based on this"
68
63
  ```
69
64
 
70
- The colony **remembers**. Wisdom, learnings, and instincts persist across sessions. The 🧠 Hive Brain shares knowledge across colonies on your machine.
65
+ The colony **remembers**. Wisdom, learnings, and instincts persist across sessions. The Hive Brain shares knowledge across colonies on your machine.
71
66
 
72
- ## 🚀 Quick Start
67
+ ## Quick Start
73
68
 
74
69
  ```bash
75
- # Install globally
70
+ # Interactive setup (recommended)
71
+ npx aether-colony
72
+
73
+ # Or install globally
76
74
  npm install -g aether-colony
75
+ ```
76
+
77
+ Then in your project:
77
78
 
78
- # In your project repo:
79
- /ant:lay-eggs # 🥚 Set up Aether (one-time)
80
- /ant:init "Build X" # 🌱 Start a colony with a goal
81
- /ant:plan # 📋 Generate phased roadmap
82
- /ant:run # 🐜 Autopilot: build, verify, advance all phases
83
- /ant:seal # 🏺 Done — archive the colony
79
+ ```
80
+ /ant:lay-eggs # Set up Aether (one-time)
81
+ /ant:init "Build X" # Start a colony with a goal
82
+ /ant:plan # Generate phased roadmap
83
+ /ant:run # Autopilot: build, verify, advance all phases
84
+ /ant:seal # Done — archive the colony
84
85
  ```
85
86
 
86
- That's it. Five commands from zero to shipped.
87
+ Five commands from zero to shipped.
87
88
 
88
- ## Key Features
89
+ ## Key Features
89
90
 
90
- - 🐜 **24 Specialized Agents** — Real subagents spawned via Task tool, from builders to archaeologists
91
- - ⚡ **44 Slash Commands** — Full lifecycle management across Claude Code and OpenCode
92
- - 🎯 **Pheromone System** Guide the colony with FOCUS, REDIRECT, FEEDBACK signals
93
- - 🧠 **Colony Memory** Learnings persist across sessions via QUEEN.md wisdom
94
- - 🌐 **Hive Brain** Cross-colony wisdom sharing with domain-scoped retrieval
95
- - 📚 **Skills System** 28 skills (10 colony + 18 domain) inject domain knowledge into workers
96
- - 🤖 **Autopilot** (`/ant:run`) Automated build-verify-advance loop with smart pause conditions
97
- - **6-Phase Verification** Build, types, lint, tests, security, diff gates before any phase advances
98
- - 🛡️ **Quality Gates** Security (Gatekeeper), quality (Auditor), coverage (Probe), performance (Measurer)
99
- - 🔍 **Per-Phase Research** Scouts investigate domain knowledge before task decomposition
100
- - 🔮 **Oracle Deep Research** Autonomous research loop for complex investigations
101
- - 💾 **Pause/Resume** Full state serialization for context breaks
91
+ | | Feature | Description |
92
+ |---|---------|-------------|
93
+ | **Agents** | 24 Specialized Workers | Builders, Watchers, Scouts, Trackers, Archaeologists, Oracle, and more |
94
+ | **Commands** | 45 Slash Commands | Full lifecycle management across Claude Code and OpenCode |
95
+ | **Signals** | Pheromone System | Guide the colony with FOCUS, REDIRECT, and FEEDBACK signals |
96
+ | **Memory** | Colony Wisdom | Learnings and instincts persist across sessions via QUEEN.md |
97
+ | **Sharing** | Hive Brain | Cross-colony wisdom sharing with domain-scoped retrieval |
98
+ | **Skills** | 28 Skills | 10 colony + 18 domain skills inject knowledge into workers |
99
+ | **Autopilot** | `/ant:run` | Automated build-verify-advance loop with smart pause conditions |
100
+ | **Verification** | 6-Phase Gates | Build, types, lint, tests, security, diff gates before advancing |
101
+ | **Quality** | 4 Gate Agents | Security (Gatekeeper), quality (Auditor), coverage (Probe), performance (Measurer) |
102
+ | **Research** | Oracle + Scouts | Deep autonomous research before task decomposition |
103
+ | **State** | Pause/Resume | Full state serialization for context breaks |
102
104
 
103
- ## 📖 Commands
105
+ ## Commands
104
106
 
105
107
  <details>
106
- <summary><strong>🏗️ Core Lifecycle</strong></summary>
108
+ <summary><strong>Core Lifecycle</strong></summary>
107
109
 
108
110
  | Command | Description |
109
111
  |---------|-------------|
110
- | `/ant:lay-eggs` | 🥚 Set up Aether in this repo (one-time) |
111
- | `/ant:init "goal"` | 🌱 Initialize colony with mission |
112
- | `/ant:plan` | 📋 Generate phased roadmap with domain research |
113
- | `/ant:build N` | 🔨 Execute phase N with worker waves |
114
- | `/ant:continue` | ➡️ 6-phase verification, advance to next phase |
115
- | `/ant:run` | 🐜 Autopilot — build, verify, advance automatically |
116
- | `/ant:patrol` | 🔍 Pre-seal audit — verify work against plan |
117
- | `/ant:seal` | 🏺 Complete and archive colony |
118
- | `/ant:entomb` | ⚰️ Create chamber from completed colony |
119
- | `/ant:pause-colony` | 💾 Save state for context break |
120
- | `/ant:resume-colony` | 🚦 Restore from pause |
112
+ | `/ant:lay-eggs` | Set up Aether in this repo (one-time) |
113
+ | `/ant:init "goal"` | Initialize colony with mission |
114
+ | `/ant:plan` | Generate phased roadmap with domain research |
115
+ | `/ant:build N` | Execute phase N with worker waves |
116
+ | `/ant:continue` | 6-phase verification, advance to next phase |
117
+ | `/ant:run` | Autopilot — build, verify, advance automatically |
118
+ | `/ant:patrol` | Pre-seal audit — verify work against plan |
119
+ | `/ant:seal` | Complete and archive colony |
120
+ | `/ant:entomb` | Create chamber from completed colony |
121
+ | `/ant:pause-colony` | Save state for context break |
122
+ | `/ant:resume-colony` | Restore from pause |
121
123
 
122
124
  </details>
123
125
 
124
126
  <details>
125
- <summary><strong>🎯 Pheromone Signals</strong></summary>
127
+ <summary><strong>Pheromone Signals</strong></summary>
126
128
 
127
129
  | Command | Description |
128
130
  |---------|-------------|
129
- | `/ant:focus "area"` | 🎯 FOCUS — "Pay attention here" |
130
- | `/ant:redirect "pattern"` | 🚫 REDIRECT — "Don't do this" (hard constraint) |
131
- | `/ant:feedback "note"` | 💬 FEEDBACK — "Adjust based on this" |
132
- | `/ant:pheromones` | 📊 View active signals |
133
- | `/ant:export-signals` | 📤 Export signals to XML |
134
- | `/ant:import-signals` | 📥 Import signals from XML |
131
+ | `/ant:focus "area"` | FOCUS — "Pay attention here" |
132
+ | `/ant:redirect "pattern"` | REDIRECT — "Don't do this" (hard constraint) |
133
+ | `/ant:feedback "note"` | FEEDBACK — "Adjust based on this" |
134
+ | `/ant:pheromones` | View active signals |
135
+ | `/ant:export-signals` | Export signals to XML |
136
+ | `/ant:import-signals` | Import signals from XML |
135
137
 
136
138
  </details>
137
139
 
138
140
  <details>
139
- <summary><strong>🔬 Research & Analysis</strong></summary>
141
+ <summary><strong>Research & Analysis</strong></summary>
140
142
 
141
143
  | Command | Description |
142
144
  |---------|-------------|
143
- | `/ant:colonize` | 📊🗺️ 4 parallel scouts analyze your codebase |
144
- | `/ant:oracle "topic"` | 🔮 Deep research with autonomous loop |
145
- | `/ant:archaeology <path>` | 🏺 Excavate git history for any file |
146
- | `/ant:chaos <target>` | 🎲 Resilience testing, edge case probing |
147
- | `/ant:swarm "problem"` | 🔥 4 parallel scouts for stubborn bugs |
148
- | `/ant:dream` | 💭 Philosophical codebase wanderer |
149
- | `/ant:interpret` | 🔍 Grounds dreams in reality |
150
- | `/ant:organize` | 🧹 Codebase hygiene report |
145
+ | `/ant:colonize` | 4 parallel scouts analyze your codebase |
146
+ | `/ant:oracle "topic"` | Deep research with autonomous loop |
147
+ | `/ant:archaeology <path>` | Excavate git history for any file |
148
+ | `/ant:chaos <target>` | Resilience testing, edge case probing |
149
+ | `/ant:swarm "problem"` | 4 parallel scouts for stubborn bugs |
150
+ | `/ant:dream` | Philosophical codebase wanderer |
151
+ | `/ant:interpret` | Grounds dreams in reality |
152
+ | `/ant:organize` | Codebase hygiene report |
151
153
 
152
154
  </details>
153
155
 
154
156
  <details>
155
- <summary><strong>👁️ Visibility & Status</strong></summary>
157
+ <summary><strong>Visibility & Status</strong></summary>
156
158
 
157
159
  | Command | Description |
158
160
  |---------|-------------|
159
- | `/ant:status` | 📈 Colony overview with memory health |
160
- | `/ant:memory-details` | 🧠 Wisdom, pending promotions, recent failures |
161
- | `/ant:watch` | 👁️ Real-time swarm display |
162
- | `/ant:history` | 📜 Recent activity log |
163
- | `/ant:flags` | 🚩 List blockers and issues |
164
- | `/ant:help` | 🐜 Full command reference |
161
+ | `/ant:status` | Colony overview with memory health |
162
+ | `/ant:memory-details` | Wisdom, pending promotions, recent failures |
163
+ | `/ant:watch` | Real-time swarm display |
164
+ | `/ant:history` | Recent activity log |
165
+ | `/ant:flags` | List blockers and issues |
166
+ | `/ant:help` | Full command reference |
165
167
 
166
168
  </details>
167
169
 
168
170
  <details>
169
- <summary><strong>🔧 Coordination & Maintenance</strong></summary>
171
+ <summary><strong>Coordination & Maintenance</strong></summary>
170
172
 
171
173
  | Command | Description |
172
174
  |---------|-------------|
173
- | `/ant:council` | 📜 Clarify intent via multi-choice questions |
174
- | `/ant:flag "title"` | 🚩 Create project-specific flag |
175
- | `/ant:data-clean` | 🧹 Remove test artifacts from colony data |
176
- | `/ant:preferences` | ⚙️ Add or list user preferences |
177
- | `/ant:skill-create "topic"` | 🐜 Create custom domain skill |
178
- | `/ant:update` | 🔄 Update system files from hub |
175
+ | `/ant:council` | Clarify intent via multi-choice questions |
176
+ | `/ant:flag "title"` | Create project-specific flag |
177
+ | `/ant:data-clean` | Remove test artifacts from colony data |
178
+ | `/ant:preferences` | Add or list user preferences |
179
+ | `/ant:skill-create "topic"` | Create custom domain skill |
180
+ | `/ant:update` | Update system files from hub |
179
181
 
180
182
  </details>
181
183
 
182
- ## 🐜 The 24 Agents
184
+ ## The 24 Agents
183
185
 
184
186
  | Tier | Agent | Role |
185
187
  |------|-------|------|
186
- | 👑 **Core** | Builder | 🔨 Writes code, TDD-first |
187
- | 👑 **Core** | Watcher | 👁️ Tests, validates, quality gates |
188
- | 👑 **Core** | Scout | 🔍 Researches, discovers |
189
- | 🏛️ **Orchestration** | Queen | 👑 Orchestrates phases, spawns workers |
190
- | 🏛️ **Orchestration** | Route-Setter | 📋 Plans phases, breaks down goals |
191
- | 🏛️ **Orchestration** | Architect | 🏗️ Architecture design |
192
- | 🗺️ **Surveyor** | surveyor-nest | 📂 Maps directory structure |
193
- | 🗺️ **Surveyor** | surveyor-disciplines | 📏 Documents conventions |
194
- | 🗺️ **Surveyor** | surveyor-pathogens | 🦠 Identifies tech debt |
195
- | 🗺️ **Surveyor** | surveyor-provisions | 📦 Maps dependencies |
196
- | **Specialist** | Keeper | 📚 Preserves knowledge |
197
- | **Specialist** | Tracker | 🐛 Investigates bugs |
198
- | **Specialist** | Probe | 🔬 Coverage analysis |
199
- | **Specialist** | Weaver | 🧵 Refactoring specialist |
200
- | **Specialist** | Auditor | Quality gate |
201
- | 🎯 **Niche** | Chaos | 🎲 Resilience testing |
202
- | 🎯 **Niche** | Archaeologist | 🏺 Excavates git history |
203
- | 🎯 **Niche** | Gatekeeper | 🛡️ Security gate |
204
- | 🎯 **Niche** | Includer | Accessibility audits |
205
- | 🎯 **Niche** | Measurer | ⏱️ Performance analysis |
206
- | 🎯 **Niche** | Sage | 🧙 Wisdom synthesis |
207
- | 🎯 **Niche** | Oracle | 🔮 Deep research |
208
- | 🎯 **Niche** | Ambassador | 🌐 External integrations |
209
- | 🎯 **Niche** | Chronicler | 📝 Documentation |
210
-
211
- ## 🏗️ Architecture
188
+ | **Core** | Builder | Writes code, TDD-first |
189
+ | **Core** | Watcher | Tests, validates, quality gates |
190
+ | **Core** | Scout | Researches, discovers |
191
+ | **Orchestration** | Queen | Orchestrates phases, spawns workers |
192
+ | **Orchestration** | Route-Setter | Plans phases, breaks down goals |
193
+ | **Orchestration** | Architect | Architecture design |
194
+ | **Surveyor** | surveyor-nest | Maps directory structure |
195
+ | **Surveyor** | surveyor-disciplines | Documents conventions |
196
+ | **Surveyor** | surveyor-pathogens | Identifies tech debt |
197
+ | **Surveyor** | surveyor-provisions | Maps dependencies |
198
+ | **Specialist** | Keeper | Preserves knowledge |
199
+ | **Specialist** | Tracker | Investigates bugs |
200
+ | **Specialist** | Probe | Coverage analysis |
201
+ | **Specialist** | Weaver | Refactoring specialist |
202
+ | **Specialist** | Auditor | Quality gate |
203
+ | **Niche** | Chaos | Resilience testing |
204
+ | **Niche** | Archaeologist | Excavates git history |
205
+ | **Niche** | Gatekeeper | Security gate |
206
+ | **Niche** | Includer | Accessibility audits |
207
+ | **Niche** | Measurer | Performance analysis |
208
+ | **Niche** | Sage | Wisdom synthesis |
209
+ | **Niche** | Oracle | Deep research |
210
+ | **Niche** | Ambassador | External integrations |
211
+ | **Niche** | Chronicler | Documentation |
212
+
213
+ ## Architecture
212
214
 
213
215
  ```
214
- .aether/ # 🐜 Colony files (repo-local)
215
- ├── aether-utils.sh # ⚡ Dispatcher (~5,200 lines, ~150 subcommands)
216
- ├── utils/ # 🔧 ~29 modular scripts
217
- ├── skills/ # 📚 28 skills (10 colony + 18 domain)
218
- ├── commands/ # 📖 44 YAML command sources
219
- ├── exchange/ # 📤 XML exchange modules
220
- ├── docs/ # 📝 Documentation
221
- ├── templates/ # 📋 12 templates
222
- └── data/ # 💾 Colony state (local only)
223
-
224
- ~/.aether/ # 🌐 Hub (cross-colony, user-level)
225
- ├── QUEEN.md # 👑 Wisdom + preferences
226
- ├── hive/wisdom.json # 🧠 Cross-colony wisdom (200 cap)
227
- └── registry.json # 📊 All registered colonies
216
+ .aether/ Colony files (repo-local)
217
+ ├── aether-utils.sh Dispatcher (~5,500 lines, ~130+ subcommands)
218
+ ├── utils/ 35 modular scripts
219
+ ├── skills/ 28 skills (10 colony + 18 domain)
220
+ ├── commands/ 45 YAML command sources
221
+ ├── exchange/ XML exchange modules
222
+ ├── docs/ Documentation
223
+ ├── templates/ 12 templates
224
+ └── data/ Colony state (local only)
225
+
226
+ ~/.aether/ Hub (cross-colony, user-level)
227
+ ├── QUEEN.md Wisdom + preferences
228
+ ├── hive/wisdom.json Cross-colony wisdom (200 cap)
229
+ └── registry.json All registered colonies
228
230
  ```
229
231
 
230
- ## 🔌 Works With
232
+ ## Works With
231
233
 
232
- - **[Claude Code](https://docs.anthropic.com/en/docs/claude-code)** — 44 slash commands + 24 agent definitions
233
- - **[OpenCode](https://github.com/opencode-ai/opencode)** — 44 slash commands + agent definitions
234
+ - **[Claude Code](https://docs.anthropic.com/en/docs/claude-code)** — 45 slash commands + 24 agent definitions
235
+ - **[OpenCode](https://github.com/opencode-ai/opencode)** — 45 slash commands + agent definitions
234
236
 
235
- ## ❤️ Support Aether
237
+ ## Support
236
238
 
237
- If Aether has been useful to you, here's how you can keep the colony alive:
239
+ If Aether has been useful to you:
238
240
 
239
- **[Sponsor on GitHub](https://github.com/sponsors/calcosmic)** (preferred)
241
+ **[Sponsor on GitHub](https://github.com/sponsors/calcosmic)**
240
242
 
241
243
  <details>
242
- <summary>💡 Crypto — no middlemen, no fees</summary>
244
+ <summary>Crypto</summary>
243
245
 
244
246
  | Network | Address |
245
247
  |---------|---------|
246
- | **ETH** (MetaMask) | `0xE7F8C9BE190c207D49DF01b82747cf7B6Bd1c809` |
247
- | **SOL** (Phantom) | `6DVTdoZvvi9siUpgmRJZxk5Kqho8TZiN2ZzyVUVC9gX8` |
248
+ | **ETH** | `0xE7F8C9BE190c207D49DF01b82747cf7B6Bd1c809` |
249
+ | **SOL** | `6DVTdoZvvi9siUpgmRJZxk5Kqho8TZiN2ZzyVUVC9gX8` |
248
250
 
249
251
  </details>
250
252
 
251
253
  [PayPal](https://www.paypal.com/ncp/payment/RENG7ZMW5F59L) · [Buy Me a Coffee](https://buymeacoffee.com/music5y)
252
254
 
253
- *Your support funds servers, new features, docs, and keeps Aether free & open source (MIT).*
254
-
255
- ## 📄 License
255
+ ## License
256
256
 
257
257
  MIT
package/bin/cli.js CHANGED
@@ -1313,79 +1313,111 @@ program.on('option:quiet', () => {
1313
1313
  globalQuiet = true;
1314
1314
  });
1315
1315
 
1316
- // Install command
1317
- program
1318
- .command('install')
1319
- .description('Install commands and agents to ~/.claude/ and set up distribution hub')
1320
- .action(wrapCommand(async () => {
1321
- log(c.header(`aether-colony v${VERSION} — installing...`));
1322
-
1323
- // Sync commands to ~/.claude/commands/ant/ (with orphan cleanup)
1324
- if (!fs.existsSync(COMMANDS_SRC)) {
1325
- // Running from source repo — commands are in .claude/commands/ant/
1326
- const repoCommands = path.join(PACKAGE_DIR, '.claude', 'commands', 'ant');
1327
- if (fs.existsSync(repoCommands)) {
1328
- const result = syncDirWithCleanup(repoCommands, COMMANDS_DEST);
1329
- log(` Commands: ${result.copied} files -> ${COMMANDS_DEST}`);
1330
- if (result.removed.length > 0) {
1331
- log(` Commands: removed ${result.removed.length} stale files`);
1332
- for (const f of result.removed) log(` - ${f}`);
1333
- }
1334
- } else {
1335
- console.error(' Commands source not found. Skipping.');
1336
- }
1337
- } else {
1338
- const result = syncDirWithCleanup(COMMANDS_SRC, COMMANDS_DEST);
1316
+ /**
1317
+ * Perform a global installation of commands, agents, and hub setup.
1318
+ * Extracted so it can be called from the interactive installer.
1319
+ */
1320
+ async function performGlobalInstall() {
1321
+ log(c.header(`aether-colony v${VERSION} — installing...`));
1322
+
1323
+ // Sync commands to ~/.claude/commands/ant/ (with orphan cleanup)
1324
+ if (!fs.existsSync(COMMANDS_SRC)) {
1325
+ // Running from source repo — commands are in .claude/commands/ant/
1326
+ const repoCommands = path.join(PACKAGE_DIR, '.claude', 'commands', 'ant');
1327
+ if (fs.existsSync(repoCommands)) {
1328
+ const result = syncDirWithCleanup(repoCommands, COMMANDS_DEST);
1339
1329
  log(` Commands: ${result.copied} files -> ${COMMANDS_DEST}`);
1340
1330
  if (result.removed.length > 0) {
1341
1331
  log(` Commands: removed ${result.removed.length} stale files`);
1342
1332
  for (const f of result.removed) log(` - ${f}`);
1343
1333
  }
1334
+ } else {
1335
+ console.error(' Commands source not found. Skipping.');
1336
+ }
1337
+ } else {
1338
+ const result = syncDirWithCleanup(COMMANDS_SRC, COMMANDS_DEST);
1339
+ log(` Commands: ${result.copied} files -> ${COMMANDS_DEST}`);
1340
+ if (result.removed.length > 0) {
1341
+ log(` Commands: removed ${result.removed.length} stale files`);
1342
+ for (const f of result.removed) log(` - ${f}`);
1344
1343
  }
1344
+ }
1345
1345
 
1346
- // Sync agents to ~/.claude/agents/ant/ (with orphan cleanup)
1347
- const repoAgents = path.join(PACKAGE_DIR, '.claude', 'agents', 'ant');
1348
- if (fs.existsSync(repoAgents)) {
1349
- const result = syncDirWithCleanup(repoAgents, AGENTS_DEST);
1350
- log(` Agents (claude): ${result.copied} files -> ${AGENTS_DEST}`);
1351
- if (result.removed.length > 0) {
1352
- log(` Agents (claude): removed ${result.removed.length} stale files`);
1353
- for (const f of result.removed) log(` - ${f}`);
1354
- }
1346
+ // Sync agents to ~/.claude/agents/ant/ (with orphan cleanup)
1347
+ const repoAgents = path.join(PACKAGE_DIR, '.claude', 'agents', 'ant');
1348
+ if (fs.existsSync(repoAgents)) {
1349
+ const result = syncDirWithCleanup(repoAgents, AGENTS_DEST);
1350
+ log(` Agents (claude): ${result.copied} files -> ${AGENTS_DEST}`);
1351
+ if (result.removed.length > 0) {
1352
+ log(` Agents (claude): removed ${result.removed.length} stale files`);
1353
+ for (const f of result.removed) log(` - ${f}`);
1355
1354
  }
1355
+ }
1356
1356
 
1357
- // Sync OpenCode commands to ~/.opencode/command/ (with orphan cleanup)
1358
- const opencodeCmdsSrc = path.join(PACKAGE_DIR, '.opencode', 'commands', 'ant');
1359
- if (fs.existsSync(opencodeCmdsSrc)) {
1360
- const result = syncDirWithCleanup(opencodeCmdsSrc, OPENCODE_COMMANDS_DEST);
1361
- log(` Commands (opencode): ${result.copied} files -> ${OPENCODE_COMMANDS_DEST}`);
1362
- if (result.removed.length > 0) {
1363
- log(` Commands (opencode): removed ${result.removed.length} stale files`);
1364
- for (const f of result.removed) log(` - ${f}`);
1365
- }
1357
+ // Sync OpenCode commands to ~/.opencode/command/ (with orphan cleanup)
1358
+ const opencodeCmdsSrc = path.join(PACKAGE_DIR, '.opencode', 'commands', 'ant');
1359
+ if (fs.existsSync(opencodeCmdsSrc)) {
1360
+ const result = syncDirWithCleanup(opencodeCmdsSrc, OPENCODE_COMMANDS_DEST);
1361
+ log(` Commands (opencode): ${result.copied} files -> ${OPENCODE_COMMANDS_DEST}`);
1362
+ if (result.removed.length > 0) {
1363
+ log(` Commands (opencode): removed ${result.removed.length} stale files`);
1364
+ for (const f of result.removed) log(` - ${f}`);
1366
1365
  }
1366
+ }
1367
1367
 
1368
- // Sync OpenCode agents to ~/.opencode/agent/ (with orphan cleanup)
1369
- const opencodeAgentsSrc = path.join(PACKAGE_DIR, '.opencode', 'agents');
1370
- if (fs.existsSync(opencodeAgentsSrc)) {
1371
- const result = syncDirWithCleanup(opencodeAgentsSrc, OPENCODE_AGENTS_DEST);
1372
- log(` Agents (opencode): ${result.copied} files -> ${OPENCODE_AGENTS_DEST}`);
1373
- if (result.removed.length > 0) {
1374
- log(` Agents (opencode): removed ${result.removed.length} stale files`);
1375
- for (const f of result.removed) log(` - ${f}`);
1376
- }
1368
+ // Sync OpenCode agents to ~/.opencode/agent/ (with orphan cleanup)
1369
+ const opencodeAgentsSrc = path.join(PACKAGE_DIR, '.opencode', 'agents');
1370
+ if (fs.existsSync(opencodeAgentsSrc)) {
1371
+ const result = syncDirWithCleanup(opencodeAgentsSrc, OPENCODE_AGENTS_DEST);
1372
+ log(` Agents (opencode): ${result.copied} files -> ${OPENCODE_AGENTS_DEST}`);
1373
+ if (result.removed.length > 0) {
1374
+ log(` Agents (opencode): removed ${result.removed.length} stale files`);
1375
+ for (const f of result.removed) log(` - ${f}`);
1377
1376
  }
1377
+ }
1378
1378
 
1379
- // Set up distribution hub at ~/.aether/
1380
- log('');
1381
- log(c.colony('Setting up distribution hub...'));
1382
- setupHub();
1379
+ // Set up distribution hub at ~/.aether/
1380
+ log('');
1381
+ log(c.colony('Setting up distribution hub...'));
1382
+ setupHub();
1383
1383
 
1384
- log('');
1385
- log(c.success('Install complete.'));
1386
- log(` ${c.queen('Claude Code:')} run /ant to get started`);
1387
- log(` ${c.colony('OpenCode:')} run /ant to get started`);
1388
- log(` ${c.colony('Hub:')} ${c.dim('~/.aether/')} (for coordinated updates across repos)`);
1384
+ log('');
1385
+ log(c.success('Install complete.'));
1386
+ log(` ${c.queen('Claude Code:')} run /ant to get started`);
1387
+ log(` ${c.colony('OpenCode:')} run /ant to get started`);
1388
+ log(` ${c.colony('Hub:')} ${c.dim('~/.aether/')} (for coordinated updates across repos)`);
1389
+ }
1390
+
1391
+ // Install command
1392
+ program
1393
+ .command('install')
1394
+ .description('Install commands and agents to ~/.claude/ and set up distribution hub')
1395
+ .action(wrapCommand(performGlobalInstall));
1396
+
1397
+ // Setup command — set up Aether in the current directory from hub
1398
+ program
1399
+ .command('setup')
1400
+ .description('Set up Aether in the current directory (copies system files from hub)')
1401
+ .option('-f, --force', 'Overwrite existing setup')
1402
+ .action(wrapCommand(async (options) => {
1403
+ if (!fs.existsSync(HUB_VERSION)) {
1404
+ console.error('Aether hub not installed.');
1405
+ console.error('Run "npx aether-colony" or "aether install" to install the hub first.');
1406
+ process.exit(1);
1407
+ }
1408
+ const repoPath = process.cwd();
1409
+ log(c.header('Setting up Aether in this directory...'));
1410
+ const result = await initializeRepo(repoPath, { setupOnly: true });
1411
+ if (result.success) {
1412
+ log('');
1413
+ log(c.success('Aether is ready.'));
1414
+ log(` ${result.filesCopied} system files synced to .aether/`);
1415
+ log('');
1416
+ log(' Next steps:');
1417
+ log(' In Claude Code: /ant:init "your goal"');
1418
+ log(' Or terminal: aether init --goal "your goal"');
1419
+ log('');
1420
+ }
1389
1421
  }));
1390
1422
 
1391
1423
  // Update command
@@ -2172,10 +2204,20 @@ module.exports = {
2172
2204
  syncDirWithCleanup,
2173
2205
  syncSkillsToHub,
2174
2206
  listFilesRecursive,
2175
- cleanEmptyDirs
2207
+ cleanEmptyDirs,
2208
+ performGlobalInstall,
2209
+ run
2176
2210
  };
2177
2211
 
2212
+ /**
2213
+ * Parse CLI arguments. Called automatically when run directly,
2214
+ * or explicitly by npx-entry.js when delegating a subcommand.
2215
+ */
2216
+ function run() {
2217
+ program.parse();
2218
+ }
2219
+
2178
2220
  // Parse command line arguments only when run directly (not when required as a module)
2179
2221
  if (require.main === module) {
2180
- program.parse();
2222
+ run();
2181
2223
  }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Shared ASCII banner for Aether installers.
3
+ */
4
+
5
+ const BANNER = `
6
+ █████╗ ███████╗████████╗██╗ ██╗███████╗██████╗
7
+ ██╔══██╗██╔════╝╚══██╔══╝██║ ██║██╔════╝██╔══██╗
8
+ ███████║█████╗ ██║ ███████║█████╗ ██████╔╝
9
+ ██╔══██║██╔══╝ ██║ ██╔══██║██╔══╝ ██╔══██╗
10
+ ██║ ██║███████╗ ██║ ██║ ██║███████╗██║ ██║
11
+ ╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
12
+ `;
13
+
14
+ module.exports = { BANNER };