@vodailoc/kilo-kit-mcp 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (570) hide show
  1. package/.mcp/kilo-kit.codex-windows.toml +5 -0
  2. package/LICENSE +190 -190
  3. package/QUICKSTART.md +265 -255
  4. package/README.md +290 -266
  5. package/mcp/README.md +29 -5
  6. package/mcp/dist/server.js +1 -1
  7. package/mcp/package.json +1 -2
  8. package/package.json +3 -2
  9. package/skills/README.md +647 -647
  10. package/skills/SKILLS_INDEX.md +139 -139
  11. package/skills/ai-media/ai-multimodal/.env.example +97 -97
  12. package/skills/ai-media/ai-multimodal/SKILL.md +357 -357
  13. package/skills/ai-media/ai-multimodal/references/audio-processing.md +373 -373
  14. package/skills/ai-media/ai-multimodal/references/image-generation.md +558 -558
  15. package/skills/ai-media/ai-multimodal/references/video-analysis.md +502 -502
  16. package/skills/ai-media/ai-multimodal/references/vision-understanding.md +483 -483
  17. package/skills/ai-media/ai-multimodal/scripts/document_converter.py +395 -395
  18. package/skills/ai-media/ai-multimodal/scripts/gemini_batch_process.py +480 -480
  19. package/skills/ai-media/ai-multimodal/scripts/media_optimizer.py +506 -506
  20. package/skills/ai-media/ai-multimodal/scripts/requirements.txt +26 -26
  21. package/skills/ai-media/ai-multimodal/scripts/tests/requirements.txt +20 -20
  22. package/skills/ai-media/ai-multimodal/scripts/tests/test_document_converter.py +299 -299
  23. package/skills/ai-media/ai-multimodal/scripts/tests/test_gemini_batch_process.py +362 -362
  24. package/skills/ai-media/ai-multimodal/scripts/tests/test_media_optimizer.py +373 -373
  25. package/skills/ai-media/media-processing/SKILL.md +358 -358
  26. package/skills/ai-media/media-processing/references/ffmpeg-encoding.md +358 -358
  27. package/skills/ai-media/media-processing/references/ffmpeg-filters.md +503 -503
  28. package/skills/ai-media/media-processing/references/ffmpeg-streaming.md +403 -403
  29. package/skills/ai-media/media-processing/references/format-compatibility.md +375 -375
  30. package/skills/ai-media/media-processing/references/imagemagick-batch.md +612 -612
  31. package/skills/ai-media/media-processing/references/imagemagick-editing.md +623 -623
  32. package/skills/ai-media/media-processing/scripts/batch_resize.py +342 -342
  33. package/skills/ai-media/media-processing/scripts/media_convert.py +311 -311
  34. package/skills/ai-media/media-processing/scripts/requirements.txt +24 -24
  35. package/skills/ai-media/media-processing/scripts/tests/requirements.txt +2 -2
  36. package/skills/ai-media/media-processing/scripts/tests/test_batch_resize.py +372 -372
  37. package/skills/ai-media/media-processing/scripts/tests/test_media_convert.py +259 -259
  38. package/skills/ai-media/media-processing/scripts/tests/test_video_optimize.py +397 -397
  39. package/skills/ai-media/media-processing/scripts/video_optimize.py +414 -414
  40. package/skills/ai-media/screenshot/LICENSE.txt +201 -201
  41. package/skills/ai-media/screenshot/SKILL.md +267 -267
  42. package/skills/ai-media/screenshot/agents/openai.yaml +6 -6
  43. package/skills/ai-media/screenshot/assets/screenshot-small.svg +5 -5
  44. package/skills/ai-media/screenshot/scripts/ensure_macos_permissions.sh +54 -54
  45. package/skills/ai-media/screenshot/scripts/macos_display_info.swift +22 -22
  46. package/skills/ai-media/screenshot/scripts/macos_permissions.swift +40 -40
  47. package/skills/ai-media/screenshot/scripts/macos_window_info.swift +126 -126
  48. package/skills/ai-media/screenshot/scripts/take_screenshot.ps1 +163 -163
  49. package/skills/ai-media/screenshot/scripts/take_screenshot.py +585 -585
  50. package/skills/ai-media/sora/LICENSE.txt +201 -201
  51. package/skills/ai-media/sora/SKILL.md +153 -153
  52. package/skills/ai-media/sora/agents/openai.yaml +6 -6
  53. package/skills/ai-media/sora/assets/sora-small.svg +4 -4
  54. package/skills/ai-media/sora/references/cinematic-shots.md +53 -53
  55. package/skills/ai-media/sora/references/cli.md +248 -248
  56. package/skills/ai-media/sora/references/codex-network.md +28 -28
  57. package/skills/ai-media/sora/references/prompting.md +137 -137
  58. package/skills/ai-media/sora/references/sample-prompts.md +95 -95
  59. package/skills/ai-media/sora/references/social-ads.md +42 -42
  60. package/skills/ai-media/sora/references/troubleshooting.md +58 -58
  61. package/skills/ai-media/sora/references/video-api.md +45 -45
  62. package/skills/ai-media/sora/scripts/sora.py +970 -970
  63. package/skills/design/aesthetic/SKILL.md +121 -121
  64. package/skills/design/aesthetic/assets/design-guideline-template.md +163 -163
  65. package/skills/design/aesthetic/assets/design-story-template.md +135 -135
  66. package/skills/design/aesthetic/references/design-principles.md +62 -62
  67. package/skills/design/aesthetic/references/design-resources.md +75 -75
  68. package/skills/design/aesthetic/references/micro-interactions.md +53 -53
  69. package/skills/design/aesthetic/references/storytelling-design.md +50 -50
  70. package/skills/design/figma/LICENSE.txt +202 -202
  71. package/skills/design/figma/SKILL.md +42 -42
  72. package/skills/design/figma/agents/openai.yaml +14 -14
  73. package/skills/design/figma/assets/figma-small.svg +3 -3
  74. package/skills/design/figma/assets/icon.svg +28 -28
  75. package/skills/design/figma/references/figma-mcp-config.md +35 -35
  76. package/skills/design/figma/references/figma-tools-and-prompts.md +34 -34
  77. package/skills/design/figma-implement-design/LICENSE.txt +202 -202
  78. package/skills/design/figma-implement-design/SKILL.md +264 -264
  79. package/skills/design/figma-implement-design/agents/openai.yaml +14 -14
  80. package/skills/design/figma-implement-design/assets/figma-small.svg +3 -3
  81. package/skills/design/figma-implement-design/assets/icon.svg +28 -28
  82. package/skills/design/frontend-design/SKILL.md +41 -41
  83. package/skills/design/frontend-design/references/animejs.md +395 -395
  84. package/skills/design/ui-styling/LICENSE.txt +201 -201
  85. package/skills/design/ui-styling/SKILL.md +321 -321
  86. package/skills/design/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -93
  87. package/skills/design/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -93
  88. package/skills/design/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -93
  89. package/skills/design/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -93
  90. package/skills/design/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -93
  91. package/skills/design/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -93
  92. package/skills/design/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -94
  93. package/skills/design/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -93
  94. package/skills/design/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -93
  95. package/skills/design/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -93
  96. package/skills/design/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -93
  97. package/skills/design/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -93
  98. package/skills/design/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -93
  99. package/skills/design/ui-styling/canvas-fonts/Jura-OFL.txt +93 -93
  100. package/skills/design/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -93
  101. package/skills/design/ui-styling/canvas-fonts/Lora-OFL.txt +93 -93
  102. package/skills/design/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -93
  103. package/skills/design/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -93
  104. package/skills/design/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -93
  105. package/skills/design/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -93
  106. package/skills/design/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -93
  107. package/skills/design/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -93
  108. package/skills/design/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -93
  109. package/skills/design/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -93
  110. package/skills/design/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -93
  111. package/skills/design/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -93
  112. package/skills/design/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -93
  113. package/skills/design/ui-styling/references/canvas-design-system.md +320 -320
  114. package/skills/design/ui-styling/references/shadcn-accessibility.md +471 -471
  115. package/skills/design/ui-styling/references/shadcn-components.md +424 -424
  116. package/skills/design/ui-styling/references/shadcn-theming.md +373 -373
  117. package/skills/design/ui-styling/references/tailwind-customization.md +483 -483
  118. package/skills/design/ui-styling/references/tailwind-responsive.md +382 -382
  119. package/skills/design/ui-styling/references/tailwind-utilities.md +455 -455
  120. package/skills/design/ui-styling/scripts/requirements.txt +17 -17
  121. package/skills/design/ui-styling/scripts/shadcn_add.py +292 -292
  122. package/skills/design/ui-styling/scripts/tailwind_config_gen.py +456 -456
  123. package/skills/design/ui-styling/scripts/tests/requirements.txt +3 -3
  124. package/skills/design/ui-styling/scripts/tests/test_shadcn_add.py +266 -266
  125. package/skills/design/ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -336
  126. package/skills/engineering/aspnet-core/LICENSE.txt +201 -201
  127. package/skills/engineering/aspnet-core/SKILL.md +61 -61
  128. package/skills/engineering/aspnet-core/agents/openai.yaml +5 -5
  129. package/skills/engineering/aspnet-core/references/_sections.md +40 -40
  130. package/skills/engineering/aspnet-core/references/apis-minimal-and-controllers.md +81 -81
  131. package/skills/engineering/aspnet-core/references/data-state-and-services.md +69 -69
  132. package/skills/engineering/aspnet-core/references/program-and-pipeline.md +103 -103
  133. package/skills/engineering/aspnet-core/references/realtime-grpc-and-background-work.md +58 -58
  134. package/skills/engineering/aspnet-core/references/security-and-identity.md +75 -75
  135. package/skills/engineering/aspnet-core/references/source-map.md +43 -43
  136. package/skills/engineering/aspnet-core/references/stack-selection.md +63 -63
  137. package/skills/engineering/aspnet-core/references/testing-performance-and-operations.md +92 -92
  138. package/skills/engineering/aspnet-core/references/ui-blazor.md +53 -53
  139. package/skills/engineering/aspnet-core/references/ui-mvc.md +56 -56
  140. package/skills/engineering/aspnet-core/references/ui-razor-pages.md +55 -55
  141. package/skills/engineering/aspnet-core/references/versioning-and-upgrades.md +51 -51
  142. package/skills/engineering/backend-development/SKILL.md +95 -95
  143. package/skills/engineering/backend-development/references/backend-api-design.md +495 -495
  144. package/skills/engineering/backend-development/references/backend-architecture.md +454 -454
  145. package/skills/engineering/backend-development/references/backend-authentication.md +338 -338
  146. package/skills/engineering/backend-development/references/backend-code-quality.md +659 -659
  147. package/skills/engineering/backend-development/references/backend-debugging.md +904 -904
  148. package/skills/engineering/backend-development/references/backend-devops.md +494 -494
  149. package/skills/engineering/backend-development/references/backend-mindset.md +387 -387
  150. package/skills/engineering/backend-development/references/backend-performance.md +397 -397
  151. package/skills/engineering/backend-development/references/backend-security.md +290 -290
  152. package/skills/engineering/backend-development/references/backend-technologies.md +256 -256
  153. package/skills/engineering/backend-development/references/backend-testing.md +429 -429
  154. package/skills/engineering/better-auth/SKILL.md +204 -204
  155. package/skills/engineering/better-auth/references/advanced-features.md +553 -553
  156. package/skills/engineering/better-auth/references/database-integration.md +577 -577
  157. package/skills/engineering/better-auth/references/email-password-auth.md +416 -416
  158. package/skills/engineering/better-auth/references/oauth-providers.md +430 -430
  159. package/skills/engineering/better-auth/scripts/better_auth_init.py +521 -521
  160. package/skills/engineering/better-auth/scripts/requirements.txt +15 -15
  161. package/skills/engineering/better-auth/scripts/tests/test_better_auth_init.py +421 -421
  162. package/skills/engineering/code-review/SKILL.md +140 -140
  163. package/skills/engineering/code-review/references/code-review-reception.md +208 -208
  164. package/skills/engineering/code-review/references/requesting-code-review.md +104 -104
  165. package/skills/engineering/code-review/references/verification-before-completion.md +138 -138
  166. package/skills/engineering/context-engineering/SKILL.md +86 -86
  167. package/skills/engineering/context-engineering/references/context-compression.md +84 -84
  168. package/skills/engineering/context-engineering/references/context-degradation.md +93 -93
  169. package/skills/engineering/context-engineering/references/context-fundamentals.md +75 -75
  170. package/skills/engineering/context-engineering/references/context-optimization.md +82 -82
  171. package/skills/engineering/context-engineering/references/evaluation.md +89 -89
  172. package/skills/engineering/context-engineering/references/memory-systems.md +88 -88
  173. package/skills/engineering/context-engineering/references/multi-agent-patterns.md +90 -90
  174. package/skills/engineering/context-engineering/references/project-development.md +97 -97
  175. package/skills/engineering/context-engineering/references/tool-design.md +86 -86
  176. package/skills/engineering/context-engineering/scripts/compression_evaluator.py +329 -329
  177. package/skills/engineering/context-engineering/scripts/context_analyzer.py +294 -294
  178. package/skills/engineering/databases/SKILL.md +232 -232
  179. package/skills/engineering/databases/references/mongodb-aggregation.md +447 -447
  180. package/skills/engineering/databases/references/mongodb-atlas.md +465 -465
  181. package/skills/engineering/databases/references/mongodb-crud.md +408 -408
  182. package/skills/engineering/databases/references/mongodb-indexing.md +442 -442
  183. package/skills/engineering/databases/references/postgresql-administration.md +594 -594
  184. package/skills/engineering/databases/references/postgresql-performance.md +527 -527
  185. package/skills/engineering/databases/references/postgresql-psql-cli.md +467 -467
  186. package/skills/engineering/databases/references/postgresql-queries.md +475 -475
  187. package/skills/engineering/databases/scripts/db_backup.py +502 -502
  188. package/skills/engineering/databases/scripts/db_migrate.py +414 -414
  189. package/skills/engineering/databases/scripts/db_performance_check.py +444 -444
  190. package/skills/engineering/databases/scripts/requirements.txt +20 -20
  191. package/skills/engineering/databases/scripts/tests/requirements.txt +4 -4
  192. package/skills/engineering/databases/scripts/tests/test_db_backup.py +340 -340
  193. package/skills/engineering/databases/scripts/tests/test_db_migrate.py +277 -277
  194. package/skills/engineering/databases/scripts/tests/test_db_performance_check.py +370 -370
  195. package/skills/engineering/diagnose/SKILL.md +117 -117
  196. package/skills/engineering/diagnose/scripts/hitl-loop.template.sh +41 -41
  197. package/skills/engineering/docs-seeker/SKILL.md +207 -207
  198. package/skills/engineering/docs-seeker/WORKFLOWS.md +505 -505
  199. package/skills/engineering/docs-seeker/references/best-practices.md +632 -632
  200. package/skills/engineering/docs-seeker/references/documentation-sources.md +461 -461
  201. package/skills/engineering/docs-seeker/references/error-handling.md +621 -621
  202. package/skills/engineering/docs-seeker/references/limitations.md +821 -821
  203. package/skills/engineering/docs-seeker/references/performance.md +574 -574
  204. package/skills/engineering/docs-seeker/references/tool-selection.md +262 -262
  205. package/skills/engineering/frontend-development/SKILL.md +398 -398
  206. package/skills/engineering/frontend-development/resources/common-patterns.md +330 -330
  207. package/skills/engineering/frontend-development/resources/complete-examples.md +871 -871
  208. package/skills/engineering/frontend-development/resources/component-patterns.md +501 -501
  209. package/skills/engineering/frontend-development/resources/data-fetching.md +766 -766
  210. package/skills/engineering/frontend-development/resources/file-organization.md +501 -501
  211. package/skills/engineering/frontend-development/resources/loading-and-error-states.md +500 -500
  212. package/skills/engineering/frontend-development/resources/performance.md +405 -405
  213. package/skills/engineering/frontend-development/resources/routing-guide.md +363 -363
  214. package/skills/engineering/frontend-development/resources/styling-guide.md +427 -427
  215. package/skills/engineering/frontend-development/resources/typescript-standards.md +417 -417
  216. package/skills/engineering/improve-codebase-architecture/DEEPENING.md +37 -37
  217. package/skills/engineering/improve-codebase-architecture/INTERFACE-DESIGN.md +44 -44
  218. package/skills/engineering/improve-codebase-architecture/LANGUAGE.md +53 -53
  219. package/skills/engineering/improve-codebase-architecture/SKILL.md +71 -71
  220. package/skills/engineering/openai-docs/LICENSE.txt +201 -201
  221. package/skills/engineering/openai-docs/SKILL.md +69 -69
  222. package/skills/engineering/openai-docs/agents/openai.yaml +14 -14
  223. package/skills/engineering/openai-docs/assets/openai-small.svg +3 -3
  224. package/skills/engineering/openai-docs/references/gpt-5p4-prompting-guide.md +433 -433
  225. package/skills/engineering/openai-docs/references/latest-model.md +35 -35
  226. package/skills/engineering/openai-docs/references/upgrading-to-gpt-5p4.md +164 -164
  227. package/skills/engineering/playwright/LICENSE.txt +201 -201
  228. package/skills/engineering/playwright/NOTICE.txt +14 -14
  229. package/skills/engineering/playwright/SKILL.md +147 -147
  230. package/skills/engineering/playwright/agents/openai.yaml +6 -6
  231. package/skills/engineering/playwright/assets/playwright-small.svg +3 -3
  232. package/skills/engineering/playwright/references/cli.md +116 -116
  233. package/skills/engineering/playwright/references/workflows.md +95 -95
  234. package/skills/engineering/playwright/scripts/playwright_cli.sh +25 -25
  235. package/skills/engineering/playwright-interactive/LICENSE.txt +201 -201
  236. package/skills/engineering/playwright-interactive/NOTICE.txt +13 -13
  237. package/skills/engineering/playwright-interactive/SKILL.md +689 -689
  238. package/skills/engineering/playwright-interactive/agents/openai.yaml +6 -6
  239. package/skills/engineering/playwright-interactive/assets/playwright-small.svg +3 -3
  240. package/skills/engineering/render-deploy/LICENSE.txt +201 -201
  241. package/skills/engineering/render-deploy/SKILL.md +479 -479
  242. package/skills/engineering/render-deploy/agents/openai.yaml +14 -14
  243. package/skills/engineering/render-deploy/assets/docker.yaml +62 -62
  244. package/skills/engineering/render-deploy/assets/go-api.yaml +35 -35
  245. package/skills/engineering/render-deploy/assets/nextjs-postgres.yaml +35 -35
  246. package/skills/engineering/render-deploy/assets/node-express.yaml +25 -25
  247. package/skills/engineering/render-deploy/assets/python-django.yaml +89 -89
  248. package/skills/engineering/render-deploy/assets/render-small.svg +3 -3
  249. package/skills/engineering/render-deploy/assets/static-site.yaml +54 -54
  250. package/skills/engineering/render-deploy/references/blueprint-spec.md +718 -718
  251. package/skills/engineering/render-deploy/references/codebase-analysis.md +49 -49
  252. package/skills/engineering/render-deploy/references/configuration-guide.md +603 -603
  253. package/skills/engineering/render-deploy/references/deployment-details.md +224 -224
  254. package/skills/engineering/render-deploy/references/direct-creation.md +113 -113
  255. package/skills/engineering/render-deploy/references/error-patterns.md +13 -13
  256. package/skills/engineering/render-deploy/references/post-deploy-checks.md +36 -36
  257. package/skills/engineering/render-deploy/references/runtimes.md +473 -473
  258. package/skills/engineering/render-deploy/references/service-types.md +450 -450
  259. package/skills/engineering/render-deploy/references/troubleshooting-basics.md +36 -36
  260. package/skills/engineering/repomix/SKILL.md +215 -215
  261. package/skills/engineering/repomix/references/configuration.md +211 -211
  262. package/skills/engineering/repomix/references/usage-patterns.md +232 -232
  263. package/skills/engineering/repomix/scripts/README.md +179 -179
  264. package/skills/engineering/repomix/scripts/repomix_batch.py +455 -455
  265. package/skills/engineering/repomix/scripts/repos.example.json +15 -15
  266. package/skills/engineering/repomix/scripts/requirements.txt +15 -15
  267. package/skills/engineering/repomix/scripts/tests/test_repomix_batch.py +531 -531
  268. package/skills/engineering/setup-matt-pocock-skills/SKILL.md +121 -121
  269. package/skills/engineering/setup-matt-pocock-skills/domain.md +51 -51
  270. package/skills/engineering/setup-matt-pocock-skills/issue-tracker-github.md +22 -22
  271. package/skills/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md +23 -23
  272. package/skills/engineering/setup-matt-pocock-skills/issue-tracker-local.md +19 -19
  273. package/skills/engineering/setup-matt-pocock-skills/triage-labels.md +15 -15
  274. package/skills/engineering/shopify/README.md +66 -66
  275. package/skills/engineering/shopify/SKILL.md +319 -319
  276. package/skills/engineering/shopify/references/app-development.md +470 -470
  277. package/skills/engineering/shopify/references/extensions.md +493 -493
  278. package/skills/engineering/shopify/references/themes.md +498 -498
  279. package/skills/engineering/shopify/scripts/requirements.txt +19 -19
  280. package/skills/engineering/shopify/scripts/shopify_init.py +423 -423
  281. package/skills/engineering/shopify/scripts/tests/test_shopify_init.py +385 -385
  282. package/skills/engineering/tdd/SKILL.md +109 -109
  283. package/skills/engineering/tdd/deep-modules.md +33 -33
  284. package/skills/engineering/tdd/interface-design.md +31 -31
  285. package/skills/engineering/tdd/mocking.md +59 -59
  286. package/skills/engineering/tdd/refactoring.md +10 -10
  287. package/skills/engineering/tdd/tests.md +61 -61
  288. package/skills/engineering/to-issues/SKILL.md +81 -81
  289. package/skills/engineering/to-prd/SKILL.md +74 -74
  290. package/skills/engineering/triage/AGENT-BRIEF.md +168 -168
  291. package/skills/engineering/triage/OUT-OF-SCOPE.md +101 -101
  292. package/skills/engineering/triage/SKILL.md +103 -103
  293. package/skills/engineering/web-frameworks/SKILL.md +324 -324
  294. package/skills/engineering/web-frameworks/references/nextjs-app-router.md +465 -465
  295. package/skills/engineering/web-frameworks/references/nextjs-data-fetching.md +459 -459
  296. package/skills/engineering/web-frameworks/references/nextjs-optimization.md +511 -511
  297. package/skills/engineering/web-frameworks/references/nextjs-server-components.md +495 -495
  298. package/skills/engineering/web-frameworks/references/remix-icon-integration.md +603 -603
  299. package/skills/engineering/web-frameworks/references/turborepo-caching.md +551 -551
  300. package/skills/engineering/web-frameworks/references/turborepo-pipelines.md +517 -517
  301. package/skills/engineering/web-frameworks/references/turborepo-setup.md +542 -542
  302. package/skills/engineering/web-frameworks/scripts/nextjs_init.py +547 -547
  303. package/skills/engineering/web-frameworks/scripts/requirements.txt +16 -16
  304. package/skills/engineering/web-frameworks/scripts/tests/requirements.txt +3 -3
  305. package/skills/engineering/web-frameworks/scripts/tests/test_nextjs_init.py +319 -319
  306. package/skills/engineering/web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -374
  307. package/skills/engineering/web-frameworks/scripts/turborepo_migrate.py +394 -394
  308. package/skills/engineering/write-a-skill/SKILL.md +117 -117
  309. package/skills/kilo-kit/SKILL.md +346 -346
  310. package/skills/kilo-kit/_template/SKILL.md +185 -185
  311. package/skills/kilo-kit/debugging/root-cause/SKILL.md +360 -360
  312. package/skills/kilo-kit/debugging/systematic/SKILL.md +339 -339
  313. package/skills/kilo-kit/debugging/verification/SKILL.md +424 -424
  314. package/skills/kilo-kit/development/backend/SKILL.md +540 -540
  315. package/skills/kilo-kit/development/security/SKILL.md +529 -529
  316. package/skills/kilo-kit/quality/code-review/SKILL.md +297 -297
  317. package/skills/kilo-kit/quality/testing/SKILL.md +540 -540
  318. package/skills/kilo-kit/references/output-formats.md +204 -204
  319. package/skills/kilo-kit/references/patterns.md +156 -156
  320. package/skills/kilo-kit/references/performance-benchmarks.md +90 -90
  321. package/skills/operations/chrome-devtools/SKILL.md +392 -392
  322. package/skills/operations/chrome-devtools/references/cdp-domains.md +694 -694
  323. package/skills/operations/chrome-devtools/references/performance-guide.md +940 -940
  324. package/skills/operations/chrome-devtools/references/puppeteer-reference.md +953 -953
  325. package/skills/operations/chrome-devtools/scripts/PERSISTENT-BROWSER.md +107 -107
  326. package/skills/operations/chrome-devtools/scripts/README.md +213 -213
  327. package/skills/operations/chrome-devtools/scripts/__tests__/selector.test.js +210 -210
  328. package/skills/operations/chrome-devtools/scripts/click.js +79 -79
  329. package/skills/operations/chrome-devtools/scripts/close-persistent.js +36 -36
  330. package/skills/operations/chrome-devtools/scripts/console.js +75 -75
  331. package/skills/operations/chrome-devtools/scripts/evaluate.js +49 -49
  332. package/skills/operations/chrome-devtools/scripts/fill.js +72 -72
  333. package/skills/operations/chrome-devtools/scripts/install-deps.sh +181 -181
  334. package/skills/operations/chrome-devtools/scripts/install.sh +83 -83
  335. package/skills/operations/chrome-devtools/scripts/launch-persistent.js +71 -71
  336. package/skills/operations/chrome-devtools/scripts/lib/browser.js +144 -144
  337. package/skills/operations/chrome-devtools/scripts/lib/selector.js +178 -178
  338. package/skills/operations/chrome-devtools/scripts/navigate.js +46 -46
  339. package/skills/operations/chrome-devtools/scripts/network.js +102 -102
  340. package/skills/operations/chrome-devtools/scripts/package-lock.json +1206 -1206
  341. package/skills/operations/chrome-devtools/scripts/package.json +15 -15
  342. package/skills/operations/chrome-devtools/scripts/performance.js +145 -145
  343. package/skills/operations/chrome-devtools/scripts/screenshot.js +180 -180
  344. package/skills/operations/chrome-devtools/scripts/snapshot.js +131 -131
  345. package/skills/operations/devops/.env.example +76 -76
  346. package/skills/operations/devops/SKILL.md +285 -285
  347. package/skills/operations/devops/references/browser-rendering.md +305 -305
  348. package/skills/operations/devops/references/cloudflare-d1-kv.md +123 -123
  349. package/skills/operations/devops/references/cloudflare-platform.md +271 -271
  350. package/skills/operations/devops/references/cloudflare-r2-storage.md +280 -280
  351. package/skills/operations/devops/references/cloudflare-workers-advanced.md +312 -312
  352. package/skills/operations/devops/references/cloudflare-workers-apis.md +309 -309
  353. package/skills/operations/devops/references/cloudflare-workers-basics.md +418 -418
  354. package/skills/operations/devops/references/docker-basics.md +297 -297
  355. package/skills/operations/devops/references/docker-compose.md +292 -292
  356. package/skills/operations/devops/references/gcloud-platform.md +297 -297
  357. package/skills/operations/devops/references/gcloud-services.md +304 -304
  358. package/skills/operations/devops/scripts/cloudflare_deploy.py +269 -269
  359. package/skills/operations/devops/scripts/docker_optimize.py +320 -320
  360. package/skills/operations/devops/scripts/requirements.txt +20 -20
  361. package/skills/operations/devops/scripts/tests/requirements.txt +3 -3
  362. package/skills/operations/devops/scripts/tests/test_cloudflare_deploy.py +285 -285
  363. package/skills/operations/devops/scripts/tests/test_docker_optimize.py +436 -436
  364. package/skills/operations/mcp-builder/LICENSE.txt +201 -201
  365. package/skills/operations/mcp-builder/SKILL.md +328 -328
  366. package/skills/operations/mcp-builder/reference/evaluation.md +601 -601
  367. package/skills/operations/mcp-builder/reference/mcp_best_practices.md +915 -915
  368. package/skills/operations/mcp-builder/reference/node_mcp_server.md +915 -915
  369. package/skills/operations/mcp-builder/reference/python_mcp_server.md +751 -751
  370. package/skills/operations/mcp-builder/scripts/connections.py +151 -151
  371. package/skills/operations/mcp-builder/scripts/evaluation.py +373 -373
  372. package/skills/operations/mcp-builder/scripts/example_evaluation.xml +22 -22
  373. package/skills/operations/mcp-builder/scripts/requirements.txt +2 -2
  374. package/skills/operations/mcp-management/README.md +219 -219
  375. package/skills/operations/mcp-management/SKILL.md +175 -175
  376. package/skills/operations/mcp-management/assets/tools.json +3043 -3043
  377. package/skills/operations/mcp-management/references/configuration.md +114 -114
  378. package/skills/operations/mcp-management/references/gemini-cli-integration.md +201 -201
  379. package/skills/operations/mcp-management/references/mcp-protocol.md +116 -116
  380. package/skills/operations/mcp-management/scripts/.env.example +10 -10
  381. package/skills/operations/mcp-management/scripts/cli.ts +155 -155
  382. package/skills/operations/mcp-management/scripts/dist/analyze-tools.js +70 -70
  383. package/skills/operations/mcp-management/scripts/dist/cli.js +131 -131
  384. package/skills/operations/mcp-management/scripts/dist/mcp-client.js +115 -115
  385. package/skills/operations/mcp-management/scripts/mcp-client.ts +163 -163
  386. package/skills/operations/mcp-management/scripts/package.json +18 -18
  387. package/skills/operations/mcp-management/scripts/tsconfig.json +15 -15
  388. package/skills/problem-solving/collision-zone-thinking/SKILL.md +62 -62
  389. package/skills/problem-solving/defense-in-depth/SKILL.md +130 -130
  390. package/skills/problem-solving/inversion-exercise/SKILL.md +58 -58
  391. package/skills/problem-solving/meta-pattern-recognition/SKILL.md +54 -54
  392. package/skills/problem-solving/root-cause-tracing/SKILL.md +177 -177
  393. package/skills/problem-solving/root-cause-tracing/find-polluter.sh +63 -63
  394. package/skills/problem-solving/scale-game/SKILL.md +63 -63
  395. package/skills/problem-solving/sequential-thinking/README.md +118 -118
  396. package/skills/problem-solving/sequential-thinking/SKILL.md +93 -93
  397. package/skills/problem-solving/sequential-thinking/references/advanced.md +122 -122
  398. package/skills/problem-solving/sequential-thinking/references/examples.md +274 -274
  399. package/skills/problem-solving/simplification-cascades/SKILL.md +76 -76
  400. package/skills/problem-solving/when-stuck/SKILL.md +88 -88
  401. package/skills/productivity/caveman/SKILL.md +49 -49
  402. package/skills/productivity/grill-me/SKILL.md +10 -10
  403. package/skills/productivity/grill-with-docs/ADR-FORMAT.md +47 -47
  404. package/skills/productivity/grill-with-docs/CONTEXT-FORMAT.md +77 -77
  405. package/skills/productivity/grill-with-docs/SKILL.md +88 -88
  406. package/skills/productivity/writing-skills/graphviz-conventions.dot +171 -171
  407. package/skills/productivity/zoom-out/SKILL.md +7 -7
  408. package/skills/writing-docs/doc/LICENSE.txt +201 -201
  409. package/skills/writing-docs/doc/SKILL.md +80 -80
  410. package/skills/writing-docs/doc/agents/openai.yaml +6 -6
  411. package/skills/writing-docs/doc/assets/doc-small.svg +3 -3
  412. package/skills/writing-docs/doc/scripts/render_docx.py +296 -296
  413. package/skills/writing-docs/docx/LICENSE.txt +30 -30
  414. package/skills/writing-docs/docx/SKILL.md +196 -196
  415. package/skills/writing-docs/docx/docx-js.md +349 -349
  416. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -1499
  417. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -146
  418. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -1085
  419. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -11
  420. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -3081
  421. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -23
  422. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -185
  423. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -287
  424. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -1676
  425. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -28
  426. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -144
  427. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -174
  428. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -25
  429. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -18
  430. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -59
  431. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -56
  432. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -195
  433. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -582
  434. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -25
  435. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -4439
  436. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -570
  437. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -509
  438. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -12
  439. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -108
  440. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -96
  441. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -3646
  442. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -116
  443. package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -42
  444. package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -50
  445. package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -49
  446. package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -33
  447. package/skills/writing-docs/docx/ooxml/schemas/mce/mc.xsd +75 -75
  448. package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -560
  449. package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -67
  450. package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -14
  451. package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -20
  452. package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -13
  453. package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -4
  454. package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -8
  455. package/skills/writing-docs/docx/ooxml/scripts/pack.py +159 -159
  456. package/skills/writing-docs/docx/ooxml/scripts/unpack.py +29 -29
  457. package/skills/writing-docs/docx/ooxml/scripts/validate.py +69 -69
  458. package/skills/writing-docs/docx/ooxml/scripts/validation/__init__.py +15 -15
  459. package/skills/writing-docs/docx/ooxml/scripts/validation/base.py +951 -951
  460. package/skills/writing-docs/docx/ooxml/scripts/validation/docx.py +274 -274
  461. package/skills/writing-docs/docx/ooxml/scripts/validation/pptx.py +315 -315
  462. package/skills/writing-docs/docx/ooxml/scripts/validation/redlining.py +279 -279
  463. package/skills/writing-docs/docx/ooxml.md +609 -609
  464. package/skills/writing-docs/docx/scripts/__init__.py +1 -1
  465. package/skills/writing-docs/docx/scripts/document.py +1276 -1276
  466. package/skills/writing-docs/docx/scripts/templates/comments.xml +2 -2
  467. package/skills/writing-docs/docx/scripts/templates/commentsExtended.xml +2 -2
  468. package/skills/writing-docs/docx/scripts/templates/commentsExtensible.xml +2 -2
  469. package/skills/writing-docs/docx/scripts/templates/commentsIds.xml +2 -2
  470. package/skills/writing-docs/docx/scripts/templates/people.xml +2 -2
  471. package/skills/writing-docs/docx/scripts/utilities.py +374 -374
  472. package/skills/writing-docs/mermaidjs-v11/SKILL.md +115 -115
  473. package/skills/writing-docs/mermaidjs-v11/references/cli-usage.md +228 -228
  474. package/skills/writing-docs/mermaidjs-v11/references/configuration.md +232 -232
  475. package/skills/writing-docs/mermaidjs-v11/references/diagram-types.md +315 -315
  476. package/skills/writing-docs/mermaidjs-v11/references/examples.md +344 -344
  477. package/skills/writing-docs/mermaidjs-v11/references/integration.md +310 -310
  478. package/skills/writing-docs/pdf/LICENSE.txt +30 -30
  479. package/skills/writing-docs/pdf/SKILL.md +294 -294
  480. package/skills/writing-docs/pdf/forms.md +205 -205
  481. package/skills/writing-docs/pdf/reference.md +611 -611
  482. package/skills/writing-docs/pdf/scripts/check_bounding_boxes.py +70 -70
  483. package/skills/writing-docs/pdf/scripts/check_bounding_boxes_test.py +226 -226
  484. package/skills/writing-docs/pdf/scripts/check_fillable_fields.py +12 -12
  485. package/skills/writing-docs/pdf/scripts/convert_pdf_to_images.py +35 -35
  486. package/skills/writing-docs/pdf/scripts/create_validation_image.py +41 -41
  487. package/skills/writing-docs/pdf/scripts/extract_form_field_info.py +152 -152
  488. package/skills/writing-docs/pdf/scripts/fill_fillable_fields.py +114 -114
  489. package/skills/writing-docs/pdf/scripts/fill_pdf_form_with_annotations.py +107 -107
  490. package/skills/writing-docs/pptx/LICENSE.txt +30 -30
  491. package/skills/writing-docs/pptx/SKILL.md +483 -483
  492. package/skills/writing-docs/pptx/html2pptx.md +624 -624
  493. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -1499
  494. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -146
  495. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -1085
  496. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -11
  497. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -3081
  498. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -23
  499. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -185
  500. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -287
  501. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -1676
  502. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -28
  503. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -144
  504. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -174
  505. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -25
  506. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -18
  507. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -59
  508. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -56
  509. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -195
  510. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -582
  511. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -25
  512. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -4439
  513. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -570
  514. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -509
  515. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -12
  516. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -108
  517. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -96
  518. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -3646
  519. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -116
  520. package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -42
  521. package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -50
  522. package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -49
  523. package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -33
  524. package/skills/writing-docs/pptx/ooxml/schemas/mce/mc.xsd +75 -75
  525. package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -560
  526. package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -67
  527. package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -14
  528. package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -20
  529. package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -13
  530. package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -4
  531. package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -8
  532. package/skills/writing-docs/pptx/ooxml/scripts/pack.py +159 -159
  533. package/skills/writing-docs/pptx/ooxml/scripts/unpack.py +29 -29
  534. package/skills/writing-docs/pptx/ooxml/scripts/validate.py +69 -69
  535. package/skills/writing-docs/pptx/ooxml/scripts/validation/__init__.py +15 -15
  536. package/skills/writing-docs/pptx/ooxml/scripts/validation/base.py +951 -951
  537. package/skills/writing-docs/pptx/ooxml/scripts/validation/docx.py +274 -274
  538. package/skills/writing-docs/pptx/ooxml/scripts/validation/pptx.py +315 -315
  539. package/skills/writing-docs/pptx/ooxml/scripts/validation/redlining.py +279 -279
  540. package/skills/writing-docs/pptx/ooxml.md +426 -426
  541. package/skills/writing-docs/pptx/scripts/html2pptx.js +978 -978
  542. package/skills/writing-docs/pptx/scripts/inventory.py +1020 -1020
  543. package/skills/writing-docs/pptx/scripts/rearrange.py +231 -231
  544. package/skills/writing-docs/pptx/scripts/replace.py +385 -385
  545. package/skills/writing-docs/pptx/scripts/thumbnail.py +450 -450
  546. package/skills/writing-docs/slides/LICENSE.txt +201 -201
  547. package/skills/writing-docs/slides/SKILL.md +71 -71
  548. package/skills/writing-docs/slides/agents/openai.yaml +6 -6
  549. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/code.js +104 -104
  550. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/image.js +333 -333
  551. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/index.js +33 -33
  552. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/latex.js +51 -51
  553. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/layout.js +643 -643
  554. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/layout_builders.js +358 -358
  555. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/svg.js +36 -36
  556. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/text.js +789 -789
  557. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/util.js +24 -24
  558. package/skills/writing-docs/slides/assets/slides-small.svg +3 -3
  559. package/skills/writing-docs/slides/references/pptxgenjs-helpers.md +61 -61
  560. package/skills/writing-docs/slides/scripts/create_montage.py +300 -300
  561. package/skills/writing-docs/slides/scripts/detect_font.py +873 -873
  562. package/skills/writing-docs/slides/scripts/ensure_raster_image.py +202 -202
  563. package/skills/writing-docs/slides/scripts/render_slides.py +273 -273
  564. package/skills/writing-docs/slides/scripts/slides_test.py +201 -201
  565. package/skills/writing-docs/template-skill/SKILL.md +26 -26
  566. package/skills/writing-docs/xlsx/LICENSE.txt +30 -30
  567. package/skills/writing-docs/xlsx/SKILL.md +288 -288
  568. package/skills/writing-docs/xlsx/recalc.py +177 -177
  569. package/src/core/KILO_MASTER.md +448 -448
  570. package/src/tools/validate-skill.js +421 -421
