@heytherevibin/skillforge 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (402) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/CODE_OF_CONDUCT.md +34 -0
  3. package/CONTRIBUTING.md +38 -0
  4. package/LICENSE +21 -0
  5. package/README.md +337 -0
  6. package/RELEASING.md +93 -0
  7. package/SECURITY.md +31 -0
  8. package/STRATEGY.md +26 -0
  9. package/bin/cli.js +547 -0
  10. package/lib/packs.js +184 -0
  11. package/package.json +38 -0
  12. package/python/app/__init__.py +0 -0
  13. package/python/app/__pycache__/__init__.cpython-312.pyc +0 -0
  14. package/python/app/__pycache__/auth.cpython-312.pyc +0 -0
  15. package/python/app/__pycache__/main.cpython-312.pyc +0 -0
  16. package/python/app/auth.py +63 -0
  17. package/python/app/cli.py +78 -0
  18. package/python/app/db_paths.py +26 -0
  19. package/python/app/events_cli.py +175 -0
  20. package/python/app/main.py +647 -0
  21. package/python/app/materialize.py +138 -0
  22. package/python/app/mcp_server.py +610 -0
  23. package/python/app/route_cli.py +117 -0
  24. package/python/requirements-dev.txt +1 -0
  25. package/python/requirements.txt +7 -0
  26. package/python/tests/test_db_paths.py +41 -0
  27. package/skills/accessibility/SKILL.md +145 -0
  28. package/skills/agent-architecture-audit/SKILL.md +256 -0
  29. package/skills/agent-eval/SKILL.md +144 -0
  30. package/skills/agent-harness-construction/SKILL.md +72 -0
  31. package/skills/agent-introspection-debugging/SKILL.md +152 -0
  32. package/skills/agent-payment-x402/SKILL.md +224 -0
  33. package/skills/agent-sort/SKILL.md +214 -0
  34. package/skills/agentic-engineering/SKILL.md +62 -0
  35. package/skills/agentic-os/SKILL.md +386 -0
  36. package/skills/ai-first-engineering/SKILL.md +50 -0
  37. package/skills/ai-regression-testing/SKILL.md +384 -0
  38. package/skills/android-clean-architecture/SKILL.md +338 -0
  39. package/skills/angular-developer/SKILL.md +153 -0
  40. package/skills/angular-developer/references/angular-animations.md +160 -0
  41. package/skills/angular-developer/references/angular-aria.md +410 -0
  42. package/skills/angular-developer/references/cli.md +86 -0
  43. package/skills/angular-developer/references/component-harnesses.md +59 -0
  44. package/skills/angular-developer/references/component-styling.md +91 -0
  45. package/skills/angular-developer/references/components.md +117 -0
  46. package/skills/angular-developer/references/creating-services.md +97 -0
  47. package/skills/angular-developer/references/data-resolvers.md +69 -0
  48. package/skills/angular-developer/references/define-routes.md +67 -0
  49. package/skills/angular-developer/references/defining-providers.md +72 -0
  50. package/skills/angular-developer/references/di-fundamentals.md +120 -0
  51. package/skills/angular-developer/references/e2e-testing.md +56 -0
  52. package/skills/angular-developer/references/effects.md +83 -0
  53. package/skills/angular-developer/references/hierarchical-injectors.md +43 -0
  54. package/skills/angular-developer/references/host-elements.md +80 -0
  55. package/skills/angular-developer/references/injection-context.md +63 -0
  56. package/skills/angular-developer/references/inputs.md +101 -0
  57. package/skills/angular-developer/references/linked-signal.md +59 -0
  58. package/skills/angular-developer/references/loading-strategies.md +61 -0
  59. package/skills/angular-developer/references/mcp.md +108 -0
  60. package/skills/angular-developer/references/navigate-to-routes.md +69 -0
  61. package/skills/angular-developer/references/outputs.md +86 -0
  62. package/skills/angular-developer/references/reactive-forms.md +122 -0
  63. package/skills/angular-developer/references/rendering-strategies.md +44 -0
  64. package/skills/angular-developer/references/resource.md +77 -0
  65. package/skills/angular-developer/references/route-animations.md +56 -0
  66. package/skills/angular-developer/references/route-guards.md +52 -0
  67. package/skills/angular-developer/references/router-lifecycle.md +45 -0
  68. package/skills/angular-developer/references/router-testing.md +87 -0
  69. package/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
  70. package/skills/angular-developer/references/signal-forms.md +795 -0
  71. package/skills/angular-developer/references/signals-overview.md +94 -0
  72. package/skills/angular-developer/references/tailwind-css.md +69 -0
  73. package/skills/angular-developer/references/template-driven-forms.md +114 -0
  74. package/skills/angular-developer/references/testing-fundamentals.md +65 -0
  75. package/skills/api-connector-builder/SKILL.md +120 -0
  76. package/skills/api-design/SKILL.md +522 -0
  77. package/skills/architecture-decision-records/SKILL.md +178 -0
  78. package/skills/article-writing/SKILL.md +78 -0
  79. package/skills/automation-audit-ops/SKILL.md +141 -0
  80. package/skills/autonomous-agent-harness/SKILL.md +272 -0
  81. package/skills/autonomous-loops/SKILL.md +609 -0
  82. package/skills/backend-patterns/SKILL.md +560 -0
  83. package/skills/benchmark/SKILL.md +92 -0
  84. package/skills/blueprint/SKILL.md +104 -0
  85. package/skills/browser-qa/SKILL.md +86 -0
  86. package/skills/bun-runtime/SKILL.md +83 -0
  87. package/skills/canary-watch/SKILL.md +98 -0
  88. package/skills/carrier-relationship-management/SKILL.md +211 -0
  89. package/skills/cisco-ios-patterns/SKILL.md +163 -0
  90. package/skills/ck/SKILL.md +147 -0
  91. package/skills/ck/commands/forget.mjs +44 -0
  92. package/skills/ck/commands/info.mjs +24 -0
  93. package/skills/ck/commands/init.mjs +143 -0
  94. package/skills/ck/commands/list.mjs +40 -0
  95. package/skills/ck/commands/migrate.mjs +202 -0
  96. package/skills/ck/commands/resume.mjs +36 -0
  97. package/skills/ck/commands/save.mjs +210 -0
  98. package/skills/ck/commands/shared.mjs +387 -0
  99. package/skills/ck/hooks/session-start.mjs +224 -0
  100. package/skills/claude-devfleet/SKILL.md +103 -0
  101. package/skills/click-path-audit/SKILL.md +244 -0
  102. package/skills/clickhouse-io/SKILL.md +438 -0
  103. package/skills/code-tour/SKILL.md +235 -0
  104. package/skills/codebase-onboarding/SKILL.md +232 -0
  105. package/skills/coding-standards/SKILL.md +548 -0
  106. package/skills/compose-multiplatform-patterns/SKILL.md +298 -0
  107. package/skills/connections-optimizer/SKILL.md +188 -0
  108. package/skills/content-engine/SKILL.md +126 -0
  109. package/skills/content-hash-cache-pattern/SKILL.md +160 -0
  110. package/skills/context-budget/SKILL.md +134 -0
  111. package/skills/continuous-agent-loop/SKILL.md +44 -0
  112. package/skills/continuous-learning/SKILL.md +129 -0
  113. package/skills/continuous-learning/config.json +18 -0
  114. package/skills/continuous-learning/evaluate-session.sh +69 -0
  115. package/skills/continuous-learning-v2/SKILL.md +358 -0
  116. package/skills/continuous-learning-v2/agents/observer-loop.sh +322 -0
  117. package/skills/continuous-learning-v2/agents/observer.md +198 -0
  118. package/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
  119. package/skills/continuous-learning-v2/agents/start-observer.sh +248 -0
  120. package/skills/continuous-learning-v2/config.json +8 -0
  121. package/skills/continuous-learning-v2/hooks/observe.sh +476 -0
  122. package/skills/continuous-learning-v2/scripts/detect-project.sh +288 -0
  123. package/skills/continuous-learning-v2/scripts/instinct-cli.py +1519 -0
  124. package/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
  125. package/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
  126. package/skills/continuous-learning-v2/scripts/test_parse_instinct.py +1018 -0
  127. package/skills/cost-aware-llm-pipeline/SKILL.md +182 -0
  128. package/skills/cost-tracking/SKILL.md +147 -0
  129. package/skills/council/SKILL.md +202 -0
  130. package/skills/cpp-coding-standards/SKILL.md +722 -0
  131. package/skills/cpp-testing/SKILL.md +323 -0
  132. package/skills/crosspost/SKILL.md +110 -0
  133. package/skills/csharp-testing/SKILL.md +320 -0
  134. package/skills/customer-billing-ops/SKILL.md +139 -0
  135. package/skills/customs-trade-compliance/SKILL.md +262 -0
  136. package/skills/dart-flutter-patterns/SKILL.md +562 -0
  137. package/skills/dashboard-builder/SKILL.md +108 -0
  138. package/skills/data-scraper-agent/SKILL.md +764 -0
  139. package/skills/database-migrations/SKILL.md +428 -0
  140. package/skills/deep-research/SKILL.md +158 -0
  141. package/skills/defi-amm-security/SKILL.md +166 -0
  142. package/skills/deployment-patterns/SKILL.md +426 -0
  143. package/skills/design-system/SKILL.md +81 -0
  144. package/skills/django-celery/SKILL.md +456 -0
  145. package/skills/django-patterns/SKILL.md +733 -0
  146. package/skills/django-security/SKILL.md +592 -0
  147. package/skills/django-tdd/SKILL.md +728 -0
  148. package/skills/django-verification/SKILL.md +468 -0
  149. package/skills/dmux-workflows/SKILL.md +190 -0
  150. package/skills/docker-patterns/SKILL.md +363 -0
  151. package/skills/documentation-lookup/SKILL.md +89 -0
  152. package/skills/dotnet-patterns/SKILL.md +320 -0
  153. package/skills/e2e-testing/SKILL.md +325 -0
  154. package/skills/email-ops/SKILL.md +120 -0
  155. package/skills/energy-procurement/SKILL.md +227 -0
  156. package/skills/enterprise-agent-ops/SKILL.md +49 -0
  157. package/skills/error-handling/SKILL.md +375 -0
  158. package/skills/eval-harness/SKILL.md +269 -0
  159. package/skills/evm-token-decimals/SKILL.md +130 -0
  160. package/skills/exa-search/SKILL.md +106 -0
  161. package/skills/fal-ai-media/SKILL.md +287 -0
  162. package/skills/fastapi-patterns/SKILL.md +327 -0
  163. package/skills/finance-billing-ops/SKILL.md +126 -0
  164. package/skills/flox-environments/SKILL.md +496 -0
  165. package/skills/flutter-dart-code-review/SKILL.md +434 -0
  166. package/skills/foundation-models-on-device/SKILL.md +243 -0
  167. package/skills/frontend-design-direction/SKILL.md +92 -0
  168. package/skills/frontend-patterns/SKILL.md +641 -0
  169. package/skills/frontend-slides/SKILL.md +183 -0
  170. package/skills/frontend-slides/STYLE_PRESETS.md +330 -0
  171. package/skills/frontend-slides/animation-patterns.md +122 -0
  172. package/skills/frontend-slides/html-template.md +419 -0
  173. package/skills/frontend-slides/scripts/export-pdf.sh +418 -0
  174. package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
  175. package/skills/frontend-slides/viewport-base.css +153 -0
  176. package/skills/fsharp-testing/SKILL.md +279 -0
  177. package/skills/gan-style-harness/SKILL.md +278 -0
  178. package/skills/gateguard/SKILL.md +125 -0
  179. package/skills/git-workflow/SKILL.md +714 -0
  180. package/skills/github-ops/SKILL.md +143 -0
  181. package/skills/golang-patterns/SKILL.md +673 -0
  182. package/skills/golang-testing/SKILL.md +719 -0
  183. package/skills/google-workspace-ops/SKILL.md +94 -0
  184. package/skills/healthcare-cdss-patterns/SKILL.md +245 -0
  185. package/skills/healthcare-emr-patterns/SKILL.md +159 -0
  186. package/skills/healthcare-eval-harness/SKILL.md +207 -0
  187. package/skills/healthcare-phi-compliance/SKILL.md +145 -0
  188. package/skills/hermes-imports/SKILL.md +87 -0
  189. package/skills/hexagonal-architecture/SKILL.md +275 -0
  190. package/skills/hipaa-compliance/SKILL.md +78 -0
  191. package/skills/homelab-network-readiness/SKILL.md +169 -0
  192. package/skills/homelab-network-setup/SKILL.md +129 -0
  193. package/skills/homelab-pihole-dns/SKILL.md +274 -0
  194. package/skills/homelab-vlan-segmentation/SKILL.md +311 -0
  195. package/skills/homelab-wireguard-vpn/SKILL.md +305 -0
  196. package/skills/hookify-rules/SKILL.md +128 -0
  197. package/skills/inventory-demand-planning/SKILL.md +246 -0
  198. package/skills/investor-materials/SKILL.md +95 -0
  199. package/skills/investor-outreach/SKILL.md +90 -0
  200. package/skills/ios-icon-gen/SKILL.md +157 -0
  201. package/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
  202. package/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
  203. package/skills/iterative-retrieval/SKILL.md +209 -0
  204. package/skills/java-coding-standards/SKILL.md +382 -0
  205. package/skills/jira-integration/SKILL.md +292 -0
  206. package/skills/jpa-patterns/SKILL.md +150 -0
  207. package/skills/knowledge-ops/SKILL.md +153 -0
  208. package/skills/kotlin-coroutines-flows/SKILL.md +283 -0
  209. package/skills/kotlin-exposed-patterns/SKILL.md +718 -0
  210. package/skills/kotlin-ktor-patterns/SKILL.md +688 -0
  211. package/skills/kotlin-patterns/SKILL.md +710 -0
  212. package/skills/kotlin-testing/SKILL.md +823 -0
  213. package/skills/laravel-patterns/SKILL.md +414 -0
  214. package/skills/laravel-plugin-discovery/SKILL.md +228 -0
  215. package/skills/laravel-security/SKILL.md +284 -0
  216. package/skills/laravel-tdd/SKILL.md +282 -0
  217. package/skills/laravel-verification/SKILL.md +178 -0
  218. package/skills/lead-intelligence/SKILL.md +320 -0
  219. package/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
  220. package/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
  221. package/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
  222. package/skills/lead-intelligence/agents/signal-scorer.md +60 -0
  223. package/skills/liquid-glass-design/SKILL.md +279 -0
  224. package/skills/llm-trading-agent-security/SKILL.md +146 -0
  225. package/skills/logistics-exception-management/SKILL.md +221 -0
  226. package/skills/make-interfaces-feel-better/SKILL.md +151 -0
  227. package/skills/manim-video/SKILL.md +88 -0
  228. package/skills/manim-video/assets/network_graph_scene.py +52 -0
  229. package/skills/market-research/SKILL.md +74 -0
  230. package/skills/mcp-server-patterns/SKILL.md +68 -0
  231. package/skills/messages-ops/SKILL.md +103 -0
  232. package/skills/mle-workflow/SKILL.md +345 -0
  233. package/skills/motion-advanced/SKILL.md +596 -0
  234. package/skills/motion-foundations/SKILL.md +299 -0
  235. package/skills/motion-patterns/SKILL.md +435 -0
  236. package/skills/motion-ui/SKILL.md +574 -0
  237. package/skills/mysql-patterns/SKILL.md +411 -0
  238. package/skills/nanoclaw-repl/SKILL.md +32 -0
  239. package/skills/nestjs-patterns/SKILL.md +229 -0
  240. package/skills/netmiko-ssh-automation/SKILL.md +173 -0
  241. package/skills/network-bgp-diagnostics/SKILL.md +167 -0
  242. package/skills/network-config-validation/SKILL.md +210 -0
  243. package/skills/network-interface-health/SKILL.md +152 -0
  244. package/skills/nextjs-turbopack/SKILL.md +43 -0
  245. package/skills/nodejs-keccak256/SKILL.md +102 -0
  246. package/skills/nutrient-document-processing/SKILL.md +166 -0
  247. package/skills/nuxt4-patterns/SKILL.md +99 -0
  248. package/skills/openclaw-persona-forge/SKILL.md +288 -0
  249. package/skills/openclaw-persona-forge/gacha.py +224 -0
  250. package/skills/openclaw-persona-forge/gacha.sh +5 -0
  251. package/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
  252. package/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
  253. package/skills/openclaw-persona-forge/references/error-handling.md +53 -0
  254. package/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
  255. package/skills/openclaw-persona-forge/references/naming-system.md +39 -0
  256. package/skills/openclaw-persona-forge/references/output-template.md +166 -0
  257. package/skills/opensource-pipeline/SKILL.md +254 -0
  258. package/skills/perl-patterns/SKILL.md +503 -0
  259. package/skills/perl-security/SKILL.md +502 -0
  260. package/skills/perl-testing/SKILL.md +474 -0
  261. package/skills/plan-orchestrate/SKILL.md +253 -0
  262. package/skills/plankton-code-quality/SKILL.md +236 -0
  263. package/skills/postgres-patterns/SKILL.md +146 -0
  264. package/skills/product-capability/SKILL.md +140 -0
  265. package/skills/product-lens/SKILL.md +91 -0
  266. package/skills/production-audit/SKILL.md +206 -0
  267. package/skills/production-scheduling/SKILL.md +237 -0
  268. package/skills/project-flow-ops/SKILL.md +110 -0
  269. package/skills/prompt-optimizer/SKILL.md +398 -0
  270. package/skills/python-patterns/SKILL.md +749 -0
  271. package/skills/python-testing/SKILL.md +815 -0
  272. package/skills/pytorch-patterns/SKILL.md +395 -0
  273. package/skills/quality-nonconformance/SKILL.md +259 -0
  274. package/skills/quarkus-patterns/SKILL.md +721 -0
  275. package/skills/quarkus-security/SKILL.md +466 -0
  276. package/skills/quarkus-tdd/SKILL.md +810 -0
  277. package/skills/quarkus-verification/SKILL.md +478 -0
  278. package/skills/ralphinho-rfc-pipeline/SKILL.md +66 -0
  279. package/skills/redis-patterns/SKILL.md +402 -0
  280. package/skills/regex-vs-llm-structured-text/SKILL.md +219 -0
  281. package/skills/remotion-video-creation/SKILL.md +43 -0
  282. package/skills/remotion-video-creation/rules/3d.md +86 -0
  283. package/skills/remotion-video-creation/rules/animations.md +29 -0
  284. package/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
  285. package/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
  286. package/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
  287. package/skills/remotion-video-creation/rules/assets.md +78 -0
  288. package/skills/remotion-video-creation/rules/audio.md +172 -0
  289. package/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
  290. package/skills/remotion-video-creation/rules/can-decode.md +75 -0
  291. package/skills/remotion-video-creation/rules/charts.md +58 -0
  292. package/skills/remotion-video-creation/rules/compositions.md +146 -0
  293. package/skills/remotion-video-creation/rules/display-captions.md +126 -0
  294. package/skills/remotion-video-creation/rules/extract-frames.md +229 -0
  295. package/skills/remotion-video-creation/rules/fonts.md +152 -0
  296. package/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
  297. package/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
  298. package/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
  299. package/skills/remotion-video-creation/rules/gifs.md +138 -0
  300. package/skills/remotion-video-creation/rules/images.md +130 -0
  301. package/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
  302. package/skills/remotion-video-creation/rules/lottie.md +67 -0
  303. package/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
  304. package/skills/remotion-video-creation/rules/measuring-text.md +143 -0
  305. package/skills/remotion-video-creation/rules/sequencing.md +106 -0
  306. package/skills/remotion-video-creation/rules/tailwind.md +11 -0
  307. package/skills/remotion-video-creation/rules/text-animations.md +20 -0
  308. package/skills/remotion-video-creation/rules/timing.md +179 -0
  309. package/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
  310. package/skills/remotion-video-creation/rules/transitions.md +122 -0
  311. package/skills/remotion-video-creation/rules/trimming.md +52 -0
  312. package/skills/remotion-video-creation/rules/videos.md +171 -0
  313. package/skills/repo-scan/SKILL.md +78 -0
  314. package/skills/research-ops/SKILL.md +111 -0
  315. package/skills/returns-reverse-logistics/SKILL.md +239 -0
  316. package/skills/rules-distill/SKILL.md +263 -0
  317. package/skills/rules-distill/scripts/scan-rules.sh +58 -0
  318. package/skills/rules-distill/scripts/scan-skills.sh +129 -0
  319. package/skills/rust-patterns/SKILL.md +498 -0
  320. package/skills/rust-testing/SKILL.md +499 -0
  321. package/skills/safety-guard/SKILL.md +74 -0
  322. package/skills/santa-method/SKILL.md +306 -0
  323. package/skills/scientific-db-pubmed-database/SKILL.md +175 -0
  324. package/skills/scientific-db-uspto-database/SKILL.md +177 -0
  325. package/skills/scientific-pkg-gget/SKILL.md +166 -0
  326. package/skills/scientific-thinking-literature-review/SKILL.md +192 -0
  327. package/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
  328. package/skills/search-first/SKILL.md +181 -0
  329. package/skills/security-bounty-hunter/SKILL.md +99 -0
  330. package/skills/security-review/SKILL.md +502 -0
  331. package/skills/security-review/cloud-infrastructure-security.md +361 -0
  332. package/skills/seo/SKILL.md +153 -0
  333. package/skills/skill-comply/SKILL.md +57 -0
  334. package/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
  335. package/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
  336. package/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
  337. package/skills/skill-comply/prompts/classifier.md +24 -0
  338. package/skills/skill-comply/prompts/scenario_generator.md +62 -0
  339. package/skills/skill-comply/prompts/spec_generator.md +42 -0
  340. package/skills/skill-comply/pyproject.toml +15 -0
  341. package/skills/skill-comply/scripts/__init__.py +0 -0
  342. package/skills/skill-comply/scripts/classifier.py +85 -0
  343. package/skills/skill-comply/scripts/grader.py +124 -0
  344. package/skills/skill-comply/scripts/parser.py +107 -0
  345. package/skills/skill-comply/scripts/report.py +170 -0
  346. package/skills/skill-comply/scripts/run.py +127 -0
  347. package/skills/skill-comply/scripts/runner.py +186 -0
  348. package/skills/skill-comply/scripts/scenario_generator.py +70 -0
  349. package/skills/skill-comply/scripts/spec_generator.py +72 -0
  350. package/skills/skill-comply/scripts/utils.py +13 -0
  351. package/skills/skill-comply/tests/test_grader.py +197 -0
  352. package/skills/skill-comply/tests/test_parser.py +90 -0
  353. package/skills/skill-comply/tests/test_runner.py +172 -0
  354. package/skills/skill-scout/SKILL.md +139 -0
  355. package/skills/skill-stocktake/SKILL.md +193 -0
  356. package/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
  357. package/skills/skill-stocktake/scripts/save-results.sh +56 -0
  358. package/skills/skill-stocktake/scripts/scan.sh +170 -0
  359. package/skills/social-graph-ranker/SKILL.md +153 -0
  360. package/skills/springboot-patterns/SKILL.md +313 -0
  361. package/skills/springboot-security/SKILL.md +271 -0
  362. package/skills/springboot-tdd/SKILL.md +157 -0
  363. package/skills/springboot-verification/SKILL.md +230 -0
  364. package/skills/strategic-compact/SKILL.md +129 -0
  365. package/skills/strategic-compact/suggest-compact.sh +54 -0
  366. package/skills/swift-actor-persistence/SKILL.md +142 -0
  367. package/skills/swift-concurrency-6-2/SKILL.md +216 -0
  368. package/skills/swift-protocol-di-testing/SKILL.md +189 -0
  369. package/skills/swiftui-patterns/SKILL.md +259 -0
  370. package/skills/tdd-workflow/SKILL.md +462 -0
  371. package/skills/team-builder/SKILL.md +166 -0
  372. package/skills/terminal-ops/SKILL.md +108 -0
  373. package/skills/tinystruct-patterns/SKILL.md +130 -0
  374. package/skills/tinystruct-patterns/references/architecture.md +77 -0
  375. package/skills/tinystruct-patterns/references/data-handling.md +35 -0
  376. package/skills/tinystruct-patterns/references/routing.md +57 -0
  377. package/skills/tinystruct-patterns/references/system-usage.md +74 -0
  378. package/skills/tinystruct-patterns/references/testing.md +59 -0
  379. package/skills/token-budget-advisor/SKILL.md +133 -0
  380. package/skills/ui-demo/SKILL.md +464 -0
  381. package/skills/ui-to-vue/SKILL.md +134 -0
  382. package/skills/unified-notifications-ops/SKILL.md +186 -0
  383. package/skills/verification-loop/SKILL.md +125 -0
  384. package/skills/video-editing/SKILL.md +309 -0
  385. package/skills/videodb/SKILL.md +373 -0
  386. package/skills/videodb/reference/api-reference.md +550 -0
  387. package/skills/videodb/reference/capture-reference.md +407 -0
  388. package/skills/videodb/reference/capture.md +101 -0
  389. package/skills/videodb/reference/editor.md +443 -0
  390. package/skills/videodb/reference/generative.md +331 -0
  391. package/skills/videodb/reference/rtstream-reference.md +564 -0
  392. package/skills/videodb/reference/rtstream.md +65 -0
  393. package/skills/videodb/reference/search.md +230 -0
  394. package/skills/videodb/reference/streaming.md +406 -0
  395. package/skills/videodb/reference/use-cases.md +118 -0
  396. package/skills/videodb/scripts/ws_listener.py +282 -0
  397. package/skills/visa-doc-translate/README.md +86 -0
  398. package/skills/visa-doc-translate/SKILL.md +117 -0
  399. package/skills/vite-patterns/SKILL.md +448 -0
  400. package/skills/windows-desktop-e2e/SKILL.md +787 -0
  401. package/skills/workspace-surface-audit/SKILL.md +124 -0
  402. package/skills/x-api/SKILL.md +233 -0
