cognitive-core 0.2.0 → 0.2.2

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 (397) hide show
  1. package/.claude/settings.json +111 -2
  2. package/.sessionlog/settings.json +4 -0
  3. package/dist/atlas.d.ts +10 -0
  4. package/dist/atlas.d.ts.map +1 -1
  5. package/dist/atlas.js +65 -0
  6. package/dist/atlas.js.map +1 -1
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +5 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/learning/index.d.ts +1 -1
  12. package/dist/learning/index.d.ts.map +1 -1
  13. package/dist/learning/index.js.map +1 -1
  14. package/dist/learning/pipeline.d.ts +4 -31
  15. package/dist/learning/pipeline.d.ts.map +1 -1
  16. package/dist/learning/pipeline.js +12 -64
  17. package/dist/learning/pipeline.js.map +1 -1
  18. package/dist/learning/unified-pipeline.d.ts +30 -0
  19. package/dist/learning/unified-pipeline.d.ts.map +1 -1
  20. package/dist/learning/unified-pipeline.js +207 -0
  21. package/dist/learning/unified-pipeline.js.map +1 -1
  22. package/dist/memory/candidate-retrieval.d.ts.map +1 -1
  23. package/dist/memory/candidate-retrieval.js +3 -1
  24. package/dist/memory/candidate-retrieval.js.map +1 -1
  25. package/dist/memory/curated-loader.d.ts +21 -4
  26. package/dist/memory/curated-loader.d.ts.map +1 -1
  27. package/dist/memory/curated-loader.js +53 -16
  28. package/dist/memory/curated-loader.js.map +1 -1
  29. package/dist/memory/index.d.ts +2 -1
  30. package/dist/memory/index.d.ts.map +1 -1
  31. package/dist/memory/index.js +3 -1
  32. package/dist/memory/index.js.map +1 -1
  33. package/dist/memory/playbook.d.ts +6 -0
  34. package/dist/memory/playbook.d.ts.map +1 -1
  35. package/dist/memory/playbook.js +15 -0
  36. package/dist/memory/playbook.js.map +1 -1
  37. package/dist/memory/source-resolver.d.ts +120 -0
  38. package/dist/memory/source-resolver.d.ts.map +1 -0
  39. package/dist/memory/source-resolver.js +300 -0
  40. package/dist/memory/source-resolver.js.map +1 -0
  41. package/dist/types/config.d.ts +141 -0
  42. package/dist/types/config.d.ts.map +1 -1
  43. package/dist/types/config.js +40 -0
  44. package/dist/types/config.js.map +1 -1
  45. package/dist/types/index.d.ts +1 -1
  46. package/dist/types/index.d.ts.map +1 -1
  47. package/dist/types/index.js +1 -1
  48. package/dist/types/index.js.map +1 -1
  49. package/dist/utils/error-classifier.js +8 -8
  50. package/dist/utils/error-classifier.js.map +1 -1
  51. package/dist/workspace/efficacy-toolkit.d.ts +164 -0
  52. package/dist/workspace/efficacy-toolkit.d.ts.map +1 -0
  53. package/dist/workspace/efficacy-toolkit.js +281 -0
  54. package/dist/workspace/efficacy-toolkit.js.map +1 -0
  55. package/dist/workspace/index.d.ts +2 -1
  56. package/dist/workspace/index.d.ts.map +1 -1
  57. package/dist/workspace/index.js +3 -1
  58. package/dist/workspace/index.js.map +1 -1
  59. package/dist/workspace/templates/index.d.ts +3 -0
  60. package/dist/workspace/templates/index.d.ts.map +1 -1
  61. package/dist/workspace/templates/index.js +6 -0
  62. package/dist/workspace/templates/index.js.map +1 -1
  63. package/dist/workspace/templates/playbook-decay-detection.d.ts +46 -0
  64. package/dist/workspace/templates/playbook-decay-detection.d.ts.map +1 -0
  65. package/dist/workspace/templates/playbook-decay-detection.js +197 -0
  66. package/dist/workspace/templates/playbook-decay-detection.js.map +1 -0
  67. package/dist/workspace/templates/playbook-efficacy-audit.d.ts +46 -0
  68. package/dist/workspace/templates/playbook-efficacy-audit.d.ts.map +1 -0
  69. package/dist/workspace/templates/playbook-efficacy-audit.js +160 -0
  70. package/dist/workspace/templates/playbook-efficacy-audit.js.map +1 -0
  71. package/dist/workspace/templates/playbook-lifecycle-review.d.ts +51 -0
  72. package/dist/workspace/templates/playbook-lifecycle-review.d.ts.map +1 -0
  73. package/dist/workspace/templates/playbook-lifecycle-review.js +187 -0
  74. package/dist/workspace/templates/playbook-lifecycle-review.js.map +1 -0
  75. package/dist/workspace/types.d.ts +12 -54
  76. package/dist/workspace/types.d.ts.map +1 -1
  77. package/dist/workspace/types.js.map +1 -1
  78. package/package.json +8 -2
  79. package/playbooks/compound-engineering/adversarial-review.json +51 -0
  80. package/playbooks/compound-engineering/agent-native-architecture.json +59 -0
  81. package/playbooks/compound-engineering/agent-native-review.json +54 -0
  82. package/playbooks/compound-engineering/api-contract-review.json +52 -0
  83. package/playbooks/compound-engineering/brainstorm-requirements.json +55 -0
  84. package/playbooks/compound-engineering/bug-reproduction.json +62 -0
  85. package/playbooks/compound-engineering/confidence-calibration.json +49 -0
  86. package/playbooks/compound-engineering/correctness-review.json +49 -0
  87. package/playbooks/compound-engineering/data-migration-safety.json +59 -0
  88. package/playbooks/compound-engineering/deployment-verification.json +63 -0
  89. package/playbooks/compound-engineering/error-recovery-patterns.json +53 -0
  90. package/playbooks/compound-engineering/implementation-planning.json +64 -0
  91. package/playbooks/compound-engineering/issue-pattern-analysis.json +53 -0
  92. package/playbooks/compound-engineering/knowledge-compounding.json +63 -0
  93. package/playbooks/compound-engineering/learnings-research.json +54 -0
  94. package/playbooks/compound-engineering/maintainability-review.json +49 -0
  95. package/playbooks/compound-engineering/performance-review.json +54 -0
  96. package/playbooks/compound-engineering/plan-adversarial-review.json +56 -0
  97. package/playbooks/compound-engineering/plan-feasibility-review.json +56 -0
  98. package/playbooks/compound-engineering/project-standards-review.json +52 -0
  99. package/playbooks/compound-engineering/reliability-review.json +53 -0
  100. package/playbooks/compound-engineering/review-orchestration.json +64 -0
  101. package/playbooks/compound-engineering/security-review.json +54 -0
  102. package/playbooks/compound-engineering/systematic-execution.json +64 -0
  103. package/playbooks/compound-engineering/testing-review.json +50 -0
  104. package/src/atlas.ts +96 -0
  105. package/src/index.ts +27 -0
  106. package/src/learning/index.ts +1 -0
  107. package/src/learning/unified-pipeline.ts +271 -1
  108. package/src/memory/candidate-retrieval.ts +2 -1
  109. package/src/memory/curated-loader.ts +69 -16
  110. package/src/memory/index.ts +16 -0
  111. package/src/memory/playbook.ts +19 -0
  112. package/src/memory/source-resolver.ts +422 -0
  113. package/src/types/config.ts +46 -0
  114. package/src/types/index.ts +4 -0
  115. package/src/utils/error-classifier.ts +8 -8
  116. package/src/workspace/efficacy-toolkit.ts +496 -0
  117. package/src/workspace/index.ts +29 -0
  118. package/src/workspace/templates/index.ts +24 -0
  119. package/src/workspace/templates/playbook-decay-detection.ts +272 -0
  120. package/src/workspace/templates/playbook-efficacy-audit.ts +246 -0
  121. package/src/workspace/templates/playbook-lifecycle-review.ts +274 -0
  122. package/src/workspace/types.ts +22 -78
  123. package/tests/fixtures/behavioral-trajectories.ts +210 -0
  124. package/tests/integration/curated-sources-e2e.test.ts +502 -0
  125. package/tests/integration/pipeline-data-correctness.test.ts +794 -0
  126. package/tests/learning/meta-learner.test.ts +418 -0
  127. package/tests/learning/pipeline-memory-updates.test.ts +721 -0
  128. package/tests/learning/unified-pipeline-efficacy.test.ts +232 -0
  129. package/tests/memory/candidate-retrieval.test.ts +167 -0
  130. package/tests/memory/compound-engineering-seed.test.ts +338 -0
  131. package/tests/memory/curated-loader-extended.test.ts +225 -0
  132. package/tests/memory/meta.test.ts +399 -0
  133. package/tests/memory/playbook-quality-validation.test.ts +430 -0
  134. package/tests/memory/source-resolver.test.ts +700 -0
  135. package/tests/search/evaluator.test.ts +257 -0
  136. package/tests/search/verification-runner.test.ts +357 -0
  137. package/tests/utils/error-classifier.test.ts +149 -0
  138. package/tests/utils/trajectory-helpers.test.ts +163 -0
  139. package/tests/workspace/efficacy-toolkit.test.ts +404 -0
  140. package/tests/workspace/templates/playbook-efficacy.test.ts +377 -0
  141. package/.claude/settings.local.json +0 -11
  142. package/dist/learning/llm-extractor.d.ts +0 -88
  143. package/dist/learning/llm-extractor.d.ts.map +0 -1
  144. package/dist/learning/llm-extractor.js +0 -372
  145. package/dist/learning/llm-extractor.js.map +0 -1
  146. package/dist/learning/loop-coordinator.d.ts +0 -61
  147. package/dist/learning/loop-coordinator.d.ts.map +0 -1
  148. package/dist/learning/loop-coordinator.js +0 -96
  149. package/dist/learning/loop-coordinator.js.map +0 -1
  150. package/references/agent-workspace/CLAUDE.md +0 -74
  151. package/references/agent-workspace/README.md +0 -587
  152. package/references/agent-workspace/media/banner.png +0 -0
  153. package/references/agent-workspace/package-lock.json +0 -2061
  154. package/references/agent-workspace/package.json +0 -54
  155. package/references/agent-workspace/src/handle.ts +0 -122
  156. package/references/agent-workspace/src/index.ts +0 -32
  157. package/references/agent-workspace/src/manager.ts +0 -102
  158. package/references/agent-workspace/src/readers/json.ts +0 -71
  159. package/references/agent-workspace/src/readers/markdown.ts +0 -37
  160. package/references/agent-workspace/src/readers/raw.ts +0 -27
  161. package/references/agent-workspace/src/types.ts +0 -68
  162. package/references/agent-workspace/src/validation.ts +0 -93
  163. package/references/agent-workspace/src/writers/json.ts +0 -17
  164. package/references/agent-workspace/src/writers/markdown.ts +0 -27
  165. package/references/agent-workspace/src/writers/raw.ts +0 -22
  166. package/references/agent-workspace/tests/errors.test.ts +0 -652
  167. package/references/agent-workspace/tests/handle.test.ts +0 -144
  168. package/references/agent-workspace/tests/manager.test.ts +0 -124
  169. package/references/agent-workspace/tests/readers.test.ts +0 -205
  170. package/references/agent-workspace/tests/validation.test.ts +0 -196
  171. package/references/agent-workspace/tests/writers.test.ts +0 -108
  172. package/references/agent-workspace/tsconfig.json +0 -20
  173. package/references/agent-workspace/tsup.config.ts +0 -9
  174. package/references/minimem/.claude/settings.json +0 -7
  175. package/references/minimem/.sudocode/issues.jsonl +0 -18
  176. package/references/minimem/.sudocode/specs.jsonl +0 -1
  177. package/references/minimem/CLAUDE.md +0 -310
  178. package/references/minimem/README.md +0 -556
  179. package/references/minimem/claude-plugin/.claude-plugin/plugin.json +0 -10
  180. package/references/minimem/claude-plugin/.mcp.json +0 -7
  181. package/references/minimem/claude-plugin/README.md +0 -158
  182. package/references/minimem/claude-plugin/commands/recall.md +0 -47
  183. package/references/minimem/claude-plugin/commands/remember.md +0 -41
  184. package/references/minimem/claude-plugin/hooks/__tests__/hooks.test.ts +0 -272
  185. package/references/minimem/claude-plugin/hooks/hooks.json +0 -27
  186. package/references/minimem/claude-plugin/hooks/session-end.sh +0 -86
  187. package/references/minimem/claude-plugin/hooks/session-start.sh +0 -85
  188. package/references/minimem/claude-plugin/skills/memory/SKILL.md +0 -108
  189. package/references/minimem/package-lock.json +0 -5373
  190. package/references/minimem/package.json +0 -60
  191. package/references/minimem/scripts/postbuild.js +0 -35
  192. package/references/minimem/src/__tests__/edge-cases.test.ts +0 -371
  193. package/references/minimem/src/__tests__/errors.test.ts +0 -265
  194. package/references/minimem/src/__tests__/helpers.ts +0 -199
  195. package/references/minimem/src/__tests__/internal.test.ts +0 -407
  196. package/references/minimem/src/__tests__/knowledge.test.ts +0 -287
  197. package/references/minimem/src/__tests__/minimem.integration.test.ts +0 -1127
  198. package/references/minimem/src/__tests__/session.test.ts +0 -190
  199. package/references/minimem/src/cli/__tests__/commands.test.ts +0 -759
  200. package/references/minimem/src/cli/commands/__tests__/conflicts.test.ts +0 -141
  201. package/references/minimem/src/cli/commands/append.ts +0 -76
  202. package/references/minimem/src/cli/commands/config.ts +0 -262
  203. package/references/minimem/src/cli/commands/conflicts.ts +0 -413
  204. package/references/minimem/src/cli/commands/daemon.ts +0 -169
  205. package/references/minimem/src/cli/commands/index.ts +0 -12
  206. package/references/minimem/src/cli/commands/init.ts +0 -88
  207. package/references/minimem/src/cli/commands/mcp.ts +0 -177
  208. package/references/minimem/src/cli/commands/push-pull.ts +0 -213
  209. package/references/minimem/src/cli/commands/search.ts +0 -158
  210. package/references/minimem/src/cli/commands/status.ts +0 -84
  211. package/references/minimem/src/cli/commands/sync-init.ts +0 -290
  212. package/references/minimem/src/cli/commands/sync.ts +0 -70
  213. package/references/minimem/src/cli/commands/upsert.ts +0 -197
  214. package/references/minimem/src/cli/config.ts +0 -584
  215. package/references/minimem/src/cli/index.ts +0 -264
  216. package/references/minimem/src/cli/shared.ts +0 -161
  217. package/references/minimem/src/cli/sync/__tests__/central.test.ts +0 -152
  218. package/references/minimem/src/cli/sync/__tests__/conflicts.test.ts +0 -209
  219. package/references/minimem/src/cli/sync/__tests__/daemon.test.ts +0 -118
  220. package/references/minimem/src/cli/sync/__tests__/detection.test.ts +0 -207
  221. package/references/minimem/src/cli/sync/__tests__/integration.test.ts +0 -476
  222. package/references/minimem/src/cli/sync/__tests__/registry.test.ts +0 -363
  223. package/references/minimem/src/cli/sync/__tests__/state.test.ts +0 -255
  224. package/references/minimem/src/cli/sync/__tests__/validation.test.ts +0 -193
  225. package/references/minimem/src/cli/sync/__tests__/watcher.test.ts +0 -178
  226. package/references/minimem/src/cli/sync/central.ts +0 -292
  227. package/references/minimem/src/cli/sync/conflicts.ts +0 -204
  228. package/references/minimem/src/cli/sync/daemon.ts +0 -407
  229. package/references/minimem/src/cli/sync/detection.ts +0 -138
  230. package/references/minimem/src/cli/sync/index.ts +0 -107
  231. package/references/minimem/src/cli/sync/operations.ts +0 -373
  232. package/references/minimem/src/cli/sync/registry.ts +0 -279
  233. package/references/minimem/src/cli/sync/state.ts +0 -355
  234. package/references/minimem/src/cli/sync/validation.ts +0 -206
  235. package/references/minimem/src/cli/sync/watcher.ts +0 -234
  236. package/references/minimem/src/cli/version.ts +0 -34
  237. package/references/minimem/src/core/index.ts +0 -9
  238. package/references/minimem/src/core/indexer.ts +0 -628
  239. package/references/minimem/src/core/searcher.ts +0 -221
  240. package/references/minimem/src/db/schema.ts +0 -183
  241. package/references/minimem/src/db/sqlite-vec.ts +0 -24
  242. package/references/minimem/src/embeddings/__tests__/embeddings.test.ts +0 -431
  243. package/references/minimem/src/embeddings/batch-gemini.ts +0 -392
  244. package/references/minimem/src/embeddings/batch-openai.ts +0 -409
  245. package/references/minimem/src/embeddings/embeddings.ts +0 -434
  246. package/references/minimem/src/index.ts +0 -109
  247. package/references/minimem/src/internal.ts +0 -299
  248. package/references/minimem/src/minimem.ts +0 -1276
  249. package/references/minimem/src/search/__tests__/hybrid.test.ts +0 -247
  250. package/references/minimem/src/search/graph.ts +0 -234
  251. package/references/minimem/src/search/hybrid.ts +0 -151
  252. package/references/minimem/src/search/search.ts +0 -256
  253. package/references/minimem/src/server/__tests__/mcp.test.ts +0 -341
  254. package/references/minimem/src/server/__tests__/tools.test.ts +0 -364
  255. package/references/minimem/src/server/mcp.ts +0 -326
  256. package/references/minimem/src/server/tools.ts +0 -720
  257. package/references/minimem/src/session.ts +0 -460
  258. package/references/minimem/tsconfig.json +0 -19
  259. package/references/minimem/tsup.config.ts +0 -26
  260. package/references/minimem/vitest.config.ts +0 -24
  261. package/references/sessionlog/.husky/pre-commit +0 -1
  262. package/references/sessionlog/.lintstagedrc.json +0 -4
  263. package/references/sessionlog/.prettierignore +0 -4
  264. package/references/sessionlog/.prettierrc.json +0 -11
  265. package/references/sessionlog/LICENSE +0 -21
  266. package/references/sessionlog/README.md +0 -453
  267. package/references/sessionlog/eslint.config.js +0 -58
  268. package/references/sessionlog/package-lock.json +0 -3672
  269. package/references/sessionlog/package.json +0 -65
  270. package/references/sessionlog/src/__tests__/agent-hooks.test.ts +0 -570
  271. package/references/sessionlog/src/__tests__/agent-registry.test.ts +0 -127
  272. package/references/sessionlog/src/__tests__/claude-code-hooks.test.ts +0 -225
  273. package/references/sessionlog/src/__tests__/claude-generator.test.ts +0 -46
  274. package/references/sessionlog/src/__tests__/commit-msg.test.ts +0 -86
  275. package/references/sessionlog/src/__tests__/cursor-agent.test.ts +0 -224
  276. package/references/sessionlog/src/__tests__/e2e-live.test.ts +0 -890
  277. package/references/sessionlog/src/__tests__/event-log.test.ts +0 -183
  278. package/references/sessionlog/src/__tests__/flush-sentinel.test.ts +0 -105
  279. package/references/sessionlog/src/__tests__/gemini-agent.test.ts +0 -375
  280. package/references/sessionlog/src/__tests__/git-hooks.test.ts +0 -78
  281. package/references/sessionlog/src/__tests__/hook-managers.test.ts +0 -121
  282. package/references/sessionlog/src/__tests__/lifecycle-tasks.test.ts +0 -759
  283. package/references/sessionlog/src/__tests__/opencode-agent.test.ts +0 -338
  284. package/references/sessionlog/src/__tests__/redaction.test.ts +0 -136
  285. package/references/sessionlog/src/__tests__/session-repo.test.ts +0 -353
  286. package/references/sessionlog/src/__tests__/session-store.test.ts +0 -166
  287. package/references/sessionlog/src/__tests__/setup-ccweb.test.ts +0 -466
  288. package/references/sessionlog/src/__tests__/skill-live.test.ts +0 -461
  289. package/references/sessionlog/src/__tests__/summarize.test.ts +0 -348
  290. package/references/sessionlog/src/__tests__/task-plan-e2e.test.ts +0 -610
  291. package/references/sessionlog/src/__tests__/task-plan-live.test.ts +0 -632
  292. package/references/sessionlog/src/__tests__/transcript-timestamp.test.ts +0 -121
  293. package/references/sessionlog/src/__tests__/types.test.ts +0 -166
  294. package/references/sessionlog/src/__tests__/utils.test.ts +0 -333
  295. package/references/sessionlog/src/__tests__/validation.test.ts +0 -103
  296. package/references/sessionlog/src/__tests__/worktree.test.ts +0 -57
  297. package/references/sessionlog/src/agent/agents/claude-code.ts +0 -1089
  298. package/references/sessionlog/src/agent/agents/cursor.ts +0 -361
  299. package/references/sessionlog/src/agent/agents/gemini-cli.ts +0 -632
  300. package/references/sessionlog/src/agent/agents/opencode.ts +0 -540
  301. package/references/sessionlog/src/agent/registry.ts +0 -143
  302. package/references/sessionlog/src/agent/session-types.ts +0 -113
  303. package/references/sessionlog/src/agent/types.ts +0 -220
  304. package/references/sessionlog/src/cli.ts +0 -597
  305. package/references/sessionlog/src/commands/clean.ts +0 -133
  306. package/references/sessionlog/src/commands/disable.ts +0 -84
  307. package/references/sessionlog/src/commands/doctor.ts +0 -145
  308. package/references/sessionlog/src/commands/enable.ts +0 -202
  309. package/references/sessionlog/src/commands/explain.ts +0 -261
  310. package/references/sessionlog/src/commands/reset.ts +0 -105
  311. package/references/sessionlog/src/commands/resume.ts +0 -180
  312. package/references/sessionlog/src/commands/rewind.ts +0 -195
  313. package/references/sessionlog/src/commands/setup-ccweb.ts +0 -275
  314. package/references/sessionlog/src/commands/status.ts +0 -172
  315. package/references/sessionlog/src/config.ts +0 -165
  316. package/references/sessionlog/src/events/event-log.ts +0 -126
  317. package/references/sessionlog/src/git-operations.ts +0 -558
  318. package/references/sessionlog/src/hooks/git-hooks.ts +0 -165
  319. package/references/sessionlog/src/hooks/lifecycle.ts +0 -391
  320. package/references/sessionlog/src/index.ts +0 -650
  321. package/references/sessionlog/src/security/redaction.ts +0 -283
  322. package/references/sessionlog/src/session/state-machine.ts +0 -452
  323. package/references/sessionlog/src/store/checkpoint-store.ts +0 -509
  324. package/references/sessionlog/src/store/native-store.ts +0 -173
  325. package/references/sessionlog/src/store/provider-types.ts +0 -99
  326. package/references/sessionlog/src/store/session-store.ts +0 -266
  327. package/references/sessionlog/src/strategy/attribution.ts +0 -296
  328. package/references/sessionlog/src/strategy/common.ts +0 -207
  329. package/references/sessionlog/src/strategy/content-overlap.ts +0 -228
  330. package/references/sessionlog/src/strategy/manual-commit.ts +0 -988
  331. package/references/sessionlog/src/strategy/types.ts +0 -279
  332. package/references/sessionlog/src/summarize/claude-generator.ts +0 -115
  333. package/references/sessionlog/src/summarize/summarize.ts +0 -432
  334. package/references/sessionlog/src/types.ts +0 -508
  335. package/references/sessionlog/src/utils/chunk-files.ts +0 -49
  336. package/references/sessionlog/src/utils/commit-message.ts +0 -65
  337. package/references/sessionlog/src/utils/detect-agent.ts +0 -36
  338. package/references/sessionlog/src/utils/hook-managers.ts +0 -125
  339. package/references/sessionlog/src/utils/ide-tags.ts +0 -32
  340. package/references/sessionlog/src/utils/paths.ts +0 -79
  341. package/references/sessionlog/src/utils/preview-rewind.ts +0 -80
  342. package/references/sessionlog/src/utils/rewind-conflict.ts +0 -121
  343. package/references/sessionlog/src/utils/shadow-branch.ts +0 -109
  344. package/references/sessionlog/src/utils/string-utils.ts +0 -46
  345. package/references/sessionlog/src/utils/todo-extract.ts +0 -188
  346. package/references/sessionlog/src/utils/trailers.ts +0 -187
  347. package/references/sessionlog/src/utils/transcript-parse.ts +0 -177
  348. package/references/sessionlog/src/utils/transcript-timestamp.ts +0 -59
  349. package/references/sessionlog/src/utils/tree-ops.ts +0 -219
  350. package/references/sessionlog/src/utils/tty.ts +0 -72
  351. package/references/sessionlog/src/utils/validation.ts +0 -65
  352. package/references/sessionlog/src/utils/worktree.ts +0 -58
  353. package/references/sessionlog/src/wire-types.ts +0 -59
  354. package/references/sessionlog/templates/setup-env.sh +0 -153
  355. package/references/sessionlog/tsconfig.json +0 -18
  356. package/references/sessionlog/vitest.config.ts +0 -12
  357. package/references/skill-tree/.claude/settings.json +0 -6
  358. package/references/skill-tree/.sudocode/issues.jsonl +0 -19
  359. package/references/skill-tree/.sudocode/specs.jsonl +0 -3
  360. package/references/skill-tree/CLAUDE.md +0 -126
  361. package/references/skill-tree/README.md +0 -372
  362. package/references/skill-tree/docs/GAPS_v1.md +0 -221
  363. package/references/skill-tree/docs/INTEGRATION_PLAN.md +0 -467
  364. package/references/skill-tree/docs/TODOS.md +0 -91
  365. package/references/skill-tree/docs/anthropic_skill_guide.md +0 -1364
  366. package/references/skill-tree/docs/design/federated-skill-trees.md +0 -524
  367. package/references/skill-tree/docs/design/multi-agent-sync.md +0 -759
  368. package/references/skill-tree/docs/scraper/BRAINSTORM.md +0 -583
  369. package/references/skill-tree/docs/scraper/POC_PLAN.md +0 -420
  370. package/references/skill-tree/docs/scraper/README.md +0 -170
  371. package/references/skill-tree/examples/basic-usage.ts +0 -164
  372. package/references/skill-tree/package-lock.json +0 -1852
  373. package/references/skill-tree/package.json +0 -66
  374. package/references/skill-tree/scraper/README.md +0 -123
  375. package/references/skill-tree/scraper/docs/DESIGN.md +0 -683
  376. package/references/skill-tree/scraper/docs/PLAN.md +0 -336
  377. package/references/skill-tree/scraper/drizzle.config.ts +0 -10
  378. package/references/skill-tree/scraper/package-lock.json +0 -6329
  379. package/references/skill-tree/scraper/package.json +0 -68
  380. package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-description.md +0 -7
  381. package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-name.md +0 -7
  382. package/references/skill-tree/scraper/test/fixtures/minimal-skill/SKILL.md +0 -27
  383. package/references/skill-tree/scraper/test/fixtures/skill-json/SKILL.json +0 -21
  384. package/references/skill-tree/scraper/test/fixtures/skill-with-meta/SKILL.md +0 -54
  385. package/references/skill-tree/scraper/test/fixtures/skill-with-meta/_meta.json +0 -24
  386. package/references/skill-tree/scraper/test/fixtures/valid-skill/SKILL.md +0 -93
  387. package/references/skill-tree/scraper/test/fixtures/valid-skill/_meta.json +0 -22
  388. package/references/skill-tree/scraper/tsup.config.ts +0 -14
  389. package/references/skill-tree/scraper/vitest.config.ts +0 -17
  390. package/references/skill-tree/scripts/convert-to-vitest.ts +0 -166
  391. package/references/skill-tree/skills/skill-writer/SKILL.md +0 -339
  392. package/references/skill-tree/skills/skill-writer/references/examples.md +0 -326
  393. package/references/skill-tree/skills/skill-writer/references/patterns.md +0 -210
  394. package/references/skill-tree/skills/skill-writer/references/quality-checklist.md +0 -123
  395. package/references/skill-tree/test/run-all.ts +0 -106
  396. package/references/skill-tree/test/utils.ts +0 -128
  397. package/references/skill-tree/vitest.config.ts +0 -16
