@jaimevalasek/aioson 1.5.1 → 1.7.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 (341) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +729 -226
  3. package/docs/design-previews/aurora-command-ui-website.html +884 -0
  4. package/docs/design-previews/aurora-command-ui.html +682 -0
  5. package/docs/design-previews/bold-editorial-ui-website.html +658 -0
  6. package/docs/design-previews/bold-editorial-ui.html +717 -0
  7. package/docs/design-previews/clean-saas-ui-website.html +1202 -0
  8. package/docs/design-previews/clean-saas-ui.html +549 -0
  9. package/docs/design-previews/cognitive-core-ui-website.html +1009 -0
  10. package/docs/design-previews/cognitive-core-ui.html +463 -0
  11. package/docs/design-previews/glassmorphism-ui-website.html +572 -0
  12. package/docs/design-previews/glassmorphism-ui.html +886 -0
  13. package/docs/design-previews/index.html +699 -0
  14. package/docs/design-previews/interface-design-website.html +1187 -0
  15. package/docs/design-previews/interface-design.html +513 -0
  16. package/docs/design-previews/neo-brutalist-ui-website.html +621 -0
  17. package/docs/design-previews/neo-brutalist-ui.html +797 -0
  18. package/docs/design-previews/premium-command-center-ui-website.html +1217 -0
  19. package/docs/design-previews/premium-command-center-ui.html +552 -0
  20. package/docs/design-previews/pt.squarespace.com-homepage.html +889 -0
  21. package/docs/design-previews/warm-craft-ui-website.html +684 -0
  22. package/docs/design-previews/warm-craft-ui.html +739 -0
  23. package/docs/en/cli-reference.md +20 -9
  24. package/docs/integrations/sdlc-genius-boundary.md +76 -0
  25. package/docs/integrations/sdlc-genius-eval-matrix.md +75 -0
  26. package/docs/integrations/sdlc-genius-install-checklist.md +93 -0
  27. package/docs/integrations/sdlc-genius-review-samples.md +86 -0
  28. package/docs/pt/README.md +10 -0
  29. package/docs/pt/agent-sharding.md +132 -0
  30. package/docs/pt/agentes.md +9 -2
  31. package/docs/pt/busca-de-contexto.md +129 -0
  32. package/docs/pt/cache-de-contexto.md +156 -0
  33. package/docs/pt/comandos-cli.md +915 -1
  34. package/docs/pt/design-hybrid-forge.md +356 -0
  35. package/docs/pt/devlog-pipeline.md +270 -0
  36. package/docs/pt/fluxo-artefatos.md +178 -0
  37. package/docs/pt/hooks-session-guard.md +454 -0
  38. package/docs/pt/inicio-rapido.md +54 -3
  39. package/docs/pt/inteligencia-adaptativa.md +324 -0
  40. package/docs/pt/monitor-de-contexto.md +158 -0
  41. package/docs/pt/recuperacao-de-sessao.md +125 -0
  42. package/docs/pt/sandbox.md +125 -0
  43. package/docs/pt/sdd-automation-scripts.md +557 -0
  44. package/docs/pt/site-forge.md +309 -0
  45. package/docs/pt/skills.md +98 -6
  46. package/docs/pt/spec-learnings-pipeline.md +265 -0
  47. package/package.json +1 -1
  48. package/src/a2a/client.js +165 -0
  49. package/src/a2a/server.js +223 -0
  50. package/src/agent-loader.js +280 -0
  51. package/src/cli.js +329 -1
  52. package/src/commands/agent-audit.js +397 -0
  53. package/src/commands/agent-export-skill.js +229 -0
  54. package/src/commands/agent-loader.js +85 -0
  55. package/src/commands/artifact-validate.js +189 -0
  56. package/src/commands/brief-gen.js +405 -0
  57. package/src/commands/brief-validate.js +65 -0
  58. package/src/commands/classify.js +256 -0
  59. package/src/commands/context-cache.js +90 -0
  60. package/src/commands/context-compact.js +49 -0
  61. package/src/commands/context-health.js +175 -0
  62. package/src/commands/context-monitor.js +163 -0
  63. package/src/commands/context-search.js +66 -0
  64. package/src/commands/context-trim.js +177 -0
  65. package/src/commands/design-hybrid-options.js +385 -0
  66. package/src/commands/detect-test-runner.js +55 -0
  67. package/src/commands/devlog-export-brains.js +27 -0
  68. package/src/commands/devlog-process.js +292 -0
  69. package/src/commands/devlog-watch.js +131 -0
  70. package/src/commands/feature-close.js +165 -0
  71. package/src/commands/gate-check.js +228 -0
  72. package/src/commands/health.js +214 -0
  73. package/src/commands/hooks-emit.js +253 -0
  74. package/src/commands/hooks-install.js +347 -0
  75. package/src/commands/init.js +54 -13
  76. package/src/commands/install.js +52 -13
  77. package/src/commands/learning-auto-promote.js +195 -0
  78. package/src/commands/learning-evolve.js +364 -0
  79. package/src/commands/learning-export.js +103 -0
  80. package/src/commands/learning-rollback.js +164 -0
  81. package/src/commands/live.js +59 -1
  82. package/src/commands/pattern-detect.js +33 -0
  83. package/src/commands/preflight-context.js +30 -0
  84. package/src/commands/preflight.js +208 -0
  85. package/src/commands/pulse-update.js +130 -0
  86. package/src/commands/recovery.js +43 -0
  87. package/src/commands/runner-daemon.js +274 -0
  88. package/src/commands/runner-plan.js +70 -0
  89. package/src/commands/runner-queue-from-plan.js +166 -0
  90. package/src/commands/runner-queue.js +189 -0
  91. package/src/commands/runner-run.js +129 -0
  92. package/src/commands/runtime.js +47 -1
  93. package/src/commands/sandbox.js +37 -0
  94. package/src/commands/self-implement-loop.js +256 -0
  95. package/src/commands/session-guard.js +218 -0
  96. package/src/commands/setup-context.js +22 -2
  97. package/src/commands/setup.js +178 -0
  98. package/src/commands/sizing.js +165 -0
  99. package/src/commands/skill.js +144 -32
  100. package/src/commands/spec-checkpoint.js +177 -0
  101. package/src/commands/spec-status.js +79 -0
  102. package/src/commands/spec-sync.js +190 -0
  103. package/src/commands/spec-tasks.js +288 -0
  104. package/src/commands/squad-autorun.js +1220 -0
  105. package/src/commands/squad-bus.js +217 -0
  106. package/src/commands/squad-card.js +149 -0
  107. package/src/commands/squad-daemon.js +134 -0
  108. package/src/commands/squad-dependency-graph.js +164 -0
  109. package/src/commands/squad-review.js +106 -0
  110. package/src/commands/squad-scaffold.js +55 -0
  111. package/src/commands/squad-tool-register.js +157 -0
  112. package/src/commands/state-save.js +122 -0
  113. package/src/commands/tool-registry-cmd.js +232 -0
  114. package/src/commands/update.js +9 -0
  115. package/src/commands/verify-gate.js +572 -0
  116. package/src/commands/workflow-execute.js +241 -0
  117. package/src/constants.js +18 -0
  118. package/src/context-cache.js +159 -0
  119. package/src/context-search.js +326 -0
  120. package/src/design-variation-catalog.js +503 -0
  121. package/src/i18n/messages/en.js +32 -2
  122. package/src/i18n/messages/es.js +30 -2
  123. package/src/i18n/messages/fr.js +30 -2
  124. package/src/i18n/messages/pt-BR.js +32 -2
  125. package/src/install-animation.js +260 -0
  126. package/src/install-profile.js +143 -0
  127. package/src/install-wizard.js +475 -0
  128. package/src/installer.js +44 -10
  129. package/src/lib/health-check.js +158 -0
  130. package/src/lib/hook-protocol.js +76 -0
  131. package/src/mcp/apps/squad-dashboard/app.js +163 -0
  132. package/src/mcp/apps/squad-dashboard/index.html +261 -0
  133. package/src/mcp/apps/squad-dashboard/mcp-manifest.json +23 -0
  134. package/src/mcp/resources/squad-state.js +130 -0
  135. package/src/parser.js +7 -1
  136. package/src/preflight-engine.js +443 -0
  137. package/src/recovery-context-session.js +154 -0
  138. package/src/runner/cascade.js +97 -0
  139. package/src/runner/cli-launcher.js +109 -0
  140. package/src/runner/plan-importer.js +63 -0
  141. package/src/runner/queue-store.js +159 -0
  142. package/src/runtime-store.js +158 -4
  143. package/src/sandbox.js +177 -0
  144. package/src/squad/agent-teams-adapter.js +264 -0
  145. package/src/squad/brief-validator.js +350 -0
  146. package/src/squad/bus-bridge.js +140 -0
  147. package/src/squad/context-compactor.js +265 -0
  148. package/src/squad/cross-ai-synthesizer.js +250 -0
  149. package/src/squad/hooks-generator.js +196 -0
  150. package/src/squad/inter-squad-events.js +175 -0
  151. package/src/squad/intra-bus.js +345 -0
  152. package/src/squad/learning-extractor.js +213 -0
  153. package/src/squad/pattern-detector.js +365 -0
  154. package/src/squad/preflight-context.js +296 -0
  155. package/src/squad/recovery-context.js +242 -71
  156. package/src/squad/reflection.js +365 -0
  157. package/src/squad/squad-scaffold.js +177 -0
  158. package/src/squad/state-manager.js +310 -0
  159. package/src/squad/task-decomposer.js +652 -0
  160. package/src/squad/verify-gate.js +303 -0
  161. package/src/tool-executor.js +94 -0
  162. package/src/updater.js +10 -3
  163. package/src/worker-runner.js +186 -1
  164. package/template/.aioson/agents/analyst.md +119 -3
  165. package/template/.aioson/agents/architect.md +98 -0
  166. package/template/.aioson/agents/design-hybrid-forge.md +141 -0
  167. package/template/.aioson/agents/dev.md +335 -14
  168. package/template/.aioson/agents/deyvin.md +117 -2
  169. package/template/.aioson/agents/discovery-design-doc.md +44 -0
  170. package/template/.aioson/agents/genome.md +14 -0
  171. package/template/.aioson/agents/neo.md +78 -1
  172. package/template/.aioson/agents/orache.md +50 -4
  173. package/template/.aioson/agents/orchestrator.md +197 -1
  174. package/template/.aioson/agents/pm.md +93 -0
  175. package/template/.aioson/agents/product.md +77 -4
  176. package/template/.aioson/agents/profiler-enricher.md +14 -0
  177. package/template/.aioson/agents/profiler-forge.md +14 -0
  178. package/template/.aioson/agents/profiler-researcher.md +14 -0
  179. package/template/.aioson/agents/qa.md +249 -19
  180. package/template/.aioson/agents/setup.md +144 -12
  181. package/template/.aioson/agents/sheldon.md +237 -11
  182. package/template/.aioson/agents/site-forge.md +1753 -0
  183. package/template/.aioson/agents/squad.md +162 -0
  184. package/template/.aioson/agents/tester.md +209 -0
  185. package/template/.aioson/agents/ux-ui.md +34 -1
  186. package/template/.aioson/brains/README.md +128 -0
  187. package/template/.aioson/brains/_index.json +16 -0
  188. package/template/.aioson/brains/scripts/query.js +103 -0
  189. package/template/.aioson/brains/site-forge/visual-patterns.brain.json +205 -0
  190. package/template/.aioson/config.md +158 -13
  191. package/template/.aioson/constitution.md +33 -0
  192. package/template/.aioson/context/forensics/.gitkeep +0 -0
  193. package/template/.aioson/context/project-pulse.md +34 -0
  194. package/template/.aioson/context/seeds/seed-example.md +27 -0
  195. package/template/.aioson/context/user-profile.md +42 -0
  196. package/template/.aioson/docs/LAYERS.md +79 -0
  197. package/template/.aioson/docs/README.md +76 -0
  198. package/template/.aioson/docs/example-external-api-context.md +72 -0
  199. package/template/.aioson/locales/en/agents/architect.md +17 -0
  200. package/template/.aioson/locales/en/agents/dev.md +79 -13
  201. package/template/.aioson/locales/en/agents/orache.md +6 -0
  202. package/template/.aioson/locales/en/agents/orchestrator.md +24 -0
  203. package/template/.aioson/locales/en/agents/product.md +50 -0
  204. package/template/.aioson/locales/en/agents/setup.md +33 -1
  205. package/template/.aioson/locales/en/agents/sheldon.md +115 -0
  206. package/template/.aioson/locales/en/agents/squad.md +14 -0
  207. package/template/.aioson/locales/en/agents/tester.md +6 -0
  208. package/template/.aioson/locales/es/agents/analyst.md +2 -0
  209. package/template/.aioson/locales/es/agents/architect.md +19 -0
  210. package/template/.aioson/locales/es/agents/dev.md +64 -4
  211. package/template/.aioson/locales/es/agents/deyvin.md +2 -0
  212. package/template/.aioson/locales/es/agents/discovery-design-doc.md +2 -0
  213. package/template/.aioson/locales/es/agents/genome.md +2 -0
  214. package/template/.aioson/locales/es/agents/neo.md +2 -0
  215. package/template/.aioson/locales/es/agents/orache.md +2 -0
  216. package/template/.aioson/locales/es/agents/orchestrator.md +26 -0
  217. package/template/.aioson/locales/es/agents/pair.md +2 -0
  218. package/template/.aioson/locales/es/agents/pm.md +2 -0
  219. package/template/.aioson/locales/es/agents/product.md +52 -0
  220. package/template/.aioson/locales/es/agents/profiler-enricher.md +2 -0
  221. package/template/.aioson/locales/es/agents/profiler-forge.md +2 -0
  222. package/template/.aioson/locales/es/agents/profiler-researcher.md +2 -0
  223. package/template/.aioson/locales/es/agents/qa.md +2 -0
  224. package/template/.aioson/locales/es/agents/setup.md +35 -1
  225. package/template/.aioson/locales/es/agents/sheldon.md +117 -0
  226. package/template/.aioson/locales/es/agents/squad.md +16 -0
  227. package/template/.aioson/locales/es/agents/tester.md +9 -0
  228. package/template/.aioson/locales/es/agents/ux-ui.md +2 -0
  229. package/template/.aioson/locales/fr/agents/analyst.md +2 -0
  230. package/template/.aioson/locales/fr/agents/architect.md +19 -0
  231. package/template/.aioson/locales/fr/agents/dev.md +64 -4
  232. package/template/.aioson/locales/fr/agents/deyvin.md +2 -0
  233. package/template/.aioson/locales/fr/agents/discovery-design-doc.md +2 -0
  234. package/template/.aioson/locales/fr/agents/genome.md +2 -0
  235. package/template/.aioson/locales/fr/agents/neo.md +2 -0
  236. package/template/.aioson/locales/fr/agents/orache.md +2 -0
  237. package/template/.aioson/locales/fr/agents/orchestrator.md +26 -0
  238. package/template/.aioson/locales/fr/agents/pair.md +2 -0
  239. package/template/.aioson/locales/fr/agents/pm.md +2 -0
  240. package/template/.aioson/locales/fr/agents/product.md +52 -0
  241. package/template/.aioson/locales/fr/agents/profiler-enricher.md +2 -0
  242. package/template/.aioson/locales/fr/agents/profiler-forge.md +2 -0
  243. package/template/.aioson/locales/fr/agents/profiler-researcher.md +2 -0
  244. package/template/.aioson/locales/fr/agents/qa.md +2 -0
  245. package/template/.aioson/locales/fr/agents/setup.md +35 -1
  246. package/template/.aioson/locales/fr/agents/sheldon.md +117 -0
  247. package/template/.aioson/locales/fr/agents/squad.md +16 -0
  248. package/template/.aioson/locales/fr/agents/tester.md +9 -0
  249. package/template/.aioson/locales/fr/agents/ux-ui.md +2 -0
  250. package/template/.aioson/locales/pt-BR/agents/analyst.md +64 -3
  251. package/template/.aioson/locales/pt-BR/agents/architect.md +42 -0
  252. package/template/.aioson/locales/pt-BR/agents/dev.md +147 -14
  253. package/template/.aioson/locales/pt-BR/agents/deyvin.md +47 -0
  254. package/template/.aioson/locales/pt-BR/agents/neo.md +62 -1
  255. package/template/.aioson/locales/pt-BR/agents/orchestrator.md +158 -2
  256. package/template/.aioson/locales/pt-BR/agents/pm.md +95 -1
  257. package/template/.aioson/locales/pt-BR/agents/product.md +145 -18
  258. package/template/.aioson/locales/pt-BR/agents/qa.md +16 -0
  259. package/template/.aioson/locales/pt-BR/agents/setup.md +134 -19
  260. package/template/.aioson/locales/pt-BR/agents/sheldon.md +132 -1
  261. package/template/.aioson/locales/pt-BR/agents/squad.md +14 -0
  262. package/template/.aioson/locales/pt-BR/agents/tester.md +449 -0
  263. package/template/.aioson/rules/README.md +69 -0
  264. package/template/.aioson/rules/data-format-convention.md +136 -0
  265. package/template/.aioson/rules/example-monetary-values.md +30 -0
  266. package/template/.aioson/schemas/squad-manifest.schema.json +124 -3
  267. package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +243 -0
  268. package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -0
  269. package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -0
  270. package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -0
  271. package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -0
  272. package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -0
  273. package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +482 -0
  274. package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +387 -0
  275. package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +222 -0
  276. package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -0
  277. package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -0
  278. package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -0
  279. package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -0
  280. package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -0
  281. package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -0
  282. package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -0
  283. package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +213 -0
  284. package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -0
  285. package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -0
  286. package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -0
  287. package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -0
  288. package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -0
  289. package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -0
  290. package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -0
  291. package/template/.aioson/skills/design/pt.squarespace.com/.skill-meta.json +31 -0
  292. package/template/.aioson/skills/design/pt.squarespace.com/SKILL.md +66 -0
  293. package/template/.aioson/skills/design/pt.squarespace.com/references/components.md +368 -0
  294. package/template/.aioson/skills/design/pt.squarespace.com/references/design-tokens.md +150 -0
  295. package/template/.aioson/skills/design/pt.squarespace.com/references/motion.md +270 -0
  296. package/template/.aioson/skills/design/pt.squarespace.com/references/patterns.md +189 -0
  297. package/template/.aioson/skills/design/pt.squarespace.com/references/websites.md +165 -0
  298. package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +46 -0
  299. package/template/.aioson/skills/process/aioson-spec-driven/references/analyst.md +30 -0
  300. package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +109 -0
  301. package/template/.aioson/skills/process/aioson-spec-driven/references/architect.md +23 -0
  302. package/template/.aioson/skills/process/aioson-spec-driven/references/artifact-map.md +44 -0
  303. package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +37 -0
  304. package/template/.aioson/skills/process/aioson-spec-driven/references/dev.md +47 -0
  305. package/template/.aioson/skills/process/aioson-spec-driven/references/deyvin.md +27 -0
  306. package/template/.aioson/skills/process/aioson-spec-driven/references/hardening-lane.md +49 -0
  307. package/template/.aioson/skills/process/aioson-spec-driven/references/maintenance-and-state.md +101 -0
  308. package/template/.aioson/skills/process/aioson-spec-driven/references/product.md +25 -0
  309. package/template/.aioson/skills/process/aioson-spec-driven/references/qa.md +30 -0
  310. package/template/.aioson/skills/process/aioson-spec-driven/references/sheldon.md +25 -0
  311. package/template/.aioson/skills/process/aioson-spec-driven/references/ui-language.md +75 -0
  312. package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +147 -0
  313. package/template/.aioson/skills/process/design-hybrid-forge/references/crossover-protocol.md +221 -0
  314. package/template/.aioson/skills/process/design-hybrid-forge/references/naming-registry.md +88 -0
  315. package/template/.aioson/skills/process/design-hybrid-forge/references/output-contract.md +306 -0
  316. package/template/.aioson/skills/process/design-hybrid-forge/references/pair-compatibility.md +149 -0
  317. package/template/.aioson/skills/process/design-hybrid-forge/references/quality-gates.md +208 -0
  318. package/template/.aioson/skills/process/design-hybrid-forge/references/variation-library.md +125 -0
  319. package/template/.aioson/skills/process/simplify/SKILL.md +173 -0
  320. package/template/.aioson/skills/static/context-budget-guide.md +46 -0
  321. package/template/.aioson/skills/static/harness-sensors.md +74 -0
  322. package/template/.aioson/skills/static/multi-agent-patterns.md +43 -0
  323. package/template/.aioson/skills/static/react-motion-patterns.md +22 -0
  324. package/template/.aioson/skills/static/static-html-patterns/checklists.md +43 -0
  325. package/template/.aioson/skills/static/static-html-patterns/css-tokens.md +609 -0
  326. package/template/.aioson/skills/static/static-html-patterns/motion.md +193 -0
  327. package/template/.aioson/skills/static/static-html-patterns/premium.md +711 -0
  328. package/template/.aioson/skills/static/static-html-patterns/structure.md +209 -0
  329. package/template/.aioson/skills/static/static-html-patterns/utilities.md +190 -0
  330. package/template/.aioson/skills/static/static-html-patterns.md +58 -1913
  331. package/template/.aioson/skills/static/threejs-patterns.md +929 -0
  332. package/template/.aioson/skills/static/web-research-cache.md +112 -0
  333. package/template/.aioson/tasks/implementation-plan.md +21 -1
  334. package/template/.claude/commands/aioson/agent/design-hybrid-forge.md +5 -0
  335. package/template/.claude/commands/aioson/agent/orache.md +5 -0
  336. package/template/.claude/commands/aioson/agent/sheldon.md +5 -0
  337. package/template/.claude/commands/aioson/agent/site-forge.md +5 -0
  338. package/template/AGENTS.md +75 -1
  339. package/template/CLAUDE.md +31 -0
  340. package/template/OPENCODE.md +4 -0
  341. package/template/researchs/.gitkeep +0 -0
