agents-inc 0.149.2 → 0.150.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 (572) hide show
  1. package/CHANGELOG.md +2277 -0
  2. package/LICENSE +21 -0
  3. package/README.md +136 -19
  4. package/assets/demo.gif +0 -0
  5. package/assets/demo.tape +266 -0
  6. package/assets/logo.svg +75 -0
  7. package/dist/chunk-2RSNKBXC.js +84 -0
  8. package/dist/chunk-2RSNKBXC.js.map +1 -0
  9. package/dist/chunk-3LIU2ZEF.js +1355 -0
  10. package/dist/chunk-3LIU2ZEF.js.map +1 -0
  11. package/dist/chunk-4GL2F5AB.js +222 -0
  12. package/dist/chunk-4GL2F5AB.js.map +1 -0
  13. package/dist/chunk-4LPJZNT7.js +382 -0
  14. package/dist/chunk-4LPJZNT7.js.map +1 -0
  15. package/dist/chunk-5K5RBRTD.js +62 -0
  16. package/dist/chunk-5K5RBRTD.js.map +1 -0
  17. package/dist/chunk-6I6RZHYP.js +789 -0
  18. package/dist/chunk-6I6RZHYP.js.map +1 -0
  19. package/dist/chunk-7URSGJLE.js +430 -0
  20. package/dist/chunk-7URSGJLE.js.map +1 -0
  21. package/dist/chunk-C55DN7GE.js +35 -0
  22. package/dist/chunk-C55DN7GE.js.map +1 -0
  23. package/dist/chunk-CDMHSHBN.js +68 -0
  24. package/dist/chunk-CDMHSHBN.js.map +1 -0
  25. package/dist/chunk-CFQT72MJ.js +92 -0
  26. package/dist/chunk-CFQT72MJ.js.map +1 -0
  27. package/dist/chunk-DAG2ULNF.js +125 -0
  28. package/dist/chunk-DAG2ULNF.js.map +1 -0
  29. package/dist/chunk-DDG4F3FE.js +181 -0
  30. package/dist/chunk-DDG4F3FE.js.map +1 -0
  31. package/dist/chunk-DIBCRIMR.js +36 -0
  32. package/dist/chunk-DIBCRIMR.js.map +1 -0
  33. package/dist/chunk-DJAZE4PD.js +10929 -0
  34. package/dist/chunk-DJAZE4PD.js.map +1 -0
  35. package/dist/chunk-DUVWGO6E.js +54 -0
  36. package/dist/chunk-DUVWGO6E.js.map +1 -0
  37. package/dist/chunk-E4FT2KFV.js +174 -0
  38. package/dist/chunk-E4FT2KFV.js.map +1 -0
  39. package/dist/chunk-EKWAUOQB.js +96 -0
  40. package/dist/chunk-EKWAUOQB.js.map +1 -0
  41. package/dist/chunk-EN2GCPW7.js +300 -0
  42. package/dist/chunk-EN2GCPW7.js.map +1 -0
  43. package/dist/chunk-ES3NJZON.js +31 -0
  44. package/dist/chunk-ES3NJZON.js.map +1 -0
  45. package/dist/chunk-F3756A5B.js +20 -0
  46. package/dist/chunk-F3756A5B.js.map +1 -0
  47. package/dist/chunk-FWT3CBLL.js +51 -0
  48. package/dist/chunk-FWT3CBLL.js.map +1 -0
  49. package/dist/chunk-FYPUUYSG.js +31 -0
  50. package/dist/chunk-FYPUUYSG.js.map +1 -0
  51. package/dist/chunk-GRPSDKIS.js +112 -0
  52. package/dist/chunk-GRPSDKIS.js.map +1 -0
  53. package/dist/chunk-GYG5SE2D.js +81 -0
  54. package/dist/chunk-GYG5SE2D.js.map +1 -0
  55. package/dist/chunk-HIPGKIT3.js +287 -0
  56. package/dist/chunk-HIPGKIT3.js.map +1 -0
  57. package/dist/chunk-I3XKEGHM.js +16383 -0
  58. package/dist/chunk-I3XKEGHM.js.map +1 -0
  59. package/dist/chunk-IHO75PMZ.js +40 -0
  60. package/dist/chunk-IHO75PMZ.js.map +1 -0
  61. package/dist/chunk-IOJR5TOY.js +47 -0
  62. package/dist/chunk-IOJR5TOY.js.map +1 -0
  63. package/dist/chunk-K3OU6TGX.js +77 -0
  64. package/dist/chunk-K3OU6TGX.js.map +1 -0
  65. package/dist/chunk-KH7MOIM5.js +6010 -0
  66. package/dist/chunk-KH7MOIM5.js.map +1 -0
  67. package/dist/chunk-KIR7VYQD.js +63 -0
  68. package/dist/chunk-KIR7VYQD.js.map +1 -0
  69. package/dist/chunk-KOPEM3Q7.js +27 -0
  70. package/dist/chunk-KOPEM3Q7.js.map +1 -0
  71. package/dist/chunk-KSZ6PCY4.js +43 -0
  72. package/dist/chunk-KSZ6PCY4.js.map +1 -0
  73. package/dist/chunk-LRYNF3J7.js +111 -0
  74. package/dist/chunk-LRYNF3J7.js.map +1 -0
  75. package/dist/chunk-LYYXX2W5.js +87 -0
  76. package/dist/chunk-LYYXX2W5.js.map +1 -0
  77. package/dist/chunk-MC5DUZ3V.js +1135 -0
  78. package/dist/chunk-MC5DUZ3V.js.map +1 -0
  79. package/dist/chunk-N4IZ6GBO.js +300 -0
  80. package/dist/chunk-N4IZ6GBO.js.map +1 -0
  81. package/dist/chunk-NIKUMXE7.js +24 -0
  82. package/dist/chunk-NIKUMXE7.js.map +1 -0
  83. package/dist/chunk-NUIZ6ZUO.js +42 -0
  84. package/dist/chunk-NUIZ6ZUO.js.map +1 -0
  85. package/dist/chunk-O5ASLZ2K.js +270 -0
  86. package/dist/chunk-O5ASLZ2K.js.map +1 -0
  87. package/dist/chunk-OA5SUEQD.js +181 -0
  88. package/dist/chunk-OA5SUEQD.js.map +1 -0
  89. package/dist/chunk-OZZGXBCN.js +15 -0
  90. package/dist/chunk-OZZGXBCN.js.map +1 -0
  91. package/dist/chunk-P3PN5SVI.js +27 -0
  92. package/dist/chunk-P3PN5SVI.js.map +1 -0
  93. package/dist/chunk-P56WJ5FA.js +50 -0
  94. package/dist/chunk-P56WJ5FA.js.map +1 -0
  95. package/dist/chunk-PG4G4IIK.js +24 -0
  96. package/dist/chunk-PG4G4IIK.js.map +1 -0
  97. package/dist/chunk-QQLRX4KI.js +41 -0
  98. package/dist/chunk-QQLRX4KI.js.map +1 -0
  99. package/dist/chunk-RBHYLCUB.js +31 -0
  100. package/dist/chunk-RBHYLCUB.js.map +1 -0
  101. package/dist/chunk-RJN7W2C7.js +349 -0
  102. package/dist/chunk-RJN7W2C7.js.map +1 -0
  103. package/dist/chunk-RP7R73JO.js +179 -0
  104. package/dist/chunk-RP7R73JO.js.map +1 -0
  105. package/dist/chunk-SYUOXSPU.js +510 -0
  106. package/dist/chunk-SYUOXSPU.js.map +1 -0
  107. package/dist/chunk-THKIOI32.js +939 -0
  108. package/dist/chunk-THKIOI32.js.map +1 -0
  109. package/dist/chunk-UZRISDBZ.js +28 -0
  110. package/dist/chunk-UZRISDBZ.js.map +1 -0
  111. package/dist/chunk-V7QOSGQA.js +298 -0
  112. package/dist/chunk-V7QOSGQA.js.map +1 -0
  113. package/dist/chunk-VEP23B5W.js +27 -0
  114. package/dist/chunk-VEP23B5W.js.map +1 -0
  115. package/dist/chunk-VG2TVBFN.js +52 -0
  116. package/dist/chunk-VG2TVBFN.js.map +1 -0
  117. package/dist/chunk-VIFZ6NFH.js +27 -0
  118. package/dist/chunk-VIFZ6NFH.js.map +1 -0
  119. package/dist/chunk-XA57SX4T.js +115 -0
  120. package/dist/chunk-XA57SX4T.js.map +1 -0
  121. package/dist/chunk-YKKIJHZB.js +339 -0
  122. package/dist/chunk-YKKIJHZB.js.map +1 -0
  123. package/dist/chunk-YU2VGX5R.js +4205 -0
  124. package/dist/chunk-YU2VGX5R.js.map +1 -0
  125. package/dist/chunk-ZDLTLNU2.js +258 -0
  126. package/dist/chunk-ZDLTLNU2.js.map +1 -0
  127. package/dist/chunk-ZHTXPFDK.js +128 -0
  128. package/dist/chunk-ZHTXPFDK.js.map +1 -0
  129. package/dist/chunk-ZKJAJWK6.js +253 -0
  130. package/dist/chunk-ZKJAJWK6.js.map +1 -0
  131. package/dist/commands/build/marketplace.js +250 -0
  132. package/dist/commands/build/marketplace.js.map +1 -0
  133. package/dist/commands/build/plugins.js +176 -0
  134. package/dist/commands/build/plugins.js.map +1 -0
  135. package/dist/commands/compile.js +331 -0
  136. package/dist/commands/compile.js.map +1 -0
  137. package/dist/commands/doctor.js +475 -0
  138. package/dist/commands/doctor.js.map +1 -0
  139. package/dist/commands/edit.js +765 -0
  140. package/dist/commands/edit.js.map +1 -0
  141. package/dist/commands/eject.js +393 -0
  142. package/dist/commands/eject.js.map +1 -0
  143. package/dist/commands/import/skill.js +349 -0
  144. package/dist/commands/import/skill.js.map +1 -0
  145. package/dist/commands/init.js +66 -0
  146. package/dist/commands/init.js.map +1 -0
  147. package/dist/commands/list.js +115 -0
  148. package/dist/commands/list.js.map +1 -0
  149. package/dist/commands/new/agent.js +304 -0
  150. package/dist/commands/new/agent.js.map +1 -0
  151. package/dist/commands/new/marketplace.js +315 -0
  152. package/dist/commands/new/marketplace.js.map +1 -0
  153. package/dist/commands/new/skill.js +28 -0
  154. package/dist/commands/new/skill.js.map +1 -0
  155. package/dist/commands/search.js +176 -0
  156. package/dist/commands/search.js.map +1 -0
  157. package/dist/commands/uninstall.js +570 -0
  158. package/dist/commands/uninstall.js.map +1 -0
  159. package/dist/commands/update.js +368 -0
  160. package/dist/commands/update.js.map +1 -0
  161. package/dist/commands/validate.js +581 -0
  162. package/dist/commands/validate.js.map +1 -0
  163. package/dist/components/common/confirm.js +9 -0
  164. package/dist/components/common/confirm.js.map +1 -0
  165. package/dist/components/common/confirm.test.js +203 -0
  166. package/dist/components/common/confirm.test.js.map +1 -0
  167. package/dist/components/common/prompt-confirm.js +11 -0
  168. package/dist/components/common/prompt-confirm.js.map +1 -0
  169. package/dist/components/common/select-list.js +11 -0
  170. package/dist/components/common/select-list.js.map +1 -0
  171. package/dist/components/common/spinner.js +9 -0
  172. package/dist/components/common/spinner.js.map +1 -0
  173. package/dist/components/wizard/category-grid.js +16 -0
  174. package/dist/components/wizard/category-grid.js.map +1 -0
  175. package/dist/components/wizard/category-grid.test.js +1253 -0
  176. package/dist/components/wizard/category-grid.test.js.map +1 -0
  177. package/dist/components/wizard/checkbox-grid.js +14 -0
  178. package/dist/components/wizard/checkbox-grid.js.map +1 -0
  179. package/dist/components/wizard/checkbox-grid.test.js +264 -0
  180. package/dist/components/wizard/checkbox-grid.test.js.map +1 -0
  181. package/dist/components/wizard/domain-selection.js +22 -0
  182. package/dist/components/wizard/domain-selection.js.map +1 -0
  183. package/dist/components/wizard/run-wizard-session.js +47 -0
  184. package/dist/components/wizard/run-wizard-session.js.map +1 -0
  185. package/dist/components/wizard/scroll-affordance.js +10 -0
  186. package/dist/components/wizard/scroll-affordance.js.map +1 -0
  187. package/dist/components/wizard/search-modal.js +14 -0
  188. package/dist/components/wizard/search-modal.js.map +1 -0
  189. package/dist/components/wizard/search-modal.test.js +212 -0
  190. package/dist/components/wizard/search-modal.test.js.map +1 -0
  191. package/dist/components/wizard/selection-card.js +10 -0
  192. package/dist/components/wizard/selection-card.js.map +1 -0
  193. package/dist/components/wizard/skill-agent-summary.js +16 -0
  194. package/dist/components/wizard/skill-agent-summary.js.map +1 -0
  195. package/dist/components/wizard/source-grid.js +23 -0
  196. package/dist/components/wizard/source-grid.js.map +1 -0
  197. package/dist/components/wizard/source-grid.test.js +1094 -0
  198. package/dist/components/wizard/source-grid.test.js.map +1 -0
  199. package/dist/components/wizard/stack-selection.js +20 -0
  200. package/dist/components/wizard/stack-selection.js.map +1 -0
  201. package/dist/components/wizard/step-agents.js +22 -0
  202. package/dist/components/wizard/step-agents.js.map +1 -0
  203. package/dist/components/wizard/step-agents.test.js +204 -0
  204. package/dist/components/wizard/step-agents.test.js.map +1 -0
  205. package/dist/components/wizard/step-build.js +22 -0
  206. package/dist/components/wizard/step-build.js.map +1 -0
  207. package/dist/components/wizard/step-build.test.js +552 -0
  208. package/dist/components/wizard/step-build.test.js.map +1 -0
  209. package/dist/components/wizard/step-confirm.js +21 -0
  210. package/dist/components/wizard/step-confirm.js.map +1 -0
  211. package/dist/components/wizard/step-confirm.test.js +744 -0
  212. package/dist/components/wizard/step-confirm.test.js.map +1 -0
  213. package/dist/components/wizard/step-settings.js +19 -0
  214. package/dist/components/wizard/step-settings.js.map +1 -0
  215. package/dist/components/wizard/step-settings.test.js +244 -0
  216. package/dist/components/wizard/step-settings.test.js.map +1 -0
  217. package/dist/components/wizard/step-sources.js +28 -0
  218. package/dist/components/wizard/step-sources.js.map +1 -0
  219. package/dist/components/wizard/step-sources.test.js +155 -0
  220. package/dist/components/wizard/step-sources.test.js.map +1 -0
  221. package/dist/components/wizard/step-stack.js +21 -0
  222. package/dist/components/wizard/step-stack.js.map +1 -0
  223. package/dist/components/wizard/step-stack.test.js +262 -0
  224. package/dist/components/wizard/step-stack.test.js.map +1 -0
  225. package/dist/components/wizard/summary-panel.js +20 -0
  226. package/dist/components/wizard/summary-panel.js.map +1 -0
  227. package/dist/components/wizard/summary-panel.test.js +317 -0
  228. package/dist/components/wizard/summary-panel.test.js.map +1 -0
  229. package/dist/components/wizard/toast.js +10 -0
  230. package/dist/components/wizard/toast.js.map +1 -0
  231. package/dist/components/wizard/wizard-layout.js +26 -0
  232. package/dist/components/wizard/wizard-layout.js.map +1 -0
  233. package/dist/components/wizard/wizard-layout.test.js +200 -0
  234. package/dist/components/wizard/wizard-layout.test.js.map +1 -0
  235. package/dist/components/wizard/wizard-tabs.js +20 -0
  236. package/dist/components/wizard/wizard-tabs.js.map +1 -0
  237. package/dist/components/wizard/wizard-tabs.test.js +290 -0
  238. package/dist/components/wizard/wizard-tabs.test.js.map +1 -0
  239. package/dist/components/wizard/wizard.js +48 -0
  240. package/dist/components/wizard/wizard.js.map +1 -0
  241. package/dist/config-exports.js +20 -0
  242. package/dist/config-exports.js.map +1 -0
  243. package/dist/copy-local-skills-CA7P73RZ.js +15 -0
  244. package/dist/copy-local-skills-CA7P73RZ.js.map +1 -0
  245. package/dist/dist-VNJNNJK7.js +550 -0
  246. package/dist/dist-VNJNNJK7.js.map +1 -0
  247. package/dist/hooks/init.js +90 -0
  248. package/dist/hooks/init.js.map +1 -0
  249. package/dist/index.js +10 -0
  250. package/dist/index.js.map +1 -0
  251. package/dist/load-agent-defs-6MAY5ABI.js +16 -0
  252. package/dist/load-agent-defs-6MAY5ABI.js.map +1 -0
  253. package/dist/loader-E2ERJYVA.js +23 -0
  254. package/dist/loader-E2ERJYVA.js.map +1 -0
  255. package/dist/magic-string.es-5TV73NJD.js +1316 -0
  256. package/dist/magic-string.es-5TV73NJD.js.map +1 -0
  257. package/dist/recompile-project-agents-VYQJ6UZB.js +20 -0
  258. package/dist/recompile-project-agents-VYQJ6UZB.js.map +1 -0
  259. package/dist/source-loader-VVHMQEX5.js +20 -0
  260. package/dist/source-loader-VVHMQEX5.js.map +1 -0
  261. package/dist/source-manager-TPDXV5FO.js +18 -0
  262. package/dist/source-manager-TPDXV5FO.js.map +1 -0
  263. package/dist/src/agents/_templates/agent.liquid +161 -0
  264. package/dist/src/agents/_templates/methodologies/anti-over-engineering.liquid +121 -0
  265. package/dist/src/agents/_templates/methodologies/context-management.liquid +162 -0
  266. package/dist/src/agents/_templates/methodologies/improvement-protocol.liquid +150 -0
  267. package/dist/src/agents/_templates/methodologies/investigation-requirements.liquid +49 -0
  268. package/dist/src/agents/_templates/methodologies/success-criteria.liquid +111 -0
  269. package/dist/src/agents/_templates/methodologies/write-verification.liquid +43 -0
  270. package/dist/src/agents/developer/ai-developer/critical-reminders.md +54 -0
  271. package/dist/src/agents/developer/ai-developer/critical-requirements.md +59 -0
  272. package/dist/src/agents/developer/ai-developer/identity.md +51 -0
  273. package/dist/src/agents/developer/ai-developer/metadata.yaml +12 -0
  274. package/dist/src/agents/developer/ai-developer/output.md +366 -0
  275. package/dist/src/agents/developer/ai-developer/playbook.md +335 -0
  276. package/dist/src/agents/developer/api-developer/critical-reminders.md +46 -0
  277. package/dist/src/agents/developer/api-developer/critical-requirements.md +44 -0
  278. package/dist/src/agents/developer/api-developer/identity.md +49 -0
  279. package/dist/src/agents/developer/api-developer/metadata.yaml +12 -0
  280. package/dist/src/agents/developer/api-developer/output.md +432 -0
  281. package/dist/src/agents/developer/api-developer/playbook.md +352 -0
  282. package/dist/src/agents/developer/cli-developer/critical-reminders.md +51 -0
  283. package/dist/src/agents/developer/cli-developer/critical-requirements.md +51 -0
  284. package/dist/src/agents/developer/cli-developer/identity.md +51 -0
  285. package/dist/src/agents/developer/cli-developer/metadata.yaml +12 -0
  286. package/dist/src/agents/developer/cli-developer/output.md +285 -0
  287. package/dist/src/agents/developer/cli-developer/playbook.md +386 -0
  288. package/dist/src/agents/developer/web-architecture/critical-reminders.md +48 -0
  289. package/dist/src/agents/developer/web-architecture/critical-requirements.md +65 -0
  290. package/dist/src/agents/developer/web-architecture/identity.md +64 -0
  291. package/dist/src/agents/developer/web-architecture/metadata.yaml +12 -0
  292. package/dist/src/agents/developer/web-architecture/output.md +449 -0
  293. package/dist/src/agents/developer/web-architecture/playbook.md +481 -0
  294. package/dist/src/agents/developer/web-developer/critical-reminders.md +40 -0
  295. package/dist/src/agents/developer/web-developer/critical-requirements.md +39 -0
  296. package/dist/src/agents/developer/web-developer/identity.md +32 -0
  297. package/dist/src/agents/developer/web-developer/metadata.yaml +12 -0
  298. package/dist/src/agents/developer/web-developer/output.md +323 -0
  299. package/dist/src/agents/developer/web-developer/playbook.md +349 -0
  300. package/dist/src/agents/meta/agent-summoner/critical-reminders.md +45 -0
  301. package/dist/src/agents/meta/agent-summoner/critical-requirements.md +52 -0
  302. package/dist/src/agents/meta/agent-summoner/identity.md +34 -0
  303. package/dist/src/agents/meta/agent-summoner/metadata.yaml +12 -0
  304. package/dist/src/agents/meta/agent-summoner/output.md +296 -0
  305. package/dist/src/agents/meta/agent-summoner/playbook.md +1469 -0
  306. package/dist/src/agents/meta/codex-keeper/critical-reminders.md +39 -0
  307. package/dist/src/agents/meta/codex-keeper/critical-requirements.md +29 -0
  308. package/dist/src/agents/meta/codex-keeper/identity.md +45 -0
  309. package/dist/src/agents/meta/codex-keeper/metadata.yaml +12 -0
  310. package/dist/src/agents/meta/codex-keeper/output.md +384 -0
  311. package/dist/src/agents/meta/codex-keeper/playbook.md +1183 -0
  312. package/dist/src/agents/meta/convention-keeper/critical-reminders.md +32 -0
  313. package/dist/src/agents/meta/convention-keeper/critical-requirements.md +32 -0
  314. package/dist/src/agents/meta/convention-keeper/identity.md +33 -0
  315. package/dist/src/agents/meta/convention-keeper/metadata.yaml +12 -0
  316. package/dist/src/agents/meta/convention-keeper/output.md +206 -0
  317. package/dist/src/agents/meta/convention-keeper/playbook.md +180 -0
  318. package/dist/src/agents/meta/skill-summoner/critical-reminders.md +112 -0
  319. package/dist/src/agents/meta/skill-summoner/critical-requirements.md +62 -0
  320. package/dist/src/agents/meta/skill-summoner/identity.md +31 -0
  321. package/dist/src/agents/meta/skill-summoner/metadata.yaml +13 -0
  322. package/dist/src/agents/meta/skill-summoner/output.md +390 -0
  323. package/dist/src/agents/meta/skill-summoner/playbook.md +1457 -0
  324. package/dist/src/agents/pattern/pattern-scout/critical-reminders.md +71 -0
  325. package/dist/src/agents/pattern/pattern-scout/critical-requirements.md +31 -0
  326. package/dist/src/agents/pattern/pattern-scout/identity.md +25 -0
  327. package/dist/src/agents/pattern/pattern-scout/metadata.yaml +10 -0
  328. package/dist/src/agents/pattern/pattern-scout/output.md +290 -0
  329. package/dist/src/agents/pattern/pattern-scout/playbook.md +1806 -0
  330. package/dist/src/agents/pattern/web-pattern-critique/critical-reminders.md +30 -0
  331. package/dist/src/agents/pattern/web-pattern-critique/critical-requirements.md +28 -0
  332. package/dist/src/agents/pattern/web-pattern-critique/identity.md +41 -0
  333. package/dist/src/agents/pattern/web-pattern-critique/metadata.yaml +12 -0
  334. package/dist/src/agents/pattern/web-pattern-critique/output.md +314 -0
  335. package/dist/src/agents/pattern/web-pattern-critique/playbook.md +572 -0
  336. package/dist/src/agents/planning/api-pm/critical-reminders.md +48 -0
  337. package/dist/src/agents/planning/api-pm/critical-requirements.md +41 -0
  338. package/dist/src/agents/planning/api-pm/identity.md +39 -0
  339. package/dist/src/agents/planning/api-pm/metadata.yaml +12 -0
  340. package/dist/src/agents/planning/api-pm/output.md +475 -0
  341. package/dist/src/agents/planning/api-pm/playbook.md +129 -0
  342. package/dist/src/agents/planning/web-pm/critical-reminders.md +36 -0
  343. package/dist/src/agents/planning/web-pm/critical-requirements.md +32 -0
  344. package/dist/src/agents/planning/web-pm/identity.md +26 -0
  345. package/dist/src/agents/planning/web-pm/metadata.yaml +12 -0
  346. package/dist/src/agents/planning/web-pm/output.md +314 -0
  347. package/dist/src/agents/planning/web-pm/playbook.md +318 -0
  348. package/dist/src/agents/researcher/api-researcher/critical-reminders.md +27 -0
  349. package/dist/src/agents/researcher/api-researcher/critical-requirements.md +28 -0
  350. package/dist/src/agents/researcher/api-researcher/identity.md +71 -0
  351. package/dist/src/agents/researcher/api-researcher/metadata.yaml +10 -0
  352. package/dist/src/agents/researcher/api-researcher/output.md +254 -0
  353. package/dist/src/agents/researcher/api-researcher/playbook.md +201 -0
  354. package/dist/src/agents/researcher/web-researcher/critical-reminders.md +39 -0
  355. package/dist/src/agents/researcher/web-researcher/critical-requirements.md +26 -0
  356. package/dist/src/agents/researcher/web-researcher/identity.md +69 -0
  357. package/dist/src/agents/researcher/web-researcher/metadata.yaml +10 -0
  358. package/dist/src/agents/researcher/web-researcher/output.md +241 -0
  359. package/dist/src/agents/researcher/web-researcher/playbook.md +217 -0
  360. package/dist/src/agents/reviewer/ai-reviewer/critical-reminders.md +40 -0
  361. package/dist/src/agents/reviewer/ai-reviewer/critical-requirements.md +37 -0
  362. package/dist/src/agents/reviewer/ai-reviewer/identity.md +51 -0
  363. package/dist/src/agents/reviewer/ai-reviewer/metadata.yaml +10 -0
  364. package/dist/src/agents/reviewer/ai-reviewer/output.md +395 -0
  365. package/dist/src/agents/reviewer/ai-reviewer/playbook.md +90 -0
  366. package/dist/src/agents/reviewer/api-reviewer/critical-reminders.md +31 -0
  367. package/dist/src/agents/reviewer/api-reviewer/critical-requirements.md +27 -0
  368. package/dist/src/agents/reviewer/api-reviewer/identity.md +51 -0
  369. package/dist/src/agents/reviewer/api-reviewer/metadata.yaml +12 -0
  370. package/dist/src/agents/reviewer/api-reviewer/output.md +343 -0
  371. package/dist/src/agents/reviewer/api-reviewer/playbook.md +288 -0
  372. package/dist/src/agents/reviewer/cli-reviewer/critical-reminders.md +33 -0
  373. package/dist/src/agents/reviewer/cli-reviewer/critical-requirements.md +30 -0
  374. package/dist/src/agents/reviewer/cli-reviewer/identity.md +44 -0
  375. package/dist/src/agents/reviewer/cli-reviewer/metadata.yaml +12 -0
  376. package/dist/src/agents/reviewer/cli-reviewer/output.md +414 -0
  377. package/dist/src/agents/reviewer/cli-reviewer/playbook.md +218 -0
  378. package/dist/src/agents/reviewer/infra-reviewer/critical-reminders.md +38 -0
  379. package/dist/src/agents/reviewer/infra-reviewer/critical-requirements.md +38 -0
  380. package/dist/src/agents/reviewer/infra-reviewer/identity.md +53 -0
  381. package/dist/src/agents/reviewer/infra-reviewer/metadata.yaml +10 -0
  382. package/dist/src/agents/reviewer/infra-reviewer/output.md +364 -0
  383. package/dist/src/agents/reviewer/infra-reviewer/playbook.md +161 -0
  384. package/dist/src/agents/reviewer/web-reviewer/critical-reminders.md +31 -0
  385. package/dist/src/agents/reviewer/web-reviewer/critical-requirements.md +26 -0
  386. package/dist/src/agents/reviewer/web-reviewer/identity.md +40 -0
  387. package/dist/src/agents/reviewer/web-reviewer/metadata.yaml +12 -0
  388. package/dist/src/agents/reviewer/web-reviewer/output.md +333 -0
  389. package/dist/src/agents/reviewer/web-reviewer/playbook.md +156 -0
  390. package/dist/src/agents/tester/api-tester/critical-reminders.md +41 -0
  391. package/dist/src/agents/tester/api-tester/critical-requirements.md +41 -0
  392. package/dist/src/agents/tester/api-tester/identity.md +47 -0
  393. package/dist/src/agents/tester/api-tester/metadata.yaml +12 -0
  394. package/dist/src/agents/tester/api-tester/output.md +284 -0
  395. package/dist/src/agents/tester/api-tester/playbook.md +275 -0
  396. package/dist/src/agents/tester/cli-tester/critical-reminders.md +36 -0
  397. package/dist/src/agents/tester/cli-tester/critical-requirements.md +36 -0
  398. package/dist/src/agents/tester/cli-tester/identity.md +43 -0
  399. package/dist/src/agents/tester/cli-tester/metadata.yaml +12 -0
  400. package/dist/src/agents/tester/cli-tester/output.md +313 -0
  401. package/dist/src/agents/tester/cli-tester/playbook.md +221 -0
  402. package/dist/src/agents/tester/web-tester/critical-reminders.md +31 -0
  403. package/dist/src/agents/tester/web-tester/critical-requirements.md +28 -0
  404. package/dist/src/agents/tester/web-tester/identity.md +41 -0
  405. package/dist/src/agents/tester/web-tester/metadata.yaml +12 -0
  406. package/dist/src/agents/tester/web-tester/output.md +321 -0
  407. package/dist/src/agents/tester/web-tester/playbook.md +428 -0
  408. package/dist/stores/d227-same-scope-tombstone-duplicate.test.js +118 -0
  409. package/dist/stores/d227-same-scope-tombstone-duplicate.test.js.map +1 -0
  410. package/dist/stores/wizard-store.js +21 -0
  411. package/dist/stores/wizard-store.js.map +1 -0
  412. package/dist/stores/wizard-store.test.js +3053 -0
  413. package/dist/stores/wizard-store.test.js.map +1 -0
  414. package/package.json +130 -12
  415. package/src/agents/_templates/agent.liquid +161 -0
  416. package/src/agents/_templates/methodologies/anti-over-engineering.liquid +121 -0
  417. package/src/agents/_templates/methodologies/context-management.liquid +162 -0
  418. package/src/agents/_templates/methodologies/improvement-protocol.liquid +150 -0
  419. package/src/agents/_templates/methodologies/investigation-requirements.liquid +49 -0
  420. package/src/agents/_templates/methodologies/success-criteria.liquid +111 -0
  421. package/src/agents/_templates/methodologies/write-verification.liquid +43 -0
  422. package/src/agents/developer/ai-developer/critical-reminders.md +54 -0
  423. package/src/agents/developer/ai-developer/critical-requirements.md +59 -0
  424. package/src/agents/developer/ai-developer/identity.md +51 -0
  425. package/src/agents/developer/ai-developer/metadata.yaml +12 -0
  426. package/src/agents/developer/ai-developer/output.md +366 -0
  427. package/src/agents/developer/ai-developer/playbook.md +335 -0
  428. package/src/agents/developer/api-developer/critical-reminders.md +46 -0
  429. package/src/agents/developer/api-developer/critical-requirements.md +44 -0
  430. package/src/agents/developer/api-developer/identity.md +49 -0
  431. package/src/agents/developer/api-developer/metadata.yaml +12 -0
  432. package/src/agents/developer/api-developer/output.md +432 -0
  433. package/src/agents/developer/api-developer/playbook.md +352 -0
  434. package/src/agents/developer/cli-developer/critical-reminders.md +51 -0
  435. package/src/agents/developer/cli-developer/critical-requirements.md +51 -0
  436. package/src/agents/developer/cli-developer/identity.md +51 -0
  437. package/src/agents/developer/cli-developer/metadata.yaml +12 -0
  438. package/src/agents/developer/cli-developer/output.md +285 -0
  439. package/src/agents/developer/cli-developer/playbook.md +386 -0
  440. package/src/agents/developer/web-architecture/critical-reminders.md +48 -0
  441. package/src/agents/developer/web-architecture/critical-requirements.md +65 -0
  442. package/src/agents/developer/web-architecture/identity.md +64 -0
  443. package/src/agents/developer/web-architecture/metadata.yaml +12 -0
  444. package/src/agents/developer/web-architecture/output.md +449 -0
  445. package/src/agents/developer/web-architecture/playbook.md +481 -0
  446. package/src/agents/developer/web-developer/critical-reminders.md +40 -0
  447. package/src/agents/developer/web-developer/critical-requirements.md +39 -0
  448. package/src/agents/developer/web-developer/identity.md +32 -0
  449. package/src/agents/developer/web-developer/metadata.yaml +12 -0
  450. package/src/agents/developer/web-developer/output.md +323 -0
  451. package/src/agents/developer/web-developer/playbook.md +349 -0
  452. package/src/agents/meta/agent-summoner/critical-reminders.md +45 -0
  453. package/src/agents/meta/agent-summoner/critical-requirements.md +52 -0
  454. package/src/agents/meta/agent-summoner/identity.md +34 -0
  455. package/src/agents/meta/agent-summoner/metadata.yaml +12 -0
  456. package/src/agents/meta/agent-summoner/output.md +296 -0
  457. package/src/agents/meta/agent-summoner/playbook.md +1469 -0
  458. package/src/agents/meta/codex-keeper/critical-reminders.md +39 -0
  459. package/src/agents/meta/codex-keeper/critical-requirements.md +29 -0
  460. package/src/agents/meta/codex-keeper/identity.md +45 -0
  461. package/src/agents/meta/codex-keeper/metadata.yaml +12 -0
  462. package/src/agents/meta/codex-keeper/output.md +384 -0
  463. package/src/agents/meta/codex-keeper/playbook.md +1183 -0
  464. package/src/agents/meta/convention-keeper/critical-reminders.md +32 -0
  465. package/src/agents/meta/convention-keeper/critical-requirements.md +32 -0
  466. package/src/agents/meta/convention-keeper/identity.md +33 -0
  467. package/src/agents/meta/convention-keeper/metadata.yaml +12 -0
  468. package/src/agents/meta/convention-keeper/output.md +206 -0
  469. package/src/agents/meta/convention-keeper/playbook.md +180 -0
  470. package/src/agents/meta/skill-summoner/critical-reminders.md +112 -0
  471. package/src/agents/meta/skill-summoner/critical-requirements.md +62 -0
  472. package/src/agents/meta/skill-summoner/identity.md +31 -0
  473. package/src/agents/meta/skill-summoner/metadata.yaml +13 -0
  474. package/src/agents/meta/skill-summoner/output.md +390 -0
  475. package/src/agents/meta/skill-summoner/playbook.md +1457 -0
  476. package/src/agents/pattern/pattern-scout/critical-reminders.md +71 -0
  477. package/src/agents/pattern/pattern-scout/critical-requirements.md +31 -0
  478. package/src/agents/pattern/pattern-scout/identity.md +25 -0
  479. package/src/agents/pattern/pattern-scout/metadata.yaml +10 -0
  480. package/src/agents/pattern/pattern-scout/output.md +290 -0
  481. package/src/agents/pattern/pattern-scout/playbook.md +1806 -0
  482. package/src/agents/pattern/web-pattern-critique/critical-reminders.md +30 -0
  483. package/src/agents/pattern/web-pattern-critique/critical-requirements.md +28 -0
  484. package/src/agents/pattern/web-pattern-critique/identity.md +41 -0
  485. package/src/agents/pattern/web-pattern-critique/metadata.yaml +12 -0
  486. package/src/agents/pattern/web-pattern-critique/output.md +314 -0
  487. package/src/agents/pattern/web-pattern-critique/playbook.md +572 -0
  488. package/src/agents/planning/api-pm/critical-reminders.md +48 -0
  489. package/src/agents/planning/api-pm/critical-requirements.md +41 -0
  490. package/src/agents/planning/api-pm/identity.md +39 -0
  491. package/src/agents/planning/api-pm/metadata.yaml +12 -0
  492. package/src/agents/planning/api-pm/output.md +475 -0
  493. package/src/agents/planning/api-pm/playbook.md +129 -0
  494. package/src/agents/planning/web-pm/critical-reminders.md +36 -0
  495. package/src/agents/planning/web-pm/critical-requirements.md +32 -0
  496. package/src/agents/planning/web-pm/identity.md +26 -0
  497. package/src/agents/planning/web-pm/metadata.yaml +12 -0
  498. package/src/agents/planning/web-pm/output.md +314 -0
  499. package/src/agents/planning/web-pm/playbook.md +318 -0
  500. package/src/agents/researcher/api-researcher/critical-reminders.md +27 -0
  501. package/src/agents/researcher/api-researcher/critical-requirements.md +28 -0
  502. package/src/agents/researcher/api-researcher/identity.md +71 -0
  503. package/src/agents/researcher/api-researcher/metadata.yaml +10 -0
  504. package/src/agents/researcher/api-researcher/output.md +254 -0
  505. package/src/agents/researcher/api-researcher/playbook.md +201 -0
  506. package/src/agents/researcher/web-researcher/critical-reminders.md +39 -0
  507. package/src/agents/researcher/web-researcher/critical-requirements.md +26 -0
  508. package/src/agents/researcher/web-researcher/identity.md +69 -0
  509. package/src/agents/researcher/web-researcher/metadata.yaml +10 -0
  510. package/src/agents/researcher/web-researcher/output.md +241 -0
  511. package/src/agents/researcher/web-researcher/playbook.md +217 -0
  512. package/src/agents/reviewer/ai-reviewer/critical-reminders.md +40 -0
  513. package/src/agents/reviewer/ai-reviewer/critical-requirements.md +37 -0
  514. package/src/agents/reviewer/ai-reviewer/identity.md +51 -0
  515. package/src/agents/reviewer/ai-reviewer/metadata.yaml +10 -0
  516. package/src/agents/reviewer/ai-reviewer/output.md +395 -0
  517. package/src/agents/reviewer/ai-reviewer/playbook.md +90 -0
  518. package/src/agents/reviewer/api-reviewer/critical-reminders.md +31 -0
  519. package/src/agents/reviewer/api-reviewer/critical-requirements.md +27 -0
  520. package/src/agents/reviewer/api-reviewer/identity.md +51 -0
  521. package/src/agents/reviewer/api-reviewer/metadata.yaml +12 -0
  522. package/src/agents/reviewer/api-reviewer/output.md +343 -0
  523. package/src/agents/reviewer/api-reviewer/playbook.md +288 -0
  524. package/src/agents/reviewer/cli-reviewer/critical-reminders.md +33 -0
  525. package/src/agents/reviewer/cli-reviewer/critical-requirements.md +30 -0
  526. package/src/agents/reviewer/cli-reviewer/identity.md +44 -0
  527. package/src/agents/reviewer/cli-reviewer/metadata.yaml +12 -0
  528. package/src/agents/reviewer/cli-reviewer/output.md +414 -0
  529. package/src/agents/reviewer/cli-reviewer/playbook.md +218 -0
  530. package/src/agents/reviewer/infra-reviewer/critical-reminders.md +38 -0
  531. package/src/agents/reviewer/infra-reviewer/critical-requirements.md +38 -0
  532. package/src/agents/reviewer/infra-reviewer/identity.md +53 -0
  533. package/src/agents/reviewer/infra-reviewer/metadata.yaml +10 -0
  534. package/src/agents/reviewer/infra-reviewer/output.md +364 -0
  535. package/src/agents/reviewer/infra-reviewer/playbook.md +161 -0
  536. package/src/agents/reviewer/web-reviewer/critical-reminders.md +31 -0
  537. package/src/agents/reviewer/web-reviewer/critical-requirements.md +26 -0
  538. package/src/agents/reviewer/web-reviewer/identity.md +40 -0
  539. package/src/agents/reviewer/web-reviewer/metadata.yaml +12 -0
  540. package/src/agents/reviewer/web-reviewer/output.md +333 -0
  541. package/src/agents/reviewer/web-reviewer/playbook.md +156 -0
  542. package/src/agents/tester/api-tester/critical-reminders.md +41 -0
  543. package/src/agents/tester/api-tester/critical-requirements.md +41 -0
  544. package/src/agents/tester/api-tester/identity.md +47 -0
  545. package/src/agents/tester/api-tester/metadata.yaml +12 -0
  546. package/src/agents/tester/api-tester/output.md +284 -0
  547. package/src/agents/tester/api-tester/playbook.md +275 -0
  548. package/src/agents/tester/cli-tester/critical-reminders.md +36 -0
  549. package/src/agents/tester/cli-tester/critical-requirements.md +36 -0
  550. package/src/agents/tester/cli-tester/identity.md +43 -0
  551. package/src/agents/tester/cli-tester/metadata.yaml +12 -0
  552. package/src/agents/tester/cli-tester/output.md +313 -0
  553. package/src/agents/tester/cli-tester/playbook.md +221 -0
  554. package/src/agents/tester/web-tester/critical-reminders.md +31 -0
  555. package/src/agents/tester/web-tester/critical-requirements.md +28 -0
  556. package/src/agents/tester/web-tester/identity.md +41 -0
  557. package/src/agents/tester/web-tester/metadata.yaml +12 -0
  558. package/src/agents/tester/web-tester/output.md +321 -0
  559. package/src/agents/tester/web-tester/playbook.md +428 -0
  560. package/src/schemas/agent-frontmatter.schema.json +88 -0
  561. package/src/schemas/agent.schema.json +103 -0
  562. package/src/schemas/custom-metadata.schema.json +74 -0
  563. package/src/schemas/hooks.schema.json +47 -0
  564. package/src/schemas/marketplace.schema.json +119 -0
  565. package/src/schemas/metadata.schema.json +387 -0
  566. package/src/schemas/plugin.schema.json +127 -0
  567. package/src/schemas/project-config.schema.json +189 -0
  568. package/src/schemas/project-source-config.schema.json +96 -0
  569. package/src/schemas/skill-frontmatter.schema.json +42 -0
  570. package/src/schemas/stack.schema.json +191 -0
  571. package/src/schemas/stacks.schema.json +107 -0
  572. package/bin/run.js +0 -3
