create-hq 5.1.0 → 5.2.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 (299) hide show
  1. package/dist/deps.d.ts +2 -2
  2. package/dist/deps.d.ts.map +1 -1
  3. package/dist/deps.js +138 -29
  4. package/dist/deps.js.map +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/scaffold.d.ts.map +1 -1
  7. package/dist/scaffold.js +16 -26
  8. package/dist/scaffold.js.map +1 -1
  9. package/dist/ui.js +1 -1
  10. package/package.json +3 -6
  11. package/template/.claude/CLAUDE.md +0 -202
  12. package/template/.claude/commands/checkpoint.md +0 -127
  13. package/template/.claude/commands/cleanup.md +0 -307
  14. package/template/.claude/commands/execute-task.md +0 -440
  15. package/template/.claude/commands/exit-plan.md +0 -41
  16. package/template/.claude/commands/handoff.md +0 -97
  17. package/template/.claude/commands/learn.md +0 -218
  18. package/template/.claude/commands/metrics.md +0 -118
  19. package/template/.claude/commands/newworker.md +0 -162
  20. package/template/.claude/commands/nexttask.md +0 -67
  21. package/template/.claude/commands/prd.md +0 -238
  22. package/template/.claude/commands/reanchor.md +0 -51
  23. package/template/.claude/commands/remember.md +0 -126
  24. package/template/.claude/commands/run-project.md +0 -348
  25. package/template/.claude/commands/run.md +0 -110
  26. package/template/.claude/commands/search-reindex.md +0 -62
  27. package/template/.claude/commands/search.md +0 -100
  28. package/template/.claude/commands/setup.md +0 -381
  29. package/template/.claude/scripts/pure-ralph-loop.ps1 +0 -312
  30. package/template/.claude/scripts/pure-ralph-loop.sh +0 -859
  31. package/template/CHANGELOG.md +0 -220
  32. package/template/LICENSE +0 -21
  33. package/template/MIGRATION.md +0 -259
  34. package/template/README.md +0 -368
  35. package/template/data/journal/.gitkeep +0 -0
  36. package/template/docs/images/ascii-banner-options.md +0 -122
  37. package/template/docs/images/hq-banner.svg +0 -105
  38. package/template/knowledge/Ralph/01-overview.md +0 -71
  39. package/template/knowledge/Ralph/02-core-concepts.md +0 -114
  40. package/template/knowledge/Ralph/03-how-ralph-works.md +0 -184
  41. package/template/knowledge/Ralph/04-back-pressure.md +0 -222
  42. package/template/knowledge/Ralph/05-specifications.md +0 -210
  43. package/template/knowledge/Ralph/06-agents-md.md +0 -222
  44. package/template/knowledge/Ralph/07-implementation.md +0 -316
  45. package/template/knowledge/Ralph/08-economics.md +0 -182
  46. package/template/knowledge/Ralph/09-resources.md +0 -145
  47. package/template/knowledge/Ralph/10-claude-code-workflow.md +0 -212
  48. package/template/knowledge/Ralph/11-team-training-guide.md +0 -383
  49. package/template/knowledge/Ralph/README.md +0 -40
  50. package/template/knowledge/ai-security-framework/CONTRIBUTING.md +0 -139
  51. package/template/knowledge/ai-security-framework/GLOSSARY.md +0 -176
  52. package/template/knowledge/ai-security-framework/LICENSE +0 -21
  53. package/template/knowledge/ai-security-framework/QUICK-START.md +0 -172
  54. package/template/knowledge/ai-security-framework/README.md +0 -232
  55. package/template/knowledge/ai-security-framework/checklists/browser-security.md +0 -301
  56. package/template/knowledge/ai-security-framework/checklists/credential-isolation.md +0 -322
  57. package/template/knowledge/ai-security-framework/checklists/incident-response.md +0 -288
  58. package/template/knowledge/ai-security-framework/checklists/pre-flight.md +0 -249
  59. package/template/knowledge/ai-security-framework/checklists/weekly-audit.md +0 -159
  60. package/template/knowledge/ai-security-framework/configs/audit-logging.md +0 -372
  61. package/template/knowledge/ai-security-framework/configs/kill-switches.md +0 -354
  62. package/template/knowledge/ai-security-framework/docs/01-core-principles.md +0 -256
  63. package/template/knowledge/ai-security-framework/docs/02-threat-landscape.md +0 -326
  64. package/template/knowledge/ai-security-framework/docs/03-security-posture.md +0 -250
  65. package/template/knowledge/ai-security-framework/templates/agents-security.md +0 -233
  66. package/template/knowledge/design-styles/README.md +0 -42
  67. package/template/knowledge/design-styles/american-industrial.md +0 -136
  68. package/template/knowledge/design-styles/ethereal-abstract.md +0 -133
  69. package/template/knowledge/design-styles/liminal-portal.md +0 -111
  70. package/template/knowledge/design-styles/swipes/american-industrial/G-3m4YPW0AADdu2.jpeg +0 -0
  71. package/template/knowledge/design-styles/swipes/american-industrial/G-JJlt5WwAABK3K.png +0 -0
  72. package/template/knowledge/design-styles/swipes/american-industrial/G-JJmj5W0AEbJ-7.png +0 -0
  73. package/template/knowledge/design-styles/swipes/american-industrial/G59fgNuXkAAKLJQ (1).jpeg +0 -0
  74. package/template/knowledge/design-styles/swipes/american-industrial/G59fgNuXkAAKLJQ.jpeg +0 -0
  75. package/template/knowledge/design-styles/swipes/american-industrial/G7fVkn3WEAAM-ST.jpeg +0 -0
  76. package/template/knowledge/design-styles/swipes/american-industrial/G8ECO5JWEAIksyn.png +0 -0
  77. package/template/knowledge/design-styles/swipes/american-industrial/G9-3GQSWoAA8eqZ.png +0 -0
  78. package/template/knowledge/design-styles/swipes/american-industrial/G9xEOqrXkAEZRcs.png +0 -0
  79. package/template/knowledge/design-styles/swipes/american-industrial/G_MVeJrXQAA8sx4.jpeg +0 -0
  80. package/template/knowledge/design-styles/swipes/american-industrial/G_RSkmGXkAAgAVZ.png +0 -0
  81. package/template/knowledge/design-styles/swipes/american-industrial/README.md +0 -31
  82. package/template/knowledge/design-styles/swipes/american-industrial/qyqtg7Dq.png +0 -0
  83. package/template/knowledge/dev-team/README.md +0 -35
  84. package/template/knowledge/dev-team/patterns/README.md +0 -34
  85. package/template/knowledge/dev-team/patterns/frontend/react-best-practices.md +0 -178
  86. package/template/knowledge/dev-team/troubleshooting/README.md +0 -31
  87. package/template/knowledge/dev-team/workflows/README.md +0 -49
  88. package/template/knowledge/hq/checkpoint-schema.json +0 -51
  89. package/template/knowledge/hq/index-md-spec.md +0 -74
  90. package/template/knowledge/hq/thread-schema.md +0 -153
  91. package/template/knowledge/hq-core/checkpoint-schema.json +0 -51
  92. package/template/knowledge/hq-core/index-md-spec.md +0 -74
  93. package/template/knowledge/hq-core/thread-schema.md +0 -153
  94. package/template/knowledge/loom/README.md +0 -51
  95. package/template/knowledge/loom/architecture.md +0 -125
  96. package/template/knowledge/loom/code-style.md +0 -169
  97. package/template/knowledge/loom/llm-proxy.md +0 -132
  98. package/template/knowledge/loom/state-machine.md +0 -131
  99. package/template/knowledge/loom/thread-system.md +0 -117
  100. package/template/knowledge/loom/tools.md +0 -94
  101. package/template/knowledge/loom/weaver.md +0 -96
  102. package/template/knowledge/loom/web-frontend.md +0 -131
  103. package/template/knowledge/projects/README.md +0 -72
  104. package/template/knowledge/projects/templates/README.template.md +0 -28
  105. package/template/knowledge/workers/README.md +0 -195
  106. package/template/knowledge/workers/ralph-loop-pattern.md +0 -157
  107. package/template/knowledge/workers/skill-schema.md +0 -182
  108. package/template/knowledge/workers/state-machine.md +0 -102
  109. package/template/knowledge/workers/templates/base-worker.yaml +0 -73
  110. package/template/knowledge/workers/templates/code-worker.yaml +0 -85
  111. package/template/knowledge/workers/templates/skill.yaml +0 -49
  112. package/template/knowledge/workers/templates/social-worker.yaml +0 -70
  113. package/template/modules/examples/full-manifest.yaml +0 -92
  114. package/template/modules/examples/minimal.yaml +0 -14
  115. package/template/modules/modules.yaml +0 -59
  116. package/template/projects/.gitkeep +0 -0
  117. package/template/projects/incorporate-workers-into-pure-ralph/prd.json +0 -88
  118. package/template/projects/pure-ralph-branch-isolation/README.md +0 -114
  119. package/template/projects/pure-ralph-branch-isolation/prd.json +0 -123
  120. package/template/projects/purist-ralph-loop/README.md +0 -148
  121. package/template/projects/purist-ralph-loop/prd.json +0 -135
  122. package/template/projects/ralph-test/prd.json +0 -50
  123. package/template/prompts/pure-ralph-base.md +0 -551
  124. package/template/settings/.gitkeep +0 -0
  125. package/template/settings/pure-ralph.json +0 -42
  126. package/template/social-content/drafts/INDEX.md +0 -21
  127. package/template/social-content/drafts/linkedin/.gitkeep +0 -1
  128. package/template/social-content/drafts/x/.gitkeep +0 -1
  129. package/template/social-content/images/.gitkeep +0 -1
  130. package/template/starter-projects/code-worker/README.md +0 -97
  131. package/template/starter-projects/code-worker/prd.json +0 -45
  132. package/template/starter-projects/personal-assistant/README.md +0 -42
  133. package/template/starter-projects/personal-assistant/prd.json +0 -43
  134. package/template/starter-projects/social-media/README.md +0 -60
  135. package/template/starter-projects/social-media/prd.json +0 -43
  136. package/template/workers/content-brand/README.md +0 -59
  137. package/template/workers/content-brand/skills/messaging-alignment.md +0 -91
  138. package/template/workers/content-brand/skills/tone-check.md +0 -76
  139. package/template/workers/content-brand/skills/voice-analysis.md +0 -68
  140. package/template/workers/content-brand/worker.yaml +0 -81
  141. package/template/workers/content-legal/README.md +0 -80
  142. package/template/workers/content-legal/skills/claim-substantiation.md +0 -150
  143. package/template/workers/content-legal/skills/compliance-scan.md +0 -123
  144. package/template/workers/content-legal/skills/disclaimer-check.md +0 -146
  145. package/template/workers/content-legal/worker.yaml +0 -118
  146. package/template/workers/content-product/README.md +0 -77
  147. package/template/workers/content-product/skills/claim-verification.md +0 -96
  148. package/template/workers/content-product/skills/feature-accuracy.md +0 -117
  149. package/template/workers/content-product/skills/stats-check.md +0 -128
  150. package/template/workers/content-product/worker.yaml +0 -97
  151. package/template/workers/content-sales/README.md +0 -70
  152. package/template/workers/content-sales/skills/conversion-analysis.md +0 -96
  153. package/template/workers/content-sales/skills/cta-audit.md +0 -107
  154. package/template/workers/content-sales/skills/value-prop-check.md +0 -114
  155. package/template/workers/content-sales/worker.yaml +0 -93
  156. package/template/workers/content-shared/cli.ts +0 -242
  157. package/template/workers/content-shared/index.ts +0 -234
  158. package/template/workers/content-shared/lib/accuracy-analyzer.ts +0 -661
  159. package/template/workers/content-shared/lib/analyze.ts +0 -370
  160. package/template/workers/content-shared/lib/brand-analyzer.ts +0 -526
  161. package/template/workers/content-shared/lib/cms-integration.ts +0 -446
  162. package/template/workers/content-shared/lib/compliance-analyzer.ts +0 -655
  163. package/template/workers/content-shared/lib/conversion-analyzer.ts +0 -555
  164. package/template/workers/content-shared/lib/github-integration.ts +0 -582
  165. package/template/workers/content-shared/lib/output.ts +0 -373
  166. package/template/workers/content-shared/lib/parser.ts +0 -771
  167. package/template/workers/content-shared/lib/priority.ts +0 -439
  168. package/template/workers/content-shared/lib/recommendations.ts +0 -512
  169. package/template/workers/content-shared/lib/reporter.ts +0 -749
  170. package/template/workers/content-shared/lib/restructure.ts +0 -664
  171. package/template/workers/content-shared/lib/scorer.ts +0 -140
  172. package/template/workers/content-shared/lib/types.ts +0 -227
  173. package/template/workers/content-shared/lib/variants.ts +0 -595
  174. package/template/workers/content-shared/package.json +0 -51
  175. package/template/workers/content-shared/pnpm-lock.yaml +0 -39
  176. package/template/workers/content-shared/test/sample-page.json +0 -115
  177. package/template/workers/content-shared/tsconfig.json +0 -20
  178. package/template/workers/dev-team/README.md +0 -166
  179. package/template/workers/dev-team/_template.yaml +0 -70
  180. package/template/workers/dev-team/architect/package.json +0 -27
  181. package/template/workers/dev-team/architect/skills/api-design.md +0 -89
  182. package/template/workers/dev-team/architect/skills/refactor-plan.md +0 -96
  183. package/template/workers/dev-team/architect/skills/system-design.md +0 -100
  184. package/template/workers/dev-team/architect/src/index.ts +0 -49
  185. package/template/workers/dev-team/architect/src/mcp-server.ts +0 -122
  186. package/template/workers/dev-team/architect/src/skills/api-design.ts +0 -316
  187. package/template/workers/dev-team/architect/src/skills/refactor-plan.ts +0 -264
  188. package/template/workers/dev-team/architect/src/skills/system-design.ts +0 -212
  189. package/template/workers/dev-team/architect/tsconfig.json +0 -19
  190. package/template/workers/dev-team/architect/worker.yaml +0 -128
  191. package/template/workers/dev-team/backend-dev/package-lock.json +0 -1252
  192. package/template/workers/dev-team/backend-dev/package.json +0 -27
  193. package/template/workers/dev-team/backend-dev/skills/implement-endpoint.md +0 -70
  194. package/template/workers/dev-team/backend-dev/skills/implement-service.md +0 -62
  195. package/template/workers/dev-team/backend-dev/src/index.ts +0 -51
  196. package/template/workers/dev-team/backend-dev/src/mcp-server.ts +0 -109
  197. package/template/workers/dev-team/backend-dev/src/skills/implement-endpoint.ts +0 -122
  198. package/template/workers/dev-team/backend-dev/src/skills/implement-service.ts +0 -126
  199. package/template/workers/dev-team/backend-dev/tsconfig.json +0 -19
  200. package/template/workers/dev-team/backend-dev/worker.yaml +0 -128
  201. package/template/workers/dev-team/code-reviewer/package-lock.json +0 -1080
  202. package/template/workers/dev-team/code-reviewer/package.json +0 -24
  203. package/template/workers/dev-team/code-reviewer/skills/merge-to-production.md +0 -61
  204. package/template/workers/dev-team/code-reviewer/skills/merge-to-staging.md +0 -54
  205. package/template/workers/dev-team/code-reviewer/skills/request-changes.md +0 -63
  206. package/template/workers/dev-team/code-reviewer/skills/review-pr.md +0 -77
  207. package/template/workers/dev-team/code-reviewer/src/index.ts +0 -56
  208. package/template/workers/dev-team/code-reviewer/src/mcp-server.ts +0 -101
  209. package/template/workers/dev-team/code-reviewer/tsconfig.json +0 -19
  210. package/template/workers/dev-team/code-reviewer/worker.yaml +0 -90
  211. package/template/workers/dev-team/database-dev/package.json +0 -22
  212. package/template/workers/dev-team/database-dev/skills/create-schema.md +0 -48
  213. package/template/workers/dev-team/database-dev/src/index.ts +0 -50
  214. package/template/workers/dev-team/database-dev/src/mcp-server.ts +0 -76
  215. package/template/workers/dev-team/database-dev/tsconfig.json +0 -18
  216. package/template/workers/dev-team/database-dev/worker.yaml +0 -90
  217. package/template/workers/dev-team/frontend-dev/package.json +0 -22
  218. package/template/workers/dev-team/frontend-dev/skills/create-component.md +0 -26
  219. package/template/workers/dev-team/frontend-dev/src/index.ts +0 -50
  220. package/template/workers/dev-team/frontend-dev/src/mcp-server.ts +0 -77
  221. package/template/workers/dev-team/frontend-dev/tsconfig.json +0 -18
  222. package/template/workers/dev-team/frontend-dev/worker.yaml +0 -132
  223. package/template/workers/dev-team/infra-dev/package.json +0 -24
  224. package/template/workers/dev-team/infra-dev/skills/add-monitoring.md +0 -73
  225. package/template/workers/dev-team/infra-dev/skills/configure-deployment.md +0 -80
  226. package/template/workers/dev-team/infra-dev/skills/create-dockerfile.md +0 -62
  227. package/template/workers/dev-team/infra-dev/skills/setup-cicd.md +0 -63
  228. package/template/workers/dev-team/infra-dev/src/index.ts +0 -55
  229. package/template/workers/dev-team/infra-dev/src/mcp-server.ts +0 -82
  230. package/template/workers/dev-team/infra-dev/tsconfig.json +0 -19
  231. package/template/workers/dev-team/infra-dev/worker.yaml +0 -92
  232. package/template/workers/dev-team/knowledge-curator/package.json +0 -24
  233. package/template/workers/dev-team/knowledge-curator/skills/curate-troubleshooting.md +0 -63
  234. package/template/workers/dev-team/knowledge-curator/skills/process-learnings.md +0 -61
  235. package/template/workers/dev-team/knowledge-curator/skills/sync-documentation.md +0 -76
  236. package/template/workers/dev-team/knowledge-curator/skills/update-patterns.md +0 -63
  237. package/template/workers/dev-team/knowledge-curator/src/index.ts +0 -53
  238. package/template/workers/dev-team/knowledge-curator/src/mcp-server.ts +0 -92
  239. package/template/workers/dev-team/knowledge-curator/tsconfig.json +0 -19
  240. package/template/workers/dev-team/knowledge-curator/worker.yaml +0 -80
  241. package/template/workers/dev-team/motion-designer/package.json +0 -22
  242. package/template/workers/dev-team/motion-designer/skills/add-animation.md +0 -25
  243. package/template/workers/dev-team/motion-designer/skills/generate-image.md +0 -36
  244. package/template/workers/dev-team/motion-designer/src/index.ts +0 -63
  245. package/template/workers/dev-team/motion-designer/src/mcp-server.ts +0 -79
  246. package/template/workers/dev-team/motion-designer/tsconfig.json +0 -18
  247. package/template/workers/dev-team/motion-designer/worker.yaml +0 -84
  248. package/template/workers/dev-team/product-planner/queue.json +0 -4
  249. package/template/workers/dev-team/product-planner/worker.yaml +0 -220
  250. package/template/workers/dev-team/project-manager/package-lock.json +0 -1252
  251. package/template/workers/dev-team/project-manager/package.json +0 -27
  252. package/template/workers/dev-team/project-manager/skills/create-prd.md +0 -66
  253. package/template/workers/dev-team/project-manager/skills/next-issue.md +0 -51
  254. package/template/workers/dev-team/project-manager/skills/project-status.md +0 -59
  255. package/template/workers/dev-team/project-manager/skills/update-learnings.md +0 -65
  256. package/template/workers/dev-team/project-manager/src/index.ts +0 -54
  257. package/template/workers/dev-team/project-manager/src/mcp-server.ts +0 -207
  258. package/template/workers/dev-team/project-manager/src/skills/create-prd.ts +0 -86
  259. package/template/workers/dev-team/project-manager/src/skills/next-issue.ts +0 -137
  260. package/template/workers/dev-team/project-manager/src/skills/project-status.ts +0 -131
  261. package/template/workers/dev-team/project-manager/src/skills/update-learnings.ts +0 -94
  262. package/template/workers/dev-team/project-manager/tsconfig.json +0 -19
  263. package/template/workers/dev-team/project-manager/worker.yaml +0 -96
  264. package/template/workers/dev-team/qa-tester/package.json +0 -24
  265. package/template/workers/dev-team/qa-tester/skills/create-demo-account.md +0 -36
  266. package/template/workers/dev-team/qa-tester/skills/run-tests.md +0 -36
  267. package/template/workers/dev-team/qa-tester/skills/write-test.md +0 -27
  268. package/template/workers/dev-team/qa-tester/src/index.ts +0 -61
  269. package/template/workers/dev-team/qa-tester/src/mcp-server.ts +0 -88
  270. package/template/workers/dev-team/qa-tester/tsconfig.json +0 -18
  271. package/template/workers/dev-team/qa-tester/worker.yaml +0 -116
  272. package/template/workers/dev-team/task-executor/package-lock.json +0 -1252
  273. package/template/workers/dev-team/task-executor/package.json +0 -27
  274. package/template/workers/dev-team/task-executor/skills/analyze-issue.md +0 -101
  275. package/template/workers/dev-team/task-executor/skills/execute.md +0 -133
  276. package/template/workers/dev-team/task-executor/skills/report-learnings.md +0 -106
  277. package/template/workers/dev-team/task-executor/skills/validate-completion.md +0 -121
  278. package/template/workers/dev-team/task-executor/src/index.ts +0 -54
  279. package/template/workers/dev-team/task-executor/src/mcp-server.ts +0 -139
  280. package/template/workers/dev-team/task-executor/src/skills/analyze-issue.ts +0 -219
  281. package/template/workers/dev-team/task-executor/src/skills/execute.ts +0 -132
  282. package/template/workers/dev-team/task-executor/src/skills/report-learnings.ts +0 -119
  283. package/template/workers/dev-team/task-executor/src/skills/validate-completion.ts +0 -142
  284. package/template/workers/dev-team/task-executor/tsconfig.json +0 -19
  285. package/template/workers/dev-team/task-executor/worker.yaml +0 -110
  286. package/template/workers/registry.yaml +0 -171
  287. package/template/workers/security-scanner/README.md +0 -73
  288. package/template/workers/security-scanner/skills/pre-deploy-check.md +0 -205
  289. package/template/workers/security-scanner/worker.yaml +0 -26
  290. package/template/workspace/checkpoints/.gitkeep +0 -0
  291. package/template/workspace/content-ideas/inbox.jsonl +0 -0
  292. package/template/workspace/drafts/.gitkeep +0 -0
  293. package/template/workspace/learnings/.gitkeep +0 -3
  294. package/template/workspace/orchestrator/.gitkeep +0 -0
  295. package/template/workspace/ralph-test/COMPLETE.md +0 -18
  296. package/template/workspace/ralph-test/hello.txt +0 -2
  297. package/template/workspace/reports/.gitkeep +0 -0
  298. package/template/workspace/scratch/.gitkeep +0 -0
  299. package/template/workspace/threads/.gitkeep +0 -3