@@ -0,0 +1,103 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * AIOSON Brain Query
4
+ * Cross-references pattern nodes across brain files by tags, quality, verdict, and agent.
5
+ *
6
+ * Usage:
7
+ * node query.js --tags css,hover # nodes matching any of these tags
8
+ * node query.js --tags css,hover --match all # nodes matching ALL tags (AND)
9
+ * node query.js --min-quality 4 # quality >= 4 only
10
+ * node query.js --agent site-forge # brain files for this agent
11
+ * node query.js --verdict EXCELLENT,BEST_PRACTICE # filter by verdict
12
+ * node query.js --avoid # show only AVOID nodes (anti-patterns)
13
+ * node query.js --id css-001,css-002 # fetch specific node IDs
14
+ * node query.js --tags animation --format compact # one-line per node output
15
+ *
16
+ * Output: JSON array of matching nodes (default) or compact table (--format compact)
17
+ */
18
+
19
+ const fs = require('fs');
20
+ const path = require('path');
21
+
22
+ const BRAINS_DIR = path.resolve(__dirname, '..');
23
+ const INDEX_PATH = path.join(BRAINS_DIR, '_index.json');
24
+
25
+ // --- Parse args ---
26
+ const args = process.argv.slice(2);
27
+ const get = (flag) => { const i = args.indexOf(flag); return i !== -1 ? args[i + 1] : null; };
28
+ const has = (flag) => args.includes(flag);
29
+
30
+ const tagsRaw = get('--tags');
31
+ const tags = tagsRaw ? tagsRaw.split(',').map(t => t.trim()) : [];
32
+ const matchMode = get('--match') || 'any'; // 'any' | 'all'
33
+ const minQ = parseInt(get('--min-quality') || '0', 10);
34
+ const agentFilter = get('--agent');
35
+ const verdictRaw = get('--verdict');
36
+ const verdicts = verdictRaw ? verdictRaw.split(',').map(v => v.trim().toUpperCase()) : [];
37
+ const idRaw = get('--id');
38
+ const ids = idRaw ? idRaw.split(',').map(i => i.trim()) : [];
39
+ const avoidOnly = has('--avoid');
40
+ const format = get('--format') || 'json';
41
+
42
+ // --- Load index ---
43
+ if (!fs.existsSync(INDEX_PATH)) {
44
+ console.error('No _index.json found at', INDEX_PATH);
45
+ process.exit(1);
46
+ }
47
+ const index = JSON.parse(fs.readFileSync(INDEX_PATH, 'utf8'));
48
+
49
+ // --- Determine which brain files to load ---
50
+ let brainFiles = index.brains;
51
+ if (agentFilter) {
52
+ brainFiles = brainFiles.filter(b => b.agents.includes(agentFilter));
53
+ }
54
+ if (tags.length > 0) {
55
+ brainFiles = brainFiles.filter(b => tags.some(t => b.tags.includes(t)));
56
+ }
57
+
58
+ // --- Load nodes ---
59
+ let nodes = [];
60
+ for (const brain of brainFiles) {
61
+ const brainPath = path.join(BRAINS_DIR, '..', brain.path);
62
+ if (!fs.existsSync(brainPath)) {
63
+ process.stderr.write(`Warning: brain file not found: ${brainPath}\n`);
64
+ continue;
65
+ }
66
+ const data = JSON.parse(fs.readFileSync(brainPath, 'utf8'));
67
+ nodes.push(...(data.nodes || []).map(n => ({ ...n, _brain: brain.id })));
68
+ }
69
+
70
+ // --- Filter nodes ---
71
+ if (ids.length > 0) {
72
+ nodes = nodes.filter(n => ids.includes(n.id));
73
+ } else {
74
+ if (tags.length > 0) {
75
+ if (matchMode === 'all') {
76
+ nodes = nodes.filter(n => tags.every(t => (n.tags || []).includes(t)));
77
+ } else {
78
+ nodes = nodes.filter(n => tags.some(t => (n.tags || []).includes(t)));
79
+ }
80
+ }
81
+ if (minQ > 0) {
82
+ nodes = nodes.filter(n => (n.q || 0) >= minQ);
83
+ }
84
+ if (verdicts.length > 0) {
85
+ nodes = nodes.filter(n => verdicts.includes((n.v || '').toUpperCase()));
86
+ }
87
+ if (avoidOnly) {
88
+ nodes = nodes.filter(n => n.v === 'AVOID' || n.v === 'BROKEN');
89
+ }
90
+ }
91
+
92
+ // --- Output ---
93
+ if (format === 'compact') {
94
+ const rows = nodes.map(n => `[${n.q}★ ${n.v}] ${n.id} — ${n.title}\n ${n.s}`);
95
+ console.log(rows.join('\n\n') || '(no matches)');
96
+ } else if (format === 'ids') {
97
+ console.log(nodes.map(n => n.id).join('\n'));
98
+ } else {
99
+ console.log(JSON.stringify(nodes, null, 2));
100
+ }
101
+
102
+ // --- Stats footer ---
103
+ process.stderr.write(`\n${nodes.length} node(s) matched across ${brainFiles.length} brain file(s)\n`);
@@ -0,0 +1,205 @@
1
+ {
2
+ "v": 1,
3
+ "agent": "site-forge",
4
+ "domain": "visual-patterns",
5
+ "desc": "CSS/animation/interaction patterns discovered while cloning real sites. Each node is a reusable lesson — quality-scored and anti-pattern aware. Use see[] to traverse related nodes.",
6
+ "updated": "2026-04-01",
7
+ "nodes": [
8
+ {
9
+ "id": "css-001",
10
+ "title": "CTA hover: mix-blend-mode:difference",
11
+ "tags": ["css", "hover", "cta", "button", "animation", "no-js", "blend-mode"],
12
+ "q": 5,
13
+ "v": "EXCELLENT",
14
+ "s": "White ::after pseudo-element with mix-blend-mode:difference creates color inversion on hover. Zero JS. Works on any background color automatically.",
15
+ "p": ".btn{position:relative;overflow:hidden} .btn::after{content:'';position:absolute;inset:0;background:white;mix-blend-mode:difference;transform:scaleX(0);transform-origin:0;transition:transform .3s cubic-bezier(.645,.045,.355,1)} .btn:hover::after{transform:scaleX(1)}",
16
+ "src": "pt.squarespace.com",
17
+ "date": "2026-04-01",
18
+ "not": "background-color color transition on hover — color swap is weak compared to inversion effect",
19
+ "warn": "parent needs overflow:hidden; does not work if parent has background:transparent",
20
+ "see": ["css-002", "css-008"]
21
+ },
22
+ {
23
+ "id": "css-002",
24
+ "title": "Mobile menu: clip-path polygon() swipe",
25
+ "tags": ["css", "animation", "mobile", "menu", "drawer", "keyframes", "clip-path"],
26
+ "q": 5,
27
+ "v": "EXCELLENT",
28
+ "s": "Mobile drawer wipes in from right using clip-path polygon animation — more cinematic than translateX slide. Requires @keyframes swipeIn/swipeOut.",
29
+ "p": "@keyframes swipeIn{0%{clip-path:polygon(101% 0%,100% 0%,101% 100%,116% 100%)}to{clip-path:polygon(0% 0%,101% 0%,101% 101%,0% 101%)}} .menu--open{animation:.6s cubic-bezier(.165,.84,.44,1) forwards swipeIn}",
30
+ "src": "pt.squarespace.com",
31
+ "date": "2026-04-01",
32
+ "not": "transform:translateX(-100%) — generic slide, no visual drama",
33
+ "warn": "Menu must be position:fixed with full viewport size for clip-path to work correctly",
34
+ "see": ["css-001", "css-007"]
35
+ },
36
+ {
37
+ "id": "css-003",
38
+ "title": "Accordion: grid-template-rows 0fr→1fr",
39
+ "tags": ["css", "accordion", "animation", "no-js", "grid", "mobile"],
40
+ "q": 5,
41
+ "v": "EXCELLENT",
42
+ "s": "CSS grid transition on grid-template-rows animates height without any JS height calculation. Modern and smooth.",
43
+ "p": ".accordion-content{display:grid;grid-template-rows:0fr;transition:grid-template-rows .7s cubic-bezier(.165,.84,.44,1)} .accordion-content--open{grid-template-rows:1fr} .accordion-inner{overflow:hidden}",
44
+ "src": "pt.squarespace.com",
45
+ "date": "2026-04-01",
46
+ "not": "max-height hack or JS getBoundingClientRect height calculation",
47
+ "warn": "Inner child needs overflow:hidden for the 0fr collapse to work",
48
+ "see": ["css-007"]
49
+ },
50
+ {
51
+ "id": "css-004",
52
+ "title": "Link underline: dual linear-gradient background-position",
53
+ "tags": ["css", "hover", "link", "underline", "animation", "keyframes"],
54
+ "q": 5,
55
+ "v": "EXCELLENT",
56
+ "s": "Two linear-gradients animated via background-position create a sliding underline that enters from left on hover and exits to right on mouse-leave. Pure CSS.",
57
+ "p": ".link{background-image:linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor);background-size:100% 1px,0% 1px;background-repeat:no-repeat;background-position:-200% 100%,-100% 100%;animation:.5s cubic-bezier(.645,.045,.355,1) forwards ctaUnderlineSlideOut} .link:hover{animation:.5s cubic-bezier(.645,.045,.355,1) forwards ctaUnderlineSlideIn}",
58
+ "src": "pt.squarespace.com",
59
+ "date": "2026-04-01",
60
+ "not": "text-decoration or border-bottom — no directional animation possible",
61
+ "warn": "Requires @keyframes ctaUnderlineSlideIn/Out; currentColor inherits from text color automatically",
62
+ "see": ["css-001", "css-007"]
63
+ },
64
+ {
65
+ "id": "css-005",
66
+ "title": "Scroll reveal: IntersectionObserver + CSS class toggle",
67
+ "tags": ["css", "scroll", "reveal", "animation", "no-js-lib", "intersection-observer"],
68
+ "q": 5,
69
+ "v": "EXCELLENT",
70
+ "s": "IntersectionObserver adds .in-view class at 15% threshold; CSS transition handles opacity+translateY. Zero third-party libraries needed.",
71
+ "p": "// JS: const obs=new IntersectionObserver(entries=>entries.forEach(e=>e.isIntersecting&&e.target.classList.add('in-view')),{threshold:.15}); document.querySelectorAll('.reveal').forEach(el=>obs.observe(el)); // CSS: .reveal{opacity:0;transform:translateY(16px);transition:opacity .8s cubic-bezier(.23,1,.32,1),transform .8s cubic-bezier(.23,1,.32,1)} .reveal.in-view{opacity:1;transform:none}",
72
+ "src": "pt.squarespace.com",
73
+ "date": "2026-04-01",
74
+ "not": "AOS library, ScrollReveal, GSAP ScrollTrigger for basic fade-up reveals — overkill",
75
+ "warn": "threshold:0.15 is the sweet spot; too low fires too early, too high never fires on short sections",
76
+ "see": ["css-007", "css-008"]
77
+ },
78
+ {
79
+ "id": "css-006",
80
+ "title": "Staggered card reveals with nth-child delay",
81
+ "tags": ["css", "animation", "stagger", "cards", "scroll", "reveal"],
82
+ "q": 4,
83
+ "v": "GOOD",
84
+ "s": "Add transition-delay via nth-child selectors on .reveal-stagger children. 0.1s increments per card.",
85
+ "p": ".reveal-stagger>*:nth-child(1){transition-delay:0s} .reveal-stagger>*:nth-child(2){transition-delay:.1s} .reveal-stagger>*:nth-child(3){transition-delay:.2s} .reveal-stagger>*:nth-child(4){transition-delay:.3s} .reveal-stagger>*:nth-child(5){transition-delay:.4s}",
86
+ "src": "pt.squarespace.com",
87
+ "date": "2026-04-01",
88
+ "not": null,
89
+ "warn": "Keep delays short (0.1s increments); longer delays feel sluggish",
90
+ "see": ["css-005"]
91
+ },
92
+ {
93
+ "id": "css-007",
94
+ "title": "Squarespace signature easing curves",
95
+ "tags": ["css", "easing", "animation", "cubic-bezier", "tokens"],
96
+ "q": 5,
97
+ "v": "EXCELLENT",
98
+ "s": "Three distinct easing curves used consistently: reveal=smooth deceleration, cta=power ease, menu=fast-in/slow-out. Gives a unified, professional motion feel.",
99
+ "p": "--ease-sqsp-reveal:cubic-bezier(.23,1,.32,1); --ease-sqsp-cta:cubic-bezier(.645,.045,.355,1); --ease-sqsp-menu:cubic-bezier(.165,.84,.44,1)",
100
+ "src": "pt.squarespace.com",
101
+ "date": "2026-04-01",
102
+ "not": "ease, ease-in-out, linear — generic curves flatten the personality of the site",
103
+ "warn": null,
104
+ "see": ["css-001", "css-002", "css-003", "css-004", "css-005"]
105
+ },
106
+ {
107
+ "id": "css-008",
108
+ "title": "prefers-reduced-motion global override",
109
+ "tags": ["css", "accessibility", "animation", "best-practice"],
110
+ "q": 5,
111
+ "v": "BEST_PRACTICE",
112
+ "s": "Global @media prefers-reduced-motion override that collapses all durations to 0.01ms. Always include in globals.css — never skip.",
113
+ "p": "@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}",
114
+ "src": "pt.squarespace.com",
115
+ "date": "2026-04-01",
116
+ "not": null,
117
+ "warn": null,
118
+ "see": ["css-005"]
119
+ },
120
+ {
121
+ "id": "css-009",
122
+ "title": "Video background: autoPlay muted loop playsInline",
123
+ "tags": ["css", "video", "background", "hero", "mobile"],
124
+ "q": 4,
125
+ "v": "GOOD",
126
+ "s": "Hero video must have all 4 attributes to autoplay cross-browser. WebM first, MP4 fallback. Dark rgba overlay on top. Mobile swap via useEffect.",
127
+ "p": "<video autoplay muted loop playsinline preload=auto><source src=desktop.webm type=video/webm><source src=desktop.mp4 type=video/mp4></video><div style=position:absolute;inset:0;background:rgba(0,0,0,.52)></div>",
128
+ "src": "pt.squarespace.com",
129
+ "date": "2026-04-01",
130
+ "not": "Using background-image: url() for video — use the real <video> element",
131
+ "warn": "Card carousel videos use preload=none; only hero is preload=auto",
132
+ "see": ["css-005"]
133
+ },
134
+ {
135
+ "id": "js-001",
136
+ "title": "Extract @keyframes via document.styleSheets iteration",
137
+ "tags": ["js", "extraction", "keyframes", "css", "cloning", "analysis"],
138
+ "q": 5,
139
+ "v": "EXCELLENT",
140
+ "s": "Iterate document.styleSheets and cssRules to extract @keyframes verbatim. This is the ONLY way to get actual @keyframes — getComputedStyle never exposes them.",
141
+ "p": "const kf=[]; for(const s of document.styleSheets){try{for(const r of s.cssRules){if(r instanceof CSSKeyframesRule){kf.push({name:r.name,css:r.cssText})}}}catch(e){}} console.log(JSON.stringify(kf))",
142
+ "src": "research — pt.squarespace.com analysis",
143
+ "date": "2026-04-01",
144
+ "not": "getComputedStyle(el).animation — returns resolved shorthand, never exposes @keyframes definitions",
145
+ "warn": "CORS will throw on cross-origin stylesheets — wrap in try/catch per sheet",
146
+ "see": ["js-002", "js-003"]
147
+ },
148
+ {
149
+ "id": "js-002",
150
+ "title": "MutationObserver scroll recording for DOM class changes",
151
+ "tags": ["js", "extraction", "cloning", "scroll", "animation", "mutationobserver"],
152
+ "q": 5,
153
+ "v": "EXCELLENT",
154
+ "s": "Attach MutationObserver BEFORE starting scroll; record mutations at 8 checkpoints (0%, 12%, 25%, 37%, 50%, 62%, 75%, 87%, 100%). Each record: scrollY + changed elements + class diffs.",
155
+ "p": "const mutations=[]; const obs=new MutationObserver(ms=>ms.forEach(m=>{mutations.push({scrollY:window.scrollY,target:m.target.className,added:[...m.addedNodes].map(n=>n.className),attr:m.attributeName,old:m.oldValue})})); obs.observe(document.body,{subtree:true,attributes:true,attributeOldValue:true,childList:true}); // then scroll to each % checkpoint with 600ms settle",
156
+ "src": "research — pt.squarespace.com analysis",
157
+ "date": "2026-04-01",
158
+ "not": "Manual screenshot comparison — misses class toggles and DOM mutations",
159
+ "warn": "600ms settle time needed after each scroll to let animations complete",
160
+ "see": ["js-001", "js-003"]
161
+ },
162
+ {
163
+ "id": "js-003",
164
+ "title": "AVOID: getComputedStyle for animation detection",
165
+ "tags": ["js", "extraction", "animation", "anti-pattern"],
166
+ "q": 1,
167
+ "v": "AVOID",
168
+ "s": "getComputedStyle returns resolved property values — it NEVER exposes @keyframes definitions, animation timing functions are partially resolved, clip-path values may differ from source.",
169
+ "p": "// BAD: getComputedStyle(el).animationName → returns name only, not keyframes // BAD: getComputedStyle(el).clipPath → returns computed polygon(), but not the @keyframes that drives it",
170
+ "src": "research — pt.squarespace.com analysis",
171
+ "date": "2026-04-01",
172
+ "not": null,
173
+ "warn": "Use document.styleSheets iteration (js-001) to get real @keyframes definitions",
174
+ "see": ["js-001", "js-002"]
175
+ },
176
+ {
177
+ "id": "js-004",
178
+ "title": "JS library detection before choosing animation strategy",
179
+ "tags": ["js", "cloning", "gsap", "framer-motion", "animation", "detection"],
180
+ "q": 5,
181
+ "v": "EXCELLENT",
182
+ "s": "Always check window.gsap, window.ScrollTrigger, data-framer-component-type before choosing animation implementation. Wrong library choice creates double-animation or no-animation bugs.",
183
+ "p": "const libs={gsap:!!window.gsap,scrollTrigger:!!window.ScrollTrigger,framer:!!document.querySelector('[data-framer-component-type]'),lottie:!!window.lottie,aos:!!window.AOS}",
184
+ "src": "research — pt.squarespace.com analysis",
185
+ "date": "2026-04-01",
186
+ "not": "Defaulting to IntersectionObserver when GSAP is detected on the source site",
187
+ "warn": "Site not using GSAP does NOT mean IntersectionObserver is the right choice — read the actual @keyframes first",
188
+ "see": ["js-001", "js-002", "css-005"]
189
+ },
190
+ {
191
+ "id": "font-001",
192
+ "title": "Proprietary fonts: extract woff2 from saved site, serve locally",
193
+ "tags": ["font", "typography", "woff2", "cloning", "font-face"],
194
+ "q": 4,
195
+ "v": "GOOD",
196
+ "s": "When site uses proprietary font (CDN-blocked), extract woff2 files from the saved site's fonts/ directory. Serve via @font-face pointing to public/fonts/. Reference assets only — rewrite content.",
197
+ "p": "@font-face{font-family:'Clarkson';font-weight:300;font-display:swap;src:url('/fonts/clarkson-300.woff2') format('woff2')}",
198
+ "src": "pt.squarespace.com",
199
+ "date": "2026-04-01",
200
+ "not": "Trying to load proprietary fonts from CDN — 403 in production",
201
+ "warn": "Reference assets only — do not redistribute proprietary font files in public projects",
202
+ "see": []
203
+ }
204
+ ]
205
+ }
@@ -25,6 +25,21 @@ Ranges:
25
25
  - 2-3: SMALL
