ac-framework 1.6.0 → 1.8.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 (734) hide show
  1. package/README.md +299 -185
  2. package/bin/postinstall.js +8 -1
  3. package/framework/.agent/skills/acfm-memory/SKILL.md +312 -0
  4. package/framework/.agent/skills/acfm-spec-workflow/SKILL.md +269 -0
  5. package/framework/.agent/skills/brainstorming/SKILL.md +266 -38
  6. package/framework/.agent/skills/ci-deploy/SKILL.md +501 -0
  7. package/framework/.agent/skills/code-review/SKILL.md +250 -0
  8. package/framework/.agent/skills/context-synthesizer/SKILL.md +322 -0
  9. package/framework/.agent/skills/documentation/SKILL.md +441 -0
  10. package/framework/.agent/skills/microtask-decomposition/SKILL.md +368 -0
  11. package/framework/.agent/skills/openspec-apply-change/SKILL.md +23 -7
  12. package/framework/.agent/skills/openspec-archive-change/SKILL.md +22 -6
  13. package/framework/.agent/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  14. package/framework/.agent/skills/openspec-continue-change/SKILL.md +20 -4
  15. package/framework/.agent/skills/openspec-explore/SKILL.md +17 -1
  16. package/framework/.agent/skills/openspec-ff-change/SKILL.md +21 -5
  17. package/framework/.agent/skills/openspec-new-change/SKILL.md +23 -7
  18. package/framework/.agent/skills/openspec-sync-specs/SKILL.md +20 -4
  19. package/framework/.agent/skills/openspec-verify-change/SKILL.md +24 -8
  20. package/framework/.agent/skills/research-retrieval/SKILL.md +357 -0
  21. package/framework/.agent/skills/testing-qa/SKILL.md +249 -0
  22. package/framework/.agent/workflows/ac-lite.md +192 -0
  23. package/framework/.agent/workflows/ac.md +402 -177
  24. package/framework/.amazonq/prompts/ac-lite.md +192 -0
  25. package/framework/.amazonq/prompts/ac.md +402 -177
  26. package/framework/.amazonq/skills/acfm-memory/SKILL.md +312 -0
  27. package/framework/.amazonq/skills/acfm-spec-workflow/SKILL.md +269 -0
  28. package/framework/.amazonq/skills/brainstorming/SKILL.md +266 -38
  29. package/framework/.amazonq/skills/ci-deploy/SKILL.md +501 -0
  30. package/framework/.amazonq/skills/code-review/SKILL.md +250 -0
  31. package/framework/.amazonq/skills/context-synthesizer/SKILL.md +322 -0
  32. package/framework/.amazonq/skills/documentation/SKILL.md +441 -0
  33. package/framework/.amazonq/skills/microtask-decomposition/SKILL.md +368 -0
  34. package/framework/.amazonq/skills/openspec-apply-change/SKILL.md +23 -7
  35. package/framework/.amazonq/skills/openspec-archive-change/SKILL.md +22 -6
  36. package/framework/.amazonq/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  37. package/framework/.amazonq/skills/openspec-continue-change/SKILL.md +20 -4
  38. package/framework/.amazonq/skills/openspec-explore/SKILL.md +17 -1
  39. package/framework/.amazonq/skills/openspec-ff-change/SKILL.md +21 -5
  40. package/framework/.amazonq/skills/openspec-new-change/SKILL.md +23 -7
  41. package/framework/.amazonq/skills/openspec-sync-specs/SKILL.md +20 -4
  42. package/framework/.amazonq/skills/openspec-verify-change/SKILL.md +24 -8
  43. package/framework/.amazonq/skills/research-retrieval/SKILL.md +357 -0
  44. package/framework/.amazonq/skills/testing-qa/SKILL.md +249 -0
  45. package/framework/.antigravity/skills/acfm-memory/SKILL.md +312 -0
  46. package/framework/.antigravity/skills/acfm-spec-workflow/SKILL.md +269 -0
  47. package/framework/.antigravity/skills/api-design-principles/SKILL.md +528 -0
  48. package/framework/.antigravity/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  49. package/framework/.antigravity/skills/api-design-principles/assets/rest-api-template.py +182 -0
  50. package/framework/.antigravity/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  51. package/framework/.antigravity/skills/api-design-principles/references/rest-best-practices.md +408 -0
  52. package/framework/.antigravity/skills/brainstorming/SKILL.md +282 -0
  53. package/framework/.antigravity/skills/changelog-generator/SKILL.md +104 -0
  54. package/framework/.antigravity/skills/ci-deploy/SKILL.md +501 -0
  55. package/framework/.antigravity/skills/code-maintainability/SKILL.md +1108 -0
  56. package/framework/.antigravity/skills/code-review/SKILL.md +250 -0
  57. package/framework/.antigravity/skills/context-synthesizer/SKILL.md +322 -0
  58. package/framework/.antigravity/skills/documentation/SKILL.md +441 -0
  59. package/framework/.antigravity/skills/error-handling-patterns/SKILL.md +641 -0
  60. package/framework/.antigravity/skills/interface-design/SKILL.md +310 -0
  61. package/framework/.antigravity/skills/interface-design/references/example.md +86 -0
  62. package/framework/.antigravity/skills/interface-design/references/principles.md +235 -0
  63. package/framework/.antigravity/skills/interface-design/references/validation.md +48 -0
  64. package/framework/.antigravity/skills/microtask-decomposition/SKILL.md +368 -0
  65. package/framework/.antigravity/skills/openspec-apply-change/SKILL.md +172 -0
  66. package/framework/.antigravity/skills/openspec-archive-change/SKILL.md +130 -0
  67. package/framework/.antigravity/skills/openspec-bulk-archive-change/SKILL.md +262 -0
  68. package/framework/.antigravity/skills/openspec-continue-change/SKILL.md +134 -0
  69. package/framework/.antigravity/skills/openspec-explore/SKILL.md +306 -0
  70. package/framework/.antigravity/skills/openspec-ff-change/SKILL.md +117 -0
  71. package/framework/.antigravity/skills/openspec-new-change/SKILL.md +90 -0
  72. package/framework/.antigravity/skills/openspec-onboard/SKILL.md +529 -0
  73. package/framework/.antigravity/skills/openspec-sync-specs/SKILL.md +154 -0
  74. package/framework/.antigravity/skills/openspec-verify-change/SKILL.md +184 -0
  75. package/framework/.antigravity/skills/performance-optimizer/SKILL.md +43 -0
  76. package/framework/.antigravity/skills/project-constitution/SKILL.md +66 -0
  77. package/framework/.antigravity/skills/project-index/SKILL.md +234 -0
  78. package/framework/.antigravity/skills/project-index/scripts/scan_codebase.py +47 -0
  79. package/framework/.antigravity/skills/project-index/templates/agent-template.md +18 -0
  80. package/framework/.antigravity/skills/project-index/templates/skill-template.md +20 -0
  81. package/framework/.antigravity/skills/requirement-checklist/SKILL.md +90 -0
  82. package/framework/.antigravity/skills/research-retrieval/SKILL.md +357 -0
  83. package/framework/.antigravity/skills/secure-coding-cybersecurity/SKILL.md +793 -0
  84. package/framework/.antigravity/skills/secure-coding-cybersecurity/references/ai_coding_pitfalls.md +44 -0
  85. package/framework/.antigravity/skills/secure-coding-cybersecurity/references/owasp_top_10_2025.md +28 -0
  86. package/framework/.antigravity/skills/secure-coding-cybersecurity/references/secure_coding_examples.md +102 -0
  87. package/framework/.antigravity/skills/secure-coding-cybersecurity/scripts/security_audit.py +46 -0
  88. package/framework/.antigravity/skills/skill-writer/SKILL.md +385 -0
  89. package/framework/.antigravity/skills/spec-analysis/SKILL.md +65 -0
  90. package/framework/.antigravity/skills/spec-clarification/SKILL.md +73 -0
  91. package/framework/.antigravity/skills/sync-index/SKILL.md +35 -0
  92. package/framework/.antigravity/skills/systematic-debugging/SKILL.md +296 -0
  93. package/framework/.antigravity/skills/test-generator/SKILL.md +41 -0
  94. package/framework/.antigravity/skills/testing-qa/SKILL.md +249 -0
  95. package/framework/.antigravity/skills/vercel-react-best-practices/AGENTS.md +2934 -0
  96. package/framework/.antigravity/skills/vercel-react-best-practices/SKILL.md +136 -0
  97. package/framework/.antigravity/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  98. package/framework/.antigravity/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  99. package/framework/.antigravity/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  100. package/framework/.antigravity/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  101. package/framework/.antigravity/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
  102. package/framework/.antigravity/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  103. package/framework/.antigravity/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  104. package/framework/.antigravity/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  105. package/framework/.antigravity/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
  106. package/framework/.antigravity/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  107. package/framework/.antigravity/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  108. package/framework/.antigravity/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  109. package/framework/.antigravity/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  110. package/framework/.antigravity/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  111. package/framework/.antigravity/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  112. package/framework/.antigravity/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  113. package/framework/.antigravity/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  114. package/framework/.antigravity/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  115. package/framework/.antigravity/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  116. package/framework/.antigravity/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  117. package/framework/.antigravity/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  118. package/framework/.antigravity/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  119. package/framework/.antigravity/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  120. package/framework/.antigravity/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  121. package/framework/.antigravity/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  122. package/framework/.antigravity/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  123. package/framework/.antigravity/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  124. package/framework/.antigravity/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  125. package/framework/.antigravity/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  126. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  127. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  128. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  129. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  130. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  131. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  132. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  133. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  134. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  135. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  136. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  137. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  138. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  139. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  140. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  141. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  142. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  143. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  144. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  145. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  146. package/framework/.antigravity/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  147. package/framework/.antigravity/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  148. package/framework/.antigravity/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  149. package/framework/.antigravity/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  150. package/framework/.antigravity/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  151. package/framework/.antigravity/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  152. package/framework/.antigravity/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  153. package/framework/.antigravity/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  154. package/framework/.antigravity/workflows/ac-lite.md +192 -0
  155. package/framework/.antigravity/workflows/ac.md +486 -0
  156. package/framework/.augment/commands/ac-lite.md +192 -0
  157. package/framework/.augment/commands/ac.md +402 -177
  158. package/framework/.augment/skills/acfm-memory/SKILL.md +312 -0
  159. package/framework/.augment/skills/acfm-spec-workflow/SKILL.md +269 -0
  160. package/framework/.augment/skills/brainstorming/SKILL.md +266 -38
  161. package/framework/.augment/skills/ci-deploy/SKILL.md +501 -0
  162. package/framework/.augment/skills/code-review/SKILL.md +250 -0
  163. package/framework/.augment/skills/context-synthesizer/SKILL.md +322 -0
  164. package/framework/.augment/skills/documentation/SKILL.md +441 -0
  165. package/framework/.augment/skills/microtask-decomposition/SKILL.md +368 -0
  166. package/framework/.augment/skills/openspec-apply-change/SKILL.md +23 -7
  167. package/framework/.augment/skills/openspec-archive-change/SKILL.md +22 -6
  168. package/framework/.augment/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  169. package/framework/.augment/skills/openspec-continue-change/SKILL.md +20 -4
  170. package/framework/.augment/skills/openspec-explore/SKILL.md +17 -1
  171. package/framework/.augment/skills/openspec-ff-change/SKILL.md +21 -5
  172. package/framework/.augment/skills/openspec-new-change/SKILL.md +23 -7
  173. package/framework/.augment/skills/openspec-sync-specs/SKILL.md +20 -4
  174. package/framework/.augment/skills/openspec-verify-change/SKILL.md +24 -8
  175. package/framework/.augment/skills/research-retrieval/SKILL.md +357 -0
  176. package/framework/.augment/skills/testing-qa/SKILL.md +249 -0
  177. package/framework/.claude/commands/opsx/ac-lite.md +192 -0
  178. package/framework/.claude/commands/opsx/ac.md +402 -177
  179. package/framework/.claude/skills/acfm-memory/SKILL.md +312 -0
  180. package/framework/.claude/skills/acfm-spec-workflow/SKILL.md +269 -0
  181. package/framework/.claude/skills/brainstorming/SKILL.md +266 -38
  182. package/framework/.claude/skills/ci-deploy/SKILL.md +501 -0
  183. package/framework/.claude/skills/code-review/SKILL.md +250 -0
  184. package/framework/.claude/skills/context-synthesizer/SKILL.md +322 -0
  185. package/framework/.claude/skills/documentation/SKILL.md +441 -0
  186. package/framework/.claude/skills/microtask-decomposition/SKILL.md +368 -0
  187. package/framework/.claude/skills/openspec-apply-change/SKILL.md +23 -7
  188. package/framework/.claude/skills/openspec-archive-change/SKILL.md +22 -6
  189. package/framework/.claude/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  190. package/framework/.claude/skills/openspec-continue-change/SKILL.md +20 -4
  191. package/framework/.claude/skills/openspec-explore/SKILL.md +17 -1
  192. package/framework/.claude/skills/openspec-ff-change/SKILL.md +21 -5
  193. package/framework/.claude/skills/openspec-new-change/SKILL.md +23 -7
  194. package/framework/.claude/skills/openspec-sync-specs/SKILL.md +20 -4
  195. package/framework/.claude/skills/openspec-verify-change/SKILL.md +24 -8
  196. package/framework/.claude/skills/research-retrieval/SKILL.md +357 -0
  197. package/framework/.claude/skills/testing-qa/SKILL.md +249 -0
  198. package/framework/.cline/commands/opsx/ac-lite.md +192 -0
  199. package/framework/.cline/commands/opsx/ac.md +486 -0
  200. package/framework/.cline/skills/acfm-memory/SKILL.md +312 -0
  201. package/framework/.cline/skills/acfm-spec-workflow/SKILL.md +269 -0
  202. package/framework/.cline/skills/brainstorming/SKILL.md +266 -38
  203. package/framework/.cline/skills/ci-deploy/SKILL.md +501 -0
  204. package/framework/.cline/skills/code-review/SKILL.md +250 -0
  205. package/framework/.cline/skills/context-synthesizer/SKILL.md +322 -0
  206. package/framework/.cline/skills/documentation/SKILL.md +441 -0
  207. package/framework/.cline/skills/microtask-decomposition/SKILL.md +368 -0
  208. package/framework/.cline/skills/openspec-apply-change/SKILL.md +23 -7
  209. package/framework/.cline/skills/openspec-archive-change/SKILL.md +22 -6
  210. package/framework/.cline/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  211. package/framework/.cline/skills/openspec-continue-change/SKILL.md +20 -4
  212. package/framework/.cline/skills/openspec-explore/SKILL.md +17 -1
  213. package/framework/.cline/skills/openspec-ff-change/SKILL.md +21 -5
  214. package/framework/.cline/skills/openspec-new-change/SKILL.md +23 -7
  215. package/framework/.cline/skills/openspec-sync-specs/SKILL.md +20 -4
  216. package/framework/.cline/skills/openspec-verify-change/SKILL.md +24 -8
  217. package/framework/.cline/skills/research-retrieval/SKILL.md +357 -0
  218. package/framework/.cline/skills/testing-qa/SKILL.md +249 -0
  219. package/framework/.clinerules/skills/acfm-memory/SKILL.md +312 -0
  220. package/framework/.clinerules/skills/acfm-spec-workflow/SKILL.md +269 -0
  221. package/framework/.clinerules/skills/brainstorming/SKILL.md +266 -38
  222. package/framework/.clinerules/skills/ci-deploy/SKILL.md +501 -0
  223. package/framework/.clinerules/skills/code-review/SKILL.md +250 -0
  224. package/framework/.clinerules/skills/context-synthesizer/SKILL.md +322 -0
  225. package/framework/.clinerules/skills/documentation/SKILL.md +441 -0
  226. package/framework/.clinerules/skills/microtask-decomposition/SKILL.md +368 -0
  227. package/framework/.clinerules/skills/openspec-apply-change/SKILL.md +23 -7
  228. package/framework/.clinerules/skills/openspec-archive-change/SKILL.md +22 -6
  229. package/framework/.clinerules/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  230. package/framework/.clinerules/skills/openspec-continue-change/SKILL.md +20 -4
  231. package/framework/.clinerules/skills/openspec-explore/SKILL.md +17 -1
  232. package/framework/.clinerules/skills/openspec-ff-change/SKILL.md +21 -5
  233. package/framework/.clinerules/skills/openspec-new-change/SKILL.md +23 -7
  234. package/framework/.clinerules/skills/openspec-sync-specs/SKILL.md +20 -4
  235. package/framework/.clinerules/skills/openspec-verify-change/SKILL.md +24 -8
  236. package/framework/.clinerules/skills/research-retrieval/SKILL.md +357 -0
  237. package/framework/.clinerules/skills/testing-qa/SKILL.md +249 -0
  238. package/framework/.clinerules/workflows/ac-lite.md +192 -0
  239. package/framework/.clinerules/workflows/ac.md +402 -177
  240. package/framework/.codebuddy/commands/opsx/ac-lite.md +192 -0
  241. package/framework/.codebuddy/commands/opsx/ac.md +402 -177
  242. package/framework/.codebuddy/skills/acfm-memory/SKILL.md +312 -0
  243. package/framework/.codebuddy/skills/acfm-spec-workflow/SKILL.md +269 -0
  244. package/framework/.codebuddy/skills/brainstorming/SKILL.md +266 -38
  245. package/framework/.codebuddy/skills/ci-deploy/SKILL.md +501 -0
  246. package/framework/.codebuddy/skills/code-review/SKILL.md +250 -0
  247. package/framework/.codebuddy/skills/context-synthesizer/SKILL.md +322 -0
  248. package/framework/.codebuddy/skills/documentation/SKILL.md +441 -0
  249. package/framework/.codebuddy/skills/microtask-decomposition/SKILL.md +368 -0
  250. package/framework/.codebuddy/skills/openspec-apply-change/SKILL.md +23 -7
  251. package/framework/.codebuddy/skills/openspec-archive-change/SKILL.md +22 -6
  252. package/framework/.codebuddy/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  253. package/framework/.codebuddy/skills/openspec-continue-change/SKILL.md +20 -4
  254. package/framework/.codebuddy/skills/openspec-explore/SKILL.md +17 -1
  255. package/framework/.codebuddy/skills/openspec-ff-change/SKILL.md +21 -5
  256. package/framework/.codebuddy/skills/openspec-new-change/SKILL.md +23 -7
  257. package/framework/.codebuddy/skills/openspec-sync-specs/SKILL.md +20 -4
  258. package/framework/.codebuddy/skills/openspec-verify-change/SKILL.md +24 -8
  259. package/framework/.codebuddy/skills/research-retrieval/SKILL.md +357 -0
  260. package/framework/.codebuddy/skills/testing-qa/SKILL.md +249 -0
  261. package/framework/.codex/skills/acfm-memory/SKILL.md +312 -0
  262. package/framework/.codex/skills/acfm-spec-workflow/SKILL.md +269 -0
  263. package/framework/.codex/skills/brainstorming/SKILL.md +266 -38
  264. package/framework/.codex/skills/ci-deploy/SKILL.md +501 -0
  265. package/framework/.codex/skills/code-review/SKILL.md +250 -0
  266. package/framework/.codex/skills/context-synthesizer/SKILL.md +322 -0
  267. package/framework/.codex/skills/documentation/SKILL.md +441 -0
  268. package/framework/.codex/skills/main-skill/SKILL.md +455 -0
  269. package/framework/.codex/skills/microtask-decomposition/SKILL.md +368 -0
  270. package/framework/.codex/skills/openspec-apply-change/SKILL.md +23 -7
  271. package/framework/.codex/skills/openspec-archive-change/SKILL.md +22 -6
  272. package/framework/.codex/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  273. package/framework/.codex/skills/openspec-continue-change/SKILL.md +20 -4
  274. package/framework/.codex/skills/openspec-explore/SKILL.md +17 -1
  275. package/framework/.codex/skills/openspec-ff-change/SKILL.md +21 -5
  276. package/framework/.codex/skills/openspec-new-change/SKILL.md +23 -7
  277. package/framework/.codex/skills/openspec-sync-specs/SKILL.md +20 -4
  278. package/framework/.codex/skills/openspec-verify-change/SKILL.md +24 -8
  279. package/framework/.codex/skills/research-retrieval/SKILL.md +357 -0
  280. package/framework/.codex/skills/testing-qa/SKILL.md +249 -0
  281. package/framework/.continue/prompts/ac-lite.md +192 -0
  282. package/framework/.continue/prompts/ac.md +486 -0
  283. package/framework/.continue/skills/acfm-memory/SKILL.md +312 -0
  284. package/framework/.continue/skills/acfm-spec-workflow/SKILL.md +269 -0
  285. package/framework/.continue/skills/brainstorming/SKILL.md +266 -38
  286. package/framework/.continue/skills/ci-deploy/SKILL.md +501 -0
  287. package/framework/.continue/skills/code-review/SKILL.md +250 -0
  288. package/framework/.continue/skills/context-synthesizer/SKILL.md +322 -0
  289. package/framework/.continue/skills/documentation/SKILL.md +441 -0
  290. package/framework/.continue/skills/microtask-decomposition/SKILL.md +368 -0
  291. package/framework/.continue/skills/openspec-apply-change/SKILL.md +23 -7
  292. package/framework/.continue/skills/openspec-archive-change/SKILL.md +22 -6
  293. package/framework/.continue/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  294. package/framework/.continue/skills/openspec-continue-change/SKILL.md +20 -4
  295. package/framework/.continue/skills/openspec-explore/SKILL.md +17 -1
  296. package/framework/.continue/skills/openspec-ff-change/SKILL.md +21 -5
  297. package/framework/.continue/skills/openspec-new-change/SKILL.md +23 -7
  298. package/framework/.continue/skills/openspec-sync-specs/SKILL.md +20 -4
  299. package/framework/.continue/skills/openspec-verify-change/SKILL.md +24 -8
  300. package/framework/.continue/skills/research-retrieval/SKILL.md +357 -0
  301. package/framework/.continue/skills/testing-qa/SKILL.md +249 -0
  302. package/framework/.cospec/openspec/commands/ac-lite.md +192 -0
  303. package/framework/.cospec/openspec/commands/ac.md +402 -177
  304. package/framework/.cospec/skills/acfm-memory/SKILL.md +312 -0
  305. package/framework/.cospec/skills/acfm-spec-workflow/SKILL.md +269 -0
  306. package/framework/.cospec/skills/brainstorming/SKILL.md +266 -38
  307. package/framework/.cospec/skills/ci-deploy/SKILL.md +501 -0
  308. package/framework/.cospec/skills/code-review/SKILL.md +250 -0
  309. package/framework/.cospec/skills/context-synthesizer/SKILL.md +322 -0
  310. package/framework/.cospec/skills/documentation/SKILL.md +441 -0
  311. package/framework/.cospec/skills/microtask-decomposition/SKILL.md +368 -0
  312. package/framework/.cospec/skills/openspec-apply-change/SKILL.md +23 -7
  313. package/framework/.cospec/skills/openspec-archive-change/SKILL.md +22 -6
  314. package/framework/.cospec/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  315. package/framework/.cospec/skills/openspec-continue-change/SKILL.md +20 -4
  316. package/framework/.cospec/skills/openspec-explore/SKILL.md +17 -1
  317. package/framework/.cospec/skills/openspec-ff-change/SKILL.md +21 -5
  318. package/framework/.cospec/skills/openspec-new-change/SKILL.md +23 -7
  319. package/framework/.cospec/skills/openspec-sync-specs/SKILL.md +20 -4
  320. package/framework/.cospec/skills/openspec-verify-change/SKILL.md +24 -8
  321. package/framework/.cospec/skills/research-retrieval/SKILL.md +357 -0
  322. package/framework/.cospec/skills/testing-qa/SKILL.md +249 -0
  323. package/framework/.crush/commands/opsx/ac-lite.md +192 -0
  324. package/framework/.crush/commands/opsx/ac.md +402 -177
  325. package/framework/.crush/skills/acfm-memory/SKILL.md +312 -0
  326. package/framework/.crush/skills/acfm-spec-workflow/SKILL.md +269 -0
  327. package/framework/.crush/skills/brainstorming/SKILL.md +266 -38
  328. package/framework/.crush/skills/ci-deploy/SKILL.md +501 -0
  329. package/framework/.crush/skills/code-review/SKILL.md +250 -0
  330. package/framework/.crush/skills/context-synthesizer/SKILL.md +322 -0
  331. package/framework/.crush/skills/documentation/SKILL.md +441 -0
  332. package/framework/.crush/skills/microtask-decomposition/SKILL.md +368 -0
  333. package/framework/.crush/skills/openspec-apply-change/SKILL.md +23 -7
  334. package/framework/.crush/skills/openspec-archive-change/SKILL.md +22 -6
  335. package/framework/.crush/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  336. package/framework/.crush/skills/openspec-continue-change/SKILL.md +20 -4
  337. package/framework/.crush/skills/openspec-explore/SKILL.md +17 -1
  338. package/framework/.crush/skills/openspec-ff-change/SKILL.md +21 -5
  339. package/framework/.crush/skills/openspec-new-change/SKILL.md +23 -7
  340. package/framework/.crush/skills/openspec-sync-specs/SKILL.md +20 -4
  341. package/framework/.crush/skills/openspec-verify-change/SKILL.md +24 -8
  342. package/framework/.crush/skills/research-retrieval/SKILL.md +357 -0
  343. package/framework/.crush/skills/testing-qa/SKILL.md +249 -0
  344. package/framework/.cursor/commands/ac-lite.md +192 -0
  345. package/framework/.cursor/commands/ac.md +402 -177
  346. package/framework/.cursor/skills/acfm-memory/SKILL.md +312 -0
  347. package/framework/.cursor/skills/acfm-spec-workflow/SKILL.md +269 -0
  348. package/framework/.cursor/skills/brainstorming/SKILL.md +266 -38
  349. package/framework/.cursor/skills/ci-deploy/SKILL.md +501 -0
  350. package/framework/.cursor/skills/code-review/SKILL.md +250 -0
  351. package/framework/.cursor/skills/context-synthesizer/SKILL.md +322 -0
  352. package/framework/.cursor/skills/documentation/SKILL.md +441 -0
  353. package/framework/.cursor/skills/microtask-decomposition/SKILL.md +368 -0
  354. package/framework/.cursor/skills/openspec-apply-change/SKILL.md +23 -7
  355. package/framework/.cursor/skills/openspec-archive-change/SKILL.md +22 -6
  356. package/framework/.cursor/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  357. package/framework/.cursor/skills/openspec-continue-change/SKILL.md +20 -4
  358. package/framework/.cursor/skills/openspec-explore/SKILL.md +17 -1
  359. package/framework/.cursor/skills/openspec-ff-change/SKILL.md +21 -5
  360. package/framework/.cursor/skills/openspec-new-change/SKILL.md +23 -7
  361. package/framework/.cursor/skills/openspec-sync-specs/SKILL.md +20 -4
  362. package/framework/.cursor/skills/openspec-verify-change/SKILL.md +24 -8
  363. package/framework/.cursor/skills/research-retrieval/SKILL.md +357 -0
  364. package/framework/.cursor/skills/testing-qa/SKILL.md +249 -0
  365. package/framework/.factory/commands/ac-lite.md +192 -0
  366. package/framework/.factory/commands/ac.md +402 -177
  367. package/framework/.factory/skills/acfm-memory/SKILL.md +312 -0
  368. package/framework/.factory/skills/acfm-spec-workflow/SKILL.md +269 -0
  369. package/framework/.factory/skills/brainstorming/SKILL.md +266 -38
  370. package/framework/.factory/skills/ci-deploy/SKILL.md +501 -0
  371. package/framework/.factory/skills/code-review/SKILL.md +250 -0
  372. package/framework/.factory/skills/context-synthesizer/SKILL.md +322 -0
  373. package/framework/.factory/skills/documentation/SKILL.md +441 -0
  374. package/framework/.factory/skills/microtask-decomposition/SKILL.md +368 -0
  375. package/framework/.factory/skills/openspec-apply-change/SKILL.md +23 -7
  376. package/framework/.factory/skills/openspec-archive-change/SKILL.md +22 -6
  377. package/framework/.factory/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  378. package/framework/.factory/skills/openspec-continue-change/SKILL.md +20 -4
  379. package/framework/.factory/skills/openspec-explore/SKILL.md +17 -1
  380. package/framework/.factory/skills/openspec-ff-change/SKILL.md +21 -5
  381. package/framework/.factory/skills/openspec-new-change/SKILL.md +23 -7
  382. package/framework/.factory/skills/openspec-sync-specs/SKILL.md +20 -4
  383. package/framework/.factory/skills/openspec-verify-change/SKILL.md +24 -8
  384. package/framework/.factory/skills/research-retrieval/SKILL.md +357 -0
  385. package/framework/.factory/skills/testing-qa/SKILL.md +249 -0
  386. package/framework/.gemini/commands/opsx/ac-lite.md +192 -0
  387. package/framework/.gemini/commands/opsx/ac.md +486 -0
  388. package/framework/.gemini/skills/acfm-memory/SKILL.md +312 -0
  389. package/framework/.gemini/skills/acfm-spec-workflow/SKILL.md +269 -0
  390. package/framework/.gemini/skills/brainstorming/SKILL.md +266 -38
  391. package/framework/.gemini/skills/ci-deploy/SKILL.md +501 -0
  392. package/framework/.gemini/skills/code-review/SKILL.md +250 -0
  393. package/framework/.gemini/skills/context-synthesizer/SKILL.md +322 -0
  394. package/framework/.gemini/skills/documentation/SKILL.md +441 -0
  395. package/framework/.gemini/skills/microtask-decomposition/SKILL.md +368 -0
  396. package/framework/.gemini/skills/openspec-apply-change/SKILL.md +23 -7
  397. package/framework/.gemini/skills/openspec-archive-change/SKILL.md +22 -6
  398. package/framework/.gemini/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  399. package/framework/.gemini/skills/openspec-continue-change/SKILL.md +20 -4
  400. package/framework/.gemini/skills/openspec-explore/SKILL.md +17 -1
  401. package/framework/.gemini/skills/openspec-ff-change/SKILL.md +21 -5
  402. package/framework/.gemini/skills/openspec-new-change/SKILL.md +23 -7
  403. package/framework/.gemini/skills/openspec-sync-specs/SKILL.md +20 -4
  404. package/framework/.gemini/skills/openspec-verify-change/SKILL.md +24 -8
  405. package/framework/.gemini/skills/research-retrieval/SKILL.md +357 -0
  406. package/framework/.gemini/skills/testing-qa/SKILL.md +249 -0
  407. package/framework/.github/prompts/ac-lite.md +192 -0
  408. package/framework/.github/prompts/ac.md +486 -0
  409. package/framework/.github/skills/acfm-memory/SKILL.md +312 -0
  410. package/framework/.github/skills/acfm-spec-workflow/SKILL.md +269 -0
  411. package/framework/.github/skills/brainstorming/SKILL.md +266 -38
  412. package/framework/.github/skills/ci-deploy/SKILL.md +501 -0
  413. package/framework/.github/skills/code-review/SKILL.md +250 -0
  414. package/framework/.github/skills/context-synthesizer/SKILL.md +322 -0
  415. package/framework/.github/skills/documentation/SKILL.md +441 -0
  416. package/framework/.github/skills/microtask-decomposition/SKILL.md +368 -0
  417. package/framework/.github/skills/openspec-apply-change/SKILL.md +23 -7
  418. package/framework/.github/skills/openspec-archive-change/SKILL.md +22 -6
  419. package/framework/.github/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  420. package/framework/.github/skills/openspec-continue-change/SKILL.md +20 -4
  421. package/framework/.github/skills/openspec-explore/SKILL.md +17 -1
  422. package/framework/.github/skills/openspec-ff-change/SKILL.md +21 -5
  423. package/framework/.github/skills/openspec-new-change/SKILL.md +23 -7
  424. package/framework/.github/skills/openspec-sync-specs/SKILL.md +20 -4
  425. package/framework/.github/skills/openspec-verify-change/SKILL.md +24 -8
  426. package/framework/.github/skills/research-retrieval/SKILL.md +357 -0
  427. package/framework/.github/skills/testing-qa/SKILL.md +249 -0
  428. package/framework/.iflow/commands/ac-lite.md +192 -0
  429. package/framework/.iflow/commands/ac.md +402 -177
  430. package/framework/.iflow/skills/acfm-memory/SKILL.md +312 -0
  431. package/framework/.iflow/skills/acfm-spec-workflow/SKILL.md +269 -0
  432. package/framework/.iflow/skills/brainstorming/SKILL.md +266 -38
  433. package/framework/.iflow/skills/ci-deploy/SKILL.md +501 -0
  434. package/framework/.iflow/skills/code-review/SKILL.md +250 -0
  435. package/framework/.iflow/skills/context-synthesizer/SKILL.md +322 -0
  436. package/framework/.iflow/skills/documentation/SKILL.md +441 -0
  437. package/framework/.iflow/skills/microtask-decomposition/SKILL.md +368 -0
  438. package/framework/.iflow/skills/openspec-apply-change/SKILL.md +23 -7
  439. package/framework/.iflow/skills/openspec-archive-change/SKILL.md +22 -6
  440. package/framework/.iflow/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  441. package/framework/.iflow/skills/openspec-continue-change/SKILL.md +20 -4
  442. package/framework/.iflow/skills/openspec-explore/SKILL.md +17 -1
  443. package/framework/.iflow/skills/openspec-ff-change/SKILL.md +21 -5
  444. package/framework/.iflow/skills/openspec-new-change/SKILL.md +23 -7
  445. package/framework/.iflow/skills/openspec-sync-specs/SKILL.md +20 -4
  446. package/framework/.iflow/skills/openspec-verify-change/SKILL.md +24 -8
  447. package/framework/.iflow/skills/research-retrieval/SKILL.md +357 -0
  448. package/framework/.iflow/skills/testing-qa/SKILL.md +249 -0
  449. package/framework/.kilocode/skills/acfm-memory/SKILL.md +312 -0
  450. package/framework/.kilocode/skills/acfm-spec-workflow/SKILL.md +269 -0
  451. package/framework/.kilocode/skills/brainstorming/SKILL.md +266 -38
  452. package/framework/.kilocode/skills/ci-deploy/SKILL.md +501 -0
  453. package/framework/.kilocode/skills/code-review/SKILL.md +250 -0
  454. package/framework/.kilocode/skills/context-synthesizer/SKILL.md +322 -0
  455. package/framework/.kilocode/skills/documentation/SKILL.md +441 -0
  456. package/framework/.kilocode/skills/microtask-decomposition/SKILL.md +368 -0
  457. package/framework/.kilocode/skills/openspec-apply-change/SKILL.md +23 -7
  458. package/framework/.kilocode/skills/openspec-archive-change/SKILL.md +22 -6
  459. package/framework/.kilocode/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  460. package/framework/.kilocode/skills/openspec-continue-change/SKILL.md +20 -4
  461. package/framework/.kilocode/skills/openspec-explore/SKILL.md +17 -1
  462. package/framework/.kilocode/skills/openspec-ff-change/SKILL.md +21 -5
  463. package/framework/.kilocode/skills/openspec-new-change/SKILL.md +23 -7
  464. package/framework/.kilocode/skills/openspec-sync-specs/SKILL.md +20 -4
  465. package/framework/.kilocode/skills/openspec-verify-change/SKILL.md +24 -8
  466. package/framework/.kilocode/skills/research-retrieval/SKILL.md +357 -0
  467. package/framework/.kilocode/skills/testing-qa/SKILL.md +249 -0
  468. package/framework/.kilocode/workflows/ac-lite.md +192 -0
  469. package/framework/.kilocode/workflows/ac.md +402 -177
  470. package/framework/.kimi/skills/acfm-memory/SKILL.md +312 -0
  471. package/framework/.kimi/skills/acfm-spec-workflow/SKILL.md +269 -0
  472. package/framework/.kimi/skills/api-design-principles/SKILL.md +528 -0
  473. package/framework/.kimi/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  474. package/framework/.kimi/skills/api-design-principles/assets/rest-api-template.py +182 -0
  475. package/framework/.kimi/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  476. package/framework/.kimi/skills/api-design-principles/references/rest-best-practices.md +408 -0
  477. package/framework/.kimi/skills/brainstorming/SKILL.md +282 -0
  478. package/framework/.kimi/skills/changelog-generator/SKILL.md +104 -0
  479. package/framework/.kimi/skills/ci-deploy/SKILL.md +501 -0
  480. package/framework/.kimi/skills/code-maintainability/SKILL.md +1108 -0
  481. package/framework/.kimi/skills/code-review/SKILL.md +250 -0
  482. package/framework/.kimi/skills/context-synthesizer/SKILL.md +322 -0
  483. package/framework/.kimi/skills/documentation/SKILL.md +441 -0
  484. package/framework/.kimi/skills/error-handling-patterns/SKILL.md +641 -0
  485. package/framework/.kimi/skills/interface-design/SKILL.md +310 -0
  486. package/framework/.kimi/skills/interface-design/references/example.md +86 -0
  487. package/framework/.kimi/skills/interface-design/references/principles.md +235 -0
  488. package/framework/.kimi/skills/interface-design/references/validation.md +48 -0
  489. package/framework/.kimi/skills/microtask-decomposition/SKILL.md +368 -0
  490. package/framework/.kimi/skills/openspec-apply-change/SKILL.md +172 -0
  491. package/framework/.kimi/skills/openspec-archive-change/SKILL.md +130 -0
  492. package/framework/.kimi/skills/openspec-bulk-archive-change/SKILL.md +262 -0
  493. package/framework/.kimi/skills/openspec-continue-change/SKILL.md +134 -0
  494. package/framework/.kimi/skills/openspec-explore/SKILL.md +306 -0
  495. package/framework/.kimi/skills/openspec-ff-change/SKILL.md +117 -0
  496. package/framework/.kimi/skills/openspec-new-change/SKILL.md +90 -0
  497. package/framework/.kimi/skills/openspec-onboard/SKILL.md +529 -0
  498. package/framework/.kimi/skills/openspec-sync-specs/SKILL.md +154 -0
  499. package/framework/.kimi/skills/openspec-verify-change/SKILL.md +184 -0
  500. package/framework/.kimi/skills/performance-optimizer/SKILL.md +43 -0
  501. package/framework/.kimi/skills/project-constitution/SKILL.md +66 -0
  502. package/framework/.kimi/skills/project-index/SKILL.md +234 -0
  503. package/framework/.kimi/skills/project-index/scripts/scan_codebase.py +47 -0
  504. package/framework/.kimi/skills/project-index/templates/agent-template.md +18 -0
  505. package/framework/.kimi/skills/project-index/templates/skill-template.md +20 -0
  506. package/framework/.kimi/skills/requirement-checklist/SKILL.md +90 -0
  507. package/framework/.kimi/skills/research-retrieval/SKILL.md +357 -0
  508. package/framework/.kimi/skills/secure-coding-cybersecurity/SKILL.md +793 -0
  509. package/framework/.kimi/skills/secure-coding-cybersecurity/references/ai_coding_pitfalls.md +44 -0
  510. package/framework/.kimi/skills/secure-coding-cybersecurity/references/owasp_top_10_2025.md +28 -0
  511. package/framework/.kimi/skills/secure-coding-cybersecurity/references/secure_coding_examples.md +102 -0
  512. package/framework/.kimi/skills/secure-coding-cybersecurity/scripts/security_audit.py +46 -0
  513. package/framework/.kimi/skills/skill-writer/SKILL.md +385 -0
  514. package/framework/.kimi/skills/spec-analysis/SKILL.md +65 -0
  515. package/framework/.kimi/skills/spec-clarification/SKILL.md +73 -0
  516. package/framework/.kimi/skills/sync-index/SKILL.md +35 -0
  517. package/framework/.kimi/skills/systematic-debugging/SKILL.md +296 -0
  518. package/framework/.kimi/skills/test-generator/SKILL.md +41 -0
  519. package/framework/.kimi/skills/testing-qa/SKILL.md +249 -0
  520. package/framework/.kimi/skills/vercel-react-best-practices/AGENTS.md +2934 -0
  521. package/framework/.kimi/skills/vercel-react-best-practices/SKILL.md +136 -0
  522. package/framework/.kimi/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  523. package/framework/.kimi/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  524. package/framework/.kimi/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  525. package/framework/.kimi/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  526. package/framework/.kimi/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
  527. package/framework/.kimi/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  528. package/framework/.kimi/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  529. package/framework/.kimi/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  530. package/framework/.kimi/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
  531. package/framework/.kimi/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  532. package/framework/.kimi/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  533. package/framework/.kimi/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  534. package/framework/.kimi/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  535. package/framework/.kimi/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  536. package/framework/.kimi/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  537. package/framework/.kimi/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  538. package/framework/.kimi/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  539. package/framework/.kimi/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  540. package/framework/.kimi/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  541. package/framework/.kimi/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  542. package/framework/.kimi/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  543. package/framework/.kimi/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  544. package/framework/.kimi/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  545. package/framework/.kimi/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  546. package/framework/.kimi/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  547. package/framework/.kimi/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  548. package/framework/.kimi/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  549. package/framework/.kimi/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  550. package/framework/.kimi/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  551. package/framework/.kimi/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  552. package/framework/.kimi/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  553. package/framework/.kimi/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  554. package/framework/.kimi/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  555. package/framework/.kimi/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  556. package/framework/.kimi/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  557. package/framework/.kimi/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  558. package/framework/.kimi/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  559. package/framework/.kimi/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  560. package/framework/.kimi/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  561. package/framework/.kimi/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  562. package/framework/.kimi/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  563. package/framework/.kimi/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  564. package/framework/.kimi/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  565. package/framework/.kimi/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  566. package/framework/.kimi/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  567. package/framework/.kimi/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  568. package/framework/.kimi/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  569. package/framework/.kimi/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  570. package/framework/.kimi/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  571. package/framework/.kimi/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  572. package/framework/.kimi/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  573. package/framework/.kimi/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  574. package/framework/.kimi/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  575. package/framework/.kimi/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  576. package/framework/.kimi/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  577. package/framework/.kimi/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  578. package/framework/.kimi/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  579. package/framework/.kimi/workflows/ac-lite.md +192 -0
  580. package/framework/.kimi/workflows/ac.md +486 -0
  581. package/framework/.kimi/workflows/opsx-apply.md +149 -0
  582. package/framework/.kimi/workflows/opsx-archive.md +154 -0
  583. package/framework/.kimi/workflows/opsx-bulk-archive.md +239 -0
  584. package/framework/.kimi/workflows/opsx-continue.md +111 -0
  585. package/framework/.kimi/workflows/opsx-explore.md +171 -0
  586. package/framework/.kimi/workflows/opsx-ff.md +91 -0
  587. package/framework/.kimi/workflows/opsx-new.md +66 -0
  588. package/framework/.kimi/workflows/opsx-onboard.md +522 -0
  589. package/framework/.kimi/workflows/opsx-sync.md +131 -0
  590. package/framework/.kimi/workflows/opsx-verify.md +161 -0
  591. package/framework/.opencode/command/ac-lite.md +192 -0
  592. package/framework/.opencode/command/ac.md +402 -177
  593. package/framework/.opencode/skills/acfm-memory/SKILL.md +312 -0
  594. package/framework/.opencode/skills/acfm-spec-workflow/SKILL.md +269 -0
  595. package/framework/.opencode/skills/brainstorming/SKILL.md +266 -38
  596. package/framework/.opencode/skills/ci-deploy/SKILL.md +501 -0
  597. package/framework/.opencode/skills/code-review/SKILL.md +250 -0
  598. package/framework/.opencode/skills/context-synthesizer/SKILL.md +322 -0
  599. package/framework/.opencode/skills/documentation/SKILL.md +441 -0
  600. package/framework/.opencode/skills/microtask-decomposition/SKILL.md +368 -0
  601. package/framework/.opencode/skills/openspec-apply-change/SKILL.md +23 -7
  602. package/framework/.opencode/skills/openspec-archive-change/SKILL.md +22 -6
  603. package/framework/.opencode/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  604. package/framework/.opencode/skills/openspec-continue-change/SKILL.md +20 -4
  605. package/framework/.opencode/skills/openspec-explore/SKILL.md +17 -1
  606. package/framework/.opencode/skills/openspec-ff-change/SKILL.md +21 -5
  607. package/framework/.opencode/skills/openspec-new-change/SKILL.md +23 -7
  608. package/framework/.opencode/skills/openspec-sync-specs/SKILL.md +20 -4
  609. package/framework/.opencode/skills/openspec-verify-change/SKILL.md +24 -8
  610. package/framework/.opencode/skills/research-retrieval/SKILL.md +357 -0
  611. package/framework/.opencode/skills/testing-qa/SKILL.md +249 -0
  612. package/framework/.qoder/commands/opsx/ac-lite.md +192 -0
  613. package/framework/.qoder/commands/opsx/ac.md +402 -177
  614. package/framework/.qoder/skills/acfm-memory/SKILL.md +312 -0
  615. package/framework/.qoder/skills/acfm-spec-workflow/SKILL.md +269 -0
  616. package/framework/.qoder/skills/brainstorming/SKILL.md +266 -38
  617. package/framework/.qoder/skills/ci-deploy/SKILL.md +501 -0
  618. package/framework/.qoder/skills/code-review/SKILL.md +250 -0
  619. package/framework/.qoder/skills/context-synthesizer/SKILL.md +322 -0
  620. package/framework/.qoder/skills/documentation/SKILL.md +441 -0
  621. package/framework/.qoder/skills/microtask-decomposition/SKILL.md +368 -0
  622. package/framework/.qoder/skills/openspec-apply-change/SKILL.md +23 -7
  623. package/framework/.qoder/skills/openspec-archive-change/SKILL.md +22 -6
  624. package/framework/.qoder/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  625. package/framework/.qoder/skills/openspec-continue-change/SKILL.md +20 -4
  626. package/framework/.qoder/skills/openspec-explore/SKILL.md +17 -1
  627. package/framework/.qoder/skills/openspec-ff-change/SKILL.md +21 -5
  628. package/framework/.qoder/skills/openspec-new-change/SKILL.md +23 -7
  629. package/framework/.qoder/skills/openspec-sync-specs/SKILL.md +20 -4
  630. package/framework/.qoder/skills/openspec-verify-change/SKILL.md +24 -8
  631. package/framework/.qoder/skills/research-retrieval/SKILL.md +357 -0
  632. package/framework/.qoder/skills/testing-qa/SKILL.md +249 -0
  633. package/framework/.qwen/commands/ac-lite.md +192 -0
  634. package/framework/.qwen/commands/ac.md +402 -177
  635. package/framework/.qwen/skills/acfm-memory/SKILL.md +312 -0
  636. package/framework/.qwen/skills/acfm-spec-workflow/SKILL.md +269 -0
  637. package/framework/.qwen/skills/brainstorming/SKILL.md +266 -38
  638. package/framework/.qwen/skills/ci-deploy/SKILL.md +501 -0
  639. package/framework/.qwen/skills/code-review/SKILL.md +250 -0
  640. package/framework/.qwen/skills/context-synthesizer/SKILL.md +322 -0
  641. package/framework/.qwen/skills/documentation/SKILL.md +441 -0
  642. package/framework/.qwen/skills/microtask-decomposition/SKILL.md +368 -0
  643. package/framework/.qwen/skills/openspec-apply-change/SKILL.md +23 -7
  644. package/framework/.qwen/skills/openspec-archive-change/SKILL.md +22 -6
  645. package/framework/.qwen/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  646. package/framework/.qwen/skills/openspec-continue-change/SKILL.md +20 -4
  647. package/framework/.qwen/skills/openspec-explore/SKILL.md +17 -1
  648. package/framework/.qwen/skills/openspec-ff-change/SKILL.md +21 -5
  649. package/framework/.qwen/skills/openspec-new-change/SKILL.md +23 -7
  650. package/framework/.qwen/skills/openspec-sync-specs/SKILL.md +20 -4
  651. package/framework/.qwen/skills/openspec-verify-change/SKILL.md +24 -8
  652. package/framework/.qwen/skills/research-retrieval/SKILL.md +357 -0
  653. package/framework/.qwen/skills/testing-qa/SKILL.md +249 -0
  654. package/framework/.roo/commands/ac-lite.md +192 -0
  655. package/framework/.roo/commands/ac.md +402 -177
  656. package/framework/.roo/skills/acfm-memory/SKILL.md +312 -0
  657. package/framework/.roo/skills/acfm-spec-workflow/SKILL.md +269 -0
  658. package/framework/.roo/skills/brainstorming/SKILL.md +266 -38
  659. package/framework/.roo/skills/ci-deploy/SKILL.md +501 -0
  660. package/framework/.roo/skills/code-review/SKILL.md +250 -0
  661. package/framework/.roo/skills/context-synthesizer/SKILL.md +322 -0
  662. package/framework/.roo/skills/documentation/SKILL.md +441 -0
  663. package/framework/.roo/skills/microtask-decomposition/SKILL.md +368 -0
  664. package/framework/.roo/skills/openspec-apply-change/SKILL.md +23 -7
  665. package/framework/.roo/skills/openspec-archive-change/SKILL.md +22 -6
  666. package/framework/.roo/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  667. package/framework/.roo/skills/openspec-continue-change/SKILL.md +20 -4
  668. package/framework/.roo/skills/openspec-explore/SKILL.md +17 -1
  669. package/framework/.roo/skills/openspec-ff-change/SKILL.md +21 -5
  670. package/framework/.roo/skills/openspec-new-change/SKILL.md +23 -7
  671. package/framework/.roo/skills/openspec-sync-specs/SKILL.md +20 -4
  672. package/framework/.roo/skills/openspec-verify-change/SKILL.md +24 -8
  673. package/framework/.roo/skills/research-retrieval/SKILL.md +357 -0
  674. package/framework/.roo/skills/testing-qa/SKILL.md +249 -0
  675. package/framework/.trae/skills/acfm-memory/SKILL.md +312 -0
  676. package/framework/.trae/skills/acfm-spec-workflow/SKILL.md +269 -0
  677. package/framework/.trae/skills/brainstorming/SKILL.md +266 -38
  678. package/framework/.trae/skills/ci-deploy/SKILL.md +501 -0
  679. package/framework/.trae/skills/code-review/SKILL.md +250 -0
  680. package/framework/.trae/skills/context-synthesizer/SKILL.md +322 -0
  681. package/framework/.trae/skills/documentation/SKILL.md +441 -0
  682. package/framework/.trae/skills/main-skill/SKILL.md +455 -0
  683. package/framework/.trae/skills/microtask-decomposition/SKILL.md +368 -0
  684. package/framework/.trae/skills/openspec-apply-change/SKILL.md +23 -7
  685. package/framework/.trae/skills/openspec-archive-change/SKILL.md +22 -6
  686. package/framework/.trae/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  687. package/framework/.trae/skills/openspec-continue-change/SKILL.md +20 -4
  688. package/framework/.trae/skills/openspec-explore/SKILL.md +17 -1
  689. package/framework/.trae/skills/openspec-ff-change/SKILL.md +21 -5
  690. package/framework/.trae/skills/openspec-new-change/SKILL.md +23 -7
  691. package/framework/.trae/skills/openspec-sync-specs/SKILL.md +20 -4
  692. package/framework/.trae/skills/openspec-verify-change/SKILL.md +24 -8
  693. package/framework/.trae/skills/research-retrieval/SKILL.md +357 -0
  694. package/framework/.trae/skills/testing-qa/SKILL.md +249 -0
  695. package/framework/.windsurf/skills/acfm-memory/SKILL.md +312 -0
  696. package/framework/.windsurf/skills/acfm-spec-workflow/SKILL.md +269 -0
  697. package/framework/.windsurf/skills/brainstorming/SKILL.md +266 -38
  698. package/framework/.windsurf/skills/ci-deploy/SKILL.md +501 -0
  699. package/framework/.windsurf/skills/code-review/SKILL.md +250 -0
  700. package/framework/.windsurf/skills/context-synthesizer/SKILL.md +322 -0
  701. package/framework/.windsurf/skills/documentation/SKILL.md +441 -0
  702. package/framework/.windsurf/skills/microtask-decomposition/SKILL.md +368 -0
  703. package/framework/.windsurf/skills/openspec-apply-change/SKILL.md +23 -7
  704. package/framework/.windsurf/skills/openspec-archive-change/SKILL.md +22 -6
  705. package/framework/.windsurf/skills/openspec-bulk-archive-change/SKILL.md +25 -9
  706. package/framework/.windsurf/skills/openspec-continue-change/SKILL.md +20 -4
  707. package/framework/.windsurf/skills/openspec-explore/SKILL.md +17 -1
  708. package/framework/.windsurf/skills/openspec-ff-change/SKILL.md +21 -5
  709. package/framework/.windsurf/skills/openspec-new-change/SKILL.md +23 -7
  710. package/framework/.windsurf/skills/openspec-sync-specs/SKILL.md +20 -4
  711. package/framework/.windsurf/skills/openspec-verify-change/SKILL.md +24 -8
  712. package/framework/.windsurf/skills/research-retrieval/SKILL.md +357 -0
  713. package/framework/.windsurf/skills/testing-qa/SKILL.md +249 -0
  714. package/framework/.windsurf/workflows/ac-lite.md +192 -0
  715. package/framework/.windsurf/workflows/ac.md +402 -177
  716. package/framework/AGENTS.md +428 -135
  717. package/framework/CLAUDE.md +428 -135
  718. package/framework/GEMINI.md +428 -135
  719. package/framework/copilot-instructions.md +429 -136
  720. package/package.json +2 -1
  721. package/src/cli.js +2 -0
  722. package/src/commands/init.js +10 -12
  723. package/src/commands/memory.js +772 -0
  724. package/src/commands/spec.js +40 -8
  725. package/src/config/constants.js +10 -2
  726. package/src/config/ide-mapping.js +1 -0
  727. package/src/index.js +46 -0
  728. package/src/memory/autosave.js +382 -0
  729. package/src/memory/database.js +178 -0
  730. package/src/memory/engine.js +727 -0
  731. package/src/memory/index.js +62 -0
  732. package/src/memory/utils.js +128 -0
  733. package/src/services/spec-engine.js +170 -26
  734. package/src/ui/animations.js +82 -0
