@cluesmith/codev 3.0.0-rc.8 → 3.0.0-rc.9

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 (188) hide show
  1. package/bin/af.js +2 -2
  2. package/bin/afx.js +8 -0
  3. package/bin/consult.js +2 -1
  4. package/bin/team.js +2 -1
  5. package/dashboard/dist/assets/{index-nr0cXxtf.css → index-Bs8I7N2s.css} +1 -1
  6. package/dashboard/dist/assets/{index-CTrlY11L.js → index-DleIqu7L.js} +32 -32
  7. package/dashboard/dist/assets/index-DleIqu7L.js.map +1 -0
  8. package/dashboard/dist/index.html +2 -2
  9. package/dist/agent-farm/cli.js +12 -12
  10. package/dist/agent-farm/cli.js.map +1 -1
  11. package/dist/agent-farm/commands/architect.d.ts +4 -4
  12. package/dist/agent-farm/commands/architect.d.ts.map +1 -1
  13. package/dist/agent-farm/commands/architect.js +23 -12
  14. package/dist/agent-farm/commands/architect.js.map +1 -1
  15. package/dist/agent-farm/commands/attach.js +8 -8
  16. package/dist/agent-farm/commands/attach.js.map +1 -1
  17. package/dist/agent-farm/commands/cron.js +1 -1
  18. package/dist/agent-farm/commands/cron.js.map +1 -1
  19. package/dist/agent-farm/commands/db.d.ts +3 -3
  20. package/dist/agent-farm/commands/db.js +4 -4
  21. package/dist/agent-farm/commands/db.js.map +1 -1
  22. package/dist/agent-farm/commands/open.js +2 -2
  23. package/dist/agent-farm/commands/open.js.map +1 -1
  24. package/dist/agent-farm/commands/rename.js +1 -1
  25. package/dist/agent-farm/commands/rename.js.map +1 -1
  26. package/dist/agent-farm/commands/send.js +3 -3
  27. package/dist/agent-farm/commands/send.js.map +1 -1
  28. package/dist/agent-farm/commands/shell.js +3 -3
  29. package/dist/agent-farm/commands/shell.js.map +1 -1
  30. package/dist/agent-farm/commands/spawn-roles.d.ts +1 -1
  31. package/dist/agent-farm/commands/spawn-roles.js +1 -1
  32. package/dist/agent-farm/commands/spawn-worktree.d.ts +1 -1
  33. package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
  34. package/dist/agent-farm/commands/spawn-worktree.js +80 -13
  35. package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
  36. package/dist/agent-farm/commands/spawn.d.ts +6 -6
  37. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  38. package/dist/agent-farm/commands/spawn.js +42 -23
  39. package/dist/agent-farm/commands/spawn.js.map +1 -1
  40. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  41. package/dist/agent-farm/commands/status.js +43 -2
  42. package/dist/agent-farm/commands/status.js.map +1 -1
  43. package/dist/agent-farm/commands/team-update.d.ts +1 -1
  44. package/dist/agent-farm/commands/team-update.js +1 -1
  45. package/dist/agent-farm/commands/team.d.ts +1 -1
  46. package/dist/agent-farm/commands/team.js +1 -1
  47. package/dist/agent-farm/commands/tower-cloud.d.ts +2 -2
  48. package/dist/agent-farm/commands/tower-cloud.js +3 -3
  49. package/dist/agent-farm/commands/tower-cloud.js.map +1 -1
  50. package/dist/agent-farm/commands/tower.js +2 -2
  51. package/dist/agent-farm/commands/tower.js.map +1 -1
  52. package/dist/agent-farm/lib/cloud-config.js +2 -2
  53. package/dist/agent-farm/lib/cloud-config.js.map +1 -1
  54. package/dist/agent-farm/lib/tunnel-client.js +1 -1
  55. package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
  56. package/dist/agent-farm/servers/message-write.d.ts +24 -0
  57. package/dist/agent-farm/servers/message-write.d.ts.map +1 -0
  58. package/dist/agent-farm/servers/message-write.js +63 -0
  59. package/dist/agent-farm/servers/message-write.js.map +1 -0
  60. package/dist/agent-farm/servers/overview.d.ts +2 -0
  61. package/dist/agent-farm/servers/overview.d.ts.map +1 -1
  62. package/dist/agent-farm/servers/overview.js +2 -0
  63. package/dist/agent-farm/servers/overview.js.map +1 -1
  64. package/dist/agent-farm/servers/send-buffer.d.ts +4 -3
  65. package/dist/agent-farm/servers/send-buffer.d.ts.map +1 -1
  66. package/dist/agent-farm/servers/send-buffer.js +7 -4
  67. package/dist/agent-farm/servers/send-buffer.js.map +1 -1
  68. package/dist/agent-farm/servers/tower-cron-parser.js +1 -1
  69. package/dist/agent-farm/servers/tower-cron-parser.js.map +1 -1
  70. package/dist/agent-farm/servers/tower-cron.d.ts.map +1 -1
  71. package/dist/agent-farm/servers/tower-cron.js +4 -5
  72. package/dist/agent-farm/servers/tower-cron.js.map +1 -1
  73. package/dist/agent-farm/servers/tower-instances.js +3 -3
  74. package/dist/agent-farm/servers/tower-instances.js.map +1 -1
  75. package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
  76. package/dist/agent-farm/servers/tower-routes.js +9 -16
  77. package/dist/agent-farm/servers/tower-routes.js.map +1 -1
  78. package/dist/agent-farm/servers/tower-terminals.d.ts +2 -2
  79. package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
  80. package/dist/agent-farm/servers/tower-terminals.js +47 -18
  81. package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
  82. package/dist/agent-farm/servers/tower-tunnel.js +2 -2
  83. package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
  84. package/dist/agent-farm/servers/tower-utils.d.ts +9 -6
  85. package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
  86. package/dist/agent-farm/servers/tower-utils.js +12 -6
  87. package/dist/agent-farm/servers/tower-utils.js.map +1 -1
  88. package/dist/agent-farm/types.d.ts +9 -0
  89. package/dist/agent-farm/types.d.ts.map +1 -1
  90. package/dist/agent-farm/utils/config.d.ts +11 -0
  91. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  92. package/dist/agent-farm/utils/config.js +21 -0
  93. package/dist/agent-farm/utils/config.js.map +1 -1
  94. package/dist/agent-farm/utils/harness.d.ts +85 -0
  95. package/dist/agent-farm/utils/harness.d.ts.map +1 -0
  96. package/dist/agent-farm/utils/harness.js +212 -0
  97. package/dist/agent-farm/utils/harness.js.map +1 -0
  98. package/dist/cli.d.ts +1 -1
  99. package/dist/cli.d.ts.map +1 -1
  100. package/dist/cli.js +17 -3
  101. package/dist/cli.js.map +1 -1
  102. package/dist/commands/adopt.js +2 -2
  103. package/dist/commands/adopt.js.map +1 -1
  104. package/dist/commands/consult/index.d.ts +6 -2
  105. package/dist/commands/consult/index.d.ts.map +1 -1
  106. package/dist/commands/consult/index.js +114 -131
  107. package/dist/commands/consult/index.js.map +1 -1
  108. package/dist/commands/doctor.d.ts.map +1 -1
  109. package/dist/commands/doctor.js +54 -3
  110. package/dist/commands/doctor.js.map +1 -1
  111. package/dist/commands/init.js +1 -1
  112. package/dist/commands/init.js.map +1 -1
  113. package/dist/commands/porch/artifacts.d.ts +59 -0
  114. package/dist/commands/porch/artifacts.d.ts.map +1 -0
  115. package/dist/commands/porch/artifacts.js +358 -0
  116. package/dist/commands/porch/artifacts.js.map +1 -0
  117. package/dist/commands/porch/checks.d.ts +8 -1
  118. package/dist/commands/porch/checks.d.ts.map +1 -1
  119. package/dist/commands/porch/checks.js +98 -1
  120. package/dist/commands/porch/checks.js.map +1 -1
  121. package/dist/commands/porch/index.d.ts +8 -7
  122. package/dist/commands/porch/index.d.ts.map +1 -1
  123. package/dist/commands/porch/index.js +49 -45
  124. package/dist/commands/porch/index.js.map +1 -1
  125. package/dist/commands/porch/next.d.ts.map +1 -1
  126. package/dist/commands/porch/next.js +18 -46
  127. package/dist/commands/porch/next.js.map +1 -1
  128. package/dist/commands/porch/notify.d.ts +2 -2
  129. package/dist/commands/porch/notify.js +5 -5
  130. package/dist/commands/porch/notify.js.map +1 -1
  131. package/dist/commands/porch/prompts.d.ts +2 -1
  132. package/dist/commands/porch/prompts.d.ts.map +1 -1
  133. package/dist/commands/porch/prompts.js +19 -7
  134. package/dist/commands/porch/prompts.js.map +1 -1
  135. package/dist/commands/porch/state.d.ts +5 -2
  136. package/dist/commands/porch/state.d.ts.map +1 -1
  137. package/dist/commands/porch/state.js +38 -6
  138. package/dist/commands/porch/state.js.map +1 -1
  139. package/dist/lib/config.d.ts +14 -0
  140. package/dist/lib/config.d.ts.map +1 -1
  141. package/dist/lib/config.js +7 -0
  142. package/dist/lib/config.js.map +1 -1
  143. package/dist/lib/forge-contracts.d.ts +6 -0
  144. package/dist/lib/forge-contracts.d.ts.map +1 -1
  145. package/dist/lib/forge-contracts.js.map +1 -1
  146. package/dist/lib/team-github.d.ts +2 -0
  147. package/dist/lib/team-github.d.ts.map +1 -1
  148. package/dist/lib/team-github.js +4 -4
  149. package/dist/lib/team-github.js.map +1 -1
  150. package/dist/terminal/pty-manager.d.ts.map +1 -1
  151. package/dist/terminal/pty-manager.js +2 -0
  152. package/dist/terminal/pty-manager.js.map +1 -1
  153. package/package.json +2 -1
  154. package/scripts/forge/github/issue-list.sh +2 -2
  155. package/scripts/forge/github/pr-list.sh +2 -2
  156. package/skeleton/.claude/skills/afx/SKILL.md +146 -0
  157. package/skeleton/.claude/skills/codev/SKILL.md +3 -3
  158. package/skeleton/DEPENDENCIES.md +1 -1
  159. package/skeleton/builders.md +4 -4
  160. package/skeleton/protocols/air/builder-prompt.md +6 -6
  161. package/skeleton/protocols/air/prompts/pr.md +2 -2
  162. package/skeleton/protocols/air/protocol.md +1 -1
  163. package/skeleton/protocols/aspir/builder-prompt.md +6 -6
  164. package/skeleton/protocols/aspir/protocol.json +1 -1
  165. package/skeleton/protocols/aspir/protocol.md +1 -1
  166. package/skeleton/protocols/bugfix/builder-prompt.md +6 -6
  167. package/skeleton/protocols/bugfix/prompts/pr.md +1 -1
  168. package/skeleton/protocols/maintain/protocol.md +1 -1
  169. package/skeleton/protocols/spike/builder-prompt.md +1 -1
  170. package/skeleton/protocols/spike/protocol.md +3 -3
  171. package/skeleton/protocols/spir/builder-prompt.md +5 -5
  172. package/skeleton/protocols/spir/protocol.json +1 -1
  173. package/skeleton/protocols/spir/protocol.md +2 -2
  174. package/skeleton/resources/commands/agent-farm.md +82 -82
  175. package/skeleton/resources/commands/codev.md +1 -1
  176. package/skeleton/resources/commands/consult.md +1 -1
  177. package/skeleton/resources/commands/overview.md +14 -14
  178. package/skeleton/resources/risk-triage.md +1 -1
  179. package/skeleton/resources/workflow-reference.md +14 -14
  180. package/skeleton/roles/architect.md +39 -39
  181. package/skeleton/roles/builder.md +13 -13
  182. package/skeleton/templates/AGENTS.md +2 -2
  183. package/skeleton/templates/CLAUDE.md +2 -2
  184. package/skeleton/templates/cheatsheet.md +10 -10
  185. package/templates/3d-viewer.html +16 -18
  186. package/templates/tower.html +1 -1
  187. package/dashboard/dist/assets/index-CTrlY11L.js.map +0 -1
  188. package/skeleton/.claude/skills/af/SKILL.md +0 -146
