@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,320 @@
1
+ ---
2
+ name: csharp-testing
3
+ description: C# and .NET testing patterns with xUnit, FluentAssertions, mocking, integration tests, and test organization best practices.
4
+ ---
5
+
6
+ # C# Testing Patterns
7
+
8
+ Comprehensive testing patterns for .NET applications using xUnit, FluentAssertions, and modern testing practices.
9
+
10
+ ## When to Activate
11
+
12
+ - Writing new tests for C# code
13
+ - Reviewing test quality and coverage
14
+ - Setting up test infrastructure for .NET projects
15
+ - Debugging flaky or slow tests
16
+
17
+ ## Test Framework Stack
18
+
19
+ | Tool | Purpose |
20
+ |---|---|
21
+ | **xUnit** | Test framework (preferred for .NET) |
22
+ | **FluentAssertions** | Readable assertion syntax |
23
+ | **NSubstitute** or **Moq** | Mocking dependencies |
24
+ | **Testcontainers** | Real infrastructure in integration tests |
25
+ | **WebApplicationFactory** | ASP.NET Core integration tests |
26
+ | **Bogus** | Realistic test data generation |
27
+
28
+ ## Unit Test Structure
29
+
30
+ ### Arrange-Act-Assert
31
+
32
+ ```csharp
33
+ public sealed class OrderServiceTests
34
+ {
35
+ private readonly IOrderRepository _repository = Substitute.For<IOrderRepository>();
36
+ private readonly ILogger<OrderService> _logger = Substitute.For<ILogger<OrderService>>();
37
+ private readonly OrderService _sut;
38
+
39
+ public OrderServiceTests()
40
+ {
41
+ _sut = new OrderService(_repository, _logger);
42
+ }
43
+
44
+ [Fact]
45
+ public async Task PlaceOrderAsync_ReturnsSuccess_WhenRequestIsValid()
46
+ {
47
+ // Arrange
48
+ var request = new CreateOrderRequest
49
+ {
50
+ CustomerId = "cust-123",
51
+ Items = [new OrderItem("SKU-001", 2, 29.99m)]
52
+ };
53
+
54
+ // Act
55
+ var result = await _sut.PlaceOrderAsync(request, CancellationToken.None);
56
+
57
+ // Assert
58
+ result.IsSuccess.Should().BeTrue();
59
+ result.Value.Should().NotBeNull();
60
+ result.Value!.CustomerId.Should().Be("cust-123");
61
+ }
62
+
63
+ [Fact]
64
+ public async Task PlaceOrderAsync_ReturnsFailure_WhenNoItems()
65
+ {
66
+ // Arrange
67
+ var request = new CreateOrderRequest
68
+ {
69
+ CustomerId = "cust-123",
70
+ Items = []
71
+ };
72
+
73
+ // Act
74
+ var result = await _sut.PlaceOrderAsync(request, CancellationToken.None);
75
+
76
+ // Assert
77
+ result.IsSuccess.Should().BeFalse();
78
+ result.Error.Should().Contain("at least one item");
79
+ }
80
+ }
81
+ ```
82
+
83
+ ### Parameterized Tests with Theory
84
+
85
+ ```csharp
86
+ [Theory]
87
+ [InlineData("", false)]
88
+ [InlineData("a", false)]
89
+ [InlineData("ab@c.d", false)]
90
+ [InlineData("user@example.com", true)]
91
+ [InlineData("user+tag@example.co.uk", true)]
92
+ public void IsValidEmail_ReturnsExpected(string email, bool expected)
93
+ {
94
+ EmailValidator.IsValid(email).Should().Be(expected);
95
+ }
96
+
97
+ [Theory]
98
+ [MemberData(nameof(InvalidOrderCases))]
99
+ public async Task PlaceOrderAsync_RejectsInvalidOrders(CreateOrderRequest request, string expectedError)
100
+ {
101
+ var result = await _sut.PlaceOrderAsync(request, CancellationToken.None);
102
+
103
+ result.IsSuccess.Should().BeFalse();
104
+ result.Error.Should().Contain(expectedError);
105
+ }
106
+
107
+ public static TheoryData<CreateOrderRequest, string> InvalidOrderCases => new()
108
+ {
109
+ { new() { CustomerId = "", Items = [ValidItem()] }, "CustomerId" },
110
+ { new() { CustomerId = "c1", Items = [] }, "at least one item" },
111
+ { new() { CustomerId = "c1", Items = [new("", 1, 10m)] }, "SKU" },
112
+ };
113
+ ```
114
+
115
+ ## Mocking with NSubstitute
116
+
117
+ ```csharp
118
+ [Fact]
119
+ public async Task GetOrderAsync_ReturnsNull_WhenNotFound()
120
+ {
121
+ // Arrange
122
+ var orderId = Guid.NewGuid();
123
+ _repository.FindByIdAsync(orderId, Arg.Any<CancellationToken>())
124
+ .Returns((Order?)null);
125
+
126
+ // Act
127
+ var result = await _sut.GetOrderAsync(orderId, CancellationToken.None);
128
+
129
+ // Assert
130
+ result.Should().BeNull();
131
+ }
132
+
133
+ [Fact]
134
+ public async Task PlaceOrderAsync_PersistsOrder()
135
+ {
136
+ // Arrange
137
+ var request = ValidOrderRequest();
138
+
139
+ // Act
140
+ await _sut.PlaceOrderAsync(request, CancellationToken.None);
141
+
142
+ // Assert — verify the repository was called
143
+ await _repository.Received(1).AddAsync(
144
+ Arg.Is<Order>(o => o.CustomerId == request.CustomerId),
145
+ Arg.Any<CancellationToken>());
146
+ }
147
+ ```
148
+
149
+ ## ASP.NET Core Integration Tests
150
+
151
+ ### WebApplicationFactory Setup
152
+
153
+ ```csharp
154
+ public sealed class OrderApiTests : IClassFixture<WebApplicationFactory<Program>>
155
+ {
156
+ private readonly HttpClient _client;
157
+
158
+ public OrderApiTests(WebApplicationFactory<Program> factory)
159
+ {
160
+ _client = factory.WithWebHostBuilder(builder =>
161
+ {
162
+ builder.ConfigureServices(services =>
163
+ {
164
+ // Replace real DB with in-memory for tests
165
+ services.RemoveAll<DbContextOptions<AppDbContext>>();
166
+ services.AddDbContext<AppDbContext>(options =>
167
+ options.UseInMemoryDatabase("TestDb"));
168
+ });
169
+ }).CreateClient();
170
+ }
171
+
172
+ [Fact]
173
+ public async Task GetOrder_Returns404_WhenNotFound()
174
+ {
175
+ var response = await _client.GetAsync($"/api/orders/{Guid.NewGuid()}");
176
+
177
+ response.StatusCode.Should().Be(HttpStatusCode.NotFound);
178
+ }
179
+
180
+ [Fact]
181
+ public async Task CreateOrder_Returns201_WithValidRequest()
182
+ {
183
+ var request = new CreateOrderRequest
184
+ {
185
+ CustomerId = "cust-1",
186
+ Items = [new("SKU-001", 1, 19.99m)]
187
+ };
188
+
189
+ var response = await _client.PostAsJsonAsync("/api/orders", request);
190
+
191
+ response.StatusCode.Should().Be(HttpStatusCode.Created);
192
+ response.Headers.Location.Should().NotBeNull();
193
+ }
194
+ }
195
+ ```
196
+
197
+ ### Testing with Testcontainers
198
+
199
+ ```csharp
200
+ public sealed class PostgresOrderRepositoryTests : IAsyncLifetime
201
+ {
202
+ private readonly PostgreSqlContainer _postgres = new PostgreSqlBuilder()
203
+ .WithImage("postgres:16-alpine")
204
+ .Build();
205
+
206
+ private AppDbContext _db = null!;
207
+
208
+ public async Task InitializeAsync()
209
+ {
210
+ await _postgres.StartAsync();
211
+ var options = new DbContextOptionsBuilder<AppDbContext>()
212
+ .UseNpgsql(_postgres.GetConnectionString())
213
+ .Options;
214
+ _db = new AppDbContext(options);
215
+ await _db.Database.MigrateAsync();
216
+ }
217
+
218
+ public async Task DisposeAsync()
219
+ {
220
+ await _db.DisposeAsync();
221
+ await _postgres.DisposeAsync();
222
+ }
223
+
224
+ [Fact]
225
+ public async Task AddAsync_PersistsOrder()
226
+ {
227
+ var repo = new SqlOrderRepository(_db);
228
+ var order = Order.Create("cust-1", [new OrderItem("SKU-001", 2, 10m)]);
229
+
230
+ await repo.AddAsync(order, CancellationToken.None);
231
+
232
+ var found = await repo.FindByIdAsync(order.Id, CancellationToken.None);
233
+ found.Should().NotBeNull();
234
+ found!.Items.Should().HaveCount(1);
235
+ }
236
+ }
237
+ ```
238
+
239
+ ## Test Organization
240
+
241
+ ```
242
+ tests/
243
+ MyApp.UnitTests/
244
+ Services/
245
+ OrderServiceTests.cs
246
+ PaymentServiceTests.cs
247
+ Validators/
248
+ EmailValidatorTests.cs
249
+ MyApp.IntegrationTests/
250
+ Api/
251
+ OrderApiTests.cs
252
+ Repositories/
253
+ OrderRepositoryTests.cs
254
+ MyApp.TestHelpers/
255
+ Builders/
256
+ OrderBuilder.cs
257
+ Fixtures/
258
+ DatabaseFixture.cs
259
+ ```
260
+
261
+ ## Test Data Builders
262
+
263
+ ```csharp
264
+ public sealed class OrderBuilder
265
+ {
266
+ private string _customerId = "cust-default";
267
+ private readonly List<OrderItem> _items = [new("SKU-001", 1, 10m)];
268
+
269
+ public OrderBuilder WithCustomer(string customerId)
270
+ {
271
+ _customerId = customerId;
272
+ return this;
273
+ }
274
+
275
+ public OrderBuilder WithItem(string sku, int quantity, decimal price)
276
+ {
277
+ _items.Add(new OrderItem(sku, quantity, price));
278
+ return this;
279
+ }
280
+
281
+ public Order Build() => Order.Create(_customerId, _items);
282
+ }
283
+
284
+ // Usage in tests
285
+ var order = new OrderBuilder()
286
+ .WithCustomer("cust-vip")
287
+ .WithItem("SKU-PREMIUM", 3, 99.99m)
288
+ .Build();
289
+ ```
290
+
291
+ ## Common Anti-Patterns
292
+
293
+ | Anti-Pattern | Fix |
294
+ |---|---|
295
+ | Testing implementation details | Test behavior and outcomes |
296
+ | Shared mutable test state | Fresh instance per test (xUnit does this via constructors) |
297
+ | `Thread.Sleep` in async tests | Use `Task.Delay` with timeout, or polling helpers |
298
+ | Asserting on `ToString()` output | Assert on typed properties |
299
+ | One giant assertion per test | One logical assertion per test |
300
+ | Test names describing implementation | Name by behavior: `Method_ExpectedResult_WhenCondition` |
301
+ | Ignoring `CancellationToken` | Always pass and verify cancellation |
302
+
303
+ ## Running Tests
304
+
305
+ ```bash
306
+ # Run all tests
307
+ dotnet test
308
+
309
+ # Run with coverage
310
+ dotnet test --collect:"XPlat Code Coverage"
311
+
312
+ # Run specific project
313
+ dotnet test tests/MyApp.UnitTests/
314
+
315
+ # Filter by test name
316
+ dotnet test --filter "FullyQualifiedName~OrderService"
317
+
318
+ # Watch mode during development
319
+ dotnet watch test --project tests/MyApp.UnitTests/
320
+ ```
@@ -0,0 +1,139 @@
1
+ ---
2
+ name: customer-billing-ops
3
+ description: Operate customer billing workflows such as subscriptions, refunds, churn triage, billing-portal recovery, and plan analysis using connected billing tools like Stripe. Use when the user needs to help a customer, inspect subscription state, or manage revenue-impacting billing operations.
4
+ ---
5
+
6
+ # Customer Billing Ops
7
+
8
+ Use this skill for real customer operations, not generic payment API design.
9
+
10
+ The goal is to help the operator answer: who is this customer, what happened, what is the safest fix, and what follow-up should we send?
11
+
12
+ ## When to Use
13
+
14
+ - Customer says billing is broken, they want a refund, or they cannot cancel
15
+ - Investigating duplicate subscriptions, accidental charges, failed renewals, or churn risk
16
+ - Reviewing plan mix, active subscriptions, yearly vs monthly conversion, or team-seat confusion
17
+ - Creating or validating a billing portal flow
18
+ - Auditing support complaints that touch subscriptions, invoices, refunds, or payment methods
19
+
20
+ ## Preferred Tool Surface
21
+
22
+ - Use connected billing tools such as Stripe first
23
+ - Use email, GitHub, or issue trackers only as supporting evidence
24
+ - Prefer hosted billing/customer portals over custom account-management code when the platform already provides the needed controls
25
+
26
+ ## Guardrails
27
+
28
+ - Never expose secret keys, full card details, or unnecessary customer PII in the response
29
+ - Do not refund blindly; first classify the issue
30
+ - Distinguish among:
31
+ - accidental duplicate purchase
32
+ - deliberate multi-seat or team purchase
33
+ - broken product / unmet value
34
+ - failed or incomplete checkout
35
+ - cancellation due to missing self-serve controls
36
+ - For annual plans, team plans, and prorated states, verify the contract shape before taking action
37
+
38
+ ## Workflow
39
+
40
+ ### 1. Identify the customer cleanly
41
+
42
+ Start from the strongest identifier available:
43
+
44
+ - customer email
45
+ - Stripe customer ID
46
+ - subscription ID
47
+ - invoice ID
48
+ - GitHub username or support email if it is known to map back to billing
49
+
50
+ Return a concise identity summary:
51
+
52
+ - customer
53
+ - active subscriptions
54
+ - canceled subscriptions
55
+ - invoices
56
+ - obvious anomalies such as duplicate active subscriptions
57
+
58
+ ### 2. Classify the issue
59
+
60
+ Put the case into one bucket before acting:
61
+
62
+ | Case | Typical action |
63
+ |------|----------------|
64
+ | Duplicate personal subscription | cancel extras, consider refund |
65
+ | Real multi-seat/team intent | preserve seats, clarify billing model |
66
+ | Failed payment / incomplete checkout | recover via portal or update payment method |
67
+ | Missing self-serve controls | provide portal, cancellation path, or invoice access |
68
+ | Product failure or trust break | refund, apologize, log product issue |
69
+
70
+ ### 3. Take the safest reversible action first
71
+
72
+ Preferred order:
73
+
74
+ 1. restore self-serve management
75
+ 2. fix duplicate or broken billing state
76
+ 3. refund only the affected charge or duplicate
77
+ 4. document the reason
78
+ 5. send a short customer follow-up
79
+
80
+ If the fix requires product work, separate:
81
+
82
+ - customer remediation now
83
+ - product bug / workflow gap for backlog
84
+
85
+ ### 4. Check operator-side product gaps
86
+
87
+ If the customer pain comes from a missing operator surface, call it out explicitly. Common examples:
88
+
89
+ - no billing portal
90
+ - no usage/rate-limit visibility
91
+ - no plan/seat explanation
92
+ - no cancellation flow
93
+ - no duplicate-subscription guard
94
+
95
+ Treat those as the toolset or website follow-up items, not just support incidents.
96
+
97
+ ### 5. Produce the operator handoff
98
+
99
+ End with:
100
+
101
+ - customer state summary
102
+ - action taken
103
+ - revenue impact
104
+ - follow-up text to send
105
+ - product or backlog issue to create
106
+
107
+ ## Output Format
108
+
109
+ Use this structure:
110
+
111
+ ```text
112
+ CUSTOMER
113
+ - name / email
114
+ - relevant account identifiers
115
+
116
+ BILLING STATE
117
+ - active subscriptions
118
+ - invoice or renewal state
119
+ - anomalies
120
+
121
+ DECISION
122
+ - issue classification
123
+ - why this action is correct
124
+
125
+ ACTION TAKEN
126
+ - refund / cancel / portal / no-op
127
+
128
+ FOLLOW-UP
129
+ - short customer message
130
+
131
+ PRODUCT GAP
132
+ - what should be fixed in the product or website
133
+ ```
134
+
135
+ ## Examples of Good Recommendations
136
+
137
+ - "The right fix is a billing portal, not a custom dashboard yet"
138
+ - "This looks like duplicate personal checkout, not a real team-seat purchase"
139
+ - "Refund one duplicate charge, keep the remaining active subscription, then convert the customer to org billing later if needed"