@@ -0,0 +1,727 @@
1
+ /**
2
+ * engine.js — Motor de memoria autónoma
3
+ *
4
+ * CRUD operations, búsqueda FTS5, análisis de patrones,
5
+ * grafo de relaciones, y sistema de confianza.
6
+ */
7
+
8
+ import { getDatabase } from './database.js';
9
+ import { randomUUID } from 'node:crypto';
10
+ import { redactPrivateContent } from './utils.js';
11
+
12
+ // Tipos de memoria válidos
13
+ const VALID_TYPES = [
14
+ 'architectural_decision',
15
+ 'bugfix_pattern',
16
+ 'api_pattern',
17
+ 'performance_insight',
18
+ 'security_fix',
19
+ 'refactor_technique',
20
+ 'dependency_note',
21
+ 'workaround',
22
+ 'convention',
23
+ 'context_boundary',
24
+ 'general_insight',
25
+ 'session_summary'
26
+ ];
27
+
28
+ const VALID_IMPORTANCE = ['critical', 'high', 'medium', 'low'];
29
+
30
+ /**
31
+ * Guarda una nueva memoria (con upsert por topic_key)
32
+ */
33
+ export function saveMemory(data) {
34
+ const db = getDatabase();
35
+
36
+ // Redactar contenido privado
37
+ const content = redactPrivateContent(data.content);
38
+ const codeSnippet = data.codeSnippet ? redactPrivateContent(data.codeSnippet) : null;
39
+ const solution = data.solution ? redactPrivateContent(data.solution) : null;
40
+ const errorMessage = data.errorMessage ? redactPrivateContent(data.errorMessage) : null;
41
+
42
+ // Validar tipo
43
+ const type = VALID_TYPES.includes(data.type) ? data.type : 'general_insight';
44
+
45
+ // Calcular confianza si no se proporciona
46
+ const confidence = data.confidence ?? calculateConfidence(content, data);
47
+
48
+ // Determinar importancia
49
+ const importance = data.importance ?? determineImportance(type, confidence);
50
+
51
+ // Generar topic_key si no existe
52
+ const topicKey = data.topicKey || generateTopicKey(content);
53
+
54
+ // Verificar si existe para upsert
55
+ const existing = db.prepare('SELECT id, revision_count FROM memories WHERE topic_key = ?').get(topicKey);
56
+
57
+ if (existing) {
58
+ // Update (upsert)
59
+ const stmt = db.prepare(`
60
+ UPDATE memories SET
61
+ type = ?,
62
+ content = ?,
63
+ project_path = ?,
64
+ change_name = ?,
65
+ session_id = ?,
66
+ confidence = ?,
67
+ importance = ?,
68
+ tags = ?,
69
+ related_to = ?,
70
+ shareable = ?,
71
+ author = ?,
72
+ code_snippet = ?,
73
+ error_message = ?,
74
+ solution = ?,
75
+ revision_count = ?,
76
+ is_deleted = 0
77
+ WHERE id = ?
78
+ `);
79
+
80
+ stmt.run(
81
+ type,
82
+ content,
83
+ data.projectPath || null,
84
+ data.changeName || null,
85
+ data.sessionId || null,
86
+ confidence,
87
+ importance,
88
+ data.tags ? JSON.stringify(data.tags) : null,
89
+ data.relatedTo ? JSON.stringify(data.relatedTo) : null,
90
+ data.shareable !== false ? 1 : 0,
91
+ data.author || 'unknown',
92
+ codeSnippet,
93
+ errorMessage,
94
+ solution,
95
+ existing.revision_count + 1,
96
+ existing.id
97
+ );
98
+
99
+ return { id: existing.id, operation: 'updated', revisionCount: existing.revision_count + 1 };
100
+ } else {
101
+ // Insert nuevo
102
+ const stmt = db.prepare(`
103
+ INSERT INTO memories (
104
+ topic_key, type, content, project_path, change_name, session_id,
105
+ confidence, importance, tags, related_to, shareable, author,
106
+ code_snippet, error_message, solution
107
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
108
+ `);
109
+
110
+ const result = stmt.run(
111
+ topicKey,
112
+ type,
113
+ content,
114
+ data.projectPath || null,
115
+ data.changeName || null,
116
+ data.sessionId || null,
117
+ confidence,
118
+ importance,
119
+ data.tags ? JSON.stringify(data.tags) : null,
120
+ data.relatedTo ? JSON.stringify(data.relatedTo) : null,
121
+ data.shareable !== false ? 1 : 0,
122
+ data.author || 'unknown',
123
+ codeSnippet,
124
+ errorMessage,
125
+ solution
126
+ );
127
+
128
+ return { id: result.lastInsertRowid, operation: 'created', revisionCount: 0 };
129
+ }
130
+ }
131
+
132
+ /**
133
+ * Busca memorias usando FTS5
134
+ */
135
+ export function searchMemories(query, options = {}) {
136
+ const db = getDatabase();
137
+
138
+ const {
139
+ limit = 10,
140
+ offset = 0,
141
+ type = null,
142
+ projectPath = null,
143
+ changeName = null,
144
+ importance = null,
145
+ since = null, // fecha ISO
146
+ tags = null, // array
147
+ minConfidence = 0
148
+ } = options;
149
+
150
+ let sql = `
151
+ SELECT m.* FROM memories m
152
+ JOIN memories_fts fts ON m.id = fts.rowid
153
+ WHERE m.is_deleted = 0
154
+ AND fts.memories_fts MATCH ?
155
+ AND m.confidence >= ?
156
+ `;
157
+
158
+ const params = [query, minConfidence];
159
+
160
+ if (type) {
161
+ sql += ' AND m.type = ?';
162
+ params.push(type);
163
+ }
164
+
165
+ if (projectPath) {
166
+ sql += ' AND m.project_path = ?';
167
+ params.push(projectPath);
168
+ }
169
+
170
+ if (changeName) {
171
+ sql += ' AND m.change_name = ?';
172
+ params.push(changeName);
173
+ }
174
+
175
+ if (importance) {
176
+ sql += ' AND m.importance = ?';
177
+ params.push(importance);
178
+ }
179
+
180
+ if (since) {
181
+ sql += ' AND m.created_at >= ?';
182
+ params.push(since);
183
+ }
184
+
185
+ sql += ' ORDER BY m.confidence DESC, m.created_at DESC LIMIT ? OFFSET ?';
186
+ params.push(limit, offset);
187
+
188
+ const stmt = db.prepare(sql);
189
+ const rows = stmt.all(...params);
190
+
191
+ // Marcar acceso
192
+ rows.forEach(row => {
193
+ recordAccess(row.id, options.sessionId, 'search');
194
+ });
195
+
196
+ return rows.map(formatMemory);
197
+ }
198
+
199
+ /**
200
+ * Obtiene contexto relevante para el proyecto/change actual
201
+ */
202
+ export function getContext(options = {}) {
203
+ const db = getDatabase();
204
+
205
+ const {
206
+ projectPath = null,
207
+ changeName = null,
208
+ currentTask = null, // para búsqueda semántica simple
209
+ limit = 5,
210
+ lookbackDays = 30,
211
+ sessionId = null
212
+ } = options;
213
+
214
+ // Calcular fecha de corte
215
+ const since = new Date();
216
+ since.setDate(since.getDate() - lookbackDays);
217
+ const sinceStr = since.toISOString();
218
+
219
+ let sql = `
220
+ SELECT m.* FROM memories m
221
+ WHERE m.is_deleted = 0
222
+ AND m.created_at >= ?
223
+ AND m.importance IN ('critical', 'high')
224
+ `;
225
+
226
+ const params = [sinceStr];
227
+
228
+ // Priorizar memorias del mismo proyecto
229
+ if (projectPath) {
230
+ sql += ' AND (m.project_path = ? OR m.shareable = 1)';
231
+ params.push(projectPath);
232
+ }
233
+
234
+ // Si hay change específico, incluirlo
235
+ if (changeName) {
236
+ sql += ' AND (m.change_name = ? OR m.change_name IS NULL)';
237
+ params.push(changeName);
238
+ }
239
+
240
+ sql += ` ORDER BY
241
+ CASE WHEN m.project_path = ? THEN 2 ELSE 1 END DESC,
242
+ m.access_count DESC,
243
+ m.created_at DESC
244
+ LIMIT ?`;
245
+
246
+ params.push(projectPath || '', limit);
247
+
248
+ const stmt = db.prepare(sql);
249
+ const rows = stmt.all(...params);
250
+
251
+ rows.forEach(row => {
252
+ recordAccess(row.id, sessionId, 'context');
253
+ });
254
+
255
+ return rows.map(formatMemory);
256
+ }
257
+
258
+ /**
259
+ * Obtiene timeline cronológico alrededor de una memoria
260
+ */
261
+ export function getTimeline(memoryId, options = {}) {
262
+ const db = getDatabase();
263
+
264
+ const { window = 5, projectPath = null } = options;
265
+
266
+ // Obtener la memoria base
267
+ const base = db.prepare('SELECT * FROM memories WHERE id = ?').get(memoryId);
268
+ if (!base) return null;
269
+
270
+ // Memorias anteriores
271
+ const beforeStmt = db.prepare(`
272
+ SELECT * FROM memories
273
+ WHERE is_deleted = 0
274
+ AND created_at < ?
275
+ ${projectPath ? 'AND (project_path = ? OR shareable = 1)' : ''}
276
+ ORDER BY created_at DESC
277
+ LIMIT ?
278
+ `);
279
+
280
+ const beforeParams = projectPath ? [base.created_at, projectPath, window] : [base.created_at, window];
281
+ const before = beforeStmt.all(...beforeParams).reverse();
282
+
283
+ // Memorias posteriores
284
+ const afterStmt = db.prepare(`
285
+ SELECT * FROM memories
286
+ WHERE is_deleted = 0
287
+ AND created_at > ?
288
+ ${projectPath ? 'AND (project_path = ? OR shareable = 1)' : ''}
289
+ ORDER BY created_at ASC
290
+ LIMIT ?
291
+ `);
292
+
293
+ const afterParams = projectPath ? [base.created_at, projectPath, window] : [base.created_at, window];
294
+ const after = afterStmt.all(...afterParams);
295
+
296
+ return {
297
+ base: formatMemory(base),
298
+ before: before.map(formatMemory),
299
+ after: after.map(formatMemory)
300
+ };
301
+ }
302
+
303
+ /**
304
+ * Obtiene una memoria específica por ID
305
+ */
306
+ export function getMemory(id, sessionId = null) {
307
+ const db = getDatabase();
308
+
309
+ const row = db.prepare('SELECT * FROM memories WHERE id = ? AND is_deleted = 0').get(id);
310
+ if (!row) return null;
311
+
312
+ recordAccess(id, sessionId, 'get');
313
+ return formatMemory(row);
314
+ }
315
+
316
+ /**
317
+ * Actualiza una memoria existente
318
+ */
319
+ export function updateMemory(id, updates) {
320
+ const db = getDatabase();
321
+
322
+ const allowedFields = ['type', 'content', 'tags', 'importance', 'shareable', 'relatedTo'];
323
+ const setParts = [];
324
+ const params = [];
325
+
326
+ for (const [key, value] of Object.entries(updates)) {
327
+ if (!allowedFields.includes(key)) continue;
328
+
329
+ const dbKey = key === 'relatedTo' ? 'related_to' : key;
330
+
331
+ if (key === 'content') {
332
+ setParts.push(`${dbKey} = ?`);
333
+ params.push(redactPrivateContent(value));
334
+ } else if (key === 'tags' || key === 'relatedTo') {
335
+ setParts.push(`${dbKey} = ?`);
336
+ params.push(JSON.stringify(value));
337
+ } else {
338
+ setParts.push(`${dbKey} = ?`);
339
+ params.push(value);
340
+ }
341
+ }
342
+
343
+ if (setParts.length === 0) return null;
344
+
345
+ params.push(id);
346
+
347
+ const stmt = db.prepare(`UPDATE memories SET ${setParts.join(', ')} WHERE id = ?`);
348
+ const result = stmt.run(...params);
349
+
350
+ return result.changes > 0 ? getMemory(id) : null;
351
+ }
352
+
353
+ /**
354
+ * Soft-delete de una memoria
355
+ */
356
+ export function deleteMemory(id) {
357
+ const db = getDatabase();
358
+
359
+ const stmt = db.prepare('UPDATE memories SET is_deleted = 1 WHERE id = ?');
360
+ const result = stmt.run(id);
361
+
362
+ return result.changes > 0;
363
+ }
364
+
365
+ /**
366
+ * Gestión de sesiones
367
+ */
368
+ export function startSession(projectPath = null, changeName = null) {
369
+ const db = getDatabase();
370
+ const sessionId = randomUUID();
371
+
372
+ const stmt = db.prepare('INSERT INTO sessions (id, project_path, change_name) VALUES (?, ?, ?)');
373
+ stmt.run(sessionId, projectPath, changeName);
374
+
375
+ return sessionId;
376
+ }
377
+
378
+ export function endSession(sessionId, summary = null) {
379
+ const db = getDatabase();
380
+
381
+ const stmt = db.prepare('UPDATE sessions SET ended_at = CURRENT_TIMESTAMP, summary = ? WHERE id = ?');
382
+ stmt.run(summary, sessionId);
383
+
384
+ // Si hay summary, guardarlo como memoria
385
+ if (summary) {
386
+ const session = db.prepare('SELECT * FROM sessions WHERE id = ?').get(sessionId);
387
+ if (session) {
388
+ saveMemory({
389
+ type: 'session_summary',
390
+ content: summary,
391
+ projectPath: session.project_path,
392
+ changeName: session.change_name,
393
+ sessionId,
394
+ author: 'system'
395
+ });
396
+ }
397
+ }
398
+
399
+ return true;
400
+ }
401
+
402
+ /**
403
+ * Estadísticas del sistema de memoria
404
+ */
405
+ export function getStats(options = {}) {
406
+ const db = getDatabase();
407
+ const { projectPath = null, since = null } = options;
408
+
409
+ let whereClause = 'WHERE is_deleted = 0';
410
+ const params = [];
411
+
412
+ if (projectPath) {
413
+ whereClause += ' AND project_path = ?';
414
+ params.push(projectPath);
415
+ }
416
+
417
+ if (since) {
418
+ whereClause += ' AND created_at >= ?';
419
+ params.push(since);
420
+ }
421
+
422
+ // Totales
423
+ const totalStmt = db.prepare(`SELECT COUNT(*) as count FROM memories ${whereClause}`);
424
+ const total = totalStmt.get(...params).count;
425
+
426
+ // Por tipo
427
+ const byTypeStmt = db.prepare(`
428
+ SELECT type, COUNT(*) as count FROM memories
429
+ ${whereClause}
430
+ GROUP BY type ORDER BY count DESC
431
+ `);
432
+ const byType = byTypeStmt.all(...params);
433
+
434
+ // Por importancia
435
+ const byImportanceStmt = db.prepare(`
436
+ SELECT importance, COUNT(*) as count FROM memories
437
+ ${whereClause}
438
+ GROUP BY importance ORDER BY count DESC
439
+ `);
440
+ const byImportance = byImportanceStmt.all(...params);
441
+
442
+ // Más accedidas
443
+ const mostAccessedStmt = db.prepare(`
444
+ SELECT id, content, access_count FROM memories
445
+ ${whereClause}
446
+ ORDER BY access_count DESC LIMIT 5
447
+ `);
448
+ const mostAccessed = mostAccessedStmt.all(...params);
449
+
450
+ // Patrones de error comunes
451
+ const commonErrorsStmt = db.prepare(`
452
+ SELECT error_message, COUNT(*) as count FROM memories
453
+ ${whereClause} AND error_message IS NOT NULL
454
+ GROUP BY error_message ORDER BY count DESC LIMIT 5
455
+ `);
456
+ const commonErrors = commonErrorsStmt.all(...params);
457
+
458
+ return {
459
+ total,
460
+ byType,
461
+ byImportance,
462
+ mostAccessed: mostAccessed.map(m => ({ id: m.id, preview: m.content.slice(0, 100), accessCount: m.access_count })),
463
+ commonErrors: commonErrors.map(e => ({ error: e.error_message, count: e.count }))
464
+ };
465
+ }
466
+
467
+ /**
468
+ * Encuentra patrones y clusters
469
+ */
470
+ export function findPatterns(options = {}) {
471
+ const db = getDatabase();
472
+ const { type = null, minFrequency = 2 } = options;
473
+
474
+ // Buscar topic_keys similares (simple string similarity)
475
+ let sql = `
476
+ SELECT topic_key, type, COUNT(*) as frequency,
477
+ GROUP_CONCAT(id) as memory_ids,
478
+ MAX(created_at) as last_seen
479
+ FROM memories
480
+ WHERE is_deleted = 0
481
+ `;
482
+
483
+ const params = [];
484
+
485
+ if (type) {
486
+ sql += ' AND type = ?';
487
+ params.push(type);
488
+ }
489
+
490
+ sql += ' GROUP BY topic_key HAVING frequency >= ? ORDER BY frequency DESC';
491
+ params.push(minFrequency);
492
+
493
+ const stmt = db.prepare(sql);
494
+ return stmt.all(...params);
495
+ }
496
+
497
+ /**
498
+ * Grafo de relaciones entre memorias
499
+ */
500
+ export function getConnections(memoryId, depth = 1) {
501
+ const db = getDatabase();
502
+
503
+ const visited = new Set();
504
+ const connections = [];
505
+ const queue = [{ id: memoryId, d: 0 }];
506
+
507
+ while (queue.length > 0) {
508
+ const { id, d } = queue.shift();
509
+ if (visited.has(id) || d > depth) continue;
510
+ visited.add(id);
511
+
512
+ const memory = db.prepare('SELECT id, content, related_to FROM memories WHERE id = ? AND is_deleted = 0').get(id);
513
+ if (!memory) continue;
514
+
515
+ const related = memory.related_to ? JSON.parse(memory.related_to) : [];
516
+
517
+ for (const relatedId of related) {
518
+ if (!visited.has(relatedId)) {
519
+ connections.push({ from: id, to: relatedId, depth: d + 1 });
520
+ queue.push({ id: relatedId, d: d + 1 });
521
+ }
522
+ }
523
+ }
524
+
525
+ return connections;
526
+ }
527
+
528
+ /**
529
+ * Sugerencias predictivas
530
+ */
531
+ export function anticipateNeeds(currentTask, projectPath = null) {
532
+ const db = getDatabase();
533
+
534
+ // Extraer palabras clave simples
535
+ const keywords = currentTask.toLowerCase().split(/\s+/).filter(w => w.length > 3);
536
+
537
+ if (keywords.length === 0) return [];
538
+
539
+ // Construir query FTS
540
+ const query = keywords.join(' OR ');
541
+
542
+ return searchMemories(query, {
543
+ projectPath,
544
+ limit: 5,
545
+ importance: 'high',
546
+ minConfidence: 0.7
547
+ });
548
+ }
549
+
550
+ // ==================== HELPERS ====================
551
+
552
+ function formatMemory(row) {
553
+ return {
554
+ id: row.id,
555
+ topicKey: row.topic_key,
556
+ type: row.type,
557
+ content: row.content,
558
+ projectPath: row.project_path,
559
+ changeName: row.change_name,
560
+ sessionId: row.session_id,
561
+ confidence: row.confidence,
562
+ importance: row.importance,
563
+ tags: row.tags ? JSON.parse(row.tags) : [],
564
+ relatedTo: row.related_to ? JSON.parse(row.related_to) : [],
565
+ shareable: row.shareable === 1,
566
+ author: row.author,
567
+ codeSnippet: row.code_snippet,
568
+ errorMessage: row.error_message,
569
+ solution: row.solution,
570
+ createdAt: row.created_at,
571
+ updatedAt: row.updated_at,
572
+ lastAccessed: row.last_accessed,
573
+ accessCount: row.access_count,
574
+ revisionCount: row.revision_count
575
+ };
576
+ }
577
+
578
+ function recordAccess(memoryId, sessionId, accessType) {
579
+ const db = getDatabase();
580
+
581
+ // Log del acceso
582
+ const logStmt = db.prepare('INSERT INTO memory_access_log (memory_id, session_id, access_type) VALUES (?, ?, ?)');
583
+ logStmt.run(memoryId, sessionId, accessType);
584
+
585
+ // Actualizar contador
586
+ const updateStmt = db.prepare('UPDATE memories SET access_count = access_count + 1, last_accessed = CURRENT_TIMESTAMP WHERE id = ?');
587
+ updateStmt.run(memoryId);
588
+ }
589
+
590
+ function calculateConfidence(content, data) {
591
+ let score = 0.5;
592
+
593
+ // Palabras clave de decisión
594
+ if (/decidimos|elegimos|optamos|mejor usar|recomendado|evitar/i.test(content)) score += 0.2;
595
+
596
+ // Contiene solución
597
+ if (data.solution || /solución|fix|resuelve/i.test(content)) score += 0.15;
598
+
599
+ // Contiene error
600
+ if (data.errorMessage || /error|bug|issue|problema/i.test(content)) score += 0.1;
601
+
602
+ // Es arquitectónico
603
+ if (data.type === 'architectural_decision') score += 0.1;
604
+
605
+ // Tiene código de ejemplo
606
+ if (data.codeSnippet) score += 0.05;
607
+
608
+ return Math.min(0.95, score);
609
+ }
610
+
611
+ function determineImportance(type, confidence) {
612
+ if (type === 'architectural_decision' || type === 'security_fix') return 'critical';
613
+ if (confidence > 0.8) return 'high';
614
+ if (confidence > 0.6) return 'medium';
615
+ return 'low';
616
+ }
617
+
618
+ function generateTopicKey(content) {
619
+ // Generar key estable a partir del contenido
620
+ const normalized = content.toLowerCase()
621
+ .replace(/[^\w\s]/g, '')
622
+ .split(/\s+/)
623
+ .filter(w => w.length > 3)
624
+ .slice(0, 5)
625
+ .join('-');
626
+
627
+ return normalized || `mem-${Date.now()}`;
628
+ }
629
+
630
+ /**
631
+ * Exporta memorias para sync
632
+ */
633
+ export function exportMemories(options = {}) {
634
+ const db = getDatabase();
635
+ const { projectPath = null, shareableOnly = true, since = null } = options;
636
+
637
+ let sql = 'SELECT * FROM memories WHERE is_deleted = 0';
638
+ const params = [];
639
+
640
+ if (shareableOnly) {
641
+ sql += ' AND shareable = 1';
642
+ }
643
+
644
+ if (projectPath) {
645
+ sql += ' AND project_path = ?';
646
+ params.push(projectPath);
647
+ }
648
+
649
+ if (since) {
650
+ sql += ' AND updated_at >= ?';
651
+ params.push(since);
652
+ }
653
+
654
+ const stmt = db.prepare(sql);
655
+ return stmt.all(...params).map(formatMemory);
656
+ }
657
+
658
+ /**
659
+ * Importa memorias desde export
660
+ */
661
+ export function importMemories(memories, options = {}) {
662
+ const { merge = true } = options;
663
+
664
+ const results = [];
665
+
666
+ for (const mem of memories) {
667
+ try {
668
+ const result = saveMemory({
669
+ topicKey: mem.topicKey,
670
+ type: mem.type,
671
+ content: mem.content,
672
+ projectPath: mem.projectPath,
673
+ tags: mem.tags,
674
+ importance: mem.importance,
675
+ shareable: mem.shareable,
676
+ codeSnippet: mem.codeSnippet,
677
+ errorMessage: mem.errorMessage,
678
+ solution: mem.solution
679
+ });
680
+
681
+ results.push({ success: true, id: result.id, operation: result.operation });
682
+ } catch (err) {
683
+ results.push({ success: false, error: err.message });
684
+ }
685
+ }
686
+
687
+ return results;
688
+ }
689
+
690
+ /**
691
+ * Limpieza de memorias obsoletas
692
+ */
693
+ export function pruneMemories(options = {}) {
694
+ const db = getDatabase();
695
+ const { olderThanDays = 90, lowConfidence = true, unused = true } = options;
696
+
697
+ const cutoff = new Date();
698
+ cutoff.setDate(cutoff.getDate() - olderThanDays);
699
+ const cutoffStr = cutoff.toISOString();
700
+
701
+ let sql = 'UPDATE memories SET is_deleted = 1 WHERE is_deleted = 0';
702
+ const params = [];
703
+
704
+ const conditions = [];
705
+
706
+ if (olderThanDays) {
707
+ conditions.push('created_at < ?');
708
+ params.push(cutoffStr);
709
+ }
710
+
711
+ if (lowConfidence) {
712
+ conditions.push('confidence < 0.4');
713
+ }
714
+
715
+ if (unused) {
716
+ conditions.push('access_count = 0');
717
+ }
718
+
719
+ if (conditions.length > 0) {
720
+ sql += ' AND (' + conditions.join(' OR ') + ')';
721
+ }
722
+
723
+ const stmt = db.prepare(sql);
724
+ const result = stmt.run(...params);
725
+
726
+ return { archived: result.changes };
727
+ }