@@ -26,7 +26,7 @@ Quick reference for the 7-stage project workflow. For protocol details, see `cod
26
26
  │ IMPLEMENTATION │
27
27
  ├─────────────────────────────────────────────────────────────────────────────────────┤
28
28
  │ → 4. IMPLEMENTING │
29
- │ Architect spawns builder: af spawn XXXX │
29
+ │ Architect spawns builder: afx spawn XXXX │
30
30
  │ Builder reads spec and plan │
31
31
  │ For each phase: Implement → Defend → Evaluate │
32
32
  │ Builder commits after each phase │
@@ -78,38 +78,38 @@ AI agents must stop and wait for human action at these gates.
78
78
 
79
79
  ```bash
80
80
  # Start the workspace
81
- af workspace start
81
+ afx workspace start
82
82
 
83
83
  # Spawn a builder for a project
84
- af spawn 44 --protocol spir
84
+ afx spawn 44 --protocol spir
85
85
 
86
86
  # Check all builder statuses
87
- af status
87
+ afx status
88
88
 
89
89
  # Send message to builder
90
- af send 44 "Check PR comments and address feedback"
90
+ afx send 44 "Check PR comments and address feedback"
91
91
 
92
92
  # Open a file for review
93
- af open codev/specs/44-name.md
93
+ afx open codev/specs/44-name.md
94
94
 
