aether-colony 5.0.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/.aether/aether-utils.sh +3150 -3349
  2. package/.aether/agents-claude/aether-ambassador.md +265 -0
  3. package/.aether/agents-claude/aether-archaeologist.md +327 -0
  4. package/.aether/agents-claude/aether-architect.md +236 -0
  5. package/.aether/agents-claude/aether-auditor.md +271 -0
  6. package/.aether/agents-claude/aether-builder.md +224 -0
  7. package/.aether/agents-claude/aether-chaos.md +269 -0
  8. package/.aether/agents-claude/aether-chronicler.md +305 -0
  9. package/.aether/agents-claude/aether-gatekeeper.md +330 -0
  10. package/.aether/agents-claude/aether-includer.md +374 -0
  11. package/.aether/agents-claude/aether-keeper.md +272 -0
  12. package/.aether/agents-claude/aether-measurer.md +322 -0
  13. package/.aether/agents-claude/aether-oracle.md +237 -0
  14. package/.aether/agents-claude/aether-probe.md +211 -0
  15. package/.aether/agents-claude/aether-queen.md +330 -0
  16. package/.aether/agents-claude/aether-route-setter.md +178 -0
  17. package/.aether/agents-claude/aether-sage.md +418 -0
  18. package/.aether/agents-claude/aether-scout.md +179 -0
  19. package/.aether/agents-claude/aether-surveyor-disciplines.md +417 -0
  20. package/.aether/agents-claude/aether-surveyor-nest.md +355 -0
  21. package/.aether/agents-claude/aether-surveyor-pathogens.md +289 -0
  22. package/.aether/agents-claude/aether-surveyor-provisions.md +360 -0
  23. package/.aether/agents-claude/aether-tracker.md +270 -0
  24. package/.aether/agents-claude/aether-watcher.md +280 -0
  25. package/.aether/agents-claude/aether-weaver.md +248 -0
  26. package/.aether/commands/archaeology.yaml +653 -0
  27. package/.aether/commands/build.yaml +1221 -0
  28. package/.aether/commands/chaos.yaml +653 -0
  29. package/.aether/commands/colonize.yaml +438 -0
  30. package/.aether/commands/continue.yaml +1484 -0
  31. package/.aether/commands/council.yaml +304 -0
  32. package/.aether/commands/data-clean.yaml +80 -0
  33. package/.aether/commands/dream.yaml +275 -0
  34. package/.aether/commands/entomb.yaml +863 -0
  35. package/.aether/commands/export-signals.yaml +64 -0
  36. package/.aether/commands/feedback.yaml +158 -0
  37. package/.aether/commands/flag.yaml +160 -0
  38. package/.aether/commands/flags.yaml +177 -0
  39. package/.aether/commands/focus.yaml +112 -0
  40. package/.aether/commands/help.yaml +167 -0
  41. package/.aether/commands/history.yaml +137 -0
  42. package/.aether/commands/import-signals.yaml +79 -0
  43. package/.aether/commands/init.yaml +469 -0
  44. package/.aether/commands/insert-phase.yaml +98 -0
  45. package/.aether/commands/interpret.yaml +285 -0
  46. package/.aether/commands/lay-eggs.yaml +224 -0
  47. package/.aether/commands/maturity.yaml +122 -0
  48. package/.aether/commands/memory-details.yaml +74 -0
  49. package/.aether/commands/migrate-state.yaml +174 -0
  50. package/.aether/commands/oracle.yaml +1224 -0
  51. package/.aether/commands/organize.yaml +446 -0
  52. package/.aether/commands/patrol.yaml +621 -0
  53. package/.aether/commands/pause-colony.yaml +424 -0
  54. package/.aether/commands/phase.yaml +124 -0
  55. package/.aether/commands/pheromones.yaml +153 -0
  56. package/.aether/commands/plan.yaml +1313 -0
  57. package/.aether/commands/preferences.yaml +63 -0
  58. package/.aether/commands/redirect.yaml +123 -0
  59. package/.aether/commands/resume-colony.yaml +373 -0
  60. package/.aether/commands/resume.yaml +398 -0
  61. package/.aether/commands/run.yaml +193 -0
  62. package/.aether/commands/seal.yaml +1205 -0
  63. package/.aether/commands/skill-create.yaml +337 -0
  64. package/.aether/commands/status.yaml +364 -0
  65. package/.aether/commands/swarm.yaml +352 -0
  66. package/.aether/commands/tunnels.yaml +814 -0
  67. package/.aether/commands/update.yaml +131 -0
  68. package/.aether/commands/verify-castes.yaml +159 -0
  69. package/.aether/commands/watch.yaml +454 -0
  70. package/.aether/docs/INCIDENT_TEMPLATE.md +32 -0
  71. package/.aether/docs/QUEEN-SYSTEM.md +11 -11
  72. package/.aether/docs/README.md +32 -2
  73. package/.aether/docs/command-playbooks/README.md +23 -0
  74. package/.aether/docs/command-playbooks/build-complete.md +349 -0
  75. package/.aether/docs/command-playbooks/build-context.md +282 -0
  76. package/.aether/docs/command-playbooks/build-full.md +1682 -0
  77. package/.aether/docs/command-playbooks/build-prep.md +283 -0
  78. package/.aether/docs/command-playbooks/build-verify.md +405 -0
  79. package/.aether/docs/command-playbooks/build-wave.md +749 -0
  80. package/.aether/docs/command-playbooks/continue-advance.md +524 -0
  81. package/.aether/docs/command-playbooks/continue-finalize.md +447 -0
  82. package/.aether/docs/command-playbooks/continue-full.md +1724 -0
  83. package/.aether/docs/command-playbooks/continue-gates.md +686 -0
  84. package/.aether/docs/command-playbooks/continue-verify.md +406 -0
  85. package/.aether/docs/context-continuity.md +84 -0
  86. package/.aether/docs/disciplines/DISCIPLINES.md +9 -7
  87. package/.aether/docs/error-codes.md +1 -1
  88. package/.aether/docs/known-issues.md +34 -173
  89. package/.aether/docs/pheromones.md +86 -6
  90. package/.aether/docs/plans/pheromone-display-plan.md +257 -0
  91. package/.aether/docs/queen-commands.md +10 -9
  92. package/.aether/docs/source-of-truth-map.md +132 -0
  93. package/.aether/docs/xml-utilities.md +47 -0
  94. package/.aether/rules/aether-colony.md +23 -13
  95. package/.aether/scripts/incident-test-add.sh +47 -0
  96. package/.aether/scripts/weekly-audit.sh +79 -0
  97. package/.aether/skills/.index.json +649 -0
  98. package/.aether/skills/colony/.manifest.json +16 -0
  99. package/.aether/skills/colony/build-discipline/SKILL.md +78 -0
  100. package/.aether/skills/colony/colony-interaction/SKILL.md +56 -0
  101. package/.aether/skills/colony/colony-lifecycle/SKILL.md +77 -0
  102. package/.aether/skills/colony/colony-visuals/SKILL.md +112 -0
  103. package/.aether/skills/colony/context-management/SKILL.md +80 -0
  104. package/.aether/skills/colony/error-presentation/SKILL.md +99 -0
  105. package/.aether/skills/colony/pheromone-protocol/SKILL.md +79 -0
  106. package/.aether/skills/colony/pheromone-visibility/SKILL.md +81 -0
  107. package/.aether/skills/colony/state-safety/SKILL.md +84 -0
  108. package/.aether/skills/colony/worker-priming/SKILL.md +82 -0
  109. package/.aether/skills/domain/.manifest.json +24 -0
  110. package/.aether/skills/domain/README.md +33 -0
  111. package/.aether/skills/domain/django/SKILL.md +49 -0
  112. package/.aether/skills/domain/docker/SKILL.md +52 -0
  113. package/.aether/skills/domain/golang/SKILL.md +52 -0
  114. package/.aether/skills/domain/graphql/SKILL.md +51 -0
  115. package/.aether/skills/domain/html-css/SKILL.md +48 -0
  116. package/.aether/skills/domain/nextjs/SKILL.md +45 -0
  117. package/.aether/skills/domain/nodejs/SKILL.md +53 -0
  118. package/.aether/skills/domain/postgresql/SKILL.md +53 -0
  119. package/.aether/skills/domain/prisma/SKILL.md +59 -0
  120. package/.aether/skills/domain/python/SKILL.md +50 -0
  121. package/.aether/skills/domain/rails/SKILL.md +52 -0
  122. package/.aether/skills/domain/react/SKILL.md +45 -0
  123. package/.aether/skills/domain/rest-api/SKILL.md +58 -0
  124. package/.aether/skills/domain/svelte/SKILL.md +47 -0
  125. package/.aether/skills/domain/tailwind/SKILL.md +45 -0
  126. package/.aether/skills/domain/testing/SKILL.md +53 -0
  127. package/.aether/skills/domain/typescript/SKILL.md +58 -0
  128. package/.aether/skills/domain/vue/SKILL.md +49 -0
  129. package/.aether/templates/QUEEN.md.template +23 -41
  130. package/.aether/templates/colony-state-reset.jq.template +1 -0
  131. package/.aether/templates/colony-state.template.json +4 -0
  132. package/.aether/templates/learning-observations.template.json +6 -0
  133. package/.aether/templates/midden.template.json +13 -0
  134. package/.aether/templates/pheromones.template.json +6 -0
  135. package/.aether/templates/session.template.json +9 -0
  136. package/.aether/utils/atomic-write.sh +63 -17
  137. package/.aether/utils/chamber-utils.sh +145 -2
  138. package/.aether/utils/emoji-audit.sh +166 -0
  139. package/.aether/utils/error-handler.sh +21 -7
  140. package/.aether/utils/file-lock.sh +182 -27
  141. package/.aether/utils/flag.sh +267 -0
  142. package/.aether/utils/hive.sh +572 -0
  143. package/.aether/utils/learning.sh +1928 -0
  144. package/.aether/utils/midden.sh +342 -0
  145. package/.aether/utils/oracle/oracle.md +168 -0
  146. package/.aether/utils/oracle/oracle.sh +1023 -0
  147. package/.aether/utils/pheromone.sh +2029 -0
  148. package/.aether/utils/queen.sh +1698 -0
  149. package/.aether/utils/scan.sh +860 -0
  150. package/.aether/utils/semantic-cli.sh +10 -8
  151. package/.aether/utils/session.sh +552 -0
  152. package/.aether/utils/skills.sh +509 -0
  153. package/.aether/utils/spawn-tree.sh +103 -271
  154. package/.aether/utils/spawn.sh +260 -0
  155. package/.aether/utils/state-api.sh +199 -0
  156. package/.aether/utils/state-loader.sh +8 -6
  157. package/.aether/utils/suggest.sh +611 -0
  158. package/.aether/utils/swarm-display.sh +10 -1
  159. package/.aether/utils/swarm.sh +1004 -0
  160. package/.aether/utils/watch-spawn-tree.sh +11 -2
  161. package/.aether/utils/xml-compose.sh +2 -2
  162. package/.aether/utils/xml-convert.sh +9 -5
  163. package/.aether/utils/xml-core.sh +5 -9
  164. package/.aether/utils/xml-query.sh +4 -4
  165. package/.aether/workers.md +86 -67
  166. package/.claude/agents/ant/aether-ambassador.md +2 -1
  167. package/.claude/agents/ant/aether-archaeologist.md +6 -1
  168. package/.claude/agents/ant/aether-architect.md +236 -0
  169. package/.claude/agents/ant/aether-auditor.md +6 -1
  170. package/.claude/agents/ant/aether-builder.md +38 -1
  171. package/.claude/agents/ant/aether-chaos.md +2 -1
  172. package/.claude/agents/ant/aether-chronicler.md +1 -0
  173. package/.claude/agents/ant/aether-gatekeeper.md +6 -1
  174. package/.claude/agents/ant/aether-includer.md +1 -0
  175. package/.claude/agents/ant/aether-keeper.md +1 -0
  176. package/.claude/agents/ant/aether-measurer.md +6 -1
  177. package/.claude/agents/ant/aether-oracle.md +237 -0
  178. package/.claude/agents/ant/aether-probe.md +2 -1
  179. package/.claude/agents/ant/aether-queen.md +6 -1
  180. package/.claude/agents/ant/aether-route-setter.md +6 -1
  181. package/.claude/agents/ant/aether-sage.md +68 -3
  182. package/.claude/agents/ant/aether-scout.md +38 -1
  183. package/.claude/agents/ant/aether-surveyor-disciplines.md +2 -1
  184. package/.claude/agents/ant/aether-surveyor-nest.md +2 -1
  185. package/.claude/agents/ant/aether-surveyor-pathogens.md +2 -1
  186. package/.claude/agents/ant/aether-surveyor-provisions.md +2 -1
  187. package/.claude/agents/ant/aether-tracker.md +6 -1
  188. package/.claude/agents/ant/aether-watcher.md +37 -1
  189. package/.claude/agents/ant/aether-weaver.md +2 -1
  190. package/.claude/commands/ant/archaeology.md +1 -8
  191. package/.claude/commands/ant/build.md +43 -1159
  192. package/.claude/commands/ant/chaos.md +1 -14
  193. package/.claude/commands/ant/colonize.md +1 -14
  194. package/.claude/commands/ant/continue.md +40 -1026
  195. package/.claude/commands/ant/council.md +9 -16
  196. package/.claude/commands/ant/data-clean.md +81 -0
  197. package/.claude/commands/ant/dream.md +12 -9
  198. package/.claude/commands/ant/entomb.md +62 -87
  199. package/.claude/commands/ant/export-signals.md +57 -0
  200. package/.claude/commands/ant/feedback.md +18 -0
  201. package/.claude/commands/ant/flag.md +12 -0
  202. package/.claude/commands/ant/flags.md +22 -8
  203. package/.claude/commands/ant/focus.md +18 -0
  204. package/.claude/commands/ant/help.md +40 -8
  205. package/.claude/commands/ant/history.md +3 -0
  206. package/.claude/commands/ant/import-signals.md +71 -0
  207. package/.claude/commands/ant/init.md +316 -191
  208. package/.claude/commands/ant/insert-phase.md +101 -0
  209. package/.claude/commands/ant/interpret.md +11 -0
  210. package/.claude/commands/ant/lay-eggs.md +167 -158
  211. package/.claude/commands/ant/maturity.md +22 -11
  212. package/.claude/commands/ant/memory-details.md +77 -0
  213. package/.claude/commands/ant/migrate-state.md +6 -0
  214. package/.claude/commands/ant/oracle.md +317 -62
  215. package/.claude/commands/ant/organize.md +10 -5
  216. package/.claude/commands/ant/patrol.md +620 -0
  217. package/.claude/commands/ant/pause-colony.md +8 -22
  218. package/.claude/commands/ant/phase.md +26 -37
  219. package/.claude/commands/ant/pheromones.md +156 -0
  220. package/.claude/commands/ant/plan.md +175 -52
  221. package/.claude/commands/ant/preferences.md +65 -0
  222. package/.claude/commands/ant/redirect.md +18 -0
  223. package/.claude/commands/ant/resume-colony.md +34 -20
  224. package/.claude/commands/ant/resume.md +51 -7
  225. package/.claude/commands/ant/run.md +195 -0
  226. package/.claude/commands/ant/seal.md +497 -78
  227. package/.claude/commands/ant/skill-create.md +286 -0
  228. package/.claude/commands/ant/status.md +127 -1
  229. package/.claude/commands/ant/swarm.md +11 -23
  230. package/.claude/commands/ant/tunnels.md +1 -0
  231. package/.claude/commands/ant/update.md +58 -135
  232. package/.claude/commands/ant/verify-castes.md +90 -42
  233. package/.claude/commands/ant/watch.md +1 -0
  234. package/.opencode/agents/aether-ambassador.md +1 -1
  235. package/.opencode/agents/aether-architect.md +133 -0
  236. package/.opencode/agents/aether-builder.md +3 -3
  237. package/.opencode/agents/aether-oracle.md +137 -0
  238. package/.opencode/agents/aether-queen.md +1 -1
  239. package/.opencode/agents/aether-route-setter.md +1 -1
  240. package/.opencode/agents/aether-scout.md +1 -1
  241. package/.opencode/agents/aether-surveyor-disciplines.md +6 -1
  242. package/.opencode/agents/aether-surveyor-nest.md +6 -1
  243. package/.opencode/agents/aether-surveyor-pathogens.md +6 -1
  244. package/.opencode/agents/aether-surveyor-provisions.md +6 -1
  245. package/.opencode/agents/aether-tracker.md +1 -1
  246. package/.opencode/agents/aether-watcher.md +1 -1
  247. package/.opencode/agents/aether-weaver.md +1 -1
  248. package/.opencode/commands/ant/archaeology.md +7 -14
  249. package/.opencode/commands/ant/build.md +54 -88
  250. package/.opencode/commands/ant/chaos.md +7 -24
  251. package/.opencode/commands/ant/colonize.md +8 -17
  252. package/.opencode/commands/ant/continue.md +595 -66
  253. package/.opencode/commands/ant/council.md +11 -22
  254. package/.opencode/commands/ant/data-clean.md +77 -0
  255. package/.opencode/commands/ant/dream.md +15 -17
  256. package/.opencode/commands/ant/entomb.md +28 -18
  257. package/.opencode/commands/ant/export-signals.md +54 -0
  258. package/.opencode/commands/ant/feedback.md +24 -5
  259. package/.opencode/commands/ant/flag.md +16 -4
  260. package/.opencode/commands/ant/flags.md +24 -10
  261. package/.opencode/commands/ant/focus.md +22 -5
  262. package/.opencode/commands/ant/help.md +41 -8
  263. package/.opencode/commands/ant/history.md +9 -0
  264. package/.opencode/commands/ant/import-signals.md +68 -0
  265. package/.opencode/commands/ant/init.md +365 -156
  266. package/.opencode/commands/ant/insert-phase.md +107 -0
  267. package/.opencode/commands/ant/interpret.md +16 -0
  268. package/.opencode/commands/ant/lay-eggs.md +184 -112
  269. package/.opencode/commands/ant/maturity.md +18 -2
  270. package/.opencode/commands/ant/memory-details.md +83 -0
  271. package/.opencode/commands/ant/migrate-state.md +12 -0
  272. package/.opencode/commands/ant/oracle.md +322 -67
  273. package/.opencode/commands/ant/organize.md +14 -12
  274. package/.opencode/commands/ant/patrol.md +626 -0
  275. package/.opencode/commands/ant/pause-colony.md +12 -29
  276. package/.opencode/commands/ant/phase.md +30 -40
  277. package/.opencode/commands/ant/pheromones.md +162 -0
  278. package/.opencode/commands/ant/plan.md +184 -56
  279. package/.opencode/commands/ant/preferences.md +71 -0
  280. package/.opencode/commands/ant/redirect.md +22 -5
  281. package/.opencode/commands/ant/resume-colony.md +38 -27
  282. package/.opencode/commands/ant/resume.md +71 -20
  283. package/.opencode/commands/ant/run.md +201 -0
  284. package/.opencode/commands/ant/seal.md +230 -25
  285. package/.opencode/commands/ant/skill-create.md +63 -0
  286. package/.opencode/commands/ant/status.md +124 -31
  287. package/.opencode/commands/ant/swarm.md +3 -345
  288. package/.opencode/commands/ant/tunnels.md +3 -9
  289. package/.opencode/commands/ant/update.md +63 -127
  290. package/.opencode/commands/ant/verify-castes.md +96 -42
  291. package/.opencode/commands/ant/watch.md +7 -0
  292. package/CHANGELOG.md +278 -1
  293. package/README.md +188 -340
  294. package/bin/cli.js +236 -429
  295. package/bin/generate-commands.js +186 -0
  296. package/bin/generate-commands.sh +128 -89
  297. package/bin/lib/spawn-logger.js +0 -15
  298. package/bin/lib/update-transaction.js +285 -35
  299. package/bin/npx-install.js +178 -0
  300. package/bin/validate-package.sh +85 -3
  301. package/package.json +7 -3
  302. package/.aether/CONTEXT.md +0 -160
  303. package/.aether/docs/QUEEN.md +0 -84
  304. package/.aether/exchange/colony-registry.xml +0 -11
  305. package/.aether/exchange/pheromones.xml +0 -87
  306. package/.aether/exchange/queen-wisdom.xml +0 -14
  307. package/.aether/model-profiles.yaml +0 -100
  308. package/.aether/utils/spawn-with-model.sh +0 -56
  309. package/bin/lib/model-profiles.js +0 -445
  310. package/bin/lib/model-verify.js +0 -288
  311. package/bin/lib/proxy-health.js +0 -253
  312. package/bin/lib/telemetry.js +0 -441
