opencode-skills-collection 3.1.12 → 3.1.13

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 (760) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +192 -1
  2. package/bundled-skills/ab-testing/SKILL.md +368 -0
  3. package/bundled-skills/ab-testing/evals/evals.json +105 -0
  4. package/bundled-skills/ab-testing/references/sample-size-guide.md +263 -0
  5. package/bundled-skills/ab-testing/references/test-templates.md +277 -0
  6. package/bundled-skills/accint-commitments/SKILL.md +32 -0
  7. package/bundled-skills/accint-frames/SKILL.md +35 -0
  8. package/bundled-skills/accint-solve/SKILL.md +22 -192
  9. package/bundled-skills/add-app-clip/SKILL.md +297 -0
  10. package/bundled-skills/add-app-clip/agents/openai.yaml +4 -0
  11. package/bundled-skills/add-app-clip/references/native-module.md +96 -0
  12. package/bundled-skills/agent-memory/SKILL.md +84 -0
  13. package/bundled-skills/alternatives-pages/README.md +46 -0
  14. package/bundled-skills/alternatives-pages/SKILL.md +376 -0
  15. package/bundled-skills/analytics/SKILL.md +324 -0
  16. package/bundled-skills/analytics/evals/evals.json +90 -0
  17. package/bundled-skills/analytics/references/event-library.md +260 -0
  18. package/bundled-skills/analytics/references/ga4-implementation.md +300 -0
  19. package/bundled-skills/analytics/references/gtm-implementation.md +390 -0
  20. package/bundled-skills/anti-deception/SKILL.md +50 -0
  21. package/bundled-skills/api-analyzer/SKILL.md +101 -0
  22. package/bundled-skills/api-and-interface-design/SKILL.md +307 -0
  23. package/bundled-skills/api-designer/SKILL.md +167 -0
  24. package/bundled-skills/api-integration/SKILL.md +175 -0
  25. package/bundled-skills/api-onboarding/README.md +47 -0
  26. package/bundled-skills/api-onboarding/SKILL.md +473 -0
  27. package/bundled-skills/api-sdk-generator/SKILL.md +223 -0
  28. package/bundled-skills/appium-skill/SKILL.md +317 -0
  29. package/bundled-skills/applicationinsights-web-ts/SKILL.md +477 -0
  30. package/bundled-skills/automated-triage/SKILL.md +189 -0
  31. package/bundled-skills/aws-agentic-ai/SKILL.md +141 -0
  32. package/bundled-skills/aws-cdk-development/SKILL.md +275 -0
  33. package/bundled-skills/aws-cost-operations/SKILL.md +273 -0
  34. package/bundled-skills/aws-mcp-setup/SKILL.md +192 -0
  35. package/bundled-skills/aws-serverless-eda/SKILL.md +394 -0
  36. package/bundled-skills/aws-sst-development/SKILL.md +175 -0
  37. package/bundled-skills/azure-ai-language-conversations-py/SKILL.md +112 -0
  38. package/bundled-skills/azure-servicebus-rust/SKILL.md +182 -0
  39. package/bundled-skills/azure-storage-queue-rust/SKILL.md +178 -0
  40. package/bundled-skills/baseline-ui/SKILL.md +15 -10
  41. package/bundled-skills/brooks-audit/SKILL.md +49 -0
  42. package/bundled-skills/brooks-audit/architecture-guide.md +195 -0
  43. package/bundled-skills/brooks-audit/onboarding-guide.md +89 -0
  44. package/bundled-skills/brooks-debt/SKILL.md +42 -0
  45. package/bundled-skills/brooks-debt/debt-guide.md +125 -0
  46. package/bundled-skills/brooks-harness/SKILL.md +139 -0
  47. package/bundled-skills/brooks-review/SKILL.md +42 -0
  48. package/bundled-skills/brooks-review/pr-review-guide.md +163 -0
  49. package/bundled-skills/brooks-sweep/SKILL.md +44 -0
  50. package/bundled-skills/brooks-sweep/sweep-guide.md +264 -0
  51. package/bundled-skills/brooks-test/SKILL.md +41 -0
  52. package/bundled-skills/brooks-test/test-guide.md +147 -0
  53. package/bundled-skills/bug-hunt-swarm/SKILL.md +189 -0
  54. package/bundled-skills/bug-hunt-swarm/agents/openai.yaml +4 -0
  55. package/bundled-skills/building-native-ui/SKILL.md +77 -18
  56. package/bundled-skills/building-native-ui/agents/openai.yaml +4 -0
  57. package/bundled-skills/building-native-ui/references/animations.md +220 -0
  58. package/bundled-skills/building-native-ui/references/controls.md +270 -0
  59. package/bundled-skills/building-native-ui/references/form-sheet.md +253 -0
  60. package/bundled-skills/building-native-ui/references/gradients.md +106 -0
  61. package/bundled-skills/building-native-ui/references/icons.md +213 -0
  62. package/bundled-skills/building-native-ui/references/media.md +198 -0
  63. package/bundled-skills/building-native-ui/references/route-structure.md +229 -0
  64. package/bundled-skills/building-native-ui/references/search.md +248 -0
  65. package/bundled-skills/building-native-ui/references/storage.md +121 -0
  66. package/bundled-skills/building-native-ui/references/tabs.md +433 -0
  67. package/bundled-skills/building-native-ui/references/toolbar-and-headers.md +284 -0
  68. package/bundled-skills/building-native-ui/references/visual-effects.md +197 -0
  69. package/bundled-skills/building-native-ui/references/webgpu-three.md +605 -0
  70. package/bundled-skills/building-native-ui/references/zoom-transitions.md +158 -0
  71. package/bundled-skills/changelog-updates/README.md +53 -0
  72. package/bundled-skills/changelog-updates/SKILL.md +552 -0
  73. package/bundled-skills/ci-cd-and-automation/SKILL.md +403 -0
  74. package/bundled-skills/claimable-postgres/SKILL.md +91 -59
  75. package/bundled-skills/co-marketing/SKILL.md +301 -0
  76. package/bundled-skills/co-marketing/evals/evals.json +84 -0
  77. package/bundled-skills/code-review-and-quality/SKILL.md +394 -0
  78. package/bundled-skills/code-showcase-core-components/SKILL.md +281 -0
  79. package/bundled-skills/code-showcase-react-ui-patterns/SKILL.md +306 -0
  80. package/bundled-skills/code-showcase-systematic-debugging/SKILL.md +167 -0
  81. package/bundled-skills/code-showcase-testing-patterns/SKILL.md +276 -0
  82. package/bundled-skills/code-simplification/SKILL.md +344 -0
  83. package/bundled-skills/community-building/README.md +102 -0
  84. package/bundled-skills/community-building/SKILL.md +415 -0
  85. package/bundled-skills/competitor-profiling/SKILL.md +427 -0
  86. package/bundled-skills/competitor-profiling/evals/evals.json +85 -0
  87. package/bundled-skills/competitor-profiling/references/templates.md +167 -0
  88. package/bundled-skills/competitor-profiling/references/tool-reference.md +179 -0
  89. package/bundled-skills/competitor-tracking/README.md +40 -0
  90. package/bundled-skills/competitor-tracking/SKILL.md +322 -0
  91. package/bundled-skills/context-engineering/SKILL.md +302 -0
  92. package/bundled-skills/cro/SKILL.md +202 -0
  93. package/bundled-skills/cro/evals/evals.json +111 -0
  94. package/bundled-skills/cro/references/experiments.md +248 -0
  95. package/bundled-skills/cro/references/form.md +422 -0
  96. package/bundled-skills/cucumber-skill/SKILL.md +235 -0
  97. package/bundled-skills/customer-research/SKILL.md +287 -0
  98. package/bundled-skills/customer-research/evals/evals.json +162 -0
  99. package/bundled-skills/customer-research/references/source-guides.md +401 -0
  100. package/bundled-skills/cypress-skill/SKILL.md +235 -0
  101. package/bundled-skills/debugging-and-error-recovery/SKILL.md +313 -0
  102. package/bundled-skills/debugging-code/SKILL.md +284 -0
  103. package/bundled-skills/debugging-code/references/advanced-techniques.md +50 -0
  104. package/bundled-skills/debugging-code/references/installing-debuggers.md +67 -0
  105. package/bundled-skills/debugging-code/scripts/install-dap.sh +87 -0
  106. package/bundled-skills/deprecation-and-migration/SKILL.md +219 -0
  107. package/bundled-skills/design-philosophy/SKILL.md +40 -0
  108. package/bundled-skills/design-philosophy/reference.md +19 -0
  109. package/bundled-skills/design-spatial/SKILL.md +271 -0
  110. package/bundled-skills/design-spatial/scripts/layout-audit.js +138 -0
  111. package/bundled-skills/design-system/SKILL.md +140 -0
  112. package/bundled-skills/design-system/references/motion-choreography.md +111 -0
  113. package/bundled-skills/design-thinking/SKILL.md +109 -0
  114. package/bundled-skills/design-ux/SKILL.md +75 -0
  115. package/bundled-skills/dev-to-hashnode/README.md +62 -0
  116. package/bundled-skills/dev-to-hashnode/SKILL.md +399 -0
  117. package/bundled-skills/developer-advocacy/README.md +102 -0
  118. package/bundled-skills/developer-advocacy/SKILL.md +423 -0
  119. package/bundled-skills/developer-audience-context/README.md +61 -0
  120. package/bundled-skills/developer-audience-context/SKILL.md +271 -0
  121. package/bundled-skills/developer-audience-context/references/example-apitest.md +175 -0
  122. package/bundled-skills/developer-audience-context/references/template.md +152 -0
  123. package/bundled-skills/developer-churn/README.md +80 -0
  124. package/bundled-skills/developer-churn/SKILL.md +652 -0
  125. package/bundled-skills/developer-listening/README.md +30 -0
  126. package/bundled-skills/developer-listening/SKILL.md +232 -0
  127. package/bundled-skills/developer-newsletter/README.md +84 -0
  128. package/bundled-skills/developer-newsletter/SKILL.md +376 -0
  129. package/bundled-skills/developer-onboarding/README.md +35 -0
  130. package/bundled-skills/developer-onboarding/SKILL.md +530 -0
  131. package/bundled-skills/developer-sandbox/README.md +47 -0
  132. package/bundled-skills/developer-sandbox/SKILL.md +504 -0
  133. package/bundled-skills/developer-seo/README.md +36 -0
  134. package/bundled-skills/developer-seo/SKILL.md +296 -0
  135. package/bundled-skills/developer-signup-flow/README.md +36 -0
  136. package/bundled-skills/developer-signup-flow/SKILL.md +397 -0
  137. package/bundled-skills/devrel-content/README.md +81 -0
  138. package/bundled-skills/devrel-content/SKILL.md +428 -0
  139. package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
  140. package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
  141. package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
  142. package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
  143. package/bundled-skills/docs/users/bundles.md +1 -1
  144. package/bundled-skills/docs/users/claude-code-skills.md +1 -1
  145. package/bundled-skills/docs/users/faq.md +1 -1
  146. package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
  147. package/bundled-skills/docs/users/getting-started.md +1 -1
  148. package/bundled-skills/docs/users/kiro-integration.md +1 -1
  149. package/bundled-skills/docs/users/usage.md +8 -8
  150. package/bundled-skills/docs/users/visual-guide.md +8 -8
  151. package/bundled-skills/docs-as-marketing/README.md +37 -0
  152. package/bundled-skills/docs-as-marketing/SKILL.md +398 -0
  153. package/bundled-skills/documentation-and-adrs/SKILL.md +291 -0
  154. package/bundled-skills/doubt-driven-development/SKILL.md +256 -0
  155. package/bundled-skills/eas-update-insights/SKILL.md +232 -0
  156. package/bundled-skills/eas-update-insights/agents/openai.yaml +4 -0
  157. package/bundled-skills/eas-update-insights/references/channel-insights-schema.md +47 -0
  158. package/bundled-skills/eas-update-insights/references/update-insights-schema.md +69 -0
  159. package/bundled-skills/expo-api-routes/SKILL.md +9 -5
  160. package/bundled-skills/expo-api-routes/agents/openai.yaml +4 -0
  161. package/bundled-skills/expo-brownfield/SKILL.md +71 -0
  162. package/bundled-skills/expo-brownfield/agents/openai.yaml +4 -0
  163. package/bundled-skills/expo-brownfield/references/brownfield-integrated.md +526 -0
  164. package/bundled-skills/expo-brownfield/references/brownfield-isolated.md +402 -0
  165. package/bundled-skills/expo-brownfield/references/comparison.md +63 -0
  166. package/bundled-skills/expo-brownfield/references/troubleshooting.md +88 -0
  167. package/bundled-skills/expo-cicd-workflows/SKILL.md +18 -16
  168. package/bundled-skills/expo-cicd-workflows/agents/openai.yaml +4 -0
  169. package/bundled-skills/expo-cicd-workflows/scripts/fetch.js +109 -0
  170. package/bundled-skills/expo-cicd-workflows/scripts/package.json +11 -0
  171. package/bundled-skills/expo-cicd-workflows/scripts/validate.js +84 -0
  172. package/bundled-skills/expo-deployment/SKILL.md +157 -53
  173. package/bundled-skills/expo-deployment/agents/openai.yaml +4 -0
  174. package/bundled-skills/expo-deployment/references/app-store-metadata.md +497 -0
  175. package/bundled-skills/expo-deployment/references/ios-app-store.md +371 -0
  176. package/bundled-skills/expo-deployment/references/play-store.md +246 -0
  177. package/bundled-skills/expo-deployment/references/testflight.md +58 -0
  178. package/bundled-skills/expo-deployment/references/workflows.md +160 -0
  179. package/bundled-skills/expo-dev-client/SKILL.md +25 -14
  180. package/bundled-skills/expo-dev-client/agents/openai.yaml +4 -0
  181. package/bundled-skills/expo-examples/SKILL.md +111 -0
  182. package/bundled-skills/expo-examples/references/catalog.md +105 -0
  183. package/bundled-skills/expo-module/SKILL.md +152 -0
  184. package/bundled-skills/expo-module/agents/openai.yaml +4 -0
  185. package/bundled-skills/expo-module/references/config-plugin.md +90 -0
  186. package/bundled-skills/expo-module/references/create-expo-module.md +206 -0
  187. package/bundled-skills/expo-module/references/lifecycle.md +127 -0
  188. package/bundled-skills/expo-module/references/module-config.md +48 -0
  189. package/bundled-skills/expo-module/references/native-module.md +286 -0
  190. package/bundled-skills/expo-module/references/native-view.md +171 -0
  191. package/bundled-skills/expo-observe/SKILL.md +44 -0
  192. package/bundled-skills/expo-observe/references/metrics.md +47 -0
  193. package/bundled-skills/expo-observe/references/queries.md +342 -0
  194. package/bundled-skills/expo-observe/references/setup.md +255 -0
  195. package/bundled-skills/expo-tailwind-setup/SKILL.md +13 -10
  196. package/bundled-skills/expo-tailwind-setup/agents/openai.yaml +4 -0
  197. package/bundled-skills/expo-ui/SKILL.md +61 -0
  198. package/bundled-skills/expo-ui/agents/openai.yaml +4 -0
  199. package/bundled-skills/expo-ui/references/drop-in-replacements.md +27 -0
  200. package/bundled-skills/expo-ui/references/jetpack-compose.md +73 -0
  201. package/bundled-skills/expo-ui/references/swift-ui.md +73 -0
  202. package/bundled-skills/expo-ui/references/universal.md +73 -0
  203. package/bundled-skills/expo-ui/scripts/list-components.js +193 -0
  204. package/bundled-skills/faf-context/SKILL.md +106 -0
  205. package/bundled-skills/faf-go/SKILL.md +336 -0
  206. package/bundled-skills/fixing-accessibility/SKILL.md +16 -5
  207. package/bundled-skills/fixing-metadata/SKILL.md +18 -8
  208. package/bundled-skills/fixing-motion-performance/SKILL.md +17 -6
  209. package/bundled-skills/formik-patterns/SKILL.md +379 -0
  210. package/bundled-skills/free-tier-strategy/README.md +39 -0
  211. package/bundled-skills/free-tier-strategy/SKILL.md +462 -0
  212. package/bundled-skills/frontend-architecture/SKILL.md +419 -0
  213. package/bundled-skills/frontend-data-contracts/SKILL.md +331 -0
  214. package/bundled-skills/frontend-observability/SKILL.md +434 -0
  215. package/bundled-skills/frontend-optimistic-mutations/SKILL.md +278 -0
  216. package/bundled-skills/frontend-seo/SKILL.md +710 -0
  217. package/bundled-skills/frontend-slides-frontend-slides/SKILL.md +397 -0
  218. package/bundled-skills/frontend-ui-engineering/SKILL.md +341 -0
  219. package/bundled-skills/gemini-api-dev/SKILL.md +96 -53
  220. package/bundled-skills/gemini-live-api-dev/SKILL.md +339 -0
  221. package/bundled-skills/gemini-omni-flash-api/SKILL.md +335 -0
  222. package/bundled-skills/gemini-omni-flash-api/scripts/upload_file.py +218 -0
  223. package/bundled-skills/gemini-omni-flash-api/scripts/video/generate_video.py +439 -0
  224. package/bundled-skills/gemini-omni-flash-api/scripts/video/inspect_video.py +197 -0
  225. package/bundled-skills/gemini-omni-flash-api/scripts/video/prep_video.py +255 -0
  226. package/bundled-skills/git-workflow-and-versioning/SKILL.md +313 -0
  227. package/bundled-skills/github-presence/README.md +67 -0
  228. package/bundled-skills/github-presence/SKILL.md +484 -0
  229. package/bundled-skills/graphql-schema/SKILL.md +309 -0
  230. package/bundled-skills/hf-mcp/SKILL.md +195 -0
  231. package/bundled-skills/hf-mem/SKILL.md +92 -0
  232. package/bundled-skills/hugging-face-cli/SKILL.md +155 -115
  233. package/bundled-skills/hugging-face-community-evals/SKILL.md +14 -7
  234. package/bundled-skills/hugging-face-dataset-viewer/SKILL.md +30 -37
  235. package/bundled-skills/hugging-face-gradio/SKILL.md +14 -7
  236. package/bundled-skills/hugging-face-model-trainer/SKILL.md +36 -10
  237. package/bundled-skills/hugging-face-model-trainer/scripts/convert_to_gguf.py +30 -52
  238. package/bundled-skills/hugging-face-model-trainer/scripts/hf_benchmarks.py +659 -0
  239. package/bundled-skills/hugging-face-paper-publisher/SKILL.md +13 -6
  240. package/bundled-skills/hugging-face-papers/SKILL.md +12 -5
  241. package/bundled-skills/hugging-face-trackio/SKILL.md +11 -5
  242. package/bundled-skills/hugging-face-vision-trainer/SKILL.md +11 -5
  243. package/bundled-skills/huggingface-best/SKILL.md +143 -0
  244. package/bundled-skills/huggingface-local-models/SKILL.md +130 -0
  245. package/bundled-skills/huggingface-local-models/references/hardware.md +38 -0
  246. package/bundled-skills/huggingface-local-models/references/hub-discovery.md +178 -0
  247. package/bundled-skills/huggingface-local-models/references/quantization.md +256 -0
  248. package/bundled-skills/huggingface-lora-space-builder/SKILL.md +409 -0
  249. package/bundled-skills/huggingface-lora-space-builder/references/adapting-to-the-lora.md +113 -0
  250. package/bundled-skills/huggingface-lora-space-builder/references/base-models/krea-2.md +63 -0
  251. package/bundled-skills/huggingface-lora-space-builder/references/base-models/ltx.md +205 -0
  252. package/bundled-skills/huggingface-lora-space-builder/references/base-models/qwen-image.md +144 -0
  253. package/bundled-skills/huggingface-lora-space-builder/references/creative-mode.md +262 -0
  254. package/bundled-skills/huggingface-lora-space-builder/references/tasks.md +124 -0
  255. package/bundled-skills/huggingface-lora-space-builder/references/zerogpu-and-publishing.md +194 -0
  256. package/bundled-skills/huggingface-spaces/SKILL.md +247 -0
  257. package/bundled-skills/huggingface-spaces/references/buckets.md +89 -0
  258. package/bundled-skills/huggingface-spaces/references/debugging.md +234 -0
  259. package/bundled-skills/huggingface-spaces/references/gradio.md +171 -0
  260. package/bundled-skills/huggingface-spaces/references/grants.md +56 -0
  261. package/bundled-skills/huggingface-spaces/references/inference-providers.md +85 -0
  262. package/bundled-skills/huggingface-spaces/references/known-errors.md +232 -0
  263. package/bundled-skills/huggingface-spaces/references/requirements.md +153 -0
  264. package/bundled-skills/huggingface-spaces/references/zerogpu.md +276 -0
  265. package/bundled-skills/huggingface-tool-builder/SKILL.md +137 -0
  266. package/bundled-skills/huggingface-tool-builder/references/baseline_hf_api.py +57 -0
  267. package/bundled-skills/huggingface-tool-builder/references/baseline_hf_api.sh +40 -0
  268. package/bundled-skills/huggingface-tool-builder/references/baseline_hf_api.tsx +57 -0
  269. package/bundled-skills/huggingface-tool-builder/references/find_models_by_paper.sh +230 -0
  270. package/bundled-skills/huggingface-tool-builder/references/hf_enrich_models.sh +96 -0
  271. package/bundled-skills/huggingface-tool-builder/references/hf_model_card_frontmatter.sh +188 -0
  272. package/bundled-skills/huggingface-tool-builder/references/hf_model_papers_auth.sh +171 -0
  273. package/bundled-skills/huggingface-zerogpu/SKILL.md +306 -0
  274. package/bundled-skills/huggingface-zerogpu/references/concurrency.md +79 -0
  275. package/bundled-skills/huggingface-zerogpu/references/cuda-and-deps.md +66 -0
  276. package/bundled-skills/huggingface-zerogpu/references/how-quota-works.md +74 -0
  277. package/bundled-skills/huggingface-zerogpu/references/how-zerogpu-works.md +50 -0
  278. package/bundled-skills/hugo-to-markdown/SKILL.md +201 -0
  279. package/bundled-skills/hugo-to-markdown/agents/openai.yaml +4 -0
  280. package/bundled-skills/hugo-to-markdown/references/conversion-workflow.md +143 -0
  281. package/bundled-skills/hugo-to-markdown/references/front-matter-and-content.md +145 -0
  282. package/bundled-skills/hugo-to-markdown/references/links-assets-and-validation.md +106 -0
  283. package/bundled-skills/hugo-to-markdown/references/shortcodes-and-render-hooks.md +281 -0
  284. package/bundled-skills/hugo-to-markdown/scripts/check_standard_markdown.py +70 -0
  285. package/bundled-skills/hugo-to-markdown/scripts/inventory_hugo_rules.py +188 -0
  286. package/bundled-skills/hyperexecute-skill/SKILL.md +65 -0
  287. package/bundled-skills/idea-refine/SKILL.md +195 -0
  288. package/bundled-skills/idea-refine/examples.md +238 -0
  289. package/bundled-skills/idea-refine/frameworks.md +99 -0
  290. package/bundled-skills/idea-refine/refinement-criteria.md +113 -0
  291. package/bundled-skills/idea-refine/scripts/idea-refine.sh +15 -0
  292. package/bundled-skills/implement/SKILL.md +32 -0
  293. package/bundled-skills/incremental-implementation/SKILL.md +262 -0
  294. package/bundled-skills/jest-skill/SKILL.md +182 -0
  295. package/bundled-skills/junit-5-skill/SKILL.md +236 -0
  296. package/bundled-skills/logic-diff/SKILL.md +50 -0
  297. package/bundled-skills/logic-diff/logic-diff-guide.md +75 -0
  298. package/bundled-skills/logic-explain/SKILL.md +50 -0
  299. package/bundled-skills/logic-explain/logic-explain-guide.md +74 -0
  300. package/bundled-skills/logic-fix-all/SKILL.md +87 -0
  301. package/bundled-skills/logic-fix-all/guide-phases-0-2-consent-scope-health.md +113 -0
  302. package/bundled-skills/logic-fix-all/guide-phases-3-5-review-locate-clarify.md +47 -0
  303. package/bundled-skills/logic-fix-all/guide-phases-6-9-fix-iterate-report.md +143 -0
  304. package/bundled-skills/logic-fix-all/logic-fix-all-guide.md +60 -0
  305. package/bundled-skills/logic-locate/SKILL.md +52 -0
  306. package/bundled-skills/logic-locate/logic-locate-guide.md +85 -0
  307. package/bundled-skills/logic-review/SKILL.md +100 -0
  308. package/bundled-skills/logic-review/logic-review-guide.md +296 -0
  309. package/bundled-skills/longbridge-content/SKILL.md +87 -0
  310. package/bundled-skills/longbridge-fundamentals/SKILL.md +134 -0
  311. package/bundled-skills/longbridge-market-data/SKILL.md +129 -0
  312. package/bundled-skills/loopy/SKILL.md +289 -0
  313. package/bundled-skills/loopy/agents/openai.yaml +4 -0
  314. package/bundled-skills/loopy/references/audit.md +61 -0
  315. package/bundled-skills/loopy/references/debrief.md +43 -0
  316. package/bundled-skills/loopy/references/discover.md +72 -0
  317. package/bundled-skills/loopy/references/publish.md +65 -0
  318. package/bundled-skills/loopy/references/run.md +73 -0
  319. package/bundled-skills/marketing-plan/SKILL.md +283 -0
  320. package/bundled-skills/marketing-plan/evals/evals.json +96 -0
  321. package/bundled-skills/marketing-plan/references/aarrr-framework.md +180 -0
  322. package/bundled-skills/marketing-plan/references/budget-planning.md +168 -0
  323. package/bundled-skills/marketing-plan/references/client-types.md +373 -0
  324. package/bundled-skills/marketing-plan/references/current-state-rubric.md +255 -0
  325. package/bundled-skills/marketing-plan/references/example-quietude.md +972 -0
  326. package/bundled-skills/marketing-plan/references/funding-stage-unlocks.md +230 -0
  327. package/bundled-skills/marketing-plan/references/growth-patterns.md +148 -0
  328. package/bundled-skills/marketing-plan/references/idea-cross-reference.md +265 -0
  329. package/bundled-skills/marketing-plan/references/measurement-framework.md +213 -0
  330. package/bundled-skills/marketing-plan/references/methodology.md +363 -0
  331. package/bundled-skills/marketing-plan/references/ops-stack-mapping.md +197 -0
  332. package/bundled-skills/marketing-plan/references/plan-template.md +494 -0
  333. package/bundled-skills/marketing-plan/references/team-and-agency-model.md +278 -0
  334. package/bundled-skills/monte-carlo-analyze-root-cause/SKILL.md +229 -0
  335. package/bundled-skills/monte-carlo-asset-health/SKILL.md +200 -0
  336. package/bundled-skills/monte-carlo-monitoring-advisor/SKILL.md +317 -0
  337. package/bundled-skills/monte-carlo-performance-diagnosis/SKILL.md +153 -0
  338. package/bundled-skills/monte-carlo-remediation/SKILL.md +359 -0
  339. package/bundled-skills/monte-carlo-storage-cost-analysis/SKILL.md +162 -0
  340. package/bundled-skills/native-data-fetching/SKILL.md +11 -8
  341. package/bundled-skills/native-data-fetching/agents/openai.yaml +4 -0
  342. package/bundled-skills/native-data-fetching/references/expo-router-loaders.md +341 -0
  343. package/bundled-skills/neon-ai-gateway/SKILL.md +237 -0
  344. package/bundled-skills/neon-functions/SKILL.md +465 -0
  345. package/bundled-skills/neon-functions/references/ai-sdk.md +139 -0
  346. package/bundled-skills/neon-functions/references/hono-websockets.md +145 -0
  347. package/bundled-skills/neon-functions/references/mastra-studio.md +132 -0
  348. package/bundled-skills/neon-functions/references/mcp.md +137 -0
  349. package/bundled-skills/neon-functions/references/sentry.md +131 -0
  350. package/bundled-skills/neon-functions/references/sse.md +143 -0
  351. package/bundled-skills/neon-object-storage/SKILL.md +200 -0
  352. package/bundled-skills/neon-postgres/SKILL.md +234 -469
  353. package/bundled-skills/neon-postgres-branches/SKILL.md +292 -0
  354. package/bundled-skills/neon-postgres-egress-optimizer/SKILL.md +256 -0
  355. package/bundled-skills/newman-cicd-integration/SKILL.md +330 -0
  356. package/bundled-skills/observability-and-instrumentation/SKILL.md +216 -0
  357. package/bundled-skills/odw/SKILL.md +57 -0
  358. package/bundled-skills/offers/SKILL.md +168 -0
  359. package/bundled-skills/offers/references/bonus-stacking.md +150 -0
  360. package/bundled-skills/offers/references/examples.md +215 -0
  361. package/bundled-skills/offers/references/guarantee-design.md +172 -0
  362. package/bundled-skills/offers/references/offer-anatomy.md +203 -0
  363. package/bundled-skills/offers/references/offer-formats.md +240 -0
  364. package/bundled-skills/offers/references/scarcity-urgency.md +175 -0
  365. package/bundled-skills/offers/references/value-equation.md +134 -0
  366. package/bundled-skills/onboarding/SKILL.md +235 -0
  367. package/bundled-skills/onboarding/evals/evals.json +92 -0
  368. package/bundled-skills/onboarding/references/experiments.md +258 -0
  369. package/bundled-skills/open-source-marketing/README.md +100 -0
  370. package/bundled-skills/open-source-marketing/SKILL.md +466 -0
  371. package/bundled-skills/openapi-spec-generator/SKILL.md +335 -0
  372. package/bundled-skills/performance-optimization/SKILL.md +363 -0
  373. package/bundled-skills/planning-and-task-breakdown/SKILL.md +240 -0
  374. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/SKILL.md +170 -0
  375. package/bundled-skills/postgresql-cli/SKILL.md +498 -0
  376. package/bundled-skills/postgresql-cli/references/cli-options-and-variables.md +444 -0
  377. package/bundled-skills/postgresql-cli/references/meta-commands-core.md +466 -0
  378. package/bundled-skills/postgresql-cli/references/meta-commands-formatting.md +154 -0
  379. package/bundled-skills/postgresql-cli/references/meta-commands-inspection.md +134 -0
  380. package/bundled-skills/postgresql-cli/references/tips-advanced.md +289 -0
  381. package/bundled-skills/postgresql-cli/references/tips-workflows.md +407 -0
  382. package/bundled-skills/postman-collection-generator/SKILL.md +184 -0
  383. package/bundled-skills/postman-newman-automation/SKILL.md +311 -0
  384. package/bundled-skills/postman-openapi-converter/SKILL.md +174 -0
  385. package/bundled-skills/power-user-cultivation/README.md +78 -0
  386. package/bundled-skills/power-user-cultivation/SKILL.md +598 -0
  387. package/bundled-skills/pricing/SKILL.md +246 -0
  388. package/bundled-skills/pricing/evals/evals.json +90 -0
  389. package/bundled-skills/pricing/references/research-methods.md +152 -0
  390. package/bundled-skills/pricing/references/tier-structure.md +232 -0
  391. package/bundled-skills/privacy-mask/SKILL.md +96 -0
  392. package/bundled-skills/product-marketing/SKILL.md +256 -0
  393. package/bundled-skills/product-marketing/evals/evals.json +85 -0
  394. package/bundled-skills/public-relations/SKILL.md +146 -0
  395. package/bundled-skills/public-relations/references/journalist-pitching.md +368 -0
  396. package/bundled-skills/public-relations/references/media-outlets.md +207 -0
  397. package/bundled-skills/public-relations/references/newsjacking.md +218 -0
  398. package/bundled-skills/public-relations/references/press-platforms.md +188 -0
  399. package/bundled-skills/puppeteer-skill/SKILL.md +143 -0
  400. package/bundled-skills/pytest-skill/SKILL.md +201 -0
  401. package/bundled-skills/rclone-cli/SKILL.md +351 -0
  402. package/bundled-skills/rclone-cli/references/bisync.md +2003 -0
  403. package/bundled-skills/rclone-cli/references/cache.md +726 -0
  404. package/bundled-skills/rclone-cli/references/chunker.md +484 -0
  405. package/bundled-skills/rclone-cli/references/combine.md +187 -0
  406. package/bundled-skills/rclone-cli/references/commands/rclone.md +1169 -0
  407. package/bundled-skills/rclone-cli/references/commands/rclone_about.md +89 -0
  408. package/bundled-skills/rclone-cli/references/commands/rclone_archive.md +49 -0
  409. package/bundled-skills/rclone-cli/references/commands/rclone_archive_create.md +97 -0
  410. package/bundled-skills/rclone-cli/references/commands/rclone_archive_extract.md +83 -0
  411. package/bundled-skills/rclone-cli/references/commands/rclone_archive_list.md +98 -0
  412. package/bundled-skills/rclone-cli/references/commands/rclone_authorize.md +53 -0
  413. package/bundled-skills/rclone-cli/references/commands/rclone_backend.md +82 -0
  414. package/bundled-skills/rclone-cli/references/commands/rclone_bisync.md +160 -0
  415. package/bundled-skills/rclone-cli/references/commands/rclone_cat.md +122 -0
  416. package/bundled-skills/rclone-cli/references/commands/rclone_check.md +134 -0
  417. package/bundled-skills/rclone-cli/references/commands/rclone_checksum.md +120 -0
  418. package/bundled-skills/rclone-cli/references/commands/rclone_cleanup.md +49 -0
  419. package/bundled-skills/rclone-cli/references/commands/rclone_completion.md +40 -0
  420. package/bundled-skills/rclone-cli/references/commands/rclone_completion_bash.md +70 -0
  421. package/bundled-skills/rclone-cli/references/commands/rclone_completion_fish.md +57 -0
  422. package/bundled-skills/rclone-cli/references/commands/rclone_completion_powershell.md +49 -0
  423. package/bundled-skills/rclone-cli/references/commands/rclone_completion_zsh.md +57 -0
  424. package/bundled-skills/rclone-cli/references/commands/rclone_config.md +56 -0
  425. package/bundled-skills/rclone-cli/references/commands/rclone_config_create.md +150 -0
  426. package/bundled-skills/rclone-cli/references/commands/rclone_config_delete.md +33 -0
  427. package/bundled-skills/rclone-cli/references/commands/rclone_config_disconnect.md +40 -0
  428. package/bundled-skills/rclone-cli/references/commands/rclone_config_dump.md +33 -0
  429. package/bundled-skills/rclone-cli/references/commands/rclone_config_edit.md +39 -0
  430. package/bundled-skills/rclone-cli/references/commands/rclone_config_encryption.md +36 -0
  431. package/bundled-skills/rclone-cli/references/commands/rclone_config_encryption_check.md +43 -0
  432. package/bundled-skills/rclone-cli/references/commands/rclone_config_encryption_remove.md +44 -0
  433. package/bundled-skills/rclone-cli/references/commands/rclone_config_encryption_set.md +54 -0
  434. package/bundled-skills/rclone-cli/references/commands/rclone_config_file.md +33 -0
  435. package/bundled-skills/rclone-cli/references/commands/rclone_config_password.md +49 -0
  436. package/bundled-skills/rclone-cli/references/commands/rclone_config_paths.md +33 -0
  437. package/bundled-skills/rclone-cli/references/commands/rclone_config_providers.md +33 -0
  438. package/bundled-skills/rclone-cli/references/commands/rclone_config_reconnect.md +40 -0
  439. package/bundled-skills/rclone-cli/references/commands/rclone_config_redacted.md +45 -0
  440. package/bundled-skills/rclone-cli/references/commands/rclone_config_show.md +33 -0
  441. package/bundled-skills/rclone-cli/references/commands/rclone_config_string.md +57 -0
  442. package/bundled-skills/rclone-cli/references/commands/rclone_config_touch.md +33 -0
  443. package/bundled-skills/rclone-cli/references/commands/rclone_config_update.md +150 -0
  444. package/bundled-skills/rclone-cli/references/commands/rclone_config_userinfo.md +38 -0
  445. package/bundled-skills/rclone-cli/references/commands/rclone_convmv.md +440 -0
  446. package/bundled-skills/rclone-cli/references/commands/rclone_copy.md +258 -0
  447. package/bundled-skills/rclone-cli/references/commands/rclone_copyto.md +219 -0
  448. package/bundled-skills/rclone-cli/references/commands/rclone_copyurl.md +91 -0
  449. package/bundled-skills/rclone-cli/references/commands/rclone_cryptcheck.md +141 -0
  450. package/bundled-skills/rclone-cli/references/commands/rclone_cryptdecode.md +51 -0
  451. package/bundled-skills/rclone-cli/references/commands/rclone_dedupe.md +166 -0
  452. package/bundled-skills/rclone-cli/references/commands/rclone_delete.md +117 -0
  453. package/bundled-skills/rclone-cli/references/commands/rclone_deletefile.md +50 -0
  454. package/bundled-skills/rclone-cli/references/commands/rclone_gendocs.md +39 -0
  455. package/bundled-skills/rclone-cli/references/commands/rclone_gitannex.md +113 -0
  456. package/bundled-skills/rclone-cli/references/commands/rclone_hashsum.md +120 -0
  457. package/bundled-skills/rclone-cli/references/commands/rclone_link.md +60 -0
  458. package/bundled-skills/rclone-cli/references/commands/rclone_listremotes.md +55 -0
  459. package/bundled-skills/rclone-cli/references/commands/rclone_ls.md +114 -0
  460. package/bundled-skills/rclone-cli/references/commands/rclone_lsd.md +127 -0
  461. package/bundled-skills/rclone-cli/references/commands/rclone_lsf.md +241 -0
  462. package/bundled-skills/rclone-cli/references/commands/rclone_lsjson.md +195 -0
  463. package/bundled-skills/rclone-cli/references/commands/rclone_lsl.md +115 -0
  464. package/bundled-skills/rclone-cli/references/commands/rclone_md5sum.md +96 -0
  465. package/bundled-skills/rclone-cli/references/commands/rclone_mkdir.md +43 -0
  466. package/bundled-skills/rclone-cli/references/commands/rclone_mount.md +1105 -0
  467. package/bundled-skills/rclone-cli/references/commands/rclone_move.md +223 -0
  468. package/bundled-skills/rclone-cli/references/commands/rclone_moveto.md +218 -0
  469. package/bundled-skills/rclone-cli/references/commands/rclone_ncdu.md +140 -0
  470. package/bundled-skills/rclone-cli/references/commands/rclone_nfsmount.md +1111 -0
  471. package/bundled-skills/rclone-cli/references/commands/rclone_obscure.md +60 -0
  472. package/bundled-skills/rclone-cli/references/commands/rclone_purge.md +58 -0
  473. package/bundled-skills/rclone-cli/references/commands/rclone_rc.md +111 -0
  474. package/bundled-skills/rclone-cli/references/commands/rclone_rcat.md +79 -0
  475. package/bundled-skills/rclone-cli/references/commands/rclone_rcd.md +219 -0
  476. package/bundled-skills/rclone-cli/references/commands/rclone_rmdir.md +52 -0
  477. package/bundled-skills/rclone-cli/references/commands/rclone_rmdirs.md +66 -0
  478. package/bundled-skills/rclone-cli/references/commands/rclone_selfupdate.md +91 -0
  479. package/bundled-skills/rclone-cli/references/commands/rclone_serve.md +61 -0
  480. package/bundled-skills/rclone-cli/references/commands/rclone_serve_dlna.md +619 -0
  481. package/bundled-skills/rclone-cli/references/commands/rclone_serve_docker.md +653 -0
  482. package/bundled-skills/rclone-cli/references/commands/rclone_serve_ftp.md +698 -0
  483. package/bundled-skills/rclone-cli/references/commands/rclone_serve_http.md +837 -0
  484. package/bundled-skills/rclone-cli/references/commands/rclone_serve_nfs.md +670 -0
  485. package/bundled-skills/rclone-cli/references/commands/rclone_serve_restic.md +246 -0
  486. package/bundled-skills/rclone-cli/references/commands/rclone_serve_s3.md +867 -0
  487. package/bundled-skills/rclone-cli/references/commands/rclone_serve_sftp.md +745 -0
  488. package/bundled-skills/rclone-cli/references/commands/rclone_serve_webdav.md +896 -0
  489. package/bundled-skills/rclone-cli/references/commands/rclone_settier.md +63 -0
  490. package/bundled-skills/rclone-cli/references/commands/rclone_sha1sum.md +99 -0
  491. package/bundled-skills/rclone-cli/references/commands/rclone_size.md +94 -0
  492. package/bundled-skills/rclone-cli/references/commands/rclone_sync.md +252 -0
  493. package/bundled-skills/rclone-cli/references/commands/rclone_test.md +51 -0
  494. package/bundled-skills/rclone-cli/references/commands/rclone_test_changenotify.md +34 -0
  495. package/bundled-skills/rclone-cli/references/commands/rclone_test_histogram.md +41 -0
  496. package/bundled-skills/rclone-cli/references/commands/rclone_test_info.md +51 -0
  497. package/bundled-skills/rclone-cli/references/commands/rclone_test_makefile.md +39 -0
  498. package/bundled-skills/rclone-cli/references/commands/rclone_test_makefiles.md +47 -0
  499. package/bundled-skills/rclone-cli/references/commands/rclone_test_memory.md +33 -0
  500. package/bundled-skills/rclone-cli/references/commands/rclone_test_speed.md +66 -0
  501. package/bundled-skills/rclone-cli/references/commands/rclone_touch.md +110 -0
  502. package/bundled-skills/rclone-cli/references/commands/rclone_tree.md +121 -0
  503. package/bundled-skills/rclone-cli/references/commands/rclone_version.md +83 -0
  504. package/bundled-skills/rclone-cli/references/crypt.md +844 -0
  505. package/bundled-skills/rclone-cli/references/docker.md +615 -0
  506. package/bundled-skills/rclone-cli/references/faq.md +364 -0
  507. package/bundled-skills/rclone-cli/references/filtering.md +991 -0
  508. package/bundled-skills/rclone-cli/references/flags.md +1221 -0
  509. package/bundled-skills/rclone-cli/references/hasher.md +383 -0
  510. package/bundled-skills/rclone-cli/references/install.md +686 -0
  511. package/bundled-skills/rclone-cli/references/overview.md +620 -0
  512. package/bundled-skills/rclone-cli/references/providers/alias.md +141 -0
  513. package/bundled-skills/rclone-cli/references/providers/archive.md +287 -0
  514. package/bundled-skills/rclone-cli/references/providers/azureblob.md +1140 -0
  515. package/bundled-skills/rclone-cli/references/providers/azurefiles.md +834 -0
  516. package/bundled-skills/rclone-cli/references/providers/b2.md +879 -0
  517. package/bundled-skills/rclone-cli/references/providers/box.md +573 -0
  518. package/bundled-skills/rclone-cli/references/providers/cloudinary.md +259 -0
  519. package/bundled-skills/rclone-cli/references/providers/compress.md +222 -0
  520. package/bundled-skills/rclone-cli/references/providers/drime.md +319 -0
  521. package/bundled-skills/rclone-cli/references/providers/drive.md +2032 -0
  522. package/bundled-skills/rclone-cli/references/providers/dropbox.md +661 -0
  523. package/bundled-skills/rclone-cli/references/providers/fichier.md +230 -0
  524. package/bundled-skills/rclone-cli/references/providers/filefabric.md +298 -0
  525. package/bundled-skills/rclone-cli/references/providers/filelu.md +256 -0
  526. package/bundled-skills/rclone-cli/references/providers/filen.md +243 -0
  527. package/bundled-skills/rclone-cli/references/providers/filescom.md +209 -0
  528. package/bundled-skills/rclone-cli/references/providers/ftp.md +621 -0
  529. package/bundled-skills/rclone-cli/references/providers/gofile.md +274 -0
  530. package/bundled-skills/rclone-cli/references/providers/googlecloudstorage.md +846 -0
  531. package/bundled-skills/rclone-cli/references/providers/googlephotos.md +676 -0
  532. package/bundled-skills/rclone-cli/references/providers/hdfs.md +263 -0
  533. package/bundled-skills/rclone-cli/references/providers/hidrive.md +487 -0
  534. package/bundled-skills/rclone-cli/references/providers/http.md +323 -0
  535. package/bundled-skills/rclone-cli/references/providers/iclouddrive.md +212 -0
  536. package/bundled-skills/rclone-cli/references/providers/internetarchive.md +355 -0
  537. package/bundled-skills/rclone-cli/references/providers/internxt.md +189 -0
  538. package/bundled-skills/rclone-cli/references/providers/jottacloud.md +604 -0
  539. package/bundled-skills/rclone-cli/references/providers/koofr.md +395 -0
  540. package/bundled-skills/rclone-cli/references/providers/linkbox.md +117 -0
  541. package/bundled-skills/rclone-cli/references/providers/local.md +749 -0
  542. package/bundled-skills/rclone-cli/references/providers/mailru.md +470 -0
  543. package/bundled-skills/rclone-cli/references/providers/mega.md +361 -0
  544. package/bundled-skills/rclone-cli/references/providers/memory.md +109 -0
  545. package/bundled-skills/rclone-cli/references/providers/netstorage.md +371 -0
  546. package/bundled-skills/rclone-cli/references/providers/onedrive.md +1322 -0
  547. package/bundled-skills/rclone-cli/references/providers/opendrive.md +222 -0
  548. package/bundled-skills/rclone-cli/references/providers/oracleobjectstorage/_index.md +932 -0
  549. package/bundled-skills/rclone-cli/references/providers/oracleobjectstorage/tutorial_mount.md +503 -0
  550. package/bundled-skills/rclone-cli/references/providers/pcloud.md +373 -0
  551. package/bundled-skills/rclone-cli/references/providers/pikpak.md +373 -0
  552. package/bundled-skills/rclone-cli/references/providers/pixeldrain.md +182 -0
  553. package/bundled-skills/rclone-cli/references/providers/premiumizeme.md +253 -0
  554. package/bundled-skills/rclone-cli/references/providers/protondrive.md +397 -0
  555. package/bundled-skills/rclone-cli/references/providers/putio.md +246 -0
  556. package/bundled-skills/rclone-cli/references/providers/qingstor.md +346 -0
  557. package/bundled-skills/rclone-cli/references/providers/quatrix.md +295 -0
  558. package/bundled-skills/rclone-cli/references/providers/s3.md +9687 -0
  559. package/bundled-skills/rclone-cli/references/providers/seafile.md +432 -0
  560. package/bundled-skills/rclone-cli/references/providers/sftp.md +1277 -0
  561. package/bundled-skills/rclone-cli/references/providers/shade.md +267 -0
  562. package/bundled-skills/rclone-cli/references/providers/sharefile.md +357 -0
  563. package/bundled-skills/rclone-cli/references/providers/sia.md +223 -0
  564. package/bundled-skills/rclone-cli/references/providers/smb.md +309 -0
  565. package/bundled-skills/rclone-cli/references/providers/storj.md +503 -0
  566. package/bundled-skills/rclone-cli/references/providers/sugarsync.md +305 -0
  567. package/bundled-skills/rclone-cli/references/providers/swift.md +744 -0
  568. package/bundled-skills/rclone-cli/references/providers/ulozto.md +283 -0
  569. package/bundled-skills/rclone-cli/references/providers/webdav.md +565 -0
  570. package/bundled-skills/rclone-cli/references/providers/yandex.md +283 -0
  571. package/bundled-skills/rclone-cli/references/providers/zoho.md +305 -0
  572. package/bundled-skills/rclone-cli/references/rc.md +2725 -0
  573. package/bundled-skills/rclone-cli/references/union.md +336 -0
  574. package/bundled-skills/rclone-cli/references/usage.md +3555 -0
  575. package/bundled-skills/rclone-cli/scripts/install.sh +204 -0
  576. package/bundled-skills/redis-cli/SKILL.md +392 -0
  577. package/bundled-skills/redis-cli/references/advanced-features.md +338 -0
  578. package/bundled-skills/redis-cli/references/connection-and-options.md +258 -0
  579. package/bundled-skills/redis-cli/references/data-query-commands.md +417 -0
  580. package/bundled-skills/redis-cli/references/inspection-and-monitoring.md +309 -0
  581. package/bundled-skills/redis-cli/references/key-management.md +252 -0
  582. package/bundled-skills/redis-cli/references/module-data-types.md +429 -0
  583. package/bundled-skills/redis-cli/references/server-administration.md +366 -0
  584. package/bundled-skills/repo-maintainer/SKILL.md +480 -0
  585. package/bundled-skills/resolving-merge-conflicts/SKILL.md +32 -0
  586. package/bundled-skills/review-and-simplify-changes/SKILL.md +202 -0
  587. package/bundled-skills/review-swarm/SKILL.md +185 -0
  588. package/bundled-skills/review-swarm/agents/openai.yaml +4 -0
  589. package/bundled-skills/riffkit/SKILL.md +122 -0
  590. package/bundled-skills/robot-framework-skill/SKILL.md +153 -0
  591. package/bundled-skills/sdk-dx/README.md +39 -0
  592. package/bundled-skills/sdk-dx/SKILL.md +541 -0
  593. package/bundled-skills/security-and-hardening/SKILL.md +474 -0
  594. package/bundled-skills/selenium-skill/SKILL.md +258 -0
  595. package/bundled-skills/shipping-and-launch/SKILL.md +323 -0
  596. package/bundled-skills/smartui-skill/SKILL.md +149 -0
  597. package/bundled-skills/source-driven-development/SKILL.md +207 -0
  598. package/bundled-skills/spec-driven-development/SKILL.md +217 -0
  599. package/bundled-skills/styleseed-design-review/SKILL.md +126 -0
  600. package/bundled-skills/supabase/CHANGELOG.md +35 -0
  601. package/bundled-skills/supabase/SKILL.md +149 -0
  602. package/bundled-skills/supabase/assets/feedback-issue-template.md +17 -0
  603. package/bundled-skills/supabase/references/skill-feedback.md +17 -0
  604. package/bundled-skills/supabase-postgres-best-practices/CHANGELOG.md +29 -0
  605. package/bundled-skills/supabase-postgres-best-practices/SKILL.md +74 -0
  606. package/bundled-skills/supabase-postgres-best-practices/references/_contributing.md +170 -0
  607. package/bundled-skills/supabase-postgres-best-practices/references/_sections.md +39 -0
  608. package/bundled-skills/supabase-postgres-best-practices/references/_template.md +34 -0
  609. package/bundled-skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
  610. package/bundled-skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
  611. package/bundled-skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
  612. package/bundled-skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
  613. package/bundled-skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
  614. package/bundled-skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
  615. package/bundled-skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
  616. package/bundled-skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
  617. package/bundled-skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
  618. package/bundled-skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
  619. package/bundled-skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
  620. package/bundled-skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
  621. package/bundled-skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
  622. package/bundled-skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
  623. package/bundled-skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
  624. package/bundled-skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
  625. package/bundled-skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
  626. package/bundled-skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
  627. package/bundled-skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
  628. package/bundled-skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
  629. package/bundled-skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
  630. package/bundled-skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
  631. package/bundled-skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
  632. package/bundled-skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
  633. package/bundled-skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
  634. package/bundled-skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
  635. package/bundled-skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
  636. package/bundled-skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
  637. package/bundled-skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
  638. package/bundled-skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
  639. package/bundled-skills/supabase-postgres-best-practices/references/security-rls-performance.md +63 -0
  640. package/bundled-skills/swiftui-expert-skill/SKILL.md +175 -242
  641. package/bundled-skills/swiftui-expert-skill/references/accessibility-patterns.md +215 -0
  642. package/bundled-skills/swiftui-expert-skill/references/animation-advanced.md +428 -0
  643. package/bundled-skills/swiftui-expert-skill/references/animation-basics.md +284 -0
  644. package/bundled-skills/swiftui-expert-skill/references/animation-transitions.md +326 -0
  645. package/bundled-skills/swiftui-expert-skill/references/charts-accessibility.md +135 -0
  646. package/bundled-skills/swiftui-expert-skill/references/charts.md +602 -0
  647. package/bundled-skills/swiftui-expert-skill/references/focus-patterns.md +299 -0
  648. package/bundled-skills/swiftui-expert-skill/references/image-optimization.md +203 -0
  649. package/bundled-skills/swiftui-expert-skill/references/latest-apis.md +528 -0
  650. package/bundled-skills/swiftui-expert-skill/references/layout-best-practices.md +266 -0
  651. package/bundled-skills/swiftui-expert-skill/references/liquid-glass.md +423 -0
  652. package/bundled-skills/swiftui-expert-skill/references/list-patterns.md +467 -0
  653. package/bundled-skills/swiftui-expert-skill/references/localization.md +194 -0
  654. package/bundled-skills/swiftui-expert-skill/references/macos-scenes.md +318 -0
  655. package/bundled-skills/swiftui-expert-skill/references/macos-views.md +357 -0
  656. package/bundled-skills/swiftui-expert-skill/references/macos-window-styling.md +303 -0
  657. package/bundled-skills/swiftui-expert-skill/references/performance-patterns.md +417 -0
  658. package/bundled-skills/swiftui-expert-skill/references/previews.md +313 -0
  659. package/bundled-skills/swiftui-expert-skill/references/scroll-patterns.md +293 -0
  660. package/bundled-skills/swiftui-expert-skill/references/sheet-navigation-patterns.md +363 -0
  661. package/bundled-skills/swiftui-expert-skill/references/soft-deprecation.md +39 -0
  662. package/bundled-skills/swiftui-expert-skill/references/state-management.md +492 -0
  663. package/bundled-skills/swiftui-expert-skill/references/text-patterns.md +34 -0
  664. package/bundled-skills/swiftui-expert-skill/references/trace-analysis.md +295 -0
  665. package/bundled-skills/swiftui-expert-skill/references/trace-recording.md +134 -0
  666. package/bundled-skills/swiftui-expert-skill/references/view-structure.md +854 -0
  667. package/bundled-skills/swiftui-expert-skill/scripts/analyze_trace.py +301 -0
  668. package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/__init__.py +1 -0
  669. package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/causes.py +187 -0
  670. package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/correlate.py +179 -0
  671. package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/events.py +291 -0
  672. package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/hangs.py +108 -0
  673. package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/hitches.py +145 -0
  674. package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/summary.py +243 -0
  675. package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/swiftui.py +195 -0
  676. package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/time_profiler.py +135 -0
  677. package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/xctrace.py +117 -0
  678. package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/xml_utils.py +224 -0
  679. package/bundled-skills/swiftui-expert-skill/scripts/record_trace.py +252 -0
  680. package/bundled-skills/technical-tutorials/README.md +90 -0
  681. package/bundled-skills/technical-tutorials/SKILL.md +581 -0
  682. package/bundled-skills/test-framework-migration-skill/SKILL.md +122 -0
  683. package/bundled-skills/testng-skill/SKILL.md +163 -0
  684. package/bundled-skills/train-sentence-transformers/SKILL.md +118 -0
  685. package/bundled-skills/train-sentence-transformers/references/base_model_selection.md +79 -0
  686. package/bundled-skills/train-sentence-transformers/references/dataset_formats.md +128 -0
  687. package/bundled-skills/train-sentence-transformers/references/evaluators_cross_encoder.md +116 -0
  688. package/bundled-skills/train-sentence-transformers/references/evaluators_sentence_transformer.md +151 -0
  689. package/bundled-skills/train-sentence-transformers/references/evaluators_sparse_encoder.md +121 -0
  690. package/bundled-skills/train-sentence-transformers/references/hardware_guide.md +105 -0
  691. package/bundled-skills/train-sentence-transformers/references/hf_jobs_execution.md +173 -0
  692. package/bundled-skills/train-sentence-transformers/references/losses_cross_encoder.md +137 -0
  693. package/bundled-skills/train-sentence-transformers/references/losses_sentence_transformer.md +246 -0
  694. package/bundled-skills/train-sentence-transformers/references/losses_sparse_encoder.md +106 -0
  695. package/bundled-skills/train-sentence-transformers/references/model_architectures.md +178 -0
  696. package/bundled-skills/train-sentence-transformers/references/prompts_and_instructions.md +160 -0
  697. package/bundled-skills/train-sentence-transformers/references/training_args.md +269 -0
  698. package/bundled-skills/train-sentence-transformers/references/troubleshooting.md +225 -0
  699. package/bundled-skills/train-sentence-transformers/scripts/mine_hard_negatives.py +199 -0
  700. package/bundled-skills/train-sentence-transformers/scripts/train_cross_encoder_distillation_example.py +254 -0
  701. package/bundled-skills/train-sentence-transformers/scripts/train_cross_encoder_example.py +253 -0
  702. package/bundled-skills/train-sentence-transformers/scripts/train_cross_encoder_listwise_example.py +282 -0
  703. package/bundled-skills/train-sentence-transformers/scripts/train_sentence_transformer_distillation_example.py +303 -0
  704. package/bundled-skills/train-sentence-transformers/scripts/train_sentence_transformer_example.py +227 -0
  705. package/bundled-skills/train-sentence-transformers/scripts/train_sentence_transformer_make_multilingual_example.py +308 -0
  706. package/bundled-skills/train-sentence-transformers/scripts/train_sentence_transformer_matryoshka_example.py +212 -0
  707. package/bundled-skills/train-sentence-transformers/scripts/train_sentence_transformer_multi_dataset_example.py +258 -0
  708. package/bundled-skills/train-sentence-transformers/scripts/train_sentence_transformer_static_embedding_example.py +273 -0
  709. package/bundled-skills/train-sentence-transformers/scripts/train_sentence_transformer_with_lora_example.py +275 -0
  710. package/bundled-skills/train-sentence-transformers/scripts/train_sparse_encoder_distillation_example.py +262 -0
  711. package/bundled-skills/train-sentence-transformers/scripts/train_sparse_encoder_example.py +237 -0
  712. package/bundled-skills/transformers-js/SKILL.md +83 -29
  713. package/bundled-skills/transformers-js/references/CONFIGURATION.md +55 -7
  714. package/bundled-skills/transformers-js/references/EXAMPLES.md +98 -83
  715. package/bundled-skills/transformers-js/references/MODEL_REGISTRY.md +197 -0
  716. package/bundled-skills/transformers-js/references/PIPELINE_OPTIONS.md +31 -19
  717. package/bundled-skills/transformers-js/references/TEXT_GENERATION.md +18 -18
  718. package/bundled-skills/trl-training/SKILL.md +327 -0
  719. package/bundled-skills/tune-monitor/SKILL.md +268 -0
  720. package/bundled-skills/ui-a11y/SKILL.md +76 -68
  721. package/bundled-skills/ui-component/SKILL.md +54 -82
  722. package/bundled-skills/ui-lint/SKILL.md +111 -0
  723. package/bundled-skills/ui-motion/SKILL.md +181 -0
  724. package/bundled-skills/ui-page/SKILL.md +80 -90
  725. package/bundled-skills/ui-pattern/SKILL.md +50 -68
  726. package/bundled-skills/ui-review/SKILL.md +95 -77
  727. package/bundled-skills/ui-score/SKILL.md +145 -0
  728. package/bundled-skills/ui-setup/SKILL.md +196 -88
  729. package/bundled-skills/ui-skills-root/SKILL.md +72 -0
  730. package/bundled-skills/ui-tokens/SKILL.md +44 -52
  731. package/bundled-skills/ui-update/SKILL.md +167 -0
  732. package/bundled-skills/unslop-commit/SKILL.md +113 -0
  733. package/bundled-skills/unslop-file/SKILL.md +157 -0
  734. package/bundled-skills/unslop-review/SKILL.md +102 -0
  735. package/bundled-skills/update-swiftui-apis/SKILL.md +120 -0
  736. package/bundled-skills/update-swiftui-apis/references/scan-manifest.md +230 -0
  737. package/bundled-skills/upgrading-expo/SKILL.md +107 -82
  738. package/bundled-skills/upgrading-expo/agents/openai.yaml +4 -0
  739. package/bundled-skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
  740. package/bundled-skills/upgrading-expo/references/expo-av-to-video.md +160 -0
  741. package/bundled-skills/upgrading-expo/references/native-tabs.md +124 -0
  742. package/bundled-skills/upgrading-expo/references/new-architecture.md +79 -0
  743. package/bundled-skills/upgrading-expo/references/react-19.md +79 -0
  744. package/bundled-skills/upgrading-expo/references/react-compiler.md +59 -0
  745. package/bundled-skills/upgrading-expo/references/react-navigation-to-expo-router.md +61 -0
  746. package/bundled-skills/usage-based-pricing/README.md +40 -0
  747. package/bundled-skills/usage-based-pricing/SKILL.md +547 -0
  748. package/bundled-skills/use-dom/SKILL.md +428 -0
  749. package/bundled-skills/use-dom/agents/openai.yaml +4 -0
  750. package/bundled-skills/ux-audit/SKILL.md +112 -44
  751. package/bundled-skills/ux-copy/SKILL.md +105 -73
  752. package/bundled-skills/ux-feedback/SKILL.md +106 -58
  753. package/bundled-skills/ux-flow/SKILL.md +51 -50
  754. package/bundled-skills/vitest-skill/SKILL.md +165 -0
  755. package/bundled-skills/weaviate/scripts/weaviate_conn.py +16 -6
  756. package/bundled-skills/webdriverio-skill/SKILL.md +157 -0
  757. package/bundled-skills/wjttc-builder/SKILL.md +355 -0
  758. package/bundled-skills/wjttc-tester/SKILL.md +190 -0
  759. package/package.json +1 -1
  760. package/skills_index.json +4320 -132
