all-hands-cli 0.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 (305) hide show
  1. package/.allhands/README.md +75 -0
  2. package/.allhands/agents/compounder.yaml +15 -0
  3. package/.allhands/agents/coordinator.yaml +17 -0
  4. package/.allhands/agents/documentor.yaml +15 -0
  5. package/.allhands/agents/e2e-test-planner.yaml +17 -0
  6. package/.allhands/agents/emergent.yaml +22 -0
  7. package/.allhands/agents/executor.yaml +14 -0
  8. package/.allhands/agents/ideation.yaml +11 -0
  9. package/.allhands/agents/initiative-steering.yaml +19 -0
  10. package/.allhands/agents/judge.yaml +13 -0
  11. package/.allhands/agents/planner.yaml +19 -0
  12. package/.allhands/agents/pr-reviewer.yaml +15 -0
  13. package/.allhands/docs.json +5 -0
  14. package/.allhands/docs.local.json +26 -0
  15. package/.allhands/flows/COMPOUNDING.md +203 -0
  16. package/.allhands/flows/COORDINATION.md +89 -0
  17. package/.allhands/flows/CORE.md +87 -0
  18. package/.allhands/flows/DOCUMENTATION.md +218 -0
  19. package/.allhands/flows/E2E_TEST_PLAN_BUILDING.md +140 -0
  20. package/.allhands/flows/EMERGENT_PLANNING.md +57 -0
  21. package/.allhands/flows/IDEATION_SCOPING.md +154 -0
  22. package/.allhands/flows/INITIATIVE_STEERING.md +110 -0
  23. package/.allhands/flows/JUDGE_REVIEWING.md +79 -0
  24. package/.allhands/flows/PROMPT_TASK_EXECUTION.md +68 -0
  25. package/.allhands/flows/PR_REVIEWING.md +43 -0
  26. package/.allhands/flows/SPEC_PLANNING.md +216 -0
  27. package/.allhands/flows/harness/WRITING_HARNESS_FLOWS.md +27 -0
  28. package/.allhands/flows/harness/WRITING_HARNESS_KNOWLEDGE.md +27 -0
  29. package/.allhands/flows/harness/WRITING_HARNESS_ORCHESTRATION.md +27 -0
  30. package/.allhands/flows/harness/WRITING_HARNESS_SKILLS.md +27 -0
  31. package/.allhands/flows/harness/WRITING_HARNESS_TOOLS.md +27 -0
  32. package/.allhands/flows/harness/WRITING_HARNESS_VALIDATION_TOOLING.md +27 -0
  33. package/.allhands/flows/shared/CODEBASE_UNDERSTANDING.md +72 -0
  34. package/.allhands/flows/shared/CREATE_HARNESS_SPEC.md +48 -0
  35. package/.allhands/flows/shared/CREATE_SPEC.md +41 -0
  36. package/.allhands/flows/shared/CREATE_VALIDATION_TOOLING_SPEC.md +70 -0
  37. package/.allhands/flows/shared/DOCUMENTATION_DISCOVERY.md +123 -0
  38. package/.allhands/flows/shared/DOCUMENTATION_WRITER.md +101 -0
  39. package/.allhands/flows/shared/EMERGENT_REFINEMENT_ANALYSIS.md +76 -0
  40. package/.allhands/flows/shared/EXTERNAL_TECH_GUIDANCE.md +97 -0
  41. package/.allhands/flows/shared/IDEATION_CODEBASE_GROUNDING.md +49 -0
  42. package/.allhands/flows/shared/PLAN_DEEPENING.md +152 -0
  43. package/.allhands/flows/shared/PROMPT_TASKS_CURATION.md +113 -0
  44. package/.allhands/flows/shared/PROMPT_VALIDATION_REVIEW.MD +99 -0
  45. package/.allhands/flows/shared/QUICK_PREMORTEM.md +70 -0
  46. package/.allhands/flows/shared/RESEARCH_GUIDANCE.md +38 -0
  47. package/.allhands/flows/shared/REVIEW_OPTIONS_BREAKDOWN.md +68 -0
  48. package/.allhands/flows/shared/SKILL_EXTRACTION.md +84 -0
  49. package/.allhands/flows/shared/SPEC_FLOW_ANALYSIS.md +119 -0
  50. package/.allhands/flows/shared/TDD_WORKFLOW.md +109 -0
  51. package/.allhands/flows/shared/UTILIZE_VALIDATION_TOOLING.md +84 -0
  52. package/.allhands/flows/shared/WRITING_HARNESS_FLOWS.md +11 -0
  53. package/.allhands/flows/shared/WRITING_HARNESS_MCP_TOOLS.md +84 -0
  54. package/.allhands/flows/shared/jury/ARCHITECTURE_REVIEW.md +91 -0
  55. package/.allhands/flows/shared/jury/BEST_PRACTICES_REVIEW.md +80 -0
  56. package/.allhands/flows/shared/jury/CLAIM_VERIFICATION_REVIEW.md +101 -0
  57. package/.allhands/flows/shared/jury/EXPECTATIONS_FIT_REVIEW.md +78 -0
  58. package/.allhands/flows/shared/jury/MAINTAINABILITY_REVIEW.md +110 -0
  59. package/.allhands/flows/shared/jury/PROMPTS_EXPECTATIONS_FIT.md +74 -0
  60. package/.allhands/flows/shared/jury/PROMPTS_FLOW_ANALYSIS.md +92 -0
  61. package/.allhands/flows/shared/jury/PROMPTS_YAGNI.md +78 -0
  62. package/.allhands/flows/shared/jury/PROMPT_PREMORTEM.md +125 -0
  63. package/.allhands/flows/shared/jury/SECURITY_REVIEW.md +86 -0
  64. package/.allhands/flows/shared/jury/YAGNI_REVIEW.md +82 -0
  65. package/.allhands/flows/wip/DEBUG_INVESTIGATION.md +162 -0
  66. package/.allhands/flows/wip/MEMORY_RECALL.md +62 -0
  67. package/.allhands/harness/ah +131 -0
  68. package/.allhands/harness/package-lock.json +5292 -0
  69. package/.allhands/harness/package.json +52 -0
  70. package/.allhands/harness/src/__tests__/e2e/commands.test.ts +307 -0
  71. package/.allhands/harness/src/__tests__/e2e/event-loop.test.ts +539 -0
  72. package/.allhands/harness/src/__tests__/e2e/hooks.test.ts +427 -0
  73. package/.allhands/harness/src/__tests__/e2e/new-initiative-routing.test.ts +137 -0
  74. package/.allhands/harness/src/__tests__/e2e/run-e2e.ts +109 -0
  75. package/.allhands/harness/src/__tests__/e2e/specs-type.test.ts +210 -0
  76. package/.allhands/harness/src/__tests__/e2e/validation-hooks.test.ts +669 -0
  77. package/.allhands/harness/src/__tests__/e2e/validation-path-consistency.test.ts +354 -0
  78. package/.allhands/harness/src/__tests__/e2e/validation.test.ts +528 -0
  79. package/.allhands/harness/src/__tests__/harness/assertions.ts +318 -0
  80. package/.allhands/harness/src/__tests__/harness/cli-runner.ts +359 -0
  81. package/.allhands/harness/src/__tests__/harness/fixture.ts +384 -0
  82. package/.allhands/harness/src/__tests__/harness/hook-runner.ts +411 -0
  83. package/.allhands/harness/src/__tests__/harness/index.ts +122 -0
  84. package/.allhands/harness/src/cli.ts +36 -0
  85. package/.allhands/harness/src/commands/complexity.ts +177 -0
  86. package/.allhands/harness/src/commands/context7.ts +202 -0
  87. package/.allhands/harness/src/commands/docs.ts +557 -0
  88. package/.allhands/harness/src/commands/hooks.ts +24 -0
  89. package/.allhands/harness/src/commands/index.ts +51 -0
  90. package/.allhands/harness/src/commands/knowledge.ts +382 -0
  91. package/.allhands/harness/src/commands/memories.ts +302 -0
  92. package/.allhands/harness/src/commands/notify.ts +61 -0
  93. package/.allhands/harness/src/commands/oracle.ts +158 -0
  94. package/.allhands/harness/src/commands/perplexity.ts +220 -0
  95. package/.allhands/harness/src/commands/planning.ts +245 -0
  96. package/.allhands/harness/src/commands/schema.ts +73 -0
  97. package/.allhands/harness/src/commands/skills.ts +128 -0
  98. package/.allhands/harness/src/commands/solutions.ts +353 -0
  99. package/.allhands/harness/src/commands/spawn.ts +158 -0
  100. package/.allhands/harness/src/commands/specs.ts +532 -0
  101. package/.allhands/harness/src/commands/tavily.ts +226 -0
  102. package/.allhands/harness/src/commands/tools.ts +579 -0
  103. package/.allhands/harness/src/commands/trace.ts +327 -0
  104. package/.allhands/harness/src/commands/tui.ts +960 -0
  105. package/.allhands/harness/src/commands/validate.ts +143 -0
  106. package/.allhands/harness/src/commands/validation-tools.ts +108 -0
  107. package/.allhands/harness/src/hooks/context.ts +1442 -0
  108. package/.allhands/harness/src/hooks/enforcement.ts +170 -0
  109. package/.allhands/harness/src/hooks/index.ts +54 -0
  110. package/.allhands/harness/src/hooks/lifecycle.ts +229 -0
  111. package/.allhands/harness/src/hooks/notification.ts +104 -0
  112. package/.allhands/harness/src/hooks/observability.ts +551 -0
  113. package/.allhands/harness/src/hooks/session.ts +88 -0
  114. package/.allhands/harness/src/hooks/shared.ts +815 -0
  115. package/.allhands/harness/src/hooks/transcript-parser.ts +208 -0
  116. package/.allhands/harness/src/hooks/validation.ts +617 -0
  117. package/.allhands/harness/src/lib/__tests__/ctags.test.ts +244 -0
  118. package/.allhands/harness/src/lib/__tests__/docs-validation.test.ts +344 -0
  119. package/.allhands/harness/src/lib/__tests__/mcp-runtime.test.ts +190 -0
  120. package/.allhands/harness/src/lib/__tests__/schema.test.ts +861 -0
  121. package/.allhands/harness/src/lib/base-command.ts +198 -0
  122. package/.allhands/harness/src/lib/cli-daemon.ts +343 -0
  123. package/.allhands/harness/src/lib/compaction.ts +313 -0
  124. package/.allhands/harness/src/lib/ctags.ts +497 -0
  125. package/.allhands/harness/src/lib/docs-validation.ts +907 -0
  126. package/.allhands/harness/src/lib/event-loop.ts +662 -0
  127. package/.allhands/harness/src/lib/flows.ts +155 -0
  128. package/.allhands/harness/src/lib/git.ts +276 -0
  129. package/.allhands/harness/src/lib/knowledge-worker.ts +72 -0
  130. package/.allhands/harness/src/lib/knowledge.ts +810 -0
  131. package/.allhands/harness/src/lib/llm.ts +255 -0
  132. package/.allhands/harness/src/lib/mcp-client.ts +432 -0
  133. package/.allhands/harness/src/lib/mcp-daemon.ts +486 -0
  134. package/.allhands/harness/src/lib/mcp-runtime.ts +418 -0
  135. package/.allhands/harness/src/lib/notification.ts +115 -0
  136. package/.allhands/harness/src/lib/opencode/index.ts +70 -0
  137. package/.allhands/harness/src/lib/opencode/profiles.ts +300 -0
  138. package/.allhands/harness/src/lib/opencode/prompts/codesearch.md +98 -0
  139. package/.allhands/harness/src/lib/opencode/prompts/knowledge-aggregator.md +67 -0
  140. package/.allhands/harness/src/lib/opencode/runner.ts +281 -0
  141. package/.allhands/harness/src/lib/oracle.ts +926 -0
  142. package/.allhands/harness/src/lib/planning-utils.ts +150 -0
  143. package/.allhands/harness/src/lib/planning.ts +605 -0
  144. package/.allhands/harness/src/lib/pr-review.ts +225 -0
  145. package/.allhands/harness/src/lib/prompts.ts +522 -0
  146. package/.allhands/harness/src/lib/schema.ts +418 -0
  147. package/.allhands/harness/src/lib/schemas/agent-profile.ts +141 -0
  148. package/.allhands/harness/src/lib/schemas/template-vars.ts +138 -0
  149. package/.allhands/harness/src/lib/session.ts +164 -0
  150. package/.allhands/harness/src/lib/specs.ts +348 -0
  151. package/.allhands/harness/src/lib/tldr.ts +829 -0
  152. package/.allhands/harness/src/lib/tmux.ts +1051 -0
  153. package/.allhands/harness/src/lib/trace-store.ts +714 -0
  154. package/.allhands/harness/src/mcp/__tests__/index.test.ts +46 -0
  155. package/.allhands/harness/src/mcp/_template.ts +47 -0
  156. package/.allhands/harness/src/mcp/filesystem.ts +33 -0
  157. package/.allhands/harness/src/mcp/index.ts +69 -0
  158. package/.allhands/harness/src/mcp/playwright.ts +34 -0
  159. package/.allhands/harness/src/mcp/xcodebuild.ts +29 -0
  160. package/.allhands/harness/src/schemas/docs.schema.json +44 -0
  161. package/.allhands/harness/src/schemas/settings.schema.json +214 -0
  162. package/.allhands/harness/src/tui/actions.ts +227 -0
  163. package/.allhands/harness/src/tui/file-viewer-modal.ts +270 -0
  164. package/.allhands/harness/src/tui/index.ts +1574 -0
  165. package/.allhands/harness/src/tui/modal.ts +232 -0
  166. package/.allhands/harness/src/tui/prompts-pane.ts +186 -0
  167. package/.allhands/harness/src/tui/status-pane.ts +434 -0
  168. package/.allhands/harness/tsconfig.json +22 -0
  169. package/.allhands/harness/vitest.config.ts +13 -0
  170. package/.allhands/pillars.md +33 -0
  171. package/.allhands/principles.md +88 -0
  172. package/.allhands/schemas/alignment.yaml +51 -0
  173. package/.allhands/schemas/documentation.yaml +10 -0
  174. package/.allhands/schemas/prompt.yaml +92 -0
  175. package/.allhands/schemas/skill.yaml +34 -0
  176. package/.allhands/schemas/solution.yaml +131 -0
  177. package/.allhands/schemas/spec.yaml +67 -0
  178. package/.allhands/schemas/validation-suite.yaml +49 -0
  179. package/.allhands/schemas/workflow.yaml +51 -0
  180. package/.allhands/settings.json +57 -0
  181. package/.allhands/skills/claude-code-patterns/SKILL.md +60 -0
  182. package/.allhands/skills/claude-code-patterns/docs/context-hygiene.md +19 -0
  183. package/.allhands/skills/harness-maintenance/SKILL.md +449 -0
  184. package/.allhands/skills/harness-maintenance/references/core-architecture.md +187 -0
  185. package/.allhands/skills/harness-maintenance/references/harness-skills.md +87 -0
  186. package/.allhands/skills/harness-maintenance/references/knowledge-compounding.md +78 -0
  187. package/.allhands/skills/harness-maintenance/references/tools-commands-mcp-hooks.md +115 -0
  188. package/.allhands/skills/harness-maintenance/references/validation-tooling.md +77 -0
  189. package/.allhands/skills/harness-maintenance/references/writing-flows.md +84 -0
  190. package/.allhands/validation/browser-automation.md +109 -0
  191. package/.allhands/validation/xcode-automation.md +195 -0
  192. package/.allhands/workflows/documentation.md +86 -0
  193. package/.allhands/workflows/investigation.md +81 -0
  194. package/.allhands/workflows/milestone.md +91 -0
  195. package/.allhands/workflows/optimization.md +85 -0
  196. package/.allhands/workflows/refactor.md +99 -0
  197. package/.allhands/workflows/triage.md +81 -0
  198. package/.claude/README.md +1 -0
  199. package/.claude/agents/explorer.md +10 -0
  200. package/.claude/agents/researcher.md +11 -0
  201. package/.claude/agents/task-runner.md +8 -0
  202. package/.claude/settings.json +231 -0
  203. package/.env.ai.example +7 -0
  204. package/.github/workflows/npm-publish.yml +69 -0
  205. package/.internal.json +45 -0
  206. package/.tldr/config.json +11 -0
  207. package/.tldrignore +90 -0
  208. package/CLAUDE.md +6 -0
  209. package/README.md +98 -0
  210. package/bin/sync-cli.js +7552 -0
  211. package/concerns.md +7 -0
  212. package/docs/README.md +41 -0
  213. package/docs/agents/README.md +24 -0
  214. package/docs/agents/agent-configuration-system.md +86 -0
  215. package/docs/agents/execution-agents.md +50 -0
  216. package/docs/agents/knowledge-agents.md +61 -0
  217. package/docs/agents/orchestration-agent.md +57 -0
  218. package/docs/agents/planning-agents.md +84 -0
  219. package/docs/agents/quality-review-agents.md +67 -0
  220. package/docs/agents/workflow-agent-orchestration.md +69 -0
  221. package/docs/flows/README.md +44 -0
  222. package/docs/flows/compounding.md +126 -0
  223. package/docs/flows/coordination.md +72 -0
  224. package/docs/flows/core-harness-integration.md +63 -0
  225. package/docs/flows/documentation-orchestration.md +98 -0
  226. package/docs/flows/e2e-test-plan-building.md +83 -0
  227. package/docs/flows/emergent-refinement.md +104 -0
  228. package/docs/flows/flow-authoring-and-mcp-tools.md +89 -0
  229. package/docs/flows/judge-reviewing.md +112 -0
  230. package/docs/flows/plan-deepening-and-research.md +107 -0
  231. package/docs/flows/plan-review-jury.md +114 -0
  232. package/docs/flows/pr-reviewing.md +54 -0
  233. package/docs/flows/prompt-task-execution.md +119 -0
  234. package/docs/flows/spec-planning.md +162 -0
  235. package/docs/flows/type-specific-scoping-flows.md +49 -0
  236. package/docs/flows/validation-and-skills-integration.md +145 -0
  237. package/docs/flows/wip/wip-flows.md +102 -0
  238. package/docs/harness/README.md +23 -0
  239. package/docs/harness/agent-profiles.md +84 -0
  240. package/docs/harness/cli/README.md +24 -0
  241. package/docs/harness/cli/cli-entry-and-command-discovery.md +91 -0
  242. package/docs/harness/cli/docs-command.md +87 -0
  243. package/docs/harness/cli/knowledge-command.md +91 -0
  244. package/docs/harness/cli/minor-cli-commands.md +65 -0
  245. package/docs/harness/cli/oracle-command.md +113 -0
  246. package/docs/harness/cli/planning-command.md +95 -0
  247. package/docs/harness/cli/schema-and-validation-commands.md +154 -0
  248. package/docs/harness/cli/search-commands.md +97 -0
  249. package/docs/harness/cli/spawn-command.md +136 -0
  250. package/docs/harness/cli/specs-command.md +102 -0
  251. package/docs/harness/cli/tools-command.md +122 -0
  252. package/docs/harness/cli/trace-command.md +122 -0
  253. package/docs/harness/cli-daemon.md +92 -0
  254. package/docs/harness/event-loop.md +184 -0
  255. package/docs/harness/hooks/README.md +15 -0
  256. package/docs/harness/hooks/context-hooks.md +96 -0
  257. package/docs/harness/hooks/lifecycle-and-observability-hooks.md +135 -0
  258. package/docs/harness/hooks/validation-hooks.md +97 -0
  259. package/docs/harness/test-harness.md +149 -0
  260. package/docs/harness/tui.md +176 -0
  261. package/docs/memories.md +20 -0
  262. package/docs/solutions/agentic-issues/premature-agent-deletion-tui-action-dependency-20260130.md +49 -0
  263. package/docs/solutions/agentic-issues/ref-anchor-scope-mismatch-skill-references-20260131.md +55 -0
  264. package/docs/solutions/agentic-issues/tautological-tests-routing-20260131.md +52 -0
  265. package/docs/solutions/integration_issue/blocktool-output-format-mismatch-hook-runner-20260130.md +52 -0
  266. package/docs/solutions/integration_issue/dual-validation-path-divergence-schema-20260130.md +66 -0
  267. package/docs/solutions/security-issues/unsanitized-domain-path-join-20260131.md +52 -0
  268. package/docs/solutions/test-failures/event-loop-mock-ordering-checkAgentWindows-20260130.md +63 -0
  269. package/docs/sync-cli/README.md +19 -0
  270. package/docs/sync-cli/cli-entrypoint-and-commands.md +39 -0
  271. package/docs/sync-cli/commands/README.md +11 -0
  272. package/docs/sync-cli/commands/pull-manifest-command.md +36 -0
  273. package/docs/sync-cli/commands/push-command.md +84 -0
  274. package/docs/sync-cli/commands/sync-command.md +71 -0
  275. package/docs/sync-cli/systems/README.md +14 -0
  276. package/docs/sync-cli/systems/git-and-github-integration.md +49 -0
  277. package/docs/sync-cli/systems/interactive-ui.md +43 -0
  278. package/docs/sync-cli/systems/manifest-and-distribution.md +51 -0
  279. package/docs/sync-cli/systems/path-resolution.md +42 -0
  280. package/package.json +46 -0
  281. package/scripts/install-shim.sh +40 -0
  282. package/scripts/pre-pack.sh +25 -0
  283. package/specs/harness-maintenance-skill.spec.md +138 -0
  284. package/specs/roadmap/git-spec-lifecycle-management.spec.md +113 -0
  285. package/specs/sync-init-flag.spec.md +117 -0
  286. package/specs/unified-workflow-orchestration.spec.md +250 -0
  287. package/specs/validation-tooling-practice.spec.md +98 -0
  288. package/specs/workflow-domain-configuration.spec.md +265 -0
  289. package/src/commands/pull-manifest.ts +31 -0
  290. package/src/commands/push.ts +344 -0
  291. package/src/commands/sync.ts +289 -0
  292. package/src/lib/constants.ts +10 -0
  293. package/src/lib/dotfiles.ts +36 -0
  294. package/src/lib/fs-utils.ts +18 -0
  295. package/src/lib/gh.ts +40 -0
  296. package/src/lib/git.ts +63 -0
  297. package/src/lib/gitignore.ts +167 -0
  298. package/src/lib/manifest.ts +121 -0
  299. package/src/lib/marker-sync.ts +39 -0
  300. package/src/lib/paths.ts +38 -0
  301. package/src/lib/target-lines.ts +66 -0
  302. package/src/lib/ui.ts +78 -0
  303. package/src/sync-cli.ts +120 -0
  304. package/target-lines.json +23 -0
  305. package/tsconfig.json +20 -0
