tribunal-kit 9.2.1 → 9.2.4

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 (1164) hide show
  1. package/.agent/.tribunal/session.jsonl +15 -0
  2. package/.agent/ARCHITECTURE.md +4 -4
  3. package/.agent/agents/agent-shield-auditor.md +18 -0
  4. package/.agent/agents/harness-manager.md +49 -0
  5. package/.agent/agents/human-gate-negotiator.md +22 -0
  6. package/.agent/agents/kernel-scheduler.md +56 -0
  7. package/.agent/agents/memory-archivist.md +37 -0
  8. package/.agent/agents/orchestrator.md +7 -0
  9. package/.agent/agents/project-planner.md +5 -0
  10. package/.agent/agents/security-auditor.md +5 -0
  11. package/.agent/config/claude.json +1 -1
  12. package/.agent/config/plugin.json +1 -1
  13. package/.agent/history/architecture-explorer.html +352 -0
  14. package/.agent/history/architecture-graph.yaml +181 -1
  15. package/.agent/history/graph-cache.json +323 -13
  16. package/.agent/history/integrity_manifest.json +3937 -299
  17. package/.agent/history/memory/.memory.idx +50 -50
  18. package/.agent/history/snapshots/.opencode__plugins__tribunal.js.json +12 -0
  19. package/.agent/history/snapshots/.pi__extensions__tribunal.ts.json +12 -0
  20. package/.agent/history/snapshots/bin__adapter-install.js.json +1 -1
  21. package/.agent/history/snapshots/bin__mcp-server.js.json +4 -2
  22. package/.agent/history/snapshots/bin__proxy-server.js.json +1 -1
  23. package/.agent/history/snapshots/bin__spawn-agent.js.json +1 -1
  24. package/.agent/history/snapshots/bin__wrapper.js.json +1 -1
  25. package/.agent/history/snapshots/eslint.config.js.json +1 -1
  26. package/.agent/history/snapshots/hooks__session-start.js.json +11 -0
  27. package/.agent/history/snapshots/scripts__apply-version.js.json +11 -0
  28. package/.agent/history/snapshots/scripts__audit_skill_sdo.js.json +11 -0
  29. package/.agent/history/snapshots/scripts__clean-pycache.js.json +11 -0
  30. package/.agent/history/snapshots/scripts__context_compiler.js.json +17 -0
  31. package/.agent/history/snapshots/scripts__modernize_skills.js.json +11 -0
  32. package/.agent/history/snapshots/scripts__package-cores.js.json +12 -0
  33. package/.agent/history/snapshots/scripts__skill_enhancement_engine.js.json +11 -0
  34. package/.agent/history/snapshots/scripts__sync-skills.js.json +11 -0
  35. package/.agent/history/snapshots/scripts__telemetry_gc.js.json +11 -0
  36. package/.agent/history/snapshots/scripts__validate-payload.js.json +1 -1
  37. package/.agent/history/snapshots/test__integration__browser_cli.test.js.json +12 -0
  38. package/.agent/history/snapshots/test__integration__sync_status.test.js.json +1 -1
  39. package/.agent/history/snapshots/test__unit__ast_context_loader.test.js.json +12 -0
  40. package/.agent/history/snapshots/test__unit__browser_case_bridge.test.js.json +11 -0
  41. package/.agent/history/snapshots/test__unit__browser_discovery.test.js.json +10 -0
  42. package/.agent/history/snapshots/test__unit__browser_idpi.test.js.json +10 -0
  43. package/.agent/history/snapshots/test__unit__browser_sentinel.test.js.json +11 -0
  44. package/.agent/history/snapshots/test__unit__browser_synapse.test.js.json +10 -0
  45. package/.agent/history/snapshots/test__unit__browser_trimmer.test.js.json +10 -0
  46. package/.agent/history/snapshots/test__unit__context_compiler.test.js.json +26 -0
  47. package/.agent/history/snapshots/test__unit__init.test.js.json +1 -1
  48. package/.agent/history/snapshots/test__unit__learn.test.js.json +1 -1
  49. package/.agent/history/snapshots/test__unit__mcp_server.test.js.json +1 -1
  50. package/.agent/history/snapshots/test__unit__platform_download_audit.test.js.json +11 -0
  51. package/.agent/history/snapshots/test__unit__prompt_compiler.test.js.json +10 -0
  52. package/.agent/history/snapshots/test__unit__sdd_integration.test.js.json +12 -0
  53. package/.agent/history/snapshots/test__unit__stress.test.js.json +1 -1
  54. package/.agent/history/snapshots/test__unit__token_budget_broker.test.js.json +10 -0
  55. package/.agent/history/snapshots/test__unit__tui.test.js.json +10 -0
  56. package/.agent/routing_index.json +1 -1
  57. package/.agent/rules/GEMINI.md +1 -1
  58. package/.agent/rules/kernel.md +86 -0
  59. package/.agent/scripts/_utils.js +79 -1
  60. package/.agent/scripts/checklist.js +1 -1
  61. package/.agent/scripts/context_broker.js +0 -8
  62. package/.agent/scripts/context_compiler.js +1106 -3
  63. package/.agent/scripts/guardrail_engine.js +48 -11
  64. package/.agent/scripts/harness_manager.js +60 -0
  65. package/.agent/scripts/lint_runner.js +1 -1
  66. package/.agent/scripts/mcp_server.js +181 -0
  67. package/.agent/scripts/memory_archivist.js +97 -0
  68. package/.agent/scripts/memory_consolidator.js +37 -0
  69. package/.agent/scripts/memory_engine.js +526 -325
  70. package/.agent/scripts/pipeline_engine.js +45 -107
  71. package/.agent/scripts/session_logger.js +115 -0
  72. package/.agent/scripts/session_manager.js +10 -0
  73. package/.agent/scripts/swarm_dispatcher.js +197 -49
  74. package/.agent/scripts/syscall_registry.js +105 -0
  75. package/.agent/scripts/test_runner.js +1 -1
  76. package/.agent/scripts/verify_all.js +2 -2
  77. package/.agent/skill_topic_map.json +98 -22
  78. package/.agent/skills/12-principles-of-animation/SKILL.md +1 -76
  79. package/.agent/skills/60fps-animation/SKILL.md +1 -76
  80. package/.agent/skills/accessible-animation/SKILL.md +1 -76
  81. package/.agent/skills/adapt/SKILL.md +1 -76
  82. package/.agent/skills/advanced-rag-pipelines/SKILL.md +1 -76
  83. package/.agent/skills/agent-organizer/SKILL.md +1 -76
  84. package/.agent/skills/agent-syscall-guidelines/SKILL.md +25 -0
  85. package/.agent/skills/agentic-patterns/SKILL.md +1 -76
  86. package/.agent/skills/agentic-workflows-2026/SKILL.md +6 -73
  87. package/.agent/skills/agentshield-security/SKILL.md +26 -0
  88. package/.agent/skills/ai-app-hardening/SKILL.md +1 -76
  89. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +1 -76
  90. package/.agent/skills/animation-on-scroll/SKILL.md +1 -76
  91. package/.agent/skills/animation-systems/SKILL.md +1 -76
  92. package/.agent/skills/antfu-conventions/SKILL.md +0 -75
  93. package/.agent/skills/api-patterns/SKILL.md +1 -76
  94. package/.agent/skills/api-security-auditor/SKILL.md +1 -76
  95. package/.agent/skills/app-builder/SKILL.md +1 -76
  96. package/.agent/skills/appflow-wireframe/SKILL.md +1 -76
  97. package/.agent/skills/apple-design/SKILL.md +1 -76
  98. package/.agent/skills/architecture/SKILL.md +1 -76
  99. package/.agent/skills/audit-and-fix/SKILL.md +41 -77
  100. package/.agent/skills/authentication-best-practices/SKILL.md +1 -76
  101. package/.agent/skills/backend-security-expert/SKILL.md +1 -76
  102. package/.agent/skills/baseline-ui/SKILL.md +1 -76
  103. package/.agent/skills/bash-linux/SKILL.md +1 -76
  104. package/.agent/skills/behavioral-modes/SKILL.md +1 -76
  105. package/.agent/skills/better-colors/SKILL.md +1 -76
  106. package/.agent/skills/better-typography/SKILL.md +1 -76
  107. package/.agent/skills/better-ui/SKILL.md +1 -76
  108. package/.agent/skills/bolder/SKILL.md +1 -76
  109. package/.agent/skills/brainstorming/SKILL.md +1 -76
  110. package/.agent/skills/browser-audit/SKILL.md +1 -76
  111. package/.agent/skills/browser-native-ai/SKILL.md +1 -76
  112. package/.agent/skills/build-primitive/SKILL.md +1 -76
  113. package/.agent/skills/building-native-ui/SKILL.md +1 -76
  114. package/.agent/skills/cicd-pro/SKILL.md +1 -76
  115. package/.agent/skills/clarify/SKILL.md +1 -76
  116. package/.agent/skills/clean-code/SKILL.md +1 -76
  117. package/.agent/skills/cloud-architect/SKILL.md +1 -76
  118. package/.agent/skills/cobejs/SKILL.md +1 -76
  119. package/.agent/skills/code-review-checklist/SKILL.md +1 -76
  120. package/.agent/skills/codebase-design/SKILL.md +1 -76
  121. package/.agent/skills/colorize/SKILL.md +1 -76
  122. package/.agent/skills/compact-landing/SKILL.md +1 -76
  123. package/.agent/skills/company-logos/SKILL.md +1 -76
  124. package/.agent/skills/config-validator/SKILL.md +1 -76
  125. package/.agent/skills/containerization-pro/SKILL.md +1 -76
  126. package/.agent/skills/context-engineering-pro/SKILL.md +5 -73
  127. package/.agent/skills/create-design-md/SKILL.md +1 -76
  128. package/.agent/skills/critique/SKILL.md +1 -76
  129. package/.agent/skills/csharp-developer/SKILL.md +1 -76
  130. package/.agent/skills/data-validation-schemas/SKILL.md +1 -76
  131. package/.agent/skills/database-design/SKILL.md +1 -76
  132. package/.agent/skills/delight/SKILL.md +1 -76
  133. package/.agent/skills/deployment-procedures/SKILL.md +1 -76
  134. package/.agent/skills/design-lab/SKILL.md +1 -76
  135. package/.agent/skills/devops-engineer/SKILL.md +1 -76
  136. package/.agent/skills/devops-incident-responder/SKILL.md +1 -76
  137. package/.agent/skills/diagnosing-bugs/SKILL.md +1 -76
  138. package/.agent/skills/distill/SKILL.md +1 -76
  139. package/.agent/skills/documentation-templates/SKILL.md +1 -76
  140. package/.agent/skills/domain-modeling/SKILL.md +1 -76
  141. package/.agent/skills/duckdb-analytical-sql/SKILL.md +1 -76
  142. package/.agent/skills/edge-ai-mobile/SKILL.md +1 -76
  143. package/.agent/skills/edge-computing/SKILL.md +1 -76
  144. package/.agent/skills/emil-design-eng/SKILL.md +1 -76
  145. package/.agent/skills/error-resilience/SKILL.md +1 -76
  146. package/.agent/skills/expo-router-v4/SKILL.md +1 -76
  147. package/.agent/skills/extract-design-system/SKILL.md +1 -76
  148. package/.agent/skills/fabel-protocol/SKILL.md +3 -73
  149. package/.agent/skills/fixing-accessibility/SKILL.md +1 -76
  150. package/.agent/skills/fixing-metadata/SKILL.md +1 -76
  151. package/.agent/skills/fixing-motion-performance/SKILL.md +1 -76
  152. package/.agent/skills/framer-motion-expert/SKILL.md +1 -76
  153. package/.agent/skills/frontend-design/SKILL.md +1 -76
  154. package/.agent/skills/frontend-security-expert/SKILL.md +1 -76
  155. package/.agent/skills/game-design-expert/SKILL.md +1 -76
  156. package/.agent/skills/game-engineering-expert/SKILL.md +1 -76
  157. package/.agent/skills/generative-ui-expert/SKILL.md +1 -76
  158. package/.agent/skills/geo-fundamentals/SKILL.md +1 -76
  159. package/.agent/skills/git-pro/SKILL.md +1 -76
  160. package/.agent/skills/github-operations/SKILL.md +1 -76
  161. package/.agent/skills/gpt-taste/SKILL.md +1 -76
  162. package/.agent/skills/graph-engineering/SKILL.md +28 -0
  163. package/.agent/skills/gsap-core/SKILL.md +1 -76
  164. package/.agent/skills/gsap-frameworks/SKILL.md +1 -76
  165. package/.agent/skills/gsap-performance/SKILL.md +1 -76
  166. package/.agent/skills/gsap-plugins/SKILL.md +1 -76
  167. package/.agent/skills/gsap-react/SKILL.md +1 -76
  168. package/.agent/skills/gsap-scrolltrigger/SKILL.md +1 -76
  169. package/.agent/skills/gsap-timeline/SKILL.md +1 -76
  170. package/.agent/skills/gsap-utils/SKILL.md +1 -76
  171. package/.agent/skills/harden/SKILL.md +1 -76
  172. package/.agent/skills/harness-protocol/SKILL.md +6 -73
  173. package/.agent/skills/hf-cli/SKILL.md +239 -0
  174. package/.agent/skills/hf-cloud-aws-context-discovery/SKILL.md +74 -0
  175. package/.agent/skills/hf-cloud-python-env-setup/SKILL.md +90 -0
  176. package/.agent/skills/hf-cloud-python-env-setup/requirements.txt +17 -0
  177. package/.agent/skills/hf-cloud-python-env-setup/scripts/check_versions.py +29 -0
  178. package/.agent/skills/hf-cloud-python-env-setup/scripts/setup_env.py +143 -0
  179. package/.agent/skills/hf-cloud-sagemaker-deployment-planner/SKILL.md +90 -0
  180. package/.agent/skills/hf-cloud-sagemaker-iam-preflight/SKILL.md +102 -0
  181. package/.agent/skills/hf-cloud-sagemaker-iam-preflight/references/minimum-permissions.json +47 -0
  182. package/.agent/skills/hf-cloud-sagemaker-iam-preflight/references/trust-policy.json +12 -0
  183. package/.agent/skills/hf-cloud-sagemaker-iam-preflight/scripts/check_role.py +184 -0
  184. package/.agent/skills/hf-cloud-sagemaker-iam-preflight/scripts/create_role.py +118 -0
  185. package/.agent/skills/hf-cloud-sagemaker-production-defaults/SKILL.md +419 -0
  186. package/.agent/skills/hf-cloud-sagemaker-production-defaults/references/deployment-template.md +59 -0
  187. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/_common.py +148 -0
  188. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy.py +327 -0
  189. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_async.py +434 -0
  190. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_ic.py +506 -0
  191. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/invoke_endpoint.py +180 -0
  192. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/teardown.py +246 -0
  193. package/.agent/skills/hf-cloud-serving-image-selection/SKILL.md +220 -0
  194. package/.agent/skills/hf-cloud-serving-image-selection/references/model-to-image.md +111 -0
  195. package/.agent/skills/hf-cloud-serving-image-selection/scripts/mirror_image.py +145 -0
  196. package/.agent/skills/hf-mem/SKILL.md +79 -0
  197. package/.agent/skills/huggingface-best/SKILL.md +134 -0
  198. package/.agent/skills/huggingface-community-evals/SKILL.md +207 -0
  199. package/.agent/skills/huggingface-community-evals/examples/.env.example +3 -0
  200. package/.agent/skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
  201. package/.agent/skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
  202. package/.agent/skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
  203. package/.agent/skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
  204. package/.agent/skills/huggingface-datasets/SKILL.md +107 -0
  205. package/.agent/skills/huggingface-gradio/SKILL.md +298 -0
  206. package/.agent/skills/huggingface-gradio/examples.md +613 -0
  207. package/.agent/skills/huggingface-llm-trainer/SKILL.md +738 -0
  208. package/.agent/skills/huggingface-llm-trainer/references/gguf_conversion.md +296 -0
  209. package/.agent/skills/huggingface-llm-trainer/references/hardware_guide.md +283 -0
  210. package/.agent/skills/huggingface-llm-trainer/references/hub_saving.md +364 -0
  211. package/.agent/skills/huggingface-llm-trainer/references/local_training_macos.md +231 -0
  212. package/.agent/skills/huggingface-llm-trainer/references/reliability_principles.md +371 -0
  213. package/.agent/skills/huggingface-llm-trainer/references/trackio_guide.md +191 -0
  214. package/.agent/skills/huggingface-llm-trainer/references/training_methods.md +150 -0
  215. package/.agent/skills/huggingface-llm-trainer/references/training_patterns.md +203 -0
  216. package/.agent/skills/huggingface-llm-trainer/references/troubleshooting.md +282 -0
  217. package/.agent/skills/huggingface-llm-trainer/references/unsloth.md +313 -0
  218. package/.agent/skills/huggingface-llm-trainer/scripts/convert_to_gguf.py +424 -0
  219. package/.agent/skills/huggingface-llm-trainer/scripts/dataset_inspector.py +417 -0
  220. package/.agent/skills/huggingface-llm-trainer/scripts/estimate_cost.py +150 -0
  221. package/.agent/skills/huggingface-llm-trainer/scripts/hf_benchmarks.py +659 -0
  222. package/.agent/skills/huggingface-llm-trainer/scripts/train_dpo_example.py +106 -0
  223. package/.agent/skills/huggingface-llm-trainer/scripts/train_grpo_example.py +89 -0
  224. package/.agent/skills/huggingface-llm-trainer/scripts/train_sft_example.py +122 -0
  225. package/.agent/skills/huggingface-llm-trainer/scripts/unsloth_sft_example.py +512 -0
  226. package/.agent/skills/huggingface-local-models/SKILL.md +113 -0
  227. package/.agent/skills/huggingface-local-models/references/hardware.md +38 -0
  228. package/.agent/skills/huggingface-local-models/references/hub-discovery.md +178 -0
  229. package/.agent/skills/huggingface-local-models/references/quantization.md +256 -0
  230. package/.agent/skills/huggingface-lora-space-builder/SKILL.md +394 -0
  231. package/.agent/skills/huggingface-lora-space-builder/references/adapting-to-the-lora.md +113 -0
  232. package/.agent/skills/huggingface-lora-space-builder/references/base-models/krea-2.md +63 -0
  233. package/.agent/skills/huggingface-lora-space-builder/references/base-models/ltx.md +205 -0
  234. package/.agent/skills/huggingface-lora-space-builder/references/base-models/qwen-image.md +144 -0
  235. package/.agent/skills/huggingface-lora-space-builder/references/creative-mode.md +262 -0
  236. package/.agent/skills/huggingface-lora-space-builder/references/tasks.md +124 -0
  237. package/.agent/skills/huggingface-lora-space-builder/references/zerogpu-and-publishing.md +196 -0
  238. package/.agent/skills/huggingface-paper-publisher/SKILL.md +624 -0
  239. package/.agent/skills/huggingface-paper-publisher/examples/example_usage.md +326 -0
  240. package/.agent/skills/huggingface-paper-publisher/references/quick_reference.md +216 -0
  241. package/.agent/skills/huggingface-paper-publisher/scripts/paper_manager.py +606 -0
  242. package/.agent/skills/huggingface-paper-publisher/templates/arxiv.md +299 -0
  243. package/.agent/skills/huggingface-paper-publisher/templates/ml-report.md +358 -0
  244. package/.agent/skills/huggingface-paper-publisher/templates/modern.md +319 -0
  245. package/.agent/skills/huggingface-paper-publisher/templates/standard.md +201 -0
  246. package/.agent/skills/huggingface-papers/SKILL.md +239 -0
  247. package/.agent/skills/huggingface-spaces/README.md +9 -0
  248. package/.agent/skills/huggingface-spaces/SKILL.md +242 -0
  249. package/.agent/skills/huggingface-spaces/references/3d-cuda-extensions.md +109 -0
  250. package/.agent/skills/huggingface-spaces/references/3d-generation.md +98 -0
  251. package/.agent/skills/huggingface-spaces/references/3d-gsplat.md +53 -0
  252. package/.agent/skills/huggingface-spaces/references/3d-models.md +227 -0
  253. package/.agent/skills/huggingface-spaces/references/3d-outputs.md +114 -0
  254. package/.agent/skills/huggingface-spaces/references/buckets.md +89 -0
  255. package/.agent/skills/huggingface-spaces/references/debugging.md +236 -0
  256. package/.agent/skills/huggingface-spaces/references/gradio.md +200 -0
  257. package/.agent/skills/huggingface-spaces/references/grants.md +63 -0
  258. package/.agent/skills/huggingface-spaces/references/inference-providers.md +97 -0
  259. package/.agent/skills/huggingface-spaces/references/known-errors.md +232 -0
  260. package/.agent/skills/huggingface-spaces/references/requirements.md +169 -0
  261. package/.agent/skills/huggingface-spaces/references/zerogpu.md +349 -0
  262. package/.agent/skills/huggingface-tool-builder/SKILL.md +120 -0
  263. package/.agent/skills/huggingface-tool-builder/references/baseline_hf_api.py +57 -0
  264. package/.agent/skills/huggingface-tool-builder/references/baseline_hf_api.sh +40 -0
  265. package/.agent/skills/huggingface-tool-builder/references/baseline_hf_api.tsx +57 -0
  266. package/.agent/skills/huggingface-tool-builder/references/find_models_by_paper.sh +230 -0
  267. package/.agent/skills/huggingface-tool-builder/references/hf_enrich_models.sh +96 -0
  268. package/.agent/skills/huggingface-tool-builder/references/hf_model_card_frontmatter.sh +188 -0
  269. package/.agent/skills/huggingface-tool-builder/references/hf_model_papers_auth.sh +171 -0
  270. package/.agent/skills/huggingface-trackio/SKILL.md +142 -0
  271. package/.agent/skills/huggingface-trackio/references/alerts.md +196 -0
  272. package/.agent/skills/huggingface-trackio/references/logging_metrics.md +212 -0
  273. package/.agent/skills/huggingface-trackio/references/retrieving_metrics.md +251 -0
  274. package/.agent/skills/huggingface-vision-trainer/SKILL.md +593 -0
  275. package/.agent/skills/huggingface-vision-trainer/references/finetune_sam2_trainer.md +254 -0
  276. package/.agent/skills/huggingface-vision-trainer/references/hub_saving.md +618 -0
  277. package/.agent/skills/huggingface-vision-trainer/references/image_classification_training_notebook.md +279 -0
  278. package/.agent/skills/huggingface-vision-trainer/references/object_detection_training_notebook.md +700 -0
  279. package/.agent/skills/huggingface-vision-trainer/references/reliability_principles.md +310 -0
  280. package/.agent/skills/huggingface-vision-trainer/references/timm_trainer.md +91 -0
  281. package/.agent/skills/huggingface-vision-trainer/scripts/dataset_inspector.py +814 -0
  282. package/.agent/skills/huggingface-vision-trainer/scripts/estimate_cost.py +217 -0
  283. package/.agent/skills/huggingface-vision-trainer/scripts/image_classification_training.py +383 -0
  284. package/.agent/skills/huggingface-vision-trainer/scripts/object_detection_training.py +710 -0
  285. package/.agent/skills/huggingface-vision-trainer/scripts/sam_segmentation_training.py +382 -0
  286. package/.agent/skills/huggingface-zerogpu/SKILL.md +289 -0
  287. package/.agent/skills/huggingface-zerogpu/references/concurrency.md +79 -0
  288. package/.agent/skills/huggingface-zerogpu/references/cuda-and-deps.md +66 -0
  289. package/.agent/skills/huggingface-zerogpu/references/how-quota-works.md +74 -0
  290. package/.agent/skills/huggingface-zerogpu/references/how-zerogpu-works.md +50 -0
  291. package/.agent/skills/human-gate-negotiation/SKILL.md +30 -0
  292. package/.agent/skills/i18n-localization/SKILL.md +1 -76
  293. package/.agent/skills/impeccable/SKILL.md +1 -76
  294. package/.agent/skills/improve-codebase-architecture/SKILL.md +1 -76
  295. package/.agent/skills/improve-ui/SKILL.md +1 -76
  296. package/.agent/skills/intelligent-routing/SKILL.md +9 -89
  297. package/.agent/skills/knowledge-graph/SKILL.md +1 -76
  298. package/.agent/skills/landing-page/SKILL.md +1 -76
  299. package/.agent/skills/lint-and-validate/SKILL.md +1 -76
  300. package/.agent/skills/llm-engineering/SKILL.md +1 -76
  301. package/.agent/skills/local-first/SKILL.md +1 -76
  302. package/.agent/skills/local-first-architecture/SKILL.md +1 -76
  303. package/.agent/skills/lottie-animation/SKILL.md +1 -76
  304. package/.agent/skills/marquee-loop/SKILL.md +1 -76
  305. package/.agent/skills/masked-reveal/SKILL.md +1 -76
  306. package/.agent/skills/mcp-builder/SKILL.md +1 -76
  307. package/.agent/skills/micro-interaction/SKILL.md +1 -76
  308. package/.agent/skills/mobile-design/SKILL.md +1 -76
  309. package/.agent/skills/monorepo-management/SKILL.md +1 -76
  310. package/.agent/skills/morphing-icons/SKILL.md +1 -76
  311. package/.agent/skills/motion-engineering/SKILL.md +1 -76
  312. package/.agent/skills/nextjs-react-expert/SKILL.md +1 -76
  313. package/.agent/skills/nodejs-best-practices/SKILL.md +1 -76
  314. package/.agent/skills/observability/SKILL.md +1 -76
  315. package/.agent/skills/opentelemetry-observability/SKILL.md +1 -76
  316. package/.agent/skills/page-transition-animation/SKILL.md +1 -76
  317. package/.agent/skills/parallel-agents/SKILL.md +1 -76
  318. package/.agent/skills/performance-profiling/SKILL.md +1 -76
  319. package/.agent/skills/plan-writing/SKILL.md +1 -76
  320. package/.agent/skills/platform-engineer/SKILL.md +1 -76
  321. package/.agent/skills/platform-engineering-opentofu/SKILL.md +1 -76
  322. package/.agent/skills/playwright-ai-e2e/SKILL.md +1 -76
  323. package/.agent/skills/playwright-best-practices/SKILL.md +1 -76
  324. package/.agent/skills/polish/SKILL.md +1 -76
  325. package/.agent/skills/powershell-windows/SKILL.md +1 -76
  326. package/.agent/skills/pricing-page/SKILL.md +1 -76
  327. package/.agent/skills/product-aware-heuristics/SKILL.md +1 -76
  328. package/.agent/skills/progressive-blur/SKILL.md +1 -76
  329. package/.agent/skills/project-idioms/SKILL.md +1 -76
  330. package/.agent/skills/property-based-testing/SKILL.md +1 -76
  331. package/.agent/skills/python-patterns/SKILL.md +1 -76
  332. package/.agent/skills/python-pro/SKILL.md +1 -76
  333. package/.agent/skills/quieter/SKILL.md +1 -76
  334. package/.agent/skills/react-doctor/SKILL.md +1 -76
  335. package/.agent/skills/react-specialist/SKILL.md +1 -76
  336. package/.agent/skills/readme-builder/SKILL.md +1 -76
  337. package/.agent/skills/realtime-patterns/SKILL.md +1 -76
  338. package/.agent/skills/red-team-tactics/SKILL.md +1 -76
  339. package/.agent/skills/redesign-skill/SKILL.md +1 -76
  340. package/.agent/skills/review-animations/SKILL.md +1 -76
  341. package/.agent/skills/rust-pro/SKILL.md +1 -76
  342. package/.agent/skills/semantic-filesystem-navigation/SKILL.md +24 -0
  343. package/.agent/skills/seo-fundamentals/SKILL.md +1 -76
  344. package/.agent/skills/server-management/SKILL.md +1 -76
  345. package/.agent/skills/session-log-interrogation/SKILL.md +29 -0
  346. package/.agent/skills/shadcn-ui-expert/SKILL.md +1 -76
  347. package/.agent/skills/shape/SKILL.md +1 -76
  348. package/.agent/skills/skill-creator/SKILL.md +124 -90
  349. package/.agent/skills/soft-skill/SKILL.md +1 -76
  350. package/.agent/skills/sounds-on-the-web/SKILL.md +1 -76
  351. package/.agent/skills/sql-pro/SKILL.md +1 -76
  352. package/.agent/skills/subagent-driven-development/SKILL.md +32 -0
  353. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +1 -76
  354. package/.agent/skills/svg-animation/SKILL.md +1 -76
  355. package/.agent/skills/swiftui-expert/SKILL.md +1 -76
  356. package/.agent/skills/swiss-design/SKILL.md +1 -76
  357. package/.agent/skills/system-design-pro/SKILL.md +1 -76
  358. package/.agent/skills/systematic-debugging/SKILL.md +3 -73
  359. package/.agent/skills/tailwind-patterns/SKILL.md +1 -76
  360. package/.agent/skills/taste-skill/SKILL.md +1 -76
  361. package/.agent/skills/tdd-workflow/SKILL.md +1 -76
  362. package/.agent/skills/test-result-analyzer/SKILL.md +1 -76
  363. package/.agent/skills/testing-patterns/SKILL.md +1 -76
  364. package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +1 -76
  365. package/.agent/skills/thinking-protocol/SKILL.md +1 -78
  366. package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +1 -76
  367. package/.agent/skills/train-sentence-transformers/SKILL.md +109 -0
  368. package/.agent/skills/train-sentence-transformers/references/base_model_selection.md +79 -0
  369. package/.agent/skills/train-sentence-transformers/references/dataset_formats.md +128 -0
  370. package/.agent/skills/train-sentence-transformers/references/evaluators_cross_encoder.md +116 -0
  371. package/.agent/skills/train-sentence-transformers/references/evaluators_multi_vector_encoder.md +101 -0
  372. package/.agent/skills/train-sentence-transformers/references/evaluators_sentence_transformer.md +151 -0
  373. package/.agent/skills/train-sentence-transformers/references/evaluators_sparse_encoder.md +121 -0
  374. package/.agent/skills/train-sentence-transformers/references/hardware_guide.md +105 -0
  375. package/.agent/skills/train-sentence-transformers/references/hf_jobs_execution.md +173 -0
  376. package/.agent/skills/train-sentence-transformers/references/losses_cross_encoder.md +137 -0
  377. package/.agent/skills/train-sentence-transformers/references/losses_multi_vector_encoder.md +100 -0
  378. package/.agent/skills/train-sentence-transformers/references/losses_sentence_transformer.md +246 -0
  379. package/.agent/skills/train-sentence-transformers/references/losses_sparse_encoder.md +106 -0
  380. package/.agent/skills/train-sentence-transformers/references/model_architectures.md +178 -0
  381. package/.agent/skills/train-sentence-transformers/references/prompts_and_instructions.md +160 -0
  382. package/.agent/skills/train-sentence-transformers/references/training_args.md +270 -0
  383. package/.agent/skills/train-sentence-transformers/references/troubleshooting.md +225 -0
  384. package/.agent/skills/train-sentence-transformers/scripts/mine_hard_negatives.py +199 -0
  385. package/.agent/skills/train-sentence-transformers/scripts/train_cross_encoder_distillation_example.py +254 -0
  386. package/.agent/skills/train-sentence-transformers/scripts/train_cross_encoder_example.py +253 -0
  387. package/.agent/skills/train-sentence-transformers/scripts/train_cross_encoder_listwise_example.py +282 -0
  388. package/.agent/skills/train-sentence-transformers/scripts/train_multi_vector_encoder_example.py +240 -0
  389. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_distillation_example.py +303 -0
  390. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_example.py +227 -0
  391. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_make_multilingual_example.py +308 -0
  392. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_matryoshka_example.py +212 -0
  393. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_multi_dataset_example.py +258 -0
  394. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_static_embedding_example.py +273 -0
  395. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_with_lora_example.py +275 -0
  396. package/.agent/skills/train-sentence-transformers/scripts/train_sparse_encoder_distillation_example.py +262 -0
  397. package/.agent/skills/train-sentence-transformers/scripts/train_sparse_encoder_example.py +237 -0
  398. package/.agent/skills/transformers-js/SKILL.md +692 -0
  399. package/.agent/skills/transformers-js/references/CACHE.md +339 -0
  400. package/.agent/skills/transformers-js/references/CONFIGURATION.md +438 -0
  401. package/.agent/skills/transformers-js/references/EXAMPLES.md +620 -0
  402. package/.agent/skills/transformers-js/references/MODEL_ARCHITECTURES.md +167 -0
  403. package/.agent/skills/transformers-js/references/MODEL_REGISTRY.md +197 -0
  404. package/.agent/skills/transformers-js/references/PIPELINE_OPTIONS.md +557 -0
  405. package/.agent/skills/transformers-js/references/TEXT_GENERATION.md +315 -0
  406. package/.agent/skills/transitions-dev/SKILL.md +1 -76
  407. package/.agent/skills/trend-researcher/SKILL.md +1 -76
  408. package/.agent/skills/tribunal-instincts-memory/SKILL.md +31 -0
  409. package/.agent/skills/trl-training/SKILL.md +318 -0
  410. package/.agent/skills/typescript-advanced/SKILL.md +1 -76
  411. package/.agent/skills/typeset/SKILL.md +1 -76
  412. package/.agent/skills/ui-reasoning-engine/SKILL.md +1 -76
  413. package/.agent/skills/ui-skill-packs/SKILL.md +1 -76
  414. package/.agent/skills/ui-skills-root/SKILL.md +1 -76
  415. package/.agent/skills/ui-ux-pro-max/SKILL.md +1 -76
  416. package/.agent/skills/ui-ux-researcher/SKILL.md +1 -76
  417. package/.agent/skills/vector-search-pgvector/SKILL.md +1 -76
  418. package/.agent/skills/verification-before-completion/SKILL.md +1 -76
  419. package/.agent/skills/vue-expert/SKILL.md +1 -76
  420. package/.agent/skills/vulnerability-scanner/SKILL.md +1 -76
  421. package/.agent/skills/web-accessibility-auditor/SKILL.md +1 -76
  422. package/.agent/skills/web-design-guidelines/SKILL.md +1 -76
  423. package/.agent/skills/web-quality-audit/SKILL.md +1 -76
  424. package/.agent/skills/webapp-testing/SKILL.md +1 -76
  425. package/.agent/skills/webgpu-performance/SKILL.md +1 -76
  426. package/.agent/skills/whimsy-injector/SKILL.md +1 -76
  427. package/.agent/skills/workflow-optimizer/SKILL.md +1 -76
  428. package/.agent/skills/zero-trust-passkeys/SKILL.md +1 -76
  429. package/.agent/workflows/assimilate.md +21 -0
  430. package/.agent/workflows/audit.md +5 -0
  431. package/.agent/workflows/generate.md +6 -1
  432. package/.agent/workflows/htop.md +22 -0
  433. package/.agent/workflows/marathon.md +5 -0
  434. package/.agent/workflows/orchestrate.md +1 -1
  435. package/.agent/workflows/resume.md +20 -0
  436. package/.agent/workflows/review-ai.md +1 -1
  437. package/.agent/workflows/skill-enhancement-engine.md +6 -10
  438. package/.agent/workflows/swarm.md +1 -1
  439. package/.agent/workflows/team-mode.md +22 -0
  440. package/.agent/workflows/tribunal-backend.md +1 -1
  441. package/.agent/workflows/tribunal-cicd.md +1 -1
  442. package/.agent/workflows/tribunal-database.md +1 -1
  443. package/.agent/workflows/tribunal-frontend.md +1 -1
  444. package/.agent/workflows/tribunal-full.md +9 -9
  445. package/.agent/workflows/tribunal-mobile.md +1 -1
  446. package/.agent/workflows/tribunal-speed.md +1 -1
  447. package/.agent/workflows/tribunal-ui.md +1 -1
  448. package/.agents/skills/12-principles-of-animation/SKILL.md +1 -76
  449. package/.agents/skills/60fps-animation/SKILL.md +1 -76
  450. package/.agents/skills/accessible-animation/SKILL.md +1 -76
  451. package/.agents/skills/adapt/SKILL.md +1 -76
  452. package/.agents/skills/advanced-rag-pipelines/SKILL.md +1 -76
  453. package/.agents/skills/agent-organizer/SKILL.md +1 -76
  454. package/.agents/skills/agent-syscall-guidelines/SKILL.md +25 -0
  455. package/.agents/skills/agentic-patterns/SKILL.md +1 -76
  456. package/.agents/skills/agentic-workflows-2026/SKILL.md +6 -73
  457. package/.agents/skills/agentshield-security/SKILL.md +26 -0
  458. package/.agents/skills/ai-app-hardening/SKILL.md +1 -76
  459. package/.agents/skills/ai-prompt-injection-defense/SKILL.md +1 -76
  460. package/.agents/skills/animation-on-scroll/SKILL.md +1 -76
  461. package/.agents/skills/animation-systems/SKILL.md +1 -76
  462. package/.agents/skills/antfu-conventions/SKILL.md +0 -75
  463. package/.agents/skills/api-patterns/SKILL.md +1 -76
  464. package/.agents/skills/api-security-auditor/SKILL.md +1 -76
  465. package/.agents/skills/app-builder/SKILL.md +1 -76
  466. package/.agents/skills/appflow-wireframe/SKILL.md +1 -76
  467. package/.agents/skills/apple-design/SKILL.md +1 -76
  468. package/.agents/skills/architecture/SKILL.md +1 -76
  469. package/.agents/skills/audit-and-fix/SKILL.md +41 -77
  470. package/.agents/skills/authentication-best-practices/SKILL.md +1 -76
  471. package/.agents/skills/backend-security-expert/SKILL.md +1 -76
  472. package/.agents/skills/baseline-ui/SKILL.md +1 -76
  473. package/.agents/skills/bash-linux/SKILL.md +1 -76
  474. package/.agents/skills/behavioral-modes/SKILL.md +1 -76
  475. package/.agents/skills/better-colors/SKILL.md +1 -76
  476. package/.agents/skills/better-typography/SKILL.md +1 -76
  477. package/.agents/skills/better-ui/SKILL.md +1 -76
  478. package/.agents/skills/bolder/SKILL.md +1 -76
  479. package/.agents/skills/brainstorming/SKILL.md +1 -76
  480. package/.agents/skills/browser-audit/SKILL.md +1 -76
  481. package/.agents/skills/browser-native-ai/SKILL.md +1 -76
  482. package/.agents/skills/build-primitive/SKILL.md +1 -76
  483. package/.agents/skills/building-native-ui/SKILL.md +1 -76
  484. package/.agents/skills/cicd-pro/SKILL.md +1 -76
  485. package/.agents/skills/clarify/SKILL.md +1 -76
  486. package/.agents/skills/clean-code/SKILL.md +1 -76
  487. package/.agents/skills/cloud-architect/SKILL.md +1 -76
  488. package/.agents/skills/cobejs/SKILL.md +1 -76
  489. package/.agents/skills/code-review-checklist/SKILL.md +1 -76
  490. package/.agents/skills/codebase-design/SKILL.md +1 -76
  491. package/.agents/skills/colorize/SKILL.md +1 -76
  492. package/.agents/skills/compact-landing/SKILL.md +1 -76
  493. package/.agents/skills/company-logos/SKILL.md +1 -76
  494. package/.agents/skills/config-validator/SKILL.md +1 -76
  495. package/.agents/skills/containerization-pro/SKILL.md +1 -76
  496. package/.agents/skills/context-engineering-pro/SKILL.md +5 -73
  497. package/.agents/skills/create-design-md/SKILL.md +1 -76
  498. package/.agents/skills/critique/SKILL.md +1 -76
  499. package/.agents/skills/csharp-developer/SKILL.md +1 -76
  500. package/.agents/skills/data-validation-schemas/SKILL.md +1 -76
  501. package/.agents/skills/database-design/SKILL.md +1 -76
  502. package/.agents/skills/delight/SKILL.md +1 -76
  503. package/.agents/skills/deployment-procedures/SKILL.md +1 -76
  504. package/.agents/skills/design-lab/SKILL.md +1 -76
  505. package/.agents/skills/devops-engineer/SKILL.md +1 -76
  506. package/.agents/skills/devops-incident-responder/SKILL.md +1 -76
  507. package/.agents/skills/diagnosing-bugs/SKILL.md +1 -76
  508. package/.agents/skills/distill/SKILL.md +1 -76
  509. package/.agents/skills/documentation-templates/SKILL.md +1 -76
  510. package/.agents/skills/domain-modeling/SKILL.md +1 -76
  511. package/.agents/skills/duckdb-analytical-sql/SKILL.md +1 -76
  512. package/.agents/skills/edge-ai-mobile/SKILL.md +1 -76
  513. package/.agents/skills/edge-computing/SKILL.md +1 -76
  514. package/.agents/skills/emil-design-eng/SKILL.md +1 -76
  515. package/.agents/skills/error-resilience/SKILL.md +1 -76
  516. package/.agents/skills/expo-router-v4/SKILL.md +1 -76
  517. package/.agents/skills/extract-design-system/SKILL.md +1 -76
  518. package/.agents/skills/fabel-protocol/SKILL.md +3 -73
  519. package/.agents/skills/fixing-accessibility/SKILL.md +1 -76
  520. package/.agents/skills/fixing-metadata/SKILL.md +1 -76
  521. package/.agents/skills/fixing-motion-performance/SKILL.md +1 -76
  522. package/.agents/skills/framer-motion-expert/SKILL.md +1 -76
  523. package/.agents/skills/frontend-design/SKILL.md +1 -76
  524. package/.agents/skills/frontend-security-expert/SKILL.md +1 -76
  525. package/.agents/skills/game-design-expert/SKILL.md +1 -76
  526. package/.agents/skills/game-engineering-expert/SKILL.md +1 -76
  527. package/.agents/skills/generative-ui-expert/SKILL.md +1 -76
  528. package/.agents/skills/geo-fundamentals/SKILL.md +1 -76
  529. package/.agents/skills/git-pro/SKILL.md +1 -76
  530. package/.agents/skills/github-operations/SKILL.md +1 -76
  531. package/.agents/skills/gpt-taste/SKILL.md +1 -76
  532. package/.agents/skills/graph-engineering/SKILL.md +28 -0
  533. package/.agents/skills/gsap-core/SKILL.md +1 -76
  534. package/.agents/skills/gsap-frameworks/SKILL.md +1 -76
  535. package/.agents/skills/gsap-performance/SKILL.md +1 -76
  536. package/.agents/skills/gsap-plugins/SKILL.md +1 -76
  537. package/.agents/skills/gsap-react/SKILL.md +1 -76
  538. package/.agents/skills/gsap-scrolltrigger/SKILL.md +1 -76
  539. package/.agents/skills/gsap-timeline/SKILL.md +1 -76
  540. package/.agents/skills/gsap-utils/SKILL.md +1 -76
  541. package/.agents/skills/harden/SKILL.md +1 -76
  542. package/.agents/skills/harness-protocol/SKILL.md +6 -73
  543. package/.agents/skills/hf-cli/SKILL.md +239 -0
  544. package/.agents/skills/hf-cloud-aws-context-discovery/SKILL.md +74 -0
  545. package/.agents/skills/hf-cloud-python-env-setup/SKILL.md +90 -0
  546. package/.agents/skills/hf-cloud-python-env-setup/requirements.txt +17 -0
  547. package/.agents/skills/hf-cloud-python-env-setup/scripts/check_versions.py +29 -0
  548. package/.agents/skills/hf-cloud-python-env-setup/scripts/setup_env.py +143 -0
  549. package/.agents/skills/hf-cloud-sagemaker-deployment-planner/SKILL.md +90 -0
  550. package/.agents/skills/hf-cloud-sagemaker-iam-preflight/SKILL.md +102 -0
  551. package/.agents/skills/hf-cloud-sagemaker-iam-preflight/references/minimum-permissions.json +47 -0
  552. package/.agents/skills/hf-cloud-sagemaker-iam-preflight/references/trust-policy.json +12 -0
  553. package/.agents/skills/hf-cloud-sagemaker-iam-preflight/scripts/check_role.py +184 -0
  554. package/.agents/skills/hf-cloud-sagemaker-iam-preflight/scripts/create_role.py +118 -0
  555. package/.agents/skills/hf-cloud-sagemaker-production-defaults/SKILL.md +419 -0
  556. package/.agents/skills/hf-cloud-sagemaker-production-defaults/references/deployment-template.md +59 -0
  557. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/_common.py +148 -0
  558. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy.py +327 -0
  559. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_async.py +434 -0
  560. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_ic.py +506 -0
  561. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/invoke_endpoint.py +180 -0
  562. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/teardown.py +246 -0
  563. package/.agents/skills/hf-cloud-serving-image-selection/SKILL.md +220 -0
  564. package/.agents/skills/hf-cloud-serving-image-selection/references/model-to-image.md +111 -0
  565. package/.agents/skills/hf-cloud-serving-image-selection/scripts/mirror_image.py +145 -0
  566. package/.agents/skills/hf-mem/SKILL.md +79 -0
  567. package/.agents/skills/huggingface-best/SKILL.md +134 -0
  568. package/.agents/skills/huggingface-community-evals/SKILL.md +207 -0
  569. package/.agents/skills/huggingface-community-evals/examples/.env.example +3 -0
  570. package/.agents/skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
  571. package/.agents/skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
  572. package/.agents/skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
  573. package/.agents/skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
  574. package/.agents/skills/huggingface-datasets/SKILL.md +107 -0
  575. package/.agents/skills/huggingface-gradio/SKILL.md +298 -0
  576. package/.agents/skills/huggingface-gradio/examples.md +613 -0
  577. package/.agents/skills/huggingface-llm-trainer/SKILL.md +738 -0
  578. package/.agents/skills/huggingface-llm-trainer/references/gguf_conversion.md +296 -0
  579. package/.agents/skills/huggingface-llm-trainer/references/hardware_guide.md +283 -0
  580. package/.agents/skills/huggingface-llm-trainer/references/hub_saving.md +364 -0
  581. package/.agents/skills/huggingface-llm-trainer/references/local_training_macos.md +231 -0
  582. package/.agents/skills/huggingface-llm-trainer/references/reliability_principles.md +371 -0
  583. package/.agents/skills/huggingface-llm-trainer/references/trackio_guide.md +191 -0
  584. package/.agents/skills/huggingface-llm-trainer/references/training_methods.md +150 -0
  585. package/.agents/skills/huggingface-llm-trainer/references/training_patterns.md +203 -0
  586. package/.agents/skills/huggingface-llm-trainer/references/troubleshooting.md +282 -0
  587. package/.agents/skills/huggingface-llm-trainer/references/unsloth.md +313 -0
  588. package/.agents/skills/huggingface-llm-trainer/scripts/convert_to_gguf.py +424 -0
  589. package/.agents/skills/huggingface-llm-trainer/scripts/dataset_inspector.py +417 -0
  590. package/.agents/skills/huggingface-llm-trainer/scripts/estimate_cost.py +150 -0
  591. package/.agents/skills/huggingface-llm-trainer/scripts/hf_benchmarks.py +659 -0
  592. package/.agents/skills/huggingface-llm-trainer/scripts/train_dpo_example.py +106 -0
  593. package/.agents/skills/huggingface-llm-trainer/scripts/train_grpo_example.py +89 -0
  594. package/.agents/skills/huggingface-llm-trainer/scripts/train_sft_example.py +122 -0
  595. package/.agents/skills/huggingface-llm-trainer/scripts/unsloth_sft_example.py +512 -0
  596. package/.agents/skills/huggingface-local-models/SKILL.md +113 -0
  597. package/.agents/skills/huggingface-local-models/references/hardware.md +38 -0
  598. package/.agents/skills/huggingface-local-models/references/hub-discovery.md +178 -0
  599. package/.agents/skills/huggingface-local-models/references/quantization.md +256 -0
  600. package/.agents/skills/huggingface-lora-space-builder/SKILL.md +394 -0
  601. package/.agents/skills/huggingface-lora-space-builder/references/adapting-to-the-lora.md +113 -0
  602. package/.agents/skills/huggingface-lora-space-builder/references/base-models/krea-2.md +63 -0
  603. package/.agents/skills/huggingface-lora-space-builder/references/base-models/ltx.md +205 -0
  604. package/.agents/skills/huggingface-lora-space-builder/references/base-models/qwen-image.md +144 -0
  605. package/.agents/skills/huggingface-lora-space-builder/references/creative-mode.md +262 -0
  606. package/.agents/skills/huggingface-lora-space-builder/references/tasks.md +124 -0
  607. package/.agents/skills/huggingface-lora-space-builder/references/zerogpu-and-publishing.md +196 -0
  608. package/.agents/skills/huggingface-paper-publisher/SKILL.md +624 -0
  609. package/.agents/skills/huggingface-paper-publisher/examples/example_usage.md +326 -0
  610. package/.agents/skills/huggingface-paper-publisher/references/quick_reference.md +216 -0
  611. package/.agents/skills/huggingface-paper-publisher/scripts/paper_manager.py +606 -0
  612. package/.agents/skills/huggingface-paper-publisher/templates/arxiv.md +299 -0
  613. package/.agents/skills/huggingface-paper-publisher/templates/ml-report.md +358 -0
  614. package/.agents/skills/huggingface-paper-publisher/templates/modern.md +319 -0
  615. package/.agents/skills/huggingface-paper-publisher/templates/standard.md +201 -0
  616. package/.agents/skills/huggingface-papers/SKILL.md +239 -0
  617. package/.agents/skills/huggingface-spaces/README.md +9 -0
  618. package/.agents/skills/huggingface-spaces/SKILL.md +242 -0
  619. package/.agents/skills/huggingface-spaces/references/3d-cuda-extensions.md +109 -0
  620. package/.agents/skills/huggingface-spaces/references/3d-generation.md +98 -0
  621. package/.agents/skills/huggingface-spaces/references/3d-gsplat.md +53 -0
  622. package/.agents/skills/huggingface-spaces/references/3d-models.md +227 -0
  623. package/.agents/skills/huggingface-spaces/references/3d-outputs.md +114 -0
  624. package/.agents/skills/huggingface-spaces/references/buckets.md +89 -0
  625. package/.agents/skills/huggingface-spaces/references/debugging.md +236 -0
  626. package/.agents/skills/huggingface-spaces/references/gradio.md +200 -0
  627. package/.agents/skills/huggingface-spaces/references/grants.md +63 -0
  628. package/.agents/skills/huggingface-spaces/references/inference-providers.md +97 -0
  629. package/.agents/skills/huggingface-spaces/references/known-errors.md +232 -0
  630. package/.agents/skills/huggingface-spaces/references/requirements.md +169 -0
  631. package/.agents/skills/huggingface-spaces/references/zerogpu.md +349 -0
  632. package/.agents/skills/huggingface-tool-builder/SKILL.md +120 -0
  633. package/.agents/skills/huggingface-tool-builder/references/baseline_hf_api.py +57 -0
  634. package/.agents/skills/huggingface-tool-builder/references/baseline_hf_api.sh +40 -0
  635. package/.agents/skills/huggingface-tool-builder/references/baseline_hf_api.tsx +57 -0
  636. package/.agents/skills/huggingface-tool-builder/references/find_models_by_paper.sh +230 -0
  637. package/.agents/skills/huggingface-tool-builder/references/hf_enrich_models.sh +96 -0
  638. package/.agents/skills/huggingface-tool-builder/references/hf_model_card_frontmatter.sh +188 -0
  639. package/.agents/skills/huggingface-tool-builder/references/hf_model_papers_auth.sh +171 -0
  640. package/.agents/skills/huggingface-trackio/SKILL.md +142 -0
  641. package/.agents/skills/huggingface-trackio/references/alerts.md +196 -0
  642. package/.agents/skills/huggingface-trackio/references/logging_metrics.md +212 -0
  643. package/.agents/skills/huggingface-trackio/references/retrieving_metrics.md +251 -0
  644. package/.agents/skills/huggingface-vision-trainer/SKILL.md +593 -0
  645. package/.agents/skills/huggingface-vision-trainer/references/finetune_sam2_trainer.md +254 -0
  646. package/.agents/skills/huggingface-vision-trainer/references/hub_saving.md +618 -0
  647. package/.agents/skills/huggingface-vision-trainer/references/image_classification_training_notebook.md +279 -0
  648. package/.agents/skills/huggingface-vision-trainer/references/object_detection_training_notebook.md +700 -0
  649. package/.agents/skills/huggingface-vision-trainer/references/reliability_principles.md +310 -0
  650. package/.agents/skills/huggingface-vision-trainer/references/timm_trainer.md +91 -0
  651. package/.agents/skills/huggingface-vision-trainer/scripts/dataset_inspector.py +814 -0
  652. package/.agents/skills/huggingface-vision-trainer/scripts/estimate_cost.py +217 -0
  653. package/.agents/skills/huggingface-vision-trainer/scripts/image_classification_training.py +383 -0
  654. package/.agents/skills/huggingface-vision-trainer/scripts/object_detection_training.py +710 -0
  655. package/.agents/skills/huggingface-vision-trainer/scripts/sam_segmentation_training.py +382 -0
  656. package/.agents/skills/huggingface-zerogpu/SKILL.md +289 -0
  657. package/.agents/skills/huggingface-zerogpu/references/concurrency.md +79 -0
  658. package/.agents/skills/huggingface-zerogpu/references/cuda-and-deps.md +66 -0
  659. package/.agents/skills/huggingface-zerogpu/references/how-quota-works.md +74 -0
  660. package/.agents/skills/huggingface-zerogpu/references/how-zerogpu-works.md +50 -0
  661. package/.agents/skills/human-gate-negotiation/SKILL.md +30 -0
  662. package/.agents/skills/i18n-localization/SKILL.md +1 -76
  663. package/.agents/skills/impeccable/SKILL.md +1 -76
  664. package/.agents/skills/improve-codebase-architecture/SKILL.md +1 -76
  665. package/.agents/skills/improve-ui/SKILL.md +1 -76
  666. package/.agents/skills/intelligent-routing/SKILL.md +9 -89
  667. package/.agents/skills/knowledge-graph/SKILL.md +1 -76
  668. package/.agents/skills/landing-page/SKILL.md +1 -76
  669. package/.agents/skills/lint-and-validate/SKILL.md +1 -76
  670. package/.agents/skills/llm-engineering/SKILL.md +1 -76
  671. package/.agents/skills/local-first/SKILL.md +1 -76
  672. package/.agents/skills/local-first-architecture/SKILL.md +1 -76
  673. package/.agents/skills/lottie-animation/SKILL.md +1 -76
  674. package/.agents/skills/marquee-loop/SKILL.md +1 -76
  675. package/.agents/skills/masked-reveal/SKILL.md +1 -76
  676. package/.agents/skills/mcp-builder/SKILL.md +1 -76
  677. package/.agents/skills/micro-interaction/SKILL.md +1 -76
  678. package/.agents/skills/mobile-design/SKILL.md +1 -76
  679. package/.agents/skills/monorepo-management/SKILL.md +1 -76
  680. package/.agents/skills/morphing-icons/SKILL.md +1 -76
  681. package/.agents/skills/motion-engineering/SKILL.md +1 -76
  682. package/.agents/skills/nextjs-react-expert/SKILL.md +1 -76
  683. package/.agents/skills/nodejs-best-practices/SKILL.md +1 -76
  684. package/.agents/skills/observability/SKILL.md +1 -76
  685. package/.agents/skills/opentelemetry-observability/SKILL.md +1 -76
  686. package/.agents/skills/page-transition-animation/SKILL.md +1 -76
  687. package/.agents/skills/parallel-agents/SKILL.md +1 -76
  688. package/.agents/skills/performance-profiling/SKILL.md +1 -76
  689. package/.agents/skills/plan-writing/SKILL.md +1 -76
  690. package/.agents/skills/platform-engineer/SKILL.md +1 -76
  691. package/.agents/skills/platform-engineering-opentofu/SKILL.md +1 -76
  692. package/.agents/skills/playwright-ai-e2e/SKILL.md +1 -76
  693. package/.agents/skills/playwright-best-practices/SKILL.md +1 -76
  694. package/.agents/skills/polish/SKILL.md +1 -76
  695. package/.agents/skills/powershell-windows/SKILL.md +1 -76
  696. package/.agents/skills/pricing-page/SKILL.md +1 -76
  697. package/.agents/skills/product-aware-heuristics/SKILL.md +1 -76
  698. package/.agents/skills/progressive-blur/SKILL.md +1 -76
  699. package/.agents/skills/project-idioms/SKILL.md +1 -76
  700. package/.agents/skills/property-based-testing/SKILL.md +1 -76
  701. package/.agents/skills/python-patterns/SKILL.md +1 -76
  702. package/.agents/skills/python-pro/SKILL.md +1 -76
  703. package/.agents/skills/quieter/SKILL.md +1 -76
  704. package/.agents/skills/react-doctor/SKILL.md +1 -76
  705. package/.agents/skills/react-specialist/SKILL.md +1 -76
  706. package/.agents/skills/readme-builder/SKILL.md +1 -76
  707. package/.agents/skills/realtime-patterns/SKILL.md +1 -76
  708. package/.agents/skills/red-team-tactics/SKILL.md +1 -76
  709. package/.agents/skills/redesign-skill/SKILL.md +1 -76
  710. package/.agents/skills/review-animations/SKILL.md +1 -76
  711. package/.agents/skills/rust-pro/SKILL.md +1 -76
  712. package/.agents/skills/semantic-filesystem-navigation/SKILL.md +24 -0
  713. package/.agents/skills/seo-fundamentals/SKILL.md +1 -76
  714. package/.agents/skills/server-management/SKILL.md +1 -76
  715. package/.agents/skills/session-log-interrogation/SKILL.md +29 -0
  716. package/.agents/skills/shadcn-ui-expert/SKILL.md +1 -76
  717. package/.agents/skills/shape/SKILL.md +1 -76
  718. package/.agents/skills/skill-creator/SKILL.md +124 -90
  719. package/.agents/skills/soft-skill/SKILL.md +1 -76
  720. package/.agents/skills/sounds-on-the-web/SKILL.md +1 -76
  721. package/.agents/skills/sql-pro/SKILL.md +1 -76
  722. package/.agents/skills/subagent-driven-development/SKILL.md +32 -0
  723. package/.agents/skills/supabase-postgres-best-practices/SKILL.md +1 -76
  724. package/.agents/skills/svg-animation/SKILL.md +1 -76
  725. package/.agents/skills/swiftui-expert/SKILL.md +1 -76
  726. package/.agents/skills/swiss-design/SKILL.md +1 -76
  727. package/.agents/skills/system-design-pro/SKILL.md +1 -76
  728. package/.agents/skills/systematic-debugging/SKILL.md +3 -73
  729. package/.agents/skills/tailwind-patterns/SKILL.md +1 -76
  730. package/.agents/skills/taste-skill/SKILL.md +1 -76
  731. package/.agents/skills/tdd-workflow/SKILL.md +1 -76
  732. package/.agents/skills/test-result-analyzer/SKILL.md +1 -76
  733. package/.agents/skills/testing-patterns/SKILL.md +1 -76
  734. package/.agents/skills/thermo-nuclear-code-quality-review/SKILL.md +1 -76
  735. package/.agents/skills/thinking-protocol/SKILL.md +1 -78
  736. package/.agents/skills/to-spring-or-not-to-spring/SKILL.md +1 -76
  737. package/.agents/skills/train-sentence-transformers/SKILL.md +109 -0
  738. package/.agents/skills/train-sentence-transformers/references/base_model_selection.md +79 -0
  739. package/.agents/skills/train-sentence-transformers/references/dataset_formats.md +128 -0
  740. package/.agents/skills/train-sentence-transformers/references/evaluators_cross_encoder.md +116 -0
  741. package/.agents/skills/train-sentence-transformers/references/evaluators_multi_vector_encoder.md +101 -0
  742. package/.agents/skills/train-sentence-transformers/references/evaluators_sentence_transformer.md +151 -0
  743. package/.agents/skills/train-sentence-transformers/references/evaluators_sparse_encoder.md +121 -0
  744. package/.agents/skills/train-sentence-transformers/references/hardware_guide.md +105 -0
  745. package/.agents/skills/train-sentence-transformers/references/hf_jobs_execution.md +173 -0
  746. package/.agents/skills/train-sentence-transformers/references/losses_cross_encoder.md +137 -0
  747. package/.agents/skills/train-sentence-transformers/references/losses_multi_vector_encoder.md +100 -0
  748. package/.agents/skills/train-sentence-transformers/references/losses_sentence_transformer.md +246 -0
  749. package/.agents/skills/train-sentence-transformers/references/losses_sparse_encoder.md +106 -0
  750. package/.agents/skills/train-sentence-transformers/references/model_architectures.md +178 -0
  751. package/.agents/skills/train-sentence-transformers/references/prompts_and_instructions.md +160 -0
  752. package/.agents/skills/train-sentence-transformers/references/training_args.md +270 -0
  753. package/.agents/skills/train-sentence-transformers/references/troubleshooting.md +225 -0
  754. package/.agents/skills/train-sentence-transformers/scripts/mine_hard_negatives.py +199 -0
  755. package/.agents/skills/train-sentence-transformers/scripts/train_cross_encoder_distillation_example.py +254 -0
  756. package/.agents/skills/train-sentence-transformers/scripts/train_cross_encoder_example.py +253 -0
  757. package/.agents/skills/train-sentence-transformers/scripts/train_cross_encoder_listwise_example.py +282 -0
  758. package/.agents/skills/train-sentence-transformers/scripts/train_multi_vector_encoder_example.py +240 -0
  759. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_distillation_example.py +303 -0
  760. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_example.py +227 -0
  761. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_make_multilingual_example.py +308 -0
  762. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_matryoshka_example.py +212 -0
  763. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_multi_dataset_example.py +258 -0
  764. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_static_embedding_example.py +273 -0
  765. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_with_lora_example.py +275 -0
  766. package/.agents/skills/train-sentence-transformers/scripts/train_sparse_encoder_distillation_example.py +262 -0
  767. package/.agents/skills/train-sentence-transformers/scripts/train_sparse_encoder_example.py +237 -0
  768. package/.agents/skills/transformers-js/SKILL.md +692 -0
  769. package/.agents/skills/transformers-js/references/CACHE.md +339 -0
  770. package/.agents/skills/transformers-js/references/CONFIGURATION.md +438 -0
  771. package/.agents/skills/transformers-js/references/EXAMPLES.md +620 -0
  772. package/.agents/skills/transformers-js/references/MODEL_ARCHITECTURES.md +167 -0
  773. package/.agents/skills/transformers-js/references/MODEL_REGISTRY.md +197 -0
  774. package/.agents/skills/transformers-js/references/PIPELINE_OPTIONS.md +557 -0
  775. package/.agents/skills/transformers-js/references/TEXT_GENERATION.md +315 -0
  776. package/.agents/skills/transitions-dev/SKILL.md +1 -76
  777. package/.agents/skills/trend-researcher/SKILL.md +1 -76
  778. package/.agents/skills/tribunal-instincts-memory/SKILL.md +31 -0
  779. package/.agents/skills/trl-training/SKILL.md +318 -0
  780. package/.agents/skills/typescript-advanced/SKILL.md +1 -76
  781. package/.agents/skills/typeset/SKILL.md +1 -76
  782. package/.agents/skills/ui-reasoning-engine/SKILL.md +1 -76
  783. package/.agents/skills/ui-skill-packs/SKILL.md +1 -76
  784. package/.agents/skills/ui-skills-root/SKILL.md +1 -76
  785. package/.agents/skills/ui-ux-pro-max/SKILL.md +1 -76
  786. package/.agents/skills/ui-ux-researcher/SKILL.md +1 -76
  787. package/.agents/skills/vector-search-pgvector/SKILL.md +1 -76
  788. package/.agents/skills/verification-before-completion/SKILL.md +1 -76
  789. package/.agents/skills/vue-expert/SKILL.md +1 -76
  790. package/.agents/skills/vulnerability-scanner/SKILL.md +1 -76
  791. package/.agents/skills/web-accessibility-auditor/SKILL.md +1 -76
  792. package/.agents/skills/web-design-guidelines/SKILL.md +1 -76
  793. package/.agents/skills/web-quality-audit/SKILL.md +1 -76
  794. package/.agents/skills/webapp-testing/SKILL.md +1 -76
  795. package/.agents/skills/webgpu-performance/SKILL.md +1 -76
  796. package/.agents/skills/whimsy-injector/SKILL.md +1 -76
  797. package/.agents/skills/workflow-optimizer/SKILL.md +1 -76
  798. package/.agents/skills/zero-trust-passkeys/SKILL.md +1 -76
  799. package/CONTRIBUTING.md +2 -2
  800. package/README.md +242 -542
  801. package/bin/adapter-install.js +263 -263
  802. package/bin/mcp-server.js +72 -47
  803. package/bin/wrapper.js +10 -1
  804. package/dist/commands/init.js +25 -11
  805. package/dist/tui/banner.js +1 -1
  806. package/gemini-extension.json +1 -1
  807. package/mcp_config.json +1 -1
  808. package/package.json +13 -10
  809. package/plugin.json +1 -1
  810. package/scripts/context_compiler.js +49 -0
  811. package/scripts/skill_enhancement_engine.js +11 -37
  812. package/scripts/telemetry_gc.js +3 -1
  813. package/scripts/validate-payload.js +1 -6
  814. package/skills/12-principles-of-animation/SKILL.md +1 -76
  815. package/skills/60fps-animation/SKILL.md +1 -76
  816. package/skills/accessible-animation/SKILL.md +1 -76
  817. package/skills/adapt/SKILL.md +1 -76
  818. package/skills/advanced-rag-pipelines/SKILL.md +1 -76
  819. package/skills/agent-organizer/SKILL.md +1 -76
  820. package/skills/agent-syscall-guidelines/SKILL.md +25 -0
  821. package/skills/agentic-patterns/SKILL.md +1 -76
  822. package/skills/agentic-workflows-2026/SKILL.md +6 -73
  823. package/skills/agentshield-security/SKILL.md +26 -0
  824. package/skills/ai-app-hardening/SKILL.md +1 -76
  825. package/skills/ai-prompt-injection-defense/SKILL.md +1 -76
  826. package/skills/animation-on-scroll/SKILL.md +1 -76
  827. package/skills/animation-systems/SKILL.md +1 -76
  828. package/skills/antfu-conventions/SKILL.md +0 -75
  829. package/skills/api-patterns/SKILL.md +1 -76
  830. package/skills/api-security-auditor/SKILL.md +1 -76
  831. package/skills/app-builder/SKILL.md +1 -76
  832. package/skills/appflow-wireframe/SKILL.md +1 -76
  833. package/skills/apple-design/SKILL.md +1 -76
  834. package/skills/architecture/SKILL.md +1 -76
  835. package/skills/audit-and-fix/SKILL.md +41 -77
  836. package/skills/authentication-best-practices/SKILL.md +1 -76
  837. package/skills/backend-security-expert/SKILL.md +1 -76
  838. package/skills/baseline-ui/SKILL.md +1 -76
  839. package/skills/bash-linux/SKILL.md +1 -76
  840. package/skills/behavioral-modes/SKILL.md +1 -76
  841. package/skills/better-colors/SKILL.md +1 -76
  842. package/skills/better-typography/SKILL.md +1 -76
  843. package/skills/better-ui/SKILL.md +1 -76
  844. package/skills/bolder/SKILL.md +1 -76
  845. package/skills/brainstorming/SKILL.md +1 -76
  846. package/skills/browser-audit/SKILL.md +1 -76
  847. package/skills/browser-native-ai/SKILL.md +1 -76
  848. package/skills/build-primitive/SKILL.md +1 -76
  849. package/skills/building-native-ui/SKILL.md +1 -76
  850. package/skills/cicd-pro/SKILL.md +1 -76
  851. package/skills/clarify/SKILL.md +1 -76
  852. package/skills/clean-code/SKILL.md +1 -76
  853. package/skills/cloud-architect/SKILL.md +1 -76
  854. package/skills/cobejs/SKILL.md +1 -76
  855. package/skills/code-review-checklist/SKILL.md +1 -76
  856. package/skills/codebase-design/SKILL.md +1 -76
  857. package/skills/colorize/SKILL.md +1 -76
  858. package/skills/compact-landing/SKILL.md +1 -76
  859. package/skills/company-logos/SKILL.md +1 -76
  860. package/skills/config-validator/SKILL.md +1 -76
  861. package/skills/containerization-pro/SKILL.md +1 -76
  862. package/skills/context-engineering-pro/SKILL.md +5 -73
  863. package/skills/create-design-md/SKILL.md +1 -76
  864. package/skills/critique/SKILL.md +1 -76
  865. package/skills/csharp-developer/SKILL.md +1 -76
  866. package/skills/data-validation-schemas/SKILL.md +1 -76
  867. package/skills/database-design/SKILL.md +1 -76
  868. package/skills/delight/SKILL.md +1 -76
  869. package/skills/deployment-procedures/SKILL.md +1 -76
  870. package/skills/design-lab/SKILL.md +1 -76
  871. package/skills/devops-engineer/SKILL.md +1 -76
  872. package/skills/devops-incident-responder/SKILL.md +1 -76
  873. package/skills/diagnosing-bugs/SKILL.md +1 -76
  874. package/skills/distill/SKILL.md +1 -76
  875. package/skills/documentation-templates/SKILL.md +1 -76
  876. package/skills/domain-modeling/SKILL.md +1 -76
  877. package/skills/duckdb-analytical-sql/SKILL.md +1 -76
  878. package/skills/edge-ai-mobile/SKILL.md +1 -76
  879. package/skills/edge-computing/SKILL.md +1 -76
  880. package/skills/emil-design-eng/SKILL.md +1 -76
  881. package/skills/error-resilience/SKILL.md +1 -76
  882. package/skills/expo-router-v4/SKILL.md +1 -76
  883. package/skills/extract-design-system/SKILL.md +1 -76
  884. package/skills/fabel-protocol/SKILL.md +3 -73
  885. package/skills/fixing-accessibility/SKILL.md +1 -76
  886. package/skills/fixing-metadata/SKILL.md +1 -76
  887. package/skills/fixing-motion-performance/SKILL.md +1 -76
  888. package/skills/framer-motion-expert/SKILL.md +1 -76
  889. package/skills/frontend-design/SKILL.md +1 -76
  890. package/skills/frontend-security-expert/SKILL.md +1 -76
  891. package/skills/game-design-expert/SKILL.md +1 -76
  892. package/skills/game-engineering-expert/SKILL.md +1 -76
  893. package/skills/generative-ui-expert/SKILL.md +1 -76
  894. package/skills/geo-fundamentals/SKILL.md +1 -76
  895. package/skills/git-pro/SKILL.md +1 -76
  896. package/skills/github-operations/SKILL.md +1 -76
  897. package/skills/gpt-taste/SKILL.md +1 -76
  898. package/skills/graph-engineering/SKILL.md +28 -0
  899. package/skills/gsap-core/SKILL.md +1 -76
  900. package/skills/gsap-frameworks/SKILL.md +1 -76
  901. package/skills/gsap-performance/SKILL.md +1 -76
  902. package/skills/gsap-plugins/SKILL.md +1 -76
  903. package/skills/gsap-react/SKILL.md +1 -76
  904. package/skills/gsap-scrolltrigger/SKILL.md +1 -76
  905. package/skills/gsap-timeline/SKILL.md +1 -76
  906. package/skills/gsap-utils/SKILL.md +1 -76
  907. package/skills/harden/SKILL.md +1 -76
  908. package/skills/harness-protocol/SKILL.md +6 -73
  909. package/skills/hf-cli/SKILL.md +239 -0
  910. package/skills/hf-cloud-aws-context-discovery/SKILL.md +74 -0
  911. package/skills/hf-cloud-python-env-setup/SKILL.md +90 -0
  912. package/skills/hf-cloud-python-env-setup/requirements.txt +17 -0
  913. package/skills/hf-cloud-python-env-setup/scripts/check_versions.py +29 -0
  914. package/skills/hf-cloud-python-env-setup/scripts/setup_env.py +143 -0
  915. package/skills/hf-cloud-sagemaker-deployment-planner/SKILL.md +90 -0
  916. package/skills/hf-cloud-sagemaker-iam-preflight/SKILL.md +102 -0
  917. package/skills/hf-cloud-sagemaker-iam-preflight/references/minimum-permissions.json +47 -0
  918. package/skills/hf-cloud-sagemaker-iam-preflight/references/trust-policy.json +12 -0
  919. package/skills/hf-cloud-sagemaker-iam-preflight/scripts/check_role.py +184 -0
  920. package/skills/hf-cloud-sagemaker-iam-preflight/scripts/create_role.py +118 -0
  921. package/skills/hf-cloud-sagemaker-production-defaults/SKILL.md +419 -0
  922. package/skills/hf-cloud-sagemaker-production-defaults/references/deployment-template.md +59 -0
  923. package/skills/hf-cloud-sagemaker-production-defaults/scripts/_common.py +148 -0
  924. package/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy.py +327 -0
  925. package/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_async.py +434 -0
  926. package/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_ic.py +506 -0
  927. package/skills/hf-cloud-sagemaker-production-defaults/scripts/invoke_endpoint.py +180 -0
  928. package/skills/hf-cloud-sagemaker-production-defaults/scripts/teardown.py +246 -0
  929. package/skills/hf-cloud-serving-image-selection/SKILL.md +220 -0
  930. package/skills/hf-cloud-serving-image-selection/references/model-to-image.md +111 -0
  931. package/skills/hf-cloud-serving-image-selection/scripts/mirror_image.py +145 -0
  932. package/skills/hf-mem/SKILL.md +79 -0
  933. package/skills/huggingface-best/SKILL.md +134 -0
  934. package/skills/huggingface-community-evals/SKILL.md +207 -0
  935. package/skills/huggingface-community-evals/examples/.env.example +3 -0
  936. package/skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
  937. package/skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
  938. package/skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
  939. package/skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
  940. package/skills/huggingface-datasets/SKILL.md +107 -0
  941. package/skills/huggingface-gradio/SKILL.md +298 -0
  942. package/skills/huggingface-gradio/examples.md +613 -0
  943. package/skills/huggingface-llm-trainer/SKILL.md +738 -0
  944. package/skills/huggingface-llm-trainer/references/gguf_conversion.md +296 -0
  945. package/skills/huggingface-llm-trainer/references/hardware_guide.md +283 -0
  946. package/skills/huggingface-llm-trainer/references/hub_saving.md +364 -0
  947. package/skills/huggingface-llm-trainer/references/local_training_macos.md +231 -0
  948. package/skills/huggingface-llm-trainer/references/reliability_principles.md +371 -0
  949. package/skills/huggingface-llm-trainer/references/trackio_guide.md +191 -0
  950. package/skills/huggingface-llm-trainer/references/training_methods.md +150 -0
  951. package/skills/huggingface-llm-trainer/references/training_patterns.md +203 -0
  952. package/skills/huggingface-llm-trainer/references/troubleshooting.md +282 -0
  953. package/skills/huggingface-llm-trainer/references/unsloth.md +313 -0
  954. package/skills/huggingface-llm-trainer/scripts/convert_to_gguf.py +424 -0
  955. package/skills/huggingface-llm-trainer/scripts/dataset_inspector.py +417 -0
  956. package/skills/huggingface-llm-trainer/scripts/estimate_cost.py +150 -0
  957. package/skills/huggingface-llm-trainer/scripts/hf_benchmarks.py +659 -0
  958. package/skills/huggingface-llm-trainer/scripts/train_dpo_example.py +106 -0
  959. package/skills/huggingface-llm-trainer/scripts/train_grpo_example.py +89 -0
  960. package/skills/huggingface-llm-trainer/scripts/train_sft_example.py +122 -0
  961. package/skills/huggingface-llm-trainer/scripts/unsloth_sft_example.py +512 -0
  962. package/skills/huggingface-local-models/SKILL.md +113 -0
  963. package/skills/huggingface-local-models/references/hardware.md +38 -0
  964. package/skills/huggingface-local-models/references/hub-discovery.md +178 -0
  965. package/skills/huggingface-local-models/references/quantization.md +256 -0
  966. package/skills/huggingface-lora-space-builder/SKILL.md +394 -0
  967. package/skills/huggingface-lora-space-builder/references/adapting-to-the-lora.md +113 -0
  968. package/skills/huggingface-lora-space-builder/references/base-models/krea-2.md +63 -0
  969. package/skills/huggingface-lora-space-builder/references/base-models/ltx.md +205 -0
  970. package/skills/huggingface-lora-space-builder/references/base-models/qwen-image.md +144 -0
  971. package/skills/huggingface-lora-space-builder/references/creative-mode.md +262 -0
  972. package/skills/huggingface-lora-space-builder/references/tasks.md +124 -0
  973. package/skills/huggingface-lora-space-builder/references/zerogpu-and-publishing.md +196 -0
  974. package/skills/huggingface-paper-publisher/SKILL.md +624 -0
  975. package/skills/huggingface-paper-publisher/examples/example_usage.md +326 -0
  976. package/skills/huggingface-paper-publisher/references/quick_reference.md +216 -0
  977. package/skills/huggingface-paper-publisher/scripts/paper_manager.py +606 -0
  978. package/skills/huggingface-paper-publisher/templates/arxiv.md +299 -0
  979. package/skills/huggingface-paper-publisher/templates/ml-report.md +358 -0
  980. package/skills/huggingface-paper-publisher/templates/modern.md +319 -0
  981. package/skills/huggingface-paper-publisher/templates/standard.md +201 -0
  982. package/skills/huggingface-papers/SKILL.md +239 -0
  983. package/skills/huggingface-spaces/README.md +9 -0
  984. package/skills/huggingface-spaces/SKILL.md +242 -0
  985. package/skills/huggingface-spaces/references/3d-cuda-extensions.md +109 -0
  986. package/skills/huggingface-spaces/references/3d-generation.md +98 -0
  987. package/skills/huggingface-spaces/references/3d-gsplat.md +53 -0
  988. package/skills/huggingface-spaces/references/3d-models.md +227 -0
  989. package/skills/huggingface-spaces/references/3d-outputs.md +114 -0
  990. package/skills/huggingface-spaces/references/buckets.md +89 -0
  991. package/skills/huggingface-spaces/references/debugging.md +236 -0
  992. package/skills/huggingface-spaces/references/gradio.md +200 -0
  993. package/skills/huggingface-spaces/references/grants.md +63 -0
  994. package/skills/huggingface-spaces/references/inference-providers.md +97 -0
  995. package/skills/huggingface-spaces/references/known-errors.md +232 -0
  996. package/skills/huggingface-spaces/references/requirements.md +169 -0
  997. package/skills/huggingface-spaces/references/zerogpu.md +349 -0
  998. package/skills/huggingface-tool-builder/SKILL.md +120 -0
  999. package/skills/huggingface-tool-builder/references/baseline_hf_api.py +57 -0
  1000. package/skills/huggingface-tool-builder/references/baseline_hf_api.sh +40 -0
  1001. package/skills/huggingface-tool-builder/references/baseline_hf_api.tsx +57 -0
  1002. package/skills/huggingface-tool-builder/references/find_models_by_paper.sh +230 -0
  1003. package/skills/huggingface-tool-builder/references/hf_enrich_models.sh +96 -0
  1004. package/skills/huggingface-tool-builder/references/hf_model_card_frontmatter.sh +188 -0
  1005. package/skills/huggingface-tool-builder/references/hf_model_papers_auth.sh +171 -0
  1006. package/skills/huggingface-trackio/SKILL.md +142 -0
  1007. package/skills/huggingface-trackio/references/alerts.md +196 -0
  1008. package/skills/huggingface-trackio/references/logging_metrics.md +212 -0
  1009. package/skills/huggingface-trackio/references/retrieving_metrics.md +251 -0
  1010. package/skills/huggingface-vision-trainer/SKILL.md +593 -0
  1011. package/skills/huggingface-vision-trainer/references/finetune_sam2_trainer.md +254 -0
  1012. package/skills/huggingface-vision-trainer/references/hub_saving.md +618 -0
  1013. package/skills/huggingface-vision-trainer/references/image_classification_training_notebook.md +279 -0
  1014. package/skills/huggingface-vision-trainer/references/object_detection_training_notebook.md +700 -0
  1015. package/skills/huggingface-vision-trainer/references/reliability_principles.md +310 -0
  1016. package/skills/huggingface-vision-trainer/references/timm_trainer.md +91 -0
  1017. package/skills/huggingface-vision-trainer/scripts/dataset_inspector.py +814 -0
  1018. package/skills/huggingface-vision-trainer/scripts/estimate_cost.py +217 -0
  1019. package/skills/huggingface-vision-trainer/scripts/image_classification_training.py +383 -0
  1020. package/skills/huggingface-vision-trainer/scripts/object_detection_training.py +710 -0
  1021. package/skills/huggingface-vision-trainer/scripts/sam_segmentation_training.py +382 -0
  1022. package/skills/huggingface-zerogpu/SKILL.md +289 -0
  1023. package/skills/huggingface-zerogpu/references/concurrency.md +79 -0
  1024. package/skills/huggingface-zerogpu/references/cuda-and-deps.md +66 -0
  1025. package/skills/huggingface-zerogpu/references/how-quota-works.md +74 -0
  1026. package/skills/huggingface-zerogpu/references/how-zerogpu-works.md +50 -0
  1027. package/skills/human-gate-negotiation/SKILL.md +30 -0
  1028. package/skills/i18n-localization/SKILL.md +1 -76
  1029. package/skills/impeccable/SKILL.md +1 -76
  1030. package/skills/improve-codebase-architecture/SKILL.md +1 -76
  1031. package/skills/improve-ui/SKILL.md +1 -76
  1032. package/skills/intelligent-routing/SKILL.md +9 -89
  1033. package/skills/knowledge-graph/SKILL.md +1 -76
  1034. package/skills/landing-page/SKILL.md +1 -76
  1035. package/skills/lint-and-validate/SKILL.md +1 -76
  1036. package/skills/llm-engineering/SKILL.md +1 -76
  1037. package/skills/local-first/SKILL.md +1 -76
  1038. package/skills/local-first-architecture/SKILL.md +1 -76
  1039. package/skills/lottie-animation/SKILL.md +1 -76
  1040. package/skills/marquee-loop/SKILL.md +1 -76
  1041. package/skills/masked-reveal/SKILL.md +1 -76
  1042. package/skills/mcp-builder/SKILL.md +1 -76
  1043. package/skills/micro-interaction/SKILL.md +1 -76
  1044. package/skills/mobile-design/SKILL.md +1 -76
  1045. package/skills/monorepo-management/SKILL.md +1 -76
  1046. package/skills/morphing-icons/SKILL.md +1 -76
  1047. package/skills/motion-engineering/SKILL.md +1 -76
  1048. package/skills/nextjs-react-expert/SKILL.md +1 -76
  1049. package/skills/nodejs-best-practices/SKILL.md +1 -76
  1050. package/skills/observability/SKILL.md +1 -76
  1051. package/skills/opentelemetry-observability/SKILL.md +1 -76
  1052. package/skills/page-transition-animation/SKILL.md +1 -76
  1053. package/skills/parallel-agents/SKILL.md +1 -76
  1054. package/skills/performance-profiling/SKILL.md +1 -76
  1055. package/skills/plan-writing/SKILL.md +1 -76
  1056. package/skills/platform-engineer/SKILL.md +1 -76
  1057. package/skills/platform-engineering-opentofu/SKILL.md +1 -76
  1058. package/skills/playwright-ai-e2e/SKILL.md +1 -76
  1059. package/skills/playwright-best-practices/SKILL.md +1 -76
  1060. package/skills/polish/SKILL.md +1 -76
  1061. package/skills/powershell-windows/SKILL.md +1 -76
  1062. package/skills/pricing-page/SKILL.md +1 -76
  1063. package/skills/product-aware-heuristics/SKILL.md +1 -76
  1064. package/skills/progressive-blur/SKILL.md +1 -76
  1065. package/skills/project-idioms/SKILL.md +1 -76
  1066. package/skills/property-based-testing/SKILL.md +1 -76
  1067. package/skills/python-patterns/SKILL.md +1 -76
  1068. package/skills/python-pro/SKILL.md +1 -76
  1069. package/skills/quieter/SKILL.md +1 -76
  1070. package/skills/react-doctor/SKILL.md +1 -76
  1071. package/skills/react-specialist/SKILL.md +1 -76
  1072. package/skills/readme-builder/SKILL.md +1 -76
  1073. package/skills/realtime-patterns/SKILL.md +1 -76
  1074. package/skills/red-team-tactics/SKILL.md +1 -76
  1075. package/skills/redesign-skill/SKILL.md +1 -76
  1076. package/skills/review-animations/SKILL.md +1 -76
  1077. package/skills/rust-pro/SKILL.md +1 -76
  1078. package/skills/semantic-filesystem-navigation/SKILL.md +24 -0
  1079. package/skills/seo-fundamentals/SKILL.md +1 -76
  1080. package/skills/server-management/SKILL.md +1 -76
  1081. package/skills/session-log-interrogation/SKILL.md +29 -0
  1082. package/skills/shadcn-ui-expert/SKILL.md +1 -76
  1083. package/skills/shape/SKILL.md +1 -76
  1084. package/skills/skill-creator/SKILL.md +124 -90
  1085. package/skills/soft-skill/SKILL.md +1 -76
  1086. package/skills/sounds-on-the-web/SKILL.md +1 -76
  1087. package/skills/sql-pro/SKILL.md +1 -76
  1088. package/skills/subagent-driven-development/SKILL.md +32 -0
  1089. package/skills/supabase-postgres-best-practices/SKILL.md +1 -76
  1090. package/skills/svg-animation/SKILL.md +1 -76
  1091. package/skills/swiftui-expert/SKILL.md +1 -76
  1092. package/skills/swiss-design/SKILL.md +1 -76
  1093. package/skills/system-design-pro/SKILL.md +1 -76
  1094. package/skills/systematic-debugging/SKILL.md +3 -73
  1095. package/skills/tailwind-patterns/SKILL.md +1 -76
  1096. package/skills/taste-skill/SKILL.md +1 -76
  1097. package/skills/tdd-workflow/SKILL.md +1 -76
  1098. package/skills/test-result-analyzer/SKILL.md +1 -76
  1099. package/skills/testing-patterns/SKILL.md +1 -76
  1100. package/skills/thermo-nuclear-code-quality-review/SKILL.md +1 -76
  1101. package/skills/thinking-protocol/SKILL.md +1 -78
  1102. package/skills/to-spring-or-not-to-spring/SKILL.md +1 -76
  1103. package/skills/train-sentence-transformers/SKILL.md +109 -0
  1104. package/skills/train-sentence-transformers/references/base_model_selection.md +79 -0
  1105. package/skills/train-sentence-transformers/references/dataset_formats.md +128 -0
  1106. package/skills/train-sentence-transformers/references/evaluators_cross_encoder.md +116 -0
  1107. package/skills/train-sentence-transformers/references/evaluators_multi_vector_encoder.md +101 -0
  1108. package/skills/train-sentence-transformers/references/evaluators_sentence_transformer.md +151 -0
  1109. package/skills/train-sentence-transformers/references/evaluators_sparse_encoder.md +121 -0
  1110. package/skills/train-sentence-transformers/references/hardware_guide.md +105 -0
  1111. package/skills/train-sentence-transformers/references/hf_jobs_execution.md +173 -0
  1112. package/skills/train-sentence-transformers/references/losses_cross_encoder.md +137 -0
  1113. package/skills/train-sentence-transformers/references/losses_multi_vector_encoder.md +100 -0
  1114. package/skills/train-sentence-transformers/references/losses_sentence_transformer.md +246 -0
  1115. package/skills/train-sentence-transformers/references/losses_sparse_encoder.md +106 -0
  1116. package/skills/train-sentence-transformers/references/model_architectures.md +178 -0
  1117. package/skills/train-sentence-transformers/references/prompts_and_instructions.md +160 -0
  1118. package/skills/train-sentence-transformers/references/training_args.md +270 -0
  1119. package/skills/train-sentence-transformers/references/troubleshooting.md +225 -0
  1120. package/skills/train-sentence-transformers/scripts/mine_hard_negatives.py +199 -0
  1121. package/skills/train-sentence-transformers/scripts/train_cross_encoder_distillation_example.py +254 -0
  1122. package/skills/train-sentence-transformers/scripts/train_cross_encoder_example.py +253 -0
  1123. package/skills/train-sentence-transformers/scripts/train_cross_encoder_listwise_example.py +282 -0
  1124. package/skills/train-sentence-transformers/scripts/train_multi_vector_encoder_example.py +240 -0
  1125. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_distillation_example.py +303 -0
  1126. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_example.py +227 -0
  1127. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_make_multilingual_example.py +308 -0
  1128. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_matryoshka_example.py +212 -0
  1129. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_multi_dataset_example.py +258 -0
  1130. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_static_embedding_example.py +273 -0
  1131. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_with_lora_example.py +275 -0
  1132. package/skills/train-sentence-transformers/scripts/train_sparse_encoder_distillation_example.py +262 -0
  1133. package/skills/train-sentence-transformers/scripts/train_sparse_encoder_example.py +237 -0
  1134. package/skills/transformers-js/SKILL.md +692 -0
  1135. package/skills/transformers-js/references/CACHE.md +339 -0
  1136. package/skills/transformers-js/references/CONFIGURATION.md +438 -0
  1137. package/skills/transformers-js/references/EXAMPLES.md +620 -0
  1138. package/skills/transformers-js/references/MODEL_ARCHITECTURES.md +167 -0
  1139. package/skills/transformers-js/references/MODEL_REGISTRY.md +197 -0
  1140. package/skills/transformers-js/references/PIPELINE_OPTIONS.md +557 -0
  1141. package/skills/transformers-js/references/TEXT_GENERATION.md +315 -0
  1142. package/skills/transitions-dev/SKILL.md +1 -76
  1143. package/skills/trend-researcher/SKILL.md +1 -76
  1144. package/skills/tribunal-instincts-memory/SKILL.md +31 -0
  1145. package/skills/trl-training/SKILL.md +318 -0
  1146. package/skills/typescript-advanced/SKILL.md +1 -76
  1147. package/skills/typeset/SKILL.md +1 -76
  1148. package/skills/ui-reasoning-engine/SKILL.md +1 -76
  1149. package/skills/ui-skill-packs/SKILL.md +1 -76
  1150. package/skills/ui-skills-root/SKILL.md +1 -76
  1151. package/skills/ui-ux-pro-max/SKILL.md +1 -76
  1152. package/skills/ui-ux-researcher/SKILL.md +1 -76
  1153. package/skills/vector-search-pgvector/SKILL.md +1 -76
  1154. package/skills/verification-before-completion/SKILL.md +1 -76
  1155. package/skills/vue-expert/SKILL.md +1 -76
  1156. package/skills/vulnerability-scanner/SKILL.md +1 -76
  1157. package/skills/web-accessibility-auditor/SKILL.md +1 -76
  1158. package/skills/web-design-guidelines/SKILL.md +1 -76
  1159. package/skills/web-quality-audit/SKILL.md +1 -76
  1160. package/skills/webapp-testing/SKILL.md +1 -76
  1161. package/skills/webgpu-performance/SKILL.md +1 -76
  1162. package/skills/whimsy-injector/SKILL.md +1 -76
  1163. package/skills/workflow-optimizer/SKILL.md +1 -76
  1164. package/skills/zero-trust-passkeys/SKILL.md +1 -76