@@ -0,0 +1,1183 @@
1
+ ## Documentation Philosophy
2
+
3
+ **You create documentation FOR AI agents, NOT for humans.**
4
+
5
+ **AI-focused documentation is:**
6
+
7
+ - Structured (tables, lists, explicit sections)
8
+ - Explicit (file paths, line numbers, concrete examples)
9
+ - Practical ("where to find X" not "why X is important")
10
+ - Progressive (built incrementally over time)
11
+ - Validated (regularly checked against actual code)
12
+
13
+ **Standards Reference:** See `documentation-bible.md` for project-specific documentation standards and CLI-adapted templates.
14
+
15
+ **AI-focused documentation is NOT:**
16
+
17
+ - Tutorial-style explanations
18
+ - Best practices guides
19
+ - Abstract architectural discussions
20
+ - Motivational or educational content
21
+
22
+ **Your documentation helps agents answer:**
23
+
24
+ 1. Where is the [store/component/feature] that does X?
25
+ 2. What pattern does this codebase use for Y?
26
+ 3. How do components in this area relate to each other?
27
+ 4. What should I NOT do (anti-patterns)?
28
+ 5. What's the user flow through feature Z?
29
+
30
+ ---
31
+
32
+ ## Investigation Process
33
+
34
+ <mandatory_investigation>
35
+ **BEFORE creating or validating ANY documentation:**
36
+
37
+ 1. **Understand the documentation map**
38
+ - Read `.ai-docs/DOCUMENTATION_MAP.md` if it exists
39
+ - Identify what's documented vs undocumented
40
+ - Check status of existing documentation
41
+ - Determine your target area for this session
42
+
43
+ 2. **Study the target area thoroughly**
44
+ - Use Glob to find all relevant files
45
+ - Read key files completely
46
+ - Use Grep to find patterns and relationships
47
+ - Note file paths, line numbers, concrete examples
48
+
49
+ 3. **Identify patterns and anti-patterns**
50
+ - What conventions does THIS codebase use?
51
+ - What patterns repeat across files?
52
+ - What problematic patterns exist?
53
+ - What relationships exist between components/stores?
54
+
55
+ 4. **Validate against actual code**
56
+ - Every file path must exist
57
+ - Every pattern claim must have examples
58
+ - Every relationship must be verifiable
59
+ - Check examples in multiple files
60
+
61
+ 5. **Cross-reference related areas**
62
+ - How does this area connect to already-documented areas?
63
+ - What dependencies exist?
64
+ - What shared utilities are used?
65
+ </mandatory_investigation>
66
+
67
+ **NEVER document based on assumptions or general knowledge.**
68
+ **ALWAYS document based on what you find in the actual files.**
69
+
70
+ ---
71
+
72
+ ## Documentation Workflow
73
+
74
+ <documentation_workflow>
75
+ **Step 1: Check Documentation Map**
76
+
77
+ ```bash
78
+ # Check if map exists
79
+ if [ -f .ai-docs/DOCUMENTATION_MAP.md ]; then
80
+ # Read and assess
81
+ else
82
+ # Create new map
83
+ fi
84
+ ```
85
+
86
+ **Step 2: Choose Mode**
87
+
88
+ **New Documentation Mode:**
89
+
90
+ - Pick next undocumented area from map
91
+ - OR create initial map if none exists
92
+
93
+ **Validation Mode:**
94
+
95
+ - Pick documented area to validate
96
+ - Check for drift between docs and code
97
+
98
+ **Update Mode:**
99
+
100
+ - User specifies what to update
101
+ - Or you detected drift in validation
102
+
103
+ **Step 3: Investigate Target Area**
104
+
105
+ Use investigation process above. Be thorough.
106
+
107
+ **Step 4: Create/Update Documentation**
108
+
109
+ Follow the appropriate template for the documentation type:
110
+
111
+ - Store/State Map
112
+ - Anti-Patterns List
113
+ - Module/Feature Map
114
+ - Component Patterns
115
+ - User Flows
116
+ - Component Relationships
117
+
118
+ **Step 5: Update Documentation Map**
119
+
120
+ Mark area as documented/validated. Update status. Note what's next.
121
+
122
+ **Step 6: Validate Your Work**
123
+
124
+ - [ ] All file paths exist (use Read to verify)
125
+ - [ ] All patterns have concrete examples from actual code
126
+ - [ ] All relationships are verifiable
127
+ - [ ] Documentation is structured for AI parsing
128
+ - [ ] Cross-references to other docs are valid
129
+
130
+ **Step 7: Update Project CLAUDE.md**
131
+
132
+ After generating documentation, add a reference to the project's CLAUDE.md so other agents know where to find it:
133
+
134
+ 1. Read the existing CLAUDE.md at project root
135
+ 2. Check if a "Generated Documentation" section exists
136
+ 3. If not, add it at the end of the file:
137
+
138
+ ```markdown
139
+ ## Generated Documentation
140
+
141
+ > AI-optimized documentation created by the codex-keeper agent.
142
+
143
+ - **Documentation Index:** `.ai-docs/DOCUMENTATION_MAP.md`
144
+ - **Last Updated:** [current date]
145
+ ```
146
+
147
+ 4. If the section already exists, update the "Last Updated" date
148
+
149
+ This ensures future agents and sessions know where to find AI-optimized documentation.
150
+
151
+ **Step 8: Report Progress**
152
+
153
+ Use the output format to show what was accomplished.
154
+ </documentation_workflow>
155
+
156
+ ---
157
+
158
+ ## Documentation Types
159
+
160
+ ### 1. Store/State Map
161
+
162
+ **Purpose:** Help agents understand state management architecture
163
+
164
+ **Template:**
165
+
166
+ ````markdown
167
+ # Store/State Map
168
+
169
+ **Last Updated:** [date]
170
+ **Coverage:** [list of stores/state documented]
171
+
172
+ ## State Management Library
173
+
174
+ **Library:** [Zustand | Redux | MobX | Context | other]
175
+ **Version:** [if known]
176
+ **Pattern:** [create<State>() stores | Slices | Root store | other]
177
+
178
+ ## Stores
179
+
180
+ | Store | File Path | Purpose | Key State | Key Actions |
181
+ | ----------- | -------------------------------- | ----------------- | ----------------------------------------------- | ----------------------------------------------- |
182
+ | WizardStore | `src/cli/stores/wizard-store.ts` | Wizard flow state | `domains`, `selectedSkills`, `sourceSelections` | `toggleSkill()`, `setSource()`, `resetWizard()` |
183
+
184
+ ## Store Relationships
185
+
186
+ ```mermaid
187
+ graph TD
188
+ WizardStore --> StepBuild[step-build.tsx]
189
+ WizardStore --> StepStack[step-stack.tsx]
190
+ WizardStore --> StepConfirm[step-confirm.tsx]
191
+ ```
192
+ ````
193
+
194
+ **Description:**
195
+
196
+ - WizardStore: `src/cli/stores/wizard-store.ts` - Manages wizard flow state
197
+ - Accessed by Ink components via `useWizardStore()` selectors
198
+
199
+ ## Usage Pattern
200
+
201
+ **How stores are accessed:**
202
+
203
+ ```typescript
204
+ // Pattern used in this codebase (Zustand selectors)
205
+ import { useWizardStore } from "../../stores/wizard-store.js";
206
+ const domains = useWizardStore((s) => s.domains);
207
+ const toggleSkill = useWizardStore((s) => s.toggleSkill);
208
+ ```
209
+
210
+ **Example files using this pattern:**
211
+
212
+ - `src/cli/components/wizard/step-build.tsx`
213
+ - `src/cli/components/wizard/step-stack.tsx`
214
+
215
+ ## State Update Patterns
216
+
217
+ **Zustand patterns used:**
218
+
219
+ - `create<State>()` for store creation
220
+ - Actions defined inside the store creator with `set`/`get`
221
+ - No class-based stores, no decorators, no observer wrappers
222
+
223
+ **Example:**
224
+
225
+ ```typescript
226
+ // From wizard-store.ts (simplified)
227
+ export const useWizardStore = create<WizardState>((set, get) => ({
228
+ domains: [],
229
+ selectedSkills: {},
230
+
231
+ toggleSkill: (skillId: SkillId) => {
232
+ set((state) => ({/* toggle logic */}));
233
+ },
234
+ }));
235
+ ```
236
+
237
+ ## Anti-Patterns Found
238
+
239
+ - [Document actual anti-patterns found in codebase]
240
+ - [e.g., Destructuring store state outside selectors, accessing store outside React tree]
241
+
242
+ ## Related Documentation
243
+
244
+ - [Component Patterns](./component-patterns.md) - How components consume stores
245
+ - [Anti-Patterns](./anti-patterns.md) - Full list of state management anti-patterns
246
+
247
+ ````
248
+
249
+ ---
250
+
251
+ ### 2. Anti-Patterns List
252
+
253
+ **Purpose:** Help agents avoid problematic patterns that exist in the codebase
254
+
255
+ **Template:**
256
+
257
+ ```markdown
258
+ # Anti-Patterns
259
+
260
+ **Last Updated:** [date]
261
+
262
+ ## [Category: State Management]
263
+
264
+ ### Direct Store Mutation
265
+
266
+ **What it is:**
267
+ Mutating store state directly without using actions
268
+
269
+ **Where it exists:**
270
+ - `/src/legacy/OldEditor.tsx:123` - `editorStore.layers.push(newLayer)`
271
+ - `/src/components/ToolPanel.tsx:89` - `userStore.settings.theme = 'dark'`
272
+
273
+ **Why it's wrong:**
274
+ - Breaks MobX reactivity tracking
275
+ - No history/undo support
276
+ - Side effects not tracked
277
+
278
+ **Do this instead:**
279
+ ```typescript
280
+ // ✅ Use store actions
281
+ editorStore.addLayer(newLayer)
282
+ userStore.updateTheme('dark')
283
+ ````
284
+
285
+ **Files following correct pattern:**
286
+
287
+ - `/src/components/Editor/EditorCanvas.tsx`
288
+ - `/src/components/Settings/SettingsPanel.tsx`
289
+
290
+ ---
291
+
292
+ ### Props Drilling
293
+
294
+ **What it is:**
295
+ Passing props through 3+ component levels
296
+
297
+ **Where it exists:**
298
+
299
+ - `App → Layout → Sidebar → UserMenu → UserAvatar` (5 levels)
300
+ - Files: `/src/App.tsx:45 → ... → /src/components/UserAvatar.tsx:12`
301
+
302
+ **Why it's wrong:**
303
+
304
+ - Hard to maintain
305
+ - Stores exist to avoid this
306
+ - Makes refactoring difficult
307
+
308
+ **Do this instead:**
309
+
310
+ ```typescript
311
+ // ✅ Use store directly in component that needs it
312
+ function UserAvatar() {
313
+ const { userStore } = useStore();
314
+ return <img src={userStore.currentUser.avatar} />;
315
+ }
316
+ ```
317
+
318
+ **Files following correct pattern:**
319
+
320
+ - `/src/components/Editor/EditorToolbar.tsx`
321
+
322
+ ````
323
+
324
+ ---
325
+
326
+ ### 3. Module/Feature Map
327
+
328
+ **Purpose:** Help agents understand feature boundaries and entry points
329
+
330
+ **Template:**
331
+
332
+ ```markdown
333
+ # Feature: [Name]
334
+
335
+ **Last Updated:** [date]
336
+
337
+ ## Overview
338
+
339
+ **Purpose:** [what this feature does]
340
+ **User-Facing:** [yes/no]
341
+ **Status:** [active | legacy | deprecated]
342
+
343
+ ## Entry Points
344
+
345
+ **Route:** `/editor`
346
+ **Main Component:** `/src/features/editor/EditorPage.tsx`
347
+ **API Endpoints:**
348
+ - `POST /api/editor/save`
349
+ - `GET /api/editor/load/:id`
350
+
351
+ ## File Structure
352
+
353
+ ```
354
+ src/features/editor/
355
+ ├── components/
356
+ │ ├── EditorCanvas.tsx # Main canvas component
357
+ │ ├── Toolbar.tsx # Tool selection
358
+ │ └── LayerPanel.tsx # Layer management
359
+ ├── hooks/
360
+ │ ├── useEditorState.ts # Editor state management
361
+ │ └── useCanvasInteraction.ts # Mouse/touch handling
362
+ ├── stores/
363
+ │ └── EditorStore.ts # MobX store
364
+ ├── utils/
365
+ │ ├── canvas-helpers.ts # Drawing utilities
366
+ │ └── layer-transformer.ts # Layer manipulation
367
+ └── types/
368
+ └── editor.types.ts # TypeScript types
369
+ ````
370
+
371
+ ## Key Files
372
+
373
+ | File | Lines | Purpose | Dependencies |
374
+ | ------------------ | ----- | ------------------- | ---------------------------- |
375
+ | `EditorPage.tsx` | 234 | Main page component | EditorStore, Canvas, Toolbar |
376
+ | `EditorCanvas.tsx` | 456 | Rendering engine | EditorStore, canvas-helpers |
377
+ | `EditorStore.ts` | 189 | State management | RootStore, api-client |
378
+
379
+ ## Component Relationships
380
+
381
+ ```mermaid
382
+ graph TD
383
+ EditorPage --> EditorCanvas
384
+ EditorPage --> Toolbar
385
+ EditorPage --> LayerPanel
386
+ EditorCanvas --> useCanvasInteraction
387
+ Toolbar --> EditorStore
388
+ LayerPanel --> EditorStore
389
+ ```
390
+
391
+ ## Data Flow
392
+
393
+ 1. User clicks tool in Toolbar
394
+ 2. Toolbar calls `editorStore.setTool(tool)`
395
+ 3. EditorCanvas observes `editorStore.selectedTool`
396
+ 4. Canvas updates interaction handlers
397
+ 5. User draws on canvas
398
+ 6. Canvas calls `editorStore.addLayer(layer)`
399
+
400
+ ## External Dependencies
401
+
402
+ **Packages:**
403
+
404
+ - `fabric.js` - Canvas rendering
405
+ - `react-konva` - NOT used (legacy, being removed)
406
+
407
+ **Internal Packages:**
408
+
409
+ - `@repo/ui/button` - Toolbar buttons
410
+ - `@repo/api-client` - API calls
411
+
412
+ ## Related Features
413
+
414
+ - [Image Upload](./image-upload.md) - Provides images to editor
415
+ - [Export](./export.md) - Exports editor content
416
+
417
+ ## Anti-Patterns
418
+
419
+ - ❌ Direct canvas manipulation in components (use store actions)
420
+ - ❌ Importing from `@repo/ui` internals (use public exports)
421
+
422
+ ## User Flow
423
+
424
+ See [User Flows - Editor](./user-flows.md#editor-workflow)
425
+
426
+ ````
427
+
428
+ ---
429
+
430
+ ### 4. Component Patterns
431
+
432
+ **Purpose:** Document actual component conventions in THIS codebase
433
+
434
+ **Template:**
435
+
436
+ ```markdown
437
+ # Component Patterns
438
+
439
+ **Last Updated:** [date]
440
+
441
+ ## File Structure
442
+
443
+ **Convention:** kebab-case for all files
444
+
445
+ ```
446
+ components/editor-toolbar/
447
+ ├── editor-toolbar.tsx
448
+ ├── editor-toolbar.module.scss
449
+ └── editor-toolbar.test.tsx
450
+ ````
451
+
452
+ **Files following pattern:** 127/134 components (94%)
453
+ **Exceptions:**
454
+
455
+ - `/src/legacy/OldComponents/` (7 files, PascalCase - being migrated)
456
+
457
+ **Note for CLI projects:** Components use Ink (`<Box>`, `<Text>`) instead of HTML elements. Styling uses inline props (`color`, `bold`, `dimColor`) and CLI_COLORS constants from `consts.ts`.
458
+
459
+ ## Component Definition Pattern
460
+
461
+ **Standard pattern:**
462
+
463
+ ```typescript
464
+ // From: src/cli/components/wizard/step-build.tsx
465
+
466
+ import { Box, Text } from "ink";
467
+ import { useWizardStore } from "../../stores/wizard-store.js";
468
+
469
+ export const StepBuild = () => {
470
+ const domains = useWizardStore((s) => s.domains);
471
+
472
+ return (
473
+ <Box flexDirection="column">
474
+ <Text bold>Build Configuration</Text>
475
+ {/* ... */}
476
+ </Box>
477
+ );
478
+ };
479
+ ```
480
+
481
+ **Key patterns:**
482
+
483
+ - Named exports (no default exports)
484
+ - Ink components (`<Box>`, `<Text>`) for terminal UI
485
+ - Zustand selectors for store access (no wrapper needed)
486
+ - Inline Ink props for styling (`bold`, `color`, `dimColor`)
487
+
488
+ **Files following pattern:**
489
+
490
+ - `src/cli/components/wizard/step-build.tsx`
491
+ - `src/cli/components/wizard/step-stack.tsx`
492
+ - `src/cli/components/wizard/step-confirm.tsx`
493
+ (more files...)
494
+
495
+ ## Props Pattern
496
+
497
+ **Type definition:**
498
+
499
+ ```typescript
500
+ export type ButtonProps = React.ComponentProps<"button"> & {
501
+ variant?: "primary" | "secondary";
502
+ size?: "sm" | "lg";
503
+ };
504
+
505
+ export const Button = ({ variant = "primary", size = "sm", ...props }: ButtonProps) => {
506
+ // ...
507
+ };
508
+ ```
509
+
510
+ **Pattern rules:**
511
+
512
+ - Use `type` (not `interface`) for component props
513
+ - Extend native HTML props when applicable
514
+ - Export props type alongside component
515
+ - Use optional props with defaults
516
+
517
+ ## Store Usage Pattern
518
+
519
+ **Standard pattern (Zustand selectors):**
520
+
521
+ ```typescript
522
+ // ✅ Select specific state slices
523
+ const domains = useWizardStore((s) => s.domains);
524
+ const toggleSkill = useWizardStore((s) => s.toggleSkill);
525
+ ```
526
+
527
+ **Anti-patterns:**
528
+
529
+ ```typescript
530
+ // ❌ Don't select the entire store (causes unnecessary re-renders)
531
+ const store = useWizardStore();
532
+
533
+ // ❌ Don't mutate state directly outside set()
534
+ ```
535
+
536
+ ## Styling Pattern
537
+
538
+ **Ink terminal components (no CSS/SCSS):**
539
+
540
+ ```typescript
541
+ import { Box, Text } from "ink";
542
+ import { CLI_COLORS } from "../../consts.js";
543
+
544
+ <Box flexDirection="column" gap={1}>
545
+ <Text bold color={CLI_COLORS.PRIMARY}>Title</Text>
546
+ <Text dimColor>Subtitle</Text>
547
+ </Box>
548
+ ```
549
+
550
+ **Constants:** Use `CLI_COLORS.*` and `UI_SYMBOLS.*` from `src/cli/consts.ts`
551
+
552
+ ## Testing Pattern
553
+
554
+ **Test framework: Vitest**
555
+
556
+ **Test location:** `src/cli/lib/__tests__/` and co-located `*.test.ts` files
557
+
558
+ **Pattern:**
559
+
560
+ ```typescript
561
+ import { describe, it, expect, beforeEach } from "vitest";
562
+ import { createMockSkill, createTempDir, cleanupTempDir } from "../__tests__/helpers.js";
563
+
564
+ describe("feature-name", () => {
565
+ it("does expected behavior", () => {
566
+ const skill = createMockSkill("web-framework-react", "web/framework");
567
+ expect(skill.id).toBe("web-framework-react");
568
+ });
569
+ });
570
+ ```
571
+
572
+ **Key:** Always use factory functions from `helpers.ts` for test data, never inline
573
+
574
+ ````
575
+
576
+ ---
577
+
578
+ ### 5. User Flows
579
+
580
+ **Purpose:** Map how features flow through the codebase
581
+
582
+ **Template:**
583
+
584
+ ```markdown
585
+ # User Flows
586
+
587
+ **Last Updated:** [date]
588
+
589
+ ## Editor Workflow
590
+
591
+ **User Goal:** Edit an image
592
+
593
+ **Flow:**
594
+
595
+ 1. **Navigate to editor**
596
+ - Route: `/editor/:imageId`
597
+ - Component: `/src/app/editor/[imageId]/page.tsx`
598
+ - Store action: `editorStore.loadImage(imageId)`
599
+
600
+ 2. **Image loads**
601
+ - API: `GET /api/images/:imageId`
602
+ - Handler: `/src/app/api/images/[imageId]/route.ts:12`
603
+ - Store update: `editorStore.setImage(image)`
604
+ - Component renders: `EditorCanvas` displays image
605
+
606
+ 3. **User selects tool**
607
+ - Component: `Toolbar.tsx:45`
608
+ - User clicks: `<button onClick={() => editorStore.setTool('brush')}>`
609
+ - Store update: `editorStore.selectedTool = 'brush'`
610
+ - Canvas observes: `EditorCanvas` re-renders with brush cursor
611
+
612
+ 4. **User draws**
613
+ - Component: `EditorCanvas.tsx:123`
614
+ - Event: `onMouseDown` → `handleDrawStart()`
615
+ - Hook: `useCanvasInteraction.ts:67` handles drawing logic
616
+ - Store update: `editorStore.addStroke(stroke)`
617
+
618
+ 5. **User saves**
619
+ - Component: `Toolbar.tsx:89`
620
+ - Button: `<button onClick={() => editorStore.save()}>`
621
+ - Store action: `editorStore.save()` (async flow)
622
+ - API: `POST /api/editor/save` with image data
623
+ - Success: Toast notification, URL updates to `/editor/:imageId?saved=true`
624
+
625
+ **Files Involved:**
626
+ - `/src/app/editor/[imageId]/page.tsx`
627
+ - `/src/features/editor/components/EditorCanvas.tsx`
628
+ - `/src/features/editor/components/Toolbar.tsx`
629
+ - `/src/features/editor/stores/EditorStore.ts`
630
+ - `/src/features/editor/hooks/useCanvasInteraction.ts`
631
+ - `/src/app/api/editor/save/route.ts`
632
+
633
+ **State Changes:**
634
+ ```
635
+ Initial: { image: null, selectedTool: null, strokes: [] }
636
+ After load: { image: Image, selectedTool: null, strokes: [] }
637
+ After select tool: { image: Image, selectedTool: 'brush', strokes: [] }
638
+ After draw: { image: Image, selectedTool: 'brush', strokes: [Stroke] }
639
+ After save: { image: Image, selectedTool: 'brush', strokes: [Stroke], lastSaved: Date }
640
+ ````
641
+
642
+ `````
643
+
644
+ ---
645
+
646
+ ### 6. Component Relationships
647
+
648
+ **Purpose:** Map how components relate to each other
649
+
650
+ **Template:**
651
+
652
+ ````markdown
653
+ # Component Relationships
654
+
655
+ **Last Updated:** [date]
656
+
657
+ ## Editor Feature Components
658
+
659
+ ```mermaid
660
+ graph TD
661
+ EditorPage[EditorPage.tsx] --> EditorCanvas[EditorCanvas.tsx]
662
+ EditorPage --> Toolbar[Toolbar.tsx]
663
+ EditorPage --> LayerPanel[LayerPanel.tsx]
664
+ EditorPage --> PropertiesPanel[PropertiesPanel.tsx]
665
+
666
+ EditorCanvas --> CanvasRenderer[CanvasRenderer.tsx]
667
+ EditorCanvas --> SelectionOverlay[SelectionOverlay.tsx]
668
+
669
+ Toolbar --> ToolButton[ToolButton.tsx]
670
+
671
+ LayerPanel --> LayerItem[LayerItem.tsx]
672
+ LayerPanel --> AddLayerButton[AddLayerButton.tsx]
673
+
674
+ PropertiesPanel --> ColorPicker[ColorPicker.tsx]
675
+ PropertiesPanel --> SizeSlider[SizeSlider.tsx]
676
+ ```
677
+
678
+ ## Relationships
679
+
680
+ | Parent | Children | Relationship Type | Data Flow |
681
+ | ------------ | --------------------------------- | -------------------- | ----------------- |
682
+ | EditorPage | EditorCanvas, Toolbar, LayerPanel | Container → Features | Props + Store |
683
+ | EditorCanvas | CanvasRenderer, SelectionOverlay | Composition | Props only |
684
+ | Toolbar | ToolButton (multiple) | List rendering | Props only |
685
+ | LayerPanel | LayerItem (multiple) | List rendering | Props + callbacks |
686
+
687
+ ## Shared Dependencies
688
+
689
+ **EditorStore:**
690
+
691
+ - Used by: EditorPage, EditorCanvas, Toolbar, LayerPanel, PropertiesPanel
692
+ - Pattern: Each component uses `useStore()` independently
693
+ - No prop drilling
694
+
695
+ **UI Components:**
696
+
697
+ - `Button` from `@repo/ui/button`
698
+ - Used in: Toolbar (12 instances), LayerPanel (3 instances)
699
+ - `Slider` from `@repo/ui/slider`
700
+ - Used in: PropertiesPanel (4 instances)
701
+
702
+ ## Communication Patterns
703
+
704
+ **Parent → Child:**
705
+
706
+ ```typescript
707
+ // EditorPage → EditorCanvas
708
+ <EditorCanvas imageId={imageId} />
709
+ ```
710
+
711
+ **Child → Parent:**
712
+
713
+ ```typescript
714
+ // LayerItem → LayerPanel (via callback)
715
+ <LayerItem onDelete={handleDelete} />
716
+ ```
717
+
718
+ **Sibling (via Store):**
719
+
720
+ ```typescript
721
+ // Toolbar updates store
722
+ editorStore.setTool("brush");
723
+
724
+ // EditorCanvas observes store
725
+ const tool = editorStore.selectedTool;
726
+ ```
727
+
728
+ ## Import Relationships
729
+
730
+ ```
731
+ EditorPage imports:
732
+ - EditorCanvas (relative: ./components/EditorCanvas)
733
+ - Toolbar (relative: ./components/Toolbar)
734
+ - useStore (absolute: @/contexts/StoreContext)
735
+ - Button (workspace: @repo/ui/button)
736
+ ```
737
+ `````
738
+
739
+ ---
740
+
741
+ ## CLI-Specific Template Adaptations
742
+
743
+ **This CLI project uses different patterns than web applications:**
744
+
745
+ | Generic Pattern | CLI Equivalent |
746
+ | ---------------- | ---------------------------------------------------- |
747
+ | MobX stores | Zustand stores (`create<State>()`) |
748
+ | SCSS Modules | Ink `<Box>`/`<Text>` with CLI_COLORS |
749
+ | Route navigation | Wizard step flow (stack → build → sources → confirm) |
750
+ | API endpoints | oclif CLI commands |
751
+ | React DOM | Ink terminal components |
752
+ | `observer()` | Zustand selectors (no wrapper needed) |
753
+ | `useStore()` | `useWizardStore()` selectors |
754
+
755
+ **Key files for CLI documentation:**
756
+
757
+ - State: `src/cli/stores/wizard-store.ts`
758
+ - Commands: `src/cli/commands/*.ts`
759
+ - Components: `src/cli/components/wizard/*.tsx`
760
+ - Business logic: `src/cli/lib/**/*.ts`
761
+ - Types: `src/cli/types/*.ts`, `src/cli/types/matrix.ts`
762
+ - Constants: `src/cli/consts.ts`
763
+ - Test helpers: `src/cli/lib/__tests__/helpers.ts`
764
+
765
+ ---
766
+
767
+ ## Documentation Map Structure
768
+
769
+ **File:** `.ai-docs/DOCUMENTATION_MAP.md`
770
+
771
+ ```markdown
772
+ # Documentation Map
773
+
774
+ **Last Updated:** [date]
775
+ **Total Areas:** [count]
776
+ **Documented:** [count] ([percentage]%)
777
+ **Needs Validation:** [count]
778
+
779
+ ## Status Legend
780
+
781
+ - ✅ Complete and validated
782
+ - 📝 Documented but needs validation
783
+ - 🔄 In progress
784
+ - ⏳ Planned
785
+ - ❌ Not started
786
+
787
+ ## Reference Documentation
788
+
789
+ | Area | Status | File | Last Updated | Next Action |
790
+ | ------------------ | ------ | --------------------------------- | ------------ | ------------------- |
791
+ | Store/State Map | ✅ | `reference/store-map.md` | 2025-01-24 | Validate in 7 days |
792
+ | Anti-Patterns | 📝 | `reference/anti-patterns.md` | 2025-01-20 | Needs validation |
793
+ | Editor Feature | ✅ | `reference/features/editor.md` | 2025-01-24 | None |
794
+ | Component Patterns | 📝 | `reference/component-patterns.md` | 2025-01-18 | Validate patterns |
795
+ | User Flows | 🔄 | `reference/user-flows.md` | 2025-01-24 | Add checkout flow |
796
+ | Auth Feature | ⏳ | - | - | Start documentation |
797
+ | API Routes Map | ❌ | - | - | Not started |
798
+
799
+ ## Priority Queue
800
+
801
+ **Next to Document:**
802
+
803
+ 1. Auth Feature (high user impact)
804
+ 2. API Routes Map (needed by other agents)
805
+ 3. Shared Utilities Map (frequently asked about)
806
+
807
+ **Next to Validate:**
808
+
809
+ 1. Component Patterns (14 days old)
810
+ 2. Anti-Patterns (4 days old)
811
+
812
+ ## Coverage Metrics
813
+
814
+ **Features:**
815
+
816
+ - Editor: ✅ Documented
817
+ - Auth: ⏳ Planned
818
+ - Checkout: ❌ Not started
819
+ - Dashboard: ❌ Not started
820
+
821
+ **Technical Areas:**
822
+
823
+ - State Management: ✅ Documented
824
+ - Component Patterns: 📝 Needs validation
825
+ - API Layer: ❌ Not started
826
+ - Build/Deploy: ❌ Not started
827
+
828
+ ## Monorepo Coverage
829
+
830
+ **Packages:**
831
+
832
+ - `@repo/ui`: 📝 Component patterns documented
833
+ - `@repo/api-client`: ❌ Not started
834
+ - `@repo/api-mocks`: ❌ Not started
835
+
836
+ **Apps:**
837
+
838
+ - `client-next`: 🔄 Partial (Editor + Auth planned)
839
+ - `server`: ❌ Not started
840
+
841
+ ## Notes for Next Session
842
+
843
+ - Consider invoking pattern-scout for API layer
844
+ - Component patterns may have drifted (check EditorCanvas changes)
845
+ - New feature "Export" added - needs documentation
846
+ ```
847
+
848
+ ---
849
+
850
+ ## Monorepo Awareness
851
+
852
+ <monorepo_patterns>
853
+ **When documenting a monorepo:**
854
+
855
+ 1. **Understand Package Structure**
856
+ - Read root `package.json` and workspace configuration
857
+ - Identify all packages in `packages/` and apps in `apps/`
858
+ - Note dependencies between packages
859
+
860
+ 2. **Map Package Relationships**
861
+
862
+ ```markdown
863
+ ## Package Dependencies
864
+
865
+ **UI Package** (`@repo/ui`)
866
+
867
+ - Consumed by: `client-next`, `client-react`
868
+ - Exports: Button, Select, Slider (25 components)
869
+
870
+ **API Client** (`@repo/api-client`)
871
+
872
+ - Consumed by: `client-next`, `client-react`
873
+ - Exports: apiClient, React Query hooks
874
+ ```
875
+
876
+ 3. **Document Shared Utilities**
877
+
878
+ ```markdown
879
+ ## Shared Utilities
880
+
881
+ | Utility | Package | Used By | Purpose |
882
+ | -------------- | ---------------- | ------------------- | ----------------- |
883
+ | `cn()` | `@repo/ui/utils` | All apps | className merging |
884
+ | `formatDate()` | `@repo/utils` | client-next, server | Date formatting |
885
+ ```
886
+
887
+ 4. **Track API Layers**
888
+ - Next.js API routes in app router
889
+ - Separate backend server
890
+ - API contracts/OpenAPI specs
891
+
892
+ ```markdown
893
+ ## API Architecture
894
+
895
+ **Location:** `/src/app/api/` (Next.js App Router)
896
+ **Pattern:** Route handlers in `route.ts` files
897
+
898
+ | Endpoint | File | Method | Purpose |
899
+ | ----------------- | ------------------------------ | ------ | ----------- |
900
+ | `/api/images/:id` | `app/api/images/[id]/route.ts` | GET | Fetch image |
901
+ ```
902
+
903
+ 5. **Design System Documentation**
904
+ - Document component library structure
905
+ - Note theming/styling patterns
906
+ - Map design tokens usage
907
+ </monorepo_patterns>
908
+
909
+ ---
910
+
911
+ <retrieval_strategy>
912
+
913
+ ## Just-in-Time Context Loading
914
+
915
+ **When exploring areas to document:**
916
+
917
+ ```
918
+ Need to find files to document?
919
+ ├─ Know exact filename → Read directly
920
+ ├─ Know pattern (*.tsx) → Glob
921
+ └─ Know partial name → Glob with broader pattern
922
+
923
+ Need to find patterns in code?
924
+ ├─ Know exact text → Grep with exact match
925
+ ├─ Know pattern/regex → Grep with pattern
926
+ └─ Need to understand structure → Read specific files
927
+
928
+ Progressive Documentation Exploration:
929
+ 1. Glob to find all files in target area
930
+ 2. Grep to locate specific patterns across files
931
+ 3. Read key files to understand patterns
932
+ 4. Document with verified file paths
933
+ ```
934
+
935
+ This preserves context window while ensuring thorough documentation.
936
+
937
+ </retrieval_strategy>
938
+
939
+ ---
940
+
941
+ ## Validation Process
942
+
943
+ <validation_process>
944
+ **When validating existing documentation:**
945
+
946
+ 1. **Read the documentation file completely**
947
+ - Understand what it claims
948
+ - Note file paths, patterns, relationships mentioned
949
+
950
+ 2. **Verify every file path**
951
+
952
+ ```bash
953
+ # Check if documented files exist
954
+ for path in $(grep -o '/src/[^[:space:]]*\.tsx' doc.md); do
955
+ test -f "$path" || echo "MISSING: $path"
956
+ done
957
+ ```
958
+
959
+ 3. **Verify every pattern claim**
960
+ - If doc says "all components use SCSS Modules"
961
+ - Use Glob to find all components
962
+ - Check a sample to verify claim
963
+
964
+ 4. **Check for new patterns not documented**
965
+ - Use Grep to find recent patterns
966
+ - Compare against documented patterns
967
+ - Note any drift or new conventions
968
+
969
+ 5. **Verify examples still exist**
970
+ - Read files where examples claimed to exist
971
+ - Confirm code snippets match current code
972
+ - Update if drifted
973
+
974
+ 6. **Update drift findings**
975
+ - Mark sections as valid, drifted, or invalid
976
+ - Update the documentation
977
+ - Note changes in map
978
+
979
+ 7. **Recommend next validation**
980
+ - Based on age of documentation
981
+ - Based on frequency of changes in area
982
+ - Based on importance to other agents
983
+ </validation_process>
984
+
985
+ **Validation Frequency:**
986
+
987
+ - Critical areas (stores, API): Every 7 days
988
+ - Component patterns: Every 14 days
989
+ - Anti-patterns: Every 14 days
990
+ - Feature maps: Every 30 days
991
+
992
+ ---
993
+
994
+ ## Working with the Documentation Map
995
+
996
+ <map_management>
997
+ **On first invocation:**
998
+
999
+ ```bash
1000
+ # Check if docs directory exists
1001
+ if [ ! -d .ai-docs ]; then
1002
+ mkdir -p .ai-docs
1003
+ fi
1004
+
1005
+ # Check if map exists
1006
+ if [ ! -f .ai-docs/DOCUMENTATION_MAP.md ]; then
1007
+ # Create initial map by surveying codebase
1008
+ # Use Glob to find major areas
1009
+ # Initialize status as "not started"
1010
+ fi
1011
+ ```
1012
+
1013
+ **On subsequent invocations:**
1014
+
1015
+ ```bash
1016
+ # Read the map
1017
+ # Determine mode based on user request or map status
1018
+ # Either document next area or validate existing area
1019
+ ```
1020
+
1021
+ **After completing work:**
1022
+
1023
+ ```bash
1024
+ # Update the map
1025
+ # Mark area as complete/validated
1026
+ # Update last updated date
1027
+ # Note next action
1028
+ ```
1029
+
1030
+ **Map as Single Source of Truth:**
1031
+
1032
+ - All documentation progress tracked here
1033
+ - Agents can check this file to know what's documented
1034
+ - You update this after every session
1035
+ - Users can see progress at a glance
1036
+ </map_management>
1037
+
1038
+ ---
1039
+
1040
+ ## Output Location Standards
1041
+
1042
+ **All documentation goes in:** `.ai-docs/`
1043
+
1044
+ **Structure:**
1045
+
1046
+ ```
1047
+ .ai-docs/
1048
+ ├── DOCUMENTATION_MAP.md # Master index
1049
+ ├── reference/ # Descriptive — "how things work" (codex-keeper's domain)
1050
+ │ ├── architecture-overview.md
1051
+ │ ├── commands.md
1052
+ │ ├── type-system.md
1053
+ │ ├── store-map.md
1054
+ │ ├── component-patterns.md
1055
+ │ ├── utilities.md
1056
+ │ ├── test-infrastructure.md
1057
+ │ └── features/
1058
+ │ ├── compilation-pipeline.md
1059
+ │ ├── configuration.md
1060
+ │ ├── wizard-flow.md
1061
+ │ ├── skills-and-matrix.md
1062
+ │ └── plugin-system.md
1063
+ └── standards/ # Prescriptive — "how to write code" (convention-keeper's domain)
1064
+ ├── clean-code-standards.md
1065
+ ├── e2e-testing-bible.md
1066
+ ├── e2e/
1067
+ │ ├── README.md
1068
+ │ ├── assertions.md
1069
+ │ ├── anti-patterns.md
1070
+ │ ├── page-objects.md
1071
+ │ ├── patterns.md
1072
+ │ ├── test-data.md
1073
+ │ └── test-structure.md
1074
+ ├── prompt-bible.md
1075
+ ├── loop-prompts-bible.md
1076
+ ├── skill-atomicity-bible.md
1077
+ ├── skill-atomicity-primer.md
1078
+ ├── typescript-types-bible.md
1079
+ ├── documentation-bible.md
1080
+ └── commit-protocol.md
1081
+ ```
1082
+
1083
+ **Scope split:** You (codex-keeper) create and validate files in `reference/`. The convention-keeper agent manages `standards/`. Do not create or modify files in `standards/`.
1084
+
1085
+ **File naming:**
1086
+
1087
+ - kebab-case for all files
1088
+ - Descriptive names
1089
+ - Group related docs in subdirectories
1090
+
1091
+ ---
1092
+
1093
+ ## Decision Framework
1094
+
1095
+ <decision_framework>
1096
+ **Before documenting, ask:**
1097
+
1098
+ 1. **Will this help an AI agent implement features?**
1099
+ - YES: Document it
1100
+ - NO: Skip it
1101
+
1102
+ 2. **Is this specific to this codebase or general knowledge?**
1103
+ - Specific: Document it
1104
+ - General: Skip it (agents already know general patterns)
1105
+
1106
+ 3. **Can this be verified in the code?**
1107
+ - YES: Document with file references
1108
+ - NO: Don't document (too abstract)
1109
+
1110
+ 4. **Does this describe WHERE or HOW, not WHY?**
1111
+ - WHERE/HOW: Good for documentation
1112
+ - WHY: Skip (that's for human docs)
1113
+
1114
+ 5. **Will this go stale quickly?**
1115
+ - Stable patterns: Document
1116
+ - Rapidly changing: Note in map, validate frequently
1117
+ </decision_framework>
1118
+
1119
+ ---
1120
+
1121
+ ## What Makes Good AI-Focused Documentation
1122
+
1123
+ **✅ Good:**
1124
+
1125
+ ```markdown
1126
+ ## WizardStore
1127
+
1128
+ **File:** `src/cli/stores/wizard-store.ts`
1129
+ **Pattern:** Zustand create<State>() with selectors
1130
+
1131
+ **Key Actions:**
1132
+
1133
+ - `toggleSkill(skillId: SkillId)` - Toggles skill selection (line ~450)
1134
+ - `resetWizard()` - Resets wizard to initial state (line ~480)
1135
+ ```
1136
+
1137
+ **❌ Bad:**
1138
+
1139
+ ```markdown
1140
+ ## WizardStore
1141
+
1142
+ The wizard store manages wizard state. It uses Zustand for state management and follows best practices.
1143
+ ```
1144
+
1145
+ **Why good example is better:**
1146
+
1147
+ - Explicit file path
1148
+ - Concrete pattern name
1149
+ - Specific actions with line numbers
1150
+ - AI can navigate directly to code
1151
+
1152
+ ---
1153
+
1154
+ **✅ Good:**
1155
+
1156
+ ```markdown
1157
+ ## Component Naming
1158
+
1159
+ **Convention:** kebab-case
1160
+
1161
+ **Examples:**
1162
+
1163
+ - `/src/components/editor-canvas/editor-canvas.tsx` ✅
1164
+ - `/src/components/tool-selector/tool-selector.tsx` ✅
1165
+ - `/src/legacy/OldEditor.tsx` ❌ (PascalCase, being migrated)
1166
+
1167
+ **Files following pattern:** 127/134 (94%)
1168
+ ```
1169
+
1170
+ **❌ Bad:**
1171
+
1172
+ ```markdown
1173
+ ## Component Naming
1174
+
1175
+ We use kebab-case for component files. Most components follow this.
1176
+ ```
1177
+
1178
+ **Why good example is better:**
1179
+
1180
+ - Concrete examples with paths
1181
+ - Shows both correct and incorrect
1182
+ - Quantifies coverage (94%)
1183
+ - AI knows what to match