@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,327 @@
1
+ ---
2
+ name: fastapi-patterns
3
+ description: FastAPI patterns for async APIs, dependency injection, Pydantic request and response models, OpenAPI docs, tests, security, and production readiness.
4
+ origin: community
5
+ ---
6
+
7
+ # FastAPI Patterns
8
+
9
+ Production-oriented patterns for FastAPI services.
10
+
11
+ ## When to Use
12
+
13
+ - Building or reviewing a FastAPI app.
14
+ - Splitting routers, schemas, dependencies, and database access.
15
+ - Writing async endpoints that call a database or external service.
16
+ - Adding authentication, authorization, OpenAPI docs, tests, or deployment settings.
17
+ - Checking a FastAPI PR for copy-pasteable examples and production risks.
18
+
19
+ ## How It Works
20
+
21
+ Treat the FastAPI app as a thin HTTP layer over explicit dependencies and service code:
22
+
23
+ - `main.py` owns app construction, middleware, exception handlers, and router registration.
24
+ - `schemas/` owns Pydantic request and response models.
25
+ - `dependencies.py` owns database, auth, pagination, and request-scoped dependencies.
26
+ - `services/` or `crud/` owns business and persistence operations.
27
+ - `tests/` overrides dependencies instead of opening production resources.
28
+
29
+ Prefer small routers and explicit `response_model` declarations. Keep raw ORM objects, secrets, and framework globals out of response schemas.
30
+
31
+ ## Project Layout
32
+
33
+ ```text
34
+ app/
35
+ |-- main.py
36
+ |-- config.py
37
+ |-- dependencies.py
38
+ |-- exceptions.py
39
+ |-- api/
40
+ | `-- routes/
41
+ | |-- users.py
42
+ | `-- health.py
43
+ |-- core/
44
+ | |-- security.py
45
+ | `-- middleware.py
46
+ |-- db/
47
+ | |-- session.py
48
+ | `-- crud.py
49
+ |-- models/
50
+ |-- schemas/
51
+ `-- tests/
52
+ ```
53
+
54
+ ## Application Factory
55
+
56
+ Use a factory so tests and workers can build the app with controlled settings.
57
+
58
+ ```python
59
+ from contextlib import asynccontextmanager
60
+
61
+ from fastapi import FastAPI
62
+ from fastapi.middleware.cors import CORSMiddleware
63
+
64
+ from app.api.routes import health, users
65
+ from app.config import settings
66
+ from app.db.session import close_db, init_db
67
+ from app.exceptions import register_exception_handlers
68
+
69
+
70
+ @asynccontextmanager
71
+ async def lifespan(app: FastAPI):
72
+ await init_db()
73
+ yield
74
+ await close_db()
75
+
76
+
77
+ def create_app() -> FastAPI:
78
+ app = FastAPI(
79
+ title=settings.api_title,
80
+ version=settings.api_version,
81
+ lifespan=lifespan,
82
+ )
83
+
84
+ app.add_middleware(
85
+ CORSMiddleware,
86
+ allow_origins=settings.cors_origins,
87
+ allow_credentials=bool(settings.cors_origins),
88
+ allow_methods=["GET", "POST", "PUT", "PATCH", "DELETE"],
89
+ allow_headers=["Authorization", "Content-Type"],
90
+ )
91
+
92
+ register_exception_handlers(app)
93
+ app.include_router(health.router, prefix="/health", tags=["health"])
94
+ app.include_router(users.router, prefix="/api/v1/users", tags=["users"])
95
+ return app
96
+
97
+
98
+ app = create_app()
99
+ ```
100
+
101
+ Do not use `allow_origins=["*"]` with `allow_credentials=True`; browsers reject that combination and Starlette disallows it for credentialed requests.
102
+
103
+ ## Pydantic Schemas
104
+
105
+ Keep request, update, and response models separate.
106
+
107
+ ```python
108
+ from datetime import datetime
109
+ from typing import Annotated
110
+ from uuid import UUID
111
+
112
+ from pydantic import BaseModel, ConfigDict, EmailStr, Field
113
+
114
+
115
+ class UserBase(BaseModel):
116
+ email: EmailStr
117
+ full_name: Annotated[str, Field(min_length=1, max_length=100)]
118
+
119
+
120
+ class UserCreate(UserBase):
121
+ password: Annotated[str, Field(min_length=12, max_length=128)]
122
+
123
+
124
+ class UserUpdate(BaseModel):
125
+ email: EmailStr | None = None
126
+ full_name: Annotated[str | None, Field(min_length=1, max_length=100)] = None
127
+
128
+
129
+ class UserResponse(UserBase):
130
+ model_config = ConfigDict(from_attributes=True)
131
+
132
+ id: UUID
133
+ created_at: datetime
134
+ updated_at: datetime
135
+ ```
136
+
137
+ Response models must never include password hashes, access tokens, refresh tokens, or internal authorization state.
138
+
139
+ ## Dependencies
140
+
141
+ Use dependency injection for request-scoped resources.
142
+
143
+ ```python
144
+ from collections.abc import AsyncIterator
145
+ from uuid import UUID
146
+
147
+ from fastapi import Depends, HTTPException, status
148
+ from fastapi.security import OAuth2PasswordBearer
149
+ from sqlalchemy.ext.asyncio import AsyncSession
150
+
151
+ from app.core.security import decode_token
152
+ from app.db.session import session_factory
153
+ from app.models.user import User
154
+
155
+
156
+ oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/v1/auth/login")
157
+
158
+
159
+ async def get_db() -> AsyncIterator[AsyncSession]:
160
+ async with session_factory() as session:
161
+ try:
162
+ yield session
163
+ await session.commit()
164
+ except Exception:
165
+ await session.rollback()
166
+ raise
167
+
168
+
169
+ async def get_current_user(
170
+ token: str = Depends(oauth2_scheme),
171
+ db: AsyncSession = Depends(get_db),
172
+ ) -> User:
173
+ payload = decode_token(token)
174
+ user_id = UUID(payload["sub"])
175
+ user = await db.get(User, user_id)
176
+ if user is None:
177
+ raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid token")
178
+ return user
179
+ ```
180
+
181
+ Avoid creating sessions, clients, or credentials inline inside route handlers.
182
+
183
+ ## Async Endpoints
184
+
185
+ Keep route handlers async when they perform I/O, and use async libraries inside them.
186
+
187
+ ```python
188
+ from fastapi import APIRouter, Depends, Query
189
+ from sqlalchemy import select
190
+ from sqlalchemy.ext.asyncio import AsyncSession
191
+
192
+ from app.dependencies import get_current_user, get_db
193
+ from app.models.user import User
194
+ from app.schemas.user import UserResponse
195
+
196
+
197
+ router = APIRouter()
198
+
199
+
200
+ @router.get("/", response_model=list[UserResponse])
201
+ async def list_users(
202
+ limit: int = Query(default=50, ge=1, le=100),
203
+ offset: int = Query(default=0, ge=0),
204
+ db: AsyncSession = Depends(get_db),
205
+ current_user: User = Depends(get_current_user),
206
+ ):
207
+ result = await db.execute(
208
+ select(User).order_by(User.created_at.desc()).limit(limit).offset(offset)
209
+ )
210
+ return result.scalars().all()
211
+ ```
212
+
213
+ Use `httpx.AsyncClient` for external HTTP calls from async handlers. Do not call `requests` in an async route.
214
+
215
+ ## Error Handling
216
+
217
+ Centralize domain exceptions and keep response shapes stable.
218
+
219
+ ```python
220
+ from fastapi import FastAPI, Request
221
+ from fastapi.responses import JSONResponse
222
+
223
+
224
+ class ApiError(Exception):
225
+ def __init__(self, status_code: int, code: str, message: str):
226
+ self.status_code = status_code
227
+ self.code = code
228
+ self.message = message
229
+
230
+
231
+ def register_exception_handlers(app: FastAPI) -> None:
232
+ @app.exception_handler(ApiError)
233
+ async def api_error_handler(request: Request, exc: ApiError):
234
+ return JSONResponse(
235
+ status_code=exc.status_code,
236
+ content={"error": {"code": exc.code, "message": exc.message}},
237
+ )
238
+ ```
239
+
240
+ ## OpenAPI Customization
241
+
242
+ Assign the custom OpenAPI callable to `app.openapi`; do not just call the function once.
243
+
244
+ ```python
245
+ from fastapi import FastAPI
246
+ from fastapi.openapi.utils import get_openapi
247
+
248
+
249
+ def install_openapi(app: FastAPI) -> None:
250
+ def custom_openapi():
251
+ if app.openapi_schema:
252
+ return app.openapi_schema
253
+ app.openapi_schema = get_openapi(
254
+ title="Service API",
255
+ version="1.0.0",
256
+ routes=app.routes,
257
+ )
258
+ return app.openapi_schema
259
+
260
+ app.openapi = custom_openapi
261
+ ```
262
+
263
+ ## Testing
264
+
265
+ Override the dependency used by `Depends`, not an internal helper that route handlers never reference.
266
+
267
+ ```python
268
+ import pytest
269
+ from httpx import ASGITransport, AsyncClient
270
+ from sqlalchemy.ext.asyncio import AsyncSession
271
+
272
+ from app.dependencies import get_db
273
+ from app.main import create_app
274
+
275
+
276
+ @pytest.fixture
277
+ async def client(test_session: AsyncSession):
278
+ app = create_app()
279
+
280
+ async def override_get_db():
281
+ yield test_session
282
+
283
+ app.dependency_overrides[get_db] = override_get_db
284
+ async with AsyncClient(
285
+ transport=ASGITransport(app=app),
286
+ base_url="http://test",
287
+ ) as test_client:
288
+ yield test_client
289
+ app.dependency_overrides.clear()
290
+ ```
291
+
292
+ ## Security Checklist
293
+
294
+ - Hash passwords with `argon2-cffi`, `bcrypt`, or a current passlib-compatible hasher.
295
+ - Validate JWT issuer, audience, expiry, and signing algorithm.
296
+ - Keep CORS origins environment-specific.
297
+ - Put rate limits on auth and write-heavy endpoints.
298
+ - Use Pydantic models for all request bodies.
299
+ - Use ORM parameter binding or SQLAlchemy Core expressions; never build SQL with f-strings.
300
+ - Redact tokens, authorization headers, cookies, and passwords from logs.
301
+ - Run dependency audit tooling in CI.
302
+
303
+ ## Performance Checklist
304
+
305
+ - Configure database connection pooling explicitly.
306
+ - Add pagination to list endpoints.
307
+ - Watch for N+1 queries and use eager loading intentionally.
308
+ - Use async HTTP/database clients in async paths.
309
+ - Add compression only after checking payload size and CPU tradeoffs.
310
+ - Cache stable expensive reads behind explicit invalidation.
311
+
312
+ ## Examples
313
+
314
+ Use these examples as patterns, not as project-wide templates:
315
+
316
+ - Application factory: configure middleware and routers once in `create_app`.
317
+ - Schema split: `UserCreate`, `UserUpdate`, and `UserResponse` have different responsibilities.
318
+ - Dependency override: tests override `get_db` directly.
319
+ - OpenAPI customization: assign `app.openapi = custom_openapi`.
320
+
321
+ ## See Also
322
+
323
+ - Agent: `fastapi-reviewer`
324
+ - Command: `/fastapi-review`
325
+ - Skill: `python-patterns`
326
+ - Skill: `python-testing`
327
+ - Skill: `api-design`
@@ -0,0 +1,126 @@
1
+ ---
2
+ name: finance-billing-ops
3
+ description: Evidence-first revenue, pricing, refunds, team-billing, and billing-model truth workflow for the toolset. Use when the user wants a sales snapshot, pricing comparison, duplicate-charge diagnosis, or code-backed billing reality instead of generic payments advice.
4
+ ---
5
+
6
+ # Finance Billing Ops
7
+
8
+ Use this when the user wants to understand money, pricing, refunds, team-seat logic, or whether the product actually behaves the way the website and sales copy imply.
9
+
10
+ This is broader than `customer-billing-ops`. That skill is for customer remediation. This skill is for operator truth: revenue state, pricing decisions, team billing, and code-backed billing behavior.
11
+
12
+ ## Skill Stack
13
+
14
+ Pull these the toolset-native skills into the workflow when relevant:
15
+
16
+ - `customer-billing-ops` for customer-specific remediation and follow-up
17
+ - `research-ops` when competitor pricing or current market evidence matters
18
+ - `market-research` when the answer should end in a pricing recommendation
19
+ - `github-ops` when the billing truth depends on code, backlog, or release state in sibling repos
20
+ - `verification-loop` when the answer depends on proving checkout, seat handling, or entitlement behavior
21
+
22
+ ## When to Use
23
+
24
+ - user asks for Stripe sales, refunds, MRR, or recent customer activity
25
+ - user asks whether team billing, per-seat billing, or quota stacking is real in code
26
+ - user wants competitor pricing comparisons or pricing-model benchmarks
27
+ - the question mixes revenue facts with product implementation truth
28
+
29
+ ## Guardrails
30
+
31
+ - distinguish live data from saved snapshots
32
+ - separate:
33
+ - revenue fact
34
+ - customer impact
35
+ - code-backed product truth
36
+ - recommendation
37
+ - do not say "per seat" unless the actual entitlement path enforces it
38
+ - do not assume duplicate subscriptions imply duplicate value
39
+
40
+ ## Workflow
41
+
42
+ ### 1. Start from the freshest billing evidence
43
+
44
+ Prefer live billing data. If the data is not live, state the snapshot timestamp explicitly.
45
+
46
+ Normalize the picture:
47
+
48
+ - paid sales
49
+ - active subscriptions
50
+ - failed or incomplete checkouts
51
+ - refunds
52
+ - disputes
53
+ - duplicate subscriptions
54
+
55
+ ### 2. Separate customer incidents from product truth
56
+
57
+ If the question is customer-specific, classify first:
58
+
59
+ - duplicate checkout
60
+ - real team intent
61
+ - broken self-serve controls
62
+ - unmet product value
63
+ - failed payment or incomplete setup
64
+
65
+ Then separate that from the broader product question:
66
+
67
+ - does team billing really exist?
68
+ - are seats actually counted?
69
+ - does checkout quantity change entitlement?
70
+ - does the site overstate current behavior?
71
+
72
+ ### 3. Inspect code-backed billing behavior
73
+
74
+ If the answer depends on implementation truth, inspect the code path:
75
+
76
+ - checkout
77
+ - pricing page
78
+ - entitlement calculation
79
+ - seat or quota handling
80
+ - installation vs user usage logic
81
+ - billing portal or self-serve management support
82
+
83
+ ### 4. End with a decision and product gap
84
+
85
+ Report:
86
+
87
+ - sales snapshot
88
+ - issue diagnosis
89
+ - product truth
90
+ - recommended operator action
91
+ - product or backlog gap
92
+
93
+ ## Output Format
94
+
95
+ ```text
96
+ SNAPSHOT
97
+ - timestamp
98
+ - revenue / subscriptions / anomalies
99
+
100
+ CUSTOMER IMPACT
101
+ - who is affected
102
+ - what happened
103
+
104
+ PRODUCT TRUTH
105
+ - what the code actually does
106
+ - what the website or sales copy claims
107
+
108
+ DECISION
109
+ - refund / preserve / convert / no-op
110
+
111
+ PRODUCT GAP
112
+ - exact follow-up item to build or fix
113
+ ```
114
+
115
+ ## Pitfalls
116
+
117
+ - do not conflate failed attempts with net revenue
118
+ - do not infer team billing from marketing language alone
119
+ - do not compare competitor pricing from memory when current evidence is available
120
+ - do not jump from diagnosis straight to refund without classifying the issue
121
+
122
+ ## Verification
123
+
124
+ - the answer includes a live-data statement or snapshot timestamp
125
+ - product-truth claims are code-backed
126
+ - customer-impact and broader pricing/product conclusions are separated cleanly