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
@@ -0,0 +1,437 @@
1
+ <!-- Generated from .aether/commands/council.yaml - DO NOT EDIT DIRECTLY -->
2
+ ---
3
+ name: ant:council
4
+ description: "📜🐜🏛️🐜📜 Convene council for intent clarification via multi-choice questions"
5
+ ---
6
+
7
+ ### Step -1: Normalize Arguments
8
+
9
+ Run: `normalized_args=$(bash .aether/aether-utils.sh normalize-args "$@")`
10
+
11
+ This ensures arguments work correctly in both Claude Code and OpenCode. Use `$normalized_args` throughout this command.
12
+
13
+ You are the **Queen Ant Colony**. Convene the council to clarify user intent and inject guidance as pheromones.
14
+
15
+ ## Instructions
16
+
17
+ Parse `$normalized_args`:
18
+ - If starts with `--deliberate`: set `deliberate_mode = true`, extract proposal text after `--deliberate`
19
+ - If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
20
+ - Otherwise: set `visual_mode = true`
21
+
22
+ **If `deliberate_mode` is true:** Skip to [Deliberation Mode](#deliberation-mode) and stop after it.
23
+
24
+ ---
25
+
26
+ ## Deliberation Mode
27
+
28
+ When `--deliberate "<proposal>"` is passed, run a structured Advocate/Challenger/Sage deliberation.
29
+
30
+ ### Step D1: Check Budget
31
+
32
+ Run using the Bash tool with description "Checking deliberation budget...":
33
+ ```bash
34
+ bash .aether/aether-utils.sh council-budget-check
35
+ ```
36
+
37
+ Parse result. If `allowed` is `false`:
38
+ ```
39
+ 📜🐜🏛️🐜📜 COUNCIL — BUDGET EXHAUSTED
40
+
41
+ Spawn budget is fully allocated. Complete or close existing deliberations before starting new ones.
42
+ Run /ant:council to review existing deliberations.
43
+ ```
44
+ Stop here.
45
+
46
+ ### Step D2: Open Deliberation
47
+
48
+ Run using the Bash tool with description "Opening deliberation...":
49
+ ```bash
50
+ bash .aether/aether-utils.sh council-deliberate --proposal "<proposal>"
51
+ ```
52
+
53
+ Capture `deliberation_id` from `result.id`.
54
+
55
+ Display:
56
+ ```
57
+ 📜🐜🏛️🐜📜 COUNCIL DELIBERATION OPENED
58
+
59
+ Proposal: "<proposal>"
60
+ ID: {deliberation_id}
61
+ Budget: {budget} spawns available
62
+
63
+ Convening Advocate, Challenger, and Sage...
64
+ ```
65
+
66
+ ### Step D3: Spawn Advocate Scout
67
+
68
+ Spawn an Advocate scout to argue **in favor** of the proposal.
69
+
70
+
71
+
72
+ Record the argument:
73
+ ```bash
74
+ bash .aether/aether-utils.sh council-advocate \
75
+ --deliberation-id "<deliberation_id>" \
76
+ --argument "<advocate_argument>"
77
+ ```
78
+
79
+ Display:
80
+ ```
81
+ ⚖️ ADVOCATE:
82
+ {advocate_argument}
83
+ ```
84
+
85
+ ### Step D4: Spawn Challenger Scout
86
+
87
+ Spawn a Challenger scout to argue **against** the proposal.
88
+
89
+
90
+
91
+ Record the argument:
92
+ ```bash
93
+ bash .aether/aether-utils.sh council-challenger \
94
+ --deliberation-id "<deliberation_id>" \
95
+ --argument "<challenger_argument>"
96
+ ```
97
+
98
+ Display:
99
+ ```
100
+ ⚔️ CHALLENGER:
101
+ {challenger_argument}
102
+ ```
103
+
104
+ ### Step D5: Spawn Sage Scout
105
+
106
+ Spawn a Sage scout to synthesize both positions and provide a recommendation.
107
+
108
+
109
+
110
+ Record the sage synthesis:
111
+ ```bash
112
+ bash .aether/aether-utils.sh council-sage \
113
+ --deliberation-id "<deliberation_id>" \
114
+ --synthesis "<synthesis>" \
115
+ --recommendation "<recommendation>"
116
+ ```
117
+
118
+ ### Step D6: Display Result
119
+
120
+ ```
121
+ 📜🐜🏛️🐜📜 COUNCIL DELIBERATION COMPLETE
122
+
123
+ Proposal: "<proposal>"
124
+
125
+ ⚖️ Advocate:
126
+ {advocate_argument}
127
+
128
+ ⚔️ Challenger:
129
+ {challenger_argument}
130
+
131
+ 🧙 Sage Synthesis:
132
+ {synthesis}
133
+
134
+ Recommendation: {recommendation}
135
+ ```
136
+
137
+ If recommendation is `adopt` or `adopt-with-conditions`:
138
+ ```
139
+ ✅ Council recommends proceeding.
140
+ Run /ant:focus "<proposal summary>" to inject guidance for the colony.
141
+ ```
142
+
143
+ If recommendation is `reject`:
144
+ ```
145
+ ❌ Council recommends against this proposal.
146
+ Run /ant:redirect "<proposal summary>" if you want to make this a hard constraint.
147
+ ```
148
+
149
+ If recommendation is `defer`:
150
+ ```
151
+ ⏸️ Council recommends deferring this decision.
152
+ Return when more context is available.
153
+ ```
154
+
155
+ ---
156
+
157
+
158
+
159
+ ### Step 1: Read Current State
160
+
161
+ Read `.aether/data/COLONY_STATE.json`.
162
+
163
+ If file doesn't exist or `goal` is null:
164
+ ```
165
+ 📜🐜🏛️🐜📜 COUNCIL
166
+
167
+ No colony initialized. Run /ant:init first.
168
+ ```
169
+ Stop here.
170
+
171
+ If `milestone` == `"Crowned Anthill"`:
172
+ ```
173
+ This colony has been sealed. Start a new colony with /ant:init "new goal".
174
+ ```
175
+ Stop here.
176
+
177
+ Capture the current state for context:
178
+ - `prior_state` = state field value (READY, EXECUTING, PLANNING, etc.)
179
+ - `current_phase` = current_phase field value
180
+ - `goal` = goal field value
181
+
182
+ ### Step 2: Display Council Header
183
+
184
+
185
+
186
+ ```
187
+ 📜🐜🏛️🐜📜 ═══════════════════════════════════════════════
188
+ A N T C O U N C I L
189
+ ═══════════════════════════════════════════════ 📜🐜🏛️🐜📜
190
+
191
+
192
+ 👑 Queen convenes the council for guidance
193
+
194
+ Colony Goal: "{goal}"
195
+ Current State: {prior_state}
196
+ Phase: {current_phase}
197
+ ```
198
+
199
+ If `prior_state` is `EXECUTING`:
200
+ ```
201
+ ⚡ Note: Build in progress. New guidance will apply to future work.
202
+ Current workers continue with existing constraints.
203
+ ```
204
+
205
+ ### Step 3: Present Category Menu
206
+
207
+ Use the **AskUserQuestion** tool to ask:
208
+
209
+ ```
210
+ question: "What would you like to clarify with the council?"
211
+ header: "Topic"
212
+ options:
213
+ - label: "Project Direction"
214
+ description: "Clarify project type, architecture, or tech stack choices"
215
+ - label: "Quality Priorities"
216
+ description: "Define tradeoffs: speed vs robustness vs simplicity"
217
+ - label: "Constraints & Boundaries"
218
+ description: "Set rules about what to avoid or require"
219
+ - label: "Custom Topic"
220
+ description: "Describe something specific you want to discuss"
221
+ multiSelect: false
222
+ ```
223
+
224
+ Wait for user response.
225
+
226
+ ### Step 4: Drill Down Based on Selection
227
+
228
+ Based on the user's selection, ask follow-up questions:
229
+
230
+ **If "Project Direction":**
231
+ ```
232
+ question: "What aspect of project direction needs clarification?"
233
+ header: "Direction"
234
+ options:
235
+ - label: "Architecture Pattern"
236
+ description: "Monolith vs microservices, MVC vs functional, etc."
237
+ - label: "Tech Stack"
238
+ description: "Framework, database, or library choices"
239
+ - label: "Code Style"
240
+ description: "Naming conventions, file organization, patterns"
241
+ - label: "Testing Approach"
242
+ description: "TDD, integration-first, coverage requirements"
243
+ multiSelect: true
244
+ ```
245
+
246
+ **If "Quality Priorities":**
247
+ ```
248
+ question: "What's most important for this project?"
249
+ header: "Priority"
250
+ options:
251
+ - label: "Speed of Development"
252
+ description: "Get it working fast, iterate later"
253
+ - label: "Robustness"
254
+ description: "Handle edge cases, thorough error handling"
255
+ - label: "Simplicity"
256
+ description: "Minimal code, easy to understand and maintain"
257
+ - label: "Performance"
258
+ description: "Optimize for speed and efficiency"
259
+ multiSelect: true
260
+ ```
261
+
262
+ **If "Constraints & Boundaries":**
263
+ ```
264
+ question: "What constraints should the colony follow?"
265
+ header: "Constraints"
266
+ options:
267
+ - label: "Security Requirements"
268
+ description: "Auth patterns, data handling, secrets management"
269
+ - label: "Compatibility"
270
+ description: "Browser support, Node version, API compatibility"
271
+ - label: "Dependencies"
272
+ description: "Prefer/avoid certain libraries or frameworks"
273
+ - label: "Patterns to Avoid"
274
+ description: "Anti-patterns, deprecated approaches"
275
+ multiSelect: true
276
+ ```
277
+
278
+ **If "Custom Topic":**
279
+ ```
280
+ question: "Describe what you want to clarify:"
281
+ header: "Custom"
282
+ options:
283
+ - label: "Type your topic below"
284
+ description: "Use the 'Other' option to enter your specific topic"
285
+ multiSelect: false
286
+ ```
287
+
288
+ Wait for user response. Based on answers, ask 1-2 more specific follow-up questions to get actionable guidance.
289
+
290
+ ### Step 5: Translate Answers to Pheromones
291
+
292
+ Based on all gathered answers, determine which pheromones to inject:
293
+
294
+ **FOCUS signals** (areas to emphasize):
295
+ - Architecture choices → FOCUS on that pattern
296
+ - Quality priorities → FOCUS on that approach
297
+ - Specific requirements → FOCUS on those areas
298
+
299
+ **REDIRECT signals** (patterns to avoid):
300
+ - Patterns to avoid → REDIRECT away
301
+ - Incompatible approaches → REDIRECT away
302
+ - Security concerns → REDIRECT away from risky patterns
303
+
304
+ **FEEDBACK signals** (guidance to remember):
305
+ - Style preferences → FEEDBACK as instinct
306
+ - General guidance → FEEDBACK for colony memory
307
+
308
+ ### Step 6: Inject Pheromones
309
+
310
+ Read `.aether/data/constraints.json`. Create if doesn't exist:
311
+ ```json
312
+ {"version": "1.0", "focus": [], "constraints": []}
313
+ ```
314
+
315
+ **For each FOCUS area identified:**
316
+ - Check for duplicates (case-insensitive match in existing focus array)
317
+ - If not duplicate, append to `focus` array
318
+ - Keep max 5 entries (remove oldest if exceeded)
319
+
320
+ **For each REDIRECT pattern identified:**
321
+ - Generate ID: `c_<unix_timestamp_ms>`
322
+ - Append to `constraints` array:
323
+ ```json
324
+ {
325
+ "id": "<generated_id>",
326
+ "type": "AVOID",
327
+ "content": "<pattern to avoid>",
328
+ "source": "council:redirect",
329
+ "created_at": "<ISO-8601 timestamp>"
330
+ }
331
+ ```
332
+ - Keep max 10 constraints (remove oldest if exceeded)
333
+
334
+ Write constraints.json.
335
+
336
+ **For each FEEDBACK identified:**
337
+ Read `.aether/data/COLONY_STATE.json`.
338
+
339
+ Append to `signals` array:
340
+ ```json
341
+ {
342
+ "id": "feedback_<timestamp_ms>",
343
+ "type": "FEEDBACK",
344
+ "content": "<feedback message>",
345
+ "priority": "low",
346
+ "source": "council:feedback",
347
+ "created_at": "<ISO-8601>",
348
+ "expires_at": "phase_end"
349
+ }
350
+ ```
351
+
352
+ Create instinct in `memory.instincts`:
353
+ ```json
354
+ {
355
+ "id": "instinct_<timestamp>",
356
+ "trigger": "<inferred from context>",
357
+ "action": "<the guidance>",
358
+ "confidence": 0.7,
359
+ "domain": "<inferred: testing|architecture|code-style|debugging|workflow>",
360
+ "source": "council:feedback",
361
+ "evidence": ["Council session guidance"],
362
+ "created_at": "<ISO-8601>",
363
+ "last_applied": null,
364
+ "applications": 0,
365
+ "successes": 0
366
+ }
367
+ ```
368
+
369
+ Keep max 30 instincts (remove lowest confidence if exceeded).
370
+
371
+ Write COLONY_STATE.json.
372
+
373
+ ### Step 7: Log Council Event
374
+
375
+ Append to COLONY_STATE.json `events` array:
376
+ ```
377
+ <ISO-8601>|council_session|council|Council convened: <brief summary of topics discussed>
378
+ ```
379
+
380
+ Keep max 100 events.
381
+
382
+ ### Step 8: Display Summary
383
+
384
+ ```
385
+ 📜🐜🏛️🐜📜 COUNCIL ADJOURNED
386
+
387
+ Pheromones Injected:
388
+ ```
389
+
390
+ For each FOCUS added:
391
+ ```
392
+ 🎯 FOCUS: "{content}"
393
+ ```
394
+
395
+ For each REDIRECT added:
396
+ ```
397
+ 🚫 REDIRECT: "{content}"
398
+ ```
399
+
400
+ For each FEEDBACK added:
401
+ ```
402
+ 💬 FEEDBACK: "{content}"
403
+ 🧠 Instinct: [{confidence}] {domain}: {action summary}
404
+ ```
405
+
406
+ If no pheromones were injected:
407
+ ```
408
+ (No new constraints needed based on discussion)
409
+ ```
410
+
411
+ Then:
412
+ ```
413
+ 🐜 Colony guidance updated. Resuming {prior_state} state.
414
+ ```
415
+
416
+ If `prior_state` was EXECUTING:
417
+ ```
418
+ ⚡ Active workers will complete with prior constraints.
419
+ New spawns will use updated guidance.
420
+
421
+ /ant:status 📊 View current progress
422
+ /ant:continue ⏭️ Check for phase completion
423
+ ```
424
+
425
+ If `prior_state` was READY:
426
+ ```
427
+ /ant:plan 📋 Generate or refine plan
428
+ /ant:build 🔨 Start building a phase
429
+ /ant:status 📊 View colony status
430
+ ```
431
+
432
+ If `prior_state` was PLANNING:
433
+ ```
434
+ Planning will continue with new guidance.
435
+ ```
436
+
437
+
@@ -0,0 +1,77 @@
1
+ <!-- Generated from .aether/commands/data-clean.yaml - DO NOT EDIT DIRECTLY -->
2
+ ---
3
+ name: ant:data-clean
4
+ description: "Scan and remove test artifacts from colony data files"
5
+ ---
6
+
7
+ ### Step -1: Normalize Arguments
8
+
9
+ Run: `normalized_args=$(bash .aether/aether-utils.sh normalize-args "$@")`
10
+
11
+ This ensures arguments work correctly in both Claude Code and OpenCode. Use `$normalized_args` throughout this command.
12
+
13
+ You are the **Queen Ant Colony**. Run the data cleaner to scan for and remove test/synthetic artifacts from colony data files.
14
+
15
+
16
+
17
+ > **Note:** Arguments are unused. This command always scans all data files.
18
+
19
+
20
+ ## Instructions
21
+
22
+ ### Step 1: Scan
23
+
24
+ Run using the Bash tool with description "Scanning colony data for test artifacts...":
25
+ ```bash
26
+ bash .aether/aether-utils.sh data-clean --dry-run
27
+ ```
28
+
29
+ Display the output to the user. This shows artifact counts per data file without modifying anything.
30
+
31
+ ### Step 2: Decision Gate
32
+
33
+ Parse the scan output for "Total artifacts: N".
34
+
35
+ **If total is 0:**
36
+ Display:
37
+ ```
38
+ Colony data is clean. No artifacts found.
39
+ ```
40
+ Skip to Step 5.
41
+
42
+ **If total is greater than 0:**
43
+ Ask the user:
44
+ ```
45
+ Found {N} test artifacts across colony data files.
46
+ Remove these artifacts? (yes/no)
47
+ ```
48
+
49
+ If user says no, display "No changes made." and skip to Step 5.
50
+
51
+ ### Step 3: Clean
52
+
53
+ If user confirmed, run using the Bash tool with description "Removing test artifacts...":
54
+ ```bash
55
+ bash .aether/aether-utils.sh data-clean --confirm
56
+ ```
57
+
58
+ ### Step 4: Summary
59
+
60
+ Display the cleanup results showing what was removed from each file.
61
+
62
+ For example:
63
+ ```
64
+ Data Clean Complete
65
+ ===================
66
+ Removed {total} artifacts:
67
+ - pheromones.json: {N} test signals
68
+ - QUEEN.md: {N} test entries
69
+ - learning-observations.json: {N} test observations
70
+ - midden.json: {N} test entries
71
+ - spawn-tree.txt: {N} test worker lines
72
+ - constraints.json: {N} test focus entries
73
+
74
+ Run /ant:status to verify colony state.
75
+ ```
76
+
77
+