26
26
  - 4-6: MEDIUM
27
27
 
28
+ ## Context budget warning
29
+
30
+ Configuração: `context_warning_threshold` (padrão: 65%)
31
+
32
+ | Classificação | Threshold recomendado |
33
+ |---------------|-----------------------|
34
+ | MICRO | 75% (fases curtas, ok chegar mais alto) |
35
+ | SMALL | 65% (padrão) |
36
+ | MEDIUM | 55% (fases longas, aviso mais cedo) |
37
+
38
+ Quando o agente perceber que está próximo do threshold:
39
+ 1. Escrever todos os artefatos em progresso (disk‑first)
40
+ 2. Emitir aviso: "⚠ Contexto em {X}% — recomendo `/clear` antes da próxima fase"
41
+ 3. Incluir no `last_checkpoint` o que estava sendo feito
42
+
28
43
  ## Context contract
29
44
  `project.context.md` must contain YAML frontmatter with:
30
45
  - `project_name`
@@ -89,34 +104,62 @@ In direct mode (LLM without CLI), agents call them manually following the rules
89
104
  When the `aioson` CLI is **not available**, agents must write a devlog file at the end of the session (or when the user asks to save progress). This is the only way to preserve session history for the dashboard when the CLI is missing.
90
105
 
91
106
  **Directory:** `aioson-logs/` (create if absent)