@@ -1,372 +0,0 @@
1
- # skill-tree
2
-
3
- A TypeScript library for managing agent skill versions and evolution. Store, version, serve, sync, and federate reusable skills for AI agents.
4
-
5
- ## Overview
6
-
7
- skill-tree helps you build and maintain a library of reusable skills for AI agents by:
8
-
9
- - **Storing skills** in a versioned, searchable format (OpenSkills-compatible)
10
- - **Evolving skills** through versioning, forking, and merging
11
- - **Serving skills** via dynamic loadouts with expand/collapse, profiles, and token budgeting
12
- - **Syncing skills** across agents with git-based multi-agent collaboration
13
- - **Federating skills** across repositories for cross-organization sharing
14
-
15
- Inspired by research on skill libraries ([arXiv:2512.17102](https://arxiv.org/abs/2512.17102)), [Claudeception](https://github.com/blader/Claudeception), and [OpenSkills](https://github.com/numman-ali/openskills).
16
-
17
- ## Installation
18
-
19
- ```bash
20
- npm install skill-tree
21
- ```
22
-
23
- ## Quick Start
24
-
25
- ```typescript
26
- import { createSkillBank, type Skill } from 'skill-tree';
27
-
28
- // Create a skill bank with filesystem storage
29
- const bank = createSkillBank({
30
- storage: { basePath: './skills' },
31
- });
32
-
33
- await bank.initialize();
34
-
35
- // Save a skill
36
- await bank.saveSkill({
37
- id: 'typescript-esm-import-fix',
38
- name: 'TypeScript ESM Import Fix',
39
- version: '1.0.0',
40
- description: 'Fix TypeScript ES module import errors',
41
- problem: 'TypeScript with ES modules requires explicit .js extensions',
42
- triggerConditions: [{ type: 'error', value: "Cannot find module './utils'" }],
43
- solution: 'Add .js extension to all relative imports.',
44
- verification: 'Run tsc --noEmit to verify no import errors',
45
- examples: [],
46
- author: 'me',
47
- tags: ['typescript', 'esm'],
48
- createdAt: new Date(),
49
- updatedAt: new Date(),
50
- status: 'active',
51
- metrics: { usageCount: 0, successRate: 0, feedbackScores: [] },
52
- } as Skill);
53
-
54
- // Search for skills
55
- const skills = await bank.searchSkills('typescript');
56
-
57
- // Create a new version
58
- const updated = await bank.createVersion('typescript-esm-import-fix', {
59
- solution: 'Add .js extension, or use "moduleResolution": "bundler".',
60
- }, { bumpType: 'minor' });
61
-
62
- await bank.shutdown();
63
- ```
64
-
65
- ## Core Concepts
66
-
67
- ### Skills
68
-
69
- A skill represents a reusable piece of knowledge:
70
-
71
- ```typescript
72
- interface Skill {
73
- id: string; // Unique identifier
74
- name: string; // Human-readable name
75
- version: string; // Semantic version
76
- description: string; // For search and matching
77
- problem: string; // What problem this solves
78
- triggerConditions: TriggerCondition[]; // When to apply
79
- solution: string; // Step-by-step solution
80
- verification: string; // How to verify it worked
81
- examples: SkillExample[]; // Usage examples
82
- tags: string[]; // Categorization
83
- status: SkillStatus; // 'draft' | 'active' | 'deprecated' | 'experimental'
84
- metrics: SkillMetrics; // Usage tracking
85
- // ... namespace, taxonomy, lineage
86
- }
87
- ```
88
-
89
- ### Storage
90
-
91
- Two backends:
92
-
93
- ```typescript
94
- // Filesystem (JSON source of truth + SQLite cache)
95
- const bank = createSkillBank({
96
- storage: { basePath: './skills' },
97
- });
98
-
99
- // Memory (for testing)
100
- const bank = createSkillBank({
101
- storage: { type: 'memory' },
102
- });
103
- ```
104
-
105
- Skills are stored in the OpenSkills format:
106
-
107
- ```
108
- skills/
109
- ├── my-skill/
110
- │ ├── SKILL.md # Skill content (YAML + Markdown)
111
- │ └── .skilltree.json # Metadata and lineage
112
- └── .versions/
113
- └── my-skill/
114
- ├── 1.0.0.json # Version snapshots
115
- └── 1.1.0.json
116
- ```
117
-
118
- ## Features
119
-
120
- ### Versioning
121
-
122
- Semantic versioning with full lineage tracking:
123
-
124
- ```typescript
125
- // Create new version
126
- const v2 = await bank.createVersion('my-skill', updates, {
127
- bumpType: 'minor',
128
- changelog: 'Added alternative solution',
129
- });
130
-
131
- // Get version history
132
- const history = await bank.getVersionHistory('my-skill');
133
-
134
- // Rollback to previous version
135
- const restored = await bank.rollbackSkill('my-skill', '1.0.0');
136
-
137
- // Compare versions
138
- const diff = await bank.compareVersions('my-skill', '1.0.0', '2.0.0');
139
-
140
- // Fork for a specialized use case
141
- const forked = await bank.forkSkill('my-skill', {
142
- newId: 'my-skill-react',
143
- newName: 'My Skill (React variant)',
144
- reason: 'Specialized for React projects',
145
- });
146
- ```
147
-
148
- ### Serving Layer
149
-
150
- Dynamic skill loadouts for agent context windows:
151
-
152
- ```typescript
153
- const { server } = await bank.createServingLayer({
154
- maxExpanded: 5,
155
- });
156
-
157
- // Orchestrator sets loadout based on task
158
- await server.setLoadoutForTask('Fix authentication bug');
159
-
160
- // Or use a built-in profile
161
- await server.setLoadoutFromProfile('debugging');
162
-
163
- // Render skills into system prompt
164
- const prompt = server.renderSystemPrompt();
165
-
166
- // Agent-side API
167
- const view = server.agentListLoadout();
168
- const skill = server.agentExpandSkill('some-skill-id');
169
- server.agentCollapseSkill('some-skill-id');
170
- await server.agentRequestSkills(['another-skill']);
171
- ```
172
-
173
- ### Multi-Agent Sync
174
-
175
- Git-based skill synchronization:
176
-
177
- ```typescript
178
- import { createDefaultSyncConfig } from 'skill-tree';
179
-
180
- const bank = createSkillBank({
181
- storage: { basePath: './skills' },
182
- sync: {
183
- config: createDefaultSyncConfig({
184
- repoUrl: 'git@github.com:org/skills.git',
185
- agentId: 'agent-1',
186
- }),
187
- pullOnInit: true,
188
- },
189
- });
190
-
191
- await bank.initialize(); // auto-pulls remote changes
192
-
193
- // Manual sync
194
- await bank.sync.push();
195
- await bank.sync.pull();
196
- const status = await bank.sync.status();
197
-
198
- await bank.shutdown(); // flushes pending sync
199
- ```
200
-
201
- ### Federation
202
-
203
- Connect independent skill repositories:
204
-
205
- ```typescript
206
- // Add a remote
207
- await bank.federation.addRemote('team', {
208
- url: 'git@github.com:org/team-skills.git',
209
- access: 'read-write',
210
- });
211
-
212
- // Browse remote skills
213
- const remoteSkills = await bank.federation.browse('team');
214
-
215
- // Import a skill
216
- const result = await bank.federation.import('team', 'useful-pattern');
217
-
218
- // Share a skill
219
- await bank.federation.share('my-skill', 'team');
220
-
221
- // Check for upstream updates
222
- const updates = await bank.federation.checkUpstream();
223
- ```
224
-
225
- ### Events
226
-
227
- Subscribe to skill bank events:
228
-
229
- ```typescript
230
- // Simple synchronous listeners
231
- const unsubscribe = bank.on((event) => {
232
- switch (event.type) {
233
- case 'skill:created':
234
- console.log('New skill:', event.skill.name);
235
- break;
236
- case 'skill:updated':
237
- console.log('Updated:', event.skill.name, 'from', event.previousVersion);
238
- break;
239
- }
240
- });
241
-
242
- // Advanced: async hooks with priority and filtering
243
- bank.getHookRegistry().register({
244
- event: 'storage:after-save',
245
- handler: async (context) => {
246
- console.log('Skill saved to storage');
247
- },
248
- priority: 'normal',
249
- });
250
- ```
251
-
252
- ### AGENTS.md Integration
253
-
254
- Bidirectional sync between skill bank and AGENTS.md files:
255
-
256
- ```typescript
257
- import { createAgentsSync } from 'skill-tree';
258
-
259
- const sync = createAgentsSync(bank.getStorage());
260
- const result = await sync.sync('./AGENTS.md', {
261
- direction: 'bidirectional',
262
- });
263
- ```
264
-
265
- ### Namespace Support
266
-
267
- Multi-tier skill trees for team environments:
268
-
269
- ```typescript
270
- const bank = createSkillBank({
271
- storage: { basePath: './skills' },
272
- namespace: {
273
- agentId: 'agent-1',
274
- team: 'frontend',
275
- defaultScope: 'personal',
276
- defaultVisibility: 'private',
277
- },
278
- });
279
-
280
- // List skills by scope
281
- const personal = await bank.listSkills({ scope: 'personal', owner: 'agent-1' });
282
- const teamSkills = await bank.listSkills({ scope: 'team', team: 'frontend' });
283
- ```
284
-
285
- ## API Reference
286
-
287
- ### SkillBank
288
-
289
- Main orchestrator class, created via `createSkillBank(config)`.
290
-
291
- | Method | Description |
292
- |--------|-------------|
293
- | `initialize()` | Initialize storage, federation, and sync |
294
- | `shutdown()` | Clean shutdown (flushes sync) |
295
- | `getSkill(id, version?)` | Get skill by ID |
296
- | `listSkills(filter?)` | List skills with optional filter |
297
- | `searchSkills(query)` | Full-text search |
298
- | `saveSkill(skill)` | Save or update a skill |
299
- | `deleteSkill(id, version?)` | Delete a skill |
300
- | `deprecateSkill(id)` | Mark skill as deprecated |
301
- | `createVersion(id, updates, options?)` | Create new version |
302
- | `forkSkill(id, options)` | Fork a skill |
303
- | `getVersionHistory(id)` | Get version history |
304
- | `getLineage(id)` | Get full lineage |
305
- | `rollbackSkill(id, version)` | Rollback to version |
306
- | `compareVersions(id, vA, vB)` | Diff two versions |
307
- | `on(handler)` | Subscribe to events (returns unsubscribe fn) |
308
- | `off(handler)` | Unsubscribe from events |
309
- | `getStats()` | Get skill bank statistics |
310
- | `exportAll()` | Export all skills |
311
- | `importSkills(skills)` | Bulk import skills |
312
- | `createServingLayer(config?)` | Create a SkillGraphServer |
313
- | `getStorage()` | Access underlying storage adapter |
314
- | `getHookRegistry()` | Access hook registry |
315
- | `sync` | SyncManager accessor (throws if not configured) |
316
- | `federation` | FederationManager accessor (requires basePath) |
317
-
318
- ### Versioning Utilities
319
-
320
- ```typescript
321
- import {
322
- parseVersion,
323
- compareVersions,
324
- bumpVersion,
325
- satisfiesRange,
326
- } from 'skill-tree';
327
-
328
- bumpVersion('1.2.3', 'minor'); // '1.3.0'
329
- satisfiesRange('1.5.0', '^1.2.0'); // true
330
- ```
331
-
332
- ## Skill Format
333
-
334
- Skills use YAML frontmatter + Markdown (OpenSkills-compatible):
335
-
336
- ```markdown
337
- ---
338
- name: typescript-esm-import-fix
339
- description: |
340
- Fix TypeScript ES module import errors by adding .js extension
341
- version: 1.0.0
342
- author: extracted
343
- status: active
344
- date: 2024-01-15
345
- tags:
346
- - typescript
347
- - esm
348
- - imports
349
- ---
350
-
351
- ## Problem
352
-
353
- TypeScript with ES modules requires explicit .js extensions in imports.
354
-
355
- ## Trigger Conditions
356
-
357
- - **error**: `Cannot find module './utils'`
358
- - **pattern**: `import .* from '\./[^']+(?<!\.js)'`
359
-
360
- ## Solution
361
-
362
- 1. Add `.js` extension to relative imports
363
- 2. Even for `.ts` files, use `.js` in the import path
364
-
365
- ## Verification
366
-
367
- Run `tsc` and verify no module resolution errors.
368
- ```
369
-
370
- ## License
371
-
372
- MIT
@@ -1,221 +0,0 @@
1
- # Integration Gaps Tracking - v1
2
-
3
- This document tracks the remaining work to complete the skill indexer integration as defined in [INTEGRATION_PLAN.md](./INTEGRATION_PLAN.md).
4
-
5
- ## Status Overview
6
-
7
- | Phase | Status | Completion |
8
- |-------|--------|------------|
9
- | Phase 1: Import Pipeline | ✅ Complete | 100% |
10
- | Phase 2: CLI Unification | ✅ Complete | 100% |
11
- | Phase 3: Unified Storage | ✅ Complete | 100% |
12
- | Phase 4: Direct Integration | ✅ Complete | 100% |
13
- | Phase 5: Bidirectional Sync | ✅ Complete | 100% |
14
-
15
- ---
16
-
17
- ## High Priority Items
18
-
19
- ### 1. Unified Configuration System
20
-
21
- **Status**: ✅ Complete
22
-
23
- **Goal**: Single config file for both skill-tree and indexer settings.
24
-
25
- **Location**: `~/.skill-tree/config.yaml`
26
-
27
- **Tasks**:
28
- - [x] Create `src/config/` module
29
- - [x] Define `SkillTreeConfig` interface
30
- - [x] Implement config file loading with defaults
31
- - [x] Support environment variable substitution
32
- - [x] Integrate with CLI global options
33
- - [x] Integrate with IndexerService
34
-
35
- **Files Created**:
36
- - `src/config/types.ts` - Configuration type definitions
37
- - `src/config/loader.ts` - Config loading and merging logic
38
- - `src/config/index.ts` - Module exports
39
- - `src/cli/commands/config.ts` - CLI config command
40
-
41
- **Config Schema**:
42
- ```yaml
43
- storage:
44
- type: sqlite | filesystem | memory
45
- path: ~/.skill-tree/skills.db
46
-
47
- indexer:
48
- github_token: ${GITHUB_TOKEN}
49
- anthropic_key: ${ANTHROPIC_API_KEY}
50
- sources:
51
- - https://github.com/VoltAgent/awesome-agent-skills
52
- batch_size: 10
53
- min_confidence: 0.7
54
-
55
- matching:
56
- embedding_model: text-embedding-3-small
57
- similarity_threshold: 0.8
58
-
59
- sync:
60
- auto_check: false
61
- check_interval_hours: 24
62
- conflict_resolution: prompt
63
-
64
- cli:
65
- output_format: table
66
- color: true
67
- quiet: false
68
- ```
69
-
70
- ---
71
-
72
- ### 2. IndexerService Direct Execution
73
-
74
- **Status**: ✅ Complete
75
-
76
- **Goal**: CLI commands execute directly instead of delegating to subprocess.
77
-
78
- **Tasks**:
79
- - [x] Update `IndexerService.initialize()` to properly load scraper modules
80
- - [x] Implement `scrape()` method with actual scraper integration
81
- - [x] Implement `classify()` method with actual indexer integration
82
- - [x] Implement `detectRelationships()` method
83
- - [x] Implement `getTaxonomyTree()` using storage adapter
84
- - [x] Implement `getStats()` method
85
- - [x] Update CLI commands to use IndexerService directly
86
- - [x] Add fallback to subprocess if modules unavailable
87
-
88
- **Files Modified**:
89
- - `src/services/indexer.ts` - Full IndexerService implementation
90
- - `src/cli/commands/indexer/scrape.ts` - Direct execution with fallback
91
- - `src/cli/commands/indexer/classify.ts` - Direct execution with fallback
92
- - `src/cli/commands/indexer/taxonomy.ts` - Direct execution with fallback
93
- - `src/cli/commands/indexer/relationships.ts` - Direct execution with fallback
94
- - `src/cli/commands/indexer/stats.ts` - Direct execution with fallback
95
-
96
- ---
97
-
98
- ## Medium Priority Items
99
-
100
- ### 3. Direct SkillBank Integration
101
-
102
- **Status**: ✅ Complete
103
-
104
- **Goal**: IndexerService writes directly to SkillBank, no export/import step.
105
-
106
- **Tasks**:
107
- - [x] Implement `IndexerService.scrapeAndIndex()` method
108
- - [x] Convert scraped skills on-the-fly using converter
109
- - [x] Store directly via SkillBank.addSkill()
110
- - [x] Auto-place in taxonomy after save
111
- - [x] Update `skill-tree index scrape` to use direct integration
112
-
113
- **Files Modified**:
114
- - `src/services/indexer.ts` - Added `scrapeAndIndex()` method
115
- - `src/skill-bank.ts` - Added `addSkill()` method with taxonomy placement
116
- - `src/cli/commands/indexer/scrape.ts` - Added `--import` flag for auto-import
117
-
118
- **Workflow After**:
119
- ```bash
120
- # One command does everything
121
- skill-tree index scrape https://github.com/org/repo
122
- # Skills immediately available in skill-tree
123
- skill-tree list
124
- ```
125
-
126
- ---
127
-
128
- ### 4. SkillBank Event System
129
-
130
- **Status**: ✅ Complete
131
-
132
- **Goal**: Event-driven hooks for skill lifecycle.
133
-
134
- **Tasks**:
135
- - [x] Add EventEmitter to SkillBank (already existed via `on()`)
136
- - [x] Define event types: `skill:created`, `skill:updated`, `skill:deleted`
137
- - [x] Emit events from `addSkill()`, `updateSkill()`, `deleteSkill()`
138
- - [x] Hook relationship detection to `skill:created` for imported skills
139
- - [x] Add `on()` and `off()` methods to SkillBank API
140
- - [x] Add `onEvent()` for typed event subscriptions
141
- - [x] Add `getStorage()` for advanced integration
142
-
143
- **Files Modified**:
144
- - `src/skill-bank.ts` - Enhanced event system with `off()`, `onEvent()`, `getStorage()`
145
-
146
- **Event Interface**:
147
- ```typescript
148
- interface SkillEvent {
149
- type: 'skill:created' | 'skill:updated' | 'skill:deleted' | 'skill:deprecated';
150
- skill: Skill;
151
- timestamp: Date;
152
- source?: 'manual' | 'imported' | 'extracted';
153
- }
154
- ```
155
-
156
- ---
157
-
158
- ## Lower Priority Items
159
-
160
- ### 5. Bidirectional Sync
161
-
162
- **Status**: ✅ Complete
163
-
164
- **Goal**: Keep skills in sync with remote sources.
165
-
166
- **Tasks**:
167
- - [x] Create `src/services/sync.ts`
168
- - [x] Define `SkillSyncState` type
169
- - [x] Implement `checkForUpdates()` - compare ETags/versions
170
- - [x] Implement `pullRemoteChanges()` - fetch and merge
171
- - [x] Implement `detectConflicts()` - local vs remote changes
172
- - [x] Add `skill-tree index sync` command with options:
173
- - [x] `--status` - show sync state
174
- - [x] `--pull` - pull remote changes
175
- - [x] `--dry-run` - preview changes
176
-
177
- **Files Created**:
178
- - `src/services/sync.ts` - Full SyncService implementation
179
-
180
- **Files Modified**:
181
- - `src/cli/commands/indexer/sync.ts` - Updated with sync status and pull commands
182
-
183
- **Note**: SQLite sync_state table not yet added to schema (sync states stored in memory for now). This can be added in a future iteration.
184
-
185
- ---
186
-
187
- ## Open Questions (Decisions Made)
188
-
189
- | Question | Status | Decision |
190
- |----------|--------|----------|
191
- | Taxonomy ownership | ✅ Resolved | Preserve original, allow re-classification on demand |
192
- | Deduplication strategy | ✅ Resolved | Use `externalSource.url` as dedup key |
193
- | Version conflict resolution | ✅ Resolved | Default to manual, with `--resolve` flag for automation |
194
- | Namespace separation | ✅ Resolved | Use `source.type` field, no namespace prefix |
195
-
196
- ---
197
-
198
- ## Success Criteria Checklist
199
-
200
- - [x] Single CLI (`skill-tree`) for all operations
201
- - [x] Single database with skills from all sources
202
- - [x] Taxonomy browsing works for all skills
203
- - [x] Relationships detected across indexed and extracted skills
204
- - [x] Clear provenance tracking (source: extracted vs indexed)
205
- - [x] Seamless workflow from discovery to usage
206
-
207
- ---
208
-
209
- ## Change Log
210
-
211
- | Date | Change |
212
- |------|--------|
213
- | 2025-01-XX | Initial gap analysis created |
214
- | 2025-01-XX | Phases 1-3 implemented |
215
- | 2025-01-XX | Tests added (56 tests) |
216
- | 2025-02-01 | Unified configuration system implemented |
217
- | 2025-02-01 | IndexerService direct execution implemented |
218
- | 2025-02-01 | Direct SkillBank integration implemented |
219
- | 2025-02-01 | SkillBank event system enhanced |
220
- | 2025-02-01 | Bidirectional sync service implemented |
221
- | 2025-02-01 | All phases complete |