@@ -0,0 +1,82 @@
1
+ <goal>
2
+ Review implementation for YAGNI (You Ain't Gonna Need It) violations. Per **Quality Engineering**, identify over-engineering that exceeds task requirements.
3
+ </goal>
4
+
5
+ <inputs>
6
+ - Git diff to base (implementation files)
7
+ - Alignment doc path (for engineer decisions)
8
+ - Prompts folder path (for task scope)
9
+ </inputs>
10
+
11
+ <outputs>
12
+ - YAGNI violations in implementation
13
+ - Simplification recommendations, ordered by priority
14
+ </outputs>
15
+
16
+ <constraints>
17
+ - MUST use git diff to base for implementation review
18
+ - MUST give leniency to explicit engineer decisions
19
+ - MUST still object to unnecessary complexity even post-planning decisions
20
+ - MUST distinguish agentic over-engineering from engineer-requested features
21
+ </constraints>
22
+
23
+ ## Context Gathering
24
+
25
+ - Review all implementation changes from base branch
26
+ - Read prompt summaries for task scope
27
+ - Read alignment doc for engineer decisions
28
+ - Identify patch prompts and emergent prompts (post-planning decisions)
29
+
30
+ ## YAGNI Detection in Implementation
31
+
32
+ Look for code that:
33
+
34
+ | Pattern | Description |
35
+ |---------|-------------|
36
+ | Beyond Scope | Implementation exceeds prompt tasks (note: `type: emergent` prompts explore extensions by design per **Quality Engineering** - YAGNI applies to implementation efficiency within the prompt, not to the emergent hypothesis itself) |
37
+ | Unused Code | Functions/classes not called anywhere |
38
+ | Over-Abstraction | Abstractions for single use cases |
39
+ | Feature Flags | Configuration for features not requested |
40
+ | Error Handling | Catching impossible error conditions |
41
+ | Premature Optimization | Performance work without proven need |
42
+ | Orphaned Artifacts | Files created but not wired into the system |
43
+ | Dead Exports | Functions exported but never imported |
44
+ | Defensive Overkill | Validation for scenarios that can't happen in internal code |
45
+
46
+ ## Decision Source Tracking
47
+
48
+ | Source | Priority |
49
+ |--------|----------|
50
+ | Agentic over-reach | P1 - Agents often add unnecessary complexity |
51
+ | Post-planning engineer decision | P2 - Still offer perspective, lower priority |
52
+ | Original planning decision | P3 - Already reviewed, lowest priority |
53
+
54
+ ## Review Process
55
+
56
+ For each implementation change:
57
+ - Was this in the prompt's task scope?
58
+ - Is this simpler than necessary?
59
+ - Does this exceed requirements?
60
+ - Who decided this (agent or engineer)?
61
+
62
+ ## Output Format
63
+
64
+ Return findings ordered by priority:
65
+
66
+ ```
67
+ ## YAGNI Implementation Review
68
+
69
+ ### P1 (Agentic Over-Engineering)
70
+ - [File]: [What's unnecessary] -> [What was actually needed] -> [Remove/simplify]
71
+
72
+ ### P2 (Exceeds Post-Planning Decisions)
73
+ - [File]: [What was added] -> [Beyond what engineer clarified] -> [Consider removing]
74
+
75
+ ### P3 (Worth Reconsidering)
76
+ - [File]: [Engineer-decided but still YAGNI perspective] -> [Alternative if desired]
77
+
78
+ ## Summary
79
+ - [Lines of unnecessary code]
80
+ - [Complexity hotspots]
81
+ - [Simplification opportunities]
82
+ ```
@@ -0,0 +1,162 @@
1
+ <goal>
2
+ Structured investigation for complex bugs with unclear root causes. Per **Agentic Validation Tooling**, systematic debugging beats random exploration.
3
+ </goal>
4
+
5
+ <inputs>
6
+ - Symptom description (error message, unexpected behavior, failing test)
7
+ - Optional: suspected area of codebase
8
+ </inputs>
9
+
10
+ <outputs>
11
+ - Root cause identification with evidence
12
+ - Recommended fix approach
13
+ - Optional: prompt file for fix implementation
14
+ </outputs>
15
+
16
+ <constraints>
17
+ - MUST gather symptoms before hypothesizing
18
+ - MUST verify hypotheses with evidence before concluding
19
+ - MUST document investigation path for knowledge compounding
20
+ - NEVER guess at root cause without verification
21
+ </constraints>
22
+
23
+ ## STATUS: Work In Progress
24
+
25
+ This flow is under development. Integration points with milestone workflow TBD.
26
+
27
+ Potential integration approaches:
28
+ 1. Patch prompt type: `type: debug` prompts following this flow
29
+ 2. Pre-implementation phase: When initial execution fails
30
+ 3. Emergent debug: When emergent refinement hits blockers
31
+ 4. Coordinator service: "Debug Investigation" option in COORDINATION.md
32
+
33
+ ---
34
+
35
+ ## Phase 1: Symptom Gathering
36
+
37
+ Collect all observable evidence:
38
+
39
+ | Evidence Type | How to Gather |
40
+ |---------------|---------------|
41
+ | Error messages | Exact text, stack traces |
42
+ | Reproduction steps | Minimal sequence to trigger |
43
+ | When it started | Recent commits, config changes |
44
+ | What changed | Git diff, dependency updates |
45
+ | Frequency | Always, intermittent, specific conditions |
46
+
47
+ ```yaml
48
+ symptoms:
49
+ error: "<exact error message>"
50
+ reproduction: ["<step 1>", "<step 2>", "..."]
51
+ frequency: always | intermittent | conditional
52
+ conditions: "<when it occurs>"
53
+ recent_changes: ["<commit>", "<config change>"]
54
+ ```
55
+
56
+ ## Phase 2: Hypothesis Formation
57
+
58
+ Based on symptoms, form 2-3 ranked hypotheses:
59
+
60
+ ```yaml
61
+ hypotheses:
62
+ - id: H1
63
+ description: "<what you think is wrong>"
64
+ confidence: high | medium | low
65
+ evidence_for: ["<symptom that supports>"]
66
+ evidence_against: ["<symptom that contradicts>"]
67
+ verification_method: "<how to confirm/deny>"
68
+
69
+ - id: H2
70
+ description: "<alternative explanation>"
71
+ ...
72
+ ```
73
+
74
+ ## Phase 3: Investigation
75
+
76
+ For each hypothesis (highest confidence first):
77
+
78
+ ### 3.1 Targeted Search
79
+
80
+ - Read `.allhands/flows/shared/CODEBASE_UNDERSTANDING.md` for search approach
81
+ - Focus on areas suggested by hypothesis
82
+ - Use claim verification: read actual code before concluding
83
+
84
+ ### 3.2 Evidence Collection
85
+
86
+ ```yaml
87
+ investigation:
88
+ hypothesis: H1
89
+ files_examined: ["<path>"]
90
+ findings:
91
+ - location: "file.ts:42"
92
+ observation: "<what you found>"
93
+ supports_hypothesis: true | false
94
+ conclusion: confirmed | refuted | inconclusive
95
+ ```
96
+
97
+ ### 3.3 Iteration
98
+
99
+ If inconclusive:
100
+ - Refine hypothesis with new evidence
101
+ - Move to next hypothesis
102
+ - Expand search scope
103
+
104
+ ## Phase 4: Root Cause Confirmation
105
+
106
+ Before declaring root cause:
107
+
108
+ ```yaml
109
+ root_cause:
110
+ description: "<what's actually wrong>"
111
+ location: "file.ts:42"
112
+ evidence:
113
+ - "<specific finding 1>"
114
+ - "<specific finding 2>"
115
+ why_other_hypotheses_wrong:
116
+ H2: "<why H2 was not the cause>"
117
+ reproduction_confirmed: true
118
+ ```
119
+
120
+ ## Phase 5: Fix Recommendation
121
+
122
+ ```yaml
123
+ fix:
124
+ approach: "<how to fix>"
125
+ files_affected: ["<paths>"]
126
+ risk_level: low | medium | high
127
+ testing_approach: "<how to verify fix>"
128
+ regression_concerns: ["<what could break>"]
129
+ ```
130
+
131
+ ## Phase 6: Documentation
132
+
133
+ For knowledge compounding:
134
+
135
+ ### Investigation Summary (for prompt file)
136
+ ```markdown
137
+ ## Debug Investigation
138
+
139
+ **Symptom**: <brief description>
140
+ **Root Cause**: <what was wrong>
141
+ **Investigation Path**: H1 (refuted) → H2 (confirmed)
142
+ **Key Finding**: <location and evidence>
143
+ ```
144
+
145
+ ## Common Debug Patterns
146
+
147
+ | Symptom Pattern | Likely Cause | First Check |
148
+ |-----------------|--------------|-------------|
149
+ | "Works locally, fails in CI" | Environment diff | Env vars, paths, deps |
150
+ | "Intermittent failures" | Race condition | Async timing, shared state |
151
+ | "Started after deploy" | Recent changes | Git diff from last working |
152
+ | "Only affects some users" | Data-dependent | User data differences |
153
+ | "Works sometimes on refresh" | Caching | Cache invalidation logic |
154
+
155
+ ## Anti-Patterns to Avoid
156
+
157
+ | Anti-Pattern | Why It's Bad | Instead |
158
+ |--------------|--------------|---------|
159
+ | Shotgun debugging | Wastes time, creates noise | Form hypothesis first |
160
+ | Assuming error message is cause | Often symptom, not root | Trace back to origin |
161
+ | Skipping reproduction | Can't verify fix | Always reproduce first |
162
+ | Fixing without understanding | Creates new bugs | Understand before changing |
@@ -0,0 +1,62 @@
1
+ <goal>
2
+ Query the simple memory file for relevant learnings from past sessions. Per **Knowledge Compounding**, memories enable reuse of solutions without re-discovery.
3
+ </goal>
4
+
5
+ <inputs>
6
+ - Query keywords or domain
7
+ </inputs>
8
+
9
+ <outputs>
10
+ - Relevant memories with their domains and sources
11
+ </outputs>
12
+
13
+ <constraints>
14
+ - MUST use memories from `docs/memories.md` only
15
+ - MUST filter by domain relevance when provided
16
+ - NEVER fabricate memories - only return what exists in the file
17
+ </constraints>
18
+
19
+ ## Memory File Format
20
+
21
+ The memory file uses a simple table format:
22
+
23
+ ```
24
+ | Name | Domain | Source | Description |
25
+ ```
26
+
27
+ - **Name**: Short identifier for the memory
28
+ - **Domain**: `planning`, `validation`, `implementation`, `harness-tooling`, `ideation`
29
+ - **Source**: `user-steering` (engineer directed) or `agent-inferred` (discovered during work)
30
+ - **Description**: 1-3 sentences of self-contained learning
31
+
32
+ ## Recall Process
33
+
34
+ 1. Read `docs/memories.md`
35
+ 2. If domain filter provided, narrow to matching rows
36
+ 3. Scan descriptions for keyword relevance
37
+ 4. Return matching memories with context
38
+
39
+ ## Usage Contexts
40
+
41
+ | Caller Flow | Query Focus |
42
+ |-------------|-------------|
43
+ | `SPEC_PLANNING.md` | Planning patterns, past decisions |
44
+ | `PROMPT_TASK_EXECUTION.md` | Implementation approaches, solutions |
45
+ | `IDEATION_SCOPING.md` | Similar initiatives, prior engineer preferences |
46
+ | `COMPOUNDING.md` | Verify memory doesn't already exist before adding |
47
+
48
+ ## Relevance Scoring
49
+
50
+ Prioritize memories by:
51
+ 1. **Domain match** - Same domain as current work
52
+ 2. **Keyword overlap** - Description contains query terms
53
+ 3. **Source authority** - `user-steering` > `agent-inferred` for preference-based queries
54
+
55
+ ## Integration with Solutions
56
+
57
+ For more detailed technical solutions, also run:
58
+ ```bash
59
+ ah solutions search "<keywords>"
60
+ ```
61
+
62
+ Memories are lightweight learnings; solutions are detailed problem-solution documentation.
@@ -0,0 +1,131 @@
1
+ #!/bin/bash
2
+ # all-hands: Agentic harness CLI for model-first software development
3
+ #
4
+ # This script provides the `ah` CLI entry point:
5
+ # - Auto-installs dependencies if missing
6
+ # - Loads environment from .env.ai
7
+ # - Routes hook commands through CLI daemon if TUI is running (fast path)
8
+ # - Falls back to TypeScript CLI via tsx (slow path)
9
+
10
+ set -e
11
+
12
+ # SCRIPT_DIR = .allhands/harness/
13
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
14
+ # ALLHANDS_DIR = .allhands/
15
+ ALLHANDS_DIR="$(dirname "$SCRIPT_DIR")"
16
+ # PROJECT_ROOT = parent of .allhands/
17
+ PROJECT_ROOT="$(dirname "$ALLHANDS_DIR")"
18
+
19
+ # Export project root so TypeScript code can resolve paths correctly
20
+ # even when the caller's cwd is different from the project directory.
21
+ # Preserves CLAUDE_PROJECT_DIR if already set by Claude Code.
22
+ export CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$PROJECT_ROOT}"
23
+
24
+ # Load .env.ai from project root if exists
25
+ if [ -f "$PROJECT_ROOT/.env.ai" ]; then
26
+ set -a
27
+ . "$PROJECT_ROOT/.env.ai"
28
+ set +a
29
+ fi
30
+
31
+ # Also check git root for .env.ai (may be different in worktrees)
32
+ GIT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || echo "$PROJECT_ROOT")
33
+ if [ -f "$GIT_ROOT/.env.ai" ] && [ "$GIT_ROOT" != "$PROJECT_ROOT" ]; then
34
+ set -a
35
+ . "$GIT_ROOT/.env.ai"
36
+ set +a
37
+ fi
38
+
39
+ # Auto-install if node_modules missing or package.json changed
40
+ if [ ! -d "$SCRIPT_DIR/node_modules" ] || ! cmp -s "$SCRIPT_DIR/package.json" "$SCRIPT_DIR/node_modules/.package.json.cache" 2>/dev/null; then
41
+ echo "Installing/updating allhands dependencies..." >&2
42
+ if ! npm install --prefix "$SCRIPT_DIR" --legacy-peer-deps 2>/dev/null; then
43
+ echo "ERROR: npm install failed for allhands CLI" >&2
44
+ exit 1
45
+ fi
46
+ cp "$SCRIPT_DIR/package.json" "$SCRIPT_DIR/node_modules/.package.json.cache" 2>/dev/null || true
47
+ fi
48
+
49
+ # CLI daemon socket path
50
+ DAEMON_SOCKET="$SCRIPT_DIR/.cache/cli-daemon.sock"
51
+ SETTINGS_FILE="$ALLHANDS_DIR/settings.json"
52
+
53
+ # Check if daemon is enabled in settings (default: true)
54
+ DAEMON_ENABLED=true
55
+ if [ -f "$SETTINGS_FILE" ]; then
56
+ # Check daemon.enabled in settings.json using jq if available
57
+ if command -v jq >/dev/null 2>&1; then
58
+ # Use explicit check since jq's // operator treats false as falsy
59
+ if [ "$(jq -r 'if .daemon.enabled == false then "false" else "true" end' "$SETTINGS_FILE" 2>/dev/null)" = "false" ]; then
60
+ DAEMON_ENABLED=false
61
+ fi
62
+ else
63
+ # Fallback: look for "daemon".*"enabled": false pattern
64
+ if grep -zoP '"daemon"\s*:\s*\{[^}]*"enabled"\s*:\s*false' "$SETTINGS_FILE" >/dev/null 2>&1; then
65
+ DAEMON_ENABLED=false
66
+ fi
67
+ fi
68
+ fi
69
+
70
+ # Fast path: Route hook commands through daemon if enabled and socket exists
71
+ # Format: ah hooks <category> <name> (e.g., ah hooks context tldr-inject)
72
+ #
73
+ # Use DISABLE_DAEMON=true to force slow path for hooks that need agent env vars
74
+ # (e.g., lifecycle hooks need PROMPT_SCOPED, AGENT_ID which daemon doesn't have)
75
+ if [ "$1" = "hooks" ] && [ "$DAEMON_ENABLED" = "true" ] && [ -S "$DAEMON_SOCKET" ] && [ "$DISABLE_DAEMON" != "true" ]; then
76
+ CATEGORY="$2"
77
+ NAME="$3"
78
+
79
+ if [ -n "$CATEGORY" ] && [ -n "$NAME" ]; then
80
+ # Mark this as a daemon-routed execution
81
+ export AH_VIA_DAEMON=1
82
+
83
+ # Read stdin (hook input JSON)
84
+ INPUT=$(cat)
85
+
86
+ # Build daemon command (use quoted default to avoid bash expansion issue with braces)
87
+ CMD=$(printf '{"cmd":"hook","category":"%s","name":"%s","input":%s}\n' "$CATEGORY" "$NAME" "${INPUT:-"{}"}")
88
+
89
+ # Send to daemon via nc (netcat)
90
+ # Use || true to prevent set -e from exiting on nc failure (stale socket)
91
+ NC_OK=0
92
+ RESPONSE=$(printf '%s' "$CMD" | nc -U "$DAEMON_SOCKET" 2>/dev/null) || NC_OK=$?
93
+
94
+ if [ $NC_OK -eq 0 ] && [ -n "$RESPONSE" ]; then
95
+ # Parse response using jq for proper JSON handling
96
+ if command -v jq >/dev/null 2>&1; then
97
+ SUCCESS=$(echo "$RESPONSE" | jq -r '.success // false' 2>/dev/null)
98
+ OUTPUT=$(echo "$RESPONSE" | jq -r '.output // empty' 2>/dev/null)
99
+
100
+ if [ "$SUCCESS" = "true" ]; then
101
+ if [ -n "$OUTPUT" ]; then
102
+ echo "$OUTPUT"
103
+ fi
104
+ exit 0
105
+ fi
106
+ else
107
+ # Fallback: basic parsing for simple outputs (may fail on complex JSON)
108
+ OUTPUT=$(echo "$RESPONSE" | sed -n 's/.*"output":"\([^"]*\)".*/\1/p')
109
+ if [ -n "$OUTPUT" ]; then
110
+ echo "$OUTPUT" | sed 's/\\n/\n/g; s/\\"/"/g'
111
+ exit 0
112
+ fi
113
+ if echo "$RESPONSE" | grep -q '"success":true'; then
114
+ exit 0
115
+ fi
116
+ fi
117
+ fi
118
+ # Fall through to slow path if daemon failed
119
+ fi
120
+ fi
121
+
122
+ # Slow path: Use tsx for direct TypeScript execution
123
+ # If daemon path was entered but failed, $INPUT holds the consumed stdin - replay it
124
+ if [ -n "$INPUT" ]; then
125
+ # Daemon path was entered but failed - replay consumed stdin
126
+ # Use printf to avoid echo interpreting escape sequences in JSON
127
+ printf '%s' "$INPUT" | "$SCRIPT_DIR/node_modules/.bin/tsx" "$SCRIPT_DIR/src/cli.ts" "$@"
128
+ else
129
+ # Normal slow path - stdin is still available
130
+ exec "$SCRIPT_DIR/node_modules/.bin/tsx" "$SCRIPT_DIR/src/cli.ts" "$@"
131
+ fi