92
- **Filename:** `devlog-{YYYY-MM-DD}T{HH-MM}.md`
93
- **If a devlog from today already exists:** append to it instead of creating a new file.
107
+ **Filename:** `devlog-{agent}-{unix-timestamp}.md`
94
108
 
95
109
  **Template:**
96
110
  ```markdown
97
111
  ---
98
- agent: "{agent-id}"
99
- session_start: "{ISO 8601}"
100
- session_end: "{ISO 8601}"
101
- status: completed # or partial
102
- summary: "One-line summary of what was accomplished"
112
+ agent: dev
113
+ feature: {feature-slug or "project"}
114
+ session_key: direct-session:{unix-timestamp}:{agent}
115
+ started_at: {ISO 8601}
116
+ finished_at: {ISO 8601}
117
+ status: completed
118
+ verdict: null
119
+ plan_step: null
103
120
  ---
104
121
 
122
+ # Devlog: @{agent} — {feature} — {YYYY-MM-DD}
123
+
124
+ ## Summary
125
+ {One sentence of what was accomplished.}
126
+
127
+ ## Artifacts
128
+ - {path/to/file.ext}
129
+
105
130
  ## Decisions
106
131
  - {decision} → {why}
107
132
 
108
- ## Changes
109
- - {file}: {what changed}
133
+ ## Learnings
134
+ - [process] {any process learning from this session}
135
+ - [domain] {any domain learning}
136
+
137
+ ## Blockers
138
+ - {blocker or "None"}
139
+ ```
110
140
 