95
95
  # Clean up after merge
96
- af cleanup -p 44
96
+ afx cleanup -p 44
97
97
 
98
98
  # Stop everything
99
- af workspace stop
99
+ afx workspace stop
100
100
  ```
101
101
 
102
102
  ### Builder Commands
103
103
 
104
104
  ```bash
105
105
  # Check your own status
106
- af status
106
+ afx status
107
107
 
108
108
  # Send message to architect
109
- af send architect "Question about the spec..."
109
+ afx send architect "Question about the spec..."
110
110
 
111
111
  # Open a file in the annotation viewer
112
- af open src/path/to/file.ts
112
+ afx open src/path/to/file.ts
113
113
  ```
114
114
 
115
115
  ### Protocol Import
@@ -212,7 +212,7 @@ gh pr merge N --merge --delete-branch
212
212
  ### Post-Merge Cleanup (Architect)
213
213
  ```bash
214
214
  git pull # Get merged changes
215
- af cleanup -p XXXX # Clean up builder worktree
215
+ afx cleanup -p XXXX # Clean up builder worktree
216
216
  ```
217
217
 
218
218
  ## Troubleshooting
@@ -221,7 +221,7 @@ af cleanup -p XXXX # Clean up builder worktree
221
221
 
222
222
  1. Check builder terminal for blocker message
223
223
  2. Review any `// REVIEW(@architect):` comments in code
