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,62 @@
1
+ /**
2
+ * memory/index.js — API pública del sistema de memoria autónoma
3
+ *
4
+ * Sistema de persistencia de conocimiento para agentes AI.
5
+ * Guarda automáticamente decisiones, patrones, bugfixes y insights.
6
+ */
7
+
8
+ // Database
9
+ export { initDatabase, getDatabase, closeDatabase, isDatabaseInitialized } from './database.js';
10
+
11
+ // Core Engine
12
+ export {
13
+ saveMemory,
14
+ searchMemories,
15
+ getContext,
16
+ getTimeline,
17
+ getMemory,
18
+ updateMemory,
19
+ deleteMemory,
20
+ startSession,
21
+ endSession,
22
+ getStats,
23
+ findPatterns,
24
+ getConnections,
25
+ anticipateNeeds,
26
+ exportMemories,
27
+ importMemories,
28
+ pruneMemories
29
+ } from './engine.js';
30
+
31
+ // Utils
32
+ export {
33
+ redactPrivateContent,
34
+ extractKeywords,
35
+ textSimilarity,
36
+ truncate,
37
+ isCodeContent,
38
+ detectLanguage,
39
+ generateSummary,
40
+ sanitizeFTSQuery
41
+ } from './utils.js';
42
+
43
+ // Auto-save system
44
+ export { createAutoSaveHook, AutoSaveManager } from './autosave.js';
45
+
46
+ // Tipos de memoria válidos para referencia
47
+ export const MEMORY_TYPES = [
48
+ 'architectural_decision',
49
+ 'bugfix_pattern',
50
+ 'api_pattern',
51
+ 'performance_insight',
52
+ 'security_fix',
53
+ 'refactor_technique',
54
+ 'dependency_note',
55
+ 'workaround',
56
+ 'convention',
57
+ 'context_boundary',
58
+ 'general_insight',
59
+ 'session_summary'
60
+ ];
61
+
62
+ export const IMPORTANCE_LEVELS = ['critical', 'high', 'medium', 'low'];
@@ -0,0 +1,128 @@
1
+ /**
2
+ * utils.js — Utilidades para el sistema de memoria
3
+ */
4
+
5
+ /**
6
+ * Redacta contenido entre etiquetas <private>
7
+ */
8
+ export function redactPrivateContent(content) {
9
+ if (!content) return content;
10
+
11
+ const privateRegex = /<private>[\s\S]*?<\/private>/gi;
12
+ return content.replace(privateRegex, '[REDACTED PRIVATE CONTENT]');
13
+ }
14
+
15
+ /**
16
+ * Extrae palabras clave de un texto
17
+ */
18
+ export function extractKeywords(text, maxKeywords = 5) {
19
+ if (!text) return [];
20
+
21
+ const stopWords = new Set([
22
+ 'el', 'la', 'los', 'las', 'un', 'una', 'unos', 'unas', 'de', 'del', 'al',
23
+ 'the', 'a', 'an', 'is', 'are', 'was', 'were', 'be', 'been', 'being',
24
+ 'en', 'y', 'o', 'pero', 'por', 'para', 'con', 'sin', 'sobre', 'entre',
25
+ 'in', 'and', 'or', 'but', 'for', 'with', 'without', 'on', 'between',
26
+ 'que', 'como', 'cuando', 'donde', 'quien', 'cual', 'esto', 'eso',
27
+ 'that', 'what', 'when', 'where', 'who', 'which', 'this', 'that'
28
+ ]);
29
+
30
+ const wordCounts = text.toLowerCase()
31
+ .replace(/[^\w\s]/g, ' ')
32
+ .split(/\s+/)
33
+ .filter(w => w.length > 3 && !stopWords.has(w))
34
+ .reduce((acc, word) => {
35
+ acc[word] = (acc[word] || 0) + 1;
36
+ return acc;
37
+ }, {});
38
+
39
+ return Object.entries(wordCounts)
40
+ .sort((a, b) => b[1] - a[1])
41
+ .slice(0, maxKeywords)
42
+ .map(([word]) => word);
43
+ }
44
+
45
+ /**
46
+ * Calcula similitud simple entre dos textos (Jaccard)
47
+ */
48
+ export function textSimilarity(text1, text2) {
49
+ const set1 = new Set(text1.toLowerCase().split(/\s+/));
50
+ const set2 = new Set(text2.toLowerCase().split(/\s+/));
51
+
52
+ const intersection = new Set([...set1].filter(x => set2.has(x)));
53
+ const union = new Set([...set1, ...set2]);
54
+
55
+ return intersection.size / union.size;
56
+ }
57
+
58
+ /**
59
+ * Trunca texto con ellipsis
60
+ */
61
+ export function truncate(text, maxLength = 100) {
62
+ if (!text || text.length <= maxLength) return text;
63
+ return text.slice(0, maxLength - 3) + '...';
64
+ }
65
+
66
+ /**
67
+ * Detecta si un contenido parece código
68
+ */
69
+ export function isCodeContent(text) {
70
+ const codeIndicators = [
71
+ /function\s+\w+\s*\(/,
72
+ /const\s+\w+\s*=/,
73
+ /let\s+\w+\s*=/,
74
+ /var\s+\w+\s*=/,
75
+ /import\s+.*\s+from/,
76
+ /export\s+(default\s+)?/,
77
+ /class\s+\w+/,
78
+ /if\s*\(.*\)\s*\{/,
79
+ /for\s*\(.*\)\s*\{/,
80
+ /```[\s\S]*```/
81
+ ];
82
+
83
+ return codeIndicators.some(pattern => pattern.test(text));
84
+ }
85
+
86
+ /**
87
+ * Detecta lenguaje de programación
88
+ */
89
+ export function detectLanguage(text) {
90
+ if (/\.tsx?/.test(text) || /interface\s+\w+/.test(text) || /:\s*(string|number|boolean)/.test(text)) {
91
+ return 'typescript';
92
+ }
93
+ if (/\.jsx?/.test(text) || /React\./.test(text) || /useState|useEffect/.test(text)) {
94
+ return 'javascript';
95
+ }
96
+ if (/\.py/.test(text) || /def\s+\w+\s*\(/.test(text) || /import\s+\w+/.test(text)) {
97
+ return 'python';
98
+ }
99
+ if (/\.go/.test(text) || /func\s+\w+\s*\(/.test(text) || /package\s+\w+/.test(text)) {
100
+ return 'go';
101
+ }
102
+ if (/\.rs/.test(text) || /fn\s+\w+\s*\(/.test(text) || /let\s+mut/.test(text)) {
103
+ return 'rust';
104
+ }
105
+ return 'unknown';
106
+ }
107
+
108
+ /**
109
+ * Genera un resumen automático
110
+ */
111
+ export function generateSummary(text, maxSentences = 2) {
112
+ if (!text) return '';
113
+
114
+ const sentences = text.split(/[.!?]+/).filter(s => s.trim().length > 10);
115
+ return sentences.slice(0, maxSentences).join('. ') + '.';
116
+ }
117
+
118
+ /**
119
+ * Sanitiza input para FTS5
120
+ */
121
+ export function sanitizeFTSQuery(query) {
122
+ // Escapar caracteres especiales de FTS5
123
+ return query
124
+ .replace(/"/g, '""')
125
+ .replace(/\*/g, '')
126
+ .replace(/^\^/g, '')
127
+ .replace(/\$/g, '');
128
+ }
@@ -9,10 +9,45 @@ import { readFile, readdir, stat, mkdir, rename, access, writeFile } from 'node:
9
9
  import { resolve, join, dirname, relative } from 'node:path';
10
10
  import { fileURLToPath } from 'node:url';
11
11
  import yaml from 'js-yaml';
12
+ import { initDatabase, getContext, AutoSaveManager } from '../memory/index.js';
12
13
 
13
14
  const __dirname = dirname(fileURLToPath(import.meta.url));
14
15
  const SCHEMAS_DIR = resolve(__dirname, '../schemas');
15
- const OPENSPEC_DIR = 'openspec';
16
+
17
+ // Default directory name for AC Framework spec-driven workflows
18
+ const ACFM_DIR = '.acfm';
19
+ // Legacy directory name for backward compatibility
20
+ const LEGACY_DIR = 'openspec';
21
+
22
+ /**
23
+ * Determine which spec directory to use for a project.
24
+ * Priority: .acfm/ > openspec/ (for backward compatibility)
25
+ * Returns the directory name (not full path)
26
+ */
27
+ async function getSpecDir(cwd = process.cwd()) {
28
+ try {
29
+ // Check if .acfm exists
30
+ await access(join(cwd, ACFM_DIR));
31
+ return ACFM_DIR;
32
+ } catch {
33
+ try {
34
+ // Fall back to legacy openspec directory
35
+ await access(join(cwd, LEGACY_DIR));
36
+ return LEGACY_DIR;
37
+ } catch {
38
+ // Neither exists, default to new .acfm for new projects
39
+ return ACFM_DIR;
40
+ }
41
+ }
42
+ }
43
+
44
+ /**
45
+ * Get the effective spec directory name without async
46
+ * For use when we already know the project is initialized
47
+ */
48
+ async function getSpecDirSync(cwd = process.cwd()) {
49
+ return await getSpecDir(cwd);
50
+ }
16
51
 
17
52
  // ─── Schema Loading ──────────────────────────────────────────────────────────
18
53
 
@@ -72,10 +107,12 @@ export async function loadTemplate(schemaName, artifactId) {
72
107
  // ─── Project Config ──────────────────────────────────────────────────────────
73
108
 
74
109
  /**
75
- * Read the project's openspec/config.yaml
110
+ * Read the project's spec config.yaml
111
+ * Supports both .acfm/ (new) and openspec/ (legacy) directories
76
112
  */
77
113
  export async function readProjectConfig(cwd = process.cwd()) {
78
- const configPath = join(cwd, OPENSPEC_DIR, 'config.yaml');
114
+ const specDir = await getSpecDir(cwd);
115
+ const configPath = join(cwd, specDir, 'config.yaml');
79
116
  try {
80
117
  const content = await readFile(configPath, 'utf-8');
81
118
  return yaml.load(content) || {};
@@ -86,11 +123,13 @@ export async function readProjectConfig(cwd = process.cwd()) {
86
123
  }
87
124
 
88
125
  /**
89
- * Check if openspec is initialized in the current project
126
+ * Check if spec system is initialized in the current project
127
+ * Supports both .acfm/ (new) and openspec/ (legacy) directories
90
128
  */
91
129
  export async function isInitialized(cwd = process.cwd()) {
130
+ const specDir = await getSpecDir(cwd);
92
131
  try {
93
- await access(join(cwd, OPENSPEC_DIR, 'config.yaml'));
132
+ await access(join(cwd, specDir, 'config.yaml'));
94
133
  return true;
95
134
  } catch {
96
135
  return false;
@@ -100,13 +139,23 @@ export async function isInitialized(cwd = process.cwd()) {
100
139
  // ─── Init ────────────────────────────────────────────────────────────────────
101
140
 
102
141
  /**
103
- * Initialize the openspec/ directory structure
142
+ * Initialize the spec directory structure (.acfm/ by default)
143
+ * Creates .acfm/ directory with specs/ and changes/ subdirectories
104
144
  */
105
145
  export async function initProject(cwd = process.cwd(), schemaName = 'spec-driven') {
106
146
  // Validate schema exists
107
147
  await loadSchema(schemaName);
108
148
 
109
- const base = join(cwd, OPENSPEC_DIR);
149
+ // Check for legacy openspec directory - warn if found
150
+ try {
151
+ await access(join(cwd, LEGACY_DIR));
152
+ // Legacy directory exists, but we'll create new .acfm anyway
153
+ // This allows migration path
154
+ } catch {
155
+ // No legacy directory, proceed normally
156
+ }
157
+
158
+ const base = join(cwd, ACFM_DIR);
110
159
  await mkdir(join(base, 'specs'), { recursive: true });
111
160
  await mkdir(join(base, 'changes'), { recursive: true });
112
161
 
@@ -114,11 +163,35 @@ export async function initProject(cwd = process.cwd(), schemaName = 'spec-driven
114
163
  try {
115
164
  await access(configPath);
116
165
  // Already exists, don't overwrite
117
- return { created: false, path: base };
166
+ return { created: false, path: base, dirName: ACFM_DIR };
118
167
  } catch {
119
- const configContent = `schema: ${schemaName}\n\n# Project context (optional)\n# This is shown to AI when creating artifacts.\n# Add your tech stack, conventions, style guides, domain knowledge, etc.\n# Example:\n# context: |\n# Tech stack: TypeScript, React, Node.js\n# We use conventional commits\n# Domain: e-commerce platform\n\n# Per-artifact rules (optional)\n# Add custom rules for specific artifacts.\n# Example:\n# rules:\n# proposal:\n# - Keep proposals under 500 words\n# - Always include a \"Non-goals\" section\n# tasks:\n# - Break tasks into chunks of max 2 hours\n`;
168
+ const configContent = `schema: ${schemaName}
169
+
170
+ # Project context (optional)
171
+ # This is shown to AI when creating artifacts.
172
+ # Add your tech stack, conventions, style guides, domain knowledge, etc.
173
+ # Example:
174
+ # context: |
175
+ # Tech stack: TypeScript, React, Node.js
176
+ # We use conventional commits
177
+ # Domain: e-commerce platform
178
+
179
+ # Per-artifact rules (optional)
180
+ # Add custom rules for specific artifacts.
181
+ # Example:
182
+ # rules:
183
+ # proposal:
184
+ # - Keep proposals under 500 words
185
+ # - Always include a "Non-goals" section
186
+ # tasks:
187
+ # - Break tasks into chunks of max 2 hours
188
+
189
+ # Directory Configuration
190
+ # This project uses: .acfm/
191
+ # Legacy openspec/ directories are supported for backward compatibility.
192
+ `;
120
193
  await writeFile(configPath, configContent, 'utf-8');
121
- return { created: true, path: base };
194
+ return { created: true, path: base, dirName: ACFM_DIR };
122
195
  }
123
196
  }
124
197
 
@@ -126,9 +199,11 @@ export async function initProject(cwd = process.cwd(), schemaName = 'spec-driven
126
199
 
127
200
  /**
128
201
  * Get the changes directory path
202
+ * Supports both .acfm/ (new) and openspec/ (legacy) directories
129
203
  */
130
- function changesDir(cwd) {
131
- return join(cwd, OPENSPEC_DIR, 'changes');
204
+ async function changesDir(cwd) {
205
+ const specDir = await getSpecDir(cwd);
206
+ return join(cwd, specDir, 'changes');
132
207
  }
133
208
 
134
209
  /**
@@ -137,13 +212,13 @@ function changesDir(cwd) {
137
212
  export async function createChange(name, cwd = process.cwd(), schemaOverride = null) {
138
213
  const config = await readProjectConfig(cwd);
139
214
  if (!config) {
140
- throw new Error('OpenSpec not initialized. Run `acfm spec init` first.');
215
+ throw new Error('Spec system not initialized. Run `acfm spec init` first.');
141
216
  }
142
217
 
143
218
  const schemaName = schemaOverride || config.schema || 'spec-driven';
144
219
  const schema = await loadSchema(schemaName);
145
220
 
146
- const changeDir = join(changesDir(cwd), name);
221
+ const changeDir = join(await changesDir(cwd), name);
147
222
 
148
223
  // Check if already exists
149
224
  try {
@@ -182,7 +257,7 @@ export async function createChange(name, cwd = process.cwd(), schemaOverride = n
182
257
  * List all active (non-archived) changes
183
258
  */
184
259
  export async function listChanges(cwd = process.cwd()) {
185
- const dir = changesDir(cwd);
260
+ const dir = await changesDir(cwd);
186
261
  let entries;
187
262
  try {
188
263
  entries = await readdir(dir, { withFileTypes: true });
@@ -284,7 +359,7 @@ async function isArtifactDone(changePath, artifact) {
284
359
  * Get full status for a change, including per-artifact status
285
360
  */
286
361
  export async function getChangeStatus(name, cwd = process.cwd()) {
287
- const changePath = join(changesDir(cwd), name);
362
+ const changePath = join(await changesDir(cwd), name);
288
363
 
289
364
  // Read change metadata
290
365
  const metaPath = join(changePath, '.openspec.yaml');
@@ -341,10 +416,10 @@ export async function getChangeStatus(name, cwd = process.cwd()) {
341
416
  * Get instructions for creating a specific artifact
342
417
  */
343
418
  export async function getArtifactInstructions(artifactId, changeName, cwd = process.cwd()) {
344
- const changePath = join(changesDir(cwd), changeName);
419
+ const changePath = join(await changesDir(cwd), changeName);
345
420
  const config = await readProjectConfig(cwd);
346
421
  if (!config) {
347
- throw new Error('OpenSpec not initialized. Run `acfm spec init` first.');
422
+ throw new Error('Spec system not initialized. Run `acfm spec init` first.');
348
423
  }
349
424
 
350
425
  const metaPath = join(changePath, '.openspec.yaml');
@@ -382,17 +457,18 @@ export async function getArtifactInstructions(artifactId, changeName, cwd = proc
382
457
  }
383
458
 
384
459
  // Build dependencies (paths to completed artifact files the agent should read)
460
+ const specDir = await getSpecDir(cwd);
385
461
  const dependencies = [];
386
462
  for (const depId of artifact.dependencies) {
387
463
  const depArtifact = schema.artifacts.find(a => a.id === depId);
388
464
  if (depArtifact) {
389
- const depPath = join(OPENSPEC_DIR, 'changes', changeName, depArtifact.outputPath);
465
+ const depPath = join(specDir, 'changes', changeName, depArtifact.outputPath);
390
466
  dependencies.push(depPath);
391
467
  }
392
468
  }
393
469
 
394
470
  // Build output path
395
- const outputPath = join(OPENSPEC_DIR, 'changes', changeName, artifact.outputPath);
471
+ const outputPath = join(specDir, 'changes', changeName, artifact.outputPath);
396
472
 
397
473
  // Build instruction from schema
398
474
  const instruction = artifact.instruction || '';
@@ -400,6 +476,21 @@ export async function getArtifactInstructions(artifactId, changeName, cwd = proc
400
476
  // Determine what this artifact unlocks
401
477
  const unlocks = artifact.unlocks || [];
402
478
 
479
+ // NUEVO: Recuperar contexto de memoria relevante
480
+ let relevantMemories = [];
481
+ try {
482
+ initDatabase(); // Asegurar DB inicializada
483
+ relevantMemories = getContext({
484
+ projectPath: cwd,
485
+ changeName,
486
+ limit: 5,
487
+ lookbackDays: 30
488
+ });
489
+ } catch {
490
+ // Si memory no está inicializado, continuar sin contexto
491
+ relevantMemories = [];
492
+ }
493
+
403
494
  return {
404
495
  context,
405
496
  rules,
@@ -408,6 +499,14 @@ export async function getArtifactInstructions(artifactId, changeName, cwd = proc
408
499
  outputPath,
409
500
  dependencies,
410
501
  unlocks,
502
+ // NUEVO: Memorias relevantes para el contexto del agente
503
+ relevantMemories: relevantMemories.map(m => ({
504
+ id: m.id,
505
+ type: m.type,
506
+ content: m.content,
507
+ importance: m.importance,
508
+ fromChange: m.changeName
509
+ }))
411
510
  };
412
511
  }
413
512
 
@@ -415,10 +514,10 @@ export async function getArtifactInstructions(artifactId, changeName, cwd = proc
415
514
  * Get instructions for the apply phase (implementing tasks)
416
515
  */
417
516
  export async function getApplyInstructions(changeName, cwd = process.cwd()) {
418
- const changePath = join(changesDir(cwd), changeName);
517
+ const changePath = join(await changesDir(cwd), changeName);
419
518
  const config = await readProjectConfig(cwd);
420
519
  if (!config) {
421
- throw new Error('OpenSpec not initialized. Run `acfm spec init` first.');
520
+ throw new Error('Spec system not initialized. Run `acfm spec init` first.');
422
521
  }
423
522
 
424
523
  const metaPath = join(changePath, '.openspec.yaml');
@@ -453,10 +552,11 @@ export async function getApplyInstructions(changeName, cwd = process.cwd()) {
453
552
  }
454
553
 
455
554
  // Build context files — all completed artifacts
555
+ const specDir = await getSpecDir(cwd);
456
556
  const contextFiles = [];
457
557
  for (const artifact of schema.artifacts) {
458
558
  if (doneMap[artifact.id]) {
459
- const artifactPath = join(OPENSPEC_DIR, 'changes', changeName, artifact.outputPath);
559
+ const artifactPath = join(specDir, 'changes', changeName, artifact.outputPath);
460
560
  contextFiles.push(artifactPath);
461
561
  }
462
562
  }
@@ -507,12 +607,56 @@ export async function getApplyInstructions(changeName, cwd = process.cwd()) {
507
607
  instruction = `${remaining} of ${total} tasks remaining. Implement each pending task, following the specs and design. Mark tasks as [x] when complete.`;
508
608
  }
509
609
 
610
+ // NUEVO: Recuperar contexto de memoria relevante para implementación
611
+ let relevantMemories = [];
612
+ let suggestedPatterns = [];
613
+ try {
614
+ initDatabase();
615
+
616
+ // Buscar patrones similares en memorias
617
+ relevantMemories = getContext({
618
+ projectPath: cwd,
619
+ changeName,
620
+ limit: 5,
621
+ lookbackDays: 30
622
+ });
623
+
624
+ // Buscar patrones de implementación específicos
625
+ const pendingTasks = tasks.filter(t => !t.done).map(t => t.task).join(' ');
626
+ if (pendingTasks) {
627
+ // Buscar memorias relacionadas con las tareas pendientes
628
+ const keywords = pendingTasks.toLowerCase().split(/\s+/).filter(w => w.length > 4);
629
+ if (keywords.length > 0) {
630
+ const { searchMemories } = await import('../memory/index.js');
631
+ suggestedPatterns = searchMemories(keywords.slice(0, 5).join(' OR '), {
632
+ type: 'refactor_technique',
633
+ limit: 3
634
+ });
635
+ }
636
+ }
637
+ } catch {
638
+ // Continuar sin contexto si hay error
639
+ }
640
+
510
641
  return {
511
642
  contextFiles,
512
643
  progress: { total, complete, remaining },
513
644
  state,
514
645
  instruction,
515
646
  tasks,
647
+ // NUEVO: Contexto de memoria para ayudar en implementación
648
+ relevantMemories: relevantMemories.map(m => ({
649
+ id: m.id,
650
+ type: m.type,
651
+ content: m.content,
652
+ importance: m.importance,
653
+ codeSnippet: m.codeSnippet
654
+ })),
655
+ suggestedPatterns: suggestedPatterns.map(m => ({
656
+ id: m.id,
657
+ content: m.content,
658
+ type: m.type
659
+ }))
516
660
  };
517
661
  }
518
662
 
@@ -522,7 +666,7 @@ export async function getApplyInstructions(changeName, cwd = process.cwd()) {
522
666
  * Archive a completed change
523
667
  */
524
668
  export async function archiveChange(name, cwd = process.cwd()) {
525
- const changePath = join(changesDir(cwd), name);
669
+ const changePath = join(await changesDir(cwd), name);
526
670
 
527
671
  // Verify change exists
528
672
  try {
@@ -531,7 +675,7 @@ export async function archiveChange(name, cwd = process.cwd()) {
531
675
  throw new Error(`Change "${name}" not found.`);
532
676
  }
533
677
 
534
- const archiveDir = join(changesDir(cwd), 'archive');
678
+ const archiveDir = join(await changesDir(cwd), 'archive');
535
679
  await mkdir(archiveDir, { recursive: true });
536
680
 
537
681
  const dateStr = new Date().toISOString().slice(0, 10); // YYYY-MM-DD
@@ -571,7 +715,7 @@ export async function getGlobalStatus(cwd = process.cwd()) {
571
715
  * Validate a change's artifacts for structural correctness
572
716
  */
573
717
  export async function validateChange(name, cwd = process.cwd()) {
574
- const changePath = join(changesDir(cwd), name);
718
+ const changePath = join(await changesDir(cwd), name);
575
719
  const issues = [];
576
720
 
577
721
  // Check change exists
@@ -6,6 +6,7 @@ const acGradient = gradient(['#6C5CE7', '#00CEC9', '#0984E3']);
6
6
  const successGradient = gradient(['#00CEC9', '#00B894', '#55EFC4']);
7
7
  const warmGradient = gradient(['#FDCB6E', '#E17055', '#D63031']);
8
8
  const glowGradient = gradient(['#0984E3', '#00CEC9', '#55EFC4', '#00CEC9', '#0984E3']);
9
+ const diamondGradient = gradient(['#6C5CE7', '#A29BFE', '#00CEC9', '#A29BFE', '#6C5CE7']);
9
10
 
10
11
  // ── Scanning / Loading ───────────────────────────────────────────
11
12
 
@@ -240,3 +241,84 @@ export async function stepHeader(stepNum, totalSteps, label) {
240
241
  console.log(` ${stepBadge} ${chalk.hex('#DFE6E9')(label)}`);
241
242
  console.log();
242
243
  }
244
+
245
+ // ── Pulse Diamond Intro Animation ─────────────────────────────────
246
+
247
+ export async function pulseDiamondIntro(durationMs = 1800) {
248
+ // Simplified but impactful diamond frames
249
+ const diamondFrames = [
250
+ // Small
251
+ [' ◇ '],
252
+ // Growing
253
+ [' ◇◈◇ '],
254
+ // Medium
255
+ [' ◇◆◈◆◇ '],
256
+ // Large
257
+ [' ◇◆◈◉◈◆◇ ',
258
+ ' ◇◆◈◆◇ '],
259
+ // Full with glow
260
+ [' ◇◇◆◈◉◈◆◇◇ ',
261
+ ' ◇◆◈◉◈◆◇ ',
262
+ ' ◇◇◆◈◉◈◆◇◇ '],
263
+ // Peak
264
+ [' ◇◇◆◈◉◈◉◈◆◇◇ ',
265
+ '◇◇◆◈◉◈◉◈◉◈◆◇◇',
266
+ ' ◇◇◆◈◉◈◉◈◆◇◇ '],
267
+ // Hold peak
268
+ [' ◇◇◆◈◉◈◉◈◆◇◇ ',
269
+ '◇◇◆◈◉◈◉◈◉◈◆◇◇',
270
+ ' ◇◇◆◈◉◈◉◈◆◇◇ '],
271
+ // Back to full
272
+ [' ◇◇◆◈◉◈◆◇◇ ',
273
+ ' ◇◆◈◉◈◆◇ ',
274
+ ' ◇◇◆◈◉◈◆◇◇ '],
275
+ // Medium
276
+ [' ◇◆◈◉◈◆◇ ',
277
+ ' ◇◆◈◆◇ '],
278
+ // Small bright
279
+ [' ◆◈◆ '],
280
+ // Final sparkle
281
+ [' ✦◈✦ '],
282
+ ];
283
+
284
+ const frameDelay = Math.floor(durationMs / diamondFrames.length);
285
+
286
+ console.log();
287
+ console.log();
288
+
289
+ // Animate diamond pulse
290
+ for (const frame of diamondFrames) {
291
+ // Clear and redraw
292
+ if (diamondFrames.indexOf(frame) > 0) {
293
+ for (let i = 0; i < 5; i++) {
294
+ process.stdout.write('\x1B[1A\x1B[2K');
295
+ }
296
+ }
297
+
298
+ // Top padding
299
+ console.log();
300
+
301
+ // Diamond lines centered
302
+ for (const line of frame) {
303
+ const centered = ' ' + line;
304
+ console.log(acGradient(centered));
305
+ }
306
+
307
+ // Bottom padding
308
+ for (let i = 0; i < 4 - frame.length; i++) {
309
+ console.log();
310
+ }
311
+
312
+ await sleep(frameDelay);
313
+ }
314
+
315
+ // Clear diamond and show final logo
316
+ for (let i = 0; i < 5; i++) {
317
+ process.stdout.write('\x1B[1A\x1B[2K');
318
+ }
319
+
320
+ console.log();
321
+ console.log(acGradient(' ◢◤◢◤ AC FRAMEWORK ◥◤◥◤'));
322
+ console.log(chalk.hex('#636E72')(' ───────────────────────────'));
323
+ console.log();
324
+ }