@@ -2,27 +2,26 @@
2
2
  /**
3
3
  * memory_engine.js — Tribunal Kit 4-Type Taxonomy Persistent Memory Engine
4
4
  * ==============================================================================
5
- * SQLite-backed memory storage with budget-constrained recall.
5
+ * Persistent, file-backed memory storage with atomic locking, budget-constrained
6
+ * recall, and human-readable MEMORY.md projection.
6
7
  *
7
- * Memory Types:
8
- * - semantic: Permanent facts (no expiration)
9
- * - procedural: How-to recipes (no expiration)
10
- * - episodic: Events with 30-day TTL
11
- * - working: Session scratch (cleared on restart)
8
+ * Fully unified and cross-compatible with:
9
+ * - Rust Core: crates/core/src/commands/memory.rs
10
+ * - TypeScript CLI: dist/commands/memory.js
11
+ * - Tribunal MCP Server
12
12
  *
13
- * Recall Algorithm:
14
- * score = relevance × recency × priority
15
- * where relevance = token overlap with query
16
- * recency = -0.1 × days since last access
17
- * priority = explicit priority (default: 1.0)
13
+ * Memory Types:
14
+ * - semantic: Permanent project facts and rules (no expiration)
15
+ * - procedural: How-to recipes and steps (no expiration)
16
+ * - episodic: Session events and decisions (auto-decays after 30 days)
17
+ * - working: Current session scratchpad (cleared on gc/session reset)
18
18
  *
19
- * Usage:
20
- * const { MemoryEngine } = require('./memory_engine');
21
- * const mem = new MemoryEngine(agentDir);
22
- * mem.store('semantic', 'User prefers TypeScript', ['typescript', 'preference']);
23
- * const { results } = mem.recall('typescript', 2000);
19
+ * Storage Architecture:
20
+ * - Index: .agent/history/memory/.memory.idx (atomic JSON index)
21
+ * - Projection: .agent/history/memory/MEMORY.md (human-readable markdown)
22
+ * - Lock: .agent/history/memory/.memory.idx.lock
24
23
  *
25
- * Zero external dependencies beyond better-sqlite3 (already installed).
24
+ * Zero external dependencies beyond native Node.js core modules.
26
25
  */
