@agentskillkit/agent-skills 1.0.1 → 3.2.1

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 (801) hide show
  1. package/.agent/ARCHITECTURE.md +406 -149
  2. package/.agent/CONTINUOUS_EXECUTION_POLICY.md +623 -0
  3. package/.agent/GEMINI.md +935 -67
  4. package/.agent/WORKFLOW_CHAINS.md +683 -0
  5. package/.agent/agents/{code-archaeologist.md → analyst.md} +37 -25
  6. package/.agent/agents/assessor.md +186 -0
  7. package/.agent/agents/{backend-specialist.md → backend.md} +44 -30
  8. package/.agent/agents/critic.md +164 -0
  9. package/.agent/agents/{database-architect.md → database.md} +36 -24
  10. package/.agent/agents/{debugger.md → debug.md} +49 -43
  11. package/.agent/agents/{devops-engineer.md → devops.md} +50 -50
  12. package/.agent/agents/{documentation-writer.md → docs.md} +13 -13
  13. package/.agent/agents/{explorer-agent.md → explorer.md} +12 -6
  14. package/.agent/agents/{frontend-specialist.md → frontend.md} +79 -33
  15. package/.agent/agents/{game-developer.md → gamedev.md} +30 -30
  16. package/.agent/agents/lead.md +447 -0
  17. package/.agent/agents/learner.md +143 -0
  18. package/.agent/agents/mobile.md +383 -0
  19. package/.agent/agents/orchestrator.md +122 -339
  20. package/.agent/agents/pentest.md +188 -0
  21. package/.agent/agents/{performance-optimizer.md → perf.md} +44 -40
  22. package/.agent/agents/planner.md +413 -0
  23. package/.agent/agents/{product-manager.md → pm.md} +38 -23
  24. package/.agent/agents/po.md +106 -0
  25. package/.agent/agents/qa.md +109 -0
  26. package/.agent/agents/recovery.md +168 -0
  27. package/.agent/agents/security.md +171 -0
  28. package/.agent/agents/{seo-specialist.md → seo.md} +24 -24
  29. package/.agent/agents/{test-engineer.md → testing.md} +39 -39
  30. package/.agent/archive/registry.json.v1-backup +514 -0
  31. package/.agent/config/execution-policy.json +90 -0
  32. package/.agent/config/metrics-config.json +109 -0
  33. package/.agent/config/notification-config.json +43 -0
  34. package/.agent/knowledge/README.md +95 -0
  35. package/.agent/knowledge/_migration_backup/lessons-learned_2026-01-27T07-45-58.862Z.yaml +55 -0
  36. package/.agent/knowledge/_needs_review.yaml +24 -0
  37. package/.agent/knowledge/autopilot-metrics.json +93 -0
  38. package/.agent/knowledge/autopilot-runs.json +11 -0
  39. package/.agent/knowledge/backups/2026-01-25T17-08-04-097Z/lessons-learned.yaml +12 -0
  40. package/.agent/knowledge/backups/2026-01-25T17-08-04-097Z/settings.yaml +5 -0
  41. package/.agent/knowledge/backups/2026-01-25T17-08-08-345Z/lessons-learned.yaml +12 -0
  42. package/.agent/knowledge/backups/2026-01-25T17-08-08-345Z/settings.yaml +5 -0
  43. package/.agent/knowledge/backups/2026-01-25T17-08-09-232Z/lessons-learned.yaml +12 -0
  44. package/.agent/knowledge/backups/2026-01-25T17-08-09-232Z/settings.yaml +5 -0
  45. package/.agent/knowledge/backups/2026-01-29T15-15-32-715Z/lessons-learned.yaml +37 -0
  46. package/.agent/knowledge/backups/2026-01-29T15-15-32-715Z/settings.yaml +24 -0
  47. package/.agent/knowledge/backups/lessons-learned.yaml.archived +58 -0
  48. package/.agent/knowledge/backups/lessons-learned.yaml.bak-20260128-180048 +58 -0
  49. package/.agent/knowledge/backups/lessons.yaml.archived +2 -0
  50. package/.agent/knowledge/detected-errors.json +5 -0
  51. package/.agent/knowledge/evolution-signals.json +95 -0
  52. package/.agent/knowledge/improvements.yaml +68 -0
  53. package/.agent/knowledge/index.json +133 -0
  54. package/.agent/knowledge/lessons-learned.json +15 -0
  55. package/.agent/knowledge/lessons-learned.yaml +10 -15
  56. package/.agent/knowledge/metrics.json +66 -0
  57. package/.agent/knowledge/mistakes.yaml +74 -0
  58. package/.agent/knowledge/retention.yaml +165 -0
  59. package/.agent/knowledge/scans/scan_1769543882183.json +13 -0
  60. package/.agent/knowledge/scans/scan_1769543882322.json +13 -0
  61. package/.agent/knowledge/scans/scan_1769543882443.json +13 -0
  62. package/.agent/knowledge/scans/scan_1769543889157.json +13 -0
  63. package/.agent/knowledge/scans/scan_1769543950029.json +13 -0
  64. package/.agent/knowledge/scans/scan_1769696246716.json +13 -0
  65. package/.agent/knowledge/scans/scan_1769696247452.json +13 -0
  66. package/.agent/knowledge/scans/scan_1769698907767.json +13 -0
  67. package/.agent/knowledge/scans/scan_1769698934018.json +13 -0
  68. package/.agent/knowledge/scans/scan_1769699718013.json +13 -0
  69. package/.agent/knowledge/schema/common.schema.json +140 -0
  70. package/.agent/knowledge/schema/evolution-signals.schema.json +93 -0
  71. package/.agent/knowledge/schema/improvements.schema.json +132 -0
  72. package/.agent/knowledge/schema/mistakes.schema.json +138 -0
  73. package/.agent/knowledge/schema/settings.schema.json +102 -0
  74. package/.agent/knowledge/settings.yaml +5 -0
  75. package/.agent/knowledge/taxonomy.yaml +218 -0
  76. package/.agent/metrics/autopilot-metrics-schema.yaml +183 -0
  77. package/.agent/scripts-js/adaptive-workflow.js +504 -0
  78. package/.agent/scripts-js/auto_preview.js +166 -0
  79. package/.agent/scripts-js/autopilot-metrics.js +567 -0
  80. package/.agent/scripts-js/autopilot-runner.js +455 -0
  81. package/.agent/scripts-js/batch-skill-update.cjs +248 -0
  82. package/.agent/scripts-js/benchmark.cjs +147 -0
  83. package/.agent/scripts-js/checklist.js +174 -0
  84. package/.agent/scripts-js/compact-registry.cjs +79 -0
  85. package/.agent/scripts-js/execution-history.js +119 -0
  86. package/.agent/scripts-js/execution-policy.js +339 -0
  87. package/.agent/scripts-js/health-check.js +192 -0
  88. package/.agent/scripts-js/metrics-collector.js +364 -0
  89. package/.agent/scripts-js/metrics-dashboard.js +372 -0
  90. package/.agent/scripts-js/preflight-assessment.js +347 -0
  91. package/.agent/scripts-js/scaffold-nextjs.js +197 -0
  92. package/.agent/scripts-js/session_manager.js +200 -0
  93. package/.agent/scripts-js/skill-validator.js +318 -0
  94. package/.agent/scripts-js/utils/colors.js +56 -0
  95. package/.agent/scripts-js/utils/process-manager.js +148 -0
  96. package/.agent/scripts-js/utils/reporter.js +168 -0
  97. package/.agent/scripts-js/utils/runner.js +117 -0
  98. package/.agent/scripts-js/verify-skills.js +252 -0
  99. package/.agent/scripts-js/verify_all.js +242 -0
  100. package/.agent/scripts-js/workflow-engine.js +545 -0
  101. package/.agent/scripts-js/workflow-validator.js +417 -0
  102. package/.agent/skill-lock.json +343 -0
  103. package/.agent/skills/agent-patterns/SKILL.md +761 -0
  104. package/.agent/skills/auto-learner/SKILL.md +280 -0
  105. package/.agent/skills/auto-learner/dashboard/index.html +494 -0
  106. package/.agent/skills/auto-learner/references/learned-imports.md +50 -0
  107. package/.agent/skills/auto-learner/scripts/dashboard_server.js +224 -0
  108. package/.agent/skills/auto-learner/scripts/error_sensor.js +460 -0
  109. package/.agent/skills/auto-learner/scripts/learn_from_failure.js +225 -0
  110. package/.agent/skills/auto-learner/scripts/pattern_analyzer.js +594 -0
  111. package/.agent/skills/auto-learner/scripts/pre_execution_check.js +464 -0
  112. package/.agent/skills/auto-learner/scripts/user_correction_sensor.js +426 -0
  113. package/.agent/skills/debug-pro/SKILL.md +354 -0
  114. package/.agent/skills/execution-reporter/SKILL.md +195 -0
  115. package/.agent/skills/gitops/SKILL.md +303 -0
  116. package/.agent/skills/gitops/references/argocd-setup.md +134 -0
  117. package/.agent/skills/gitops/references/sync-policies.md +131 -0
  118. package/.agent/skills/lifecycle-orchestrator/SKILL.md +83 -0
  119. package/.agent/skills/mobile-design/SKILL.md +258 -50
  120. package/.agent/skills/mobile-developer/SKILL.md +205 -0
  121. package/.agent/skills/mobile-security-coder/SKILL.md +184 -0
  122. package/.agent/skills/observability/SKILL.md +397 -0
  123. package/.agent/skills/problem-checker/SKILL.md +195 -0
  124. package/.agent/skills/problem-checker/scripts/check_problems.js +261 -0
  125. package/.agent/skills/registry.backup.json +2251 -0
  126. package/.agent/skills/registry.json +940 -366
  127. package/.agent/skills/registry.phase1.backup.json +1278 -0
  128. package/.agent/skills/requirements-python.txt +25 -0
  129. package/.agent/skills/requirements.txt +96 -0
  130. package/.agent/skills/state-rollback/SKILL.md +240 -0
  131. package/.agent/skills/state-rollback/scripts/state_manager.js +282 -0
  132. package/.agent/skills/studio/SKILL.md +107 -0
  133. package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/styles.csv +16 -16
  134. package/.agent/skills/studio/scripts-js/core.js +344 -0
  135. package/.agent/skills/studio/scripts-js/design_system.js +952 -0
  136. package/.agent/skills/studio/scripts-js/jsconfig.json +27 -0
  137. package/.agent/skills/studio/scripts-js/search.js +191 -0
  138. package/.agent/skills/studio/scripts-js/types.d.ts +276 -0
  139. package/.agent/skills/studio/scripts-js/utils/component-specs.js +153 -0
  140. package/.agent/skills/studio/scripts-js/utils/config-loader.js +164 -0
  141. package/.agent/skills/studio/scripts-js/utils/css-templates.js +168 -0
  142. package/.agent/skills/studio/scripts-js/utils/css-validator.js +94 -0
  143. package/.agent/skills/studio/scripts-js/utils/csv-loader.js +55 -0
  144. package/.agent/skills/studio/scripts-js/utils/intelligent-overrides.js +128 -0
  145. package/.agent/skills/studio/scripts-js/utils/page-override-formatter.js +142 -0
  146. package/.agent/skills/studio/scripts-js/utils/page-type-detector.js +123 -0
  147. package/.agent/skills/studio/scripts-js/utils/search-cache.js +190 -0
  148. package/.agent/skills/studio/scripts-js/utils/text-utils.js +54 -0
  149. package/.agent/skills/typescript-expert/SKILL.md +429 -0
  150. package/.agent/skills/typescript-expert/references/tsconfig-strict.json +92 -0
  151. package/.agent/skills/typescript-expert/references/typescript-cheatsheet.md +383 -0
  152. package/.agent/skills/typescript-expert/references/utility-types.ts +335 -0
  153. package/.agent/skills/typescript-expert/scripts/ts_diagnostic.py +203 -0
  154. package/.agent/skills-audit-report.md +114 -0
  155. package/.agent/workflows/README.md +707 -0
  156. package/.agent/workflows/agent.md +77 -0
  157. package/.agent/workflows/alert.md +333 -0
  158. package/.agent/workflows/api.md +209 -0
  159. package/.agent/workflows/architect.md +148 -42
  160. package/.agent/workflows/auto-accept-process.md +275 -0
  161. package/.agent/workflows/autopilot.md +755 -92
  162. package/.agent/workflows/benchmark.md +221 -0
  163. package/.agent/workflows/boost.md +61 -26
  164. package/.agent/workflows/build.md +114 -54
  165. package/.agent/workflows/chronicle.md +19 -0
  166. package/.agent/workflows/diagnose.md +72 -30
  167. package/.agent/workflows/diagram.md +121 -0
  168. package/.agent/workflows/flags.md +149 -0
  169. package/.agent/workflows/forge.md +15 -5
  170. package/.agent/workflows/game.md +142 -0
  171. package/.agent/workflows/inspect.md +76 -40
  172. package/.agent/workflows/launch.md +183 -40
  173. package/.agent/workflows/mobile.md +106 -0
  174. package/.agent/workflows/monitor.md +283 -0
  175. package/.agent/workflows/optimize.md +220 -0
  176. package/.agent/workflows/pulse.md +113 -43
  177. package/.agent/workflows/stage.md +37 -10
  178. package/.agent/workflows/studio.md +35 -13
  179. package/.agent/workflows/think.md +19 -0
  180. package/.agent/workflows/validate.md +21 -1
  181. package/CHANGELOG.md +448 -24
  182. package/LICENSE +29 -7
  183. package/README.backup.md +540 -0
  184. package/README.md +870 -203
  185. package/docs/README.md +62 -0
  186. package/docs/archive/plan-v21.md +170 -0
  187. package/docs/getting-started.md +337 -0
  188. package/docs/guides/migration.md +70 -0
  189. package/docs/guides/publishing.md +88 -0
  190. package/docs/reference/python-strategy.md +393 -0
  191. package/docs/reference/scripts.md +56 -0
  192. package/docs/reference/skill-standard.md +457 -0
  193. package/package.json +51 -7
  194. package/packages/cli/.agent/knowledge/evolution-signals.json +51 -0
  195. package/packages/cli/.agent/knowledge/lessons-learned.yaml +25 -15
  196. package/packages/cli/.agent/knowledge/scans/scan_demo.json +58 -0
  197. package/packages/cli/README.md +21 -0
  198. package/packages/cli/bin/{ag-smart.js → agent.js} +37 -5
  199. package/packages/cli/examples/demo-violations.js +27 -0
  200. package/packages/cli/lib/audit.js +134 -49
  201. package/packages/cli/lib/audit.test.js +100 -0
  202. package/packages/cli/lib/auto-learn.js +1 -1
  203. package/packages/cli/lib/backup.js +138 -0
  204. package/packages/cli/lib/backup.test.js +78 -0
  205. package/packages/cli/lib/cognitive-lesson.js +476 -0
  206. package/packages/cli/lib/completion.js +149 -0
  207. package/packages/cli/lib/config.js +8 -2
  208. package/packages/cli/lib/eslint-fix.js +1 -1
  209. package/packages/cli/lib/evolution-signal.js +215 -0
  210. package/packages/cli/lib/export.js +86 -0
  211. package/packages/cli/lib/export.test.js +65 -0
  212. package/packages/cli/lib/fix.js +61 -2
  213. package/packages/cli/lib/fix.test.js +80 -0
  214. package/packages/cli/lib/gemini-export.js +83 -0
  215. package/packages/cli/lib/hooks/install-hooks.js +8 -32
  216. package/packages/cli/lib/hooks/lint-learn.js +2 -2
  217. package/packages/cli/lib/icons.js +93 -0
  218. package/packages/cli/lib/ignore.js +116 -0
  219. package/packages/cli/lib/ignore.test.js +58 -0
  220. package/packages/cli/lib/init.js +124 -0
  221. package/packages/cli/lib/knowledge-index.js +326 -0
  222. package/packages/cli/lib/knowledge-metrics.js +335 -0
  223. package/packages/cli/lib/knowledge-retention.js +398 -0
  224. package/packages/cli/lib/knowledge-validator.js +312 -0
  225. package/packages/cli/lib/learn.js +115 -33
  226. package/packages/cli/lib/migrate-to-v4.js +322 -0
  227. package/packages/cli/lib/proposals.js +199 -0
  228. package/packages/cli/lib/proposals.test.js +56 -0
  229. package/packages/cli/lib/recall.js +792 -41
  230. package/packages/cli/lib/recall.test.js +107 -0
  231. package/packages/cli/lib/selfevolution-bridge.js +167 -0
  232. package/packages/cli/lib/settings.js +203 -0
  233. package/packages/cli/lib/skill-learn.js +1 -1
  234. package/packages/cli/lib/stats.js +31 -42
  235. package/packages/cli/lib/stats.test.js +94 -0
  236. package/packages/cli/lib/ui/audit-ui.js +146 -0
  237. package/packages/cli/lib/ui/backup-ui.js +107 -0
  238. package/packages/cli/lib/ui/clack-helpers.js +317 -0
  239. package/packages/cli/lib/ui/common.js +83 -0
  240. package/packages/cli/lib/ui/completion-ui.js +126 -0
  241. package/packages/cli/lib/ui/custom-select.js +69 -0
  242. package/packages/cli/lib/ui/evolution-signals-ui.js +107 -0
  243. package/packages/cli/lib/ui/export-ui.js +94 -0
  244. package/packages/cli/lib/ui/fix-all-ui.js +191 -0
  245. package/packages/cli/lib/ui/help-ui.js +26 -0
  246. package/packages/cli/lib/ui/index.js +147 -0
  247. package/packages/cli/lib/ui/init-ui.js +56 -0
  248. package/packages/cli/lib/ui/knowledge-ui.js +55 -0
  249. package/packages/cli/lib/ui/learn-ui.js +706 -0
  250. package/packages/cli/lib/ui/lessons-ui.js +148 -0
  251. package/packages/cli/lib/ui/pretty.js +145 -0
  252. package/packages/cli/lib/ui/proposals-ui.js +99 -0
  253. package/packages/cli/lib/ui/recall-ui.js +342 -0
  254. package/packages/cli/lib/ui/routing-demo.js +79 -0
  255. package/packages/cli/lib/ui/routing-ui.js +325 -0
  256. package/packages/cli/lib/ui/settings-ui.js +103 -0
  257. package/packages/cli/lib/ui/stats-ui.js +73 -0
  258. package/packages/cli/lib/ui/watch-ui.js +236 -0
  259. package/packages/cli/lib/watcher.js +1 -1
  260. package/packages/cli/lib/watcher.test.js +85 -0
  261. package/packages/cli/node_modules/.package-lock.json +1529 -0
  262. package/packages/cli/node_modules/.vite/vitest/results.json +1 -0
  263. package/packages/cli/package-lock.json +1164 -688
  264. package/packages/cli/package.json +39 -10
  265. package/packages/cli/scripts/export-key.js +80 -0
  266. package/packages/cli/src/MIGRATION.md +418 -0
  267. package/packages/cli/src/README.md +367 -0
  268. package/packages/cli/src/core/evolution/evolution-signal.js +42 -0
  269. package/packages/cli/src/core/evolution/index.js +17 -0
  270. package/packages/cli/src/core/evolution/review-gate.js +40 -0
  271. package/packages/cli/src/core/evolution/signal-detector.js +137 -0
  272. package/packages/cli/src/core/evolution/signal-queue.js +79 -0
  273. package/packages/cli/src/core/evolution/threshold-checker.js +79 -0
  274. package/packages/cli/src/core/index.js +15 -0
  275. package/packages/cli/src/core/learning/cognitive-enhancer.js +282 -0
  276. package/packages/cli/src/core/learning/index.js +12 -0
  277. package/packages/cli/src/core/learning/lesson-synthesizer.js +83 -0
  278. package/packages/cli/src/core/scanning/index.js +14 -0
  279. package/packages/cli/src/data/index.js +13 -0
  280. package/packages/cli/src/data/repositories/index.js +8 -0
  281. package/packages/cli/src/data/repositories/lesson-repository.js +130 -0
  282. package/packages/cli/src/data/repositories/signal-repository.js +119 -0
  283. package/packages/cli/src/data/storage/index.js +8 -0
  284. package/packages/cli/src/data/storage/json-storage.js +64 -0
  285. package/packages/cli/src/data/storage/yaml-storage.js +66 -0
  286. package/packages/cli/src/infrastructure/index.js +13 -0
  287. package/packages/cli/src/presentation/formatters/skill-formatter.js +232 -0
  288. package/packages/cli/src/services/export-service.js +162 -0
  289. package/packages/cli/src/services/index.js +13 -0
  290. package/packages/cli/src/services/learning-service.js +99 -0
  291. package/packages/cli/tests/integration/evolution-signals.test.js +46 -0
  292. package/packages/cli/tests/integration/gemini-export.test.js +53 -0
  293. package/packages/cli/tests/integration/learning-service.test.js +33 -0
  294. package/packages/cli/tests/integration/signal-detector.test.js +29 -0
  295. package/packages/cli/tests/unit/cognitive-enhancer.test.js +56 -0
  296. package/packages/cli/tests/unit/lesson-synthesizer.test.js +84 -0
  297. package/packages/cli/tests/unit/skill-formatter.test.js +106 -0
  298. package/packages/cli/vitest.config.js +28 -1
  299. package/scripts/rebrand/README.md +472 -0
  300. package/scripts/rebrand/index.mjs +449 -0
  301. package/scripts/rebrand/v4.mjs +800 -0
  302. package/tests/e2e/studio-workflow.test.js +100 -0
  303. package/tests/e2e/validate-workflow.test.js +71 -0
  304. package/tests/scripts/colors.test.js +75 -0
  305. package/tests/scripts/component-specs.test.js +157 -0
  306. package/tests/scripts/config-loader.test.js +204 -0
  307. package/tests/scripts/core-bm25.test.js +112 -0
  308. package/tests/scripts/css-templates.test.js +123 -0
  309. package/tests/scripts/css-validator.test.js +137 -0
  310. package/tests/scripts/format-master-md.test.js +232 -0
  311. package/tests/scripts/integration/studio-integration.test.js +183 -0
  312. package/tests/scripts/intelligent-overrides.test.js +181 -0
  313. package/tests/scripts/page-override-formatter.test.js +227 -0
  314. package/tests/scripts/page-type-detector.test.js +141 -0
  315. package/tests/scripts/process-manager.test.js +79 -0
  316. package/tests/scripts/reporter.test.js +96 -0
  317. package/tests/scripts/runner.test.js +82 -0
  318. package/tests/scripts/search-cache.test.js +210 -0
  319. package/tests/scripts/text-utils.test.js +63 -0
  320. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
  321. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  322. package/.agent/.shared/ui-ux-pro-max/scripts/core.py +0 -258
  323. package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +0 -1067
  324. package/.agent/.shared/ui-ux-pro-max/scripts/search.py +0 -106
  325. package/.agent/agents/mobile-developer.md +0 -377
  326. package/.agent/agents/penetration-tester.md +0 -188
  327. package/.agent/agents/product-owner.md +0 -95
  328. package/.agent/agents/project-planner.md +0 -406
  329. package/.agent/agents/qa-automation-engineer.md +0 -103
  330. package/.agent/agents/security-auditor.md +0 -170
  331. package/.agent/rules/GEMINI.md +0 -253
  332. package/.agent/scripts/auto_preview.py +0 -148
  333. package/.agent/scripts/checklist.py +0 -217
  334. package/.agent/scripts/session_manager.py +0 -120
  335. package/.agent/scripts/verify_all.py +0 -327
  336. package/.agent/skills/aesthetic/SKILL.md +0 -121
  337. package/.agent/skills/aesthetic/assets/design-guideline-template.md +0 -163
  338. package/.agent/skills/aesthetic/assets/design-story-template.md +0 -135
  339. package/.agent/skills/aesthetic/references/design-principles.md +0 -62
  340. package/.agent/skills/aesthetic/references/design-resources.md +0 -75
  341. package/.agent/skills/aesthetic/references/micro-interactions.md +0 -53
  342. package/.agent/skills/aesthetic/references/storytelling-design.md +0 -50
  343. package/.agent/skills/api-patterns/SKILL.md +0 -81
  344. package/.agent/skills/api-patterns/rules/api-style.md +0 -42
  345. package/.agent/skills/api-patterns/rules/auth.md +0 -24
  346. package/.agent/skills/api-patterns/rules/documentation.md +0 -26
  347. package/.agent/skills/api-patterns/rules/graphql.md +0 -41
  348. package/.agent/skills/api-patterns/rules/rate-limiting.md +0 -31
  349. package/.agent/skills/api-patterns/rules/response.md +0 -37
  350. package/.agent/skills/api-patterns/rules/rest.md +0 -40
  351. package/.agent/skills/api-patterns/rules/security-testing.md +0 -122
  352. package/.agent/skills/api-patterns/rules/trpc.md +0 -41
  353. package/.agent/skills/api-patterns/rules/versioning.md +0 -22
  354. package/.agent/skills/api-patterns/scripts/api_validator.py +0 -211
  355. package/.agent/skills/app-builder/SKILL.md +0 -75
  356. package/.agent/skills/app-builder/agent-coordination.md +0 -71
  357. package/.agent/skills/app-builder/feature-building.md +0 -53
  358. package/.agent/skills/app-builder/project-detection.md +0 -34
  359. package/.agent/skills/app-builder/scaffolding.md +0 -118
  360. package/.agent/skills/app-builder/tech-stack.md +0 -40
  361. package/.agent/skills/app-builder/templates/SKILL.md +0 -39
  362. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +0 -76
  363. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +0 -92
  364. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +0 -88
  365. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +0 -88
  366. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +0 -83
  367. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +0 -90
  368. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +0 -90
  369. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +0 -82
  370. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +0 -100
  371. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +0 -106
  372. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +0 -101
  373. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +0 -83
  374. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +0 -93
  375. package/.agent/skills/architecture/SKILL.md +0 -55
  376. package/.agent/skills/architecture/context-discovery.md +0 -43
  377. package/.agent/skills/architecture/examples.md +0 -94
  378. package/.agent/skills/architecture/pattern-selection.md +0 -68
  379. package/.agent/skills/architecture/patterns-reference.md +0 -50
  380. package/.agent/skills/architecture/trade-off-analysis.md +0 -77
  381. package/.agent/skills/bash-linux/SKILL.md +0 -199
  382. package/.agent/skills/behavioral-modes/SKILL.md +0 -242
  383. package/.agent/skills/brainstorming/SKILL.md +0 -163
  384. package/.agent/skills/brainstorming/dynamic-questioning.md +0 -350
  385. package/.agent/skills/clean-code/SKILL.md +0 -201
  386. package/.agent/skills/code-review-checklist/SKILL.md +0 -109
  387. package/.agent/skills/code-reviewer/.skill-source.json +0 -8
  388. package/.agent/skills/code-reviewer/SKILL.md +0 -32
  389. package/.agent/skills/code-reviewer/enforcement/checklists/backend-api-review-checklist.md +0 -5
  390. package/.agent/skills/code-reviewer/examples/approved-pr/review-output.md +0 -76
  391. package/.agent/skills/code-reviewer/examples/rejected-pr/review-output.md +0 -99
  392. package/.agent/skills/code-reviewer/examples/scenarios.md +0 -3
  393. package/.agent/skills/code-reviewer/metadata/doctrine-mapping.yaml +0 -167
  394. package/.agent/skills/code-reviewer/metadata/intent-triggers.yaml +0 -41
  395. package/.agent/skills/code-reviewer/resources/links.md +0 -59
  396. package/.agent/skills/code-reviewer/scripts/audit_pr.js +0 -8
  397. package/.agent/skills/code-reviewer/scripts/audit_pr.v2.js +0 -417
  398. package/.agent/skills/code-reviewer/scripts/validate_doctrine.js +0 -307
  399. package/.agent/skills/context-engineering/SKILL.md +0 -86
  400. package/.agent/skills/context-engineering/references/context-compression.md +0 -84
  401. package/.agent/skills/context-engineering/references/context-degradation.md +0 -93
  402. package/.agent/skills/context-engineering/references/context-fundamentals.md +0 -75
  403. package/.agent/skills/context-engineering/references/context-optimization.md +0 -82
  404. package/.agent/skills/context-engineering/references/evaluation.md +0 -89
  405. package/.agent/skills/context-engineering/references/memory-systems.md +0 -88
  406. package/.agent/skills/context-engineering/references/multi-agent-patterns.md +0 -90
  407. package/.agent/skills/context-engineering/references/project-development.md +0 -97
  408. package/.agent/skills/context-engineering/references/tool-design.md +0 -86
  409. package/.agent/skills/context-engineering/scripts/compression_evaluator.py +0 -329
  410. package/.agent/skills/context-engineering/scripts/context_analyzer.py +0 -294
  411. package/.agent/skills/database-design/SKILL.md +0 -52
  412. package/.agent/skills/database-design/database-selection.md +0 -43
  413. package/.agent/skills/database-design/indexing.md +0 -39
  414. package/.agent/skills/database-design/migrations.md +0 -48
  415. package/.agent/skills/database-design/optimization.md +0 -36
  416. package/.agent/skills/database-design/orm-selection.md +0 -30
  417. package/.agent/skills/database-design/schema-design.md +0 -56
  418. package/.agent/skills/database-design/scripts/schema_validator.py +0 -172
  419. package/.agent/skills/debugging/SKILL.md +0 -42
  420. package/.agent/skills/deployment-procedures/SKILL.md +0 -241
  421. package/.agent/skills/doc.md +0 -177
  422. package/.agent/skills/document-skills/SKILL.md +0 -49
  423. package/.agent/skills/document-skills/docx/LICENSE.txt +0 -30
  424. package/.agent/skills/document-skills/docx/SKILL.md +0 -197
  425. package/.agent/skills/document-skills/docx/docx-js.md +0 -350
  426. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  427. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  428. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  429. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  430. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  431. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  432. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  433. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  434. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  435. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  436. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  437. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  438. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  439. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  440. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  441. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  442. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  443. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  444. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  445. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  446. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  447. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  448. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  449. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  450. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  451. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  452. package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  453. package/.agent/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  454. package/.agent/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  455. package/.agent/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  456. package/.agent/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  457. package/.agent/skills/document-skills/docx/ooxml/schemas/mce/mc.xsd +0 -75
  458. package/.agent/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
  459. package/.agent/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
  460. package/.agent/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
  461. package/.agent/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
  462. package/.agent/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
  463. package/.agent/skills/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  464. package/.agent/skills/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
  465. package/.agent/skills/document-skills/docx/ooxml/scripts/pack.py +0 -159
  466. package/.agent/skills/document-skills/docx/ooxml/scripts/unpack.py +0 -29
  467. package/.agent/skills/document-skills/docx/ooxml/scripts/validate.py +0 -69
  468. package/.agent/skills/document-skills/docx/ooxml/scripts/validation/__init__.py +0 -15
  469. package/.agent/skills/document-skills/docx/ooxml/scripts/validation/base.py +0 -951
  470. package/.agent/skills/document-skills/docx/ooxml/scripts/validation/docx.py +0 -274
  471. package/.agent/skills/document-skills/docx/ooxml/scripts/validation/pptx.py +0 -315
  472. package/.agent/skills/document-skills/docx/ooxml/scripts/validation/redlining.py +0 -279
  473. package/.agent/skills/document-skills/docx/ooxml.md +0 -610
  474. package/.agent/skills/document-skills/docx/scripts/__init__.py +0 -1
  475. package/.agent/skills/document-skills/docx/scripts/document.py +0 -1276
  476. package/.agent/skills/document-skills/docx/scripts/templates/comments.xml +0 -3
  477. package/.agent/skills/document-skills/docx/scripts/templates/commentsExtended.xml +0 -3
  478. package/.agent/skills/document-skills/docx/scripts/templates/commentsExtensible.xml +0 -3
  479. package/.agent/skills/document-skills/docx/scripts/templates/commentsIds.xml +0 -3
  480. package/.agent/skills/document-skills/docx/scripts/templates/people.xml +0 -3
  481. package/.agent/skills/document-skills/docx/scripts/utilities.py +0 -374
  482. package/.agent/skills/document-skills/pdf/LICENSE.txt +0 -30
  483. package/.agent/skills/document-skills/pdf/SKILL.md +0 -294
  484. package/.agent/skills/document-skills/pdf/forms.md +0 -205
  485. package/.agent/skills/document-skills/pdf/reference.md +0 -612
  486. package/.agent/skills/document-skills/pdf/scripts/check_bounding_boxes.py +0 -70
  487. package/.agent/skills/document-skills/pdf/scripts/check_bounding_boxes_test.py +0 -226
  488. package/.agent/skills/document-skills/pdf/scripts/check_fillable_fields.py +0 -12
  489. package/.agent/skills/document-skills/pdf/scripts/convert_pdf_to_images.py +0 -35
  490. package/.agent/skills/document-skills/pdf/scripts/create_validation_image.py +0 -41
  491. package/.agent/skills/document-skills/pdf/scripts/extract_form_field_info.py +0 -152
  492. package/.agent/skills/document-skills/pdf/scripts/fill_fillable_fields.py +0 -114
  493. package/.agent/skills/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -108
  494. package/.agent/skills/document-skills/pptx/LICENSE.txt +0 -30
  495. package/.agent/skills/document-skills/pptx/SKILL.md +0 -484
  496. package/.agent/skills/document-skills/pptx/html2pptx.md +0 -625
  497. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  498. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  499. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  500. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  501. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  502. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  503. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  504. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  505. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  506. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  507. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  508. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  509. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  510. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  511. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  512. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  513. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  514. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  515. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  516. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  517. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  518. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  519. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  520. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  521. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  522. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  523. package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  524. package/.agent/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  525. package/.agent/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  526. package/.agent/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  527. package/.agent/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  528. package/.agent/skills/document-skills/pptx/ooxml/schemas/mce/mc.xsd +0 -75
  529. package/.agent/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
  530. package/.agent/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
  531. package/.agent/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
  532. package/.agent/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
  533. package/.agent/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
  534. package/.agent/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  535. package/.agent/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
  536. package/.agent/skills/document-skills/pptx/ooxml/scripts/pack.py +0 -159
  537. package/.agent/skills/document-skills/pptx/ooxml/scripts/unpack.py +0 -29
  538. package/.agent/skills/document-skills/pptx/ooxml/scripts/validate.py +0 -69
  539. package/.agent/skills/document-skills/pptx/ooxml/scripts/validation/__init__.py +0 -15
  540. package/.agent/skills/document-skills/pptx/ooxml/scripts/validation/base.py +0 -951
  541. package/.agent/skills/document-skills/pptx/ooxml/scripts/validation/docx.py +0 -274
  542. package/.agent/skills/document-skills/pptx/ooxml/scripts/validation/pptx.py +0 -315
  543. package/.agent/skills/document-skills/pptx/ooxml/scripts/validation/redlining.py +0 -279
  544. package/.agent/skills/document-skills/pptx/ooxml.md +0 -427
  545. package/.agent/skills/document-skills/pptx/scripts/html2pptx.js +0 -979
  546. package/.agent/skills/document-skills/pptx/scripts/inventory.py +0 -1020
  547. package/.agent/skills/document-skills/pptx/scripts/rearrange.py +0 -231
  548. package/.agent/skills/document-skills/pptx/scripts/replace.py +0 -385
  549. package/.agent/skills/document-skills/pptx/scripts/thumbnail.py +0 -450
  550. package/.agent/skills/document-skills/xlsx/LICENSE.txt +0 -30
  551. package/.agent/skills/document-skills/xlsx/SKILL.md +0 -289
  552. package/.agent/skills/document-skills/xlsx/recalc.py +0 -178
  553. package/.agent/skills/documentation-templates/SKILL.md +0 -194
  554. package/.agent/skills/frontend/SKILL.md +0 -38
  555. package/.agent/skills/frontend/rules/_sections.md +0 -46
  556. package/.agent/skills/frontend/rules/_template.md +0 -28
  557. package/.agent/skills/frontend/rules/advanced-event-handler-refs.md +0 -55
  558. package/.agent/skills/frontend/rules/advanced-init-once.md +0 -42
  559. package/.agent/skills/frontend/rules/advanced-use-latest.md +0 -39
  560. package/.agent/skills/frontend/rules/async-api-routes.md +0 -38
  561. package/.agent/skills/frontend/rules/async-defer-await.md +0 -80
  562. package/.agent/skills/frontend/rules/async-dependencies.md +0 -51
  563. package/.agent/skills/frontend/rules/async-parallel.md +0 -28
  564. package/.agent/skills/frontend/rules/async-suspense-boundaries.md +0 -99
  565. package/.agent/skills/frontend/rules/bundle-barrel-imports.md +0 -59
  566. package/.agent/skills/frontend/rules/bundle-conditional.md +0 -31
  567. package/.agent/skills/frontend/rules/bundle-defer-third-party.md +0 -49
  568. package/.agent/skills/frontend/rules/bundle-dynamic-imports.md +0 -35
  569. package/.agent/skills/frontend/rules/bundle-preload.md +0 -50
  570. package/.agent/skills/frontend/rules/client-event-listeners.md +0 -74
  571. package/.agent/skills/frontend/rules/client-localstorage-schema.md +0 -71
  572. package/.agent/skills/frontend/rules/client-passive-event-listeners.md +0 -48
  573. package/.agent/skills/frontend/rules/client-swr-dedup.md +0 -56
  574. package/.agent/skills/frontend/rules/js-batch-dom-css.md +0 -107
  575. package/.agent/skills/frontend/rules/js-cache-function-results.md +0 -80
  576. package/.agent/skills/frontend/rules/js-cache-property-access.md +0 -28
  577. package/.agent/skills/frontend/rules/js-cache-storage.md +0 -70
  578. package/.agent/skills/frontend/rules/js-combine-iterations.md +0 -32
  579. package/.agent/skills/frontend/rules/js-early-exit.md +0 -50
  580. package/.agent/skills/frontend/rules/js-hoist-regexp.md +0 -45
  581. package/.agent/skills/frontend/rules/js-index-maps.md +0 -37
  582. package/.agent/skills/frontend/rules/js-length-check-first.md +0 -49
  583. package/.agent/skills/frontend/rules/js-min-max-loop.md +0 -82
  584. package/.agent/skills/frontend/rules/js-set-map-lookups.md +0 -24
  585. package/.agent/skills/frontend/rules/js-tosorted-immutable.md +0 -57
  586. package/.agent/skills/frontend/rules/rendering-activity.md +0 -26
  587. package/.agent/skills/frontend/rules/rendering-animate-svg-wrapper.md +0 -47
  588. package/.agent/skills/frontend/rules/rendering-conditional-render.md +0 -40
  589. package/.agent/skills/frontend/rules/rendering-content-visibility.md +0 -38
  590. package/.agent/skills/frontend/rules/rendering-hoist-jsx.md +0 -46
  591. package/.agent/skills/frontend/rules/rendering-hydration-no-flicker.md +0 -82
  592. package/.agent/skills/frontend/rules/rendering-hydration-suppress-warning.md +0 -30
  593. package/.agent/skills/frontend/rules/rendering-svg-precision.md +0 -28
  594. package/.agent/skills/frontend/rules/rendering-usetransition-loading.md +0 -75
  595. package/.agent/skills/frontend/rules/rerender-defer-reads.md +0 -39
  596. package/.agent/skills/frontend/rules/rerender-dependencies.md +0 -45
  597. package/.agent/skills/frontend/rules/rerender-derived-state-no-effect.md +0 -40
  598. package/.agent/skills/frontend/rules/rerender-derived-state.md +0 -29
  599. package/.agent/skills/frontend/rules/rerender-functional-setstate.md +0 -74
  600. package/.agent/skills/frontend/rules/rerender-lazy-state-init.md +0 -58
  601. package/.agent/skills/frontend/rules/rerender-memo-with-default-value.md +0 -38
  602. package/.agent/skills/frontend/rules/rerender-memo.md +0 -44
  603. package/.agent/skills/frontend/rules/rerender-move-effect-to-event.md +0 -45
  604. package/.agent/skills/frontend/rules/rerender-simple-expression-in-memo.md +0 -35
  605. package/.agent/skills/frontend/rules/rerender-transitions.md +0 -40
  606. package/.agent/skills/frontend/rules/rerender-use-ref-transient-values.md +0 -73
  607. package/.agent/skills/frontend/rules/schema.json +0 -34
  608. package/.agent/skills/frontend/rules/server-after-nonblocking.md +0 -73
  609. package/.agent/skills/frontend/rules/server-auth-actions.md +0 -96
  610. package/.agent/skills/frontend/rules/server-cache-lru.md +0 -41
  611. package/.agent/skills/frontend/rules/server-cache-react.md +0 -76
  612. package/.agent/skills/frontend/rules/server-dedup-props.md +0 -65
  613. package/.agent/skills/frontend/rules/server-parallel-fetching.md +0 -83
  614. package/.agent/skills/frontend/rules/server-serialization.md +0 -38
  615. package/.agent/skills/frontend-design/SKILL.md +0 -33
  616. package/.agent/skills/frontend-design/rules/animation-guide.md +0 -331
  617. package/.agent/skills/frontend-design/rules/color-system.md +0 -311
  618. package/.agent/skills/frontend-design/rules/decision-trees.md +0 -418
  619. package/.agent/skills/frontend-design/rules/motion-graphics.md +0 -306
  620. package/.agent/skills/frontend-design/rules/typography-system.md +0 -345
  621. package/.agent/skills/frontend-design/rules/ux-psychology.md +0 -541
  622. package/.agent/skills/frontend-design/rules/visual-effects.md +0 -383
  623. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +0 -183
  624. package/.agent/skills/frontend-design/scripts/ux_audit.py +0 -722
  625. package/.agent/skills/geo-fundamentals/SKILL.md +0 -156
  626. package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +0 -289
  627. package/.agent/skills/git-conventions/.skill-source.json +0 -8
  628. package/.agent/skills/git-conventions/SKILL.md +0 -28
  629. package/.agent/skills/git-conventions/enforcement/commit-validation-rules.md +0 -55
  630. package/.agent/skills/git-conventions/examples/bad-commits.md +0 -201
  631. package/.agent/skills/git-conventions/examples/good-commits.md +0 -135
  632. package/.agent/skills/git-conventions/metadata/commit-config.yaml +0 -79
  633. package/.agent/skills/git-conventions/metadata/intent-triggers.yaml +0 -25
  634. package/.agent/skills/git-conventions/metadata/scope-mapping.yaml +0 -83
  635. package/.agent/skills/git-conventions/resources/BEST_PRACTICES.md +0 -121
  636. package/.agent/skills/git-conventions/resources/references.md +0 -53
  637. package/.agent/skills/git-conventions/scripts/format-commit.js +0 -393
  638. package/.agent/skills/git-conventions/scripts/validate-commit-msg.sh +0 -27
  639. package/.agent/skills/governance/.skill-source.json +0 -8
  640. package/.agent/skills/governance/CHANGELOG.md +0 -222
  641. package/.agent/skills/governance/README.md +0 -250
  642. package/.agent/skills/governance/SKILL.md +0 -199
  643. package/.agent/skills/governance/VERSION +0 -4
  644. package/.agent/skills/governance/examples/violation-backend-mutation/after.tsx +0 -59
  645. package/.agent/skills/governance/examples/violation-backend-mutation/before.tsx +0 -42
  646. package/.agent/skills/governance/examples/violation-backend-mutation/explanation.md +0 -87
  647. package/.agent/skills/governance/examples/violation-chart-injection/after.tsx +0 -99
  648. package/.agent/skills/governance/examples/violation-chart-injection/before.tsx +0 -57
  649. package/.agent/skills/governance/examples/violation-chart-injection/explanation.md +0 -116
  650. package/.agent/skills/governance/knowledge/lessons-learned.yaml +0 -3
  651. package/.agent/skills/governance/metadata/precedence.yaml +0 -117
  652. package/.agent/skills/governance/metadata/scope-map.yaml +0 -156
  653. package/.agent/skills/governance/proposals/v1.1-change-proposal-template.md +0 -197
  654. package/.agent/skills/governance/resources/AUTHORITY_MODEL.md +0 -111
  655. package/.agent/skills/governance/resources/ENFORCEMENT_GUIDE.md +0 -242
  656. package/.agent/skills/governance/resources/LOAD_ORDER.md +0 -82
  657. package/.agent/skills/governance/rules/constitution/coinpika-master-constitution.md +0 -206
  658. package/.agent/skills/governance/rules/doctrines/architecture/coinpika-architecture-doctrine.md +0 -184
  659. package/.agent/skills/governance/rules/doctrines/backend/coinpika-backend-data-engine-doctrine.md +0 -214
  660. package/.agent/skills/governance/rules/doctrines/commercial/coinpika-commercial-guardrails-doctrine.md +0 -192
  661. package/.agent/skills/governance/rules/doctrines/data/coinpika-chart-data-doctrine.md +0 -198
  662. package/.agent/skills/governance/rules/doctrines/frontend/coinpika-frontend-mobile-doctrine.md +0 -165
  663. package/.agent/skills/governance/rules/doctrines/frontend/coinpika-swipe-tabs-doctrine.md +0 -172
  664. package/.agent/skills/governance/rules/doctrines/learning/coinpika-learning-engine-doctrine.md +0 -188
  665. package/.agent/skills/governance/rules/doctrines/performance/coinpika-performance-doctrine.md +0 -176
  666. package/.agent/skills/governance/rules/doctrines/review/coinpika-code-review-doctrine.md +0 -170
  667. package/.agent/skills/governance/rules/enforcement/agents/coinpika-agent-enforcement-protocol.md +0 -214
  668. package/.agent/skills/governance/rules/enforcement/agents/coinpika-agent-system-prompt.md +0 -192
  669. package/.agent/skills/governance/rules/enforcement/checklists/backend-api-review-checklist.md +0 -127
  670. package/.agent/skills/governance/rules/enforcement/checklists/chart-component-review-checklist.md +0 -143
  671. package/.agent/skills/governance/rules/enforcement/checklists/coinpika-frontend-gesture-review-checklist.md +0 -190
  672. package/.agent/skills/governance/rules/enforcement/playbooks/doctrine-violation-playbook.md +0 -232
  673. package/.agent/skills/governance/scripts/audit_pr.js +0 -218
  674. package/.agent/skills/governance/scripts/learn.js +0 -161
  675. package/.agent/skills/governance/scripts/validate_doctrine.js +0 -286
  676. package/.agent/skills/i18n-localization/SKILL.md +0 -154
  677. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +0 -241
  678. package/.agent/skills/intelligent-routing/SKILL.md +0 -335
  679. package/.agent/skills/lint-and-validate/SKILL.md +0 -45
  680. package/.agent/skills/lint-and-validate/scripts/lint_runner.py +0 -172
  681. package/.agent/skills/lint-and-validate/scripts/type_coverage.py +0 -173
  682. package/.agent/skills/mcp-builder/SKILL.md +0 -176
  683. package/.agent/skills/mermaidjs-v11/SKILL.md +0 -115
  684. package/.agent/skills/mermaidjs-v11/references/cli-usage.md +0 -228
  685. package/.agent/skills/mermaidjs-v11/references/configuration.md +0 -232
  686. package/.agent/skills/mermaidjs-v11/references/diagram-types.md +0 -315
  687. package/.agent/skills/mermaidjs-v11/references/examples.md +0 -344
  688. package/.agent/skills/mermaidjs-v11/references/integration.md +0 -310
  689. package/.agent/skills/mobile-design/references/anti-patterns.md +0 -46
  690. package/.agent/skills/nextjs-best-practices/SKILL.md +0 -203
  691. package/.agent/skills/nodejs-best-practices/SKILL.md +0 -76
  692. package/.agent/skills/nodejs-best-practices/references/architecture-patterns.md +0 -34
  693. package/.agent/skills/nodejs-best-practices/references/async-patterns.md +0 -32
  694. package/.agent/skills/nodejs-best-practices/references/error-handling.md +0 -39
  695. package/.agent/skills/nodejs-best-practices/references/framework-selection.md +0 -39
  696. package/.agent/skills/nodejs-best-practices/references/runtime-modules.md +0 -33
  697. package/.agent/skills/nodejs-best-practices/references/testing-strategy.md +0 -25
  698. package/.agent/skills/nodejs-best-practices/references/validation-security.md +0 -45
  699. package/.agent/skills/parallel-agents/SKILL.md +0 -175
  700. package/.agent/skills/performance-profiling/SKILL.md +0 -143
  701. package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +0 -76
  702. package/.agent/skills/plan-writing/SKILL.md +0 -152
  703. package/.agent/skills/powershell-windows/SKILL.md +0 -167
  704. package/.agent/skills/problem-solving/ABOUT.md +0 -40
  705. package/.agent/skills/problem-solving/SKILL.md +0 -69
  706. package/.agent/skills/problem-solving/collision-zone-thinking/SKILL.md +0 -62
  707. package/.agent/skills/problem-solving/inversion-exercise/SKILL.md +0 -58
  708. package/.agent/skills/problem-solving/meta-pattern-recognition/SKILL.md +0 -54
  709. package/.agent/skills/problem-solving/scale-game/SKILL.md +0 -63
  710. package/.agent/skills/problem-solving/simplification-cascades/SKILL.md +0 -76
  711. package/.agent/skills/problem-solving/when-stuck/SKILL.md +0 -88
  712. package/.agent/skills/python-patterns/SKILL.md +0 -80
  713. package/.agent/skills/python-patterns/references/async-patterns.md +0 -57
  714. package/.agent/skills/python-patterns/references/django-patterns.md +0 -41
  715. package/.agent/skills/python-patterns/references/fastapi-patterns.md +0 -54
  716. package/.agent/skills/python-patterns/references/framework-selection.md +0 -39
  717. package/.agent/skills/python-patterns/references/project-structure.md +0 -80
  718. package/.agent/skills/python-patterns/references/testing-patterns.md +0 -34
  719. package/.agent/skills/python-patterns/references/type-hints.md +0 -51
  720. package/.agent/skills/react-patterns/SKILL.md +0 -198
  721. package/.agent/skills/red-team-tactics/SKILL.md +0 -199
  722. package/.agent/skills/seo-fundamentals/SKILL.md +0 -129
  723. package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +0 -219
  724. package/.agent/skills/sequential-thinking/README.md +0 -118
  725. package/.agent/skills/sequential-thinking/SKILL.md +0 -93
  726. package/.agent/skills/sequential-thinking/references/advanced.md +0 -122
  727. package/.agent/skills/sequential-thinking/references/examples.md +0 -274
  728. package/.agent/skills/server-management/SKILL.md +0 -161
  729. package/.agent/skills/skill-creator/LICENSE.txt +0 -202
  730. package/.agent/skills/skill-creator/SKILL.md +0 -237
  731. package/.agent/skills/skill-creator/scripts/init_skill.py +0 -303
  732. package/.agent/skills/skill-creator/scripts/package_skill.py +0 -110
  733. package/.agent/skills/skill-creator/scripts/quick_validate.py +0 -65
  734. package/.agent/skills/systematic-debugging/SKILL.md +0 -109
  735. package/.agent/skills/tailwind-patterns/SKILL.md +0 -269
  736. package/.agent/skills/tdd-workflow/SKILL.md +0 -149
  737. package/.agent/skills/testing-patterns/SKILL.md +0 -178
  738. package/.agent/skills/testing-patterns/scripts/test_runner.py +0 -219
  739. package/.agent/skills/vulnerability-scanner/SKILL.md +0 -276
  740. package/.agent/skills/vulnerability-scanner/checklists.md +0 -121
  741. package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +0 -458
  742. package/.agent/skills/webapp-testing/SKILL.md +0 -187
  743. package/.agent/skills/webapp-testing/scripts/playwright_runner.py +0 -173
  744. package/.editorconfig +0 -21
  745. package/.github/workflows/release.yml +0 -39
  746. package/docs/PLAN-consolidation-final.md +0 -14
  747. package/docs/PLAN-integration.md +0 -28
  748. package/docs/PLAN-rebrand-agent-skills-kit.md +0 -104
  749. package/docs/PLAN-refactor.md +0 -48
  750. package/docs/PYTHON_SCRIPTS.md +0 -55
  751. package/docs/awf-user-guide.md +0 -436
  752. package/packages/cli/bin/ag-smart.v1.js +0 -78
  753. package/packages/cli/lib/audit.v2.js +0 -151
  754. package/packages/cli/lib/auto_preview.py +0 -148
  755. package/packages/cli/lib/checklist.py +0 -222
  756. package/packages/cli/lib/learn.v2.js +0 -255
  757. package/packages/cli/lib/recall.v2.js +0 -252
  758. package/packages/cli/lib/session_manager.py +0 -120
  759. package/packages/cli/lib/verify_all.py +0 -327
  760. /package/.agent/skills/{debugging → debug-pro}/defense-in-depth/SKILL.md +0 -0
  761. /package/.agent/skills/{debugging → debug-pro}/root-cause-tracing/SKILL.md +0 -0
  762. /package/.agent/skills/{debugging → debug-pro}/root-cause-tracing/find-polluter.sh +0 -0
  763. /package/.agent/skills/{debugging → debug-pro}/verification-before-completion/SKILL.md +0 -0
  764. /package/.agent/skills/mobile-design/{references/decision-trees.md → decision-trees.md} +0 -0
  765. /package/.agent/skills/mobile-design/{references/mobile-backend.md → mobile-backend.md} +0 -0
  766. /package/.agent/skills/mobile-design/{references/mobile-color-system.md → mobile-color-system.md} +0 -0
  767. /package/.agent/skills/mobile-design/{references/mobile-debugging.md → mobile-debugging.md} +0 -0
  768. /package/.agent/skills/mobile-design/{references/mobile-design-thinking.md → mobile-design-thinking.md} +0 -0
  769. /package/.agent/skills/mobile-design/{references/mobile-navigation.md → mobile-navigation.md} +0 -0
  770. /package/.agent/skills/mobile-design/{references/mobile-performance.md → mobile-performance.md} +0 -0
  771. /package/.agent/skills/mobile-design/{references/mobile-testing.md → mobile-testing.md} +0 -0
  772. /package/.agent/skills/mobile-design/{references/mobile-typography.md → mobile-typography.md} +0 -0
  773. /package/.agent/skills/mobile-design/{references/platform-android.md → platform-android.md} +0 -0
  774. /package/.agent/skills/mobile-design/{references/platform-ios.md → platform-ios.md} +0 -0
  775. /package/.agent/skills/mobile-design/{references/touch-psychology.md → touch-psychology.md} +0 -0
  776. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/charts.csv +0 -0
  777. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/colors.csv +0 -0
  778. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/icons.csv +0 -0
  779. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/landing.csv +0 -0
  780. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/products.csv +0 -0
  781. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/prompts.csv +0 -0
  782. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/react-performance.csv +0 -0
  783. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/stacks/flutter.csv +0 -0
  784. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/stacks/html-tailwind.csv +0 -0
  785. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/stacks/jetpack-compose.csv +0 -0
  786. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/stacks/nextjs.csv +0 -0
  787. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/stacks/nuxt-ui.csv +0 -0
  788. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/stacks/nuxtjs.csv +0 -0
  789. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/stacks/react-native.csv +0 -0
  790. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/stacks/react.csv +0 -0
  791. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/stacks/shadcn.csv +0 -0
  792. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/stacks/svelte.csv +0 -0
  793. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/stacks/swiftui.csv +0 -0
  794. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/stacks/vue.csv +0 -0
  795. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/typography.csv +0 -0
  796. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/ui-reasoning.csv +0 -0
  797. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/ux-guidelines.csv +0 -0
  798. /package/.agent/{.shared/ui-ux-pro-max → skills/studio}/data/web-interface.csv +0 -0
  799. /package/docs/{PATTERNS_REFERENCE.md → archive/patterns-anthropic.md} +0 -0
  800. /package/docs/{context-engineering-guide.md → guides/context-engineering.md} +0 -0
  801. /package/{VERSIONING.md → docs/guides/versioning.md} +0 -0