111
- ## Next
112
- - {what should happen next session}
141
+ **Minimum viable devlog (if session was cut short):**
142
+ ```markdown
143
+ ---
144
+ agent: {agent}
145
+ feature: {slug}
146
+ status: partial
147
+ started_at: {ISO 8601}
148
+ finished_at: {ISO 8601}
149
+ ---
150
+ # Devlog: @{agent} — {feature} — {date}
151
+ ## Summary
152
+ {one sentence of what was done}
153
+ ## Learnings
154
+ - [process] {any process learning}
113
155
  ```
114
156
 
115
157
  **Rules:**
116
- - Max 30 lines. This is a decision log, not a transcript.
158
+ - Frontmatter fields `agent`, `started_at`, `finished_at` are required. All others are optional.
159
+ - `[process]` / `[domain]` / `[quality]` / `[preference]` prefixes in Learnings enable automatic promotion to project memory.
117
160
  - Record **why** decisions were made — the "what" is in the git diff.
118
161
  - Skip the devlog for trivial sessions (quick questions, no code changes).
119
- - When the CLI becomes available, `aioson devlog:sync` will import file-based devlogs into SQLite for the dashboard.
162
+ - When the CLI becomes available: `aioson devlog:process .` imports devlogs into SQLite (learnings, artifacts, decisions, verdict).
120
163
 