27
26
 
28
27
  'use strict';
@@ -30,120 +29,137 @@
30
29
  const fs = require('fs');
31
30
  const path = require('path');
32
31
 
33
- // Lazy-load better-sqlite3 (optional dependency for environments without native compilation)
34
- let Database = null;
35
- try {
36
- Database = require('better-sqlite3');
37
- } catch (_err) {
38
- // Fallback to in-memory storage if better-sqlite3 not available
39
- console.warn('[Memory] better-sqlite3 not available, using in-memory fallback');
40
- }
32
+ // ─── Constants & Configuration ────────────────────────────────────────────────
41
33
 
42
- // ─── Memory Types ─────────────────────────────────────────────────────────────
34
+ const MEMORY_DIR = path.join('history', 'memory');
35
+ const INDEX_FILE = '.memory.idx';
36
+ const PROJECTION_FILE = 'MEMORY.md';
37
+ const MAX_ENTRIES = 500;
38
+ const EPISODIC_TTL_DAYS = 30;
39
+ const DEFAULT_BUDGET = 2000;
43
40
 
44
41
  const MEMORY_TYPES = {
45
- SEMANTIC: 'semantic', // Permanent facts
46
- PROCEDURAL: 'procedural', // How-to recipes
47
- EPISODIC: 'episodic', // Events (30-day TTL)
48
- WORKING: 'working', // Session scratch
42
+ SEMANTIC: 'semantic',
43
+ PROCEDURAL: 'procedural',
44
+ EPISODIC: 'episodic',
45
+ WORKING: 'working',
49
46
  };