@@ -0,0 +1,337 @@
1
+ name: "ant:skill-create"
2
+ description: "Create a custom domain skill using Oracle mini-research and a guided wizard"
3
+ body_claude: |
4
+ You are the **Builder**. Create a custom domain skill by researching best practices and guiding the user through a wizard.
5
+
6
+ The user's input is: `$ARGUMENTS`
7
+
8
+ ## Instructions
9
+
10
+ ### Step 0: Parse Arguments
11
+
12
+ Extract the topic from `$ARGUMENTS`.
13
+
14
+ If `$ARGUMENTS` is empty, output:
15
+
16
+ ```
17
+ Skill Creator — Usage
18
+
19
+ /ant:skill-create "topic"
20
+
21
+ Examples:
22
+ /ant:skill-create "kubernetes"
23
+ /ant:skill-create "fastapi"
24
+ /ant:skill-create "terraform"
25
+
26
+ This will research the topic, ask a few questions, and generate
27
+ a custom SKILL.md in ~/.aether/skills/domain/
28
+ ```
29
+
30
+ Stop here.
31
+
32
+ Set `TOPIC` to the value of `$ARGUMENTS` (strip surrounding quotes).
33
+ Derive `SKILL_NAME` by lowercasing `TOPIC`, replacing spaces with hyphens, and removing any non-alphanumeric/hyphen characters.
34
+
35
+ Proceed to Step 1.
36
+
37
+ ---
38
+
39
+ ### Step 1: Oracle Mini-Research (5 iterations)
40
+
41
+ Run a focused mini-research session on the topic. This is a self-contained research cycle -- it does not require an existing Oracle session.
42
+
43
+ **1a. Web search for best practices**
44
+
45
+ Use WebSearch to search for:
46
+ - `"$TOPIC best practices 2025"`
47
+ - `"$TOPIC common mistakes to avoid"`
48
+ - `"$TOPIC project structure conventions"`
49
+
50
+ Collect the top findings from each search (titles, key points, URLs).
51
+
52
+ **1b. Codebase scan for existing usage**
53
+
54
+ Use Grep and Glob to scan the current repository for patterns related to the topic:
55
+ - Search for imports, config files, or dependencies matching `TOPIC`
56
+ - Note any existing conventions or patterns in the codebase
57
+
58
+ **1c. Compile findings into a research summary**
59
+
60
+ After 5 iterations of searching and reading (web search results, codebase patterns), compile a structured summary:
61
+
62
+ ```
63
+ Research Summary: $TOPIC
64
+
65
+ Key Best Practices:
66
+ 1. ...
67
+ 2. ...
68
+ 3. ...
69
+
70
+ Common Pitfalls:
71
+ 1. ...
72
+ 2. ...
73
+
74
+ Project Structure Conventions:
75
+ - ...
76
+
77
+ Codebase Observations:
78
+ - (what was found in the current repo, if anything)
79
+
80
+ Sources:
81
+ - ...
82
+ ```
83
+
84
+ Display this summary to the user before proceeding.
85
+
86
+ ---
87
+
88
+ ### Step 2: Wizard Questions
89
+
90
+ Use AskUserQuestion to guide the user through skill customization. Ask each question one at a time.
91
+
92
+ **Question 1: Focus Area**
93
+
94
+ Based on the Oracle research findings, identify 2-4 distinct aspects of the topic. Present them as options:
95
+
96
+ ```
97
+ What aspect of $TOPIC should this skill focus on?
98
+ ```
99
+
100
+ Options (dynamically generated from research, for example):
101
+ 1. **Core patterns and architecture** -- Fundamental design patterns and project structure
102
+ 2. **Performance and optimization** -- Speed, caching, resource management
103
+ 3. **Testing and quality** -- Test strategies, coverage, CI/CD integration
104
+ 4. **Comprehensive guide** -- Cover all major aspects in a single skill
105
+
106
+ (Adapt the options based on what the research actually found. Always include a "comprehensive" option as the last choice.)
107
+
108
+ **Question 2: Experience Level**
109
+
110
+ ```
111
+ What experience level should this skill target?
112
+ ```
113
+
114
+ Options:
115
+ 1. **Beginner** -- Explain fundamentals, include examples, avoid advanced patterns
116
+ 2. **Intermediate** -- Assume basics, focus on best practices and common patterns
117
+ 3. **Advanced** -- Expert-level patterns, performance tuning, edge cases
118
+
119
+ **Question 3: Custom Rules or Constraints**
120
+
121
+ ```
122
+ Any specific rules or constraints to include? (e.g., "always use TypeScript", "prefer composition over inheritance", "no classes")
123
+ ```
124
+
125
+ Options:
126
+ 1. **No specific rules** -- Use standard best practices from the research
127
+ 2. **Yes, I have rules** -- I want to add custom constraints
128
+
129
+ If the user selects option 2, ask a follow-up AskUserQuestion with free text:
130
+
131
+ ```
132
+ Enter your rules or constraints (free text):
133
+ ```
134
+
135
+ Capture the user's custom rules for inclusion in the skill.
136
+
137
+ ---
138
+
139
+ ### Step 3: Generate SKILL.md
140
+
141
+ Based on the research findings and wizard answers, generate a complete skill file.
142
+
143
+ **3a. Determine frontmatter values**
144
+
145
+ - `name`: Use `SKILL_NAME` (the sanitized, lowercased topic)
146
+ - `description`: Generate a concise description like "Use when the project uses $TOPIC" or "Best practices for $TOPIC development"
147
+ - `type: domain`
148
+ - `domains`: Infer 2-4 relevant domain tags from the research (e.g., `[frontend, components]` for React, `[backend, api]` for FastAPI)
149
+ - `agent_roles: [builder]`
150
+ - `detect_files`: Infer file patterns that indicate this technology is in use (e.g., `["*.py", "requirements.txt"]` for Python frameworks, `["Dockerfile", "docker-compose.yml"]` for Docker)
151
+ - `detect_packages`: Infer package names that indicate this technology (e.g., `["fastapi"]`, `["terraform"]`)
152
+ - `priority: normal`
153
+ - `version: "1.0"`
154
+
155
+ **3b. Generate the body content**
156
+
157
+ Write a comprehensive best-practices guide structured as follows:
158
+
159
+ ```markdown
160
+ # $TOPIC Best Practices
161
+
162
+ ## [Aspect heading based on focus area]
163
+
164
+ [2-3 paragraphs of actionable guidance drawn from Oracle research]
165
+ [Adapt depth and complexity to the selected experience level]
166
+
167
+ ## [Next aspect heading]
168
+
169
+ [More guidance...]
170
+
171
+ ## Common Pitfalls
172
+
173
+ [List of things to avoid, drawn from research]
174
+
175
+ ## [Additional sections as appropriate for the topic]
176
+
177
+ [Custom rules or constraints from wizard Question 3, if any, integrated naturally into the guide]
178
+ ```
179
+
180
+ Guidelines for body content:
181
+ - Write in the same style as existing skills (direct, actionable, no fluff)
182
+ - Reference the React SKILL.md at `.aether/skills/domain/react/SKILL.md` for tone and structure
183
+ - Beginner level: include more explanation and examples
184
+ - Intermediate level: focus on patterns and best practices
185
+ - Advanced level: include edge cases, performance tuning, and expert techniques
186
+ - If the user provided custom rules, weave them into the relevant sections rather than listing them separately
187
+ - Keep total body length between 30-80 lines (matching existing skills)
188
+
189
+ **3c. Assemble the full SKILL.md content**
190
+
191
+ Combine the frontmatter and body into a single file:
192
+
193
+ ```markdown
194
+ ---
195
+ name: {SKILL_NAME}
196
+ description: {description}
197
+ type: domain
198
+ domains: [{domain1}, {domain2}]
199
+ agent_roles: [builder]
200
+ detect_files: ["{pattern1}", "{pattern2}"]
201
+ detect_packages: ["{package1}"]
202
+ priority: normal
203
+ version: "1.0"
204
+ ---
205
+
206
+ {body content}
207
+ ```
208
+
209
+ ---
210
+
211
+ ### Step 4: Write and Verify
212
+
213
+ **4a. Create the skill directory and write the file**
214
+
215
+ Run using the Bash tool with description "Creating skill directory...":
216
+
217
+ ```bash
218
+ mkdir -p ~/.aether/skills/domain/{SKILL_NAME}
219
+ ```
220
+
221
+ Use the Write tool to create `~/.aether/skills/domain/{SKILL_NAME}/SKILL.md` with the assembled content.
222
+
223
+ **4b. Verify frontmatter parses correctly**
224
+
225
+ Run using the Bash tool with description "Verifying skill frontmatter...":
226
+
227
+ ```bash
228
+ bash .aether/aether-utils.sh skill-parse-frontmatter ~/.aether/skills/domain/{SKILL_NAME}/SKILL.md
229
+ ```
230
+
231
+ Check the output. If the result contains `"ok": true` (or the parsed JSON shows the correct name and type), the skill is valid. If parsing fails, fix the frontmatter and retry once.
232
+
233
+ **4c. Rebuild skill cache**
234
+
235
+ Run using the Bash tool with description "Rebuilding skill cache...":
236
+
237
+ ```bash
238
+ bash .aether/aether-utils.sh skill-cache-rebuild
239
+ ```
240
+
241
+ **4d. Show the result**
242
+
243
+ Display the generated skill to the user:
244
+
245
+ ```
246
+ Skill Created: {SKILL_NAME}
247
+
248
+ Location: ~/.aether/skills/domain/{SKILL_NAME}/SKILL.md
249
+ Type: domain
250
+ Domains: {domains list}
251
+ Detects: {detect_files and detect_packages}
252
+ Level: {experience level}
253
+ ```
254
+
255
+ Then show the full content of the SKILL.md file.
256
+
257
+ **4e. Offer adjustments**
258
+
259
+ Use AskUserQuestion to ask:
260
+
261
+ ```
262
+ Happy with this skill, or want to adjust anything?
263
+ ```
264
+
265
+ Options:
266
+ 1. **Looks good** -- Keep it as-is
267
+ 2. **Adjust content** -- I want to change some of the guidance
268
+ 3. **Regenerate** -- Start over with different options
269
+
270
+ If the user selects option 2, ask what they want to change, make the edits, re-write the file, and re-run `skill-parse-frontmatter` and `skill-cache-rebuild`.
271
+
272
+ If the user selects option 3, go back to Step 2.
273
+
274
+ If the user selects option 1, output:
275
+
276
+ ```
277
+ Skill "{SKILL_NAME}" is ready. It will automatically activate in projects
278
+ that match its detection patterns (files: {detect_files}, packages: {detect_packages}).
279
+
280
+ You can also view all installed skills with: /ant:skill-list
281
+ ```
282
+
283
+ Stop here.
284
+
285
+ body_opencode: |
286
+ You are the **Builder**. Create a custom domain skill by researching best practices and guiding the user through a wizard.
287
+
288
+ ## Instructions
289
+
290
+ ### Step 0: Parse Arguments
291
+
292
+ If `$normalized_args` is empty:
293
+ ```
294
+ Usage: /ant:skill-create "<topic>"
295
+
296
+ Creates a custom domain skill using Oracle mini-research.
297
+
298
+ Examples:
299
+ /ant:skill-create "tailwind"
300
+ /ant:skill-create "react native"
301
+ /ant:skill-create "kubernetes"
302
+ ```
303
+ Stop here.
304
+
305
+ ### Step 1: Oracle Mini-Research
306
+
307
+ Launch a focused research session on the topic (5 iterations max):
308
+ 1. Web search for best practices, common patterns, and gotchas
309
+ 2. Codebase scan for existing usage of the technology
310
+ 3. Compile findings into structured notes
311
+
312
+ ### Step 2: Wizard Questions
313
+
314
+ Ask the user:
315
+ 1. What aspect to focus on? (provide 2-4 options based on findings)
316
+ 2. Experience level? (beginner / intermediate / advanced)
317
+ 3. Any specific rules or constraints? (free text)
318
+
319
+ ### Step 3: Generate SKILL.md
320
+
321
+ Create the skill file with proper frontmatter and body:
322
+ - name: derived from topic
323
+ - description: "Use when working with {topic}"
324
+ - type: domain
325
+ - domains: inferred from research
326
+ - agent_roles: [builder]
327
+ - detect_files / detect_packages: inferred from research
328
+ - Body: practical best-practices guide from research + wizard answers
329
+
330
+ ### Step 4: Write and Verify
331
+
332
+ 1. Write to `~/.aether/skills/domain/{name}/SKILL.md`
333
+ 2. Run: `bash .aether/aether-utils.sh skill-parse-frontmatter ~/.aether/skills/domain/{name}/SKILL.md`
334
+ 3. Run: `bash .aether/aether-utils.sh skill-cache-rebuild`
335
+ 4. Show the generated skill to the user
336
+ 5. Ask if they want to adjust anything
337
+
@@ -0,0 +1,364 @@
1
+ name: "ant:status"
2
+ description_claude: "📈🐜🏘️🐜📈 Show colony status at a glance"
3
+ description_opencode: "📈🐜🏘️🐜📈 Show colony status at a glance"
4
+ body: |
5
+ You are the **Queen**. Show colony status.
6
+
7
+ ## Instructions
8
+
9
+ ### Step 0: Version Check (Non-blocking)
10
+
11
+ {{TOOL_PREFIX "Checking colony version..."}} `bash .aether/aether-utils.sh version-check-cached 2>/dev/null || true`
12
+
13
+ If the command succeeds and the JSON result contains a non-empty string, display it as a one-line notice. Proceed regardless of outcome.
14
+
15
+ ### Step 1: Read State + Version Check
16
+
17
+ Read `.aether/data/COLONY_STATE.json`.
18
+
19
+ If file missing or `goal: null`:
20
+ ```
21
+ No colony initialized. Run /ant:init first.
22
+ ```
23
+ Stop here.
24
+
25
+ **Auto-upgrade old state:**
26
+ If `version` field is missing, "1.0", or "2.0":
27
+ 1. Preserve: `goal`, `state`, `current_phase`, `plan.phases` (keep phase structure)
28
+ 2. Write upgraded state:
29
+ ```json
30
+ {
31
+ "version": "3.0",
32
+ "goal": "<preserved>",
33
+ "state": "<preserved or 'READY'>",
34
+ "current_phase": <preserved or 0>,
35
+ "session_id": "migrated_<timestamp>",
36
+ "initialized_at": "<preserved or now>",
37
+ "build_started_at": null,
38
+ "plan": {
39
+ "generated_at": "<preserved or null>",
40
+ "confidence": null,
41
+ "phases": <preserved or []>
42
+ },
43
+ "memory": { "phase_learnings": [], "decisions": [], "instincts": [] },
44
+ "errors": { "records": [], "flagged_patterns": [] },
45
+ "events": ["<now>|state_upgraded|system|Auto-upgraded from v<old> to v3.0"]
46
+ }
47
+ ```
48
+ 3. Output: `State auto-upgraded to v3.0`
49
+ 4. Continue with command.
50
+
51
+ ### Step 1.5: Load State and Show Resumption Context
52
+
53
+ {{TOOL_PREFIX "Loading colony state..."}} `bash .aether/aether-utils.sh load-state`
54
+
55
+ If successful and goal is not null:
56
+ 1. Extract current_phase from state
57
+ 2. Get phase name from plan.phases[current_phase - 1].name (or "(unnamed)")
58
+ 3. Get last event timestamp from events array (last element)
59
+ 4. Display extended resumption context:
60
+ ```
61
+ 🔄 Resuming: Phase X - Name
62
+ Last activity: timestamp
63
+ ```
64
+
65
+ 5. Check for .aether/HANDOFF.md existence in the load-state output or via separate check
66
+ 6. If .aether/HANDOFF.md exists:
67
+ - Display: "Resuming from paused session"
68
+ - Read .aether/HANDOFF.md content for additional context
69
+ - Remove .aether/HANDOFF.md after displaying (cleanup)
70
+
71
+ {{TOOL_PREFIX "Releasing colony lock..."}} `bash .aether/aether-utils.sh unload-state` to release lock.
72
+
73
+ ### Step 2: Compute Summary
74
+
75
+ From state, extract:
76
+
77
+ ### Step 2.4: Survey Freshness (Advisory)
78
+
79
+ {{TOOL_PREFIX "Checking survey freshness..."}}
80
+ ```bash
81
+ survey_docs=$(ls -1 .aether/data/survey/*.md 2>/dev/null | wc -l | tr -d ' ')
82
+ survey_latest=$(ls -t .aether/data/survey/*.md 2>/dev/null | head -1)
83
+ if [[ -n "$survey_latest" ]]; then
84
+ now_epoch=$(date +%s)
85
+ modified_epoch=$(stat -f %m "$survey_latest" 2>/dev/null || stat -c %Y "$survey_latest" 2>/dev/null || echo 0)
86
+ survey_age_days=$(( (now_epoch - modified_epoch) / 86400 ))
87
+ else
88
+ survey_age_days=-1
89
+ fi
90
+ echo "survey_docs=$survey_docs"
91
+ echo "survey_age_days=$survey_age_days"
92
+ ```
93
+
94
+ Interpretation:
95
+ - If `survey_docs == 0`: `survey_status = "missing"`
96
+ - If `survey_age_days > 14`: `survey_status = "stale"`
97
+ - Otherwise: `survey_status = "fresh"`
98
+
99
+ ### Step 2.5: Gather Dream Information
100
+
101
+ {{TOOL_PREFIX "Counting dream entries..."}} `ls -1 .aether/dreams/*.md 2>/dev/null | wc -l`
102
+
103
+ Capture:
104
+ - Dream count: number of .md files in .aether/dreams/
105
+ - Latest dream: most recent file by name (files are timestamped: YYYY-MM-DD-HHMM.md)
106
+
107
+ To get latest dream timestamp, {{TOOL_PREFIX "Finding latest dream..."}}
108
+ ```bash
109
+ ls -1 .aether/dreams/*.md 2>/dev/null | sort | tail -1 | sed 's/.*\/\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\)-\([0-9]\{4\}\).*/\1 \2/'
110
+ ```
111
+
112
+ Format the timestamp as: YYYY-MM-DD HH:MM
113
+
114
+ {{#claude}}
115
+ ### Step 2.5.5: Colony Depth
116
+
117
+ Run using the Bash tool with description "Reading colony depth...":
118
+ ```bash
119
+ depth_result=$(bash .aether/aether-utils.sh colony-depth get 2>/dev/null || echo '{"ok":true,"result":{"depth":"standard","source":"default"}}')
120
+ colony_depth=$(echo "$depth_result" | jq -r '.result.depth // "standard"')
121
+ depth_source=$(echo "$depth_result" | jq -r '.result.source // "default"')
122
+ echo "colony_depth=$colony_depth"
123
+ echo "depth_source=$depth_source"
124
+ ```
125
+
126
+ Store `colony_depth` and `depth_source` for the dashboard display.
127
+
128
+ Depth label mapping:
129
+ - light -> "Builder only (fastest)"
130
+ - standard -> "Builder + Scout (balanced)"
131
+ - deep -> "Builder + Scout + Oracle (thorough)"
132
+ - full -> "All agents (most thorough)"
133
+
134
+ From state, extract:
135
+ {{/claude}}
136
+
137
+ **Phase info:**
138
+ - Current phase number: `current_phase`
139
+ - Total phases: `plan.phases.length`
140
+ - Phase name: `plan.phases[current_phase - 1].name` (if exists)
141
+
142
+ **Task progress:**
143
+ - If phases exist, count tasks in current phase
144
+ - Completed: tasks with `status: "completed"`
145
+ - Total: all tasks in current phase
146
+
147
+ **Constraints:**
148
+ Read `.aether/data/constraints.json` if exists:
149
+ - Focus count: `focus.length`
150
+ - Constraints count: `constraints.length`
151
+
152
+ **Flags:**
153
+ {{TOOL_PREFIX "Checking for blockers..."}} `bash .aether/aether-utils.sh flag-check-blockers`
154
+ Extract:
155
+ - Blockers count (critical, block advancement)
156
+ - Issues count (high, warnings)
157
+ - Notes count (low, informational)
158
+
159
+ **Escalation state:**
160
+ Count escalated flags by checking for blocker flags with source "escalation":
161
+
162
+ {{TOOL_PREFIX "Checking escalation state..."}}
163
+ ```bash
164
+ escalated_count=$(bash .aether/aether-utils.sh flag-list --type blocker 2>/dev/null | jq '[.result.flags[] | select(.source == "escalation")] | length' 2>/dev/null || echo "0")
165
+ echo "escalated_count=$escalated_count"
166
+ ```
167
+
168
+ **Instincts:**
169
+ From `memory.instincts`:
170
+ - Total count: `instincts.length`
171
+ - High confidence (≥0.7): count where confidence >= 0.7
172
+ - Top 3: sorted by confidence descending
173
+
174
+ **Colony state:**
175
+ - `state` field (IDLE, READY, EXECUTING, PLANNING)
176
+
177
+ **Milestone:**
178
+ - `milestone` field (First Mound, Open Chambers, Brood Stable, Ventilated Nest, Sealed Chambers, Crowned Anthill)
179
+ - `milestone_updated_at` field (timestamp of last milestone change)
180
+
181
+ ### Step 2.6: Detect Milestone
182
+
183
+ {{TOOL_PREFIX "Detecting colony milestone..."}} `bash .aether/aether-utils.sh milestone-detect`
184
+
185
+ Extract from JSON result:
186
+ - `milestone`: Current milestone name
187
+ - `version`: Computed version string
188
+ - `phases_completed`: Number of completed phases
189
+ - `total_phases`: Total phases in plan
190
+
191
+ ### Step 2.8: Load Memory Health Metrics
192
+
193
+ {{TOOL_PREFIX "Loading memory health metrics..."}}
194
+ ```bash
195
+ bash .aether/aether-utils.sh memory-metrics
196
+ ```
197
+
198
+ Extract from JSON result:
199
+ - wisdom.total
200
+ - pending.total
201
+ - recent_failures.count
202
+ - last_activity.queen_md_updated
203
+ - last_activity.learning_captured
204
+
205
+ Format timestamps for display (YYYY-MM-DD HH:MM).
206
+
207
+ ### Step 2.7: Generate Progress Bars
208
+
209
+ Calculate progress metrics and generate visual bars.
210
+
211
+ {{TOOL_PREFIX "Computing phase progress..."}}
212
+ ```bash
213
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
214
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
215
+
216
+ # Calculate task progress in current phase
217
+ if [[ "$current_phase" -gt 0 && "$current_phase" -le "$total_phases" ]]; then
218
+ phase_idx=$((current_phase - 1))
219
+ tasks_completed=$(jq -r ".plan.phases[$phase_idx].tasks // [] | map(select(.status == \"completed\")) | length" .aether/data/COLONY_STATE.json)
220
+ tasks_total=$(jq -r ".plan.phases[$phase_idx].tasks // [] | length" .aether/data/COLONY_STATE.json)
221
+ phase_name=$(jq -r ".plan.phases[$phase_idx].name // \"Unnamed\"" .aether/data/COLONY_STATE.json)
222
+ else
223
+ tasks_completed=0
224
+ tasks_total=0
225
+ phase_name="No plan created"
226
+ fi
227
+
228
+ # Generate progress bars
229
+ phase_bar=$(bash .aether/aether-utils.sh generate-progress-bar "$current_phase" "$total_phases" 20)
230
+ task_bar=$(bash .aether/aether-utils.sh generate-progress-bar "$tasks_completed" "$tasks_total" 20)
231
+
232
+ echo "phase_bar=$phase_bar"
233
+ echo "task_bar=$task_bar"
234
+ echo "phase_name=$phase_name"
235
+ ```
236
+
237
+ Store `phase_bar`, `task_bar`, and `phase_name` values for display in Step 3.
238
+
239
+ ### Step 3: Display
240
+
241
+ Output format:
242
+
243
+ ```
244
+ .-.
245
+ (o o) AETHER COLONY
246
+ | O | Status Report
247
+ `-`
248
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
249
+
250
+ 👑 Goal: <goal (truncated to 60 chars)>
251
+
252
+ 📍 Progress
253
+ Phase: [████████░░░░░░░░░░░░] <N>/<M> phases
254
+ Tasks: [████████████████░░░░] <completed>/<total> tasks in Phase <N>
255
+
256
+ 🎯 Focus: <focus_count> areas | 🚫 Avoid: <constraints_count> patterns
257
+ 🧠 Instincts: <total> learned (<high_confidence> strong)
258
+ 🚩 Flags: <blockers> blockers | <issues> issues | <notes> notes
259
+ {if escalated_count > 0:}
260
+ ⚠️ Escalated: {escalated_count} task(s) awaiting your decision
261
+ {end if}
262
+ 🏆 Milestone: <milestone> (<version>)
263
+ {{#claude}}
264
+ 🔬 Depth: {colony_depth} — {label}{if depth_source == "default": " (default)"}
265
+ {{/claude}}
266
+ 💭 Dreams: <dream_count> recorded (latest: <latest_dream>)
267
+ 🗺️ Survey: <survey_docs> docs (<survey_age_days>d old, <fresh|stale|missing>)
268
+
269
+ 📚 Memory Health
270
+ ┌─────────────────┬────────┬─────────────────────────────┐
271
+ │ Metric │ Count │ Last Updated │
272
+ ├─────────────────┼────────┼─────────────────────────────┤
273
+ │ Wisdom Entries │ {wisdom_total:>6} │ {queen_updated} │
274
+ │ Pending Promos │ {pending_total:>6} │ {learning_updated} │
275
+ │ Recent Failures │ {failures_count:>6} │ {last_failure} │
276
+ └─────────────────┴────────┴─────────────────────────────┘
277
+
278
+ State: <state>
279
+ ```
280
+
281
+ Use the `phase_bar` and `task_bar` values computed in Step 2.7 for the actual bar characters and counts.
282
+
283
+ **If instincts exist, also show top 3:**
284
+ ```
285
+ 🧠 Colony Instincts:
286
+ [0.9] 🐜 testing: Always run tests before completion
287
+ [0.8] 🐜 architecture: Use composition over inheritance
288
+ [0.7] 🐜 debugging: Trace to root cause first
289
+ ```
290
+
291
+ **Dream display:**
292
+ - If no dreams exist: `💭 Dreams: None recorded`
293
+ - If dreams exist: `💭 Dreams: <count> recorded (latest: YYYY-MM-DD HH:MM)`
294
+
295
+ **Memory Health display:**
296
+ - If memory-metrics returns empty/null values, show:
297
+ ```
298
+ 📚 Memory Health
299
+ No memory data available. Colony wisdom will accumulate as you complete phases.
300
+ ```
301
+
302
+ {{#claude}}
303
+ **Data Safety:**
304
+ After the Memory Health table, run:
305
+ ```bash
306
+ bash .aether/aether-utils.sh data-safety-stats
307
+ ```
308
+
309
+ If the result contains non-zero counts, display:
310
+ ```
311
+ 🛡️ Data Safety
312
+ Stale locks cleaned: {stale_locks_cleaned}
313
+ JSON validation rejects: {json_validation_rejects}
314
+ ```
315
+
316
+ If all counts are 0 or the subcommand returns no data, display:
317
+ ```
318
+ 🛡️ Data Safety: No issues detected
319
+ ```
320
+
321
+ **Pheromone Summary:**
322
+ After the Data Safety section, run:
323
+ ```bash
324
+ bash .aether/aether-utils.sh pheromone-count
325
+ ```
326
+
327
+ Display:
328
+ ```
329
+ 🎯 Active Pheromones
330
+ ┌────────────┬───────┬──────────────────────────────────┐
331
+ │ Type │ Count │ Strongest Signal │
332
+ ├────────────┼───────┼──────────────────────────────────┤
333
+ │ 🎯 FOCUS │ {n} │ {strongest_focus or "none"} │
334
+ │ 🚫 REDIRECT│ {n} │ {strongest_redirect or "none"} │
335
+ │ 💬 FEEDBACK│ {n} │ {strongest_feedback or "none"} │
336
+ └────────────┴───────┴──────────────────────────────────┘
337
+
338
+ Run /ant:pheromones for full details
339
+ ```
340
+
341
+ If all counts are 0:
342
+ ```
343
+ 🎯 Active Pheromones: None
344
+ Use /ant:focus, /ant:redirect, or /ant:feedback to inject signals
345
+ ```
346
+ {{/claude}}
347
+
348
+ **Edge cases:**
349
+ - No phases yet: show `[░░░░░░░░░░░░░░░░░░░░] 0/0 phases`
350
+ - No tasks in phase: show `[░░░░░░░░░░░░░░░░░░░░] 0/0 tasks in Phase 0`
351
+ - No constraints file: "Constraints: 0 focus, 0 avoid"
352
+
353
+ **At the end of the output, generate the Next Up block:**
354
+
355
+ {{TOOL_PREFIX "Generating next steps..."}}
356
+ ```bash
357
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
358
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
359
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
360
+
361
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
362
+ ```
363
+
364
+ This auto-generates state-based recommendations (IDLE → init, READY → build, EXECUTING → continue, PLANNING → plan).