@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.
- package/.mcp/kilo-kit.codex-windows.toml +5 -0
- package/LICENSE +190 -190
- package/QUICKSTART.md +265 -255
- package/README.md +290 -266
- package/mcp/README.md +29 -5
- package/mcp/dist/server.js +1 -1
- package/mcp/package.json +1 -2
- package/package.json +3 -2
- package/skills/README.md +647 -647
- package/skills/SKILLS_INDEX.md +139 -139
- package/skills/ai-media/ai-multimodal/.env.example +97 -97
- package/skills/ai-media/ai-multimodal/SKILL.md +357 -357
- package/skills/ai-media/ai-multimodal/references/audio-processing.md +373 -373
- package/skills/ai-media/ai-multimodal/references/image-generation.md +558 -558
- package/skills/ai-media/ai-multimodal/references/video-analysis.md +502 -502
- package/skills/ai-media/ai-multimodal/references/vision-understanding.md +483 -483
- package/skills/ai-media/ai-multimodal/scripts/document_converter.py +395 -395
- package/skills/ai-media/ai-multimodal/scripts/gemini_batch_process.py +480 -480
- package/skills/ai-media/ai-multimodal/scripts/media_optimizer.py +506 -506
- package/skills/ai-media/ai-multimodal/scripts/requirements.txt +26 -26
- package/skills/ai-media/ai-multimodal/scripts/tests/requirements.txt +20 -20
- package/skills/ai-media/ai-multimodal/scripts/tests/test_document_converter.py +299 -299
- package/skills/ai-media/ai-multimodal/scripts/tests/test_gemini_batch_process.py +362 -362
- package/skills/ai-media/ai-multimodal/scripts/tests/test_media_optimizer.py +373 -373
- package/skills/ai-media/media-processing/SKILL.md +358 -358
- package/skills/ai-media/media-processing/references/ffmpeg-encoding.md +358 -358
- package/skills/ai-media/media-processing/references/ffmpeg-filters.md +503 -503
- package/skills/ai-media/media-processing/references/ffmpeg-streaming.md +403 -403
- package/skills/ai-media/media-processing/references/format-compatibility.md +375 -375
- package/skills/ai-media/media-processing/references/imagemagick-batch.md +612 -612
- package/skills/ai-media/media-processing/references/imagemagick-editing.md +623 -623
- package/skills/ai-media/media-processing/scripts/batch_resize.py +342 -342
- package/skills/ai-media/media-processing/scripts/media_convert.py +311 -311
- package/skills/ai-media/media-processing/scripts/requirements.txt +24 -24
- package/skills/ai-media/media-processing/scripts/tests/requirements.txt +2 -2
- package/skills/ai-media/media-processing/scripts/tests/test_batch_resize.py +372 -372
- package/skills/ai-media/media-processing/scripts/tests/test_media_convert.py +259 -259
- package/skills/ai-media/media-processing/scripts/tests/test_video_optimize.py +397 -397
- package/skills/ai-media/media-processing/scripts/video_optimize.py +414 -414
- package/skills/ai-media/screenshot/LICENSE.txt +201 -201
- package/skills/ai-media/screenshot/SKILL.md +267 -267
- package/skills/ai-media/screenshot/agents/openai.yaml +6 -6
- package/skills/ai-media/screenshot/assets/screenshot-small.svg +5 -5
- package/skills/ai-media/screenshot/scripts/ensure_macos_permissions.sh +54 -54
- package/skills/ai-media/screenshot/scripts/macos_display_info.swift +22 -22
- package/skills/ai-media/screenshot/scripts/macos_permissions.swift +40 -40
- package/skills/ai-media/screenshot/scripts/macos_window_info.swift +126 -126
- package/skills/ai-media/screenshot/scripts/take_screenshot.ps1 +163 -163
- package/skills/ai-media/screenshot/scripts/take_screenshot.py +585 -585
- package/skills/ai-media/sora/LICENSE.txt +201 -201
- package/skills/ai-media/sora/SKILL.md +153 -153
- package/skills/ai-media/sora/agents/openai.yaml +6 -6
- package/skills/ai-media/sora/assets/sora-small.svg +4 -4
- package/skills/ai-media/sora/references/cinematic-shots.md +53 -53
- package/skills/ai-media/sora/references/cli.md +248 -248
- package/skills/ai-media/sora/references/codex-network.md +28 -28
- package/skills/ai-media/sora/references/prompting.md +137 -137
- package/skills/ai-media/sora/references/sample-prompts.md +95 -95
- package/skills/ai-media/sora/references/social-ads.md +42 -42
- package/skills/ai-media/sora/references/troubleshooting.md +58 -58
- package/skills/ai-media/sora/references/video-api.md +45 -45
- package/skills/ai-media/sora/scripts/sora.py +970 -970
- package/skills/design/aesthetic/SKILL.md +121 -121
- package/skills/design/aesthetic/assets/design-guideline-template.md +163 -163
- package/skills/design/aesthetic/assets/design-story-template.md +135 -135
- package/skills/design/aesthetic/references/design-principles.md +62 -62
- package/skills/design/aesthetic/references/design-resources.md +75 -75
- package/skills/design/aesthetic/references/micro-interactions.md +53 -53
- package/skills/design/aesthetic/references/storytelling-design.md +50 -50
- package/skills/design/figma/LICENSE.txt +202 -202
- package/skills/design/figma/SKILL.md +42 -42
- package/skills/design/figma/agents/openai.yaml +14 -14
- package/skills/design/figma/assets/figma-small.svg +3 -3
- package/skills/design/figma/assets/icon.svg +28 -28
- package/skills/design/figma/references/figma-mcp-config.md +35 -35
- package/skills/design/figma/references/figma-tools-and-prompts.md +34 -34
- package/skills/design/figma-implement-design/LICENSE.txt +202 -202
- package/skills/design/figma-implement-design/SKILL.md +264 -264
- package/skills/design/figma-implement-design/agents/openai.yaml +14 -14
- package/skills/design/figma-implement-design/assets/figma-small.svg +3 -3
- package/skills/design/figma-implement-design/assets/icon.svg +28 -28
- package/skills/design/frontend-design/SKILL.md +41 -41
- package/skills/design/frontend-design/references/animejs.md +395 -395
- package/skills/design/ui-styling/LICENSE.txt +201 -201
- package/skills/design/ui-styling/SKILL.md +321 -321
- package/skills/design/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -94
- package/skills/design/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Jura-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Lora-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -93
- package/skills/design/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -93
- package/skills/design/ui-styling/references/canvas-design-system.md +320 -320
- package/skills/design/ui-styling/references/shadcn-accessibility.md +471 -471
- package/skills/design/ui-styling/references/shadcn-components.md +424 -424
- package/skills/design/ui-styling/references/shadcn-theming.md +373 -373
- package/skills/design/ui-styling/references/tailwind-customization.md +483 -483
- package/skills/design/ui-styling/references/tailwind-responsive.md +382 -382
- package/skills/design/ui-styling/references/tailwind-utilities.md +455 -455
- package/skills/design/ui-styling/scripts/requirements.txt +17 -17
- package/skills/design/ui-styling/scripts/shadcn_add.py +292 -292
- package/skills/design/ui-styling/scripts/tailwind_config_gen.py +456 -456
- package/skills/design/ui-styling/scripts/tests/requirements.txt +3 -3
- package/skills/design/ui-styling/scripts/tests/test_shadcn_add.py +266 -266
- package/skills/design/ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -336
- package/skills/engineering/aspnet-core/LICENSE.txt +201 -201
- package/skills/engineering/aspnet-core/SKILL.md +61 -61
- package/skills/engineering/aspnet-core/agents/openai.yaml +5 -5
- package/skills/engineering/aspnet-core/references/_sections.md +40 -40
- package/skills/engineering/aspnet-core/references/apis-minimal-and-controllers.md +81 -81
- package/skills/engineering/aspnet-core/references/data-state-and-services.md +69 -69
- package/skills/engineering/aspnet-core/references/program-and-pipeline.md +103 -103
- package/skills/engineering/aspnet-core/references/realtime-grpc-and-background-work.md +58 -58
- package/skills/engineering/aspnet-core/references/security-and-identity.md +75 -75
- package/skills/engineering/aspnet-core/references/source-map.md +43 -43
- package/skills/engineering/aspnet-core/references/stack-selection.md +63 -63
- package/skills/engineering/aspnet-core/references/testing-performance-and-operations.md +92 -92
- package/skills/engineering/aspnet-core/references/ui-blazor.md +53 -53
- package/skills/engineering/aspnet-core/references/ui-mvc.md +56 -56
- package/skills/engineering/aspnet-core/references/ui-razor-pages.md +55 -55
- package/skills/engineering/aspnet-core/references/versioning-and-upgrades.md +51 -51
- package/skills/engineering/backend-development/SKILL.md +95 -95
- package/skills/engineering/backend-development/references/backend-api-design.md +495 -495
- package/skills/engineering/backend-development/references/backend-architecture.md +454 -454
- package/skills/engineering/backend-development/references/backend-authentication.md +338 -338
- package/skills/engineering/backend-development/references/backend-code-quality.md +659 -659
- package/skills/engineering/backend-development/references/backend-debugging.md +904 -904
- package/skills/engineering/backend-development/references/backend-devops.md +494 -494
- package/skills/engineering/backend-development/references/backend-mindset.md +387 -387
- package/skills/engineering/backend-development/references/backend-performance.md +397 -397
- package/skills/engineering/backend-development/references/backend-security.md +290 -290
- package/skills/engineering/backend-development/references/backend-technologies.md +256 -256
- package/skills/engineering/backend-development/references/backend-testing.md +429 -429
- package/skills/engineering/better-auth/SKILL.md +204 -204
- package/skills/engineering/better-auth/references/advanced-features.md +553 -553
- package/skills/engineering/better-auth/references/database-integration.md +577 -577
- package/skills/engineering/better-auth/references/email-password-auth.md +416 -416
- package/skills/engineering/better-auth/references/oauth-providers.md +430 -430
- package/skills/engineering/better-auth/scripts/better_auth_init.py +521 -521
- package/skills/engineering/better-auth/scripts/requirements.txt +15 -15
- package/skills/engineering/better-auth/scripts/tests/test_better_auth_init.py +421 -421
- package/skills/engineering/code-review/SKILL.md +140 -140
- package/skills/engineering/code-review/references/code-review-reception.md +208 -208
- package/skills/engineering/code-review/references/requesting-code-review.md +104 -104
- package/skills/engineering/code-review/references/verification-before-completion.md +138 -138
- package/skills/engineering/context-engineering/SKILL.md +86 -86
- package/skills/engineering/context-engineering/references/context-compression.md +84 -84
- package/skills/engineering/context-engineering/references/context-degradation.md +93 -93
- package/skills/engineering/context-engineering/references/context-fundamentals.md +75 -75
- package/skills/engineering/context-engineering/references/context-optimization.md +82 -82
- package/skills/engineering/context-engineering/references/evaluation.md +89 -89
- package/skills/engineering/context-engineering/references/memory-systems.md +88 -88
- package/skills/engineering/context-engineering/references/multi-agent-patterns.md +90 -90
- package/skills/engineering/context-engineering/references/project-development.md +97 -97
- package/skills/engineering/context-engineering/references/tool-design.md +86 -86
- package/skills/engineering/context-engineering/scripts/compression_evaluator.py +329 -329
- package/skills/engineering/context-engineering/scripts/context_analyzer.py +294 -294
- package/skills/engineering/databases/SKILL.md +232 -232
- package/skills/engineering/databases/references/mongodb-aggregation.md +447 -447
- package/skills/engineering/databases/references/mongodb-atlas.md +465 -465
- package/skills/engineering/databases/references/mongodb-crud.md +408 -408
- package/skills/engineering/databases/references/mongodb-indexing.md +442 -442
- package/skills/engineering/databases/references/postgresql-administration.md +594 -594
- package/skills/engineering/databases/references/postgresql-performance.md +527 -527
- package/skills/engineering/databases/references/postgresql-psql-cli.md +467 -467
- package/skills/engineering/databases/references/postgresql-queries.md +475 -475
- package/skills/engineering/databases/scripts/db_backup.py +502 -502
- package/skills/engineering/databases/scripts/db_migrate.py +414 -414
- package/skills/engineering/databases/scripts/db_performance_check.py +444 -444
- package/skills/engineering/databases/scripts/requirements.txt +20 -20
- package/skills/engineering/databases/scripts/tests/requirements.txt +4 -4
- package/skills/engineering/databases/scripts/tests/test_db_backup.py +340 -340
- package/skills/engineering/databases/scripts/tests/test_db_migrate.py +277 -277
- package/skills/engineering/databases/scripts/tests/test_db_performance_check.py +370 -370
- package/skills/engineering/diagnose/SKILL.md +117 -117
- package/skills/engineering/diagnose/scripts/hitl-loop.template.sh +41 -41
- package/skills/engineering/docs-seeker/SKILL.md +207 -207
- package/skills/engineering/docs-seeker/WORKFLOWS.md +505 -505
- package/skills/engineering/docs-seeker/references/best-practices.md +632 -632
- package/skills/engineering/docs-seeker/references/documentation-sources.md +461 -461
- package/skills/engineering/docs-seeker/references/error-handling.md +621 -621
- package/skills/engineering/docs-seeker/references/limitations.md +821 -821
- package/skills/engineering/docs-seeker/references/performance.md +574 -574
- package/skills/engineering/docs-seeker/references/tool-selection.md +262 -262
- package/skills/engineering/frontend-development/SKILL.md +398 -398
- package/skills/engineering/frontend-development/resources/common-patterns.md +330 -330
- package/skills/engineering/frontend-development/resources/complete-examples.md +871 -871
- package/skills/engineering/frontend-development/resources/component-patterns.md +501 -501
- package/skills/engineering/frontend-development/resources/data-fetching.md +766 -766
- package/skills/engineering/frontend-development/resources/file-organization.md +501 -501
- package/skills/engineering/frontend-development/resources/loading-and-error-states.md +500 -500
- package/skills/engineering/frontend-development/resources/performance.md +405 -405
- package/skills/engineering/frontend-development/resources/routing-guide.md +363 -363
- package/skills/engineering/frontend-development/resources/styling-guide.md +427 -427
- package/skills/engineering/frontend-development/resources/typescript-standards.md +417 -417
- package/skills/engineering/improve-codebase-architecture/DEEPENING.md +37 -37
- package/skills/engineering/improve-codebase-architecture/INTERFACE-DESIGN.md +44 -44
- package/skills/engineering/improve-codebase-architecture/LANGUAGE.md +53 -53
- package/skills/engineering/improve-codebase-architecture/SKILL.md +71 -71
- package/skills/engineering/openai-docs/LICENSE.txt +201 -201
- package/skills/engineering/openai-docs/SKILL.md +69 -69
- package/skills/engineering/openai-docs/agents/openai.yaml +14 -14
- package/skills/engineering/openai-docs/assets/openai-small.svg +3 -3
- package/skills/engineering/openai-docs/references/gpt-5p4-prompting-guide.md +433 -433
- package/skills/engineering/openai-docs/references/latest-model.md +35 -35
- package/skills/engineering/openai-docs/references/upgrading-to-gpt-5p4.md +164 -164
- package/skills/engineering/playwright/LICENSE.txt +201 -201
- package/skills/engineering/playwright/NOTICE.txt +14 -14
- package/skills/engineering/playwright/SKILL.md +147 -147
- package/skills/engineering/playwright/agents/openai.yaml +6 -6
- package/skills/engineering/playwright/assets/playwright-small.svg +3 -3
- package/skills/engineering/playwright/references/cli.md +116 -116
- package/skills/engineering/playwright/references/workflows.md +95 -95
- package/skills/engineering/playwright/scripts/playwright_cli.sh +25 -25
- package/skills/engineering/playwright-interactive/LICENSE.txt +201 -201
- package/skills/engineering/playwright-interactive/NOTICE.txt +13 -13
- package/skills/engineering/playwright-interactive/SKILL.md +689 -689
- package/skills/engineering/playwright-interactive/agents/openai.yaml +6 -6
- package/skills/engineering/playwright-interactive/assets/playwright-small.svg +3 -3
- package/skills/engineering/render-deploy/LICENSE.txt +201 -201
- package/skills/engineering/render-deploy/SKILL.md +479 -479
- package/skills/engineering/render-deploy/agents/openai.yaml +14 -14
- package/skills/engineering/render-deploy/assets/docker.yaml +62 -62
- package/skills/engineering/render-deploy/assets/go-api.yaml +35 -35
- package/skills/engineering/render-deploy/assets/nextjs-postgres.yaml +35 -35
- package/skills/engineering/render-deploy/assets/node-express.yaml +25 -25
- package/skills/engineering/render-deploy/assets/python-django.yaml +89 -89
- package/skills/engineering/render-deploy/assets/render-small.svg +3 -3
- package/skills/engineering/render-deploy/assets/static-site.yaml +54 -54
- package/skills/engineering/render-deploy/references/blueprint-spec.md +718 -718
- package/skills/engineering/render-deploy/references/codebase-analysis.md +49 -49
- package/skills/engineering/render-deploy/references/configuration-guide.md +603 -603
- package/skills/engineering/render-deploy/references/deployment-details.md +224 -224
- package/skills/engineering/render-deploy/references/direct-creation.md +113 -113
- package/skills/engineering/render-deploy/references/error-patterns.md +13 -13
- package/skills/engineering/render-deploy/references/post-deploy-checks.md +36 -36
- package/skills/engineering/render-deploy/references/runtimes.md +473 -473
- package/skills/engineering/render-deploy/references/service-types.md +450 -450
- package/skills/engineering/render-deploy/references/troubleshooting-basics.md +36 -36
- package/skills/engineering/repomix/SKILL.md +215 -215
- package/skills/engineering/repomix/references/configuration.md +211 -211
- package/skills/engineering/repomix/references/usage-patterns.md +232 -232
- package/skills/engineering/repomix/scripts/README.md +179 -179
- package/skills/engineering/repomix/scripts/repomix_batch.py +455 -455
- package/skills/engineering/repomix/scripts/repos.example.json +15 -15
- package/skills/engineering/repomix/scripts/requirements.txt +15 -15
- package/skills/engineering/repomix/scripts/tests/test_repomix_batch.py +531 -531
- package/skills/engineering/setup-matt-pocock-skills/SKILL.md +121 -121
- package/skills/engineering/setup-matt-pocock-skills/domain.md +51 -51
- package/skills/engineering/setup-matt-pocock-skills/issue-tracker-github.md +22 -22
- package/skills/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md +23 -23
- package/skills/engineering/setup-matt-pocock-skills/issue-tracker-local.md +19 -19
- package/skills/engineering/setup-matt-pocock-skills/triage-labels.md +15 -15
- package/skills/engineering/shopify/README.md +66 -66
- package/skills/engineering/shopify/SKILL.md +319 -319
- package/skills/engineering/shopify/references/app-development.md +470 -470
- package/skills/engineering/shopify/references/extensions.md +493 -493
- package/skills/engineering/shopify/references/themes.md +498 -498
- package/skills/engineering/shopify/scripts/requirements.txt +19 -19
- package/skills/engineering/shopify/scripts/shopify_init.py +423 -423
- package/skills/engineering/shopify/scripts/tests/test_shopify_init.py +385 -385
- package/skills/engineering/tdd/SKILL.md +109 -109
- package/skills/engineering/tdd/deep-modules.md +33 -33
- package/skills/engineering/tdd/interface-design.md +31 -31
- package/skills/engineering/tdd/mocking.md +59 -59
- package/skills/engineering/tdd/refactoring.md +10 -10
- package/skills/engineering/tdd/tests.md +61 -61
- package/skills/engineering/to-issues/SKILL.md +81 -81
- package/skills/engineering/to-prd/SKILL.md +74 -74
- package/skills/engineering/triage/AGENT-BRIEF.md +168 -168
- package/skills/engineering/triage/OUT-OF-SCOPE.md +101 -101
- package/skills/engineering/triage/SKILL.md +103 -103
- package/skills/engineering/web-frameworks/SKILL.md +324 -324
- package/skills/engineering/web-frameworks/references/nextjs-app-router.md +465 -465
- package/skills/engineering/web-frameworks/references/nextjs-data-fetching.md +459 -459
- package/skills/engineering/web-frameworks/references/nextjs-optimization.md +511 -511
- package/skills/engineering/web-frameworks/references/nextjs-server-components.md +495 -495
- package/skills/engineering/web-frameworks/references/remix-icon-integration.md +603 -603
- package/skills/engineering/web-frameworks/references/turborepo-caching.md +551 -551
- package/skills/engineering/web-frameworks/references/turborepo-pipelines.md +517 -517
- package/skills/engineering/web-frameworks/references/turborepo-setup.md +542 -542
- package/skills/engineering/web-frameworks/scripts/nextjs_init.py +547 -547
- package/skills/engineering/web-frameworks/scripts/requirements.txt +16 -16
- package/skills/engineering/web-frameworks/scripts/tests/requirements.txt +3 -3
- package/skills/engineering/web-frameworks/scripts/tests/test_nextjs_init.py +319 -319
- package/skills/engineering/web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -374
- package/skills/engineering/web-frameworks/scripts/turborepo_migrate.py +394 -394
- package/skills/engineering/write-a-skill/SKILL.md +117 -117
- package/skills/kilo-kit/SKILL.md +346 -346
- package/skills/kilo-kit/_template/SKILL.md +185 -185
- package/skills/kilo-kit/debugging/root-cause/SKILL.md +360 -360
- package/skills/kilo-kit/debugging/systematic/SKILL.md +339 -339
- package/skills/kilo-kit/debugging/verification/SKILL.md +424 -424
- package/skills/kilo-kit/development/backend/SKILL.md +540 -540
- package/skills/kilo-kit/development/security/SKILL.md +529 -529
- package/skills/kilo-kit/quality/code-review/SKILL.md +297 -297
- package/skills/kilo-kit/quality/testing/SKILL.md +540 -540
- package/skills/kilo-kit/references/output-formats.md +204 -204
- package/skills/kilo-kit/references/patterns.md +156 -156
- package/skills/kilo-kit/references/performance-benchmarks.md +90 -90
- package/skills/operations/chrome-devtools/SKILL.md +392 -392
- package/skills/operations/chrome-devtools/references/cdp-domains.md +694 -694
- package/skills/operations/chrome-devtools/references/performance-guide.md +940 -940
- package/skills/operations/chrome-devtools/references/puppeteer-reference.md +953 -953
- package/skills/operations/chrome-devtools/scripts/PERSISTENT-BROWSER.md +107 -107
- package/skills/operations/chrome-devtools/scripts/README.md +213 -213
- package/skills/operations/chrome-devtools/scripts/__tests__/selector.test.js +210 -210
- package/skills/operations/chrome-devtools/scripts/click.js +79 -79
- package/skills/operations/chrome-devtools/scripts/close-persistent.js +36 -36
- package/skills/operations/chrome-devtools/scripts/console.js +75 -75
- package/skills/operations/chrome-devtools/scripts/evaluate.js +49 -49
- package/skills/operations/chrome-devtools/scripts/fill.js +72 -72
- package/skills/operations/chrome-devtools/scripts/install-deps.sh +181 -181
- package/skills/operations/chrome-devtools/scripts/install.sh +83 -83
- package/skills/operations/chrome-devtools/scripts/launch-persistent.js +71 -71
- package/skills/operations/chrome-devtools/scripts/lib/browser.js +144 -144
- package/skills/operations/chrome-devtools/scripts/lib/selector.js +178 -178
- package/skills/operations/chrome-devtools/scripts/navigate.js +46 -46
- package/skills/operations/chrome-devtools/scripts/network.js +102 -102
- package/skills/operations/chrome-devtools/scripts/package-lock.json +1206 -1206
- package/skills/operations/chrome-devtools/scripts/package.json +15 -15
- package/skills/operations/chrome-devtools/scripts/performance.js +145 -145
- package/skills/operations/chrome-devtools/scripts/screenshot.js +180 -180
- package/skills/operations/chrome-devtools/scripts/snapshot.js +131 -131
- package/skills/operations/devops/.env.example +76 -76
- package/skills/operations/devops/SKILL.md +285 -285
- package/skills/operations/devops/references/browser-rendering.md +305 -305
- package/skills/operations/devops/references/cloudflare-d1-kv.md +123 -123
- package/skills/operations/devops/references/cloudflare-platform.md +271 -271
- package/skills/operations/devops/references/cloudflare-r2-storage.md +280 -280
- package/skills/operations/devops/references/cloudflare-workers-advanced.md +312 -312
- package/skills/operations/devops/references/cloudflare-workers-apis.md +309 -309
- package/skills/operations/devops/references/cloudflare-workers-basics.md +418 -418
- package/skills/operations/devops/references/docker-basics.md +297 -297
- package/skills/operations/devops/references/docker-compose.md +292 -292
- package/skills/operations/devops/references/gcloud-platform.md +297 -297
- package/skills/operations/devops/references/gcloud-services.md +304 -304
- package/skills/operations/devops/scripts/cloudflare_deploy.py +269 -269
- package/skills/operations/devops/scripts/docker_optimize.py +320 -320
- package/skills/operations/devops/scripts/requirements.txt +20 -20
- package/skills/operations/devops/scripts/tests/requirements.txt +3 -3
- package/skills/operations/devops/scripts/tests/test_cloudflare_deploy.py +285 -285
- package/skills/operations/devops/scripts/tests/test_docker_optimize.py +436 -436
- package/skills/operations/mcp-builder/LICENSE.txt +201 -201
- package/skills/operations/mcp-builder/SKILL.md +328 -328
- package/skills/operations/mcp-builder/reference/evaluation.md +601 -601
- package/skills/operations/mcp-builder/reference/mcp_best_practices.md +915 -915
- package/skills/operations/mcp-builder/reference/node_mcp_server.md +915 -915
- package/skills/operations/mcp-builder/reference/python_mcp_server.md +751 -751
- package/skills/operations/mcp-builder/scripts/connections.py +151 -151
- package/skills/operations/mcp-builder/scripts/evaluation.py +373 -373
- package/skills/operations/mcp-builder/scripts/example_evaluation.xml +22 -22
- package/skills/operations/mcp-builder/scripts/requirements.txt +2 -2
- package/skills/operations/mcp-management/README.md +219 -219
- package/skills/operations/mcp-management/SKILL.md +175 -175
- package/skills/operations/mcp-management/assets/tools.json +3043 -3043
- package/skills/operations/mcp-management/references/configuration.md +114 -114
- package/skills/operations/mcp-management/references/gemini-cli-integration.md +201 -201
- package/skills/operations/mcp-management/references/mcp-protocol.md +116 -116
- package/skills/operations/mcp-management/scripts/.env.example +10 -10
- package/skills/operations/mcp-management/scripts/cli.ts +155 -155
- package/skills/operations/mcp-management/scripts/dist/analyze-tools.js +70 -70
- package/skills/operations/mcp-management/scripts/dist/cli.js +131 -131
- package/skills/operations/mcp-management/scripts/dist/mcp-client.js +115 -115
- package/skills/operations/mcp-management/scripts/mcp-client.ts +163 -163
- package/skills/operations/mcp-management/scripts/package.json +18 -18
- package/skills/operations/mcp-management/scripts/tsconfig.json +15 -15
- package/skills/problem-solving/collision-zone-thinking/SKILL.md +62 -62
- package/skills/problem-solving/defense-in-depth/SKILL.md +130 -130
- package/skills/problem-solving/inversion-exercise/SKILL.md +58 -58
- package/skills/problem-solving/meta-pattern-recognition/SKILL.md +54 -54
- package/skills/problem-solving/root-cause-tracing/SKILL.md +177 -177
- package/skills/problem-solving/root-cause-tracing/find-polluter.sh +63 -63
- package/skills/problem-solving/scale-game/SKILL.md +63 -63
- package/skills/problem-solving/sequential-thinking/README.md +118 -118
- package/skills/problem-solving/sequential-thinking/SKILL.md +93 -93
- package/skills/problem-solving/sequential-thinking/references/advanced.md +122 -122
- package/skills/problem-solving/sequential-thinking/references/examples.md +274 -274
- package/skills/problem-solving/simplification-cascades/SKILL.md +76 -76
- package/skills/problem-solving/when-stuck/SKILL.md +88 -88
- package/skills/productivity/caveman/SKILL.md +49 -49
- package/skills/productivity/grill-me/SKILL.md +10 -10
- package/skills/productivity/grill-with-docs/ADR-FORMAT.md +47 -47
- package/skills/productivity/grill-with-docs/CONTEXT-FORMAT.md +77 -77
- package/skills/productivity/grill-with-docs/SKILL.md +88 -88
- package/skills/productivity/writing-skills/graphviz-conventions.dot +171 -171
- package/skills/productivity/zoom-out/SKILL.md +7 -7
- package/skills/writing-docs/doc/LICENSE.txt +201 -201
- package/skills/writing-docs/doc/SKILL.md +80 -80
- package/skills/writing-docs/doc/agents/openai.yaml +6 -6
- package/skills/writing-docs/doc/assets/doc-small.svg +3 -3
- package/skills/writing-docs/doc/scripts/render_docx.py +296 -296
- package/skills/writing-docs/docx/LICENSE.txt +30 -30
- package/skills/writing-docs/docx/SKILL.md +196 -196
- package/skills/writing-docs/docx/docx-js.md +349 -349
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -1499
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -146
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -1085
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -11
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -3081
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -23
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -185
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -287
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -1676
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -28
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -144
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -174
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -25
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -18
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -59
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -56
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -195
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -582
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -25
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -4439
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -570
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -509
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -12
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -108
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -96
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -3646
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -116
- package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -42
- package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -50
- package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -49
- package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -33
- package/skills/writing-docs/docx/ooxml/schemas/mce/mc.xsd +75 -75
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -560
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -67
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -14
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -20
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -13
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -4
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -8
- package/skills/writing-docs/docx/ooxml/scripts/pack.py +159 -159
- package/skills/writing-docs/docx/ooxml/scripts/unpack.py +29 -29
- package/skills/writing-docs/docx/ooxml/scripts/validate.py +69 -69
- package/skills/writing-docs/docx/ooxml/scripts/validation/__init__.py +15 -15
- package/skills/writing-docs/docx/ooxml/scripts/validation/base.py +951 -951
- package/skills/writing-docs/docx/ooxml/scripts/validation/docx.py +274 -274
- package/skills/writing-docs/docx/ooxml/scripts/validation/pptx.py +315 -315
- package/skills/writing-docs/docx/ooxml/scripts/validation/redlining.py +279 -279
- package/skills/writing-docs/docx/ooxml.md +609 -609
- package/skills/writing-docs/docx/scripts/__init__.py +1 -1
- package/skills/writing-docs/docx/scripts/document.py +1276 -1276
- package/skills/writing-docs/docx/scripts/templates/comments.xml +2 -2
- package/skills/writing-docs/docx/scripts/templates/commentsExtended.xml +2 -2
- package/skills/writing-docs/docx/scripts/templates/commentsExtensible.xml +2 -2
- package/skills/writing-docs/docx/scripts/templates/commentsIds.xml +2 -2
- package/skills/writing-docs/docx/scripts/templates/people.xml +2 -2
- package/skills/writing-docs/docx/scripts/utilities.py +374 -374
- package/skills/writing-docs/mermaidjs-v11/SKILL.md +115 -115
- package/skills/writing-docs/mermaidjs-v11/references/cli-usage.md +228 -228
- package/skills/writing-docs/mermaidjs-v11/references/configuration.md +232 -232
- package/skills/writing-docs/mermaidjs-v11/references/diagram-types.md +315 -315
- package/skills/writing-docs/mermaidjs-v11/references/examples.md +344 -344
- package/skills/writing-docs/mermaidjs-v11/references/integration.md +310 -310
- package/skills/writing-docs/pdf/LICENSE.txt +30 -30
- package/skills/writing-docs/pdf/SKILL.md +294 -294
- package/skills/writing-docs/pdf/forms.md +205 -205
- package/skills/writing-docs/pdf/reference.md +611 -611
- package/skills/writing-docs/pdf/scripts/check_bounding_boxes.py +70 -70
- package/skills/writing-docs/pdf/scripts/check_bounding_boxes_test.py +226 -226
- package/skills/writing-docs/pdf/scripts/check_fillable_fields.py +12 -12
- package/skills/writing-docs/pdf/scripts/convert_pdf_to_images.py +35 -35
- package/skills/writing-docs/pdf/scripts/create_validation_image.py +41 -41
- package/skills/writing-docs/pdf/scripts/extract_form_field_info.py +152 -152
- package/skills/writing-docs/pdf/scripts/fill_fillable_fields.py +114 -114
- package/skills/writing-docs/pdf/scripts/fill_pdf_form_with_annotations.py +107 -107
- package/skills/writing-docs/pptx/LICENSE.txt +30 -30
- package/skills/writing-docs/pptx/SKILL.md +483 -483
- package/skills/writing-docs/pptx/html2pptx.md +624 -624
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -1499
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -146
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -1085
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -11
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -3081
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -23
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -185
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -287
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -1676
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -28
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -144
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -174
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -25
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -18
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -59
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -56
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -195
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -582
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -25
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -4439
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -570
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -509
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -12
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -108
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -96
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -3646
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -116
- package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -42
- package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -50
- package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -49
- package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -33
- package/skills/writing-docs/pptx/ooxml/schemas/mce/mc.xsd +75 -75
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -560
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -67
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -14
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -20
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -13
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -4
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -8
- package/skills/writing-docs/pptx/ooxml/scripts/pack.py +159 -159
- package/skills/writing-docs/pptx/ooxml/scripts/unpack.py +29 -29
- package/skills/writing-docs/pptx/ooxml/scripts/validate.py +69 -69
- package/skills/writing-docs/pptx/ooxml/scripts/validation/__init__.py +15 -15
- package/skills/writing-docs/pptx/ooxml/scripts/validation/base.py +951 -951
- package/skills/writing-docs/pptx/ooxml/scripts/validation/docx.py +274 -274
- package/skills/writing-docs/pptx/ooxml/scripts/validation/pptx.py +315 -315
- package/skills/writing-docs/pptx/ooxml/scripts/validation/redlining.py +279 -279
- package/skills/writing-docs/pptx/ooxml.md +426 -426
- package/skills/writing-docs/pptx/scripts/html2pptx.js +978 -978
- package/skills/writing-docs/pptx/scripts/inventory.py +1020 -1020
- package/skills/writing-docs/pptx/scripts/rearrange.py +231 -231
- package/skills/writing-docs/pptx/scripts/replace.py +385 -385
- package/skills/writing-docs/pptx/scripts/thumbnail.py +450 -450
- package/skills/writing-docs/slides/LICENSE.txt +201 -201
- package/skills/writing-docs/slides/SKILL.md +71 -71
- package/skills/writing-docs/slides/agents/openai.yaml +6 -6
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/code.js +104 -104
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/image.js +333 -333
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/index.js +33 -33
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/latex.js +51 -51
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/layout.js +643 -643
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/layout_builders.js +358 -358
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/svg.js +36 -36
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/text.js +789 -789
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/util.js +24 -24
- package/skills/writing-docs/slides/assets/slides-small.svg +3 -3
- package/skills/writing-docs/slides/references/pptxgenjs-helpers.md +61 -61
- package/skills/writing-docs/slides/scripts/create_montage.py +300 -300
- package/skills/writing-docs/slides/scripts/detect_font.py +873 -873
- package/skills/writing-docs/slides/scripts/ensure_raster_image.py +202 -202
- package/skills/writing-docs/slides/scripts/render_slides.py +273 -273
- package/skills/writing-docs/slides/scripts/slides_test.py +201 -201
- package/skills/writing-docs/template-skill/SKILL.md +26 -26
- package/skills/writing-docs/xlsx/LICENSE.txt +30 -30
- package/skills/writing-docs/xlsx/SKILL.md +288 -288
- package/skills/writing-docs/xlsx/recalc.py +177 -177
- package/src/core/KILO_MASTER.md +448 -448
- package/src/tools/validate-skill.js +421 -421
|
@@ -1,450 +1,450 @@
|
|
|
1
|
-
# Render Service Types
|
|
2
|
-
|
|
3
|
-
Detailed explanation of each service type available on Render. Choose the right service type based on your application's needs.
|
|
4
|
-
|
|
5
|
-
## Web Services (`type: web`)
|
|
6
|
-
|
|
7
|
-
### Purpose
|
|
8
|
-
|
|
9
|
-
Web services are HTTP servers that handle incoming requests from the internet. They're publicly accessible via HTTPS URLs.
|
|
10
|
-
|
|
11
|
-
### Use Cases
|
|
12
|
-
|
|
13
|
-
- **REST APIs**: JSON APIs for mobile apps or frontend applications
|
|
14
|
-
- **GraphQL servers**: GraphQL endpoints for client queries
|
|
15
|
-
- **Web applications**: Server-rendered websites (Django, Rails, Express)
|
|
16
|
-
- **Full-stack frameworks**: Next.js, Nuxt.js, Remix, SvelteKit
|
|
17
|
-
- **WebSocket servers**: Real-time communication servers
|
|
18
|
-
- **SSR applications**: Server-side rendered React, Vue, or Angular apps
|
|
19
|
-
|
|
20
|
-
### Key Characteristics
|
|
21
|
-
|
|
22
|
-
- **Public URL**: Automatically assigned `https://[service-name].onrender.com`
|
|
23
|
-
- **Port binding required**: Must bind to `0.0.0.0:$PORT`
|
|
24
|
-
- **Health checks**: Render pings your service to verify it's running
|
|
25
|
-
- **HTTPS**: Automatic SSL/TLS certificates
|
|
26
|
-
- **Load balancing**: Traffic distributed across multiple instances
|
|
27
|
-
- **Custom domains**: Support for your own domain names
|
|
28
|
-
|
|
29
|
-
### Required Configuration
|
|
30
|
-
|
|
31
|
-
```yaml
|
|
32
|
-
type: web
|
|
33
|
-
name: my-api
|
|
34
|
-
runtime: node
|
|
35
|
-
buildCommand: npm ci
|
|
36
|
-
startCommand: npm start
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### Best Practices
|
|
40
|
-
|
|
41
|
-
1. **Bind to environment PORT**:
|
|
42
|
-
```javascript
|
|
43
|
-
const PORT = process.env.PORT || 3000;
|
|
44
|
-
app.listen(PORT, '0.0.0.0');
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
2. **Add health check endpoint**:
|
|
48
|
-
```javascript
|
|
49
|
-
app.get('/health', (req, res) => {
|
|
50
|
-
res.status(200).json({ status: 'ok' });
|
|
51
|
-
});
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
3. **Use appropriate timeouts**: Web requests should complete within 30 seconds
|
|
55
|
-
|
|
56
|
-
4. **Implement graceful shutdown**: Handle SIGTERM signals properly
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## Worker Services (`type: worker`)
|
|
61
|
-
|
|
62
|
-
### Purpose
|
|
63
|
-
|
|
64
|
-
Worker services run background tasks without handling HTTP requests. They're not publicly accessible.
|
|
65
|
-
|
|
66
|
-
### Use Cases
|
|
67
|
-
|
|
68
|
-
- **Queue processors**: Redis queue, BullMQ, Celery, Sidekiq
|
|
69
|
-
- **Background jobs**: Email sending, image processing, data exports
|
|
70
|
-
- **Event consumers**: Message queue consumers (Kafka, RabbitMQ, etc.)
|
|
71
|
-
- **Data pipeline workers**: ETL processes, data transformation
|
|
72
|
-
- **Scheduled background tasks**: Continuous processes (not cron)
|
|
73
|
-
- **WebSocket backend**: Dedicated WebSocket handler services
|
|
74
|
-
|
|
75
|
-
### Key Characteristics
|
|
76
|
-
|
|
77
|
-
- **No public URL**: Not accessible from internet
|
|
78
|
-
- **No port binding**: Doesn't need to listen on a port
|
|
79
|
-
- **No health checks**: Render monitors process health differently
|
|
80
|
-
- **Long-running**: Can run indefinitely
|
|
81
|
-
- **Private communication**: Access via internal networking
|
|
82
|
-
- **Restart on crash**: Automatically restarted if process dies
|
|
83
|
-
|
|
84
|
-
### Required Configuration
|
|
85
|
-
|
|
86
|
-
```yaml
|
|
87
|
-
type: worker
|
|
88
|
-
name: queue-processor
|
|
89
|
-
runtime: python
|
|
90
|
-
buildCommand: pip install -r requirements.txt
|
|
91
|
-
startCommand: celery -A tasks worker --loglevel=info
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### Best Practices
|
|
95
|
-
|
|
96
|
-
1. **Connect to message queue**:
|
|
97
|
-
```python
|
|
98
|
-
import redis
|
|
99
|
-
r = redis.from_url(os.environ['REDIS_URL'])
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
2. **Implement retry logic**: Handle failures gracefully
|
|
103
|
-
|
|
104
|
-
3. **Monitor queue depth**: Track pending jobs
|
|
105
|
-
|
|
106
|
-
4. **Log processing status**: Make debugging easier
|
|
107
|
-
|
|
108
|
-
5. **Graceful shutdown**: Finish current jobs before exiting
|
|
109
|
-
|
|
110
|
-
### Common Patterns
|
|
111
|
-
|
|
112
|
-
**Node.js with BullMQ:**
|
|
113
|
-
```yaml
|
|
114
|
-
type: worker
|
|
115
|
-
name: job-processor
|
|
116
|
-
runtime: node
|
|
117
|
-
buildCommand: npm ci
|
|
118
|
-
startCommand: node worker.js
|
|
119
|
-
envVars:
|
|
120
|
-
- key: REDIS_URL
|
|
121
|
-
fromDatabase:
|
|
122
|
-
name: redis
|
|
123
|
-
property: connectionString
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
**Python with Celery:**
|
|
127
|
-
```yaml
|
|
128
|
-
type: worker
|
|
129
|
-
name: celery-worker
|
|
130
|
-
runtime: python
|
|
131
|
-
buildCommand: pip install -r requirements.txt
|
|
132
|
-
startCommand: celery -A app.celery worker
|
|
133
|
-
envVars:
|
|
134
|
-
- key: REDIS_URL
|
|
135
|
-
fromDatabase:
|
|
136
|
-
name: redis
|
|
137
|
-
property: connectionString
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
## Cron Jobs (`type: cron`)
|
|
143
|
-
|
|
144
|
-
### Purpose
|
|
145
|
-
|
|
146
|
-
Cron jobs run scheduled tasks on a repeating schedule. They execute, complete, and shut down.
|
|
147
|
-
|
|
148
|
-
### Use Cases
|
|
149
|
-
|
|
150
|
-
- **Database backups**: Regular automated backups
|
|
151
|
-
- **Report generation**: Daily/weekly reports
|
|
152
|
-
- **Data cleanup**: Delete old records periodically
|
|
153
|
-
- **Cache warming**: Pre-populate caches
|
|
154
|
-
- **Email digests**: Send scheduled email summaries
|
|
155
|
-
- **Data synchronization**: Sync between systems
|
|
156
|
-
- **Batch processing**: Process accumulated data
|
|
157
|
-
|
|
158
|
-
### Key Characteristics
|
|
159
|
-
|
|
160
|
-
- **Scheduled execution**: Runs on cron schedule
|
|
161
|
-
- **Automatic shutdown**: Shuts down after completing
|
|
162
|
-
- **No persistent port**: Doesn't maintain listening port
|
|
163
|
-
- **No health checks**: Task either completes or fails
|
|
164
|
-
- **UTC timezone**: All schedules in UTC
|
|
165
|
-
- **Maximum runtime**: Jobs timeout after configured limit
|
|
166
|
-
|
|
167
|
-
### Required Configuration
|
|
168
|
-
|
|
169
|
-
```yaml
|
|
170
|
-
type: cron
|
|
171
|
-
name: daily-backup
|
|
172
|
-
runtime: node
|
|
173
|
-
schedule: "0 2 * * *" # Daily at 2 AM UTC
|
|
174
|
-
buildCommand: npm ci
|
|
175
|
-
startCommand: node scripts/backup.js
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
### Schedule Format
|
|
179
|
-
|
|
180
|
-
Standard cron syntax: `minute hour day month weekday`
|
|
181
|
-
|
|
182
|
-
**Common schedules:**
|
|
183
|
-
|
|
184
|
-
| Schedule | Description |
|
|
185
|
-
|----------|-------------|
|
|
186
|
-
| `*/5 * * * *` | Every 5 minutes |
|
|
187
|
-
| `0 * * * *` | Every hour |
|
|
188
|
-
| `0 0 * * *` | Daily at midnight UTC |
|
|
189
|
-
| `0 9 * * 1-5` | Weekdays at 9 AM UTC |
|
|
190
|
-
| `0 0 1 * *` | First day of each month |
|
|
191
|
-
| `0 9 * * 1` | Every Monday at 9 AM UTC |
|
|
192
|
-
|
|
193
|
-
### Best Practices
|
|
194
|
-
|
|
195
|
-
1. **Handle failures gracefully**: Jobs should be idempotent
|
|
196
|
-
|
|
197
|
-
2. **Log completion status**: Track success/failure
|
|
198
|
-
|
|
199
|
-
3. **Set appropriate timeouts**: Match expected job duration
|
|
200
|
-
|
|
201
|
-
4. **Use UTC times**: All schedules are UTC-based
|
|
202
|
-
|
|
203
|
-
5. **Test thoroughly**: Test with different data scenarios
|
|
204
|
-
|
|
205
|
-
### Example Use Cases
|
|
206
|
-
|
|
207
|
-
**Daily Database Backup:**
|
|
208
|
-
```yaml
|
|
209
|
-
type: cron
|
|
210
|
-
name: db-backup
|
|
211
|
-
runtime: python
|
|
212
|
-
schedule: "0 1 * * *" # 1 AM UTC daily
|
|
213
|
-
buildCommand: pip install -r requirements.txt
|
|
214
|
-
startCommand: python scripts/backup.py
|
|
215
|
-
envVars:
|
|
216
|
-
- key: DATABASE_URL
|
|
217
|
-
fromDatabase:
|
|
218
|
-
name: postgres
|
|
219
|
-
property: connectionString
|
|
220
|
-
- key: S3_BUCKET
|
|
221
|
-
value: my-backups
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
**Hourly Cache Refresh:**
|
|
225
|
-
```yaml
|
|
226
|
-
type: cron
|
|
227
|
-
name: cache-refresh
|
|
228
|
-
runtime: node
|
|
229
|
-
schedule: "0 * * * *" # Top of every hour
|
|
230
|
-
buildCommand: npm ci
|
|
231
|
-
startCommand: node scripts/refresh-cache.js
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
---
|
|
235
|
-
|
|
236
|
-
## Static Sites (`type: web` + `runtime: static`)
|
|
237
|
-
|
|
238
|
-
### Purpose
|
|
239
|
-
|
|
240
|
-
Serve static HTML, CSS, and JavaScript files via CDN. No backend runtime.
|
|
241
|
-
|
|
242
|
-
### Use Cases
|
|
243
|
-
|
|
244
|
-
- **Single Page Applications (SPAs)**: React, Vue, Angular apps
|
|
245
|
-
- **Static site generators**: Gatsby, Next.js (static export), Hugo
|
|
246
|
-
- **Documentation sites**: MkDocs, Docusaurus, VitePress
|
|
247
|
-
- **Landing pages**: Marketing sites
|
|
248
|
-
- **Portfolio sites**: Personal websites
|
|
249
|
-
- **JAMstack sites**: Static sites with API integration
|
|
250
|
-
|
|
251
|
-
### Key Characteristics
|
|
252
|
-
|
|
253
|
-
- **CDN delivery**: Global edge caching
|
|
254
|
-
- **No backend runtime**: Only serves built files
|
|
255
|
-
- **Build output only**: Serves contents of build directory
|
|
256
|
-
- **Routing support**: Rewrite rules for SPA routing
|
|
257
|
-
- **Custom headers**: Cache control, security headers
|
|
258
|
-
- **Fast deployment**: Quick to build and deploy
|
|
259
|
-
|
|
260
|
-
### Required Configuration
|
|
261
|
-
|
|
262
|
-
```yaml
|
|
263
|
-
type: web
|
|
264
|
-
name: frontend
|
|
265
|
-
runtime: static
|
|
266
|
-
buildCommand: npm ci && npm run build
|
|
267
|
-
staticPublishPath: ./dist # or ./build, ./out, ./public
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
### Routing for SPAs
|
|
271
|
-
|
|
272
|
-
Single Page Applications need rewrite rules to handle client-side routing:
|
|
273
|
-
|
|
274
|
-
```yaml
|
|
275
|
-
type: web
|
|
276
|
-
name: react-app
|
|
277
|
-
runtime: static
|
|
278
|
-
buildCommand: npm ci && npm run build
|
|
279
|
-
staticPublishPath: ./build
|
|
280
|
-
routes:
|
|
281
|
-
- type: rewrite
|
|
282
|
-
source: /*
|
|
283
|
-
destination: /index.html
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
### Custom Headers
|
|
287
|
-
|
|
288
|
-
Add cache control and security headers:
|
|
289
|
-
|
|
290
|
-
```yaml
|
|
291
|
-
type: web
|
|
292
|
-
name: static-site
|
|
293
|
-
runtime: static
|
|
294
|
-
buildCommand: npm ci && npm run build
|
|
295
|
-
staticPublishPath: ./dist
|
|
296
|
-
headers:
|
|
297
|
-
# Cache static assets
|
|
298
|
-
- path: /static/*
|
|
299
|
-
name: Cache-Control
|
|
300
|
-
value: public, max-age=31536000, immutable
|
|
301
|
-
|
|
302
|
-
# Security headers
|
|
303
|
-
- path: /*
|
|
304
|
-
name: X-Frame-Options
|
|
305
|
-
value: DENY
|
|
306
|
-
- path: /*
|
|
307
|
-
name: X-Content-Type-Options
|
|
308
|
-
value: nosniff
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
### Build Filters
|
|
312
|
-
|
|
313
|
-
For monorepos, only build when frontend files change:
|
|
314
|
-
|
|
315
|
-
```yaml
|
|
316
|
-
type: web
|
|
317
|
-
name: frontend
|
|
318
|
-
runtime: static
|
|
319
|
-
buildCommand: npm ci && npm run build
|
|
320
|
-
staticPublishPath: ./dist
|
|
321
|
-
buildFilter:
|
|
322
|
-
paths:
|
|
323
|
-
- frontend/**
|
|
324
|
-
ignoredPaths:
|
|
325
|
-
- frontend/**/*.test.js
|
|
326
|
-
- frontend/README.md
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
### Best Practices
|
|
330
|
-
|
|
331
|
-
1. **Optimize build output**: Minify, compress, tree-shake
|
|
332
|
-
|
|
333
|
-
2. **Use proper cache headers**: Long cache for hashed assets
|
|
334
|
-
|
|
335
|
-
3. **Add security headers**: Protect against common attacks
|
|
336
|
-
|
|
337
|
-
4. **Configure SPA routing**: Add rewrite rules for client routing
|
|
338
|
-
|
|
339
|
-
5. **Handle 404s**: Create custom 404.html page
|
|
340
|
-
|
|
341
|
-
---
|
|
342
|
-
|
|
343
|
-
## Private Services (`type: pserv`)
|
|
344
|
-
|
|
345
|
-
### Purpose
|
|
346
|
-
|
|
347
|
-
Internal services accessible only within your Render account. Not exposed to the internet.
|
|
348
|
-
|
|
349
|
-
### Use Cases
|
|
350
|
-
|
|
351
|
-
- **Internal APIs**: Services accessed only by other services
|
|
352
|
-
- **Database proxies**: Connection pools, read replicas
|
|
353
|
-
- **Microservices**: Service mesh architectures
|
|
354
|
-
- **Admin tools**: Internal dashboards
|
|
355
|
-
- **Cache layers**: Internal caching services
|
|
356
|
-
- **Message brokers**: Internal message queues
|
|
357
|
-
|
|
358
|
-
### Key Characteristics
|
|
359
|
-
|
|
360
|
-
- **No public URL**: Only accessible via internal DNS
|
|
361
|
-
- **Internal networking**: Fast, low-latency connections
|
|
362
|
-
- **Port binding required**: Must bind to `0.0.0.0:$PORT`
|
|
363
|
-
- **Private DNS**: `[service-name].render-internal.com`
|
|
364
|
-
- **Same-account only**: Only accessible from same account
|
|
365
|
-
- **No internet access**: Traffic stays within Render network
|
|
366
|
-
|
|
367
|
-
### Required Configuration
|
|
368
|
-
|
|
369
|
-
```yaml
|
|
370
|
-
type: pserv
|
|
371
|
-
name: internal-api
|
|
372
|
-
runtime: node
|
|
373
|
-
buildCommand: npm ci
|
|
374
|
-
startCommand: npm start
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
### Accessing Private Services
|
|
378
|
-
|
|
379
|
-
From other services in the same account:
|
|
380
|
-
|
|
381
|
-
```javascript
|
|
382
|
-
// Use .render-internal.com domain
|
|
383
|
-
const API_URL = 'http://internal-api.render-internal.com:10000';
|
|
384
|
-
```
|
|
385
|
-
|
|
386
|
-
Or use service references:
|
|
387
|
-
|
|
388
|
-
```yaml
|
|
389
|
-
services:
|
|
390
|
-
- type: web
|
|
391
|
-
name: frontend
|
|
392
|
-
runtime: node
|
|
393
|
-
envVars:
|
|
394
|
-
- key: INTERNAL_API_URL
|
|
395
|
-
fromService:
|
|
396
|
-
name: internal-api
|
|
397
|
-
type: pserv
|
|
398
|
-
property: hostport
|
|
399
|
-
```
|
|
400
|
-
|
|
401
|
-
### Best Practices
|
|
402
|
-
|
|
403
|
-
1. **Use internal DNS**: Always use `.render-internal.com` domains
|
|
404
|
-
|
|
405
|
-
2. **No authentication needed**: Already isolated to account
|
|
406
|
-
|
|
407
|
-
3. **Fast communication**: Low latency between services
|
|
408
|
-
|
|
409
|
-
4. **Simplify architecture**: No need for external load balancers
|
|
410
|
-
|
|
411
|
-
---
|
|
412
|
-
|
|
413
|
-
## Comparison Table
|
|
414
|
-
|
|
415
|
-
| Feature | Web | Worker | Cron | Static | Private |
|
|
416
|
-
|---------|-----|--------|------|--------|---------|
|
|
417
|
-
| Public URL | ✅ Yes | ❌ No | ❌ No | ✅ Yes | ❌ No |
|
|
418
|
-
| Port Binding | ✅ Required | ❌ Not needed | ❌ Not needed | ❌ N/A | ✅ Required |
|
|
419
|
-
| Health Checks | ✅ Yes | ❌ No | ❌ No | ❌ N/A | ✅ Yes |
|
|
420
|
-
| Runtime | ✅ Yes | ✅ Yes | ✅ Yes | ❌ No | ✅ Yes |
|
|
421
|
-
| Persistent | ✅ Yes | ✅ Yes | ❌ No | ✅ Yes | ✅ Yes |
|
|
422
|
-
| Scaling | ✅ Yes | ✅ Yes | ❌ No | ✅ Yes | ✅ Yes |
|
|
423
|
-
| Use Case | HTTP servers | Background jobs | Scheduled tasks | Static files | Internal services |
|
|
424
|
-
|
|
425
|
-
## Choosing the Right Service Type
|
|
426
|
-
|
|
427
|
-
**Use Web Service when:**
|
|
428
|
-
- Your app handles HTTP requests
|
|
429
|
-
- Users need to access it via URL
|
|
430
|
-
- You need load balancing and scaling
|
|
431
|
-
|
|
432
|
-
**Use Worker Service when:**
|
|
433
|
-
- Processing background jobs
|
|
434
|
-
- Consuming from message queues
|
|
435
|
-
- Running long-lived processes without HTTP
|
|
436
|
-
|
|
437
|
-
**Use Cron Job when:**
|
|
438
|
-
- Running scheduled tasks
|
|
439
|
-
- Processing doesn't need to be always-on
|
|
440
|
-
- Tasks run periodically (hourly, daily, weekly)
|
|
441
|
-
|
|
442
|
-
**Use Static Site when:**
|
|
443
|
-
- Serving pre-built HTML/CSS/JS
|
|
444
|
-
- No backend processing needed
|
|
445
|
-
- Want CDN caching and fast delivery
|
|
446
|
-
|
|
447
|
-
**Use Private Service when:**
|
|
448
|
-
- Service only accessed by other services
|
|
449
|
-
- Want internal-only communication
|
|
450
|
-
- Building microservice architectures
|
|
1
|
+
# Render Service Types
|
|
2
|
+
|
|
3
|
+
Detailed explanation of each service type available on Render. Choose the right service type based on your application's needs.
|
|
4
|
+
|
|
5
|
+
## Web Services (`type: web`)
|
|
6
|
+
|
|
7
|
+
### Purpose
|
|
8
|
+
|
|
9
|
+
Web services are HTTP servers that handle incoming requests from the internet. They're publicly accessible via HTTPS URLs.
|
|
10
|
+
|
|
11
|
+
### Use Cases
|
|
12
|
+
|
|
13
|
+
- **REST APIs**: JSON APIs for mobile apps or frontend applications
|
|
14
|
+
- **GraphQL servers**: GraphQL endpoints for client queries
|
|
15
|
+
- **Web applications**: Server-rendered websites (Django, Rails, Express)
|
|
16
|
+
- **Full-stack frameworks**: Next.js, Nuxt.js, Remix, SvelteKit
|
|
17
|
+
- **WebSocket servers**: Real-time communication servers
|
|
18
|
+
- **SSR applications**: Server-side rendered React, Vue, or Angular apps
|
|
19
|
+
|
|
20
|
+
### Key Characteristics
|
|
21
|
+
|
|
22
|
+
- **Public URL**: Automatically assigned `https://[service-name].onrender.com`
|
|
23
|
+
- **Port binding required**: Must bind to `0.0.0.0:$PORT`
|
|
24
|
+
- **Health checks**: Render pings your service to verify it's running
|
|
25
|
+
- **HTTPS**: Automatic SSL/TLS certificates
|
|
26
|
+
- **Load balancing**: Traffic distributed across multiple instances
|
|
27
|
+
- **Custom domains**: Support for your own domain names
|
|
28
|
+
|
|
29
|
+
### Required Configuration
|
|
30
|
+
|
|
31
|
+
```yaml
|
|
32
|
+
type: web
|
|
33
|
+
name: my-api
|
|
34
|
+
runtime: node
|
|
35
|
+
buildCommand: npm ci
|
|
36
|
+
startCommand: npm start
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Best Practices
|
|
40
|
+
|
|
41
|
+
1. **Bind to environment PORT**:
|
|
42
|
+
```javascript
|
|
43
|
+
const PORT = process.env.PORT || 3000;
|
|
44
|
+
app.listen(PORT, '0.0.0.0');
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
2. **Add health check endpoint**:
|
|
48
|
+
```javascript
|
|
49
|
+
app.get('/health', (req, res) => {
|
|
50
|
+
res.status(200).json({ status: 'ok' });
|
|
51
|
+
});
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
3. **Use appropriate timeouts**: Web requests should complete within 30 seconds
|
|
55
|
+
|
|
56
|
+
4. **Implement graceful shutdown**: Handle SIGTERM signals properly
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Worker Services (`type: worker`)
|
|
61
|
+
|
|
62
|
+
### Purpose
|
|
63
|
+
|
|
64
|
+
Worker services run background tasks without handling HTTP requests. They're not publicly accessible.
|
|
65
|
+
|
|
66
|
+
### Use Cases
|
|
67
|
+
|
|
68
|
+
- **Queue processors**: Redis queue, BullMQ, Celery, Sidekiq
|
|
69
|
+
- **Background jobs**: Email sending, image processing, data exports
|
|
70
|
+
- **Event consumers**: Message queue consumers (Kafka, RabbitMQ, etc.)
|
|
71
|
+
- **Data pipeline workers**: ETL processes, data transformation
|
|
72
|
+
- **Scheduled background tasks**: Continuous processes (not cron)
|
|
73
|
+
- **WebSocket backend**: Dedicated WebSocket handler services
|
|
74
|
+
|
|
75
|
+
### Key Characteristics
|
|
76
|
+
|
|
77
|
+
- **No public URL**: Not accessible from internet
|
|
78
|
+
- **No port binding**: Doesn't need to listen on a port
|
|
79
|
+
- **No health checks**: Render monitors process health differently
|
|
80
|
+
- **Long-running**: Can run indefinitely
|
|
81
|
+
- **Private communication**: Access via internal networking
|
|
82
|
+
- **Restart on crash**: Automatically restarted if process dies
|
|
83
|
+
|
|
84
|
+
### Required Configuration
|
|
85
|
+
|
|
86
|
+
```yaml
|
|
87
|
+
type: worker
|
|
88
|
+
name: queue-processor
|
|
89
|
+
runtime: python
|
|
90
|
+
buildCommand: pip install -r requirements.txt
|
|
91
|
+
startCommand: celery -A tasks worker --loglevel=info
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Best Practices
|
|
95
|
+
|
|
96
|
+
1. **Connect to message queue**:
|
|
97
|
+
```python
|
|
98
|
+
import redis
|
|
99
|
+
r = redis.from_url(os.environ['REDIS_URL'])
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
2. **Implement retry logic**: Handle failures gracefully
|
|
103
|
+
|
|
104
|
+
3. **Monitor queue depth**: Track pending jobs
|
|
105
|
+
|
|
106
|
+
4. **Log processing status**: Make debugging easier
|
|
107
|
+
|
|
108
|
+
5. **Graceful shutdown**: Finish current jobs before exiting
|
|
109
|
+
|
|
110
|
+
### Common Patterns
|
|
111
|
+
|
|
112
|
+
**Node.js with BullMQ:**
|
|
113
|
+
```yaml
|
|
114
|
+
type: worker
|
|
115
|
+
name: job-processor
|
|
116
|
+
runtime: node
|
|
117
|
+
buildCommand: npm ci
|
|
118
|
+
startCommand: node worker.js
|
|
119
|
+
envVars:
|
|
120
|
+
- key: REDIS_URL
|
|
121
|
+
fromDatabase:
|
|
122
|
+
name: redis
|
|
123
|
+
property: connectionString
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Python with Celery:**
|
|
127
|
+
```yaml
|
|
128
|
+
type: worker
|
|
129
|
+
name: celery-worker
|
|
130
|
+
runtime: python
|
|
131
|
+
buildCommand: pip install -r requirements.txt
|
|
132
|
+
startCommand: celery -A app.celery worker
|
|
133
|
+
envVars:
|
|
134
|
+
- key: REDIS_URL
|
|
135
|
+
fromDatabase:
|
|
136
|
+
name: redis
|
|
137
|
+
property: connectionString
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Cron Jobs (`type: cron`)
|
|
143
|
+
|
|
144
|
+
### Purpose
|
|
145
|
+
|
|
146
|
+
Cron jobs run scheduled tasks on a repeating schedule. They execute, complete, and shut down.
|
|
147
|
+
|
|
148
|
+
### Use Cases
|
|
149
|
+
|
|
150
|
+
- **Database backups**: Regular automated backups
|
|
151
|
+
- **Report generation**: Daily/weekly reports
|
|
152
|
+
- **Data cleanup**: Delete old records periodically
|
|
153
|
+
- **Cache warming**: Pre-populate caches
|
|
154
|
+
- **Email digests**: Send scheduled email summaries
|
|
155
|
+
- **Data synchronization**: Sync between systems
|
|
156
|
+
- **Batch processing**: Process accumulated data
|
|
157
|
+
|
|
158
|
+
### Key Characteristics
|
|
159
|
+
|
|
160
|
+
- **Scheduled execution**: Runs on cron schedule
|
|
161
|
+
- **Automatic shutdown**: Shuts down after completing
|
|
162
|
+
- **No persistent port**: Doesn't maintain listening port
|
|
163
|
+
- **No health checks**: Task either completes or fails
|
|
164
|
+
- **UTC timezone**: All schedules in UTC
|
|
165
|
+
- **Maximum runtime**: Jobs timeout after configured limit
|
|
166
|
+
|
|
167
|
+
### Required Configuration
|
|
168
|
+
|
|
169
|
+
```yaml
|
|
170
|
+
type: cron
|
|
171
|
+
name: daily-backup
|
|
172
|
+
runtime: node
|
|
173
|
+
schedule: "0 2 * * *" # Daily at 2 AM UTC
|
|
174
|
+
buildCommand: npm ci
|
|
175
|
+
startCommand: node scripts/backup.js
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Schedule Format
|
|
179
|
+
|
|
180
|
+
Standard cron syntax: `minute hour day month weekday`
|
|
181
|
+
|
|
182
|
+
**Common schedules:**
|
|
183
|
+
|
|
184
|
+
| Schedule | Description |
|
|
185
|
+
|----------|-------------|
|
|
186
|
+
| `*/5 * * * *` | Every 5 minutes |
|
|
187
|
+
| `0 * * * *` | Every hour |
|
|
188
|
+
| `0 0 * * *` | Daily at midnight UTC |
|
|
189
|
+
| `0 9 * * 1-5` | Weekdays at 9 AM UTC |
|
|
190
|
+
| `0 0 1 * *` | First day of each month |
|
|
191
|
+
| `0 9 * * 1` | Every Monday at 9 AM UTC |
|
|
192
|
+
|
|
193
|
+
### Best Practices
|
|
194
|
+
|
|
195
|
+
1. **Handle failures gracefully**: Jobs should be idempotent
|
|
196
|
+
|
|
197
|
+
2. **Log completion status**: Track success/failure
|
|
198
|
+
|
|
199
|
+
3. **Set appropriate timeouts**: Match expected job duration
|
|
200
|
+
|
|
201
|
+
4. **Use UTC times**: All schedules are UTC-based
|
|
202
|
+
|
|
203
|
+
5. **Test thoroughly**: Test with different data scenarios
|
|
204
|
+
|
|
205
|
+
### Example Use Cases
|
|
206
|
+
|
|
207
|
+
**Daily Database Backup:**
|
|
208
|
+
```yaml
|
|
209
|
+
type: cron
|
|
210
|
+
name: db-backup
|
|
211
|
+
runtime: python
|
|
212
|
+
schedule: "0 1 * * *" # 1 AM UTC daily
|
|
213
|
+
buildCommand: pip install -r requirements.txt
|
|
214
|
+
startCommand: python scripts/backup.py
|
|
215
|
+
envVars:
|
|
216
|
+
- key: DATABASE_URL
|
|
217
|
+
fromDatabase:
|
|
218
|
+
name: postgres
|
|
219
|
+
property: connectionString
|
|
220
|
+
- key: S3_BUCKET
|
|
221
|
+
value: my-backups
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**Hourly Cache Refresh:**
|
|
225
|
+
```yaml
|
|
226
|
+
type: cron
|
|
227
|
+
name: cache-refresh
|
|
228
|
+
runtime: node
|
|
229
|
+
schedule: "0 * * * *" # Top of every hour
|
|
230
|
+
buildCommand: npm ci
|
|
231
|
+
startCommand: node scripts/refresh-cache.js
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Static Sites (`type: web` + `runtime: static`)
|
|
237
|
+
|
|
238
|
+
### Purpose
|
|
239
|
+
|
|
240
|
+
Serve static HTML, CSS, and JavaScript files via CDN. No backend runtime.
|
|
241
|
+
|
|
242
|
+
### Use Cases
|
|
243
|
+
|
|
244
|
+
- **Single Page Applications (SPAs)**: React, Vue, Angular apps
|
|
245
|
+
- **Static site generators**: Gatsby, Next.js (static export), Hugo
|
|
246
|
+
- **Documentation sites**: MkDocs, Docusaurus, VitePress
|
|
247
|
+
- **Landing pages**: Marketing sites
|
|
248
|
+
- **Portfolio sites**: Personal websites
|
|
249
|
+
- **JAMstack sites**: Static sites with API integration
|
|
250
|
+
|
|
251
|
+
### Key Characteristics
|
|
252
|
+
|
|
253
|
+
- **CDN delivery**: Global edge caching
|
|
254
|
+
- **No backend runtime**: Only serves built files
|
|
255
|
+
- **Build output only**: Serves contents of build directory
|
|
256
|
+
- **Routing support**: Rewrite rules for SPA routing
|
|
257
|
+
- **Custom headers**: Cache control, security headers
|
|
258
|
+
- **Fast deployment**: Quick to build and deploy
|
|
259
|
+
|
|
260
|
+
### Required Configuration
|
|
261
|
+
|
|
262
|
+
```yaml
|
|
263
|
+
type: web
|
|
264
|
+
name: frontend
|
|
265
|
+
runtime: static
|
|
266
|
+
buildCommand: npm ci && npm run build
|
|
267
|
+
staticPublishPath: ./dist # or ./build, ./out, ./public
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Routing for SPAs
|
|
271
|
+
|
|
272
|
+
Single Page Applications need rewrite rules to handle client-side routing:
|
|
273
|
+
|
|
274
|
+
```yaml
|
|
275
|
+
type: web
|
|
276
|
+
name: react-app
|
|
277
|
+
runtime: static
|
|
278
|
+
buildCommand: npm ci && npm run build
|
|
279
|
+
staticPublishPath: ./build
|
|
280
|
+
routes:
|
|
281
|
+
- type: rewrite
|
|
282
|
+
source: /*
|
|
283
|
+
destination: /index.html
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Custom Headers
|
|
287
|
+
|
|
288
|
+
Add cache control and security headers:
|
|
289
|
+
|
|
290
|
+
```yaml
|
|
291
|
+
type: web
|
|
292
|
+
name: static-site
|
|
293
|
+
runtime: static
|
|
294
|
+
buildCommand: npm ci && npm run build
|
|
295
|
+
staticPublishPath: ./dist
|
|
296
|
+
headers:
|
|
297
|
+
# Cache static assets
|
|
298
|
+
- path: /static/*
|
|
299
|
+
name: Cache-Control
|
|
300
|
+
value: public, max-age=31536000, immutable
|
|
301
|
+
|
|
302
|
+
# Security headers
|
|
303
|
+
- path: /*
|
|
304
|
+
name: X-Frame-Options
|
|
305
|
+
value: DENY
|
|
306
|
+
- path: /*
|
|
307
|
+
name: X-Content-Type-Options
|
|
308
|
+
value: nosniff
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### Build Filters
|
|
312
|
+
|
|
313
|
+
For monorepos, only build when frontend files change:
|
|
314
|
+
|
|
315
|
+
```yaml
|
|
316
|
+
type: web
|
|
317
|
+
name: frontend
|
|
318
|
+
runtime: static
|
|
319
|
+
buildCommand: npm ci && npm run build
|
|
320
|
+
staticPublishPath: ./dist
|
|
321
|
+
buildFilter:
|
|
322
|
+
paths:
|
|
323
|
+
- frontend/**
|
|
324
|
+
ignoredPaths:
|
|
325
|
+
- frontend/**/*.test.js
|
|
326
|
+
- frontend/README.md
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### Best Practices
|
|
330
|
+
|
|
331
|
+
1. **Optimize build output**: Minify, compress, tree-shake
|
|
332
|
+
|
|
333
|
+
2. **Use proper cache headers**: Long cache for hashed assets
|
|
334
|
+
|
|
335
|
+
3. **Add security headers**: Protect against common attacks
|
|
336
|
+
|
|
337
|
+
4. **Configure SPA routing**: Add rewrite rules for client routing
|
|
338
|
+
|
|
339
|
+
5. **Handle 404s**: Create custom 404.html page
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## Private Services (`type: pserv`)
|
|
344
|
+
|
|
345
|
+
### Purpose
|
|
346
|
+
|
|
347
|
+
Internal services accessible only within your Render account. Not exposed to the internet.
|
|
348
|
+
|
|
349
|
+
### Use Cases
|
|
350
|
+
|
|
351
|
+
- **Internal APIs**: Services accessed only by other services
|
|
352
|
+
- **Database proxies**: Connection pools, read replicas
|
|
353
|
+
- **Microservices**: Service mesh architectures
|
|
354
|
+
- **Admin tools**: Internal dashboards
|
|
355
|
+
- **Cache layers**: Internal caching services
|
|
356
|
+
- **Message brokers**: Internal message queues
|
|
357
|
+
|
|
358
|
+
### Key Characteristics
|
|
359
|
+
|
|
360
|
+
- **No public URL**: Only accessible via internal DNS
|
|
361
|
+
- **Internal networking**: Fast, low-latency connections
|
|
362
|
+
- **Port binding required**: Must bind to `0.0.0.0:$PORT`
|
|
363
|
+
- **Private DNS**: `[service-name].render-internal.com`
|
|
364
|
+
- **Same-account only**: Only accessible from same account
|
|
365
|
+
- **No internet access**: Traffic stays within Render network
|
|
366
|
+
|
|
367
|
+
### Required Configuration
|
|
368
|
+
|
|
369
|
+
```yaml
|
|
370
|
+
type: pserv
|
|
371
|
+
name: internal-api
|
|
372
|
+
runtime: node
|
|
373
|
+
buildCommand: npm ci
|
|
374
|
+
startCommand: npm start
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### Accessing Private Services
|
|
378
|
+
|
|
379
|
+
From other services in the same account:
|
|
380
|
+
|
|
381
|
+
```javascript
|
|
382
|
+
// Use .render-internal.com domain
|
|
383
|
+
const API_URL = 'http://internal-api.render-internal.com:10000';
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
Or use service references:
|
|
387
|
+
|
|
388
|
+
```yaml
|
|
389
|
+
services:
|
|
390
|
+
- type: web
|
|
391
|
+
name: frontend
|
|
392
|
+
runtime: node
|
|
393
|
+
envVars:
|
|
394
|
+
- key: INTERNAL_API_URL
|
|
395
|
+
fromService:
|
|
396
|
+
name: internal-api
|
|
397
|
+
type: pserv
|
|
398
|
+
property: hostport
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
### Best Practices
|
|
402
|
+
|
|
403
|
+
1. **Use internal DNS**: Always use `.render-internal.com` domains
|
|
404
|
+
|
|
405
|
+
2. **No authentication needed**: Already isolated to account
|
|
406
|
+
|
|
407
|
+
3. **Fast communication**: Low latency between services
|
|
408
|
+
|
|
409
|
+
4. **Simplify architecture**: No need for external load balancers
|
|
410
|
+
|
|
411
|
+
---
|
|
412
|
+
|
|
413
|
+
## Comparison Table
|
|
414
|
+
|
|
415
|
+
| Feature | Web | Worker | Cron | Static | Private |
|
|
416
|
+
|---------|-----|--------|------|--------|---------|
|
|
417
|
+
| Public URL | ✅ Yes | ❌ No | ❌ No | ✅ Yes | ❌ No |
|
|
418
|
+
| Port Binding | ✅ Required | ❌ Not needed | ❌ Not needed | ❌ N/A | ✅ Required |
|
|
419
|
+
| Health Checks | ✅ Yes | ❌ No | ❌ No | ❌ N/A | ✅ Yes |
|
|
420
|
+
| Runtime | ✅ Yes | ✅ Yes | ✅ Yes | ❌ No | ✅ Yes |
|
|
421
|
+
| Persistent | ✅ Yes | ✅ Yes | ❌ No | ✅ Yes | ✅ Yes |
|
|
422
|
+
| Scaling | ✅ Yes | ✅ Yes | ❌ No | ✅ Yes | ✅ Yes |
|
|
423
|
+
| Use Case | HTTP servers | Background jobs | Scheduled tasks | Static files | Internal services |
|
|
424
|
+
|
|
425
|
+
## Choosing the Right Service Type
|
|
426
|
+
|
|
427
|
+
**Use Web Service when:**
|
|
428
|
+
- Your app handles HTTP requests
|
|
429
|
+
- Users need to access it via URL
|
|
430
|
+
- You need load balancing and scaling
|
|
431
|
+
|
|
432
|
+
**Use Worker Service when:**
|
|
433
|
+
- Processing background jobs
|
|
434
|
+
- Consuming from message queues
|
|
435
|
+
- Running long-lived processes without HTTP
|
|
436
|
+
|
|
437
|
+
**Use Cron Job when:**
|
|
438
|
+
- Running scheduled tasks
|
|
439
|
+
- Processing doesn't need to be always-on
|
|
440
|
+
- Tasks run periodically (hourly, daily, weekly)
|
|
441
|
+
|
|
442
|
+
**Use Static Site when:**
|
|
443
|
+
- Serving pre-built HTML/CSS/JS
|
|
444
|
+
- No backend processing needed
|
|
445
|
+
- Want CDN caching and fast delivery
|
|
446
|
+
|
|
447
|
+
**Use Private Service when:**
|
|
448
|
+
- Service only accessed by other services
|
|
449
|
+
- Want internal-only communication
|
|
450
|
+
- Building microservice architectures
|