@@ -1,603 +1,603 @@
1
- # Render Configuration Guide
2
-
3
- Common configuration patterns, best practices, and troubleshooting for Render deployments.
4
-
5
- ## Environment Variables
6
-
7
- ### Required vs Optional Variables
8
-
9
- **Always declare ALL environment variables in render.yaml**, even if values are provided by user later.
10
-
11
- **Three categories:**
12
-
13
- 1. **Configuration values** (hardcoded):
14
- ```yaml
15
- envVars:
16
- - key: NODE_ENV
17
- value: production
18
- - key: LOG_LEVEL
19
- value: info
20
- - key: API_URL
21
- value: https://api.example.com
22
- ```
23
-
24
- 2. **Secrets** (user provides):
25
- ```yaml
26
- envVars:
27
- - key: JWT_SECRET
28
- sync: false
29
- - key: STRIPE_SECRET_KEY
30
- sync: false
31
- - key: API_KEY
32
- sync: false
33
- ```
34
-
35
- 3. **Auto-generated** (Render provides):
36
- ```yaml
37
- envVars:
38
- - key: SESSION_SECRET
39
- generateValue: true
40
- - key: ENCRYPTION_KEY
41
- generateValue: true
42
- ```
43
-
44
- ### Database Connection Patterns
45
-
46
- **PostgreSQL:**
47
- ```yaml
48
- envVars:
49
- - key: DATABASE_URL
50
- fromDatabase:
51
- name: postgres
52
- property: connectionString
53
- ```
54
-
55
- **Redis:**
56
- ```yaml
57
- envVars:
58
- - key: REDIS_URL
59
- fromDatabase:
60
- name: redis
61
- property: connectionString
62
- ```
63
-
64
- **Multiple databases:**
65
- ```yaml
66
- envVars:
67
- - key: PRIMARY_DB_URL
68
- fromDatabase:
69
- name: postgres-primary
70
- property: connectionString
71
- - key: ANALYTICS_DB_URL
72
- fromDatabase:
73
- name: postgres-analytics
74
- property: connectionString
75
- - key: CACHE_URL
76
- fromDatabase:
77
- name: redis
78
- property: connectionString
79
- ```
80
-
81
- ### Cross-Service References
82
-
83
- Reference other services in your account:
84
-
85
- ```yaml
86
- services:
87
- - type: web
88
- name: frontend
89
- runtime: node
90
- envVars:
91
- - key: API_URL
92
- fromService:
93
- name: backend-api
94
- type: web
95
- property: host # or hostport, port
96
-
97
- - type: web
98
- name: backend-api
99
- runtime: node
100
- ```
101
-
102
- **Available properties:**
103
- - `host`: Service hostname
104
- - `port`: Service port
105
- - `hostport`: Combined `host:port`
106
-
107
- ### Environment Variable Groups
108
-
109
- Share common configuration across services:
110
-
111
- ```yaml
112
- envVarGroups:
113
- - name: common-config
114
- envVars:
115
- - key: NODE_ENV
116
- value: production
117
- - key: LOG_LEVEL
118
- value: info
119
- - key: TZ
120
- value: UTC
121
-
122
- services:
123
- - type: web
124
- name: web-app
125
- runtime: node
126
- envVars:
127
- - fromGroup: common-config
128
- - key: PORT
129
- value: 10000
130
-
131
- - type: worker
132
- name: worker
133
- runtime: node
134
- envVars:
135
- - fromGroup: common-config
136
- ```
137
-
138
- ---
139
-
140
- ## Port Binding
141
-
142
- ### The Port Binding Requirement
143
-
144
- **CRITICAL:** Web services must bind to `0.0.0.0:$PORT`
145
-
146
- **Why this matters:**
147
- - Render sets `PORT` environment variable (default: 10000)
148
- - Services must bind to `0.0.0.0` (not `localhost` or `127.0.0.1`)
149
- - Health checks fail if port binding is incorrect
150
- - Deployment will fail or service won't receive traffic
151
-
152
- ### Code Examples by Language
153
-
154
- **Node.js / Express:**
155
- ```javascript
156
- const express = require('express');
157
- const app = express();
158
-
159
- const PORT = process.env.PORT || 3000;
160
-
161
- app.listen(PORT, '0.0.0.0', () => {
162
- console.log(`Server running on port ${PORT}`);
163
- });
164
- ```
165
-
166
- **Python / Flask:**
167
- ```python
168
- import os
169
- from flask import Flask
170
-
171
- app = Flask(__name__)
172
-
173
- if __name__ == '__main__':
174
- port = int(os.environ.get('PORT', 5000))
175
- app.run(host='0.0.0.0', port=port)
176
- ```
177
-
178
- **Python / Django:**
179
-
180
- In `settings.py`:
181
- ```python
182
- # Django runs on port specified by environment
183
- ALLOWED_HOSTS = ['*']
184
- ```
185
-
186
- Start command in render.yaml:
187
- ```yaml
188
- startCommand: gunicorn config.wsgi:application --bind 0.0.0.0:$PORT
189
- ```
190
-
191
- **Python / FastAPI:**
192
- ```python
193
- import os
194
- import uvicorn
195
- from fastapi import FastAPI
196
-
197
- app = FastAPI()
198
-
199
- if __name__ == "__main__":
200
- port = int(os.environ.get("PORT", 8000))
201
- uvicorn.run(app, host="0.0.0.0", port=port)
202
- ```
203
-
204
- Start command:
205
- ```yaml
206
- startCommand: uvicorn main:app --host 0.0.0.0 --port $PORT
207
- ```
208
-
209
- **Go:**
210
- ```go
211
- package main
212
-
213
- import (
214
- "fmt"
215
- "net/http"
216
- "os"
217
- )
218
-
219
- func main() {
220
- port := os.Getenv("PORT")
221
- if port == "" {
222
- port = "3000"
223
- }
224
-
225
- http.HandleFunc("/", handler)
226
- fmt.Printf("Server starting on port %s\n", port)
227
- http.ListenAndServe(":"+port, nil)
228
- }
229
- ```
230
-
231
- **Ruby / Rails:**
232
-
233
- In `config/puma.rb`:
234
- ```ruby
235
- port ENV.fetch("PORT") { 3000 }
236
- bind "tcp://0.0.0.0:#{ENV.fetch('PORT', 3000)}"
237
- ```
238
-
239
- **Rust / Actix:**
240
- ```rust
241
- use actix_web::{App, HttpServer};
242
- use std::env;
243
-
244
- #[actix_web::main]
245
- async fn main() -> std::io::Result<()> {
246
- let port = env::var("PORT").unwrap_or_else(|_| "8080".to_string());
247
- let addr = format!("0.0.0.0:{}", port);
248
-
249
- HttpServer::new(|| App::new())
250
- .bind(&addr)?
251
- .run()
252
- .await
253
- }
254
- ```
255
-
256
- ---
257
-
258
- ## Build Commands
259
-
260
- ### Non-Interactive Flags
261
-
262
- **Always use non-interactive flags** to prevent builds from hanging waiting for input.
263
-
264
- **npm (Node.js):**
265
- ```yaml
266
- buildCommand: npm ci
267
- # NOT: npm install
268
- ```
269
-
270
- **pip (Python):**
271
- ```yaml
272
- buildCommand: pip install -r requirements.txt
273
- # Already non-interactive
274
- ```
275
-
276
- **apt (System packages):**
277
- ```yaml
278
- buildCommand: apt-get update && apt-get install -y libpq-dev
279
- # Use -y flag to auto-confirm
280
- ```
281
-
282
- **bundler (Ruby):**
283
- ```yaml
284
- buildCommand: bundle install --jobs=4 --retry=3
285
- ```
286
-
287
- ### Build with Additional Steps
288
-
289
- **Node.js with build step:**
290
- ```yaml
291
- buildCommand: npm ci && npm run build
292
- ```
293
-
294
- **Python Django with static files:**
295
- ```yaml
296
- buildCommand: pip install -r requirements.txt && python manage.py collectstatic --no-input
297
- ```
298
-
299
- **Ruby Rails with assets:**
300
- ```yaml
301
- buildCommand: bundle install && bundle exec rails assets:precompile
302
- ```
303
-
304
- ### Build Timeouts
305
-
306
- **Free tier:** 15 minutes
307
- **Paid tiers:** Configurable
308
-
309
- **If builds timeout:**
310
- 1. Optimize dependencies (remove unused packages)
311
- 2. Use build caching
312
- 3. Consider pre-building in CI/CD
313
- 4. Upgrade to paid tier for longer timeouts
314
-
315
- ---
316
-
317
- ## Database Connections
318
-
319
- ### Internal vs External URLs
320
-
321
- **Use internal URLs for better performance:**
322
-
323
- When using `fromDatabase`, Render automatically provides internal `.render-internal.com` URLs:
324
-
325
- ```yaml
326
- envVars:
327
- - key: DATABASE_URL
328
- fromDatabase:
329
- name: postgres
330
- property: connectionString
331
- ```
332
-
333
- This provides: `postgresql://user:pass@postgres.render-internal.com:5432/db`
334
-
335
- **Benefits:**
336
- - Lower latency (same data center)
337
- - No external bandwidth charges
338
- - Automatic internal DNS
339
-
340
- ### Connection Pooling
341
-
342
- **Node.js / PostgreSQL:**
343
- ```javascript
344
- const { Pool } = require('pg');
345
-
346
- const pool = new Pool({
347
- connectionString: process.env.DATABASE_URL,
348
- ssl: process.env.NODE_ENV === 'production' ? { rejectUnauthorized: false } : false,
349
- max: 20, // Maximum pool size
350
- idleTimeoutMillis: 30000,
351
- connectionTimeoutMillis: 2000,
352
- });
353
- ```
354
-
355
- **Python / PostgreSQL:**
356
- ```python
357
- import psycopg2.pool
358
-
359
- pool = psycopg2.pool.SimpleConnectionPool(
360
- minconn=1,
361
- maxconn=20,
362
- dsn=os.environ['DATABASE_URL']
363
- )
364
- ```
365
-
366
- **Django Settings:**
367
- ```python
368
- DATABASES = {
369
- 'default': {
370
- 'ENGINE': 'django.db.backends.postgresql',
371
- 'URL': os.environ['DATABASE_URL'],
372
- 'CONN_MAX_AGE': 600, # Connection pooling
373
- }
374
- }
375
- ```
376
-
377
- ### Database Migrations
378
-
379
- **Run migrations during build:**
380
-
381
- **Django:**
382
- ```yaml
383
- buildCommand: pip install -r requirements.txt && python manage.py migrate
384
- ```
385
-
386
- **Rails:**
387
- ```yaml
388
- buildCommand: bundle install && bundle exec rails db:migrate
389
- ```
390
-
391
- **Node.js / Prisma:**
392
- ```yaml
393
- buildCommand: npm ci && npx prisma migrate deploy
394
- ```
395
-
396
- ---
397
-
398
- ## Free Tier Limitations
399
-
400
- ### What's Included
401
-
402
- **Free tier provides:**
403
- - 1 web service
404
- - 1 PostgreSQL database (1 GB storage, 97 MB RAM)
405
- - 750 hours/month compute
406
- - 512 MB RAM per service
407
- - 0.5 CPU per service
408
- - 100 GB bandwidth/month
409
-
410
- ### Resource Limits
411
-
412
- **Memory (512 MB):**
413
- - Monitor memory usage in logs
414
- - Optimize for memory-constrained environments
415
- - Use lightweight dependencies
416
-
417
- **CPU (0.5 cores):**
418
- - Suitable for low-traffic applications
419
- - Consider upgrading for higher traffic
420
-
421
- **Spin Down (Free services):**
422
- - Services spin down after 15 minutes of inactivity
423
- - First request after spin down takes ~30 seconds (cold start)
424
- - Upgrade to paid tier for always-on services
425
-
426
- ### When to Upgrade
427
-
428
- **Upgrade to paid plan when:**
429
- - Need more than 1 web service
430
- - Need always-on services (no spin down)
431
- - Traffic exceeds free tier limits
432
- - Need more memory/CPU
433
- - Need faster build times
434
- - Need preview environments
435
-
436
- ---
437
-
438
- ## Health Checks
439
-
440
- ### Adding Health Check Endpoints
441
-
442
- **Node.js / Express:**
443
- ```javascript
444
- app.get('/health', (req, res) => {
445
- res.status(200).json({
446
- status: 'ok',
447
- timestamp: new Date().toISOString()
448
- });
449
- });
450
- ```
451
-
452
- **Python / Flask:**
453
- ```python
454
- @app.route('/health')
455
- def health():
456
- return {'status': 'ok'}, 200
457
- ```
458
-
459
- **Python / FastAPI:**
460
- ```python
461
- @app.get("/health")
462
- async def health():
463
- return {"status": "ok"}
464
- ```
465
-
466
- **Go:**
467
- ```go
468
- http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
469
- w.WriteHeader(http.StatusOK)
470
- w.Write([]byte(`{"status":"ok"}`))
471
- })
472
- ```
473
-
474
- ### Configure in render.yaml
475
-
476
- ```yaml
477
- services:
478
- - type: web
479
- name: my-app
480
- runtime: node
481
- healthCheckPath: /health
482
- ```
483
-
484
- **Benefits:**
485
- - Faster deployment detection
486
- - Better monitoring
487
- - Automatic restart on health check failures
488
-
489
- ---
490
-
491
- ## Common Deployment Issues
492
-
493
- ### Issue 1: Missing Environment Variables
494
-
495
- **Symptom:** Service crashes with "undefined variable" errors
496
-
497
- **Solution:** Add all required env vars to render.yaml:
498
- ```yaml
499
- envVars:
500
- - key: DATABASE_URL
501
- fromDatabase:
502
- name: postgres
503
- property: connectionString
504
- - key: JWT_SECRET
505
- sync: false # User fills in Dashboard
506
- ```
507
-
508
- ### Issue 2: Port Binding Errors
509
-
510
- **Symptom:** `EADDRINUSE` or health check timeout errors
511
-
512
- **Solution:** Ensure app binds to `0.0.0.0:$PORT`:
513
- ```javascript
514
- const PORT = process.env.PORT || 3000;
515
- app.listen(PORT, '0.0.0.0');
516
- ```
517
-
518
- ### Issue 3: Build Hangs
519
-
520
- **Symptom:** Build times out after 15 minutes
521
-
522
- **Solution:** Use non-interactive build commands:
523
- ```yaml
524
- buildCommand: npm ci # NOT npm install
525
- ```
526
-
527
- ### Issue 4: Database Connection Fails
528
-
529
- **Symptom:** `ECONNREFUSED` on port 5432
530
-
531
- **Solutions:**
532
- 1. Use `fromDatabase` for automatic internal URLs
533
- 2. Enable SSL for external connections
534
- 3. Check `ipAllowList` settings
535
-
536
- ### Issue 5: Static Site 404s
537
-
538
- **Symptom:** Client-side routes return 404
539
-
540
- **Solution:** Add SPA rewrite rules:
541
- ```yaml
542
- routes:
543
- - type: rewrite
544
- source: /*
545
- destination: /index.html
546
- ```
547
-
548
- ### Issue 6: Out of Memory (OOM)
549
-
550
- **Symptom:** Service crashes with `JavaScript heap out of memory`
551
-
552
- **Solutions:**
553
- 1. Optimize application memory usage
554
- 2. Reduce dependency size
555
- 3. Upgrade to higher plan with more RAM
556
-
557
- ---
558
-
559
- ## Best Practices Checklist
560
-
561
- **Environment Variables:**
562
- - [ ] All env vars declared in render.yaml
563
- - [ ] Secrets marked with `sync: false`
564
- - [ ] Database URLs use `fromDatabase` references
565
-
566
- **Port Binding:**
567
- - [ ] App binds to `process.env.PORT`
568
- - [ ] Bind to `0.0.0.0` (not `localhost`)
569
-
570
- **Build Commands:**
571
- - [ ] Use non-interactive flags (`npm ci`, `-y`, etc.)
572
- - [ ] Build completes under 15 minutes (free tier)
573
-
574
- **Start Commands:**
575
- - [ ] Command starts HTTP server correctly
576
- - [ ] Server binds to correct port
577
-
578
- **Health Checks:**
579
- - [ ] `/health` endpoint implemented
580
- - [ ] Returns 200 status code
581
-
582
- **Database:**
583
- - [ ] Connection pooling configured
584
- - [ ] Using internal URLs (`.render-internal.com`)
585
- - [ ] SSL enabled if needed
586
-
587
- **Plans:**
588
- - [ ] Using `plan: free` by default
589
- - [ ] Documented upgrade path for users
590
-
591
- **Git Repository:**
592
- - [ ] render.yaml committed to repository
593
- - [ ] Pushed to git remote (GitHub/GitLab/Bitbucket)
594
- - [ ] Branch specified in render.yaml (if not main)
595
-
596
- ---
597
-
598
- ## Additional Resources
599
-
600
- - Blueprint Specification: [blueprint-spec.md](blueprint-spec.md)
601
- - Service Types: [service-types.md](service-types.md)
602
- - Runtimes: [runtimes.md](runtimes.md)
603
- - Official Render Docs: https://render.com/docs
1
+ # Render Configuration Guide
2
+
3
+ Common configuration patterns, best practices, and troubleshooting for Render deployments.
4
+
5
+ ## Environment Variables
6
+
7
+ ### Required vs Optional Variables
8
+
9
+ **Always declare ALL environment variables in render.yaml**, even if values are provided by user later.
10
+
11
+ **Three categories:**
12
+
13
+ 1. **Configuration values** (hardcoded):
14
+ ```yaml
15
+ envVars:
16
+ - key: NODE_ENV
17
+ value: production
18
+ - key: LOG_LEVEL
19
+ value: info
20
+ - key: API_URL
21
+ value: https://api.example.com
22
+ ```
23
+
24
+ 2. **Secrets** (user provides):
25
+ ```yaml
26
+ envVars:
27
+ - key: JWT_SECRET
28
+ sync: false
29
+ - key: STRIPE_SECRET_KEY
30
+ sync: false
31
+ - key: API_KEY
32
+ sync: false
33
+ ```
34
+
35
+ 3. **Auto-generated** (Render provides):
36
+ ```yaml
37
+ envVars:
38
+ - key: SESSION_SECRET
39
+ generateValue: true
40
+ - key: ENCRYPTION_KEY
41
+ generateValue: true
42
+ ```
43
+
44
+ ### Database Connection Patterns
45
+
46
+ **PostgreSQL:**
47
+ ```yaml
48
+ envVars:
49
+ - key: DATABASE_URL
50
+ fromDatabase:
51
+ name: postgres
52
+ property: connectionString
53
+ ```
54
+
55
+ **Redis:**
56
+ ```yaml
57
+ envVars:
58
+ - key: REDIS_URL
59
+ fromDatabase:
60
+ name: redis
61
+ property: connectionString
62
+ ```
63
+
64
+ **Multiple databases:**
65
+ ```yaml
66
+ envVars:
67
+ - key: PRIMARY_DB_URL
68
+ fromDatabase:
69
+ name: postgres-primary
70
+ property: connectionString
71
+ - key: ANALYTICS_DB_URL
72
+ fromDatabase:
73
+ name: postgres-analytics
74
+ property: connectionString
75
+ - key: CACHE_URL
76
+ fromDatabase:
77
+ name: redis
78
+ property: connectionString
79
+ ```
80
+
81
+ ### Cross-Service References
82
+
83
+ Reference other services in your account:
84
+
85
+ ```yaml
86
+ services:
87
+ - type: web
88
+ name: frontend
89
+ runtime: node
90
+ envVars:
91
+ - key: API_URL
92
+ fromService:
93
+ name: backend-api
94
+ type: web
95
+ property: host # or hostport, port
96
+
97
+ - type: web
98
+ name: backend-api
99
+ runtime: node
100
+ ```
101
+
102
+ **Available properties:**
103
+ - `host`: Service hostname
104
+ - `port`: Service port
105
+ - `hostport`: Combined `host:port`
106
+
107
+ ### Environment Variable Groups
108
+
109
+ Share common configuration across services:
110
+
111
+ ```yaml
112
+ envVarGroups:
113
+ - name: common-config
114
+ envVars:
115
+ - key: NODE_ENV
116
+ value: production
117
+ - key: LOG_LEVEL
118
+ value: info
119
+ - key: TZ
120
+ value: UTC
121
+
122
+ services:
123
+ - type: web
124
+ name: web-app
125
+ runtime: node
126
+ envVars:
127
+ - fromGroup: common-config
128
+ - key: PORT
129
+ value: 10000
130
+
131
+ - type: worker
132
+ name: worker
133
+ runtime: node
134
+ envVars:
135
+ - fromGroup: common-config
136
+ ```
137
+
138
+ ---
139
+
140
+ ## Port Binding
141
+
142
+ ### The Port Binding Requirement
143
+
144
+ **CRITICAL:** Web services must bind to `0.0.0.0:$PORT`
145
+
146
+ **Why this matters:**
147
+ - Render sets `PORT` environment variable (default: 10000)
148
+ - Services must bind to `0.0.0.0` (not `localhost` or `127.0.0.1`)
149
+ - Health checks fail if port binding is incorrect
150
+ - Deployment will fail or service won't receive traffic
151
+
152
+ ### Code Examples by Language
153
+
154
+ **Node.js / Express:**
155
+ ```javascript
156
+ const express = require('express');
157
+ const app = express();
158
+
159
+ const PORT = process.env.PORT || 3000;
160
+
161
+ app.listen(PORT, '0.0.0.0', () => {
162
+ console.log(`Server running on port ${PORT}`);
163
+ });
164
+ ```
165
+
166
+ **Python / Flask:**
167
+ ```python
168
+ import os
169
+ from flask import Flask
170
+
171
+ app = Flask(__name__)
172
+
173
+ if __name__ == '__main__':
174
+ port = int(os.environ.get('PORT', 5000))
175
+ app.run(host='0.0.0.0', port=port)
176
+ ```
177
+
178
+ **Python / Django:**
179
+
180
+ In `settings.py`:
181
+ ```python
182
+ # Django runs on port specified by environment
183
+ ALLOWED_HOSTS = ['*']
184
+ ```
185
+
186
+ Start command in render.yaml:
187
+ ```yaml
188
+ startCommand: gunicorn config.wsgi:application --bind 0.0.0.0:$PORT
189
+ ```
190
+
191
+ **Python / FastAPI:**
192
+ ```python
193
+ import os
194
+ import uvicorn
195
+ from fastapi import FastAPI
196
+
197
+ app = FastAPI()
198
+
199
+ if __name__ == "__main__":
200
+ port = int(os.environ.get("PORT", 8000))
201
+ uvicorn.run(app, host="0.0.0.0", port=port)
202
+ ```
203
+
204
+ Start command:
205
+ ```yaml
206
+ startCommand: uvicorn main:app --host 0.0.0.0 --port $PORT
207
+ ```
208
+
209
+ **Go:**
210
+ ```go
211
+ package main
212
+
213
+ import (
214
+ "fmt"
215
+ "net/http"
216
+ "os"
217
+ )
218
+
219
+ func main() {
220
+ port := os.Getenv("PORT")
221
+ if port == "" {
222
+ port = "3000"
223
+ }
224
+
225
+ http.HandleFunc("/", handler)
226
+ fmt.Printf("Server starting on port %s\n", port)
227
+ http.ListenAndServe(":"+port, nil)
228
+ }
229
+ ```
230
+
231
+ **Ruby / Rails:**
232
+
233
+ In `config/puma.rb`:
234
+ ```ruby
235
+ port ENV.fetch("PORT") { 3000 }
236
+ bind "tcp://0.0.0.0:#{ENV.fetch('PORT', 3000)}"
237
+ ```
238
+
239
+ **Rust / Actix:**
240
+ ```rust
241
+ use actix_web::{App, HttpServer};
242
+ use std::env;
243
+
244
+ #[actix_web::main]
245
+ async fn main() -> std::io::Result<()> {
246
+ let port = env::var("PORT").unwrap_or_else(|_| "8080".to_string());
247
+ let addr = format!("0.0.0.0:{}", port);
248
+
249
+ HttpServer::new(|| App::new())
250
+ .bind(&addr)?
251
+ .run()
252
+ .await
253
+ }
254
+ ```
255
+
256
+ ---
257
+
258
+ ## Build Commands
259
+
260
+ ### Non-Interactive Flags
261
+
262
+ **Always use non-interactive flags** to prevent builds from hanging waiting for input.
263
+
264
+ **npm (Node.js):**
265
+ ```yaml
266
+ buildCommand: npm ci
267
+ # NOT: npm install
268
+ ```
269
+
270
+ **pip (Python):**
271
+ ```yaml
272
+ buildCommand: pip install -r requirements.txt
273
+ # Already non-interactive
274
+ ```
275
+
276
+ **apt (System packages):**
277
+ ```yaml
278
+ buildCommand: apt-get update && apt-get install -y libpq-dev
279
+ # Use -y flag to auto-confirm
280
+ ```
281
+
282
+ **bundler (Ruby):**
283
+ ```yaml
284
+ buildCommand: bundle install --jobs=4 --retry=3
285
+ ```
286
+
287
+ ### Build with Additional Steps
288
+
289
+ **Node.js with build step:**
290
+ ```yaml
291
+ buildCommand: npm ci && npm run build
292
+ ```
293
+
294
+ **Python Django with static files:**
295
+ ```yaml
296
+ buildCommand: pip install -r requirements.txt && python manage.py collectstatic --no-input
297
+ ```
298
+
299
+ **Ruby Rails with assets:**
300
+ ```yaml
301
+ buildCommand: bundle install && bundle exec rails assets:precompile
302
+ ```
303
+
304
+ ### Build Timeouts
305
+
306
+ **Free tier:** 15 minutes
307
+ **Paid tiers:** Configurable
308
+
309
+ **If builds timeout:**
310
+ 1. Optimize dependencies (remove unused packages)
311
+ 2. Use build caching
312
+ 3. Consider pre-building in CI/CD
313
+ 4. Upgrade to paid tier for longer timeouts
314
+
315
+ ---
316
+
317
+ ## Database Connections
318
+
319
+ ### Internal vs External URLs
320
+
321
+ **Use internal URLs for better performance:**
322
+
323
+ When using `fromDatabase`, Render automatically provides internal `.render-internal.com` URLs:
324
+
325
+ ```yaml
326
+ envVars:
327
+ - key: DATABASE_URL
328
+ fromDatabase:
329
+ name: postgres
330
+ property: connectionString
331
+ ```
332
+
333
+ This provides: `postgresql://user:pass@postgres.render-internal.com:5432/db`
334
+
335
+ **Benefits:**
336
+ - Lower latency (same data center)
337
+ - No external bandwidth charges
338
+ - Automatic internal DNS
339
+
340
+ ### Connection Pooling
341
+
342
+ **Node.js / PostgreSQL:**
343
+ ```javascript
344
+ const { Pool } = require('pg');
345
+
346
+ const pool = new Pool({
347
+ connectionString: process.env.DATABASE_URL,
348
+ ssl: process.env.NODE_ENV === 'production' ? { rejectUnauthorized: false } : false,
349
+ max: 20, // Maximum pool size
350
+ idleTimeoutMillis: 30000,
351
+ connectionTimeoutMillis: 2000,
352
+ });
353
+ ```
354
+
355
+ **Python / PostgreSQL:**
356
+ ```python
357
+ import psycopg2.pool
358
+
359
+ pool = psycopg2.pool.SimpleConnectionPool(
360
+ minconn=1,
361
+ maxconn=20,
362
+ dsn=os.environ['DATABASE_URL']
363
+ )
364
+ ```
365
+
366
+ **Django Settings:**
367
+ ```python
368
+ DATABASES = {
369
+ 'default': {
370
+ 'ENGINE': 'django.db.backends.postgresql',
371
+ 'URL': os.environ['DATABASE_URL'],
372
+ 'CONN_MAX_AGE': 600, # Connection pooling
373
+ }
374
+ }
375
+ ```
376
+
377
+ ### Database Migrations
378
+
379
+ **Run migrations during build:**
380
+
381
+ **Django:**
382
+ ```yaml
383
+ buildCommand: pip install -r requirements.txt && python manage.py migrate
384
+ ```
385
+
386
+ **Rails:**
387
+ ```yaml
388
+ buildCommand: bundle install && bundle exec rails db:migrate
389
+ ```
390
+
391
+ **Node.js / Prisma:**
392
+ ```yaml
393
+ buildCommand: npm ci && npx prisma migrate deploy
394
+ ```
395
+
396
+ ---
397
+
398
+ ## Free Tier Limitations
399
+
400
+ ### What's Included
401
+
402
+ **Free tier provides:**
403
+ - 1 web service
404
+ - 1 PostgreSQL database (1 GB storage, 97 MB RAM)
405
+ - 750 hours/month compute
406
+ - 512 MB RAM per service
407
+ - 0.5 CPU per service
408
+ - 100 GB bandwidth/month
409
+
410
+ ### Resource Limits
411
+
412
+ **Memory (512 MB):**
413
+ - Monitor memory usage in logs
414
+ - Optimize for memory-constrained environments
415
+ - Use lightweight dependencies
416
+
417
+ **CPU (0.5 cores):**
418
+ - Suitable for low-traffic applications
419
+ - Consider upgrading for higher traffic
420
+
421
+ **Spin Down (Free services):**
422
+ - Services spin down after 15 minutes of inactivity
423
+ - First request after spin down takes ~30 seconds (cold start)
424
+ - Upgrade to paid tier for always-on services
425
+
426
+ ### When to Upgrade
427
+
428
+ **Upgrade to paid plan when:**
429
+ - Need more than 1 web service
430
+ - Need always-on services (no spin down)
431
+ - Traffic exceeds free tier limits
432
+ - Need more memory/CPU
433
+ - Need faster build times
434
+ - Need preview environments
435
+
436
+ ---
437
+
438
+ ## Health Checks
439
+
440
+ ### Adding Health Check Endpoints
441
+
442
+ **Node.js / Express:**
443
+ ```javascript
444
+ app.get('/health', (req, res) => {
445
+ res.status(200).json({
446
+ status: 'ok',
447
+ timestamp: new Date().toISOString()
448
+ });
449
+ });
450
+ ```
451
+
452
+ **Python / Flask:**
453
+ ```python
454
+ @app.route('/health')
455
+ def health():
456
+ return {'status': 'ok'}, 200
457
+ ```
458
+
459
+ **Python / FastAPI:**
460
+ ```python
461
+ @app.get("/health")
462
+ async def health():
463
+ return {"status": "ok"}
464
+ ```
465
+
466
+ **Go:**
467
+ ```go
468
+ http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
469
+ w.WriteHeader(http.StatusOK)
470
+ w.Write([]byte(`{"status":"ok"}`))
471
+ })
472
+ ```
473
+
474
+ ### Configure in render.yaml
475
+
476
+ ```yaml
477
+ services:
478
+ - type: web
479
+ name: my-app
480
+ runtime: node
481
+ healthCheckPath: /health
482
+ ```
483
+
484
+ **Benefits:**
485
+ - Faster deployment detection
486
+ - Better monitoring
487
+ - Automatic restart on health check failures
488
+
489
+ ---
490
+
491
+ ## Common Deployment Issues
492
+
493
+ ### Issue 1: Missing Environment Variables
494
+
495
+ **Symptom:** Service crashes with "undefined variable" errors
496
+
497
+ **Solution:** Add all required env vars to render.yaml:
498
+ ```yaml
499
+ envVars:
500
+ - key: DATABASE_URL
501
+ fromDatabase:
502
+ name: postgres
503
+ property: connectionString
504
+ - key: JWT_SECRET
505
+ sync: false # User fills in Dashboard
506
+ ```
507
+
508
+ ### Issue 2: Port Binding Errors
509
+
510
+ **Symptom:** `EADDRINUSE` or health check timeout errors
511
+
512
+ **Solution:** Ensure app binds to `0.0.0.0:$PORT`:
513
+ ```javascript
514
+ const PORT = process.env.PORT || 3000;
515
+ app.listen(PORT, '0.0.0.0');
516
+ ```
517
+
518
+ ### Issue 3: Build Hangs
519
+
520
+ **Symptom:** Build times out after 15 minutes
521
+
522
+ **Solution:** Use non-interactive build commands:
523
+ ```yaml
524
+ buildCommand: npm ci # NOT npm install
525
+ ```
526
+
527
+ ### Issue 4: Database Connection Fails
528
+
529
+ **Symptom:** `ECONNREFUSED` on port 5432
530
+
531
+ **Solutions:**
532
+ 1. Use `fromDatabase` for automatic internal URLs
533
+ 2. Enable SSL for external connections
534
+ 3. Check `ipAllowList` settings
535
+
536
+ ### Issue 5: Static Site 404s
537
+
538
+ **Symptom:** Client-side routes return 404
539
+
540
+ **Solution:** Add SPA rewrite rules:
541
+ ```yaml
542
+ routes:
543
+ - type: rewrite
544
+ source: /*
545
+ destination: /index.html
546
+ ```
547
+
548
+ ### Issue 6: Out of Memory (OOM)
549
+
550
+ **Symptom:** Service crashes with `JavaScript heap out of memory`
551
+
552
+ **Solutions:**
553
+ 1. Optimize application memory usage
554
+ 2. Reduce dependency size
555
+ 3. Upgrade to higher plan with more RAM
556
+
557
+ ---
558
+
559
+ ## Best Practices Checklist
560
+
561
+ **Environment Variables:**
562
+ - [ ] All env vars declared in render.yaml
563
+ - [ ] Secrets marked with `sync: false`
564
+ - [ ] Database URLs use `fromDatabase` references
565
+
566
+ **Port Binding:**
567
+ - [ ] App binds to `process.env.PORT`
568
+ - [ ] Bind to `0.0.0.0` (not `localhost`)
569
+
570
+ **Build Commands:**
571
+ - [ ] Use non-interactive flags (`npm ci`, `-y`, etc.)
572
+ - [ ] Build completes under 15 minutes (free tier)
573
+
574
+ **Start Commands:**
575
+ - [ ] Command starts HTTP server correctly
576
+ - [ ] Server binds to correct port
577
+
578
+ **Health Checks:**
579
+ - [ ] `/health` endpoint implemented
580
+ - [ ] Returns 200 status code
581
+
582
+ **Database:**
583
+ - [ ] Connection pooling configured
584
+ - [ ] Using internal URLs (`.render-internal.com`)
585
+ - [ ] SSL enabled if needed
586
+
587
+ **Plans:**
588
+ - [ ] Using `plan: free` by default
589
+ - [ ] Documented upgrade path for users
590
+
591
+ **Git Repository:**
592
+ - [ ] render.yaml committed to repository
593
+ - [ ] Pushed to git remote (GitHub/GitLab/Bitbucket)
594
+ - [ ] Branch specified in render.yaml (if not main)
595
+
596
+ ---
597
+
598
+ ## Additional Resources
599
+
600
+ - Blueprint Specification: [blueprint-spec.md](blueprint-spec.md)
601
+ - Service Types: [service-types.md](service-types.md)
602
+ - Runtimes: [runtimes.md](runtimes.md)
603
+ - Official Render Docs: https://render.com/docs