package/dist/deps.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare function checkDeps(): {
1
+ export declare function checkDeps(): Promise<{
2
2
  allRequired: boolean;
3
- };
3
+ }>;
4
4
  //# sourceMappingURL=deps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"AAqDA,wBAAgB,SAAS,IAAI;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,CAoBpD"}
1
+ {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"AA4IA,wBAAsB,SAAS,IAAI,OAAO,CAAC;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC,CAkDnE"}
package/dist/deps.js CHANGED
@@ -1,63 +1,172 @@
1
+ import * as os from "os";
1
2
  import { execSync } from "child_process";
2
- import { success, warn, info } from "./ui.js";
3
+ import { createInterface } from "readline";
4
+ import { success, warn, info, step } from "./ui.js";
5
+ function getPlatform() {
6
+ const p = os.platform();
7
+ if (p === "darwin")
8
+ return "macos";
9
+ if (p === "win32")
10
+ return "windows";
11
+ return "linux";
12
+ }
13
+ function hasBrew() {
14
+ try {
15
+ execSync("brew --version", { stdio: "pipe" });
16
+ return true;
17
+ }
18
+ catch {
19
+ return false;
20
+ }
21
+ }
22
+ function hasWinget() {
23
+ try {
24
+ execSync("winget --version", { stdio: "pipe" });
25
+ return true;
26
+ }
27
+ catch {
28
+ return false;
29
+ }
30
+ }
31
+ function hasChoco() {
32
+ try {
33
+ execSync("choco --version", { stdio: "pipe" });
34
+ return true;
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
3
40
  const deps = [
4
- {
5
- name: "Node.js",
6
- command: "node --version",
7
- required: true,
8
- installHint: "https://nodejs.org",
9
- },
10
41
  {
11
42
  name: "Claude Code CLI",
12
- command: "claude --version",
43
+ check: "claude --version",
13
44
  required: true,
14
- installHint: "npm install -g @anthropic-ai/claude-code",
45
+ getInstallOptions: () => [
46
+ { cmd: "npm install -g @anthropic-ai/claude-code", label: "npm" },
47
+ ],
48
+ manualHint: () => "npm install -g @anthropic-ai/claude-code",
15
49
  },
16
50
  {
17
51
  name: "qmd (search)",
18
- command: "qmd --version",
19
- required: true,
20
- installHint: "brew install tobi/tap/qmd",
21
- },
22
- {
23
- name: "gh CLI",
24
- command: "gh --version",
52
+ check: "qmd --version",
25
53
  required: false,
26
- installHint: "brew install gh",
54
+ getInstallOptions: (platform) => {
55
+ const options = [];
56
+ if (platform === "macos" && hasBrew()) {
57
+ options.push({ cmd: "brew install tobi/tap/qmd", label: "Homebrew" });
58
+ }
59
+ if (platform === "linux" && hasBrew()) {
60
+ options.push({ cmd: "brew install tobi/tap/qmd", label: "Linuxbrew" });
61
+ }
62
+ // qmd can also be installed via go install or binary download
63
+ return options;
64
+ },
65
+ manualHint: () => "See https://github.com/tobi/qmd for install instructions",
27
66
  },
28
67
  {
29
- name: "Vercel CLI",
30
- command: "vercel --version",
68
+ name: "gh CLI",
69
+ check: "gh --version",
31
70
  required: false,
32
- installHint: "npm install -g vercel",
71
+ getInstallOptions: (platform) => {
72
+ const options = [];
73
+ if (platform === "macos" && hasBrew()) {
74
+ options.push({ cmd: "brew install gh", label: "Homebrew" });
75
+ }
76
+ if (platform === "windows") {
77
+ if (hasWinget()) {
78
+ options.push({ cmd: "winget install --id GitHub.cli", label: "winget" });
79
+ }
80
+ if (hasChoco()) {
81
+ options.push({ cmd: "choco install gh", label: "Chocolatey" });
82
+ }
83
+ }
84
+ if (platform === "linux" && hasBrew()) {
85
+ options.push({ cmd: "brew install gh", label: "Linuxbrew" });
86
+ }
87
+ return options;
88
+ },
89
+ manualHint: () => "See https://cli.github.com for install instructions",
33
90
  },
34
91
  ];
35
92
  function checkCommand(command) {
36
93
  try {
37
94
  const output = execSync(command, { stdio: "pipe", encoding: "utf-8" });
38
- const version = output.trim().split("\n")[0];
39
- return version;
95
+ return output.trim().split("\n")[0];
40
96
  }
41
97
  catch {
42
98
  return null;
43
99
  }
44
100
  }
45
- export function checkDeps() {
101
+ async function confirm(question, defaultYes = true) {
102
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
103
+ const hint = defaultYes ? "Y/n" : "y/N";
104
+ return new Promise((resolve) => {
105
+ rl.question(` ? ${question} (${hint}) `, (answer) => {
106
+ rl.close();
107
+ if (!answer.trim())
108
+ return resolve(defaultYes);
109
+ resolve(answer.trim().toLowerCase().startsWith("y"));
110
+ });
111
+ });
112
+ }
113
+ function tryInstall(cmd, name) {
114
+ try {
115
+ step(`Installing ${name}...`);
116
+ execSync(cmd, { stdio: "inherit", timeout: 120000 });
117
+ success(`Installed ${name}`);
118
+ return true;
119
+ }
120
+ catch {
121
+ warn(`Failed to install ${name}`);
122
+ return false;
123
+ }
124
+ }
125
+ export async function checkDeps() {
126
+ const platform = getPlatform();
46
127
  console.log();
47
128
  console.log(" Checking dependencies...");
48
129
  let allRequired = true;
49
130
  for (const dep of deps) {
50
- const version = checkCommand(dep.command);
131
+ const version = checkCommand(dep.check);
51
132
  if (version) {
52
133
  success(`${dep.name} ${version}`);
134
+ continue;
53
135
  }
54
- else if (dep.required) {
55
- warn(`${dep.name} not found`);
56
- info(`Install: ${dep.installHint}`);
57
- allRequired = false;
136
+ const installOptions = dep.getInstallOptions(platform);
137
+ if (installOptions.length > 0) {
138
+ // We have at least one auto-install option
139
+ const option = installOptions[0]; // use the first (preferred) option
140
+ const install = await confirm(`${dep.name} not found. Install via ${option.label}?`);
141
+ if (install) {
142
+ const ok = tryInstall(option.cmd, dep.name);
143
+ if (!ok) {
144
+ info(`Manual install: ${dep.manualHint(platform)}`);
145
+ if (dep.required)
146
+ allRequired = false;
147
+ }
148
+ }
149
+ else {
150
+ if (dep.required) {
151
+ warn(`${dep.name} is required`);
152
+ info(`Install later: ${dep.manualHint(platform)}`);
153
+ allRequired = false;
154
+ }
155
+ else {
156
+ info(`Skipped ${dep.name} (optional)`);
157
+ }
158
+ }
58
159
  }
59
160
  else {
60
- info(`${dep.name} (optional) ${dep.installHint}`);
161
+ // No auto-install available for this platform
162
+ if (dep.required) {
163
+ warn(`${dep.name} not found`);
164
+ info(`Install: ${dep.manualHint(platform)}`);
165
+ allRequired = false;
166
+ }
167
+ else {
168
+ info(`${dep.name} (optional) — ${dep.manualHint(platform)}`);
169
+ }
61
170
  }
62
171
  }
63
172
  return { allRequired };
package/dist/deps.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"deps.js","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAS9C,MAAM,IAAI,GAAU;IAClB;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,gBAAgB;QACzB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,oBAAoB;KAClC;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,kBAAkB;QAC3B,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,0CAA0C;KACxD;IACD;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,eAAe;QACxB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,2BAA2B;KACzC;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,cAAc;QACvB,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,iBAAiB;KAC/B;IACD;QACE,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,kBAAkB;QAC3B,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,uBAAuB;KACrC;CACF,CAAC;AAEF,SAAS,YAAY,CAAC,OAAe;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAE1C,IAAI,WAAW,GAAG,IAAI,CAAC;IAEvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,YAAY,CAAC,CAAC;YAC9B,IAAI,CAAC,YAAY,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACpC,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,iBAAiB,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"deps.js","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ const program = new Command();
5
5
  program
6
6
  .name("create-hq")
7
7
  .description("Create a new HQ — Personal OS for AI Workers")
8
- .version("5.1.0")
8
+ .version("5.2.0")
9
9
  .argument("[directory]", "where to create HQ", "hq")
10
10
  .option("--skip-deps", "skip dependency checks")
11
11
  .option("--skip-cli", "don't install @indigoai-us/hq-cli globally")
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAYA,UAAU,eAAe;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AA6ED,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CA8Kf"}
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAaA,UAAU,eAAe;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAyED,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAmKf"}
package/dist/scaffold.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import * as path from "path";
2
2
  import * as os from "os";
3
- import fs from "fs-extra";
3
+ import * as fs from "fs-extra";
4
4
  import { createInterface } from "readline";
5
5
  import { banner, success, warn, step, nextSteps, info } from "./ui.js";
6
6
  import { checkDeps } from "./deps.js";
7
+ import { initGit, hasGit } from "./git.js";
7
8
  import { fileURLToPath } from "url";
8
9
  import { execSync, spawnSync } from "child_process";
9
10
  const __filename = fileURLToPath(import.meta.url);
@@ -29,7 +30,6 @@ const HQ_REPO_URL = "https://github.com/indigoai-us/hq.git";
29
30
  /**
30
31
  * Try to fetch the latest HQ template from GitHub.
31
32
  * Returns the path to the template/ dir inside a temp clone, or null on failure.
32
- * The caller is responsible for cleaning up the temp dir after copying.
33
33
  */
34
34
  function fetchRemoteTemplate() {
35
35
  const tmpDir = path.join(os.tmpdir(), `hq-template-${Date.now()}`);
@@ -42,12 +42,10 @@ function fetchRemoteTemplate() {
42
42
  if (fs.existsSync(templatePath) && fs.existsSync(path.join(templatePath, ".claude"))) {
43
43
  return { templateDir: templatePath, cleanupDir: tmpDir };
44
44
  }
45
- // Template dir not found in repo — clean up
46
45
  fs.removeSync(tmpDir);
47
46
  return null;
48
47
  }
49
48
  catch {
50
- // Git clone failed (no access, no git, offline) — fall back to bundled
51
49
  try {
52
50
  fs.removeSync(tmpDir);
53
51
  }
@@ -60,7 +58,6 @@ function fetchRemoteTemplate() {
60
58
  * falls back to the bundled template in the npm package.
61
59
  */
62
60
  function getTemplateDir() {
63
- // Try fetching latest from GitHub
64
61
  const remote = fetchRemoteTemplate();
65
62
  if (remote) {
66
63
  return { templateDir: remote.templateDir, cleanupDir: remote.cleanupDir, source: "github" };
@@ -108,7 +105,6 @@ export async function scaffold(directory, options) {
108
105
  await fs.copy(templateDir, targetDir, {
109
106
  filter: (src) => {
110
107
  const rel = path.relative(templateDir, src);
111
- // Skip git internals and node_modules
112
108
  if (rel.includes(".git/") || rel.includes("node_modules/"))
113
109
  return false;
114
110
  return true;
@@ -130,9 +126,17 @@ export async function scaffold(directory, options) {
130
126
  .filter((f) => String(f).endsWith("worker.yaml")).length
131
127
  : 0;
132
128
  success(`Copied template (${commandCount} commands, ${workerCount} workers)`);
133
- // 3. Check dependencies
129
+ // 3. Git init
130
+ if (hasGit()) {
131
+ initGit(targetDir);
132
+ success("Initialized git repository");
133
+ }
134
+ else {
135
+ warn("git not found — skipping git init");
136
+ }
137
+ // 4. Check dependencies and install missing ones
134
138
  if (!options.skipDeps) {
135
- checkDeps();
139
+ await checkDeps();
136
140
  }
137
141
  // 5. Install hq-cli
138
142
  if (!options.skipCli) {
@@ -149,12 +153,12 @@ export async function scaffold(directory, options) {
149
153
  }
150
154
  }
151
155
  }
152
- // 5. Cloud sync + session setup
156
+ // 6. Cloud setup
153
157
  if (!options.skipCloud) {
154
158
  console.log();
155
159
  const setupCloud = await confirm("Set up HQ Cloud? (syncs your HQ files and enables remote AI sessions)");
156
160
  if (setupCloud) {
157
- // Step 5a: Authenticate with Clerk
161
+ // 6a: Authenticate with Clerk
158
162
  let authOk = false;
159
163
  try {
160
164
  step("Authenticating with HQ Cloud...");
@@ -173,15 +177,13 @@ export async function scaffold(directory, options) {
173
177
  catch {
174
178
  warn("Could not run hq auth login — you can retry later with: hq auth login");
175
179
  }
176
- // Step 5b: Upload HQ files to cloud
180
+ // 6b: Upload HQ files to cloud
177
181
  if (authOk) {
178
- let uploadOk = false;
179
182
  try {
180
183
  step("Uploading HQ files to cloud...");
181
184
  const uploadResult = spawnSync("hq", ["cloud", "upload", "--hq-root", targetDir, "--on-conflict", "merge"], { stdio: "inherit", shell: true });
182
185
  if (uploadResult.status === 0) {
183
186
  success("HQ files uploaded to cloud");
184
- uploadOk = true;
185
187
  }
186
188
  else {
187
189
  warn("Upload did not complete — you can run later with: hq cloud upload");
@@ -190,20 +192,8 @@ export async function scaffold(directory, options) {
190
192
  catch {
191
193
  warn("Could not upload files — you can run later with: hq cloud upload");
192
194
  }
193
- // Step 5c: Verify sync is working
194
- if (uploadOk) {
195
- try {
196
- const statusResult = spawnSync("hq", ["sync", "status"], { stdio: "inherit", shell: true, cwd: targetDir });
197
- if (statusResult.status === 0) {
198
- success("Cloud sync is configured and working");
199
- }
200
- }
201
- catch {
202
- // Non-fatal — sync status is informational
203
- }
204
- }
205
195
  }
206
- // Step 5d: Set up Claude token for cloud sessions
196
+ // 6c: Set up Claude token for cloud sessions
207
197
  if (authOk) {
208
198
  console.log();
209
199
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
package/dist/ui.js CHANGED
@@ -8,7 +8,7 @@ export function banner() {
8
8
  console.log(chalk.bold.white(" ██ ██ ██████ "));
9
9
  console.log(chalk.dim(" ▀▀ "));
10
10
  console.log();
11
- console.log(chalk.dim(" Personal OS for AI Workers") + chalk.dim(" v5.1.0"));
11
+ console.log(chalk.dim(" Personal OS for AI Workers") + chalk.dim(" v5.2.0"));
12
12
  console.log();
13
13
  }
14
14
  export function success(msg) {
package/package.json CHANGED
@@ -1,20 +1,17 @@
1
1
  {
2
2
  "name": "create-hq",
3
- "version": "5.1.0",
3
+ "version": "5.2.0",
4
4
  "description": "Create a new HQ — Personal OS for AI Workers",
5
5
  "bin": {
6
6
  "create-hq": "./dist/index.js"
7
7
  },
8
8
  "files": [
9
- "dist",
10
- "template"
9
+ "dist"
11
10
  ],
12
11
  "scripts": {
13
12
  "build": "tsc",
14
13
  "typecheck": "tsc --noEmit",
15
- "clean": "rm -rf dist",
16
- "prepack": "node -e \"require('fs').cpSync('../../template','./template',{recursive:true})\"",
17
- "postpack": "node -e \"require('fs').rmSync('./template',{recursive:true,force:true})\""
14
+ "clean": "rm -rf dist"
18
15
  },
19
16
  "dependencies": {
20
17
  "chalk": "^5.3.0",
@@ -1,202 +0,0 @@
1
- # HQ - Personal OS for AI Workers
2
-
3
- Personal OS for orchestrating work across companies, workers, and AI.
4
-
5
- ## Key Files
6
-
7
- - `INDEX.md` - Root directory map, recent threads, workers (start here)
8
- - `USER-GUIDE.md` - Commands, workers, typical session
9
- - `agents.md` - Your profile, preferences, companies (load for writing/communication tasks)
10
- - `workers/registry.yaml` - Worker index
11
-
12
- ## INDEX.md System
13
-
14
- Hierarchical INDEX.md files provide a navigable map of HQ. Read parent INDEX before diving into subdirectories.
15
-
16
- **Key indexes:** `projects/INDEX.md`, `workspace/orchestrator/INDEX.md`, `companies/*/knowledge/INDEX.md`, `workers/*/INDEX.md`, `knowledge/INDEX.md`, `workspace/reports/INDEX.md`
17
-
18
- **Spec:** `knowledge/hq-core/index-md-spec.md`
19
- **Rebuild all:** `/cleanup --reindex`
20
- **Auto-updated by:** `/checkpoint`, `/handoff`, `/reanchor`, `/prd`, `/run-project`, `/newworker`, content commands
21
-
22
- ## Structure
23
-
24
- ```
25
- HQ/
26
- ├── .claude/commands/ # Slash commands (17, visibility: public|private in frontmatter)
27
- ├── agents.md # Your profile
28
- ├── companies/ # Company-scoped resources (optional)
29
- │ └── {company}/ # settings/, data/, knowledge/
30
- ├── knowledge/ # HQ-level (Ralph, workers, security, projects)
31
- ├── projects/ # Project PRDs
32
- ├── workers/ # Worker definitions
33
- │ ├── dev-team/ # 12 code workers
34
- │ └── content-*/ # 5 content workers
35
- ├── social-content/ # Content drafts
36
- │ └── drafts/ # x/, linkedin/
37
- └── workspace/
38
- ├── checkpoints/ # Manual saves
39
- ├── threads/ # Auto-saved sessions
40
- ├── orchestrator/ # Project state
41
- ├── learnings/ # Task insights (event log)
42
- └── content-ideas/ # Idea capture
43
- ```
44
-
45
- ## Workers
46
-
47
- Workers are autonomous agents with defined skills. They *do things*.
48
-
49
- | Type | Purpose | Examples |
50
- |------|---------|----------|
51
- | CodeWorker | Implement features, fix bugs | dev-team/* |
52
- | ContentWorker | Draft content, maintain voice | content-brand, content-sales |
53
- | SocialWorker | Post to platforms | x-worker |
54
- | ResearchWorker | Analysis, market research | analyst |
55
- | OpsWorker | Reports, automation | cfo-worker |
56
-
57
- **Run a worker:** `/run {worker} {skill}`
58
-
59
- **Build a worker:** `/newworker`
60
-
61
- ## Commands
62
-
63
- ### Session Management
64
- | Command | Purpose |
65
- |---------|---------|
66
- | `/checkpoint` | Save state + context status |
67
- | `/handoff` | Prepare for fresh session |
68
- | `/reanchor` | Pause and realign |
69
- | `/nexttask` | Find next thing to work on |
70
- | `/remember` | Capture learnings as rules in relevant files |
71
- | `/learn` | Auto-capture and classify learnings from task execution |
72
-
73
- ### Projects
74
- | Command | Purpose |
75
- |---------|---------|
76
- | `/prd` | Generate PRD through discovery |
77
- | `/run-project` | Execute project via Ralph loop |
78
- | `/execute-task` | Run single task with workers |
79
-
80
- ### Workers
81
- | Command | Purpose |
82
- |---------|---------|
83
- | `/run` | List/execute workers |
84
- | `/newworker` | Create new worker |
85
- | `/metrics` | View execution metrics |
86
-
87
- ### System
88
- | Command | Purpose |
89
- |---------|---------|
90
- | `/search` | Semantic + full-text search across HQ (qmd-powered) |
91
- | `/search-reindex` | Reindex and re-embed HQ for qmd search |
92
- | `/cleanup` | Audit and clean HQ |
93
- | `/setup` | Interactive setup wizard |
94
- | `/exit-plan` | Force exit from plan mode |
95
-
96
- ## Knowledge Repos
97
-
98
- Knowledge folders can be their own git repos, symlinked into HQ. This enables independent versioning, sharing, and publishing per knowledge base.
99
-
100
- **Convention:** Repos live in `repos/public/` or `repos/private/`. Symlinks in `knowledge/` and `companies/*/knowledge` point to them. The symlinks are tracked by HQ git; the repo contents are gitignored.
101
-
102
- **Reading/searching:** Transparent. `qmd`, `Glob`, `Grep`, `Read` all follow symlinks.
103
-
104
- **Committing knowledge changes:** Changes show in `git status` of the *target repo* (not HQ). To commit:
105
- 1. `cd` to the symlink target (e.g. `repos/public/knowledge-ralph/`)
106
- 2. `git add`, `git commit`, `git push` in that repo
107
-
108
- **Adding new knowledge:** Create repo in `repos/{public|private}/knowledge-{name}`, symlink into the appropriate knowledge path.
109
-
110
- ## Search (qmd)
111
-
112
- HQ can be indexed with [qmd](https://github.com/tobi/qmd) for local semantic + full-text search.
113
-
114
- **When to search:** Before any planning, research, or context-gathering task, search HQ first with `qmd` to find relevant knowledge, workers, skills, and prior work.
115
-
116
- **Commands (run via Bash tool):**
117
- - `qmd search "<query>" --json -n 10` — BM25 keyword search (fast, default)
118
- - `qmd vsearch "<query>" --json -n 10` — semantic/conceptual search
119
- - `qmd query "<query>" --json -n 10` — hybrid BM25 + vector + re-ranking (best quality, slower)
120
-
121
- **Slash commands:** `/search <query>`, `/search-reindex`
122
-
123
- ### Search rules (all commands/skills must follow)
124
-
125
- | Need | Tool | Example |
126
- |------|------|---------|
127
- | Find HQ content by topic | `qmd search` or `qmd vsearch` | "Find knowledge about API integration" |
128
- | Find files by path pattern | `Glob` | `workers/*/worker.yaml`, `projects/*/prd.json` |
129
- | Search code in `repos/` | `Grep` | Pattern matching in source code |
130
- | Validate structured files | `grep` in Bash | Checking YAML fields, git branch filtering |
131
-
132
- **Never use Grep/Glob to search HQ content by topic.** That's what qmd does. Commands and skills that scan HQ for related context must use `qmd vsearch` (semantic) or `qmd search` (keyword), not Grep.
133
-
134
- ## Learned Rules
135
-
136
- <!-- Max 20. Overflow removed (rule still lives in its source file). -->
137
- <!-- Auto-managed by /learn. Manual: /remember -->
138
-
139
- (none yet — rules accumulate as the system runs)
140
-
141
- ## Learning System
142
-
143
- Learnings are rules injected directly into the files they govern:
144
- - Worker rules → `worker.yaml` `instructions:` block
145
- - Command rules → command `.md` `## Rules` section
146
- - Knowledge rules → relevant knowledge file
147
- - Global rules → this file `## Learned Rules`
148
-
149
- - `/learn` captures and classifies learnings automatically after task execution
150
- - `/remember` delegates to `/learn` — user corrections always promote to Tier 1
151
-
152
- Event log: `workspace/learnings/*.json` (append-only, for analysis/dedup).
153
-
154
- ## Auto-Learn (Build Activities)
155
-
156
- When building HQ infrastructure (new workers, knowledge bases, commands, projects), auto-capture structural changes so future sessions know what exists:
157
-
158
- **Triggers:**
159
- - `/newworker` completes → `/learn` with scope: global, rule: "Worker {id} exists at {path} for {purpose}"
160
- - `/prd` completes → `/learn` with scope: global, rule: "Project {name} exists with {N} stories targeting {repo}"
161
- - New knowledge files created → `/learn` with scope: global, rule: "Knowledge {topic} available at {path}"
162
- - New command created → `/learn` with scope: global, rule: "Command /{name} available for {purpose}"
163
-
164
- **Why:** Fresh sessions load CLAUDE.md but don't scan every directory. Learned rules act as an index of what has been built, preventing re-creation of existing resources and enabling discovery.
165
-
166
- **Also:** After any structural change, run `qmd update 2>/dev/null || true` to keep search current.
167
-
168
- ## Auto-Checkpoint (PostToolsHook)
169
-
170
- After completing any of these actions, automatically save thread state to `workspace/threads/`:
171
-
172
- **Triggers:**
173
- - Worker skill completion (via `/run`)
174
- - Git commit
175
- - File generation (reports, social drafts)
176
- - Significant file edits in project repos
177
-
178
- **Thread Format:** See `knowledge/hq-core/thread-schema.md`
179
-
180
- **Why:** Prevents lost work, enables session resumption, provides audit trail.
181
-
182
- **How:** After a triggering action, capture git state + summary and write to `workspace/threads/T-{timestamp}-{slug}.json`
183
-
184
- **Knowledge repos:** When edits touch knowledge files (symlinked to `repos/`), commit those changes to the knowledge repo — not HQ git. See "Knowledge Repos" section above for commit instructions.
185
-
186
- ## Auto-Handoff (Context Limit)
187
-
188
- When context usage reaches 70% (remaining drops to 30%), automatically run `/handoff`.
189
-
190
- **Rules:**
191
- - Check context status line — when `remaining_percentage` ≤ 30, trigger handoff
192
- - Before handoff, finish current atomic task (don't interrupt mid-edit)
193
- - Notify user: "Context at {X}% remaining. Running /handoff to preserve continuity."
194
- - Run `/handoff` with summary of remaining work
195
- - This overrides manual handoff — don't wait for user to request it
196
-
197
- ## Core Principles
198
-
199
- 1. **Infrastructure scales, effort doesn't** - Build reusable systems
200
- 2. **Workers should grow smarter** - Capture learnings in knowledge bases
201
- 3. **Context is precious** - Checkpoint often, don't let work evaporate
202
- 4. **Ship, then iterate** - Working > perfect