@@ -0,0 +1,205 @@
1
+ # LTX reference
2
+
3
+ The LTX family covers `LTX-Video` (0.9.x series), `LTX-2`, and `LTX-2.3`. All target text-to-video, image-to-video, and video-to-video.
4
+
5
+ Diffusers support varies across versions:
6
+
7
+ | Base model series | Diffusers support | LoRA loading via diffusers? |
8
+ |---------------------------|------------------------------------------|-----------------------------|
9
+ | `Lightricks/LTX-Video` (0.9.x) | Yes — `LTXPipeline`, `LTXImageToVideoPipeline`, `LTXConditionPipeline` | Yes |
10
+ | `Lightricks/LTX-2` | Yes — `LTX2Pipeline` from `diffusers.pipelines.ltx2` | Yes (recent diffusers) |
11
+ | `Lightricks/LTX-2.3` | Partial — diffusers support is still limited overall, so the original `Lightricks/LTX-2.3` repo can still be used via the native path. Diffusers-converted variants exist at `dg845/LTX-2.3-Diffusers` and `dg845/LTX-2.3-Distilled-Diffusers`, supporting regular LoRAs via the standard pipelines, IC LoRAs via `LTX2InContextPipeline`, and HDR IC-LoRAs via `LTX2HDRPipeline` (PR #13572, merged 2026-05-15; needs `git+https://github.com/huggingface/diffusers`) | Yes on the diffusers variants — standard `load_lora_weights` + `set_adapters`. Native path still required for some configurations. |
12
+
13
+ When in doubt about LTX-2.3, check the LoRA's model card for an example snippet. If it imports from `ltx_video` or a native module rather than `diffusers`, use the native path.
14
+
15
+ ## Pipelines (diffusers path)
16
+
17
+ > **Before using this table, verify against the base model's own card on the Hub.** This table is best-effort and can lag a recent release (LTX moves fast). The diffusers snippet on the base model's Hub page is source of truth. See `SKILL.md` Phase 2 for the procedure.
18
+
19
+ | Task | Pipeline | Pretrained ID |
20
+ |-------------------------|-----------------------------------|------------------------------------------------------|
21
+ | Text-to-video | `LTXPipeline` | `Lightricks/LTX-Video` |
22
+ | Image-to-video | `LTXImageToVideoPipeline` | `Lightricks/LTX-Video` |
23
+ | Video-to-video / keyframes | `LTXConditionPipeline` | `Lightricks/LTX-Video-0.9.5` or later |
24
+ | Spatial upscale | `LTXLatentUpsamplePipeline` | `Lightricks/ltxv-spatial-upscaler-0.9.8` |
25
+ | LTX-2 T2V/I2V | `LTX2Pipeline` | `Lightricks/LTX-2` |
26
+ | LTX-2.3 in-context (IC LoRAs) | `LTX2InContextPipeline` | `dg845/LTX-2.3-Distilled-Diffusers` (preferred for demos; non-distilled `dg845/LTX-2.3-Diffusers` also works) |
27
+
28
+ `LTXConditionPipeline` is the workhorse for V2V — it takes a `LTXVideoCondition` (or list of them) plus optional first-frame image, and produces a video conditioned on the input.
29
+
30
+ ## Required dependencies
31
+
32
+ LTX pipelines need extras beyond the standard diffusers/transformers/peft set, because video output requires file-format support:
33
+
34
+ - **`imageio`** and **`imageio-ffmpeg`** — required by `diffusers.utils.export_to_video`. Without them, video export fails at runtime even though model loading succeeds. Always include both.
35
+ - **`sentencepiece`** — required by the T5 text encoder some LTX variants use. Include if you see tokenizer-related ImportErrors at startup.
36
+ - **`av`** — `pyav`, useful when reading input videos in non-trivial formats. Include for V2V pipelines that take video input via `load_video`.
37
+
38
+ For LTX-2 and LTX-2.3, the latest diffusers from git is often required since pipeline classes (`LTX2Pipeline`, conditioning APIs) land before pip releases:
39
+
40
+ ```
41
+ git+https://github.com/huggingface/diffusers
42
+ ```
43
+
44
+ For LTX-2.3 native path:
45
+
46
+ ```
47
+ git+https://github.com/Lightricks/LTX-Video.git
48
+ ```
49
+
50
+ If `from_pretrained` fails with class-not-found errors for a recent LTX variant, switch to git diffusers.
51
+
52
+ ## Default load (T2V)
53
+
54
+ ```python
55
+ import torch
56
+ from diffusers import LTXPipeline
57
+ from diffusers.utils import export_to_video
58
+
59
+ pipe = LTXPipeline.from_pretrained(
60
+ "Lightricks/LTX-Video",
61
+ torch_dtype=torch.bfloat16,
62
+ )
63
+ pipe.to("cuda")
64
+ pipe.load_lora_weights("user/my-ltx-lora")
65
+ ```
66
+
67
+ ## Default load (V2V via LTXConditionPipeline)
68
+
69
+ ```python
70
+ import torch
71
+ from diffusers import LTXConditionPipeline
72
+ from diffusers.pipelines.ltx.pipeline_ltx_condition import LTXVideoCondition
73
+ from diffusers.utils import load_video, export_to_video
74
+
75
+ pipe = LTXConditionPipeline.from_pretrained(
76
+ "Lightricks/LTX-Video-0.9.5",
77
+ torch_dtype=torch.bfloat16,
78
+ )
79
+ pipe.to("cuda")
80
+ pipe.load_lora_weights("user/my-ltx-vlora")
81
+
82
+ video = load_video("input.mp4")
83
+ condition = LTXVideoCondition(video=video, frame_index=0)
84
+
85
+ frames = pipe(
86
+ conditions=[condition],
87
+ prompt="...",
88
+ negative_prompt="worst quality, jittery, blurry",
89
+ width=768, height=512,
90
+ num_frames=121,
91
+ num_inference_steps=50,
92
+ ).frames[0]
93
+ export_to_video(frames, "out.mp4", fps=24)
94
+ ```
95
+
96
+ ## LTX-2 (diffusers path)
97
+
98
+ ```python
99
+ from diffusers.pipelines.ltx2 import LTX2Pipeline
100
+ pipe = LTX2Pipeline.from_pretrained("Lightricks/LTX-2", torch_dtype=torch.bfloat16)
101
+ ```
102
+
103
+ LTX-2 supports a two-stage pipeline (base + latent upsample) for production quality. For a demo, the single-stage pipeline is usually sufficient and faster.
104
+
105
+ **Don't default two-stage on for IC-LoRAs — check the card.** The common LTX-2.3 two-stage recipe runs stage 2 as an x2 latent-upsample + refine **with the IC-LoRA disabled** (`disable_lora()`), re-rendering on the bare base — which re-degrades exactly the LoRA-conditioned detail (text, identity). Whether two-stage is appropriate is per-LoRA, per the card: e.g. the *In/Out-painting* card explicitly says "both tasks use a two-stage pipeline," whereas the *Ingredients* card recommends a single-pass 30-step recipe and never mentions two stages. Single-stage is the safer demo default unless the card calls for two-stage.
106
+
107
+ ## Inference defaults
108
+
109
+ - **Resolution**: typically multiples of 32. Common sizes: 768×512, 1216×704, 704×480.
110
+ - **Frame count**: typically `8k+1` (e.g. 121, 161, 257). Compute from `duration_seconds * fps` and round.
111
+ - **fps**: 24 by default; some LoRAs are trained at different rates (16, 30) — check the model card.
112
+ - **`num_inference_steps`**: 30–50 for non-distilled. Distilled checkpoints (look for "distilled" in the name) often run at 8–12.
113
+ - **`negative_prompt`**: LTX is sensitive to negative prompts. A good default: `"worst quality, inconsistent motion, blurry, jittery, distorted"`.
114
+ - **Distilled IC-LoRA — disable audio guidance too, not just `guidance_scale`.** `LTX2InContextPipeline` computes `do_classifier_free_guidance = guidance_scale > 1 OR audio_guidance_scale > 1`, and **`audio_guidance_scale` defaults to `7.0`**. So `guidance_scale=1.0` is not enough — CFG stays on via audio (and `stg_scale` defaults on), which doubles/mis-batches the forward against the in-context reference tokens (wrong recipe, sometimes a runtime error). For a distilled IC-LoRA pass all four: `pipe(..., guidance_scale=1.0, stg_scale=0.0, audio_guidance_scale=1.0, audio_stg_scale=0.0)`.
115
+
116
+ ## Frame-count helper
117
+
118
+ ```python
119
+ def num_frames_for_duration(seconds, fps=24, base=8):
120
+ raw = seconds * fps
121
+ return ((int(raw) - 1) // base) * base + 1
122
+ ```
123
+
124
+ ## Native pipeline path (LTX-2.3 fallback)
125
+
126
+ The native repo is a fallback when the diffusers path doesn't work, or for specific conditionings that diffusers may not support yet. Try `LTX2InContextPipeline` on the diffusers path first (see the IC-LoRAs section above).
127
+
128
+ **The native repo depends on the model generation** — pick by the LoRA's base model (and what its card's snippet imports):
129
+
130
+ | Base model | Native repo | Package(s) / import | Pipeline classes |
131
+ |---|---|---|---|
132
+ | `LTX-Video` (0.9.x) | `github.com/Lightricks/LTX-Video` | `ltx_video` | `from ltx_video.pipelines import LTXPipeline` |
133
+ | `LTX-2`, `LTX-2.3` | `github.com/Lightricks/LTX-2` | `ltx-core` + `ltx-pipelines` (editable) | `ltx_pipelines.ic_lora.ICLoraPipeline`, `TI2VidOneStagePipeline`, … |
134
+
135
+ For the 0.9.x series the pattern looks like:
136
+
137
+ ```bash
138
+ # in requirements.txt
139
+ git+https://github.com/Lightricks/LTX-Video.git
140
+ ```
141
+
142
+ ```python
143
+ from ltx_video.pipelines import LTXPipeline as NativeLTXPipeline
144
+ # ... model loading per the native repo's README
145
+ ```
146
+
147
+ The native path doesn't use `load_lora_weights`. Instead, LoRAs are usually wired in at pipeline construction time, often via a list of LoRA configurations or by pointing at a fused checkpoint.
148
+
149
+ When the LoRA's model card has a Python snippet using the native repo, copy its construction pattern verbatim. The native API changes more often than diffusers' does, so don't paraphrase.
150
+
151
+ ### LTX-2.x native path on ZeroGPU — gotchas
152
+
153
+ For `LTX-2` / `LTX-2.3` (the `ltx-core` + `ltx-pipelines` repo), clone + `pip install -e packages/ltx-core packages/ltx-pipelines` at runtime in `app.py` and pin a commit. Three things bite on ZeroGPU:
154
+
155
+ - **Native loader bypasses ZeroGPU virtualization → "No CUDA GPUs available" at startup.** The native safetensors loader does `safe_open(path, device="cuda")` and copies host→device inside safetensors' own C++ (`cudaMemcpy`), **bypassing `torch.Tensor.to`** — the call ZeroGPU patches to virtualize + pack module-scope weights. Nothing packs and module-scope placement raises *"No CUDA GPUs are available."* Fix: monkeypatch the loader to open on CPU then move with `.to`:
156
+ ```python
157
+ with safetensors.safe_open(shard, framework="pt", device="cpu") as f:
158
+ value = f.get_tensor(name).to(device=device) # torch path → ZeroGPU-virtualisable
159
+ ```
160
+ Also: patch attention to **SDPA** (FA3 crashes on Blackwell ZeroGPU), and **never call `torch.cuda.*` / `get_device_capability()` at module scope** (it poisons virtualization).
161
+ - **Native two-stage pins two 22B transformers → offload-disk overflow.** `ICLoraPipeline` builds two independent `ModelLedger`s (stage-1 with the LoRA, stage-2 without), each loading its **own** full transformer. The CLI loads them sequentially, but ZeroGPU pins all weights at module scope, so enabling stage 2 pins **both** (~143G) and overflows the offload disk (`OSError: [Errno 28] No space left on device`, ~96G cap). For a demo: pin stage 1, then have stage 2 **reuse stage 1's pinned modules** (`for n in [...]: setattr(s2, n, getattr(s1, n))`) so only one transformer is resident (~71G).
162
+ - **`ICLoraPipeline` is distilled-only.** Per the LTX-2 `ltx-pipelines` guide, IC-LoRA inference runs in distilled-only mode (fixed 8-step sigmas, no `num_inference_steps`/`guidance_scale`/`negative_prompt`); the docs do not describe non-distilled IC-LoRA or IC-LoRA + CFG/STG (guidance lives only on full-model pipelines like `TI2VidOneStagePipeline`, and in two-stage is stage-1-only). So if a card recommends a *non-distilled* recipe (e.g. 30 steps + guidance + STG on a `…-dev` base), there is no stock IC-LoRA pipeline for it — use the supported distilled `ICLoraPipeline` and note the recipe difference, or fall back to the diffusers `LTX2InContextPipeline` (which exposes steps/guidance).
163
+
164
+ ## IC-LoRAs (in-context conditioning)
165
+
166
+ LTX IC-LoRAs condition the model on a reference video alongside a first-frame image. The diffusers path uses `LTX2InContextPipeline` with standard `load_lora_weights` + `set_adapters`.
167
+
168
+ Common flavors:
169
+
170
+ - **Pose / depth / canny IC-LoRAs**: the reference video must be preprocessed into the control signal (pose skeletons, depth maps, edge maps) before being passed as conditioning. Passing a raw video with appearance information leaks color/style through.
171
+ - **Outpaint IC-LoRAs**: the input video is padded with black margins to a target aspect ratio and passed as conditioning. The model fills the black regions.
172
+ - **Frame interpolation / extension IC-LoRAs**: the input is a sparse set of keyframes; the model fills in between or extends.
173
+ - **Audio-driven lip-sync IC-LoRAs**: take a reference video and a new audio track; the model re-syncs lip motion to match the new audio. UI needs both a video input and an audio input (e.g. for video translation, voiceover replacement, multilingual dubbing).
174
+
175
+ Each of these implies different preprocessing in the demo and different UI shape (an aspect-ratio picker for outpaint, a pose preview for pose-control, a frame-pair input for keyframe extension). Read `references/adapting-to-the-lora.md` and shape the UI to the specific IC-LoRA.
176
+
177
+ ## Quantization gotcha (LTX-2.3, native path only)
178
+
179
+ On the native path, some LTX-2.3 IC-LoRAs ship with FP8 quantization policies that fuse LoRA deltas into transformer weights at model-load time, using a Triton CUDA kernel. ZeroGPU has no real CUDA at module-load time (only the emulation layer) — this can crash the Space at startup. The diffusers path via `LTX2InContextPipeline` does not hit this: LoRAs are loaded through PEFT as separate adapter weights and applied at runtime rather than fused into the base transformer at load.
180
+
181
+ Two workarounds when the user hits this on the native path:
182
+
183
+ - **Skip quantization for the LoRA-fusion stage.** LTX-2.3 has a two-stage pipeline; apply quantization only to the second (non-LoRA) stage. Set `stage_1_quantization=None`.
184
+ - **Pre-fuse the LoRA into a standalone checkpoint.** Download base + LoRA, fuse on a dev GPU, push the fused checkpoint to the Hub under the user's namespace, and have the Space load the fused checkpoint with no LoRA.
185
+
186
+ The second option is preferable when the user plans to demo the same LoRA repeatedly — Space startup is much faster.
187
+
188
+ ## ZeroGPU duration guidance for LTX
189
+
190
+ - Short T2V (3 seconds, 24fps, distilled): 60–90 seconds.
191
+ - Standard T2V (5 seconds, 50 steps): 120–180 seconds.
192
+ - I2V: similar to T2V at the same duration.
193
+ - V2V with preprocessing (pose extraction, etc.): add 10–30 seconds for preprocessing overhead. Set duration to 180+.
194
+ - LTX-2.3 two-stage: 240–360 seconds.
195
+
196
+ Set `@spaces.GPU(duration=...)` to comfortably exceed expected generation time.
197
+
198
+ ## Things to watch
199
+
200
+ - **Latest pipelines often need git diffusers.** Pin to `git+https://github.com/huggingface/diffusers` in `requirements.txt` for any LTX variant released in the last few weeks.
201
+ - **`git+diffusers` is a moving target — verify LTX2 output quality.** Bare `@main` inherits whatever's there. The LTX2 text connector carried a token-reversal regression (PR #13564) that scrambled prompt tokens/registers — degrading prompt adherence and fine detail (e.g. garbled on-screen text), worst on short prompts — until **PR #13931 (merged 2026-06-19)** fixed it. If LTX2 output looks weak or garbled, confirm the installed diffusers commit is **at or past #13931**, and prefer pinning to a known-good commit (`git+https://github.com/huggingface/diffusers@<sha>`) over bare `@main` for reproducibility.
202
+ - **Don't `torch.compile`.** LTX is fast enough on ZeroGPU without it; compile is incompatible anyway.
203
+ - **`enable_vae_tiling()` for higher resolutions.** LTX VAE memory grows with resolution; enable tiling for outputs above 768px on either axis.
204
+ - **Negative prompts matter more than for image models.** Don't ship with an empty negative_prompt unless the LoRA's model card says so.
205
+ - **Frame-rate mismatch can produce glitches.** If the LoRA was trained at 24 fps and the demo passes 30, motion looks wrong. Use the LoRA's recommended fps.
@@ -0,0 +1,144 @@
1
+ # Qwen-Image and Qwen-Image-Edit reference
2
+
3
+ The Qwen-Image family is fully supported in `diffusers`. Both base and edit variants accept LoRAs via the standard `load_lora_weights` interface.
4
+
5
+ ## Pipelines
6
+
7
+ > **Before using this table, verify against the base model's own card on the Hub.** This table is best-effort and can lag a recent release. The diffusers snippet on the base model's Hub page is source of truth for which pipeline class to import. See `SKILL.md` Phase 2 for the procedure.
8
+
9
+ | Base model | Pipeline class | Task |
10
+ |---------------------------------------|-------------------------------|-------------------------------------|
11
+ | `Qwen/Qwen-Image` | `QwenImagePipeline` | Text-to-image |
12
+ | `Qwen/Qwen-Image-Edit` | `QwenImageEditPipeline` | Image editing (instruction-driven) |
13
+ | `Qwen/Qwen-Image-Edit-2509` | `QwenImageEditPlusPipeline` | Image editing, multi-image input |
14
+ | `Qwen/Qwen-Image-Edit-2511` | `QwenImageEditPlusPipeline` | Image editing, latest variant |
15
+
16
+ The 2509 and 2511 variants use a *different* pipeline class than the original `QwenImageEditPipeline` — they take a list of input images and have different default parameters. Don't assume that variants in the same family share a pipeline class. Loading a 2511-trained LoRA onto `QwenImageEditPipeline` produces broken output; the failure is silent (no exception), so verifying against the base model card is the only way to catch it.
17
+
18
+ The 2511 variant integrates several popular community LoRAs into the base, which can mean a LoRA trained against earlier Qwen-Image-Edit may behave subtly differently when loaded against 2511; if the LoRA's model card specifies which Edit variant it was trained on, match it.
19
+
20
+ ## Required dependencies
21
+
22
+ Qwen-Image and Qwen-Image-Edit pipelines need extras beyond the standard diffusers/transformers/peft set, because the text encoder is `Qwen2_5_VLForConditionalGeneration` (Qwen 2.5-VL):
23
+
24
+ - **`torchvision`** — required by `Qwen2VLVideoProcessor`, which the text encoder's processor pulls in transitively. Missing this is a startup-time `ImportError` ("Qwen2VLVideoProcessor requires the Torchvision library"). Always include in `requirements.txt` for any Qwen-Image Space.
25
+ - **`sentencepiece`** — required by some Qwen tokenizer paths. Include if you see tokenizer-related ImportErrors at startup.
26
+
27
+ The 2511 variant in particular often requires the latest `diffusers` from git, since `QwenImageEditPlusPipeline` and 2511-specific fixes land before pip releases:
28
+
29
+ ```
30
+ git+https://github.com/huggingface/diffusers
31
+ ```
32
+
33
+ If `from_pretrained("Qwen/Qwen-Image-Edit-2511", ...)` fails with a class-not-found or attribute error, switch the requirement to git.
34
+
35
+ ## Default load (T2I)
36
+
37
+ ```python
38
+ import torch
39
+ from diffusers import QwenImagePipeline
40
+
41
+ pipe = QwenImagePipeline.from_pretrained(
42
+ "Qwen/Qwen-Image",
43
+ torch_dtype=torch.bfloat16,
44
+ )
45
+ pipe.to("cuda")
46
+ pipe.load_lora_weights("user/my-qwen-lora")
47
+ ```
48
+
49
+ `pytorch_lora_weights.safetensors` is the conventional filename. If the repo has a different name, pass `weight_name="..."`.
50
+
51
+ For multiple adapters or when you want to control LoRA scale at inference time, use `set_adapters`:
52
+
53
+ ```python
54
+ pipe.load_lora_weights("user/my-qwen-lora", adapter_name="mylora")
55
+ pipe.set_adapters(["mylora"], adapter_weights=[0.9])
56
+ ```
57
+
58
+ ## Default load (Image Edit)
59
+
60
+ For original `Qwen-Image-Edit`:
61
+
62
+ ```python
63
+ import torch
64
+ from diffusers import QwenImageEditPipeline
65
+
66
+ pipe = QwenImageEditPipeline.from_pretrained(
67
+ "Qwen/Qwen-Image-Edit",
68
+ torch_dtype=torch.bfloat16,
69
+ )
70
+ pipe.to("cuda")
71
+ pipe.load_lora_weights("user/my-qwen-edit-lora")
72
+ ```
73
+
74
+ For `Qwen-Image-Edit-2509` and `Qwen-Image-Edit-2511`:
75
+
76
+ ```python
77
+ import torch
78
+ from diffusers import QwenImageEditPlusPipeline
79
+
80
+ pipe = QwenImageEditPlusPipeline.from_pretrained(
81
+ "Qwen/Qwen-Image-Edit-2511", # or 2509
82
+ torch_dtype=torch.bfloat16,
83
+ )
84
+ pipe.to("cuda")
85
+ pipe.load_lora_weights("user/my-qwen-edit-lora")
86
+ ```
87
+
88
+ `QwenImageEditPlusPipeline` accepts `image=<PIL>` or `image=[<PIL>, <PIL>, ...]` for multi-image edits. `QwenImageEditPipeline` accepts a single image. Default parameters differ slightly between the two — see "Inference defaults" below.
89
+
90
+ ## Inference defaults
91
+
92
+ For non-distilled Qwen-Image:
93
+ - `num_inference_steps`: 50 by default; the LoRA's model card may recommend lower.
94
+ - `true_cfg_scale`: typical 4.0.
95
+ - `width`/`height`: multiples of 16, ideally 1024 or 1328 along the long axis.
96
+
97
+ For Qwen-Image-Edit (original):
98
+ - `num_inference_steps`: 30–50 typical, often less for distilled variants.
99
+ - `true_cfg_scale`: 4.0 typical.
100
+ - Input image gets internally resized; passing a reasonable resolution (1024px on the long side) is fine.
101
+
102
+ For Qwen-Image-Edit-2509 / 2511 (`QwenImageEditPlusPipeline`):
103
+ - `num_inference_steps`: 40 typical for 2511; 50 for 2509.
104
+ - `true_cfg_scale`: 4.0.
105
+ - `guidance_scale`: 1.0 (the new pipeline uses `true_cfg_scale` as the active CFG; standard `guidance_scale` is kept at 1.0).
106
+ - Input is a list of one or more PIL images.
107
+
108
+ For Lightning / few-step LoRAs (e.g. `lightx2v/Qwen-Image-Lightning-*`):
109
+ - `num_inference_steps`: 4 or 8 (read the LoRA's model card — they ship 4-step and 8-step variants).
110
+ - `true_cfg_scale`: usually 1.0 (CFG disabled).
111
+ - Often comes with a custom scheduler config — see the lightx2v README for the exact `FlowMatchEulerDiscreteScheduler` config to use.
112
+
113
+ ## Resolution buckets
114
+
115
+ Qwen-Image uses 16-pixel-aligned resolutions. When the user picks an aspect ratio, compute `width` and `height` as multiples of 16. A helper:
116
+
117
+ ```python
118
+ def round_to_bucket(w, h, multiple=16):
119
+ return (w // multiple) * multiple, (h // multiple) * multiple
120
+ ```
121
+
122
+ For image-edit pipelines, resize the input image to the nearest bucket while preserving aspect; don't crop.
123
+
124
+ ## ZeroGPU duration guidance
125
+
126
+ - Standard 50-step Qwen-Image T2I at 1024×1024: 60–90 seconds.
127
+ - 4-step Lightning Qwen-Image: 15–25 seconds.
128
+ - Qwen-Image-Edit 30 steps: 60–90 seconds.
129
+
130
+ Set `@spaces.GPU(duration=...)` accordingly.
131
+
132
+ ## Common LoRA patterns on Qwen-Image
133
+
134
+ - **Style LoRAs (T2I).** Standard load. Trigger word usually present. UI: prompt + aspect ratio.
135
+ - **Subject / character LoRAs (T2I).** Standard load. Trigger word almost always present. UI: prompt with the trigger pre-prepended in code, possibly an example prompt highlighting the trigger.
136
+ - **Lighting / aesthetic LoRAs (T2I).** Often paired with a recommended LoRA scale ≠ 1.0 — check the model card.
137
+ - **Edit LoRAs (image-to-image, on Qwen-Image-Edit).** Specific instructions baked in. The LoRA might require a specific instruction phrasing — match the pattern from the model card. UI: input image + instruction textbox.
138
+ - **Lightning-distilled LoRAs.** Lock step count and CFG to recommended values; hide the sliders.
139
+
140
+ ## Things to watch
141
+
142
+ - **VAE memory.** For 1328×1328 outputs, consider `pipe.enable_vae_tiling()` and `pipe.enable_vae_slicing()` after loading. Keep them off for smaller resolutions to avoid quality loss.
143
+ - **Don't compile the transformer on ZeroGPU.** `torch.compile` won't work; the speedup options on ZeroGPU are limited to reducing steps or using FP8-distilled variants.
144
+ - **Negative prompts work** but defaults are often empty string. Don't expose a negative prompt in the UI unless the LoRA's behavior actually benefits from it.
@@ -0,0 +1,262 @@
1
+ # Creative mode: custom HTML/JS UIs in Gradio
2
+
3
+ When a LoRA's natural input shape doesn't fit any standard Gradio component or Hub custom component, you can drop down to plain HTML/CSS/JS inside a Gradio app. This file is about *how* — the Gradio primitives that make it work, and the discipline that keeps it from turning into a tangled mess.
4
+
5
+ This is the third rung of the component ladder (see `tasks.md` → "Picking components"):
6
+
7
+ 1. **Stock Gradio components.** First choice. Almost always enough for T2I and a lot of I2I.
8
+ 2. **Hub custom components.** `gradio_image_annotation`, `gradio_imageslider`, `gradio_modal`, `gradio_rangeslider`, etc. No JS, just a `pip install` and an import.
9
+ 3. **Creative mode (this file).** Custom HTML/JS, when the user's input shape is something none of the above expresses well — point sets, trajectories, brush strokes, region selections with metadata, timeline scrubbing, 3D rotation gizmos, color picking on regions, drag-resize handles on media, keyframed inputs, anything where the user manipulates *a thing on top of media*.
10
+
11
+ Skipping rung 2 is a common mistake. If a Hub custom component fits, use it — `gradio_image_annotation` already covers bbox drawing, label assignment, and basic editing without a single line of JS.
12
+
13
+ But rung 2 has its own discipline (see "Hub custom components are fragile" below). The most common failure mode for these Spaces is **the custom component silently fails to render**: the Python side imports fine, the page loads, the API smoke-test in Phase 6 of `SKILL.md` passes — and yet the widget just isn't on the page. A user opening the Space sees the surrounding layout (buttons, accordions, outputs) but no upload zone, no annotator, nothing. If you don't actually look at the rendered page in a browser, you'll ship a broken Space and not know it.
14
+
15
+ ## Hub custom components are fragile
16
+
17
+ Treat any `gradio_*` package from the Hub as load-bearing-and-untested-against-your-Gradio-version until you've seen it render. The most common failure modes:
18
+
19
+ - **Version mismatch silent breakage.** A Hub component built against Gradio N may load (because its declared `gradio<N+2,>=N` range covers your `sdk_version`) but mount to an empty DOM node on a slightly newer Gradio. No traceback in the build logs. No Python error. The component simply doesn't appear, and the rest of the column flows up around the gap. This is what produces "Generate button at the top of an empty left column" Spaces.
20
+ - **Stale releases.** Many Hub custom components were last published 1–2 years ago. The Gradio frontend has changed since. Check the package's release date against the Gradio version you're targeting; if there's a multi-major-version gap, expect breakage.
21
+ - **Mismatched param shapes.** The component's Python signature accepts a parameter the Svelte side no longer reads. Your `disable_edit_boxes=True` does nothing, or worse, throws on the JS side and the whole component fails to mount.
22
+
23
+ Discipline before committing to a Hub component:
24
+
25
+ 1. **Check the package's last release date** (PyPI page or `pip index versions <pkg>`). If it's older than the Gradio release in your `sdk_version`, treat it as suspect.
26
+ 2. **Smoke-test the component in isolation** — a five-line Gradio app with just that one component, locally, *before* integrating it into the full app. If it renders, fine. If it's missing or blank, you've caught the breakage cheaply.
27
+ 3. **When a Hub component fails to render, don't iterate on its kwargs.** Drop to either (a) split stock components (e.g. `gr.Image` for upload + a sibling widget for the box coords) or (b) rung 3 (custom HTML/JS via `gr.HTML`). Twiddling `disable_edit_boxes` / `use_default_label` / `sources` is not going to bring a Svelte component back from a JS-side mount failure.
28
+
29
+ The same discipline applies to less obviously "custom" components if they were added recently — `gr.ImageSlider`, for example, can render unexpectedly when paired with a custom component on the same page.
30
+
31
+ ## When creative mode is the right call
32
+
33
+ Reach for it when the user's *natural* input is structurally outside what stock components express:
34
+
35
+ - **Spatial input on top of media.** Drawing arrows on a frame, painting strokes on an image, dropping points along a trajectory, selecting irregular regions, drawing curves.
36
+ - **Multi-shape annotation.** Source-and-destination box pairs, multiple labeled regions, ordered sequences of points/boxes that are semantically distinct.
37
+ - **Continuous-with-snapping controls.** 3D rotation gizmos, dial/wheel controls, timeline scrubbers — anything where a slider would technically work but feel wrong.
38
+ - **Composite controls bound together.** A canvas plus a color picker plus a brush-size dial that all feed the same structured input, where binding three separate components and reasoning about their joint state is uglier than rolling one widget.
39
+ - **Live preview that depends on multiple inputs.** Something the user wants to see *immediately* as they manipulate, where a server roundtrip per change is too slow.
40
+
41
+ If the input is "a number," "a string," or "an image," you don't need this. Don't build a custom canvas because it would look cool — build it because the LoRA's input shape demands it.
42
+
43
+ ## The Gradio primitives
44
+
45
+ Before reading the patterns below, it's worth re-checking the current Gradio docs for anything that landed recently:
46
+
47
+ - `gr.HTML` — https://www.gradio.app/docs/gradio/html
48
+ - Custom components — https://www.gradio.app/guides/custom-components-in-five-minutes
49
+ - `Blocks.launch(head=, css=)` — https://www.gradio.app/docs/gradio/blocks#blocks-launch
50
+
51
+ WebFetch these if you're unsure about a signature. The custom-HTML surface area evolves and lagging on it produces Spaces that "work" in stale ways.
52
+
53
+ The primitives that creative mode is built from:
54
+
55
+ ### `gr.HTML` for arbitrary markup
56
+
57
+ Drop any HTML into the page. The block becomes a regular Gradio component, but its content is whatever you write. You're responsible for everything inside it: layout, styling, interactivity.
58
+
59
+ ```python
60
+ gr.HTML("""
61
+ <div id="my-widget" style="...">
62
+ <canvas id="my-canvas" width="512" height="512"></canvas>
63
+ <div id="my-status"></div>
64
+ </div>
65
+ """)
66
+ ```
67
+
68
+ ### `demo.launch(head=..., css=...)`
69
+
70
+ Inject `<script>` and `<style>` tags into the page `<head>`. This is how you load external JS libraries (Three.js, p5, fabric, anime.js, …) or define page-wide CSS that needs to be in `<head>` rather than inline.
71
+
72
+ ```python
73
+ head = '<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>'
74
+ css = '.fillable {max-width: 1200px !important}'
75
+ demo.launch(head=head, css=css)
76
+ ```
77
+
78
+ Use the highest-quality CDN you can (cdnjs, jsdelivr, unpkg). Pin the version (`/three.js/r128/`, not `/three.js/latest/`). Loading from the LoRA author's personal server is a recipe for the Space breaking when their server moves.
79
+
80
+ ### `elem_id` and `elem_classes` for addressing
81
+
82
+ Every Gradio component accepts `elem_id="..."` and `elem_classes=[...]`. JS uses these to find the rendered DOM nodes:
83
+
84
+ ```python
85
+ prompt_box = gr.Textbox(elem_id="my-prompt", elem_classes=["hidden-input"])
86
+ ```
87
+
88
+ ```javascript
89
+ const promptBox = document.getElementById("my-prompt");
90
+ // Note: the Gradio component wraps an <input> or <textarea>;
91
+ // you usually want the inner element:
92
+ const inner = promptBox.querySelector("input, textarea");
93
+ ```
94
+
95
+ ### Two ways JS pushes state into Python
96
+
97
+ This is the part that trips people up. Pick whichever fits your case and stick with it for the whole widget — mixing them in one app is confusing.
98
+
99
+ **Approach A — Hidden Gradio input + DOM event dispatch.** Define a hidden `gr.Textbox` (or `gr.JSON`, `gr.Number`, etc.). From JS, set its inner `<input>`/`<textarea>` value and dispatch synthetic `input` and `change` events so Gradio's reactivity fires.
100
+
101
+ ```python
102
+ state_json = gr.Textbox(value="{}", elem_id="state-json", visible=False)
103
+ ```
104
+
105
+ ```javascript
106
+ function setGradioValue(elemId, value) {
107
+ const container = document.getElementById(elemId);
108
+ if (!container) return;
109
+ const el = container.querySelector("input, textarea");
110
+ if (!el) return;
111
+ const proto = el.tagName === "TEXTAREA"
112
+ ? HTMLTextAreaElement.prototype
113
+ : HTMLInputElement.prototype;
114
+ const setter = Object.getOwnPropertyDescriptor(proto, "value").set;
115
+ setter.call(el, value);
116
+ el.dispatchEvent(new Event("input", { bubbles: true }));
117
+ el.dispatchEvent(new Event("change", { bubbles: true }));
118
+ }
119
+
120
+ setGradioValue("state-json", JSON.stringify(myState));
121
+ ```
122
+
123
+ The native setter dance (`Object.getOwnPropertyDescriptor(...).set.call(el, value)`) is necessary because React intercepts plain `el.value = ...` assignments and they won't trigger a re-render. The DOM event dispatch is what makes Gradio see the change.
124
+
125
+ This approach works in any Gradio version, with any component type. Downsides: lots of glue, fragile to DOM structure changes, easy to write race conditions.
126
+
127
+ **Approach B — `gr.HTML` subclass with `html_template`/`js_on_load`.** Newer Gradio supports subclassing `gr.HTML` and providing custom props plus a `js_on_load` script. The script gets a `props` object with custom values and a `trigger()` function for emitting events back to Python. State binding is value-based (Gradio reads the `value` prop just like any other component).
128
+
129
+ ```python
130
+ class PointPicker(gr.HTML):
131
+ def __init__(self, value=None, image_url=None, **kwargs):
132
+ super().__init__(
133
+ value=value or {"points": []},
134
+ html_template="<canvas id='pp-canvas' width='512' height='512'></canvas>",
135
+ js_on_load="""
136
+ const canvas = document.getElementById('pp-canvas');
137
+ canvas.addEventListener('click', (e) => {
138
+ const rect = canvas.getBoundingClientRect();
139
+ const x = (e.clientX - rect.left) / rect.width;
140
+ const y = (e.clientY - rect.top) / rect.height;
141
+ props.value = {points: [...(props.value?.points || []), {x, y}]};
142
+ trigger('change', props.value);
143
+ });
144
+ """,
145
+ image_url=image_url,
146
+ **kwargs,
147
+ )
148
+ ```
149
+
150
+ Cleaner, value-based, no hidden inputs. Downsides: requires a Gradio version recent enough to support the subclass shape, and the JS lives inside a Python string, which IDEs don't lint.
151
+
152
+ **Picking between A and B:** if you're starting fresh and on current Gradio, prefer B — the binding semantics are saner. Reach for A when you need to integrate with already-existing Gradio components (sliders that should mirror the canvas state, prompt boxes the canvas writes into) or when the UI shell is large enough that putting it inside a `gr.HTML` subclass is awkward.
153
+
154
+ ### Two ways Python pushes state into JS
155
+
156
+ - **For B (subclass):** return `gr.update(prop=value)` from an event handler. The widget's polling loop sees the prop change and reacts.
157
+ - **For A (hidden input):** write to a hidden Gradio Textbox from your event handler. JS polls the Textbox value (or hooks into Gradio's mutation observer) and reacts.
158
+
159
+ Either way, expect a small polling interval (50–200ms is typical). Don't poll faster — it will dominate CPU on weaker machines.
160
+
161
+ ### `js=` on event handlers
162
+
163
+ For tiny JS-only transforms (e.g. "scroll to result on click"), event handlers accept a `js=` arg that runs in the browser without a server roundtrip:
164
+
165
+ ```python
166
+ btn.click(fn=infer, inputs=[...], outputs=[...], js="() => { window.scrollTo(0, 0); }")
167
+ ```
168
+
169
+ Useful for UI polish (scroll, focus, show/hide loaders), not for state management.
170
+
171
+ ## The communication contract
172
+
173
+ The single most important discipline in creative mode: **define the JSON shape that flows between JS and Python, and treat it as the API.**
174
+
175
+ Write it down at the top of `app.py` as a comment, even one line. Pick names that survive translation between camelCase JS and snake_case Python (or commit to one and convert at the boundary):
176
+
177
+ ```python
178
+ # State shape on the JS↔Python wire:
179
+ # {
180
+ # "src": {"x1": float, "y1": float, "x2": float, "y2": float} | null,
181
+ # "dst": {"x1": float, "y1": float, "x2": float, "y2": float} | null,
182
+ # "label": string | null
183
+ # }
184
+ ```
185
+
186
+ Once it's written down, both sides have a target to conform to and you'll catch shape drift early.
187
+
188
+ Common shape archetypes — none of these are required, just illustrative:
189
+
190
+ - **Point set:** `{"points": [{"x": 0.3, "y": 0.4}, ...]}`
191
+ - **Stroke set:** `{"strokes": [{"color": "#ff0", "size": 12, "points": [...]}, ...]}`
192
+ - **Regions:** `{"regions": [{"label": "subject", "bbox": {...}}, ...]}`
193
+ - **Transform:** `{"azimuth": 45, "elevation": 0, "distance": 1.0}`
194
+ - **Trajectory with time:** `{"keyframes": [{"t": 0.0, "x": ...}, {"t": 0.5, ...}]}`
195
+
196
+ All coordinates normalized to `[0, 1]` is almost always the right call — it survives image resizing without rescaling math.
197
+
198
+ ## External libraries
199
+
200
+ Use what helps. Stay light when you can.
201
+
202
+ - **Pure canvas + DOM** is enough for: drawing rectangles/points/lines, brush strokes, drag-and-drop handles, image overlays.
203
+ - **SVG** for: vector overlays, especially when the marks need to scale crisply or be styled with CSS.
204
+ - **Three.js** for: 3D rotation gizmos, depth visualizations, anything where you need WebGL rendering of a small scene. Pulled in via `head=` script tag.
205
+ - **fabric.js / paper.js / konva** for: complex shape-on-canvas interactions when raw canvas is getting ugly. Worth it once you've added more than ~200 lines of canvas glue.
206
+ - **p5.js** for: rapid prototyping of generative-art-style canvases. Heavier than necessary for production.
207
+
208
+ When in doubt, raw canvas. Pulling in fabric for a single rectangle is overkill; pulling in three.js because you wanted "fancier sliders" is a smell.
209
+
210
+ ## Pitfalls
211
+
212
+ These bite repeatedly. Read before writing.
213
+
214
+ - **Silent mount failure of Hub custom components.** Covered in detail above. Worth restating because it's the failure mode that the API smoke-test cannot catch: the component imports, the page loads, and the widget is just absent from the DOM. Always verify in a browser; never trust "the build went green" as proof a Hub custom component renders.
215
+
216
+ - **Init race with Gradio mount.** The `js_on_load` (B) or a top-level `<script>` injected via `head` may run before Gradio has rendered the DOM nodes you're trying to hook into. Guard with a short `setTimeout` or wait for the element to exist:
217
+ ```javascript
218
+ function init() {
219
+ const el = document.getElementById("my-widget");
220
+ if (!el) { setTimeout(init, 50); return; }
221
+ // ... do work
222
+ }
223
+ init();
224
+ ```
225
+
226
+ - **Double init.** If the user navigates between tabs or Gradio re-renders, your init can fire twice. Stash a flag: `if (window.__myWidgetInited) return; window.__myWidgetInited = true;`.
227
+
228
+ - **Base64 image transfer cost.** Sending a full-resolution image as a base64 string through a hidden Textbox is fine for previews but punishingly slow for 4K images. Downscale on the JS side before stuffing into state, or pass the image through a real `gr.Image` component and only send the *interaction state* (boxes, points) through the hidden channel.
229
+
230
+ - **File inputs don't roundtrip through hidden Textboxes.** A hidden `gr.File` won't accept arbitrary JS-set values. If the user uploads via a custom `<input type="file">`, you have two options: (a) read the file in JS, base64-encode, and write to a hidden Textbox; (b) wire the custom file input to programmatically click a real `gr.File` (`document.querySelector("#real-file input").click()` is brittle but works).
231
+
232
+ - **Polling cadence.** 100ms is a reasonable default; 50ms feels snappy but burns CPU on weaker machines; 500ms feels laggy. Don't poll inside `requestAnimationFrame` for state sync — that's 60Hz and overkill.
233
+
234
+ - **Mobile / touch.** If the widget lives in a Space people will open on their phones, handle `touchstart`/`touchmove`/`touchend` alongside mouse events. The two-event-system thing is annoying but unavoidable.
235
+
236
+ - **ZeroGPU duration when payloads grow.** If the custom UI lets users submit large state (many points, big strokes, multiple boxes), the server-side processing time can grow with input size. Re-check `@spaces.GPU(duration=...)` against worst-case payloads.
237
+
238
+ - **Custom run buttons.** If you build your own "Run" button in HTML and have it trigger a real Gradio button via `.click()`, make sure state-sync (write to hidden inputs) happens *before* the click, with enough delay for events to propagate (`setTimeout(() => realBtn.click(), 50)` is the usual fix).
239
+
240
+ - **CSS isolation.** Spaces inject their own CSS. If your widget styles get clobbered, increase specificity (`#my-widget .foo` instead of `.foo`) or use `!important` sparingly. Don't fight it with inline styles for everything — that gets unreadable fast.
241
+
242
+ ## Smoke-test caveat — applies to rung 2 AND rung 3
243
+
244
+ `gradio info` / `gradio predict` (Phase 6 of `SKILL.md`) only exercise the Python endpoint. They tell you nothing about what actually renders. For any Space that uses a Hub custom component (rung 2) or custom HTML/JS (rung 3), the Python side can be perfectly correct *and* the user can see a broken UI.
245
+
246
+ The two distinct failure modes:
247
+
248
+ - **Rung 2 silent mount failure.** Hub custom component imports cleanly, gets a slot in the Gradio config, and just doesn't appear in the rendered DOM. You see the components around it but the widget itself is gone — leaving e.g. a Generate button at the top of an otherwise empty column. No error anywhere. See "Hub custom components are fragile" above.
249
+ - **Rung 3 broken JS.** Server-side green, but `js_on_load` errored, or a CDN script failed to load, or your event handlers never bound. The widget mounts but doesn't do anything when clicked.
250
+
251
+ After the API smoke-test in Phase 6 passes, **open the Space URL in a browser and verify both that every component is visible and that one full interaction (upload → click Generate → see result) works** before sharing. This is not optional for these Spaces — it's the only check that catches the failure modes above.
252
+
253
+ If the user is in an environment where you can't drive a browser yourself, ask them to open the Space URL and confirm the upload zone is visible and accepts an image before declaring the Space done. The cost of asking is one extra message; the cost of skipping is shipping a Space that looks empty.
254
+
255
+ ## Real-world examples
256
+
257
+ These two Spaces use the patterns above for very different LoRAs. They're useful as concrete proof the patterns work, not as templates to copy:
258
+
259
+ - **3D camera control via Three.js** (Approach B, `gr.HTML` subclass): https://huggingface.co/spaces/multimodalart/qwen-image-multiple-angles-3d-camera
260
+ - **Bounding-box drag/resize via canvas** (Approach A, hidden inputs + custom Run button): https://huggingface.co/spaces/linoyts/FLUX.2-klein-Move
261
+
262
+ A short look at each is worth it before designing a new widget — they show what "production polish" feels like in this register (snap-to-nearest animations, status overlays, cursor changes on hover, mobile-touch handling). But your widget will look different, because your LoRA wants different inputs.