224
- 3. Provide guidance via `af send XXXX "guidance here"`
224
+ 3. Provide guidance via `afx send XXXX "guidance here"`
225
225
  4. Builder will resume work after receiving help
226
226
 
227
227
  ### PR Has Conflicts
@@ -238,7 +238,7 @@ af cleanup -p XXXX # Clean up builder worktree
238
238
  git worktree list
239
239
 
240
240
  # Force cleanup (only if work is committed/pushed)
241
- af cleanup -p XXXX --force
241
+ afx cleanup -p XXXX --force
242
242
  ```
243
243
 
244
244
  ## Related Documentation
@@ -8,7 +8,7 @@ The Architect is the **project manager and gatekeeper** who decides what to buil
8
8
 
9
9
  Builders work autonomously in isolated git worktrees. The Architect:
10
10
  1. **Decides** what to build
11
- 2. **Spawns** builders via `af spawn`
11
+ 2. **Spawns** builders via `afx spawn`
12
12
  3. **Approves** gates (spec-approval, plan-approval) when in strict mode
13
13
  4. **Reviews** PRs for integration concerns
14
14
 
@@ -16,8 +16,8 @@ Builders work autonomously in isolated git worktrees. The Architect:
16
16
 
17
17
  | Mode | Command | Use When |
18
18
  |------|---------|----------|
19
- | **Strict** (default) | `af spawn XXXX --protocol spir` | Porch orchestrates - runs autonomously to completion |
20
- | **Soft** | `af spawn XXXX --protocol spir --soft` | AI follows protocol - you verify compliance |
19
+ | **Strict** (default) | `afx spawn XXXX --protocol spir` | Porch orchestrates - runs autonomously to completion |
20
+ | **Soft** | `afx spawn XXXX --protocol spir --soft` | AI follows protocol - you verify compliance |
21
21
 
22
22
  **Strict mode** (default): Porch orchestrates the builder with automated gates, 3-way consultations, and enforced phase transitions. More likely to complete autonomously without intervention.
23
23
 
@@ -25,34 +25,34 @@ Builders work autonomously in isolated git worktrees. The Architect:
25
25
 
26
26
  ### Pre-Spawn Checklist
27
27
 
28
- **Before every `af spawn`, complete these steps:**
28
+ **Before every `afx spawn`, complete these steps:**
29
29
 
30
30
  1. **`git status`** — Ensure worktree is clean (no uncommitted changes)
31
31
  2. **Commit if needed** — Builders branch from HEAD; uncommitted specs/plans are invisible
32
- 3. **`af spawn N --protocol <name>`** — `--protocol` is **REQUIRED** (spir, bugfix, tick, etc.)
32
+ 3. **`afx spawn N --protocol <name>`** — `--protocol` is **REQUIRED** (spir, bugfix, tick, etc.)
33
33
 
34
34
  The spawn command will refuse if the worktree is dirty (override with `--force`, but your builder won't see uncommitted files).
35
35
 
36
36
  ## Key Tools
37
37
 
38
- ### Agent Farm CLI (`af`)
38
+ ### Agent Farm CLI (`afx`)
39
39
 
40
40
  ```bash
