@vodailoc/kilo-kit-mcp 1.1.0 → 1.2.0

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 (582) 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 +321 -267
  5. package/mcp/README.md +64 -12
  6. package/mcp/dist/formatters.js +142 -1
  7. package/mcp/dist/orchestration-audit.js +20 -0
  8. package/mcp/dist/orchestration-memory.js +258 -0
  9. package/mcp/dist/orchestration-types.js +1 -0
  10. package/mcp/dist/orchestrator.js +222 -0
  11. package/mcp/dist/question-templates.js +249 -0
  12. package/mcp/dist/route-analytics.js +149 -0
  13. package/mcp/dist/router.js +75 -82
  14. package/mcp/dist/routing-policy-data.js +241 -0
  15. package/mcp/dist/routing-policy.js +145 -0
  16. package/mcp/dist/server.js +93 -4
  17. package/mcp/dist/smoke-env.js +18 -0
  18. package/mcp/dist/smoke.js +68 -1
  19. package/mcp/package.json +1 -2
  20. package/package.json +3 -2
  21. package/skills/README.md +647 -647
  22. package/skills/SKILLS_INDEX.md +139 -139
  23. package/skills/ai-media/ai-multimodal/.env.example +97 -97
  24. package/skills/ai-media/ai-multimodal/SKILL.md +357 -357
  25. package/skills/ai-media/ai-multimodal/references/audio-processing.md +373 -373
  26. package/skills/ai-media/ai-multimodal/references/image-generation.md +558 -558
  27. package/skills/ai-media/ai-multimodal/references/video-analysis.md +502 -502
  28. package/skills/ai-media/ai-multimodal/references/vision-understanding.md +483 -483
  29. package/skills/ai-media/ai-multimodal/scripts/document_converter.py +395 -395
  30. package/skills/ai-media/ai-multimodal/scripts/gemini_batch_process.py +480 -480
  31. package/skills/ai-media/ai-multimodal/scripts/media_optimizer.py +506 -506
  32. package/skills/ai-media/ai-multimodal/scripts/requirements.txt +26 -26
  33. package/skills/ai-media/ai-multimodal/scripts/tests/requirements.txt +20 -20
  34. package/skills/ai-media/ai-multimodal/scripts/tests/test_document_converter.py +299 -299
  35. package/skills/ai-media/ai-multimodal/scripts/tests/test_gemini_batch_process.py +362 -362
  36. package/skills/ai-media/ai-multimodal/scripts/tests/test_media_optimizer.py +373 -373
  37. package/skills/ai-media/media-processing/SKILL.md +358 -358
  38. package/skills/ai-media/media-processing/references/ffmpeg-encoding.md +358 -358
  39. package/skills/ai-media/media-processing/references/ffmpeg-filters.md +503 -503
  40. package/skills/ai-media/media-processing/references/ffmpeg-streaming.md +403 -403
  41. package/skills/ai-media/media-processing/references/format-compatibility.md +375 -375
  42. package/skills/ai-media/media-processing/references/imagemagick-batch.md +612 -612
  43. package/skills/ai-media/media-processing/references/imagemagick-editing.md +623 -623
  44. package/skills/ai-media/media-processing/scripts/batch_resize.py +342 -342
  45. package/skills/ai-media/media-processing/scripts/media_convert.py +311 -311
  46. package/skills/ai-media/media-processing/scripts/requirements.txt +24 -24
  47. package/skills/ai-media/media-processing/scripts/tests/requirements.txt +2 -2
  48. package/skills/ai-media/media-processing/scripts/tests/test_batch_resize.py +372 -372
  49. package/skills/ai-media/media-processing/scripts/tests/test_media_convert.py +259 -259
  50. package/skills/ai-media/media-processing/scripts/tests/test_video_optimize.py +397 -397
  51. package/skills/ai-media/media-processing/scripts/video_optimize.py +414 -414
  52. package/skills/ai-media/screenshot/LICENSE.txt +201 -201
  53. package/skills/ai-media/screenshot/SKILL.md +267 -267
  54. package/skills/ai-media/screenshot/agents/openai.yaml +6 -6
  55. package/skills/ai-media/screenshot/assets/screenshot-small.svg +5 -5
  56. package/skills/ai-media/screenshot/scripts/ensure_macos_permissions.sh +54 -54
  57. package/skills/ai-media/screenshot/scripts/macos_display_info.swift +22 -22
  58. package/skills/ai-media/screenshot/scripts/macos_permissions.swift +40 -40
  59. package/skills/ai-media/screenshot/scripts/macos_window_info.swift +126 -126
  60. package/skills/ai-media/screenshot/scripts/take_screenshot.ps1 +163 -163
  61. package/skills/ai-media/screenshot/scripts/take_screenshot.py +585 -585
  62. package/skills/ai-media/sora/LICENSE.txt +201 -201
  63. package/skills/ai-media/sora/SKILL.md +153 -153
  64. package/skills/ai-media/sora/agents/openai.yaml +6 -6
  65. package/skills/ai-media/sora/assets/sora-small.svg +4 -4
  66. package/skills/ai-media/sora/references/cinematic-shots.md +53 -53
  67. package/skills/ai-media/sora/references/cli.md +248 -248
  68. package/skills/ai-media/sora/references/codex-network.md +28 -28
  69. package/skills/ai-media/sora/references/prompting.md +137 -137
  70. package/skills/ai-media/sora/references/sample-prompts.md +95 -95
  71. package/skills/ai-media/sora/references/social-ads.md +42 -42
  72. package/skills/ai-media/sora/references/troubleshooting.md +58 -58
  73. package/skills/ai-media/sora/references/video-api.md +45 -45
  74. package/skills/ai-media/sora/scripts/sora.py +970 -970
  75. package/skills/design/aesthetic/SKILL.md +121 -121
  76. package/skills/design/aesthetic/assets/design-guideline-template.md +163 -163
  77. package/skills/design/aesthetic/assets/design-story-template.md +135 -135
  78. package/skills/design/aesthetic/references/design-principles.md +62 -62
  79. package/skills/design/aesthetic/references/design-resources.md +75 -75
  80. package/skills/design/aesthetic/references/micro-interactions.md +53 -53
  81. package/skills/design/aesthetic/references/storytelling-design.md +50 -50
  82. package/skills/design/figma/LICENSE.txt +202 -202
  83. package/skills/design/figma/SKILL.md +42 -42
  84. package/skills/design/figma/agents/openai.yaml +14 -14
  85. package/skills/design/figma/assets/figma-small.svg +3 -3
  86. package/skills/design/figma/assets/icon.svg +28 -28
  87. package/skills/design/figma/references/figma-mcp-config.md +35 -35
  88. package/skills/design/figma/references/figma-tools-and-prompts.md +34 -34
  89. package/skills/design/figma-implement-design/LICENSE.txt +202 -202
  90. package/skills/design/figma-implement-design/SKILL.md +264 -264
  91. package/skills/design/figma-implement-design/agents/openai.yaml +14 -14
  92. package/skills/design/figma-implement-design/assets/figma-small.svg +3 -3
  93. package/skills/design/figma-implement-design/assets/icon.svg +28 -28
  94. package/skills/design/frontend-design/SKILL.md +41 -41
  95. package/skills/design/frontend-design/references/animejs.md +395 -395
  96. package/skills/design/ui-styling/LICENSE.txt +201 -201
  97. package/skills/design/ui-styling/SKILL.md +321 -321
  98. package/skills/design/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -93
  99. package/skills/design/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -93
  100. package/skills/design/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -93
  101. package/skills/design/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -93
  102. package/skills/design/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -93
  103. package/skills/design/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -93
  104. package/skills/design/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -94
  105. package/skills/design/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -93
  106. package/skills/design/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -93
  107. package/skills/design/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -93
  108. package/skills/design/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -93
  109. package/skills/design/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -93
  110. package/skills/design/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -93
  111. package/skills/design/ui-styling/canvas-fonts/Jura-OFL.txt +93 -93
  112. package/skills/design/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -93
  113. package/skills/design/ui-styling/canvas-fonts/Lora-OFL.txt +93 -93
  114. package/skills/design/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -93
  115. package/skills/design/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -93
  116. package/skills/design/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -93
  117. package/skills/design/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -93
  118. package/skills/design/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -93
  119. package/skills/design/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -93
  120. package/skills/design/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -93
  121. package/skills/design/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -93
  122. package/skills/design/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -93
  123. package/skills/design/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -93
  124. package/skills/design/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -93
  125. package/skills/design/ui-styling/references/canvas-design-system.md +320 -320
  126. package/skills/design/ui-styling/references/shadcn-accessibility.md +471 -471
  127. package/skills/design/ui-styling/references/shadcn-components.md +424 -424
  128. package/skills/design/ui-styling/references/shadcn-theming.md +373 -373
  129. package/skills/design/ui-styling/references/tailwind-customization.md +483 -483
  130. package/skills/design/ui-styling/references/tailwind-responsive.md +382 -382
  131. package/skills/design/ui-styling/references/tailwind-utilities.md +455 -455
  132. package/skills/design/ui-styling/scripts/requirements.txt +17 -17
  133. package/skills/design/ui-styling/scripts/shadcn_add.py +292 -292
  134. package/skills/design/ui-styling/scripts/tailwind_config_gen.py +456 -456
  135. package/skills/design/ui-styling/scripts/tests/requirements.txt +3 -3
  136. package/skills/design/ui-styling/scripts/tests/test_shadcn_add.py +266 -266
  137. package/skills/design/ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -336
  138. package/skills/engineering/aspnet-core/LICENSE.txt +201 -201
  139. package/skills/engineering/aspnet-core/SKILL.md +61 -61
  140. package/skills/engineering/aspnet-core/agents/openai.yaml +5 -5
  141. package/skills/engineering/aspnet-core/references/_sections.md +40 -40
  142. package/skills/engineering/aspnet-core/references/apis-minimal-and-controllers.md +81 -81
  143. package/skills/engineering/aspnet-core/references/data-state-and-services.md +69 -69
  144. package/skills/engineering/aspnet-core/references/program-and-pipeline.md +103 -103
  145. package/skills/engineering/aspnet-core/references/realtime-grpc-and-background-work.md +58 -58
  146. package/skills/engineering/aspnet-core/references/security-and-identity.md +75 -75
  147. package/skills/engineering/aspnet-core/references/source-map.md +43 -43
  148. package/skills/engineering/aspnet-core/references/stack-selection.md +63 -63
  149. package/skills/engineering/aspnet-core/references/testing-performance-and-operations.md +92 -92
  150. package/skills/engineering/aspnet-core/references/ui-blazor.md +53 -53
  151. package/skills/engineering/aspnet-core/references/ui-mvc.md +56 -56
  152. package/skills/engineering/aspnet-core/references/ui-razor-pages.md +55 -55
  153. package/skills/engineering/aspnet-core/references/versioning-and-upgrades.md +51 -51
  154. package/skills/engineering/backend-development/SKILL.md +95 -95
  155. package/skills/engineering/backend-development/references/backend-api-design.md +495 -495
  156. package/skills/engineering/backend-development/references/backend-architecture.md +454 -454
  157. package/skills/engineering/backend-development/references/backend-authentication.md +338 -338
  158. package/skills/engineering/backend-development/references/backend-code-quality.md +659 -659
  159. package/skills/engineering/backend-development/references/backend-debugging.md +904 -904
  160. package/skills/engineering/backend-development/references/backend-devops.md +494 -494
  161. package/skills/engineering/backend-development/references/backend-mindset.md +387 -387
  162. package/skills/engineering/backend-development/references/backend-performance.md +397 -397
  163. package/skills/engineering/backend-development/references/backend-security.md +290 -290
  164. package/skills/engineering/backend-development/references/backend-technologies.md +256 -256
  165. package/skills/engineering/backend-development/references/backend-testing.md +429 -429
  166. package/skills/engineering/better-auth/SKILL.md +204 -204
  167. package/skills/engineering/better-auth/references/advanced-features.md +553 -553
  168. package/skills/engineering/better-auth/references/database-integration.md +577 -577
  169. package/skills/engineering/better-auth/references/email-password-auth.md +416 -416
  170. package/skills/engineering/better-auth/references/oauth-providers.md +430 -430
  171. package/skills/engineering/better-auth/scripts/better_auth_init.py +521 -521
  172. package/skills/engineering/better-auth/scripts/requirements.txt +15 -15
  173. package/skills/engineering/better-auth/scripts/tests/test_better_auth_init.py +421 -421
  174. package/skills/engineering/code-review/SKILL.md +140 -140
  175. package/skills/engineering/code-review/references/code-review-reception.md +208 -208
  176. package/skills/engineering/code-review/references/requesting-code-review.md +104 -104
  177. package/skills/engineering/code-review/references/verification-before-completion.md +138 -138
  178. package/skills/engineering/context-engineering/SKILL.md +86 -86
  179. package/skills/engineering/context-engineering/references/context-compression.md +84 -84
  180. package/skills/engineering/context-engineering/references/context-degradation.md +93 -93
  181. package/skills/engineering/context-engineering/references/context-fundamentals.md +75 -75
  182. package/skills/engineering/context-engineering/references/context-optimization.md +82 -82
  183. package/skills/engineering/context-engineering/references/evaluation.md +89 -89
  184. package/skills/engineering/context-engineering/references/memory-systems.md +88 -88
  185. package/skills/engineering/context-engineering/references/multi-agent-patterns.md +90 -90
  186. package/skills/engineering/context-engineering/references/project-development.md +97 -97
  187. package/skills/engineering/context-engineering/references/tool-design.md +86 -86
  188. package/skills/engineering/context-engineering/scripts/compression_evaluator.py +329 -329
  189. package/skills/engineering/context-engineering/scripts/context_analyzer.py +294 -294
  190. package/skills/engineering/databases/SKILL.md +232 -232
  191. package/skills/engineering/databases/references/mongodb-aggregation.md +447 -447
  192. package/skills/engineering/databases/references/mongodb-atlas.md +465 -465
  193. package/skills/engineering/databases/references/mongodb-crud.md +408 -408
  194. package/skills/engineering/databases/references/mongodb-indexing.md +442 -442
  195. package/skills/engineering/databases/references/postgresql-administration.md +594 -594
  196. package/skills/engineering/databases/references/postgresql-performance.md +527 -527
  197. package/skills/engineering/databases/references/postgresql-psql-cli.md +467 -467
  198. package/skills/engineering/databases/references/postgresql-queries.md +475 -475
  199. package/skills/engineering/databases/scripts/db_backup.py +502 -502
  200. package/skills/engineering/databases/scripts/db_migrate.py +414 -414
  201. package/skills/engineering/databases/scripts/db_performance_check.py +444 -444
  202. package/skills/engineering/databases/scripts/requirements.txt +20 -20
  203. package/skills/engineering/databases/scripts/tests/requirements.txt +4 -4
  204. package/skills/engineering/databases/scripts/tests/test_db_backup.py +340 -340
  205. package/skills/engineering/databases/scripts/tests/test_db_migrate.py +277 -277
  206. package/skills/engineering/databases/scripts/tests/test_db_performance_check.py +370 -370
  207. package/skills/engineering/diagnose/SKILL.md +117 -117
  208. package/skills/engineering/diagnose/scripts/hitl-loop.template.sh +41 -41
  209. package/skills/engineering/docs-seeker/SKILL.md +207 -207
  210. package/skills/engineering/docs-seeker/WORKFLOWS.md +505 -505
  211. package/skills/engineering/docs-seeker/references/best-practices.md +632 -632
  212. package/skills/engineering/docs-seeker/references/documentation-sources.md +461 -461
  213. package/skills/engineering/docs-seeker/references/error-handling.md +621 -621
  214. package/skills/engineering/docs-seeker/references/limitations.md +821 -821
  215. package/skills/engineering/docs-seeker/references/performance.md +574 -574
  216. package/skills/engineering/docs-seeker/references/tool-selection.md +262 -262
  217. package/skills/engineering/frontend-development/SKILL.md +398 -398
  218. package/skills/engineering/frontend-development/resources/common-patterns.md +330 -330
  219. package/skills/engineering/frontend-development/resources/complete-examples.md +871 -871
  220. package/skills/engineering/frontend-development/resources/component-patterns.md +501 -501
  221. package/skills/engineering/frontend-development/resources/data-fetching.md +766 -766
  222. package/skills/engineering/frontend-development/resources/file-organization.md +501 -501
  223. package/skills/engineering/frontend-development/resources/loading-and-error-states.md +500 -500
  224. package/skills/engineering/frontend-development/resources/performance.md +405 -405
  225. package/skills/engineering/frontend-development/resources/routing-guide.md +363 -363
  226. package/skills/engineering/frontend-development/resources/styling-guide.md +427 -427
  227. package/skills/engineering/frontend-development/resources/typescript-standards.md +417 -417
  228. package/skills/engineering/improve-codebase-architecture/DEEPENING.md +37 -37
  229. package/skills/engineering/improve-codebase-architecture/INTERFACE-DESIGN.md +44 -44
  230. package/skills/engineering/improve-codebase-architecture/LANGUAGE.md +53 -53
  231. package/skills/engineering/improve-codebase-architecture/SKILL.md +71 -71
  232. package/skills/engineering/openai-docs/LICENSE.txt +201 -201
  233. package/skills/engineering/openai-docs/SKILL.md +69 -69
  234. package/skills/engineering/openai-docs/agents/openai.yaml +14 -14
  235. package/skills/engineering/openai-docs/assets/openai-small.svg +3 -3
  236. package/skills/engineering/openai-docs/references/gpt-5p4-prompting-guide.md +433 -433
  237. package/skills/engineering/openai-docs/references/latest-model.md +35 -35
  238. package/skills/engineering/openai-docs/references/upgrading-to-gpt-5p4.md +164 -164
  239. package/skills/engineering/playwright/LICENSE.txt +201 -201
  240. package/skills/engineering/playwright/NOTICE.txt +14 -14
  241. package/skills/engineering/playwright/SKILL.md +147 -147
  242. package/skills/engineering/playwright/agents/openai.yaml +6 -6
  243. package/skills/engineering/playwright/assets/playwright-small.svg +3 -3
  244. package/skills/engineering/playwright/references/cli.md +116 -116
  245. package/skills/engineering/playwright/references/workflows.md +95 -95
  246. package/skills/engineering/playwright/scripts/playwright_cli.sh +25 -25
  247. package/skills/engineering/playwright-interactive/LICENSE.txt +201 -201
  248. package/skills/engineering/playwright-interactive/NOTICE.txt +13 -13
  249. package/skills/engineering/playwright-interactive/SKILL.md +689 -689
  250. package/skills/engineering/playwright-interactive/agents/openai.yaml +6 -6
  251. package/skills/engineering/playwright-interactive/assets/playwright-small.svg +3 -3
  252. package/skills/engineering/render-deploy/LICENSE.txt +201 -201
  253. package/skills/engineering/render-deploy/SKILL.md +479 -479
  254. package/skills/engineering/render-deploy/agents/openai.yaml +14 -14
  255. package/skills/engineering/render-deploy/assets/docker.yaml +62 -62
  256. package/skills/engineering/render-deploy/assets/go-api.yaml +35 -35
  257. package/skills/engineering/render-deploy/assets/nextjs-postgres.yaml +35 -35
  258. package/skills/engineering/render-deploy/assets/node-express.yaml +25 -25
  259. package/skills/engineering/render-deploy/assets/python-django.yaml +89 -89
  260. package/skills/engineering/render-deploy/assets/render-small.svg +3 -3
  261. package/skills/engineering/render-deploy/assets/static-site.yaml +54 -54
  262. package/skills/engineering/render-deploy/references/blueprint-spec.md +718 -718
  263. package/skills/engineering/render-deploy/references/codebase-analysis.md +49 -49
  264. package/skills/engineering/render-deploy/references/configuration-guide.md +603 -603
  265. package/skills/engineering/render-deploy/references/deployment-details.md +224 -224
  266. package/skills/engineering/render-deploy/references/direct-creation.md +113 -113
  267. package/skills/engineering/render-deploy/references/error-patterns.md +13 -13
  268. package/skills/engineering/render-deploy/references/post-deploy-checks.md +36 -36
  269. package/skills/engineering/render-deploy/references/runtimes.md +473 -473
  270. package/skills/engineering/render-deploy/references/service-types.md +450 -450
  271. package/skills/engineering/render-deploy/references/troubleshooting-basics.md +36 -36
  272. package/skills/engineering/repomix/SKILL.md +215 -215
  273. package/skills/engineering/repomix/references/configuration.md +211 -211
  274. package/skills/engineering/repomix/references/usage-patterns.md +232 -232
  275. package/skills/engineering/repomix/scripts/README.md +179 -179
  276. package/skills/engineering/repomix/scripts/repomix_batch.py +455 -455
  277. package/skills/engineering/repomix/scripts/repos.example.json +15 -15
  278. package/skills/engineering/repomix/scripts/requirements.txt +15 -15
  279. package/skills/engineering/repomix/scripts/tests/test_repomix_batch.py +531 -531
  280. package/skills/engineering/setup-matt-pocock-skills/SKILL.md +121 -121
  281. package/skills/engineering/setup-matt-pocock-skills/domain.md +51 -51
  282. package/skills/engineering/setup-matt-pocock-skills/issue-tracker-github.md +22 -22
  283. package/skills/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md +23 -23
  284. package/skills/engineering/setup-matt-pocock-skills/issue-tracker-local.md +19 -19
  285. package/skills/engineering/setup-matt-pocock-skills/triage-labels.md +15 -15
  286. package/skills/engineering/shopify/README.md +66 -66
  287. package/skills/engineering/shopify/SKILL.md +319 -319
  288. package/skills/engineering/shopify/references/app-development.md +470 -470
  289. package/skills/engineering/shopify/references/extensions.md +493 -493
  290. package/skills/engineering/shopify/references/themes.md +498 -498
  291. package/skills/engineering/shopify/scripts/requirements.txt +19 -19
  292. package/skills/engineering/shopify/scripts/shopify_init.py +423 -423
  293. package/skills/engineering/shopify/scripts/tests/test_shopify_init.py +385 -385
  294. package/skills/engineering/tdd/SKILL.md +109 -109
  295. package/skills/engineering/tdd/deep-modules.md +33 -33
  296. package/skills/engineering/tdd/interface-design.md +31 -31
  297. package/skills/engineering/tdd/mocking.md +59 -59
  298. package/skills/engineering/tdd/refactoring.md +10 -10
  299. package/skills/engineering/tdd/tests.md +61 -61
  300. package/skills/engineering/to-issues/SKILL.md +81 -81
  301. package/skills/engineering/to-prd/SKILL.md +74 -74
  302. package/skills/engineering/triage/AGENT-BRIEF.md +168 -168
  303. package/skills/engineering/triage/OUT-OF-SCOPE.md +101 -101
  304. package/skills/engineering/triage/SKILL.md +103 -103
  305. package/skills/engineering/web-frameworks/SKILL.md +324 -324
  306. package/skills/engineering/web-frameworks/references/nextjs-app-router.md +465 -465
  307. package/skills/engineering/web-frameworks/references/nextjs-data-fetching.md +459 -459
  308. package/skills/engineering/web-frameworks/references/nextjs-optimization.md +511 -511
  309. package/skills/engineering/web-frameworks/references/nextjs-server-components.md +495 -495
  310. package/skills/engineering/web-frameworks/references/remix-icon-integration.md +603 -603
  311. package/skills/engineering/web-frameworks/references/turborepo-caching.md +551 -551
  312. package/skills/engineering/web-frameworks/references/turborepo-pipelines.md +517 -517
  313. package/skills/engineering/web-frameworks/references/turborepo-setup.md +542 -542
  314. package/skills/engineering/web-frameworks/scripts/nextjs_init.py +547 -547
  315. package/skills/engineering/web-frameworks/scripts/requirements.txt +16 -16
  316. package/skills/engineering/web-frameworks/scripts/tests/requirements.txt +3 -3
  317. package/skills/engineering/web-frameworks/scripts/tests/test_nextjs_init.py +319 -319
  318. package/skills/engineering/web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -374
  319. package/skills/engineering/web-frameworks/scripts/turborepo_migrate.py +394 -394
  320. package/skills/engineering/write-a-skill/SKILL.md +117 -117
  321. package/skills/kilo-kit/SKILL.md +346 -346
  322. package/skills/kilo-kit/_template/SKILL.md +185 -185
  323. package/skills/kilo-kit/debugging/root-cause/SKILL.md +360 -360
  324. package/skills/kilo-kit/debugging/systematic/SKILL.md +339 -339
  325. package/skills/kilo-kit/debugging/verification/SKILL.md +424 -424
  326. package/skills/kilo-kit/development/backend/SKILL.md +540 -540
  327. package/skills/kilo-kit/development/security/SKILL.md +529 -529
  328. package/skills/kilo-kit/quality/code-review/SKILL.md +297 -297
  329. package/skills/kilo-kit/quality/testing/SKILL.md +540 -540
  330. package/skills/kilo-kit/references/output-formats.md +204 -204
  331. package/skills/kilo-kit/references/patterns.md +156 -156
  332. package/skills/kilo-kit/references/performance-benchmarks.md +90 -90
  333. package/skills/operations/chrome-devtools/SKILL.md +392 -392
  334. package/skills/operations/chrome-devtools/references/cdp-domains.md +694 -694
  335. package/skills/operations/chrome-devtools/references/performance-guide.md +940 -940
  336. package/skills/operations/chrome-devtools/references/puppeteer-reference.md +953 -953
  337. package/skills/operations/chrome-devtools/scripts/PERSISTENT-BROWSER.md +107 -107
  338. package/skills/operations/chrome-devtools/scripts/README.md +213 -213
  339. package/skills/operations/chrome-devtools/scripts/__tests__/selector.test.js +210 -210
  340. package/skills/operations/chrome-devtools/scripts/click.js +79 -79
  341. package/skills/operations/chrome-devtools/scripts/close-persistent.js +36 -36
  342. package/skills/operations/chrome-devtools/scripts/console.js +75 -75
  343. package/skills/operations/chrome-devtools/scripts/evaluate.js +49 -49
  344. package/skills/operations/chrome-devtools/scripts/fill.js +72 -72
  345. package/skills/operations/chrome-devtools/scripts/install-deps.sh +181 -181
  346. package/skills/operations/chrome-devtools/scripts/install.sh +83 -83
  347. package/skills/operations/chrome-devtools/scripts/launch-persistent.js +71 -71
  348. package/skills/operations/chrome-devtools/scripts/lib/browser.js +144 -144
  349. package/skills/operations/chrome-devtools/scripts/lib/selector.js +178 -178
  350. package/skills/operations/chrome-devtools/scripts/navigate.js +46 -46
  351. package/skills/operations/chrome-devtools/scripts/network.js +102 -102
  352. package/skills/operations/chrome-devtools/scripts/package-lock.json +1206 -1206
  353. package/skills/operations/chrome-devtools/scripts/package.json +15 -15
  354. package/skills/operations/chrome-devtools/scripts/performance.js +145 -145
  355. package/skills/operations/chrome-devtools/scripts/screenshot.js +180 -180
  356. package/skills/operations/chrome-devtools/scripts/snapshot.js +131 -131
  357. package/skills/operations/devops/.env.example +76 -76
  358. package/skills/operations/devops/SKILL.md +285 -285
  359. package/skills/operations/devops/references/browser-rendering.md +305 -305
  360. package/skills/operations/devops/references/cloudflare-d1-kv.md +123 -123
  361. package/skills/operations/devops/references/cloudflare-platform.md +271 -271
  362. package/skills/operations/devops/references/cloudflare-r2-storage.md +280 -280
  363. package/skills/operations/devops/references/cloudflare-workers-advanced.md +312 -312
  364. package/skills/operations/devops/references/cloudflare-workers-apis.md +309 -309
  365. package/skills/operations/devops/references/cloudflare-workers-basics.md +418 -418
  366. package/skills/operations/devops/references/docker-basics.md +297 -297
  367. package/skills/operations/devops/references/docker-compose.md +292 -292
  368. package/skills/operations/devops/references/gcloud-platform.md +297 -297
  369. package/skills/operations/devops/references/gcloud-services.md +304 -304
  370. package/skills/operations/devops/scripts/cloudflare_deploy.py +269 -269
  371. package/skills/operations/devops/scripts/docker_optimize.py +320 -320
  372. package/skills/operations/devops/scripts/requirements.txt +20 -20
  373. package/skills/operations/devops/scripts/tests/requirements.txt +3 -3
  374. package/skills/operations/devops/scripts/tests/test_cloudflare_deploy.py +285 -285
  375. package/skills/operations/devops/scripts/tests/test_docker_optimize.py +436 -436
  376. package/skills/operations/mcp-builder/LICENSE.txt +201 -201
  377. package/skills/operations/mcp-builder/SKILL.md +328 -328
  378. package/skills/operations/mcp-builder/reference/evaluation.md +601 -601
  379. package/skills/operations/mcp-builder/reference/mcp_best_practices.md +915 -915
  380. package/skills/operations/mcp-builder/reference/node_mcp_server.md +915 -915
  381. package/skills/operations/mcp-builder/reference/python_mcp_server.md +751 -751
  382. package/skills/operations/mcp-builder/scripts/connections.py +151 -151
  383. package/skills/operations/mcp-builder/scripts/evaluation.py +373 -373
  384. package/skills/operations/mcp-builder/scripts/example_evaluation.xml +22 -22
  385. package/skills/operations/mcp-builder/scripts/requirements.txt +2 -2
  386. package/skills/operations/mcp-management/README.md +219 -219
  387. package/skills/operations/mcp-management/SKILL.md +175 -175
  388. package/skills/operations/mcp-management/assets/tools.json +3043 -3043
  389. package/skills/operations/mcp-management/references/configuration.md +114 -114
  390. package/skills/operations/mcp-management/references/gemini-cli-integration.md +201 -201
  391. package/skills/operations/mcp-management/references/mcp-protocol.md +116 -116
  392. package/skills/operations/mcp-management/scripts/.env.example +10 -10
  393. package/skills/operations/mcp-management/scripts/cli.ts +155 -155
  394. package/skills/operations/mcp-management/scripts/dist/analyze-tools.js +70 -70
  395. package/skills/operations/mcp-management/scripts/dist/cli.js +131 -131
  396. package/skills/operations/mcp-management/scripts/dist/mcp-client.js +115 -115
  397. package/skills/operations/mcp-management/scripts/mcp-client.ts +163 -163
  398. package/skills/operations/mcp-management/scripts/package.json +18 -18
  399. package/skills/operations/mcp-management/scripts/tsconfig.json +15 -15
  400. package/skills/problem-solving/collision-zone-thinking/SKILL.md +62 -62
  401. package/skills/problem-solving/defense-in-depth/SKILL.md +130 -130
  402. package/skills/problem-solving/inversion-exercise/SKILL.md +58 -58
  403. package/skills/problem-solving/meta-pattern-recognition/SKILL.md +54 -54
  404. package/skills/problem-solving/root-cause-tracing/SKILL.md +177 -177
  405. package/skills/problem-solving/root-cause-tracing/find-polluter.sh +63 -63
  406. package/skills/problem-solving/scale-game/SKILL.md +63 -63
  407. package/skills/problem-solving/sequential-thinking/README.md +118 -118
  408. package/skills/problem-solving/sequential-thinking/SKILL.md +93 -93
  409. package/skills/problem-solving/sequential-thinking/references/advanced.md +122 -122
  410. package/skills/problem-solving/sequential-thinking/references/examples.md +274 -274
  411. package/skills/problem-solving/simplification-cascades/SKILL.md +76 -76
  412. package/skills/problem-solving/when-stuck/SKILL.md +88 -88
  413. package/skills/productivity/caveman/SKILL.md +49 -49
  414. package/skills/productivity/grill-me/SKILL.md +10 -10
  415. package/skills/productivity/grill-with-docs/ADR-FORMAT.md +47 -47
  416. package/skills/productivity/grill-with-docs/CONTEXT-FORMAT.md +77 -77
  417. package/skills/productivity/grill-with-docs/SKILL.md +88 -88
  418. package/skills/productivity/writing-skills/graphviz-conventions.dot +171 -171
  419. package/skills/productivity/zoom-out/SKILL.md +7 -7
  420. package/skills/writing-docs/doc/LICENSE.txt +201 -201
  421. package/skills/writing-docs/doc/SKILL.md +80 -80
  422. package/skills/writing-docs/doc/agents/openai.yaml +6 -6
  423. package/skills/writing-docs/doc/assets/doc-small.svg +3 -3
  424. package/skills/writing-docs/doc/scripts/render_docx.py +296 -296
  425. package/skills/writing-docs/docx/LICENSE.txt +30 -30
  426. package/skills/writing-docs/docx/SKILL.md +196 -196
  427. package/skills/writing-docs/docx/docx-js.md +349 -349
  428. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -1499
  429. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -146
  430. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -1085
  431. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -11
  432. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -3081
  433. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -23
  434. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -185
  435. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -287
  436. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -1676
  437. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -28
  438. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -144
  439. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -174
  440. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -25
  441. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -18
  442. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -59
  443. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -56
  444. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -195
  445. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -582
  446. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -25
  447. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -4439
  448. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -570
  449. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -509
  450. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -12
  451. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -108
  452. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -96
  453. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -3646
  454. package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -116
  455. package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -42
  456. package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -50
  457. package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -49
  458. package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -33
  459. package/skills/writing-docs/docx/ooxml/schemas/mce/mc.xsd +75 -75
  460. package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -560
  461. package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -67
  462. package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -14
  463. package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -20
  464. package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -13
  465. package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -4
  466. package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -8
  467. package/skills/writing-docs/docx/ooxml/scripts/pack.py +159 -159
  468. package/skills/writing-docs/docx/ooxml/scripts/unpack.py +29 -29
  469. package/skills/writing-docs/docx/ooxml/scripts/validate.py +69 -69
  470. package/skills/writing-docs/docx/ooxml/scripts/validation/__init__.py +15 -15
  471. package/skills/writing-docs/docx/ooxml/scripts/validation/base.py +951 -951
  472. package/skills/writing-docs/docx/ooxml/scripts/validation/docx.py +274 -274
  473. package/skills/writing-docs/docx/ooxml/scripts/validation/pptx.py +315 -315
  474. package/skills/writing-docs/docx/ooxml/scripts/validation/redlining.py +279 -279
  475. package/skills/writing-docs/docx/ooxml.md +609 -609
  476. package/skills/writing-docs/docx/scripts/__init__.py +1 -1
  477. package/skills/writing-docs/docx/scripts/document.py +1276 -1276
  478. package/skills/writing-docs/docx/scripts/templates/comments.xml +2 -2
  479. package/skills/writing-docs/docx/scripts/templates/commentsExtended.xml +2 -2
  480. package/skills/writing-docs/docx/scripts/templates/commentsExtensible.xml +2 -2
  481. package/skills/writing-docs/docx/scripts/templates/commentsIds.xml +2 -2
  482. package/skills/writing-docs/docx/scripts/templates/people.xml +2 -2
  483. package/skills/writing-docs/docx/scripts/utilities.py +374 -374
  484. package/skills/writing-docs/mermaidjs-v11/SKILL.md +115 -115
  485. package/skills/writing-docs/mermaidjs-v11/references/cli-usage.md +228 -228
  486. package/skills/writing-docs/mermaidjs-v11/references/configuration.md +232 -232
  487. package/skills/writing-docs/mermaidjs-v11/references/diagram-types.md +315 -315
  488. package/skills/writing-docs/mermaidjs-v11/references/examples.md +344 -344
  489. package/skills/writing-docs/mermaidjs-v11/references/integration.md +310 -310
  490. package/skills/writing-docs/pdf/LICENSE.txt +30 -30
  491. package/skills/writing-docs/pdf/SKILL.md +294 -294
  492. package/skills/writing-docs/pdf/forms.md +205 -205
  493. package/skills/writing-docs/pdf/reference.md +611 -611
  494. package/skills/writing-docs/pdf/scripts/check_bounding_boxes.py +70 -70
  495. package/skills/writing-docs/pdf/scripts/check_bounding_boxes_test.py +226 -226
  496. package/skills/writing-docs/pdf/scripts/check_fillable_fields.py +12 -12
  497. package/skills/writing-docs/pdf/scripts/convert_pdf_to_images.py +35 -35
  498. package/skills/writing-docs/pdf/scripts/create_validation_image.py +41 -41
  499. package/skills/writing-docs/pdf/scripts/extract_form_field_info.py +152 -152
  500. package/skills/writing-docs/pdf/scripts/fill_fillable_fields.py +114 -114
  501. package/skills/writing-docs/pdf/scripts/fill_pdf_form_with_annotations.py +107 -107
  502. package/skills/writing-docs/pptx/LICENSE.txt +30 -30
  503. package/skills/writing-docs/pptx/SKILL.md +483 -483
  504. package/skills/writing-docs/pptx/html2pptx.md +624 -624
  505. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -1499
  506. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -146
  507. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -1085
  508. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -11
  509. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -3081
  510. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -23
  511. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -185
  512. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -287
  513. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -1676
  514. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -28
  515. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -144
  516. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -174
  517. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -25
  518. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -18
  519. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -59
  520. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -56
  521. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -195
  522. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -582
  523. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -25
  524. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -4439
  525. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -570
  526. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -509
  527. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -12
  528. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -108
  529. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -96
  530. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -3646
  531. package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -116
  532. package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -42
  533. package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -50
  534. package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -49
  535. package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -33
  536. package/skills/writing-docs/pptx/ooxml/schemas/mce/mc.xsd +75 -75
  537. package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -560
  538. package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -67
  539. package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -14
  540. package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -20
  541. package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -13
  542. package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -4
  543. package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -8
  544. package/skills/writing-docs/pptx/ooxml/scripts/pack.py +159 -159
  545. package/skills/writing-docs/pptx/ooxml/scripts/unpack.py +29 -29
  546. package/skills/writing-docs/pptx/ooxml/scripts/validate.py +69 -69
  547. package/skills/writing-docs/pptx/ooxml/scripts/validation/__init__.py +15 -15
  548. package/skills/writing-docs/pptx/ooxml/scripts/validation/base.py +951 -951
  549. package/skills/writing-docs/pptx/ooxml/scripts/validation/docx.py +274 -274
  550. package/skills/writing-docs/pptx/ooxml/scripts/validation/pptx.py +315 -315
  551. package/skills/writing-docs/pptx/ooxml/scripts/validation/redlining.py +279 -279
  552. package/skills/writing-docs/pptx/ooxml.md +426 -426
  553. package/skills/writing-docs/pptx/scripts/html2pptx.js +978 -978
  554. package/skills/writing-docs/pptx/scripts/inventory.py +1020 -1020
  555. package/skills/writing-docs/pptx/scripts/rearrange.py +231 -231
  556. package/skills/writing-docs/pptx/scripts/replace.py +385 -385
  557. package/skills/writing-docs/pptx/scripts/thumbnail.py +450 -450
  558. package/skills/writing-docs/slides/LICENSE.txt +201 -201
  559. package/skills/writing-docs/slides/SKILL.md +71 -71
  560. package/skills/writing-docs/slides/agents/openai.yaml +6 -6
  561. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/code.js +104 -104
  562. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/image.js +333 -333
  563. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/index.js +33 -33
  564. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/latex.js +51 -51
  565. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/layout.js +643 -643
  566. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/layout_builders.js +358 -358
  567. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/svg.js +36 -36
  568. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/text.js +789 -789
  569. package/skills/writing-docs/slides/assets/pptxgenjs_helpers/util.js +24 -24
  570. package/skills/writing-docs/slides/assets/slides-small.svg +3 -3
  571. package/skills/writing-docs/slides/references/pptxgenjs-helpers.md +61 -61
  572. package/skills/writing-docs/slides/scripts/create_montage.py +300 -300
  573. package/skills/writing-docs/slides/scripts/detect_font.py +873 -873
  574. package/skills/writing-docs/slides/scripts/ensure_raster_image.py +202 -202
  575. package/skills/writing-docs/slides/scripts/render_slides.py +273 -273
  576. package/skills/writing-docs/slides/scripts/slides_test.py +201 -201
  577. package/skills/writing-docs/template-skill/SKILL.md +26 -26
  578. package/skills/writing-docs/xlsx/LICENSE.txt +30 -30
  579. package/skills/writing-docs/xlsx/SKILL.md +288 -288
  580. package/skills/writing-docs/xlsx/recalc.py +177 -177
  581. package/src/core/KILO_MASTER.md +448 -448
  582. 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