@@ -0,0 +1,499 @@
1
+ ---
2
+ name: rust-testing
3
+ description: Rust testing patterns including unit tests, integration tests, async testing, property-based testing, mocking, and coverage. Follows TDD methodology.
4
+ ---
5
+
6
+ # Rust Testing Patterns
7
+
8
+ Comprehensive Rust testing patterns for writing reliable, maintainable tests following TDD methodology.
9
+
10
+ ## When to Use
11
+
12
+ - Writing new Rust functions, methods, or traits
13
+ - Adding test coverage to existing code
14
+ - Creating benchmarks for performance-critical code
15
+ - Implementing property-based tests for input validation
16
+ - Following TDD workflow in Rust projects
17
+
18
+ ## How It Works
19
+
20
+ 1. **Identify target code** — Find the function, trait, or module to test
21
+ 2. **Write a test** — Use `#[test]` in a `#[cfg(test)]` module, rstest for parameterized tests, or proptest for property-based tests
22
+ 3. **Mock dependencies** — Use mockall to isolate the unit under test
23
+ 4. **Run tests (RED)** — Verify the test fails with the expected error
24
+ 5. **Implement (GREEN)** — Write minimal code to pass
25
+ 6. **Refactor** — Improve while keeping tests green
26
+ 7. **Check coverage** — Use cargo-llvm-cov, target 80%+
27
+
28
+ ## TDD Workflow for Rust
29
+
30
+ ### The RED-GREEN-REFACTOR Cycle
31
+
32
+ ```
33
+ RED → Write a failing test first
34
+ GREEN → Write minimal code to pass the test
35
+ REFACTOR → Improve code while keeping tests green
36
+ REPEAT → Continue with next requirement
37
+ ```
38
+
39
+ ### Step-by-Step TDD in Rust
40
+
41
+ ```rust
42
+ // RED: Write test first, use todo!() as placeholder
43
+ pub fn add(a: i32, b: i32) -> i32 { todo!() }
44
+
45
+ #[cfg(test)]
46
+ mod tests {
47
+ use super::*;
48
+ #[test]
49
+ fn test_add() { assert_eq!(add(2, 3), 5); }
50
+ }
51
+ // cargo test → panics at 'not yet implemented'
52
+ ```
53
+
54
+ ```rust
55
+ // GREEN: Replace todo!() with minimal implementation
56
+ pub fn add(a: i32, b: i32) -> i32 { a + b }
57
+ // cargo test → PASS, then REFACTOR while keeping tests green
58
+ ```
59
+
60
+ ## Unit Tests
61
+
62
+ ### Module-Level Test Organization
63
+
64
+ ```rust
65
+ // src/user.rs
66
+ pub struct User {
67
+ pub name: String,
68
+ pub email: String,
69
+ }
70
+
71
+ impl User {
72
+ pub fn new(name: impl Into<String>, email: impl Into<String>) -> Result<Self, String> {
73
+ let email = email.into();
74
+ if !email.contains('@') {
75
+ return Err(format!("invalid email: {email}"));
76
+ }
77
+ Ok(Self { name: name.into(), email })
78
+ }
79
+
80
+ pub fn display_name(&self) -> &str {
81
+ &self.name
82
+ }
83
+ }
84
+
85
+ #[cfg(test)]
86
+ mod tests {
87
+ use super::*;
88
+
89
+ #[test]
90
+ fn creates_user_with_valid_email() {
91
+ let user = User::new("Alice", "alice@example.com").unwrap();
92
+ assert_eq!(user.display_name(), "Alice");
93
+ assert_eq!(user.email, "alice@example.com");
94
+ }
95
+
96
+ #[test]
97
+ fn rejects_invalid_email() {
98
+ let result = User::new("Bob", "not-an-email");
99
+ assert!(result.is_err());
100
+ assert!(result.unwrap_err().contains("invalid email"));
101
+ }
102
+ }
103
+ ```
104
+
105
+ ### Assertion Macros
106
+
107
+ ```rust
108
+ assert_eq!(2 + 2, 4); // Equality
109
+ assert_ne!(2 + 2, 5); // Inequality
110
+ assert!(vec![1, 2, 3].contains(&2)); // Boolean
111
+ assert_eq!(value, 42, "expected 42 but got {value}"); // Custom message
112
+ assert!((0.1_f64 + 0.2 - 0.3).abs() < f64::EPSILON); // Float comparison
113
+ ```
114
+
115
+ ## Error and Panic Testing
116
+
117
+ ### Testing `Result` Returns
118
+
119
+ ```rust
120
+ #[test]
121
+ fn parse_returns_error_for_invalid_input() {
122
+ let result = parse_config("}{invalid");
123
+ assert!(result.is_err());
124
+
125
+ // Assert specific error variant
126
+ let err = result.unwrap_err();
127
+ assert!(matches!(err, ConfigError::ParseError(_)));
128
+ }
129
+
130
+ #[test]
131
+ fn parse_succeeds_for_valid_input() -> Result<(), Box<dyn std::error::Error>> {
132
+ let config = parse_config(r#"{"port": 8080}"#)?;
133
+ assert_eq!(config.port, 8080);
134
+ Ok(()) // Test fails if any ? returns Err
135
+ }
136
+ ```
137
+
138
+ ### Testing Panics
139
+
140
+ ```rust
141
+ #[test]
142
+ #[should_panic]
143
+ fn panics_on_empty_input() {
144
+ process(&[]);
145
+ }
146
+
147
+ #[test]
148
+ #[should_panic(expected = "index out of bounds")]
149
+ fn panics_with_specific_message() {
150
+ let v: Vec<i32> = vec![];
151
+ let _ = v[0];
152
+ }
153
+ ```
154
+
155
+ ## Integration Tests
156
+
157
+ ### File Structure
158
+
159
+ ```text
160
+ my_crate/
161
+ ├── src/
162
+ │ └── lib.rs
163
+ ├── tests/ # Integration tests
164
+ │ ├── api_test.rs # Each file is a separate test binary
165
+ │ ├── db_test.rs
166
+ │ └── common/ # Shared test utilities
167
+ │ └── mod.rs
168
+ ```
169
+
170
+ ### Writing Integration Tests
171
+
172
+ ```rust
173
+ // tests/api_test.rs
174
+ use my_crate::{App, Config};
175
+
176
+ #[test]
177
+ fn full_request_lifecycle() {
178
+ let config = Config::test_default();
179
+ let app = App::new(config);
180
+
181
+ let response = app.handle_request("/health");
182
+ assert_eq!(response.status, 200);
183
+ assert_eq!(response.body, "OK");
184
+ }
185
+ ```
186
+
187
+ ## Async Tests
188
+
189
+ ### With Tokio
190
+
191
+ ```rust
192
+ #[tokio::test]
193
+ async fn fetches_data_successfully() {
194
+ let client = TestClient::new().await;
195
+ let result = client.get("/data").await;
196
+ assert!(result.is_ok());
197
+ assert_eq!(result.unwrap().items.len(), 3);
198
+ }
199
+
200
+ #[tokio::test]
201
+ async fn handles_timeout() {
202
+ use std::time::Duration;
203
+ let result = tokio::time::timeout(
204
+ Duration::from_millis(100),
205
+ slow_operation(),
206
+ ).await;
207
+
208
+ assert!(result.is_err(), "should have timed out");
209
+ }
210
+ ```
211
+
212
+ ## Test Organization Patterns
213
+
214
+ ### Parameterized Tests with `rstest`
215
+
216
+ ```rust
217
+ use rstest::{rstest, fixture};
218
+
219
+ #[rstest]
220
+ #[case("hello", 5)]
221
+ #[case("", 0)]
222
+ #[case("rust", 4)]
223
+ fn test_string_length(#[case] input: &str, #[case] expected: usize) {
224
+ assert_eq!(input.len(), expected);
225
+ }
226
+
227
+ // Fixtures
228
+ #[fixture]
229
+ fn test_db() -> TestDb {
230
+ TestDb::new_in_memory()
231
+ }
232
+
233
+ #[rstest]
234
+ fn test_insert(test_db: TestDb) {
235
+ test_db.insert("key", "value");
236
+ assert_eq!(test_db.get("key"), Some("value".into()));
237
+ }
238
+ ```
239
+
240
+ ### Test Helpers
241
+
242
+ ```rust
243
+ #[cfg(test)]
244
+ mod tests {
245
+ use super::*;
246
+
247
+ /// Creates a test user with sensible defaults.
248
+ fn make_user(name: &str) -> User {
249
+ User::new(name, &format!("{name}@test.com")).unwrap()
250
+ }
251
+
252
+ #[test]
253
+ fn user_display() {
254
+ let user = make_user("alice");
255
+ assert_eq!(user.display_name(), "alice");
256
+ }
257
+ }
258
+ ```
259
+
260
+ ## Property-Based Testing with `proptest`
261
+
262
+ ### Basic Property Tests
263
+
264
+ ```rust
265
+ use proptest::prelude::*;
266
+
267
+ proptest! {
268
+ #[test]
269
+ fn encode_decode_roundtrip(input in ".*") {
270
+ let encoded = encode(&input);
271
+ let decoded = decode(&encoded).unwrap();
272
+ assert_eq!(input, decoded);
273
+ }
274
+
275
+ #[test]
276
+ fn sort_preserves_length(mut vec in prop::collection::vec(any::<i32>(), 0..100)) {
277
+ let original_len = vec.len();
278
+ vec.sort();
279
+ assert_eq!(vec.len(), original_len);
280
+ }
281
+
282
+ #[test]
283
+ fn sort_produces_ordered_output(mut vec in prop::collection::vec(any::<i32>(), 0..100)) {
284
+ vec.sort();
285
+ for window in vec.windows(2) {
286
+ assert!(window[0] <= window[1]);
287
+ }
288
+ }
289
+ }
290
+ ```
291
+
292
+ ### Custom Strategies
293
+
294
+ ```rust
295
+ use proptest::prelude::*;
296
+
297
+ fn valid_email() -> impl Strategy<Value = String> {
298
+ ("[a-z]{1,10}", "[a-z]{1,5}")
299
+ .prop_map(|(user, domain)| format!("{user}@{domain}.com"))
300
+ }
301
+
302
+ proptest! {
303
+ #[test]
304
+ fn accepts_valid_emails(email in valid_email()) {
305
+ assert!(User::new("Test", &email).is_ok());
306
+ }
307
+ }
308
+ ```
309
+
310
+ ## Mocking with `mockall`
311
+
312
+ ### Trait-Based Mocking
313
+
314
+ ```rust
315
+ use mockall::{automock, predicate::eq};
316
+
317
+ #[automock]
318
+ trait UserRepository {
319
+ fn find_by_id(&self, id: u64) -> Option<User>;
320
+ fn save(&self, user: &User) -> Result<(), StorageError>;
321
+ }
322
+
323
+ #[test]
324
+ fn service_returns_user_when_found() {
325
+ let mut mock = MockUserRepository::new();
326
+ mock.expect_find_by_id()
327
+ .with(eq(42))
328
+ .times(1)
329
+ .returning(|_| Some(User { id: 42, name: "Alice".into() }));
330
+
331
+ let service = UserService::new(Box::new(mock));
332
+ let user = service.get_user(42).unwrap();
333
+ assert_eq!(user.name, "Alice");
334
+ }
335
+
336
+ #[test]
337
+ fn service_returns_none_when_not_found() {
338
+ let mut mock = MockUserRepository::new();
339
+ mock.expect_find_by_id()
340
+ .returning(|_| None);
341
+
342
+ let service = UserService::new(Box::new(mock));
343
+ assert!(service.get_user(99).is_none());
344
+ }
345
+ ```
346
+
347
+ ## Doc Tests
348
+
349
+ ### Executable Documentation
350
+
351
+ ```rust
352
+ /// Adds two numbers together.
353
+ ///
354
+ /// # Examples
355
+ ///
356
+ /// ```
357
+ /// use my_crate::add;
358
+ ///
359
+ /// assert_eq!(add(2, 3), 5);
360
+ /// assert_eq!(add(-1, 1), 0);
361
+ /// ```
362
+ pub fn add(a: i32, b: i32) -> i32 {
363
+ a + b
364
+ }
365
+
366
+ /// Parses a config string.
367
+ ///
368
+ /// # Errors
369
+ ///
370
+ /// Returns `Err` if the input is not valid TOML.
371
+ ///
372
+ /// ```no_run
373
+ /// use my_crate::parse_config;
374
+ ///
375
+ /// let config = parse_config(r#"port = 8080"#).unwrap();
376
+ /// assert_eq!(config.port, 8080);
377
+ /// ```
378
+ ///
379
+ /// ```no_run
380
+ /// use my_crate::parse_config;
381
+ ///
382
+ /// assert!(parse_config("}{invalid").is_err());
383
+ /// ```
384
+ pub fn parse_config(input: &str) -> Result<Config, ParseError> {
385
+ todo!()
386
+ }
387
+ ```
388
+
389
+ ## Benchmarking with Criterion
390
+
391
+ ```toml
392
+ # Cargo.toml
393
+ [dev-dependencies]
394
+ criterion = { version = "0.5", features = ["html_reports"] }
395
+
396
+ [[bench]]
397
+ name = "benchmark"
398
+ harness = false
399
+ ```
400
+
401
+ ```rust
402
+ // benches/benchmark.rs
403
+ use criterion::{black_box, criterion_group, criterion_main, Criterion};
404
+
405
+ fn fibonacci(n: u64) -> u64 {
406
+ match n {
407
+ 0 | 1 => n,
408
+ _ => fibonacci(n - 1) + fibonacci(n - 2),
409
+ }
410
+ }
411
+
412
+ fn bench_fibonacci(c: &mut Criterion) {
413
+ c.bench_function("fib 20", |b| b.iter(|| fibonacci(black_box(20))));
414
+ }
415
+
416
+ criterion_group!(benches, bench_fibonacci);
417
+ criterion_main!(benches);
418
+ ```
419
+
420
+ ## Test Coverage
421
+
422
+ ### Running Coverage
423
+
424
+ ```bash
425
+ # Install: cargo install cargo-llvm-cov (or use taiki-e/install-action in CI)
426
+ cargo llvm-cov # Summary
427
+ cargo llvm-cov --html # HTML report
428
+ cargo llvm-cov --lcov > lcov.info # LCOV format for CI
429
+ cargo llvm-cov --fail-under-lines 80 # Fail if below threshold
430
+ ```
431
+
432
+ ### Coverage Targets
433
+
434
+ | Code Type | Target |
435
+ |-----------|--------|
436
+ | Critical business logic | 100% |
437
+ | Public API | 90%+ |
438
+ | General code | 80%+ |
439
+ | Generated / FFI bindings | Exclude |
440
+
441
+ ## Testing Commands
442
+
443
+ ```bash
444
+ cargo test # Run all tests
445
+ cargo test -- --nocapture # Show println output
446
+ cargo test test_name # Run tests matching pattern
447
+ cargo test --lib # Unit tests only
448
+ cargo test --test api_test # Integration tests only
449
+ cargo test --doc # Doc tests only
450
+ cargo test --no-fail-fast # Don't stop on first failure
451
+ cargo test -- --ignored # Run ignored tests
452
+ ```
453
+
454
+ ## Best Practices
455
+
456
+ **DO:**
457
+ - Write tests FIRST (TDD)
458
+ - Use `#[cfg(test)]` modules for unit tests
459
+ - Test behavior, not implementation
460
+ - Use descriptive test names that explain the scenario
461
+ - Prefer `assert_eq!` over `assert!` for better error messages
462
+ - Use `?` in tests that return `Result` for cleaner error output
463
+ - Keep tests independent — no shared mutable state
464
+
465
+ **DON'T:**
466
+ - Use `#[should_panic]` when you can test `Result::is_err()` instead
467
+ - Mock everything — prefer integration tests when feasible
468
+ - Ignore flaky tests — fix or quarantine them
469
+ - Use `sleep()` in tests — use channels, barriers, or `tokio::time::pause()`
470
+ - Skip error path testing
471
+
472
+ ## CI Integration
473
+
474
+ ```yaml
475
+ # GitHub Actions
476
+ test:
477
+ runs-on: ubuntu-latest
478
+ steps:
479
+ - uses: actions/checkout@v4
480
+ - uses: dtolnay/rust-toolchain@stable
481
+ with:
482
+ components: clippy, rustfmt
483
+
484
+ - name: Check formatting
485
+ run: cargo fmt --check
486
+
487
+ - name: Clippy
488
+ run: cargo clippy -- -D warnings
489
+
490
+ - name: Run tests
491
+ run: cargo test
492
+
493
+ - uses: taiki-e/install-action@cargo-llvm-cov
494
+
495
+ - name: Coverage
496
+ run: cargo llvm-cov --fail-under-lines 80
497
+ ```
498
+
499
+ **Remember**: Tests are documentation. They show how your code is meant to be used. Write them clearly and keep them up to date.
@@ -0,0 +1,74 @@
1
+ ---
2
+ name: safety-guard
3
+ description: Use this skill to prevent destructive operations when working on production systems or running agents autonomously.
4
+ ---
5
+
6
+ # Safety Guard — Prevent Destructive Operations
7
+
8
+ ## When to Use
9
+
10
+ - When working on production systems
11
+ - When agents are running autonomously (full-auto mode)
12
+ - When you want to restrict edits to a specific directory
13
+ - During sensitive operations (migrations, deploys, data changes)
14
+
15
+ ## How It Works
16
+
17
+ Three modes of protection:
18
+
19
+ ### Mode 1: Careful Mode
20
+
21
+ Intercepts destructive commands before execution and warns:
22
+
23
+ ```
24
+ Watched patterns:
25
+ - rm -rf (especially /, ~, or project root)
26
+ - git push --force
27
+ - git reset --hard
28
+ - git checkout . (discard all changes)
29
+ - DROP TABLE / DROP DATABASE
30
+ - docker system prune
31
+ - kubectl delete
32
+ - chmod 777
33
+ - sudo rm
34
+ - npm publish (accidental publishes)
35
+ - Any command with --no-verify
36
+ ```
37
+
38
+ When detected: shows what the command does, asks for confirmation, suggests safer alternative.
39
+
40
+ ### Mode 2: Freeze Mode
41
+
42
+ Locks file edits to a specific directory tree:
43
+
44
+ ```
45
+ /safety-guard freeze src/components/
46
+ ```
47
+
48
+ Any Write/Edit outside `src/components/` is blocked with an explanation. Useful when you want an agent to focus on one area without touching unrelated code.
49
+
50
+ ### Mode 3: Guard Mode (Careful + Freeze combined)
51
+
52
+ Both protections active. Maximum safety for autonomous agents.
53
+
54
+ ```
55
+ /safety-guard guard --dir src/api/ --allow-read-all
56
+ ```
57
+
58
+ Agents can read anything but only write to `src/api/`. Destructive commands are blocked everywhere.
59
+
60
+ ### Unlock
61
+
62
+ ```
63
+ /safety-guard off
64
+ ```
65
+
66
+ ## Implementation
67
+
68
+ Uses PreToolUse hooks to intercept Bash, Write, Edit, and MultiEdit tool calls. Checks the command/path against the active rules before allowing execution.
69
+
70
+ ## Integration
71
+
72
+ - Enable by default for `codex -a never` sessions
73
+ - Pair with observability risk scoring in the toolset 2.0
74
+ - Logs all blocked actions to `~/.claude/safety-guard.log`