41
- af spawn 1 --protocol spir # Strict mode (default) - porch-driven
42
- af spawn 1 --protocol spir -t "feature" # Strict mode with title (no spec yet)
43
- af spawn 1 --resume # Resume existing porch state
44
- af spawn 1 --protocol spir --soft # Soft mode - protocol-guided
45
- af spawn --task "fix the bug" # Ad-hoc task builder (soft mode)
46
- af spawn --worktree # Worktree with no initial prompt
47
- af status # Check all builders
48
- af cleanup -p 0001 # Remove completed builder
49
- af workspace start/stop # Workspace management
50
- af send 0001 "message" # Short message to builder
41
+ afx spawn 1 --protocol spir # Strict mode (default) - porch-driven
42
+ afx spawn 1 --protocol spir -t "feature" # Strict mode with title (no spec yet)
43
+ afx spawn 1 --resume # Resume existing porch state
44
+ afx spawn 1 --protocol spir --soft # Soft mode - protocol-guided
45
+ afx spawn --task "fix the bug" # Ad-hoc task builder (soft mode)
46
+ afx spawn --worktree # Worktree with no initial prompt
47
+ afx status # Check all builders
48
+ afx cleanup -p 0001 # Remove completed builder
49
+ afx workspace start/stop # Workspace management
50
+ afx send 0001 "message" # Short message to builder
51
51
  ```
52
52
 
53
53
  > **Note:** `--protocol` is REQUIRED for all numbered spawns. Only `--task`, `--shell`, and `--worktree` spawns skip it.
54
54
 
55
- **Note:** `af`, `consult`, `porch`, and `codev` are global commands. They work from any directory.
55
+ **Note:** `afx`, `consult`, `porch`, and `codev` are global commands. They work from any directory.
56
56
 
57
57
  ### Porch CLI (for strict mode)
58
58
 
@@ -95,16 +95,16 @@ wait
95
95
  # 3. Spawn the builder (--protocol is REQUIRED)
96
96
 
97
97
  # Default: Strict mode (porch-driven with gates)
98
- af spawn 42 --protocol spir
98
+ afx spawn 42 --protocol spir
99
99
 
100
100
  # With project title (if no spec exists yet)
101
- af spawn 42 --protocol spir -t "user-authentication"
101
+ afx spawn 42 --protocol spir -t "user-authentication"
102
102
 
103
103
  # Or: Soft mode (builder follows protocol independently)
104
- af spawn 42 --protocol spir --soft
104
+ afx spawn 42 --protocol spir --soft
105
105
 
106
106
  # For bugfixes
107
- af spawn 42 --protocol bugfix
107
+ afx spawn 42 --protocol bugfix
108
108
  ```
109
109
 
110
110
  ### 2. Approving Gates (Strict Mode Only)
@@ -120,7 +120,7 @@ cat .builders/spir-0042-feature-name/codev/specs/0042-feature-name.md
120
120
  (cd .builders/spir-0042-feature-name && porch approve 0042 spec-approval --a-human-explicitly-approved-this)
121
121
 
122
122
  # IMPORTANT: Always message the builder after approving a gate
123
- af send 0042 "Spec approved. Continue to plan phase."
123
+ afx send 0042 "Spec approved. Continue to plan phase."
124
124
  ```
125
125
 
126
126
  **plan-approval** - After builder writes the plan
@@ -132,13 +132,13 @@ cat .builders/spir-0042-feature-name/codev/plans/0042-feature-name.md
132
132
  (cd .builders/spir-0042-feature-name && porch approve 0042 plan-approval --a-human-explicitly-approved-this)
133
133
 
134
134
  # IMPORTANT: Always message the builder after approving a gate
135
- af send 0042 "Plan approved. Continue to implement phase."
135
+ afx send 0042 "Plan approved. Continue to implement phase."
136
136
  ```
137
137
 
138
138
  ### 3. Monitoring Progress
139
139
 
140
140
  ```bash
141
- af status # Overview of all builders
141
+ afx status # Overview of all builders
142
142
  porch status 0042 # Detailed state for one project (strict mode)
143
143
  ```
144
144
 
@@ -182,7 +182,7 @@ Low-risk change. [Summary of what changed and why.]
182
182
  ---
183
183
  Architect review"
184
184
 
185
- af send 0042 "PR approved, please merge"
185
+ afx send 0042 "PR approved, please merge"
186
186
  ```
187
187
 
188
188
  **Medium risk** — single-model review:
@@ -194,7 +194,7 @@ gh pr comment 83 --body "## Architect Integration Review
194
194
  ...
195
195
  Architect integration review"
196
196
 
197
- af send 0042 "PR approved, please merge"
197
+ afx send 0042 "PR approved, please merge"
198
198
  ```
199
199
 
200
200
  **High risk** — full 3-way CMAP:
@@ -209,7 +209,7 @@ gh pr comment 83 --body "## Architect Integration Review
209
209
  ...
210
210
  Architect integration review"
211
211
 
212
- af send 0042 "PR approved, please merge"
212
+ afx send 0042 "PR approved, please merge"
213
213
  ```
214
214
 
215
215
  ### 5. Cleanup
@@ -221,7 +221,7 @@ After builder merges and work is integrated:
221
221
  gh issue close 42
222
222
 
223
223
  # 2. Clean up the builder worktree
224
- af cleanup -p 0042
224
+ afx cleanup -p 0042
225
225
  ```
226
226
 
227
227
  **Always close the GitHub Issue when the PR merges.** This is the architect's responsibility — builders don't close issues.
@@ -231,9 +231,9 @@ af cleanup -p 0042
231
231
  ### NEVER Do These:
232
232
  1. **DO NOT merge PRs yourself** - Let builders merge their own PRs
233
233
  2. **DO NOT commit directly to main** - All changes go through builder PRs