121
164
  ## On-demand context layers
122
165
 
@@ -228,6 +271,108 @@ When a workflow stage completes or an agent finishes via `runtime-log --finish`,
228
271
 
229
272
  Agents can read this file on activation to resume work without losing context between sessions.
230
273
 
274
+ ## Context compaction template
275
+
276
+ When approaching context threshold, any agent can write a structured checkpoint to
277
+ `.aioson/context/last-handoff.json` before compacting:
278
+
279
+ ```json
280
+ {
281
+ "agent": "<agent-name>",
282
+ "session_summary": {
283
+ "messages_processed": "<N>",
284
+ "tools_used": ["<tool1>", "<tool2>"],
285
+ "recent_requests": ["<last 3 user requests>"],
286
+ "pending_work": ["<item1>", "<item2>"],
287
+ "key_files": ["<path1>", "<path2>"],
288
+ "timeline": ["<step1 done>", "<step2 done>"]
289
+ },
290
+ "compacted_at": "<ISO 8601>",
291
+ "resume_instruction": "Continue from this summary. Do not acknowledge it."
292
+ }
293
+ ```
294
+
295
+ After writing, prepend to the next response:
296
+ `[Context compacted — resuming from checkpoint]`
297
+
298
+ On resume: read `last-handoff.json` before loading any other context file.
299
+
300
+ Agents with dedicated compaction protocols (e.g. `@orache`) define additional
301
+ steps in their own files — this template is the shared baseline.
302
+
303
+ ## Hook contract (PreToolUse / PostToolUse)
304
+
305
+ Hooks are shell scripts configured in `.claude/settings.json` under `hooks`.
306
+ The harness passes context via stdin (JSON) and environment variables.
307
+
308
+ ### Exit codes
309
+ | Code | Meaning |
310
+ |------|---------|
311
+ | 0 | Allow — continue tool execution |
312
+ | 2 | Deny — block tool, return message to agent |
313
+ | other non-zero | Warn — log warning, continue execution |
314
+
315
+ ### Environment variables
316
+ | Variable | Description |
317
+ |----------|-------------|
318
+ | `HOOK_EVENT` | `PreToolUse` or `PostToolUse` |
319
+ | `HOOK_TOOL_NAME` | Tool being executed (e.g. `Bash`, `Write`) |
320
+ | `HOOK_TOOL_INPUT` | JSON params of the tool call |
321
+ | `HOOK_TOOL_IS_ERROR` | `true`/`false` (PostToolUse only) |
322
+ | `HOOK_TOOL_OUTPUT` | Tool output (PostToolUse only) |
323
+
324
+ ### Example: block rm -rf in Bash
325
+ ```bash
326
+ #!/bin/bash
327
+ INPUT=$(cat)
328
+ if echo "$INPUT" | grep -q "rm -rf"; then
329
+ echo "Blocked: rm -rf not allowed in this project"
330
+ exit 2
331
+ fi
332
+ exit 0
333
+ ```
334
+
335
+ ## Agent file size guidelines
336
+
337
+ The Claude Code harness enforces a hard limit of ~4,000 chars per auto-loaded
338
+ instruction file (`CLAUDE.md` hierarchy). Files are truncated silently.
339
+ Agent files in `.aioson/agents/` are read manually (not auto-loaded) so they
340
+ are not subject to this truncation, but large files consume context budget.
341
+
342
+ Recommended targets:
343
+
344
+ | File type | Target | Notes |
345
+ |-----------|--------|-------|
346
+ | `CLAUDE.md` / `AGENTS.md` | ≤ 3,500 chars | Auto-loaded — hard truncation applies |
347
+ | Focused agents (analyst, qa, tester) | ≤ 8,000 chars | Keep lean |
348
+ | Generalist agents (dev, architect) | ≤ 15,000 chars | Move optional sections to `.aioson/docs/` |
349
+ | Orchestrator agents (orchestrator, squad) | ≤ 12,000 chars | Move boilerplate to `.aioson/rules/` |
350
+
351
+ When an agent file exceeds its target:
352
+ 1. Move repeated boilerplate to a shared `.aioson/rules/` file
353
+ 2. Split optional sections into `.aioson/docs/` files (loaded on demand)
354
+ 3. Use the "On-demand context layers" pattern from this config
355
+
356
+ ## Config tiers
357
+
358
+ AIOSON supports three config tiers (precedence: local > project > user):
359
+
360
+ | Tier | Location | Versioned | Purpose |
361
+ |------|----------|-----------|---------|
362
+ | User | `~/.aioson/config.md` | No | Personal defaults (model, locale, thresholds) |
363
+ | Project | `.aioson/config.md` | Yes | Team standards — source of truth |
364
+ | Local | `.aioson/config.local.md` | No | Machine overrides (local paths, env specifics) |
365
+
366
+ When the same setting exists in multiple tiers, the lower tier wins (local > project > user).
367
+
368
+ **Current support:**
369
+ - Project tier: fully supported (this file)
370
+ - Local tier: `config.local.md` is the convention — agents can read it if present
371
+ - User tier (`~/.aioson/config.md`): **backlog** — requires CLI support; not yet read automatically
372
+
373
+ Until the user tier is implemented in the CLI, use `CLAUDE.local.md` for personal
374
+ preferences that should not affect other team members.
375
+
231
376
  ## Agent locale packs