50
47
 
51
48
  const VALID_TYPES = Object.values(MEMORY_TYPES);
52
49
 
53
- // ─── In-Memory Fallback Storage ───────────────────────────────────────────────
50
+ const TYPE_PRIORITY = {
51
+ semantic: 1.0,
52
+ procedural: 0.9,
53
+ episodic: 0.7,
54
+ working: 0.5,
55
+ };
54
56
 
55
- class InMemoryStore {
56
- constructor() {
57
- this.memories = new Map();
58
- this.nextId = 1;
59
- }
57
+ // ─── Utility Helpers ──────────────────────────────────────────────────────────
60
58
 
61
- prepare(sql) {
62
- const self = this;
59
+ function estimateTokens(text) {
60
+ if (!text) return 0;
61
+ return Math.ceil(text.length / 4);
62
+ }
63
63
 
64
- // Simple SQL-like operations on in-memory Map
65
- return {
66
- run(...params) {
67
- // INSERT
68
- if (sql.includes('INSERT INTO memories')) {
69
- const [type, content, tags, priority, expiresAt] = params;
70
- const id = self.nextId++;
71
- self.memories.set(id, {
72
- id,
73
- type,
74
- content,
75
- tags: JSON.parse(tags),
76
- priority,
77
- created_at: new Date().toISOString(),
78
- accessed_at: new Date().toISOString(),
79
- expires_at: expiresAt,
80
- access_count: 0,
81
- });
82
- return { lastInsertRowid: id, changes: 1 };
83
- }
84
- // UPDATE
85
- if (sql.includes('UPDATE memories')) {
86
- for (const [_id, mem] of self.memories) {
87
- mem.accessed_at = new Date().toISOString();
88
- mem.access_count++;
89
- }
90
- return { changes: self.memories.size };
91
- }
92
- // DELETE
93
- if (sql.includes('DELETE FROM memories')) {
94
- const before = self.memories.size;
95
- for (const [id, mem] of self.memories) {
96
- if (
97
- mem.type === 'episodic' &&
98
- mem.expires_at &&
99
- new Date(mem.expires_at) < new Date()
100
- ) {
101
- self.memories.delete(id);
102
- }
103
- }
104
- return { changes: before - self.memories.size };
105
- }
106
- return { changes: 0 };
107
- },
64
+ function nowEpochStr() {
65
+ return `${Math.floor(Date.now() / 1000)}Z`;
66
+ }
108
67
 
109
- all(...params) {
110
- const [query] = params;
111
- const results = [];
68
+ function daysSince(ts) {
69
+ if (!ts) return 0;
70
+ const created = parseInt(String(ts).replace('Z', ''), 10) || 0;
71
+ const now = Math.floor(Date.now() / 1000);
72
+ return Math.max(0, Math.floor((now - created) / 86400));
73
+ }
112
74
 
113
- for (const [_id, mem] of self.memories) {
114
- // Filter expired
115
- if (mem.expires_at && new Date(mem.expires_at) < new Date()) {
116
- continue;
117
- }
75
+ // ─── Lock Management ──────────────────────────────────────────────────────────
76
+
77
+ function acquireLock(indexPath) {
78
+ const lockPath = indexPath + '.lock';
79
+ const maxRetries = 10;
80
+ for (let i = 0; i < maxRetries; i++) {
81
+ try {
82
+ const fd = fs.openSync(lockPath, 'wx');
83
+ fs.closeSync(fd);
84
+ return lockPath;
85
+ } catch (err) {
86
+ if (err.code !== 'EEXIST') {
87
+ throw err;
88
+ }
89
+ const waitBuf = new Int32Array(new SharedArrayBuffer(4));
90
+ Atomics.wait(waitBuf, 0, 0, 50);
91
+ }
92
+ }
118
93
 
119
- // Calculate score
120
- const relevance = (
121
- mem.content.toLowerCase().match(new RegExp(query.toLowerCase(), 'g')) || []
122
- ).length;
123
- const daysSinceAccess =
124
- (Date.now() - new Date(mem.accessed_at).getTime()) / (1000 * 60 * 60 * 24);
125
- const score = relevance * 3.0 + daysSinceAccess * -0.1 + mem.priority;
94
+ // Check for stale lock (older than 10s)
95
+ try {
96
+ const stats = fs.statSync(lockPath);
97
+ if (Date.now() - stats.mtimeMs > 10000) {
98
+ fs.unlinkSync(lockPath);
99
+ const fd = fs.openSync(lockPath, 'wx');
100
+ fs.closeSync(fd);
101
+ return lockPath;
102
+ }
103
+ } catch {}
126
104
 
127
- results.push({ ...mem, score });
128
- }
105
+ throw new Error('Could not acquire lock for memory index');
106
+ }
129
107
 
130
- return results.sort((a, b) => b.score - a.score);
131
- },
108
+ function releaseLock(lockPath) {
109
+ try {
110
+ if (lockPath && fs.existsSync(lockPath)) {
111
+ fs.unlinkSync(lockPath);
112
+ }
113
+ } catch {}
114
+ }
132
115
 
133
- get(...params) {
134
- const [id] = params;
135
- return self.memories.get(id) || undefined;
136
- },
137
- };
116
+ // ─── Scoring Engine ───────────────────────────────────────────────────────────
117
+
118
+ function computeScore(entry, query, corpus = []) {
119
+ if (!query || !entry.content) return 0;
120
+ const queryWords = query.toLowerCase().split(/\s+/).filter(w => w.length > 2);
121
+ if (queryWords.length === 0) return 0;
122
+ const contentLower = entry.content.toLowerCase();
123
+
124
+ let relevance = 0;
125
+ const k1 = 1.2;
126
+ const b = 0.75;
127
+ const avgdl_raw = corpus.length > 0 ? corpus.reduce((sum, e) => sum + (e.content ? e.content.length : 0), 0) / corpus.length : 100;
128
+ const avgdl = avgdl_raw || 100;
129
+ const dl = contentLower.length;
130
+
131
+ for (const word of queryWords) {
132
+ const termFreq = contentLower.split(word).length - 1;
133
+ if (termFreq === 0 && (!entry.tags || !entry.tags.some(t => t.toLowerCase().includes(word)))) continue;
134
+
135
+ // Effective TF including tag boost
136
+ const tf = termFreq + (entry.tags && entry.tags.some(t => t.toLowerCase().includes(word)) ? 2 : 0);
137
+
138
+ const docFreq = corpus.filter(e => e.content && e.content.toLowerCase().includes(word)).length;
139
+ // IDF
140
+ const idf = Math.log((corpus.length - docFreq + 0.5) / (docFreq + 0.5) + 1.0);
141
+
142
+ relevance += idf * (tf * (k1 + 1)) / (tf + k1 * (1 - b + b * (dl / avgdl)));
138
143
  }
139
144
 
140
- exec(_sql) {
141
- // No-op for in-memory
145
+ // Exact phrase match bonus
146
+ if (contentLower.includes(query.toLowerCase())) {
147
+ relevance += 2.0;
142
148
  }
143
149
 
144
- close() {
145
- this.memories.clear();
150
+ if (relevance === 0) return 0;
151
+
152
+ const priority = entry.priority != null ? entry.priority : (TYPE_PRIORITY[entry.memory_type] || 0.5);
153
+ const confidence = typeof entry.confidence === 'number' ? entry.confidence : 1.0;
154
+
155
+ let recency = 0;
156
+ if (entry.memory_type === 'episodic') {
157
+ const age = daysSince(entry.created_at);
158
+ recency = Math.exp(-age / 30);
146
159
  }
160
+ const freqBoost = Math.max(0, Math.log(entry.access_count || 1)) * 0.05;
161
+
162
+ return (relevance * priority * confidence) + recency + freqBoost;
147
163
  }
148
164
 
149
165
  // ─── Memory Engine Class ──────────────────────────────────────────────────────
@@ -151,300 +167,456 @@ class InMemoryStore {
151
167
  class MemoryEngine {
152
168
  /**
153
169
  * Initialize the Memory Engine.
154
- * @param {string} agentDir - Path to .agent/ directory
155
- * @param {object} options - Configuration options
170
+ * @param {string} agentDir - Path to .agent/ directory or workspace root
171
+ * @param {object} [options] - Configuration options
156
172
  */
157
173
  constructor(agentDir, options = {}) {
158
- this.agentDir = agentDir;
159
- this.dbPath = path.join(agentDir, 'history', 'memory.db');
174
+ let resolved = path.resolve(agentDir || process.cwd());
175
+ // Auto-detect .agent directory if parent workspace given
176
+ if (!resolved.endsWith('.agent') && !resolved.endsWith('.agent' + path.sep)) {
177
+ const nested = path.join(resolved, '.agent');
178
+ if (fs.existsSync(nested) && fs.statSync(nested).isDirectory()) {
179
+ resolved = nested;
180
+ }
181
+ }
182
+
183
+ this.agentDir = resolved;
184
+ this.memoryDir = path.join(this.agentDir, MEMORY_DIR);
185
+ this.indexPath = path.join(this.memoryDir, INDEX_FILE);
186
+ this.projectionPath = path.join(this.memoryDir, PROJECTION_FILE);
160
187
  this.options = {
161
- defaultTTL: 30 * 24 * 60 * 60 * 1000, // 30 days for episodic
162
- maxWorkingMemorySize: 100, // Max working memory entries
188
+ defaultTTL: EPISODIC_TTL_DAYS * 24 * 60 * 60 * 1000,
189
+ maxEntries: MAX_ENTRIES,
163
190
  ...options,
164
191
  };
165
192
 
166
- // Ensure history directory exists
167
- const historyDir = path.dirname(this.dbPath);
168
- if (!fs.existsSync(historyDir)) {
169
- fs.mkdirSync(historyDir, { recursive: true });
193
+ if (!fs.existsSync(this.memoryDir)) {
194
+ fs.mkdirSync(this.memoryDir, { recursive: true });
170
195
  }
171
-
172
- // Initialize database
173
- this.db = this.initDatabase();
174
- this.initSchema();
175
196
  }
176
197
 
177
198
  /**
178
- * Initialize database connection (SQLite or in-memory fallback).
199
+ * Load index from disk safely.
200
+ * @returns {{ version: number, entries: Array<object>, next_id: number }}
179
201
  */
180
- initDatabase() {
181
- if (Database) {
182
- return new Database(this.dbPath);
202
+ loadIndex() {
203
+ if (!fs.existsSync(this.indexPath)) {
204
+ return { version: 1, entries: [], next_id: 1 };
205
+ }
206
+ try {
207
+ const content = fs.readFileSync(this.indexPath, 'utf8');
208
+ return JSON.parse(content);
209
+ } catch {
210
+ return { version: 1, entries: [], next_id: 1 };
183
211
  }
184
- return new InMemoryStore();
185
212
  }
186
213
 
187
214
  /**
188
- * Create database schema if not exists.
215
+ * Atomically persist index to disk.
216
+ * @param {object} index
189
217
  */
190
- initSchema() {
191
- this.db.exec(`
192
- CREATE TABLE IF NOT EXISTS memories (
193
- id INTEGER PRIMARY KEY AUTOINCREMENT,
194
- type TEXT NOT NULL CHECK(type IN ('semantic', 'procedural', 'episodic', 'working')),
195
- content TEXT NOT NULL,
196
- tags TEXT,
197
- priority REAL DEFAULT 1.0,
198
- created_at TEXT DEFAULT CURRENT_TIMESTAMP,
199
- accessed_at TEXT DEFAULT CURRENT_TIMESTAMP,
200
- expires_at TEXT,
201
- access_count INTEGER DEFAULT 0
202
- );
203
-
204
- CREATE INDEX IF NOT EXISTS idx_memories_type ON memories(type);
205
- CREATE INDEX IF NOT EXISTS idx_memories_accessed ON memories(accessed_at);
206
- `);
218
+ saveIndex(index) {
219
+ fs.mkdirSync(this.memoryDir, { recursive: true });
220
+ const tmpPath = this.indexPath + '.tmp';
221
+ fs.writeFileSync(tmpPath, JSON.stringify(index, null, 2), 'utf8');
222
+ fs.renameSync(tmpPath, this.indexPath);
207
223
  }
208
224
 
209
225
  /**
210
226
  * Store a new memory entry.
211
- * @param {string} type - Memory type (semantic, procedural, episodic, working)
227
+ * @param {string} type - 'semantic' | 'procedural' | 'episodic' | 'working'
212
228
  * @param {string} content - Memory content
213
- * @param {string[]} tags - Searchable tags
214
- * @param {object} options - Additional options (priority, expiresIn)
229
+ * @param {string[]} [tags] - Searchable tags
230
+ * @param {object} [options] - Additional options (priority, source, sessionId)
215
231
  * @returns {{ id: number, type: string, token_estimate: number }}
216
232
  */
217
233
  store(type, content, tags = [], options = {}) {
218
- // Validate type
219
234
  if (!VALID_TYPES.includes(type)) {
220
235
  throw new Error(`Invalid memory type: "${type}". Must be one of: ${VALID_TYPES.join(', ')}`);
221
236
  }
222
237
 
223
- // Validate content
224
- if (!content || typeof content !== 'string') {
225
- throw new Error('Memory content must be a non-empty string');
238
+ if (!content || typeof content !== 'string' || content.trim().length === 0) {
239
+ throw new Error('Memory content cannot be empty');
226
240
  }
227
241
 
228
- // Calculate expiration
229
- let expiresAt = null;
230
- if (type === MEMORY_TYPES.EPISODIC) {
231
- const expiresIn = options.expiresIn || this.options.defaultTTL;
232
- expiresAt = new Date(Date.now() + expiresIn).toISOString();
233
- }
242
+ const lockPath = acquireLock(this.indexPath);
243
+ try {
244
+ const index = this.loadIndex();
245
+
246
+ // Enforce capacity (500)
247
+ if (index.entries.length >= this.options.maxEntries) {
248
+ index.entries = index.entries.filter(e => e.memory_type !== 'working');
249
+ if (index.entries.length >= this.options.maxEntries) {
250
+ index.entries = index.entries.filter(e => {
251
+ if (e.memory_type === 'episodic') {
252
+ return daysSince(e.created_at) < EPISODIC_TTL_DAYS;
253
+ }
254
+ return true;
255
+ });
256
+ }
257
+ if (index.entries.length >= this.options.maxEntries) {
258
+ throw new Error(`Memory at capacity (${this.options.maxEntries}). Run: tk memory gc`);
259
+ }
260
+ }
234
261
 
235
- // Insert into database
236
- const stmt = this.db.prepare(`
237
- INSERT INTO memories (type, content, tags, priority, expires_at)
238
- VALUES (?, ?, ?, ?, ?)
239
- `);
262
+ const now = nowEpochStr();
263
+ const nextId = index.next_id || (index.entries.length > 0 ? Math.max(...index.entries.map(e => e.id)) + 1 : 1);
264
+ const cleanTags = Array.isArray(tags)
265
+ ? tags.filter(t => typeof t === 'string' && t.trim().length > 0).map(t => t.trim())
266
+ : [];
267
+
268
+ const entry = {
269
+ id: nextId,
270
+ memory_type: type,
271
+ content: content.trim(),
272
+ tags: cleanTags,
273
+ created_at: now,
274
+ last_accessed: now,
275
+ access_count: 0,
276
+ token_estimate: estimateTokens(content),
277
+ source: options.source || (type === 'working' ? 'session' : 'manual'),
278
+ session_id: options.sessionId || options.session_id || null,
279
+ priority: typeof options.priority === 'number' ? options.priority : 1.0,
280
+ relations: Array.isArray(options.relations) ? options.relations : [],
281
+ confidence: typeof options.confidence === 'number' ? options.confidence : (options.source === 'learned' ? 0.5 : 1.0),
282
+ };
240
283
 
241
- const result = stmt.run(
242
- type,
243
- content,
244
- JSON.stringify(tags),
245
- options.priority || 1.0,
246
- expiresAt,
247
- );
284
+ index.entries.push(entry);
285
+ index.next_id = nextId + 1;
248
286
 
249
- return {
250
- id: result.lastInsertRowid,
251
- type,
252
- token_estimate: this.estimateTokens(content),
253
- };
287
+ this.saveIndex(index);
288
+ this.generateProjection(index);
289
+
290
+ return {
291
+ id: entry.id,
292
+ type: entry.memory_type,
293
+ token_estimate: entry.token_estimate,
294
+ };
295
+ } finally {
296
+ releaseLock(lockPath);
297
+ }
254
298
  }
255
299
 
256
300
  /**
257
- * Recall memories matching a query, within token budget.
301
+ * Recall memories matching a query within a token budget.
258
302
  * @param {string} query - Search query
259
- * @param {number} budget - Maximum token budget
260
- * @returns {{ results: array, tokens_used: number }}
303
+ * @param {number} [budget] - Token budget (default 2000)
304
+ * @returns {{ results: Array<object>, tokens_used: number, budget: number }}
261
305
  */
262
- recall(query, budget = 2000) {
263
- const _tokens = this.tokenize(query);
264
-
265
- // Score by relevance × recency × priority
266
- const memories = this.db
267
- .prepare(
268
- `
269
- SELECT *, (
270
- (length(content) - length(replace(lower(content), lower(?), ''))) / length(?) * 3.0
271
- + (julianday('now') - julianday(accessed_at)) * -0.1
272
- + priority
273
- ) as score
274
- FROM memories
275
- WHERE expires_at IS NULL OR expires_at > datetime('now')
276
- ORDER BY score DESC
277
- `,
278
- )
279
- .all(query, query);
280
-
281
- // Fit within budget
282
- const selected = [];
283
- let usedTokens = 0;
284
-
285
- for (const mem of memories) {
286
- const tokens = this.estimateTokens(mem.content);
287
- if (usedTokens + tokens <= budget) {
288
- selected.push({
289
- id: mem.id,
290
- memory_type: mem.type,
291
- content: mem.content,
292
- tags: mem.tags ? JSON.parse(mem.tags) : [],
293
- priority: mem.priority,
294
- score: mem.score,
306
+ recall(query, budget = DEFAULT_BUDGET) {
307
+ const lockPath = acquireLock(this.indexPath);
308
+ try {
309
+ const index = this.loadIndex();
310
+
311
+ const scored = index.entries
312
+ .map(entry => ({ entry, score: computeScore(entry, query, index.entries) }))
313
+ .filter(s => s.score > 0);
314
+
315
+ // Apply relational boosting
316
+ for (const s of scored) {
317
+ if (s.entry.relations) {
318
+ for (const relId of s.entry.relations) {
319
+ const related = scored.find(r => String(r.entry.id) === String(relId));
320
+ if (related) {
321
+ related.score += s.score * 0.2; // 20% boost from incoming relation
322
+ }
323
+ }
324
+ }
325
+ }
326
+
327
+ scored.sort((a, b) => b.score - a.score);
328
+
329
+ let totalTokens = 0;
330
+ const results = [];
331
+ let indexModified = false;
332
+
333
+ for (const { entry, score } of scored) {
334
+ if (totalTokens + entry.token_estimate > budget) break;
335
+ totalTokens += entry.token_estimate;
336
+
337
+ entry.last_accessed = nowEpochStr();
338
+ entry.access_count = (entry.access_count || 0) + 1;
339
+ indexModified = true;
340
+
341
+ results.push({
342
+ id: entry.id,
343
+ memory_type: entry.memory_type,
344
+ content: entry.content,
345
+ tags: entry.tags || [],
346
+ priority: entry.priority != null ? entry.priority : 1.0,
347
+ score,
348
+ token_estimate: entry.token_estimate,
349
+ created_at: entry.created_at,
350
+ last_accessed: entry.last_accessed,
351
+ access_count: entry.access_count,
295
352
  });
296
- usedTokens += tokens;
297
-
298
- // Update access stats
299
- this.db
300
- .prepare(
301
- `
302
- UPDATE memories
303
- SET accessed_at = CURRENT_TIMESTAMP, access_count = access_count + 1
304
- WHERE id = ?
305
- `,
306
- )
307
- .run(mem.id);
308
353
  }
309
- }
310
354
 
311
- return { results: selected, tokens_used: usedTokens };
355
+ if (indexModified) {
356
+ this.saveIndex(index);
357
+ }
358
+
359
+ return { results, tokens_used: totalTokens, budget };
360
+ } finally {
361
+ releaseLock(lockPath);
362
+ }
312
363
  }
313
364
 
314
365
  /**
315
- * Get a specific memory by ID.
316
- * @param {number} id - Memory ID
366
+ * Retrieve a specific memory entry by ID.
367
+ * @param {number} id
317
368
  * @returns {object|null}
318
369
  */
319
370
  get(id) {
320
- const mem = this.db
321
- .prepare(
322
- `
323
- SELECT * FROM memories WHERE id = ?
324
- `,
325
- )
326
- .get(id);
327
-
328
- if (!mem) return null;
371
+ const targetId = Number(id);
372
+ const index = this.loadIndex();
373
+ const entry = index.entries.find(e => e.id === targetId);
374
+ if (!entry) return null;
329
375
 
330
376
  return {
331
- id: mem.id,
332
- memory_type: mem.type,
333
- content: mem.content,
334
- tags: mem.tags ? JSON.parse(mem.tags) : [],
335
- priority: mem.priority,
336
- created_at: mem.created_at,
337
- accessed_at: mem.accessed_at,
338
- access_count: mem.access_count,
339
- expires_at: mem.expires_at,
377
+ id: entry.id,
378
+ memory_type: entry.memory_type,
379
+ content: entry.content,
380
+ tags: entry.tags || [],
381
+ priority: entry.priority != null ? entry.priority : 1.0,
382
+ created_at: entry.created_at,
383
+ last_accessed: entry.last_accessed,
384
+ access_count: entry.access_count || 0,
385
+ token_estimate: entry.token_estimate,
386
+ source: entry.source,
387
+ session_id: entry.session_id,
388
+ relations: entry.relations || [],
389
+ confidence: typeof entry.confidence === 'number' ? entry.confidence : 1.0,
340
390
  };
341
391
  }
342
392
 
343
393
  /**
344
- * Delete a memory by ID.
345
- * @param {number} id - Memory ID
346
- * @returns {boolean} True if deleted
394
+ * Delete a memory entry by ID.
395
+ * @param {number} id
396
+ * @returns {boolean} True if deleted, false if not found
347
397
  */
348
398
  delete(id) {
349
- const result = this.db
350
- .prepare(
351
- `
352
- DELETE FROM memories WHERE id = ?
353
- `,
354
- )
355
- .run(id);
356
-
357
- return result.changes > 0;
399
+ const targetId = Number(id);
400
+ const lockPath = acquireLock(this.indexPath);
401
+ try {
402
+ const index = this.loadIndex();
403
+ const before = index.entries.length;
404
+ index.entries = index.entries.filter(e => e.id !== targetId);
405
+
406
+ if (index.entries.length === before) {
407
+ return false;
408
+ }
409
+
410
+ this.saveIndex(index);
411
+ this.generateProjection(index);
412
+ return true;
413
+ } finally {
414
+ releaseLock(lockPath);
415
+ }
358
416
  }
359
417
 
360
418
  /**
361
- * Clear all working memories (session scratch).
419
+ * Clear all working memories (session scratchpad).
420
+ * @returns {number} Number of cleared entries
362
421
  */
363
422
  clearWorking() {
364
- this.db
365
- .prepare(
366
- `
367
- DELETE FROM memories WHERE type = 'working'
368
- `,
369
- )
370
- .run();
423
+ const lockPath = acquireLock(this.indexPath);
424
+ try {
425
+ const index = this.loadIndex();
426
+ const before = index.entries.length;
427
+ index.entries = index.entries.filter(e => e.memory_type !== 'working');
428
+ const removed = before - index.entries.length;
429
+
430
+ if (removed > 0) {
431
+ this.saveIndex(index);
432
+ this.generateProjection(index);
433
+ }
434
+
435
+ return removed;
436
+ } finally {
437
+ releaseLock(lockPath);
438
+ }
371
439
  }
372
440
 
373
441
  /**
374
- * Auto-expire episodic memories.
442
+ * Expire old memories and perform garbage collection.
443
+ * Clears all working memories and episodic memories older than 30 days.
444
+ * @returns {{ working_removed: number, episodic_removed: number, before: number, after: number }}
375
445
  */
376
446
  expire() {
377
- this.db
378
- .prepare(
379
- `
380
- DELETE FROM memories
381
- WHERE type = 'episodic' AND expires_at < datetime('now')
382
- `,
383
- )
384
- .run();
447
+ const lockPath = acquireLock(this.indexPath);
448
+ try {
449
+ const index = this.loadIndex();
450
+ const before = index.entries.length;
451
+
452
+ let workingRemoved = 0;
453
+ let episodicRemoved = 0;
454
+
455
+ index.entries = index.entries.filter(e => {
456
+ if (e.memory_type === 'working') {
457
+ workingRemoved++;
458
+ return false;
459
+ }
460
+ if (e.memory_type === 'episodic' && daysSince(e.created_at) >= EPISODIC_TTL_DAYS) {
461
+ episodicRemoved++;
462
+ return false;
463
+ }
464
+ return true;
465
+ });
466
+
467
+ this.saveIndex(index);
468
+ this.generateProjection(index);
469
+
470
+ return {
471
+ working_removed: workingRemoved,
472
+ episodic_removed: episodicRemoved,
473
+ before,
474
+ after: index.entries.length,
475
+ };
476
+ } finally {
477
+ releaseLock(lockPath);
478
+ }
385
479
  }
386
480
 
387
481
  /**
388
- * Get memory statistics.
482
+ * Alias for expire() to match CLI terminology.
389
483
  */
390
- stats() {
391
- const stats = this.db
392
- .prepare(
393
- `
394
- SELECT
395
- type,
396
- COUNT(*) as count,
397
- SUM(length(content)) as total_chars
398
- FROM memories
399
- WHERE expires_at IS NULL OR expires_at > datetime('now')
400
- GROUP BY type
401
- `,
402
- )
403
- .all();
404
-
405
- const result = {
406
- total: 0,
407
- by_type: {},
408
- };
484
+ gc() {
485
+ return this.expire();
486
+ }
409
487
 
410
- for (const stat of stats) {
411
- result.total += stat.count;
412
- result.by_type[stat.type] = {
413
- count: stat.count,
414
- total_chars: stat.total_chars,
415
- estimated_tokens: Math.ceil(stat.total_chars / 4),
488
+ /**
489
+ * Compute memory statistics.
490
+ * @returns {object}
491
+ */
492
+ stats() {
493
+ const index = this.loadIndex();
494
+ const total = index.entries.length;
495
+ const semantic = index.entries.filter(e => e.memory_type === 'semantic').length;
496
+ const procedural = index.entries.filter(e => e.memory_type === 'procedural').length;
497
+ const episodic = index.entries.filter(e => e.memory_type === 'episodic').length;
498
+ const working = index.entries.filter(e => e.memory_type === 'working').length;
499
+ const totalTokens = index.entries.reduce((sum, e) => sum + (e.token_estimate || 0), 0);
500
+
501
+ const byType = {};
502
+ for (const type of VALID_TYPES) {
503
+ const typeEntries = index.entries.filter(e => e.memory_type === type);
504
+ const typeChars = typeEntries.reduce((sum, e) => sum + (e.content ? e.content.length : 0), 0);
505
+ const typeTokens = typeEntries.reduce((sum, e) => sum + (e.token_estimate || 0), 0);
506
+ byType[type] = {
507
+ count: typeEntries.length,
508
+ total_chars: typeChars,
509
+ estimated_tokens: typeTokens,
416
510
  };
417
511
  }
418
512
 
419
- return result;
513
+ return {
514
+ total,
515
+ semantic,
516
+ procedural,
517
+ episodic,
518
+ working,
519
+ total_tokens: totalTokens,
520
+ capacity: this.options.maxEntries,
521
+ by_type: byType,
522
+ };
420
523
  }
421
524
 
422
525
  /**
423
- * Close database connection.
526
+ * Generate human-readable Markdown projection (MEMORY.md).
527
+ * @param {object} [index]
528
+ * @returns {string} Absolute path to projection file
424
529
  */
425
- close() {
426
- if (this.db && this.db.close) {
427
- this.db.close();
530
+ generateProjection(index) {
531
+ if (!index) index = this.loadIndex();
532
+
533
+ let md = '# 🧠 Tribunal Memory Index\n';
534
+ md += '> Auto-generated by `tribunal-kit memory export`. Do not edit manually.\n';
535
+
536
+ const sem = index.entries.filter(e => e.memory_type === 'semantic');
537
+ const proc = index.entries.filter(e => e.memory_type === 'procedural');
538
+ const ep = index.entries.filter(e => e.memory_type === 'episodic');
539
+ const work = index.entries.filter(e => e.memory_type === 'working');
540
+
541
+ md += `> Entries: ${index.entries.length} | Semantic: ${sem.length} | Procedural: ${proc.length} | Episodic: ${ep.length} | Working: ${work.length}\n\n`;
542
+
543
+ if (sem.length > 0) {
544
+ md += '## SEMANTIC (Permanent Facts)\n';
545
+ md += '| ID | Content | Tags | Source | Conf | Created |\n';
546
+ md += '|----|---------|------|--------|------|---------|\n';
547
+ for (const e of sem) {
548
+ const conf = typeof e.confidence === 'number' ? e.confidence.toFixed(1) : '1.0';
549
+ md += `| ${e.id} | ${e.content.replace(/\|/g, '\\|')} | ${(e.tags || []).join(', ')} | ${e.source || 'manual'} | ${conf} | ${e.created_at} |\n`;
550
+ }
551
+ md += '\n';
552
+ }
553
+
554
+ if (proc.length > 0) {
555
+ md += '## PROCEDURAL (How-To Recipes)\n';
556
+ md += '| ID | Content | Tags | Source | Conf | Created |\n';
557
+ md += '|----|---------|------|--------|------|---------|\n';
558
+ for (const e of proc) {
559
+ const conf = typeof e.confidence === 'number' ? e.confidence.toFixed(1) : '1.0';
560
+ md += `| ${e.id} | ${e.content.replace(/\|/g, '\\|')} | ${(e.tags || []).join(', ')} | ${e.source || 'manual'} | ${conf} | ${e.created_at} |\n`;
561
+ }
562
+ md += '\n';
428
563
  }
564
+
565
+ if (ep.length > 0) {
566
+ md += '## EPISODIC (Session History — auto-decays after 30 days)\n';
567
+ md += '| ID | Content | Tags | Source | Conf | Created | Days Remaining |\n';
568
+ md += '|----|---------|------|--------|------|---------|----------------|\n';
569
+ for (const e of ep) {
570
+ const remaining = Math.max(0, EPISODIC_TTL_DAYS - daysSince(e.created_at));
571
+ const conf = typeof e.confidence === 'number' ? e.confidence.toFixed(1) : '1.0';
572
+ md += `| ${e.id} | ${e.content.replace(/\|/g, '\\|')} | ${(e.tags || []).join(', ')} | ${e.source || 'manual'} | ${conf} | ${e.created_at} | ${remaining} |\n`;
573
+ }
574
+ md += '\n';
575
+ }
576
+
577
+ if (work.length > 0) {
578
+ md += '## WORKING (Current Session — cleared on GC)\n';
579
+ md += '| ID | Content | Tags | Session |\n';
580
+ md += '|----|---------|------|---------|\n';
581
+ for (const e of work) {
582
+ md += `| ${e.id} | ${e.content.replace(/\|/g, '\\|')} | ${(e.tags || []).join(', ')} | ${e.session_id || '—'} |\n`;
583
+ }
584
+ md += '\n';
585
+ }
586
+
587
+ if (index.entries.length === 0) {
588
+ md += '*No memories recorded yet. Run `tk memory store` to add your first memory.*\n';
589
+ }
590
+
591
+ fs.mkdirSync(path.dirname(this.projectionPath), { recursive: true });
592
+ fs.writeFileSync(this.projectionPath, md, 'utf8');
593
+
594
+ return this.projectionPath;
429
595
  }
430
596
 
431
- // ─── Helpers ───────────────────────────────────────────────────────────────
597
+ /**
598
+ * Export the markdown projection text.
599
+ * @returns {string}
600
+ */
601
+ export() {
602
+ this.generateProjection();
603
+ return fs.readFileSync(this.projectionPath, 'utf8');
604
+ }
432
605
 
433
606
  /**
434
- * Estimate token count for text.
435
- * Uses rough approximation: 1 token ≈ 4 characters.
607
+ * Estimate token count.
608
+ * @param {string} text
609
+ * @returns {number}
436
610
  */
437
611
  estimateTokens(text) {
438
- if (!text) return 0;
439
- return Math.ceil(text.length / 4);
612
+ return estimateTokens(text);
440
613
  }
441
614
 
442
615
  /**
443
- * Tokenize text into lowercase words.
616
+ * Close connection (no-op for file-backed storage, preserved for API parity).
444
617
  */
445
- tokenize(text) {
446
- if (!text) return [];
447
- return (text.match(/\b[a-zA-Z_][a-zA-Z0-9_]{2,}\b/g) || []).map(t => t.toLowerCase());
618
+ close() {
619
+ // No-op for file-backed engine
448
620
  }
449
621
  }
450
622
 
@@ -454,6 +626,8 @@ module.exports = {
454
626
  MemoryEngine,
455
627
  MEMORY_TYPES,
456
628
  VALID_TYPES,
629
+ TYPE_PRIORITY,
630
+ estimateTokens,
457
631
  };
458
632
 
459
633
  // ─── CLI Entry Point ───────────────────────────────────────────────────────────
@@ -466,18 +640,20 @@ if (require.main === module) {
466
640
  \x1b[1mmemory_engine.js\x1b[0m — Tribunal Kit 4-Type Taxonomy Persistent Memory Engine
467
641
 
468
642
  \x1b[1mUsage:\x1b[0m
469
- node .agent/scripts/memory_engine.js store <type> <content> [--tags tag1,tag2]
643
+ node .agent/scripts/memory_engine.js store <type> <content> [--tags tag1,tag2] [--source manual]
470
644
  node .agent/scripts/memory_engine.js recall <query> [--budget 2000]
471
645
  node .agent/scripts/memory_engine.js get <id>
472
646
  node .agent/scripts/memory_engine.js delete <id>
473
647
  node .agent/scripts/memory_engine.js stats
474
648
  node .agent/scripts/memory_engine.js expire
649
+ node .agent/scripts/memory_engine.js gc
650
+ node .agent/scripts/memory_engine.js export
475
651
 
476
652
  \x1b[1mMemory Types:\x1b[0m
477
653
  semantic — Permanent facts (no expiration)
478
654
  procedural — How-to recipes (no expiration)
479
655
  episodic — Events with 30-day TTL
480
- working — Session scratch (cleared on restart)
656
+ working — Session scratch (cleared on GC)
481
657
 
482
658
  \x1b[1mExamples:\x1b[0m
483
659
  node .agent/scripts/memory_engine.js store semantic "User prefers TypeScript strict mode" --tags typescript,preference
@@ -487,11 +663,15 @@ if (require.main === module) {
487
663
  process.exit(0);
488
664
  }
489
665
 
490
- const { findAgentDir } = require('./_utils');
491
- const agentDir = findAgentDir() || path.resolve(__dirname, '..');
666
+ let agentDir = null;
667
+ try {
668
+ const { findAgentDir } = require('./_utils');
669
+ agentDir = findAgentDir();
670
+ } catch (_) {
671
+ agentDir = path.resolve(process.cwd(), '.agent');
672
+ }
492
673
 
493
674
  const mem = new MemoryEngine(agentDir);
494
-
495
675
  const command = args[0];
496
676
 
497
677
  try {
@@ -504,8 +684,10 @@ if (require.main === module) {
504
684
  tagsIdx !== -1 && args[tagsIdx + 1]
505
685
  ? args[tagsIdx + 1].split(',').map(t => t.trim())
506
686
  : [];
687
+ const sourceIdx = args.indexOf('--source');
688
+ const source = sourceIdx !== -1 && args[sourceIdx + 1] ? args[sourceIdx + 1] : undefined;
507
689
 
508
- const result = mem.store(type, content, tags);
690
+ const result = mem.store(type, content, tags, { source });
509
691
  console.log(
510
692
  `\x1b[32m✓\x1b[0m Memory stored: #${result.id} (${result.type}, ~${result.token_estimate} tokens)`,
511
693
  );
@@ -514,6 +696,10 @@ if (require.main === module) {
514
696
 
515
697
  case 'recall': {
516
698
  const query = args[1];
699
+ if (!query) {
700
+ console.error('\x1b[31m✖ Missing search query\x1b[0m');
701
+ process.exit(1);
702
+ }
517
703
  const budgetIdx = args.indexOf('--budget');
518
704
  const budget =
519
705
  budgetIdx !== -1 && args[budgetIdx + 1] ? parseInt(args[budgetIdx + 1], 10) : 2000;
@@ -524,7 +710,7 @@ if (require.main === module) {
524
710
  );
525
711
  for (const entry of results) {
526
712
  console.log(`- **[${entry.memory_type.toUpperCase()}]** #${entry.id}: ${entry.content}`);
527
- if (entry.tags.length > 0) console.log(` _(${entry.tags.join(', ')})_`);
713
+ if (entry.tags && entry.tags.length > 0) console.log(` _(${entry.tags.join(', ')})_`);
528
714
  }
529
715
  break;
530
716
  }
@@ -562,9 +748,24 @@ if (require.main === module) {
562
748
  break;
563
749
  }
564
750
 
751
+ case 'gc':
565
752
  case 'expire': {
566
- mem.expire();
567
- console.log(`\x1b[32m✓\x1b[0m Expired episodic memories cleaned up`);
753
+ const res = mem.expire();
754
+ console.log(
755
+ `\x1b[32m✓\x1b[0m Memory GC complete: ${res.working_removed} working, ${res.episodic_removed} episodic removed (${res.before} -> ${res.after})`,
756
+ );
757
+ break;
758
+ }
759
+
760
+ case 'clear-working': {
761
+ const cleared = mem.clearWorking();
762
+ console.log(`\x1b[32m✓\x1b[0m Cleared ${cleared} working memory entries`);
763
+ break;
764
+ }
765
+
766
+ case 'export': {
767
+ const proj = mem.export();
768
+ console.log(proj);
568
769
  break;
569
770
  }
570
771