234
- 3. **DO NOT use `af send` for long messages** - Use GitHub PR comments instead
235
- 4. **DO NOT run `af` commands from inside a builder worktree** - All `af` commands must be run from the repository root on `main`. Spawning from a worktree nests builders inside it, breaking everything.
236
- 5. **DO NOT `cd` into a builder worktree** - All CLI tools (`af`, `porch`, `consult`, `codev`) are global commands that work from any directory. If a command fails, debug it — don't cd into the worktree. Use absolute paths with the Read tool to inspect builder files (e.g., `Read /path/to/.builders/0042/codev/specs/...`).
234
+ 3. **DO NOT use `afx send` for long messages** - Use GitHub PR comments instead
235
+ 4. **DO NOT run `afx` commands from inside a builder worktree** - All `afx` commands must be run from the repository root on `main`. Spawning from a worktree nests builders inside it, breaking everything.
236
+ 5. **DO NOT `cd` into a builder worktree** - All CLI tools (`afx`, `porch`, `consult`, `codev`) are global commands that work from any directory. If a command fails, debug it — don't cd into the worktree. Use absolute paths with the Read tool to inspect builder files (e.g., `Read /path/to/.builders/0042/codev/specs/...`).
237
237
 
238
238
  ### ALWAYS Do These:
239
239
  1. **Create GitHub Issues first** - Track projects as issues before spawning
@@ -261,9 +261,9 @@ Update status as projects progress:
261
261
 
262
262
  When a builder reports blocked:
263
263
 
264
- 1. Check their status: `af status` or `porch status <id>`
264
+ 1. Check their status: `afx status` or `porch status <id>`
265
265
  2. Read their output in the terminal: `http://localhost:<port>`
266
- 3. Provide guidance via short `af send` message
266
+ 3. Provide guidance via short `afx send` message
267
267
  4. Or answer their question directly if they asked one
268
268
 
269
269
  ## Release Management
@@ -295,10 +295,10 @@ Before approving implementations with UX requirements:
295
295
 
296
296
  | Task | Command |
297
297
  |------|---------|
298
- | Start feature (strict, default) | `af spawn <id> --protocol spir` |
299
- | Start feature (soft) | `af spawn <id> --protocol spir --soft` |
300
- | Start bugfix | `af spawn <id> --protocol bugfix` |
301
- | Check all builders | `af status` |
298
+ | Start feature (strict, default) | `afx spawn <id> --protocol spir` |
299
+ | Start feature (soft) | `afx spawn <id> --protocol spir --soft` |
300
+ | Start bugfix | `afx spawn <id> --protocol bugfix` |
301
+ | Check all builders | `afx status` |
302
302
  | Check one project | `porch status <id>` |
303
303
  | Approve spec | `porch approve <id> spec-approval` |
304
304
  | Approve plan | `porch approve <id> plan-approval` |
@@ -306,5 +306,5 @@ Before approving implementations with UX requirements:
306
306
  | Assess PR risk | `gh pr diff --stat N` |
307
307
  | Integration review (medium) | `consult -m claude --type integration pr N` |
308
308
  | Integration review (high) | 3-way CMAP (see Section 4) |
309
- | Message builder | `af send <id> "short message"` |
310
- | Cleanup builder | `af cleanup -p <id>` |
309
+ | Message builder | `afx send <id> "short message"` |
310
+ | Cleanup builder | `afx cleanup -p <id>` |
@@ -8,12 +8,12 @@ Builders run in one of two modes, determined by how they were spawned:
8
8
 
9
9
  | Mode | Command | Behavior |
10
10
  |------|---------|----------|
11
- | **Strict** (default) | `af spawn XXXX` | Porch orchestrates - runs autonomously to completion |
12
- | **Soft** | `af spawn XXXX --soft` | AI follows protocol - architect verifies compliance |
11
+ | **Strict** (default) | `afx spawn XXXX` | Porch orchestrates - runs autonomously to completion |
12
+ | **Soft** | `afx spawn XXXX --soft` | AI follows protocol - architect verifies compliance |
13
13
 
14
14
  ## Strict Mode (Default)
15
15
 
16
- Spawned with: `af spawn XXXX`
16
+ Spawned with: `afx spawn XXXX`
17
17
 
18
18
  In strict mode, porch orchestrates your work and drives the protocol to completion autonomously. Your job is simple: **run porch until the project completes**.
19
19
 
@@ -68,7 +68,7 @@ You must:
68
68
 
69
69
  ## Soft Mode
70
70
 
71
- Spawned with: `af spawn XXXX --soft` or `af spawn --task "..."`
71
+ Spawned with: `afx spawn XXXX --soft` or `afx spawn --task "..."`
72
72
 
73
73
  In soft mode, you follow the protocol document yourself. The architect monitors your work and verifies you're adhering to the protocol correctly.
74
74
 
@@ -129,27 +129,27 @@ wait
129
129
 
130
130
  If you're blocked or need help:
131
131
  ```bash
132
- af send architect "Question about the spec..."
132
+ afx send architect "Question about the spec..."
133
133
  ```