232
377
  - Localized agent prompts are stored in `.aioson/locales/<locale>/agents/`.
233
378
  - Active runtime prompts are in `.aioson/agents/`.
@@ -0,0 +1,33 @@
1
+ ---
2
+ version: 1.0.0
3
+ ratified: 2026-04-04
4
+ last_amended: 2026-04-04
5
+ ---
6
+
7
+ # AIOSON Constitution
8
+
9
+ > Principles that govern all agents, all classifications, all sessions.
10
+ > Every agent may cite these articles. No agent may override them.
11
+
12
+ ## Article I — Spec First
13
+ Features begin as specifications, not code. Implementation without a spec artifact is exploration, not development.
14
+
15
+ ## Article II — Right-Sized Process
16
+ MICRO, SMALL, and MEDIUM must not receive the same process depth. Applying MEDIUM ceremony to a MICRO project wastes more than it protects.
17
+
18
+ ## Article III — Observable Work
19
+ Important agent actions leave visible artifacts or runtime signals. Work that exists only in conversation history is work that can be lost.
20
+
21
+ ## Article IV — Testable Behavior
22
+ Acceptance criteria must be independently verifiable. "Works correctly" is not a criterion. "Returns 403 when user A accesses user B's resource" is.
23
+
24
+ ## Article V — Clean Handoffs
25
+ Artifacts must be self-contained enough for the next agent to start without re-reading the full discovery chain. If the next agent needs to ask "where do I start?", the handoff failed.
26
+
27
+ ## Article VI — Simplicity Over Ceremony
28
+ Do not add layers, files, or workflows unless they reduce downstream ambiguity. Three similar lines of code is better than a premature abstraction. One well-written spec is better than five thin artifacts.
29
+
30
+ ## Governance
31
+ - Amendments require explicit user approval
32
+ - Articles are numbered, not named — never renumber existing articles
33
+ - New articles are appended, never inserted
File without changes
@@ -0,0 +1,34 @@
1
+ ---
2
+ updated_at: null
3
+ last_agent: null
4
+ last_gate: null
5
+ active_features: 0
6
+ blocked: false
7
+ blocked_reason: null
8
+ ---
9
+
10
+ # Project Pulse
11
+
12
+ > Global project state. Updated by every agent at session end.
13
+ > Read this FIRST when starting any session to orient quickly.
14
+ > Max 30 lines of content — trim older entries when growing beyond that.
15
+
16
+ ## Active work
17
+
18
+ | Feature | Phase | Agent | Status | Last checkpoint |
19
+ |---------|-------|-------|--------|-----------------|
20
+ | — | — | — | — | — |
21
+
22
+ ## Recent activity (last 3 sessions)
23
+
24
+ | Date | Agent | Action | Result |
25
+ |------|-------|--------|--------|
26
+ | — | — | — | — |
27
+
28
+ ## Blockers
29
+
30
+ None.
31
+
32
+ ## Next recommended action
33
+
34
+ No active work. Start with `@product` for a new feature or `@setup` for a new project.
@@ -0,0 +1,27 @@
1
+ ---
2
+ slug: example
3
+ title: Exemplo de seed — substitua com sua ideia
4
+ created: {ISO-date}
5
+ trigger: ao iniciar milestone de {feature relacionada}
6
+ scope_estimate: MICRO
7
+ status: dormant
8
+ ---
9
+
10
+ ## Ideia
11
+
12
+ Descreva a ideia em 2-5 linhas. O que seria implementado e qual valor entregaria.
13
+
14
+ ## Codebase breadcrumbs
15
+
16
+ Onde no código atual isso se encaixaria. O que existiria ou seria modificado.
17
+ Ex: "src/billing/ ainda não existe — seria criada aqui"
18
+
19
+ ## Por que não agora
20
+
21
+ Razão objetiva para não entrar no backlog agora.
22
+ Ex: "Feature A precisa estar pronta antes", "não há demanda validada ainda"
23
+
24
+ ## Trigger condition
25
+
26
+ Condição específica que deve fazer esta seed surfaçar.
27
+ Ex: "quando iniciar milestone de pagamentos", "quando usuários pedirem 3+ vezes"
@@ -0,0 +1,42 @@
1
+ ---
2
+ created: {ISO-date}
3
+ last_updated: {ISO-date}
4
+ questionnaire_completed: false
5
+ ---
6
+
7
+ # Developer Profile
8
+
9
+ ## Communication style
10
+ <!-- direto | equilibrado | explicativo -->
11
+ preference: equilibrado
12
+
13
+ ## Decision style
14
+ <!-- opções-com-tradeoffs | recomendacao-unica | depende-do-contexto -->
15
+ preference: depende-do-contexto
16
+
17
+ ## Tech philosophy
18
+ <!-- explícito | convencional | pragmatico -->
19
+ preference: pragmatico
20
+
21
+ ## Autonomy preference
22
+ <!-- aprovacao-por-step | aprovacao-em-gates | execucao-autonoma -->
23
+ preference: aprovacao-em-gates
24
+
25
+ ## Feedback style
26
+ <!-- critica-direta | colaborativo | neutro -->
27
+ preference: neutro
28
+
29
+ ## Scope tolerance
30
+ <!-- strict | sugestoes-ok | flexible -->
31
+ preference: sugestoes-ok
32
+
33
+ ## Detail level
34
+ <!-- so-resultado | contexto-quando-relevante | sempre-explicar -->
35
+ preference: contexto-quando-relevante
36
+
37
+ ## Risk tolerance
38
+ <!-- conservador | equilibrado | arrojado -->
39
+ preference: equilibrado
40
+
41
+ ## Notes
42
+ <!-- observações específicas do usuário sobre preferências -->