@@ -1,75 +1,826 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Smart Recall Script
3
+ * Smart Recall Script - ESM Version (Production-Ready)
4
4
  *
5
5
  * The "Memory" script. Checks code against learned lessons.
6
- * Usage: node recall.js <file_path>
6
+ * Features:
7
+ * - Streaming file scanner (multiple files)
8
+ * - Context-aware pattern matching (shows line numbers)
9
+ * - Hit tracking for frequency analysis
10
+ *
11
+ * Usage:
12
+ * node recall.js <file_path>
13
+ * node recall.js <directory> --recursive
14
+ */
15
+
16
+ import fs from "fs";
17
+ import path from "path";
18
+ import yaml from "js-yaml";
19
+ import ora from "ora";
20
+ import { KNOWLEDGE_DIR, LESSONS_PATH, DEBUG, cwd, VERSION } from "./config.js";
21
+ import { icons, safeText } from "./icons.js";
22
+ import { loadIgnorePatterns, isIgnored } from "./ignore.js";
23
+ import pretty from "./ui/pretty.js";
24
+ import * as p from "@clack/prompts";
25
+ import pc from "picocolors";
26
+ import { checkEvolutionThreshold, queueEvolutionSignal } from "./evolution-signal.js";
27
+ import { isAutoUpdatingEnabled, getUpdateThreshold } from "./settings.js";
28
+
29
+ // ============================================================================
30
+ // PERCEPTION LAYER - Cognitive Enhancements
31
+ // ============================================================================
32
+
33
+ /**
34
+ * Infer intent from lesson metadata
35
+ * @param {object} lesson - Raw lesson from YAML
36
+ * @returns {string} - Intent: 'prevent', 'warn', 'optimize'
37
+ */
38
+ function inferIntent(lesson) {
39
+ if (lesson.type === 'mistake') {
40
+ return lesson.severity === 'ERROR' ? 'prevent' : 'warn';
41
+ }
42
+ return 'optimize'; // improvements
43
+ }
44
+
45
+ /**
46
+ * Classify pattern type for better context
47
+ * @param {string} pattern - Regex pattern
48
+ * @returns {string} - Pattern type: 'dependency', 'structure', 'quality', 'security', 'performance', 'general'
49
+ */
50
+ function classifyPattern(pattern) {
51
+ if (!pattern) return 'general';
52
+
53
+ // Security patterns
54
+ if (pattern.includes('eval') || pattern.includes('innerHTML') || pattern.includes('dangerouslySetInnerHTML')) {
55
+ return 'security';
56
+ }
57
+
58
+ // Dependency patterns
59
+ if (pattern.includes('import') || pattern.includes('require') || pattern.includes('from')) {
60
+ return 'dependency';
61
+ }
62
+
63
+ // Structure patterns
64
+ if (pattern.includes('function') || pattern.includes('class') || pattern.includes('const') || pattern.includes('let')) {
65
+ return 'structure';
66
+ }
67
+
68
+ // Quality patterns
69
+ if (pattern.includes('console') || pattern.includes('debugger') || pattern.includes('TODO')) {
70
+ return 'quality';
71
+ }
72
+
73
+ // Performance patterns
74
+ if (pattern.includes('loop') || pattern.includes('forEach') || pattern.includes('map')) {
75
+ return 'performance';
76
+ }
77
+
78
+ return 'general';
79
+ }
80
+
81
+ /**
82
+ * Infer applicability context from tags
83
+ * @param {Array<string>} tags - Lesson tags
84
+ * @returns {object} - Context: { scope, appliesTo }
85
+ */
86
+ function inferApplicability(tags = []) {
87
+ return {
88
+ scope: tags.includes('global') ? 'global' : 'local',
89
+ appliesTo: tags.filter(t =>
90
+ t.includes('file') ||
91
+ t.includes('component') ||
92
+ t.includes('module')
93
+ )
94
+ };
95
+ }
96
+
97
+ /**
98
+ * Calculate confidence score based on lesson metadata
99
+ * @param {object} lesson - Lesson with hitCount
100
+ * @returns {number} - Confidence: 0.0 to 1.0
101
+ */
102
+ function calculateConfidence(lesson) {
103
+ const hitCount = lesson.hitCount || 0;
104
+
105
+ // Confidence increases with hits (logarithmic scale)
106
+ if (hitCount === 0) return 0.3; // Default for new lessons
107
+ if (hitCount < 3) return 0.5;
108
+ if (hitCount < 10) return 0.7;
109
+ if (hitCount < 30) return 0.85;
110
+ return 0.95; // High confidence for well-established patterns
111
+ }
112
+
113
+ /**
114
+ * Transform raw lesson into cognitive lesson with intent & context
115
+ * @param {object} rawLesson - Raw lesson from YAML
116
+ * @returns {object} - Cognitive lesson with enhanced metadata
7
117
  */