134
134
 
135
135
  ### Checking Status
136
136
 
137
137
  ```bash
138
138
  porch status # (strict mode) Your project status
139
- af status # All builders
139
+ afx status # All builders
140
140
  ```
141
141
 
142
142
  ## Notifications
143
143
 
144
- **ALWAYS notify the architect** via `af send` at these key moments:
144
+ **ALWAYS notify the architect** via `afx send` at these key moments:
145
145
 
146
146
  | When | What to send |
147
147
  |------|-------------|
148
- | **Gate reached** | `af send architect "Project XXXX: <gate-name> ready for approval"` |
149
- | **PR ready** | `af send architect "PR #N ready for review"` |
150
- | **PR merged** | `af send architect "Project XXXX complete. PR merged. Ready for cleanup."` |
151
- | **Blocked/stuck** | `af send architect "Blocked on X — need guidance"` |
152
- | **Escalation needed** | `af send architect "Issue too complex — recommend escalating to SPIR/TICK"` |
148
+ | **Gate reached** | `afx send architect "Project XXXX: <gate-name> ready for approval"` |
149
+ | **PR ready** | `afx send architect "PR #N ready for review"` |
150
+ | **PR merged** | `afx send architect "Project XXXX complete. PR merged. Ready for cleanup."` |
151
+ | **Blocked/stuck** | `afx send architect "Blocked on X — need guidance"` |
152
+ | **Escalation needed** | `afx send architect "Issue too complex — recommend escalating to SPIR/TICK"` |
153
153
 
154
154
  The architect may be working on other tasks and won't know you need attention unless you send a message. **Don't assume they're watching** — always notify explicitly.
155
155
 
@@ -158,7 +158,7 @@ The architect may be working on other tasks and won't know you need attention un
158
158
  If you encounter issues you can't resolve:
159
159
 
160
160
  1. **Output a clear blocker message** describing the problem and options
161
- 2. **Use `af send architect "..."` to notify the Architect**
161
+ 2. **Use `afx send architect "..."` to notify the Architect**
162
162
  3. **Wait for guidance** before proceeding
163
163
 
164
164
  Example:
@@ -50,7 +50,7 @@ Commit messages format:
50
50
  Codev provides three CLI tools:
51
51
 
52
52
  - **codev**: Project management (init, adopt, update, doctor)
53
- - **af**: Agent Farm orchestration (start, spawn, status, cleanup)
53
+ - **afx**: Agent Farm orchestration (start, spawn, status, cleanup)
54
54
  - **consult**: AI consultation for reviews (general, protocol, stats)
55
55
 
56
56
  For complete reference, see `codev/resources/commands/`:
@@ -61,7 +61,7 @@ For complete reference, see `codev/resources/commands/`:
61
61
 
62
62
  ## Configuration
63
63
 
64
- Agent Farm is configured via `af-config.json` at the project root. Created during `codev init` or `codev adopt`. Override via CLI flags: `--architect-cmd`, `--builder-cmd`, `--shell-cmd`.
64
+ Agent Farm is configured via `.codev/config.json` at the project root. Created during `codev init` or `codev adopt`. Override via CLI flags: `--architect-cmd`, `--builder-cmd`, `--shell-cmd`.
65
65
 
66
66
  ```json
67
67
  {
@@ -48,7 +48,7 @@ Commit messages format:
48
48
  Codev provides three CLI tools:
49
49
 
50
50
  - **codev**: Project management (init, adopt, update, doctor)
51
- - **af**: Agent Farm orchestration (start, spawn, status, cleanup)
51
+ - **afx**: Agent Farm orchestration (start, spawn, status, cleanup)
52
52
  - **consult**: AI consultation for reviews (general, protocol, stats)
53
53
 
54
54
  For complete reference, see `codev/resources/commands/`:
@@ -59,7 +59,7 @@ For complete reference, see `codev/resources/commands/`:
59
59
 
60
60
  ## Configuration
61
61
 
62
- Agent Farm is configured via `af-config.json` at the project root. Created during `codev init` or `codev adopt`. Override via CLI flags: `--architect-cmd`, `--builder-cmd`, `--shell-cmd`.
62
+ Agent Farm is configured via `.codev/config.json` at the project root. Created during `codev init` or `codev adopt`. Override via CLI flags: `--architect-cmd`, `--builder-cmd`, `--shell-cmd`.
63
63
 
64
64
  ```json