118
+ function createCognitiveLesson(rawLesson) {
119
+ return {
120
+ ...rawLesson,
8
121
 
9
- const fs = require('fs');
10
- const path = require('path');
11
- const yaml = require('js-yaml');
122
+ // Intent inference
123
+ intent: inferIntent(rawLesson),
12
124
 
13
- const KNOWLEDGE_PATH = path.join(process.cwd(), '.agent', 'knowledge', 'lessons-learned.yaml');
125
+ // Pattern classification
126
+ patternType: classifyPattern(rawLesson.pattern),
14
127
 
15
- function loadKnowledge() {
128
+ // Context awareness
129
+ context: {
130
+ appliesTo: inferApplicability(rawLesson.tags),
131
+ scope: (rawLesson.tags || []).includes('global') ? 'global' : 'local'
132
+ },
133
+
134
+ // Cognitive metadata
135
+ cognitive: {
136
+ maturity: (rawLesson.hitCount || 0) > 10 ? 'stable' : 'learning',
137
+ confidence: calculateConfidence(rawLesson)
138
+ }
139
+ };
140
+ }
141
+
142
+ // ============================================================================
143
+ // KNOWLEDGE BASE
144
+ // ============================================================================
145
+
146
+ /**
147
+ * Load knowledge base from YAML file
148
+ * Supports both v3.x (lessons-learned.yaml) and v4.x (cognitive lessons)
149
+ * @returns {{ lessons: Array<{ id: string, pattern: string, message: string, severity: string, hitCount?: number, lastHit?: string }>, version?: number }}
150
+ */
151
+ export function loadKnowledge() {
16
152
  try {
17
- if (!fs.existsSync(KNOWLEDGE_PATH)) {
18
- return { lessons: [] };
153
+ // Check for v4.x cognitive structure first
154
+ const mistakesPath = path.join(KNOWLEDGE_DIR, 'mistakes.yaml');
155
+ const improvementsPath = path.join(KNOWLEDGE_DIR, 'improvements.yaml');
156
+
157
+ const hasV4 = fs.existsSync(mistakesPath) || fs.existsSync(improvementsPath);
158
+
159
+ if (hasV4) {
160
+ // v4.x: Load cognitive lessons and flatten for scanning
161
+ const mistakes = fs.existsSync(mistakesPath)
162
+ ? yaml.load(fs.readFileSync(mistakesPath, 'utf8'))
163
+ : { mistakes: [] };
164
+ const improvements = fs.existsSync(improvementsPath)
165
+ ? yaml.load(fs.readFileSync(improvementsPath, 'utf8'))
166
+ : { improvements: [] };
167
+
168
+ // Flatten and apply cognitive transformation
169
+ const rawLessons = [
170
+ ...(mistakes.mistakes || []).map(m => ({
171
+ id: m.id,
172
+ pattern: m.pattern,
173
+ message: m.message,
174
+ severity: m.severity || 'WARNING',
175
+ hitCount: m.hitCount || 0,
176
+ lastHit: m.lastHit,
177
+ excludePaths: m.excludePaths,
178
+ tags: m.tags,
179
+ autoFix: m.autoFix, // Preserve autoFix for Fix All
180
+ type: 'mistake', // Mark for tracking
181
+ })),
182
+ ...(improvements.improvements || []).map(i => ({
183
+ id: i.id,
184
+ pattern: i.pattern,
185
+ message: i.message,
186
+ severity: 'INFO', // Improvements are informational
187
+ hitCount: i.appliedCount || 0,
188
+ lastHit: i.lastApplied,
189
+ excludePaths: i.excludePaths, // PRESERVE excludePaths!
190
+ tags: i.tags,
191
+ type: 'improvement', // Mark for tracking
192
+ }))
193
+ ];
194
+
195
+ // Apply cognitive transformation to create agent-level lessons
196
+ const lessons = rawLessons.map(createCognitiveLesson);
197
+
198
+ return { lessons, version: 4.0 };
199
+ }
200
+
201
+ // Fallback to v3.x
202
+ if (!fs.existsSync(LESSONS_PATH)) {
203
+ return { lessons: [], version: 1 };
19
204
  }
20
- const content = fs.readFileSync(KNOWLEDGE_PATH, 'utf8');
21
- return yaml.load(content) || { lessons: [] };
205
+ const content = fs.readFileSync(LESSONS_PATH, "utf8");
206
+ return yaml.load(content) || { lessons: [], version: 1 };
22
207
  } catch (error) {
23
- return { lessons: [] };
208
+ if (DEBUG) console.error("Error loading knowledge:", error.message);
209
+ return { lessons: [], version: 1 };
24
210
  }
25
211
  }
26
212
 
27
- function checkFile(filePath) {
28
- if (!fs.existsSync(filePath)) {
29
- console.error(`File not found: ${filePath}`);
30
- process.exit(1);
213
+ /**
214
+ * Save knowledge base to YAML file
215
+ * Supports both v3.x and v4.x formats
216
+ * @param {{ lessons: Array, version?: number }} data
217
+ */
218
+ export function saveKnowledge(data) {
219
+ try {
220
+ fs.mkdirSync(KNOWLEDGE_DIR, { recursive: true });
221
+
222
+ // v4.x: Save to mistakes.yaml and improvements.yaml
223
+ if (data.version === 4.0) {
224
+ const mistakes = data.lessons.filter(l => l.type === 'mistake').map(m => {
225
+ const { type, ...rest } = m; // Remove type field
226
+ return rest;
227
+ });
228
+ const improvements = data.lessons.filter(l => l.type === 'improvement').map(i => {
229
+ const { type, severity, ...rest } = i; // Remove type and severity
230
+ return {
231
+ ...rest,
232
+ excludePaths: i.excludePaths || [], // PRESERVE excludePaths explicitly
233
+ appliedCount: rest.hitCount,
234
+ lastApplied: rest.lastHit,
235
+ };
236
+ });
237
+
238
+ // Save mistakes
239
+ if (mistakes.length > 0) {
240
+ const mistakesPath = path.join(KNOWLEDGE_DIR, 'mistakes.yaml');
241
+ const mistakesData = yaml.dump({ version: 4.0, mistakes }, { lineWidth: -1 });
242
+ fs.writeFileSync(mistakesPath, mistakesData, 'utf8');
243
+ }
244
+
245
+ // Save improvements
246
+ if (improvements.length > 0) {
247
+ const improvementsPath = path.join(KNOWLEDGE_DIR, 'improvements.yaml');
248
+ const improvementsData = yaml.dump({ version: 4.0, improvements }, { lineWidth: -1 });
249
+ fs.writeFileSync(improvementsPath, improvementsData, 'utf8');
250
+ }
251
+ } else {
252
+ // v3.x: Save to lessons-learned.yaml
253
+ const str = yaml.dump(data, { lineWidth: -1 });
254
+ fs.writeFileSync(LESSONS_PATH, str, "utf8");
255
+ }
256
+ } catch (error) {
257
+ console.error("❌ Failed to save knowledge base:", error.message);
31
258
  }
259
+ }
32
260
 
33
- const content = fs.readFileSync(filePath, 'utf8');
34
- const db = loadKnowledge();
261
+ // ============================================================================
262
+ // FILE SCANNING
263
+ // ============================================================================
35
264
 
36
- if (!db.lessons || db.lessons.length === 0) return;
265
+ /**
266
+ * Scan a single file against learned patterns
267
+ * @param {string} filePath - Path to file to scan
268
+ * @param {{ lessons: Array }} db - Knowledge base
269
+ * @param {boolean} updateHits - Whether to update hit counts
270
+ * @returns {{ file: string, violations: Array<{ lesson: object, matches: Array<{ line: number, content: string }> }> }}
271
+ */
272
+ export function scanFile(filePath, db, updateHits = false) {
273
+ const violations = [];
37
274
 
38
- let issuesFound = 0;
275
+ if (!fs.existsSync(filePath)) {
276
+ return { file: filePath, violations: [], error: "File not found" };
277
+ }
39
278
 
40
- console.log(`\n🧠 Checking memory for: ${path.basename(filePath)}...`);
279
+ const content = fs.readFileSync(filePath, "utf8");
280
+ const lines = content.split("\n");
281
+
282
+ if (!db.lessons || db.lessons.length === 0) {
283
+ return { file: filePath, violations: [] };
284
+ }
41
285
 
42
286
  db.lessons.forEach(lesson => {
287
+ // Skip if no valid pattern
288
+ if (!lesson.pattern) return;
289
+
290
+ // Check excludePaths - skip this lesson for excluded paths using glob patterns
291
+ if (lesson.excludePaths && Array.isArray(lesson.excludePaths) && lesson.excludePaths.length > 0) {
292
+ if (isIgnored(filePath, lesson.excludePaths)) {
293
+ return; // Skip this lesson for this file
294
+ }
295
+ }
296
+
43
297
  try {
44
- const regex = new RegExp(lesson.pattern, 'g');
45
- const matches = content.match(regex);
46
-
47
- if (matches) {
48
- issuesFound++;
49
- console.log(`\n❌ Violation of Lesson [${lesson.id}]:`);
50
- console.log(` Recall: "${lesson.message}"`);
51
- console.log(` Severity: ${lesson.severity}`);
52
- console.log(` Found ${matches.length} occurence(s) matching /${lesson.pattern}/`);
298
+ const regex = new RegExp(lesson.pattern, "g");
299
+ const matches = [];
300
+
301
+ lines.forEach((line, idx) => {
302
+ if (regex.test(line)) {
303
+ matches.push({
304
+ line: idx + 1,
305
+ content: line.trim().substring(0, 80)
306
+ });
307
+ regex.lastIndex = 0; // Reset for next test
308
+ }
309
+ });
310
+
311
+ if (matches.length > 0) {
312
+ violations.push({ lesson, matches });
313
+
314
+ // Track hit count
315
+ if (updateHits) {
316
+ lesson.hitCount = (lesson.hitCount || 0) + matches.length;
317
+ lesson.lastHit = new Date().toISOString();
318
+
319
+ // Check evolution threshold (Phase 2: Signal Layer)
320
+ const threshold = getUpdateThreshold(); // Get from settings
321
+ const evolutionCheck = checkEvolutionThreshold(lesson, threshold);
322
+
323
+ if (evolutionCheck.ready) {
324
+ // Queue evolution signal (doesn't evolve yet, just signals)
325
+ queueEvolutionSignal(lesson.id, evolutionCheck, {
326
+ triggerEvent: 'violation',
327
+ file: filePath,
328
+ matchCount: matches.length,
329
+ timestamp: Date.now()
330
+ });
331
+
332
+ if (DEBUG) {
333
+ console.log(`📡 Evolution signal queued for [${lesson.id}]: ${evolutionCheck.reason} (confidence: ${evolutionCheck.confidence.toFixed(2)})`);
334
+ }
335
+ }
336
+
337
+ // Auto-escalation: WARNING → ERROR after threshold violations
338
+ // ONLY if Auto-Updating is ENABLED in settings
339
+ if (isAutoUpdatingEnabled() && lesson.severity === "WARNING" && lesson.hitCount >= threshold && !lesson.autoEscalated) {
340
+ lesson.severity = "ERROR";
341
+ lesson.autoEscalated = true;
342
+ console.log(`⚡ Auto-escalated [${lesson.id}] to ERROR (${lesson.hitCount} hits, threshold: ${threshold})`);
343
+ }
344
+ }
53
345
  }
54
346
  } catch (e) {
55
- // Ignore invalid regex in db
347
+ if (DEBUG) console.error(`Invalid regex in lesson ${lesson.id}:`, e.message);
56
348
  }
57
349
  });
58
350
 
59
- if (issuesFound === 0) {
60
- console.log("✅ No learned anti-patterns detected.");
61
- process.exit(0);
351
+ return { file: filePath, violations };
352
+ }
353
+
354
+ /**
355
+ * Scan multiple files in a directory recursively
356
+ * @param {string} dirPath - Directory to scan
357
+ * @param {{ lessons: Array }} db - Knowledge base
358
+ * @param {string[]} extensions - File extensions to scan
359
+ * @returns {{ results: Array<{ file: string, violations: Array }>, ignoredCount: number, totalScanned: number }}
360
+ */
361
+ export function scanDirectory(dirPath, db, extensions = [".js", ".ts", ".tsx", ".jsx"]) {
362
+ const results = [];
363
+ const ignorePatterns = loadIgnorePatterns(dirPath);
364
+ let ignoredCount = 0;
365
+ let totalScanned = 0;
366
+
367
+ function walk(dir) {
368
+ let entries;
369
+ try {
370
+ entries = fs.readdirSync(dir, { withFileTypes: true });
371
+ } catch (e) {
372
+ return; // Skip unreadable directories
373
+ }
374
+
375
+ for (const entry of entries) {
376
+ const fullPath = path.join(dir, entry.name);
377
+ const relativePath = path.relative(dirPath, fullPath);
378
+
379
+ // Check .agentignore patterns
380
+ if (isIgnored(relativePath, ignorePatterns)) {
381
+ ignoredCount++;
382
+ continue;
383
+ }
384
+
385
+ if (entry.isDirectory()) {
386
+ walk(fullPath);
387
+ } else if (entry.isFile()) {
388
+ const ext = path.extname(entry.name);
389
+ if (extensions.includes(ext)) {
390
+ totalScanned++;
391
+ const result = scanFile(fullPath, db, true);
392
+ if (result.violations.length > 0) {
393
+ results.push(result);
394
+ }
395
+ }
396
+ }
397
+ }
398
+ }
399
+
400
+ if (fs.statSync(dirPath).isDirectory()) {
401
+ walk(dirPath);
62
402
  } else {
63
- console.log(`\n⚠️ Found ${issuesFound} potential issues from past lessons.`);
64
- // We generally don't exit 1 here unless we want to block strict builds
403
+ totalScanned++;
404
+ results.push(scanFile(dirPath, db, true));
405
+ }
406
+
407
+ return { results, ignoredCount, totalScanned };
408
+ }
409
+
410
+ // ============================================================================
411
+ // REPORTING
412
+ // ============================================================================
413
+
414
+ /**
415
+ * Print scan results in a readable format
416
+ * @param {Array} results - Scan results
417
+ */
418
+ export function printResults(results) {
419
+ let totalViolations = 0;
420
+ let errorCount = 0;
421
+ let warningCount = 0;
422
+
423
+ results.forEach(result => {
424
+ if (result.violations.length === 0) return;
425
+
426
+ console.log(`\n📄 ${path.relative(process.cwd(), result.file)}`);
427
+
428
+ result.violations.forEach(({ lesson, matches }) => {
429
+ totalViolations += matches.length;
430
+ if (lesson.severity === "ERROR") errorCount += matches.length;
431
+ else warningCount += matches.length;
432
+
433
+ const icon = lesson.severity === "ERROR" ? "❌" : "⚠️";
434
+ console.log(` ${icon} [${lesson.id}] ${lesson.message}`);
435
+
436
+ matches.forEach(m => {
437
+ console.log(` L${m.line}: ${m.content}`);
438
+ });
439
+ });
440
+ });
441
+
442
+ // Return stats only - summary is handled by pretty.showScanSummary
443
+ return { total: totalViolations, errors: errorCount, warnings: warningCount };
444
+ }
445
+
446
+ // ============================================================================
447
+ // CLI
448
+ // ============================================================================
449
+
450
+ function main() {
451
+ const args = process.argv.slice(2);
452
+ const jsonMode = args.includes("--json");
453
+
454
+ if (args.length === 0 || args.includes("--help")) {
455
+ console.log(`
456
+ 🧠 Smart Recall - Memory Check Tool
457
+
458
+ Usage:
459
+ recall <file> Check single file
460
+ recall <directory> Check all files in directory
461
+ recall --staged Check git staged files only
462
+
463
+ Options:
464
+ --json Output JSON for CI/CD
465
+ --help Show this help
466
+ `);
467
+ process.exit(0);
468
+ }
469
+
470
+ const target = args.find(a => !a.startsWith("--")) || ".";
471
+ const db = loadKnowledge();
472
+
473
+ if (!db.lessons || db.lessons.length === 0) {
474
+ console.log("ℹ️ No lessons learned yet. Use 'ag-smart learn' to add patterns.");
475
+ process.exit(0);
476
+ }
477
+
478
+ // Scan first
479
+ const { results, ignoredCount, totalScanned } = scanDirectory(target, db);
480
+ const stats = printResults(results);
481
+
482
+ // JSON output mode for CI/CD
483
+ if (jsonMode) {
484
+ const output = {
485
+ version: VERSION,
486
+ filesScanned: totalScanned,
487
+ ignored: ignoredCount,
488
+ violations: stats.total,
489
+ errors: stats.errors,
490
+ warnings: stats.warnings,
491
+ passed: stats.errors === 0,
492
+ details: results.filter(r => r.violations.length > 0).map(r => ({
493
+ file: r.file,
494
+ violations: r.violations.map(v => ({
495
+ id: v.lesson.id,
496
+ severity: v.lesson.severity,
497
+ message: v.lesson.message,
498
+ matches: v.matches.length
499
+ }))
500
+ }))
501
+ };
502
+ console.log(JSON.stringify(output, null, 2));
503
+ process.exit(stats.errors > 0 ? 1 : 0);
504
+ }
505
+
506
+ // Show Clack-based summary (consistent with CLI)
507
+ p.intro(pc.cyan(`${icons.brain} Agent Skill Kit v${VERSION}`));
508
+
509
+ // Save updated hit counts
510
+ saveKnowledge(db);
511
+
512
+ // Summary using Clack
513
+ const summaryLines = [
514
+ `${pc.green("✓")} ${totalScanned} file(s) scanned`,
515
+ `${pc.dim("›")} ${ignoredCount} paths ignored`,
516
+ stats.total > 0
517
+ ? `${pc.red("✗")} ${stats.total} violation(s) found`
518
+ : `${pc.green("✓")} No violations found`
519
+ ];
520
+
521
+ if (stats.total === 0) {
522
+ summaryLines.push("");
523
+ summaryLines.push(pc.green(`All clear! Your code looks great. ${icons.party}`));
524
+ }
525
+
526
+ p.note(summaryLines.join("\n"), pc.dim("Memory check completed ✓"));
527
+
528
+ if (stats.errors > 0) {
65
529
  process.exit(1);
530
+ } else {
531
+ process.exit(0);
532
+ }
533
+ }
534
+
535
+ // ============================================================================
536
+ // STRUCTURED SCAN (for Scan All / Fix All architecture)
537
+ // ============================================================================
538
+
539
+ /**
540
+ * Sanitize filename for use in issue ID
541
+ * @param {string} filepath - File path
542
+ * @returns {string} Sanitized filename
543
+ */
544
+ function sanitizeFilename(filepath) {
545
+ return filepath
546
+ .replace(/[^a-zA-Z0-9]/g, '_')
547
+ .replace(/_+/g, '_')
548
+ .substring(0, 50);
549
+ }
550
+
551
+ /**
552
+ * Scan directory and generate structured output with issue IDs
553
+ * This is the read-only analyzer for Scan All
554
+ * @param {string} targetPath - Path to scan
555
+ * @param {{ lessons: Array }} db - Knowledge base
556
+ * @returns {{ scanId: string, timestamp: number, issues: Array, summary: object }}
557
+ */
558
+ export function scanDirectoryStructured(targetPath, db) {
559
+ // Run standard scan
560
+ const { results, ignoredCount, totalScanned } = scanDirectory(targetPath, db);
561
+
562
+ // Generate structured issues with unique IDs
563
+ const issues = [];
564
+ results.forEach(fileResult => {
565
+ fileResult.violations.forEach(({ lesson, matches }) => {
566
+ matches.forEach(match => {
567
+ const issueId = `${lesson.id}_${sanitizeFilename(fileResult.file)}_L${match.line}`;
568
+ issues.push({
569
+ id: issueId,
570
+ lessonId: lesson.id,
571
+ type: lesson.type || 'unknown',
572
+ severity: lesson.severity || 'WARNING',
573
+ file: fileResult.file,
574
+ line: match.line,
575
+ message: lesson.message,
576
+ pattern: lesson.pattern,
577
+ matchedCode: match.content,
578
+ fixable: !!lesson.autoFix, // Check if lesson has autoFix strategy
579
+ confidence: 0.95
580
+ });
581
+ });
582
+ });
583
+ });
584
+
585
+ const scanResult = {
586
+ scanId: `scan_${Date.now()}`,
587
+ timestamp: Date.now(),
588
+ projectPath: path.resolve(targetPath),
589
+ totalIssues: issues.length,
590
+ summary: {
591
+ errors: issues.filter(i => i.severity === 'ERROR').length,
592
+ warnings: issues.filter(i => i.severity !== 'ERROR').length,
593
+ filesScanned: totalScanned,
594
+ ignoredFiles: ignoredCount
595
+ },
596
+ issues
597
+ };
598
+
599
+ return scanResult;
600
+ }
601
+
602
+ /**
603
+ * Save scan result to disk
604
+ * @param {object} scanResult - Scan result object
605
+ */
606
+ export function saveScanResult(scanResult) {
607
+ const scansDir = path.join(KNOWLEDGE_DIR, 'scans');
608
+
609
+ // Create scans directory if it doesn't exist
610
+ if (!fs.existsSync(scansDir)) {
611
+ fs.mkdirSync(scansDir, { recursive: true });
66
612
  }
613
+
614
+ const filename = `${scanResult.scanId}.json`;
615
+ const filepath = path.join(scansDir, filename);
616
+
617
+ fs.writeFileSync(filepath, JSON.stringify(scanResult, null, 2));
618
+
619
+ // Keep only last 10 scans
620
+ cleanOldScans(scansDir, 10);
67
621
  }
68
622
 
69
- const args = process.argv.slice(2);
70
- if (args.length === 0) {
71
- console.log("Usage: node recall.js <file_path>");
72
- process.exit(1);
623
+ /**
624
+ * Load scan result from disk
625
+ * @param {string} scanId - Scan ID to load
626
+ * @returns {object|null} Scan result or null if not found
627
+ */
628
+ export function loadScanResult(scanId) {
629
+ const filepath = path.join(KNOWLEDGE_DIR, 'scans', `${scanId}.json`);
630
+
631
+ if (!fs.existsSync(filepath)) {
632
+ return null;
633
+ }
634
+
635
+ return JSON.parse(fs.readFileSync(filepath, 'utf8'));
73
636
  }
74
637
 
75
- checkFile(args[0]);
638
+ /**
639
+ * Load most recent scan result
640
+ * @returns {object|null} Most recent scan result or null
641
+ */
642
+ export function loadMostRecentScan() {
643
+ const scansDir = path.join(KNOWLEDGE_DIR, 'scans');
644
+
645
+ if (!fs.existsSync(scansDir)) {
646
+ return null;
647
+ }
648
+
649
+ const files = fs.readdirSync(scansDir)
650
+ .filter(f => f.endsWith('.json'))
651
+ .map(f => ({
652
+ name: f,
653
+ path: path.join(scansDir, f),
654
+ mtime: fs.statSync(path.join(scansDir, f)).mtime
655
+ }))
656
+ .sort((a, b) => b.mtime - a.mtime);
657
+
658
+ if (files.length === 0) {
659
+ return null;
660
+ }
661
+
662
+ return JSON.parse(fs.readFileSync(files[0].path, 'utf8'));
663
+ }
664
+
665
+ /**
666
+ * Clean old scan files, keeping only the most recent N
667
+ * @param {string} scansDir - Scans directory path
668
+ * @param {number} keepCount - Number of scans to keep
669
+ */
670
+ function cleanOldScans(scansDir, keepCount) {
671
+ const files = fs.readdirSync(scansDir)
672
+ .filter(f => f.endsWith('.json'))
673
+ .map(f => ({
674
+ name: f,
675
+ path: path.join(scansDir, f),
676
+ mtime: fs.statSync(path.join(scansDir, f)).mtime
677
+ }))
678
+ .sort((a, b) => b.mtime - a.mtime);
679
+
680
+ // Delete files beyond keepCount
681
+ files.slice(keepCount).forEach(file => {
682
+ try {
683
+ fs.unlinkSync(file.path);
684
+ } catch (e) {
685
+ // Ignore errors
686
+ }
687
+ });
688
+ }
689
+
690
+ // ============================================================================
691
+ // AUTO-FIX LOGIC (for Fix All automation)
692
+ // ============================================================================
693
+
694
+ /**
695
+ * Apply auto-fix to a file based on issue and lesson strategy
696
+ * @param {object} issue - Issue object from scan with file, line, etc.
697
+ * @param {object} lesson - Lesson with autoFix strategy
698
+ * @returns {{ success: boolean, backup?: string, error?: string, details?: string }}
699
+ */
700
+ export function applyFix(issue, lesson) {
701
+ if (!lesson.autoFix) {
702
+ return { success: false, error: 'No auto-fix strategy defined' };
703
+ }
704
+
705
+ const { file, line } = issue;
706
+ const { autoFix } = lesson;
707
+
708
+ try {
709
+ // 1. Create backup
710
+ const backup = createBackupFile(file);
711
+
712
+ // 2. Read file
713
+ const content = fs.readFileSync(file, 'utf8');
714
+ const lines = content.split('\n');
715
+
716
+ // 3. Apply fix based on type
717
+ let fixed = false;
718
+ let details = '';
719
+
720
+ switch (autoFix.type) {
721
+ case 'replace':
722
+ const searchRegex = new RegExp(autoFix.search, 'g');
723
+ const originalLine = lines[line - 1];
724
+ lines[line - 1] = lines[line - 1].replace(
725
+ searchRegex,
726
+ autoFix.replace
727
+ );
728
+ fixed = lines[line - 1] !== originalLine;
729
+ details = `Replaced: ${originalLine.trim()} → ${lines[line - 1].trim()}`;
730
+ break;
731
+
732
+ case 'regex-replace':
733
+ const findRegex = new RegExp(autoFix.find, 'g');
734
+ const origLine = lines[line - 1];
735
+ lines[line - 1] = lines[line - 1].replace(
736
+ findRegex,
737
+ autoFix.replace
738
+ );
739
+ fixed = lines[line - 1] !== origLine;
740
+ details = `Replaced: ${origLine.trim()} → ${lines[line - 1].trim()}`;
741
+ break;
742
+
743
+ case 'comment-warning':
744
+ const targetLine = line - 1;
745
+ const indent = lines[targetLine].match(/^\s*/)[0];
746
+ lines.splice(targetLine, 0, indent + autoFix.comment);
747
+ fixed = true;
748
+ details = `Added warning comment above line ${line}`;
749
+ break;
750
+
751
+ case 'insert':
752
+ const pos = autoFix.position === 'before' ? line - 1 : line;
753
+ lines.splice(pos, 0, autoFix.content);
754
+ fixed = true;
755
+ details = `Inserted: ${autoFix.content}`;
756
+ break;
757
+
758
+ case 'delete':
759
+ const deletedLine = lines[line - 1];
760
+ lines.splice(line - 1, 1);
761
+ fixed = true;
762
+ details = `Deleted: ${deletedLine.trim()}`;
763
+ break;
764
+
765
+ default:
766
+ return { success: false, error: `Unknown fix type: ${autoFix.type}` };
767
+ }
768
+
769
+ if (!fixed) {
770
+ return { success: false, error: 'Fix did not modify file' };
771
+ }
772
+
773
+ // 4. Write back
774
+ fs.writeFileSync(file, lines.join('\n'), 'utf8');
775
+
776
+ return { success: true, backup, details };
777
+
778
+ } catch (e) {
779
+ return { success: false, error: e.message };
780
+ }
781
+ }
782
+
783
+ /**
784
+ * Create backup of file before fixing
785
+ * @param {string} filepath - File to backup
786
+ * @returns {string} Backup filepath
787
+ */
788
+ function createBackupFile(filepath) {
789
+ const backupDir = path.join(KNOWLEDGE_DIR, 'fix-backups');
790
+ if (!fs.existsSync(backupDir)) {
791
+ fs.mkdirSync(backupDir, { recursive: true });
792
+ }
793
+
794
+ const timestamp = Date.now();
795
+ const filename = path.basename(filepath);
796
+ const backupPath = path.join(backupDir, `${filename}.${timestamp}.bak`);
797
+
798
+ fs.copyFileSync(filepath, backupPath);
799
+
800
+ return backupPath;
801
+ }
802
+
803
+ /**
804
+ * Restore file from backup
805
+ * @param {string} originalPath - Original file path
806
+ * @param {string} backupPath - Backup file path
807
+ * @returns {boolean} True if restored successfully
808
+ */
809
+ export function restoreFromBackup(originalPath, backupPath) {
810
+ try {
811
+ if (fs.existsSync(backupPath)) {
812
+ fs.copyFileSync(backupPath, originalPath);
813
+ fs.unlinkSync(backupPath);
814
+ return true;
815
+ }
816
+ return false;
817
+ } catch (e) {
818
+ console.error(`Failed to restore from backup: ${e.message}`);
819
+ return false;
820
+ }
821
+ }
822
+
823
+ // Run if executed directly
824
+ if (process.argv[1].includes("recall")) {
825
+ main();
826
+ }