65
65
  {
@@ -105,21 +105,21 @@ Project management commands. Typically used by **humans** to set up and maintain
105
105
  | `codev update` | Update Codev framework |
106
106
  | `codev import` | Import specs from another project |
107
107
 
108
- ### agent-farm (af)
108
+ ### agent-farm (afx)
109
109
 
110
110
  Architect-Builder orchestration. Used by both **humans and agents**—agents use it more frequently.
111
111
 
112
112
  | Command | Description |
113
113
  |---------|-------------|
114
- | `af workspace start` | Start workspace (port 4200, 4300, etc.) |
115
- | `af workspace stop` | Stop all processes |
116
- | `af spawn <id> --protocol spir` | Spawn a builder for project |
117
- | `af status` | Check status of all builders |
118
- | `af send <target> <msg>` | Send message (builder↔architect) |
119
- | `af cleanup -p <id>` | Clean up a builder worktree |
120
- | `af shell` | Spawn a utility shell |
121
- | `af open <file>` | Open file in workspace viewer |
122
- | `af tower start` | Start cross-project tower |
114
+ | `afx workspace start` | Start workspace (port 4200, 4300, etc.) |
115
+ | `afx workspace stop` | Stop all processes |
116
+ | `afx spawn <id> --protocol spir` | Spawn a builder for project |
117
+ | `afx status` | Check status of all builders |
118
+ | `afx send <target> <msg>` | Send message (builder↔architect) |
119
+ | `afx cleanup -p <id>` | Clean up a builder worktree |
120
+ | `afx shell` | Spawn a utility shell |
121
+ | `afx open <file>` | Open file in workspace viewer |
122
+ | `afx tower start` | Start cross-project tower |
123
123
 
124
124
  ### consult
125
125
 
@@ -12,7 +12,7 @@
12
12
  }
13
13
 
14
14
  body {
15
- background: #000000;
15
+ background: #4D4D4D;
16
16
  color: #e0e0e0;
17
17
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
18
18
  overflow: hidden;
@@ -276,7 +276,7 @@
276
276
  function init() {
277
277
  // Scene
278
278
  scene = new THREE.Scene();
279
- scene.background = new THREE.Color(0x000000);
279
+ scene.background = new THREE.Color(0x4D4D4D);
280
280
 
281
281
  // Cameras (Z-up coordinate system)
282
282
  const aspect = container.clientWidth / container.clientHeight;
@@ -378,21 +378,20 @@
378
378
  geometry.computeBoundingBox();
379
379
  const center = new THREE.Vector3();
380
380
  geometry.boundingBox.getCenter(center);
381
- geometry.translate(-center.x, -center.y, -center.z);
381
+ // Only center in XY; Three.js translate() auto-updates boundingBox
382
+ geometry.translate(-center.x, -center.y, 0);
382
383
 
383
384
  // Move to sit on grid (Z=0 plane)
384
- const minZ = geometry.boundingBox.min.z - center.z;
385
- geometry.translate(0, 0, -minZ);
385
+ geometry.translate(0, 0, -geometry.boundingBox.min.z);
386
386
 
387
- // Recalculate bounding box after translation
388
- geometry.computeBoundingBox();
387
+ // Compute vertex normals for smooth Phong shading
388
+ geometry.computeVertexNormals();
389
389
 
390
390
  // Material
391
391
  const material = new THREE.MeshPhongMaterial({
392
392
  color: 0x3b82f6,
393
- specular: 0x111111,
394
- shininess: 30,
395
- flatShading: false
393
+ specular: 0x222222,
394
+ shininess: 60
396
395
  });
397
396
 
398
397
  model = new THREE.Mesh(geometry, material);
@@ -775,21 +774,20 @@
775
774
  geometry.computeBoundingBox();
776
775
  const center = new THREE.Vector3();
777
776
  geometry.boundingBox.getCenter(center);
778
- geometry.translate(-center.x, -center.y, -center.z);
777
+ // Only center in XY; Three.js translate() auto-updates boundingBox
778
+ geometry.translate(-center.x, -center.y, 0);
779
779
 
780
780
  // Move to sit on grid (Z=0 plane)
781
- const minZ = geometry.boundingBox.min.z - center.z;
782
- geometry.translate(0, 0, -minZ);
781
+ geometry.translate(0, 0, -geometry.boundingBox.min.z);
783
782
 
784
- // Recalculate bounding box after translation
785
- geometry.computeBoundingBox();
783
+ // Compute vertex normals for smooth Phong shading
784
+ geometry.computeVertexNormals();
786
785
 
787
786
  // Create new material
788
787
  const material = new THREE.MeshPhongMaterial({
789
788
  color: 0x3b82f6,
790
- specular: 0x111111,
791
- shininess: 30,
792
- flatShading: false
789
+ specular: 0x222222,
790
+ shininess: 60
793
791
  });
794
792
 
795
793
  model = new THREE.Mesh(geometry, material);
@@ -1162,7 +1162,7 @@
1162
1162
  <div class="empty-state">
1163
1163
  <div class="icon">📭</div>
1164
1164
  <h2>No running workspaces</h2>
1165
- <p>Start a new workspace below or run <code>af dash start</code> in a workspace directory.</p>
1165
+ <p>Start a new workspace below or run <code>afx workspace start</code> in a workspace directory.</p>
1166
1166
  </div>
1167
1167
  `;
1168
1168
  } else {