@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,551 +1,551 @@
|
|
|
1
|
-
# Turborepo Caching Strategies
|
|
2
|
-
|
|
3
|
-
Local caching, remote caching, cache invalidation, and optimization techniques.
|
|
4
|
-
|
|
5
|
-
## Local Caching
|
|
6
|
-
|
|
7
|
-
### How It Works
|
|
8
|
-
|
|
9
|
-
Turborepo caches task outputs based on inputs:
|
|
10
|
-
|
|
11
|
-
1. **Hash inputs**: Source files, dependencies, environment variables, config
|
|
12
|
-
2. **Run task**: If hash not in cache
|
|
13
|
-
3. **Save outputs**: Store in `.turbo/cache`
|
|
14
|
-
4. **Restore on match**: Instant completion on cache hit
|
|
15
|
-
|
|
16
|
-
Default cache location: `./node_modules/.cache/turbo`
|
|
17
|
-
|
|
18
|
-
### Cache Configuration
|
|
19
|
-
|
|
20
|
-
```json
|
|
21
|
-
// turbo.json
|
|
22
|
-
{
|
|
23
|
-
"pipeline": {
|
|
24
|
-
"build": {
|
|
25
|
-
"outputs": ["dist/**", ".next/**", "!.next/cache/**"],
|
|
26
|
-
"cache": true // default
|
|
27
|
-
},
|
|
28
|
-
"dev": {
|
|
29
|
-
"cache": false // don't cache dev servers
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
### Outputs Configuration
|
|
36
|
-
|
|
37
|
-
Specify what gets cached:
|
|
38
|
-
|
|
39
|
-
```json
|
|
40
|
-
{
|
|
41
|
-
"build": {
|
|
42
|
-
"outputs": [
|
|
43
|
-
"dist/**", // All files in dist
|
|
44
|
-
"build/**", // Build directory
|
|
45
|
-
".next/**", // Next.js output
|
|
46
|
-
"!.next/cache/**", // Exclude Next.js cache
|
|
47
|
-
"storybook-static/**", // Storybook build
|
|
48
|
-
"*.tsbuildinfo" // TypeScript build info
|
|
49
|
-
]
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
**Best practices:**
|
|
55
|
-
- Include all build artifacts
|
|
56
|
-
- Exclude nested caches
|
|
57
|
-
- Include type definitions
|
|
58
|
-
- Include generated files
|
|
59
|
-
|
|
60
|
-
### Clear Local Cache
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
# Remove cache directory
|
|
64
|
-
rm -rf ./node_modules/.cache/turbo
|
|
65
|
-
|
|
66
|
-
# Or use turbo command with --force
|
|
67
|
-
turbo run build --force
|
|
68
|
-
|
|
69
|
-
# Clear and rebuild
|
|
70
|
-
turbo run clean && turbo run build
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## Remote Caching
|
|
74
|
-
|
|
75
|
-
Share cache across team and CI/CD.
|
|
76
|
-
|
|
77
|
-
### Vercel Remote Cache (Recommended)
|
|
78
|
-
|
|
79
|
-
**Setup:**
|
|
80
|
-
```bash
|
|
81
|
-
# Login to Vercel
|
|
82
|
-
turbo login
|
|
83
|
-
|
|
84
|
-
# Link repository
|
|
85
|
-
turbo link
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
**Use in CI:**
|
|
89
|
-
```yaml
|
|
90
|
-
# .github/workflows/ci.yml
|
|
91
|
-
env:
|
|
92
|
-
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
93
|
-
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
|
94
|
-
|
|
95
|
-
steps:
|
|
96
|
-
- run: turbo run build test
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
Get tokens from Vercel dashboard:
|
|
100
|
-
1. Go to https://vercel.com/account/tokens
|
|
101
|
-
2. Create new token
|
|
102
|
-
3. Add as GitHub secrets
|
|
103
|
-
|
|
104
|
-
### Custom Remote Cache
|
|
105
|
-
|
|
106
|
-
Configure custom remote cache server:
|
|
107
|
-
|
|
108
|
-
```json
|
|
109
|
-
// .turbo/config.json
|
|
110
|
-
{
|
|
111
|
-
"teamid": "team_xxx",
|
|
112
|
-
"apiurl": "https://cache.example.com",
|
|
113
|
-
"token": "your-token"
|
|
114
|
-
}
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Or use environment variables:
|
|
118
|
-
```bash
|
|
119
|
-
export TURBO_API="https://cache.example.com"
|
|
120
|
-
export TURBO_TOKEN="your-token"
|
|
121
|
-
export TURBO_TEAM="team_xxx"
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### Remote Cache Verification
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
# Check cache status
|
|
128
|
-
turbo run build --output-logs=hash-only
|
|
129
|
-
|
|
130
|
-
# Output shows:
|
|
131
|
-
# • web:build: cache hit, replaying logs [hash]
|
|
132
|
-
# • api:build: cache miss, executing [hash]
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
## Cache Signatures
|
|
136
|
-
|
|
137
|
-
Cache invalidated when these change:
|
|
138
|
-
|
|
139
|
-
### 1. Source Files
|
|
140
|
-
|
|
141
|
-
All tracked Git files in package:
|
|
142
|
-
```
|
|
143
|
-
packages/ui/
|
|
144
|
-
├── src/
|
|
145
|
-
│ ├── button.tsx # Tracked
|
|
146
|
-
│ └── input.tsx # Tracked
|
|
147
|
-
├── dist/ # Ignored (in .gitignore)
|
|
148
|
-
└── node_modules/ # Ignored
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
### 2. Package Dependencies
|
|
152
|
-
|
|
153
|
-
Changes in package.json:
|
|
154
|
-
```json
|
|
155
|
-
{
|
|
156
|
-
"dependencies": {
|
|
157
|
-
"react": "18.2.0" // Version change invalidates cache
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
### 3. Environment Variables
|
|
163
|
-
|
|
164
|
-
Configured in pipeline:
|
|
165
|
-
```json
|
|
166
|
-
{
|
|
167
|
-
"build": {
|
|
168
|
-
"env": ["NODE_ENV", "API_URL"] // Changes invalidate cache
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
### 4. Global Dependencies
|
|
174
|
-
|
|
175
|
-
Files affecting all packages:
|
|
176
|
-
```json
|
|
177
|
-
{
|
|
178
|
-
"globalDependencies": [
|
|
179
|
-
"**/.env.*local",
|
|
180
|
-
"tsconfig.json",
|
|
181
|
-
".eslintrc.js"
|
|
182
|
-
]
|
|
183
|
-
}
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### 5. Task Configuration
|
|
187
|
-
|
|
188
|
-
Changes to turbo.json pipeline:
|
|
189
|
-
```json
|
|
190
|
-
{
|
|
191
|
-
"build": {
|
|
192
|
-
"dependsOn": ["^build"],
|
|
193
|
-
"outputs": ["dist/**"] // Config changes invalidate cache
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
## Input Control
|
|
199
|
-
|
|
200
|
-
### Override Input Detection
|
|
201
|
-
|
|
202
|
-
Explicitly define what affects cache:
|
|
203
|
-
|
|
204
|
-
```json
|
|
205
|
-
{
|
|
206
|
-
"build": {
|
|
207
|
-
"inputs": [
|
|
208
|
-
"src/**/*.ts", // Include TS files
|
|
209
|
-
"src/**/*.tsx", // Include TSX files
|
|
210
|
-
"!src/**/*.test.ts", // Exclude tests
|
|
211
|
-
"!src/**/*.stories.tsx", // Exclude stories
|
|
212
|
-
"package.json", // Include package.json
|
|
213
|
-
"tsconfig.json" // Include config
|
|
214
|
-
]
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
Use cases:
|
|
220
|
-
- Exclude test files from build cache
|
|
221
|
-
- Exclude documentation from production builds
|
|
222
|
-
- Include only source files, not generated files
|
|
223
|
-
|
|
224
|
-
### Global vs Package Inputs
|
|
225
|
-
|
|
226
|
-
**Global inputs** (affect all packages):
|
|
227
|
-
```json
|
|
228
|
-
{
|
|
229
|
-
"globalDependencies": [".env", "tsconfig.json"]
|
|
230
|
-
}
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
**Package inputs** (affect specific tasks):
|
|
234
|
-
```json
|
|
235
|
-
{
|
|
236
|
-
"pipeline": {
|
|
237
|
-
"build": {
|
|
238
|
-
"inputs": ["src/**"]
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
## Environment Variables
|
|
245
|
-
|
|
246
|
-
### Cached Environment Variables
|
|
247
|
-
|
|
248
|
-
Include in cache signature:
|
|
249
|
-
|
|
250
|
-
```json
|
|
251
|
-
{
|
|
252
|
-
"pipeline": {
|
|
253
|
-
"build": {
|
|
254
|
-
"env": [
|
|
255
|
-
"NODE_ENV", // Must match for cache hit
|
|
256
|
-
"NEXT_PUBLIC_API_URL",
|
|
257
|
-
"DATABASE_URL"
|
|
258
|
-
]
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
Cache invalidated when values change.
|
|
265
|
-
|
|
266
|
-
### Pass-Through Environment Variables
|
|
267
|
-
|
|
268
|
-
Don't affect cache:
|
|
269
|
-
|
|
270
|
-
```json
|
|
271
|
-
{
|
|
272
|
-
"pipeline": {
|
|
273
|
-
"build": {
|
|
274
|
-
"passThroughEnv": [
|
|
275
|
-
"DEBUG", // Different values use same cache
|
|
276
|
-
"LOG_LEVEL",
|
|
277
|
-
"VERBOSE"
|
|
278
|
-
]
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
Use for: Debug flags, log levels, non-production settings
|
|
285
|
-
|
|
286
|
-
### Global Environment Variables
|
|
287
|
-
|
|
288
|
-
Available to all tasks:
|
|
289
|
-
|
|
290
|
-
```json
|
|
291
|
-
{
|
|
292
|
-
"globalEnv": [
|
|
293
|
-
"NODE_ENV",
|
|
294
|
-
"CI",
|
|
295
|
-
"VERCEL"
|
|
296
|
-
]
|
|
297
|
-
}
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
## Cache Optimization Strategies
|
|
301
|
-
|
|
302
|
-
### 1. Granular Outputs
|
|
303
|
-
|
|
304
|
-
Define precise outputs to minimize cache size:
|
|
305
|
-
|
|
306
|
-
```json
|
|
307
|
-
// ❌ Bad - caches too much
|
|
308
|
-
{
|
|
309
|
-
"build": {
|
|
310
|
-
"outputs": ["**"]
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
// ✅ Good - specific outputs
|
|
315
|
-
{
|
|
316
|
-
"build": {
|
|
317
|
-
"outputs": ["dist/**", "!dist/**/*.map"]
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
### 2. Exclude Unnecessary Files
|
|
323
|
-
|
|
324
|
-
```json
|
|
325
|
-
{
|
|
326
|
-
"build": {
|
|
327
|
-
"outputs": [
|
|
328
|
-
".next/**",
|
|
329
|
-
"!.next/cache/**", // Exclude Next.js cache
|
|
330
|
-
"!.next/server/**/*.js.map", // Exclude source maps
|
|
331
|
-
"!.next/static/**/*.map"
|
|
332
|
-
]
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
### 3. Separate Cacheable Tasks
|
|
338
|
-
|
|
339
|
-
```json
|
|
340
|
-
{
|
|
341
|
-
"pipeline": {
|
|
342
|
-
"build": {
|
|
343
|
-
"dependsOn": ["^build"],
|
|
344
|
-
"cache": true
|
|
345
|
-
},
|
|
346
|
-
"test": {
|
|
347
|
-
"dependsOn": ["build"],
|
|
348
|
-
"cache": true // Separate from build
|
|
349
|
-
},
|
|
350
|
-
"dev": {
|
|
351
|
-
"cache": false // Never cache
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
```
|
|
356
|
-
|
|
357
|
-
### 4. Use Input Filters
|
|
358
|
-
|
|
359
|
-
Only track relevant files:
|
|
360
|
-
|
|
361
|
-
```json
|
|
362
|
-
{
|
|
363
|
-
"build": {
|
|
364
|
-
"inputs": [
|
|
365
|
-
"src/**/*.{ts,tsx}",
|
|
366
|
-
"!src/**/*.{test,spec}.{ts,tsx}",
|
|
367
|
-
"public/**",
|
|
368
|
-
"package.json"
|
|
369
|
-
]
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-
## Cache Analysis
|
|
375
|
-
|
|
376
|
-
### Inspect Cache Hits/Misses
|
|
377
|
-
|
|
378
|
-
```bash
|
|
379
|
-
# Dry run with JSON output
|
|
380
|
-
turbo run build --dry-run=json | jq '.tasks[] | {package: .package, task: .task, cache: .cache}'
|
|
381
|
-
```
|
|
382
|
-
|
|
383
|
-
### View Task Graph
|
|
384
|
-
|
|
385
|
-
```bash
|
|
386
|
-
# Generate task graph
|
|
387
|
-
turbo run build --graph
|
|
388
|
-
|
|
389
|
-
# Output: graph.html (open in browser)
|
|
390
|
-
```
|
|
391
|
-
|
|
392
|
-
### Cache Statistics
|
|
393
|
-
|
|
394
|
-
```bash
|
|
395
|
-
# Run with summary
|
|
396
|
-
turbo run build --summarize
|
|
397
|
-
|
|
398
|
-
# Output: .turbo/runs/[hash].json
|
|
399
|
-
```
|
|
400
|
-
|
|
401
|
-
## CI/CD Cache Configuration
|
|
402
|
-
|
|
403
|
-
### GitHub Actions
|
|
404
|
-
|
|
405
|
-
```yaml
|
|
406
|
-
name: CI
|
|
407
|
-
on: [push, pull_request]
|
|
408
|
-
|
|
409
|
-
jobs:
|
|
410
|
-
build:
|
|
411
|
-
runs-on: ubuntu-latest
|
|
412
|
-
steps:
|
|
413
|
-
- uses: actions/checkout@v4
|
|
414
|
-
|
|
415
|
-
- uses: actions/setup-node@v4
|
|
416
|
-
with:
|
|
417
|
-
node-version: 18
|
|
418
|
-
|
|
419
|
-
- name: Install dependencies
|
|
420
|
-
run: npm install
|
|
421
|
-
|
|
422
|
-
- name: Build and test
|
|
423
|
-
run: turbo run build test lint
|
|
424
|
-
env:
|
|
425
|
-
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
426
|
-
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
|
427
|
-
|
|
428
|
-
# Optional: Cache node_modules
|
|
429
|
-
- uses: actions/cache@v3
|
|
430
|
-
with:
|
|
431
|
-
path: node_modules
|
|
432
|
-
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
|
|
433
|
-
```
|
|
434
|
-
|
|
435
|
-
### GitLab CI
|
|
436
|
-
|
|
437
|
-
```yaml
|
|
438
|
-
image: node:18
|
|
439
|
-
|
|
440
|
-
cache:
|
|
441
|
-
key: ${CI_COMMIT_REF_SLUG}
|
|
442
|
-
paths:
|
|
443
|
-
- node_modules/
|
|
444
|
-
- .turbo/
|
|
445
|
-
|
|
446
|
-
build:
|
|
447
|
-
stage: build
|
|
448
|
-
script:
|
|
449
|
-
- npm install
|
|
450
|
-
- turbo run build test
|
|
451
|
-
variables:
|
|
452
|
-
TURBO_TOKEN: $TURBO_TOKEN
|
|
453
|
-
TURBO_TEAM: $TURBO_TEAM
|
|
454
|
-
```
|
|
455
|
-
|
|
456
|
-
## Troubleshooting
|
|
457
|
-
|
|
458
|
-
### Cache Not Working
|
|
459
|
-
|
|
460
|
-
**Check outputs are defined:**
|
|
461
|
-
```bash
|
|
462
|
-
turbo run build --dry-run=json | jq '.tasks[] | {task: .task, outputs: .outputs}'
|
|
463
|
-
```
|
|
464
|
-
|
|
465
|
-
**Verify cache location:**
|
|
466
|
-
```bash
|
|
467
|
-
ls -la ./node_modules/.cache/turbo
|
|
468
|
-
```
|
|
469
|
-
|
|
470
|
-
**Check environment variables:**
|
|
471
|
-
```bash
|
|
472
|
-
echo $TURBO_TOKEN
|
|
473
|
-
echo $TURBO_TEAM
|
|
474
|
-
```
|
|
475
|
-
|
|
476
|
-
### Cache Too Large
|
|
477
|
-
|
|
478
|
-
**Analyze cache size:**
|
|
479
|
-
```bash
|
|
480
|
-
du -sh ./node_modules/.cache/turbo
|
|
481
|
-
```
|
|
482
|
-
|
|
483
|
-
**Reduce outputs:**
|
|
484
|
-
```json
|
|
485
|
-
{
|
|
486
|
-
"build": {
|
|
487
|
-
"outputs": [
|
|
488
|
-
"dist/**",
|
|
489
|
-
"!dist/**/*.map", // Exclude source maps
|
|
490
|
-
"!dist/**/*.test.js" // Exclude test files
|
|
491
|
-
]
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
```
|
|
495
|
-
|
|
496
|
-
**Clear old cache:**
|
|
497
|
-
```bash
|
|
498
|
-
# Turborepo doesn't auto-clean, manually remove:
|
|
499
|
-
rm -rf ./node_modules/.cache/turbo
|
|
500
|
-
```
|
|
501
|
-
|
|
502
|
-
### Remote Cache Connection Issues
|
|
503
|
-
|
|
504
|
-
**Test connection:**
|
|
505
|
-
```bash
|
|
506
|
-
curl -I https://cache.example.com
|
|
507
|
-
```
|
|
508
|
-
|
|
509
|
-
**Verify token:**
|
|
510
|
-
```bash
|
|
511
|
-
turbo link
|
|
512
|
-
# Should show: "Remote caching enabled"
|
|
513
|
-
```
|
|
514
|
-
|
|
515
|
-
**Check logs:**
|
|
516
|
-
```bash
|
|
517
|
-
turbo run build --output-logs=full
|
|
518
|
-
```
|
|
519
|
-
|
|
520
|
-
## Best Practices
|
|
521
|
-
|
|
522
|
-
1. **Define precise outputs** - Only cache necessary files
|
|
523
|
-
2. **Exclude nested caches** - Don't cache caches (.next/cache)
|
|
524
|
-
3. **Use remote caching** - Share cache across team and CI
|
|
525
|
-
4. **Track relevant inputs** - Use `inputs` to filter files
|
|
526
|
-
5. **Separate env vars** - Use `passThroughEnv` for debug flags
|
|
527
|
-
6. **Cache test results** - Include coverage in outputs
|
|
528
|
-
7. **Don't cache dev servers** - Set `cache: false` for dev tasks
|
|
529
|
-
8. **Use global dependencies** - Share config across packages
|
|
530
|
-
9. **Monitor cache performance** - Use `--summarize` to analyze
|
|
531
|
-
10. **Clear cache periodically** - Remove stale cache manually
|
|
532
|
-
|
|
533
|
-
## Cache Performance Tips
|
|
534
|
-
|
|
535
|
-
**For CI/CD:**
|
|
536
|
-
- Enable remote caching
|
|
537
|
-
- Run only changed packages: `--filter='...[origin/main]'`
|
|
538
|
-
- Use `--continue` to see all errors
|
|
539
|
-
- Cache node_modules separately
|
|
540
|
-
|
|
541
|
-
**For Local Development:**
|
|
542
|
-
- Keep local cache enabled
|
|
543
|
-
- Don't force rebuild unless needed
|
|
544
|
-
- Use filters to build only what changed
|
|
545
|
-
- Clear cache if issues arise
|
|
546
|
-
|
|
547
|
-
**For Large Monorepos:**
|
|
548
|
-
- Use granular outputs
|
|
549
|
-
- Implement input filters
|
|
550
|
-
- Monitor cache size regularly
|
|
551
|
-
- Consider cache size limits on remote cache
|
|
1
|
+
# Turborepo Caching Strategies
|
|
2
|
+
|
|
3
|
+
Local caching, remote caching, cache invalidation, and optimization techniques.
|
|
4
|
+
|
|
5
|
+
## Local Caching
|
|
6
|
+
|
|
7
|
+
### How It Works
|
|
8
|
+
|
|
9
|
+
Turborepo caches task outputs based on inputs:
|
|
10
|
+
|
|
11
|
+
1. **Hash inputs**: Source files, dependencies, environment variables, config
|
|
12
|
+
2. **Run task**: If hash not in cache
|
|
13
|
+
3. **Save outputs**: Store in `.turbo/cache`
|
|
14
|
+
4. **Restore on match**: Instant completion on cache hit
|
|
15
|
+
|
|
16
|
+
Default cache location: `./node_modules/.cache/turbo`
|
|
17
|
+
|
|
18
|
+
### Cache Configuration
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
// turbo.json
|
|
22
|
+
{
|
|
23
|
+
"pipeline": {
|
|
24
|
+
"build": {
|
|
25
|
+
"outputs": ["dist/**", ".next/**", "!.next/cache/**"],
|
|
26
|
+
"cache": true // default
|
|
27
|
+
},
|
|
28
|
+
"dev": {
|
|
29
|
+
"cache": false // don't cache dev servers
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Outputs Configuration
|
|
36
|
+
|
|
37
|
+
Specify what gets cached:
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"build": {
|
|
42
|
+
"outputs": [
|
|
43
|
+
"dist/**", // All files in dist
|
|
44
|
+
"build/**", // Build directory
|
|
45
|
+
".next/**", // Next.js output
|
|
46
|
+
"!.next/cache/**", // Exclude Next.js cache
|
|
47
|
+
"storybook-static/**", // Storybook build
|
|
48
|
+
"*.tsbuildinfo" // TypeScript build info
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Best practices:**
|
|
55
|
+
- Include all build artifacts
|
|
56
|
+
- Exclude nested caches
|
|
57
|
+
- Include type definitions
|
|
58
|
+
- Include generated files
|
|
59
|
+
|
|
60
|
+
### Clear Local Cache
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Remove cache directory
|
|
64
|
+
rm -rf ./node_modules/.cache/turbo
|
|
65
|
+
|
|
66
|
+
# Or use turbo command with --force
|
|
67
|
+
turbo run build --force
|
|
68
|
+
|
|
69
|
+
# Clear and rebuild
|
|
70
|
+
turbo run clean && turbo run build
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Remote Caching
|
|
74
|
+
|
|
75
|
+
Share cache across team and CI/CD.
|
|
76
|
+
|
|
77
|
+
### Vercel Remote Cache (Recommended)
|
|
78
|
+
|
|
79
|
+
**Setup:**
|
|
80
|
+
```bash
|
|
81
|
+
# Login to Vercel
|
|
82
|
+
turbo login
|
|
83
|
+
|
|
84
|
+
# Link repository
|
|
85
|
+
turbo link
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Use in CI:**
|
|
89
|
+
```yaml
|
|
90
|
+
# .github/workflows/ci.yml
|
|
91
|
+
env:
|
|
92
|
+
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
93
|
+
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
|
94
|
+
|
|
95
|
+
steps:
|
|
96
|
+
- run: turbo run build test
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Get tokens from Vercel dashboard:
|
|
100
|
+
1. Go to https://vercel.com/account/tokens
|
|
101
|
+
2. Create new token
|
|
102
|
+
3. Add as GitHub secrets
|
|
103
|
+
|
|
104
|
+
### Custom Remote Cache
|
|
105
|
+
|
|
106
|
+
Configure custom remote cache server:
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
// .turbo/config.json
|
|
110
|
+
{
|
|
111
|
+
"teamid": "team_xxx",
|
|
112
|
+
"apiurl": "https://cache.example.com",
|
|
113
|
+
"token": "your-token"
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Or use environment variables:
|
|
118
|
+
```bash
|
|
119
|
+
export TURBO_API="https://cache.example.com"
|
|
120
|
+
export TURBO_TOKEN="your-token"
|
|
121
|
+
export TURBO_TEAM="team_xxx"
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Remote Cache Verification
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Check cache status
|
|
128
|
+
turbo run build --output-logs=hash-only
|
|
129
|
+
|
|
130
|
+
# Output shows:
|
|
131
|
+
# • web:build: cache hit, replaying logs [hash]
|
|
132
|
+
# • api:build: cache miss, executing [hash]
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Cache Signatures
|
|
136
|
+
|
|
137
|
+
Cache invalidated when these change:
|
|
138
|
+
|
|
139
|
+
### 1. Source Files
|
|
140
|
+
|
|
141
|
+
All tracked Git files in package:
|
|
142
|
+
```
|
|
143
|
+
packages/ui/
|
|
144
|
+
├── src/
|
|
145
|
+
│ ├── button.tsx # Tracked
|
|
146
|
+
│ └── input.tsx # Tracked
|
|
147
|
+
├── dist/ # Ignored (in .gitignore)
|
|
148
|
+
└── node_modules/ # Ignored
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### 2. Package Dependencies
|
|
152
|
+
|
|
153
|
+
Changes in package.json:
|
|
154
|
+
```json
|
|
155
|
+
{
|
|
156
|
+
"dependencies": {
|
|
157
|
+
"react": "18.2.0" // Version change invalidates cache
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### 3. Environment Variables
|
|
163
|
+
|
|
164
|
+
Configured in pipeline:
|
|
165
|
+
```json
|
|
166
|
+
{
|
|
167
|
+
"build": {
|
|
168
|
+
"env": ["NODE_ENV", "API_URL"] // Changes invalidate cache
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### 4. Global Dependencies
|
|
174
|
+
|
|
175
|
+
Files affecting all packages:
|
|
176
|
+
```json
|
|
177
|
+
{
|
|
178
|
+
"globalDependencies": [
|
|
179
|
+
"**/.env.*local",
|
|
180
|
+
"tsconfig.json",
|
|
181
|
+
".eslintrc.js"
|
|
182
|
+
]
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### 5. Task Configuration
|
|
187
|
+
|
|
188
|
+
Changes to turbo.json pipeline:
|
|
189
|
+
```json
|
|
190
|
+
{
|
|
191
|
+
"build": {
|
|
192
|
+
"dependsOn": ["^build"],
|
|
193
|
+
"outputs": ["dist/**"] // Config changes invalidate cache
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## Input Control
|
|
199
|
+
|
|
200
|
+
### Override Input Detection
|
|
201
|
+
|
|
202
|
+
Explicitly define what affects cache:
|
|
203
|
+
|
|
204
|
+
```json
|
|
205
|
+
{
|
|
206
|
+
"build": {
|
|
207
|
+
"inputs": [
|
|
208
|
+
"src/**/*.ts", // Include TS files
|
|
209
|
+
"src/**/*.tsx", // Include TSX files
|
|
210
|
+
"!src/**/*.test.ts", // Exclude tests
|
|
211
|
+
"!src/**/*.stories.tsx", // Exclude stories
|
|
212
|
+
"package.json", // Include package.json
|
|
213
|
+
"tsconfig.json" // Include config
|
|
214
|
+
]
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Use cases:
|
|
220
|
+
- Exclude test files from build cache
|
|
221
|
+
- Exclude documentation from production builds
|
|
222
|
+
- Include only source files, not generated files
|
|
223
|
+
|
|
224
|
+
### Global vs Package Inputs
|
|
225
|
+
|
|
226
|
+
**Global inputs** (affect all packages):
|
|
227
|
+
```json
|
|
228
|
+
{
|
|
229
|
+
"globalDependencies": [".env", "tsconfig.json"]
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**Package inputs** (affect specific tasks):
|
|
234
|
+
```json
|
|
235
|
+
{
|
|
236
|
+
"pipeline": {
|
|
237
|
+
"build": {
|
|
238
|
+
"inputs": ["src/**"]
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## Environment Variables
|
|
245
|
+
|
|
246
|
+
### Cached Environment Variables
|
|
247
|
+
|
|
248
|
+
Include in cache signature:
|
|
249
|
+
|
|
250
|
+
```json
|
|
251
|
+
{
|
|
252
|
+
"pipeline": {
|
|
253
|
+
"build": {
|
|
254
|
+
"env": [
|
|
255
|
+
"NODE_ENV", // Must match for cache hit
|
|
256
|
+
"NEXT_PUBLIC_API_URL",
|
|
257
|
+
"DATABASE_URL"
|
|
258
|
+
]
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Cache invalidated when values change.
|
|
265
|
+
|
|
266
|
+
### Pass-Through Environment Variables
|
|
267
|
+
|
|
268
|
+
Don't affect cache:
|
|
269
|
+
|
|
270
|
+
```json
|
|
271
|
+
{
|
|
272
|
+
"pipeline": {
|
|
273
|
+
"build": {
|
|
274
|
+
"passThroughEnv": [
|
|
275
|
+
"DEBUG", // Different values use same cache
|
|
276
|
+
"LOG_LEVEL",
|
|
277
|
+
"VERBOSE"
|
|
278
|
+
]
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
Use for: Debug flags, log levels, non-production settings
|
|
285
|
+
|
|
286
|
+
### Global Environment Variables
|
|
287
|
+
|
|
288
|
+
Available to all tasks:
|
|
289
|
+
|
|
290
|
+
```json
|
|
291
|
+
{
|
|
292
|
+
"globalEnv": [
|
|
293
|
+
"NODE_ENV",
|
|
294
|
+
"CI",
|
|
295
|
+
"VERCEL"
|
|
296
|
+
]
|
|
297
|
+
}
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
## Cache Optimization Strategies
|
|
301
|
+
|
|
302
|
+
### 1. Granular Outputs
|
|
303
|
+
|
|
304
|
+
Define precise outputs to minimize cache size:
|
|
305
|
+
|
|
306
|
+
```json
|
|
307
|
+
// ❌ Bad - caches too much
|
|
308
|
+
{
|
|
309
|
+
"build": {
|
|
310
|
+
"outputs": ["**"]
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
// ✅ Good - specific outputs
|
|
315
|
+
{
|
|
316
|
+
"build": {
|
|
317
|
+
"outputs": ["dist/**", "!dist/**/*.map"]
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### 2. Exclude Unnecessary Files
|
|
323
|
+
|
|
324
|
+
```json
|
|
325
|
+
{
|
|
326
|
+
"build": {
|
|
327
|
+
"outputs": [
|
|
328
|
+
".next/**",
|
|
329
|
+
"!.next/cache/**", // Exclude Next.js cache
|
|
330
|
+
"!.next/server/**/*.js.map", // Exclude source maps
|
|
331
|
+
"!.next/static/**/*.map"
|
|
332
|
+
]
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
### 3. Separate Cacheable Tasks
|
|
338
|
+
|
|
339
|
+
```json
|
|
340
|
+
{
|
|
341
|
+
"pipeline": {
|
|
342
|
+
"build": {
|
|
343
|
+
"dependsOn": ["^build"],
|
|
344
|
+
"cache": true
|
|
345
|
+
},
|
|
346
|
+
"test": {
|
|
347
|
+
"dependsOn": ["build"],
|
|
348
|
+
"cache": true // Separate from build
|
|
349
|
+
},
|
|
350
|
+
"dev": {
|
|
351
|
+
"cache": false // Never cache
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### 4. Use Input Filters
|
|
358
|
+
|
|
359
|
+
Only track relevant files:
|
|
360
|
+
|
|
361
|
+
```json
|
|
362
|
+
{
|
|
363
|
+
"build": {
|
|
364
|
+
"inputs": [
|
|
365
|
+
"src/**/*.{ts,tsx}",
|
|
366
|
+
"!src/**/*.{test,spec}.{ts,tsx}",
|
|
367
|
+
"public/**",
|
|
368
|
+
"package.json"
|
|
369
|
+
]
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
## Cache Analysis
|
|
375
|
+
|
|
376
|
+
### Inspect Cache Hits/Misses
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
# Dry run with JSON output
|
|
380
|
+
turbo run build --dry-run=json | jq '.tasks[] | {package: .package, task: .task, cache: .cache}'
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### View Task Graph
|
|
384
|
+
|
|
385
|
+
```bash
|
|
386
|
+
# Generate task graph
|
|
387
|
+
turbo run build --graph
|
|
388
|
+
|
|
389
|
+
# Output: graph.html (open in browser)
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
### Cache Statistics
|
|
393
|
+
|
|
394
|
+
```bash
|
|
395
|
+
# Run with summary
|
|
396
|
+
turbo run build --summarize
|
|
397
|
+
|
|
398
|
+
# Output: .turbo/runs/[hash].json
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
## CI/CD Cache Configuration
|
|
402
|
+
|
|
403
|
+
### GitHub Actions
|
|
404
|
+
|
|
405
|
+
```yaml
|
|
406
|
+
name: CI
|
|
407
|
+
on: [push, pull_request]
|
|
408
|
+
|
|
409
|
+
jobs:
|
|
410
|
+
build:
|
|
411
|
+
runs-on: ubuntu-latest
|
|
412
|
+
steps:
|
|
413
|
+
- uses: actions/checkout@v4
|
|
414
|
+
|
|
415
|
+
- uses: actions/setup-node@v4
|
|
416
|
+
with:
|
|
417
|
+
node-version: 18
|
|
418
|
+
|
|
419
|
+
- name: Install dependencies
|
|
420
|
+
run: npm install
|
|
421
|
+
|
|
422
|
+
- name: Build and test
|
|
423
|
+
run: turbo run build test lint
|
|
424
|
+
env:
|
|
425
|
+
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
426
|
+
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
|
427
|
+
|
|
428
|
+
# Optional: Cache node_modules
|
|
429
|
+
- uses: actions/cache@v3
|
|
430
|
+
with:
|
|
431
|
+
path: node_modules
|
|
432
|
+
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
### GitLab CI
|
|
436
|
+
|
|
437
|
+
```yaml
|
|
438
|
+
image: node:18
|
|
439
|
+
|
|
440
|
+
cache:
|
|
441
|
+
key: ${CI_COMMIT_REF_SLUG}
|
|
442
|
+
paths:
|
|
443
|
+
- node_modules/
|
|
444
|
+
- .turbo/
|
|
445
|
+
|
|
446
|
+
build:
|
|
447
|
+
stage: build
|
|
448
|
+
script:
|
|
449
|
+
- npm install
|
|
450
|
+
- turbo run build test
|
|
451
|
+
variables:
|
|
452
|
+
TURBO_TOKEN: $TURBO_TOKEN
|
|
453
|
+
TURBO_TEAM: $TURBO_TEAM
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
## Troubleshooting
|
|
457
|
+
|
|
458
|
+
### Cache Not Working
|
|
459
|
+
|
|
460
|
+
**Check outputs are defined:**
|
|
461
|
+
```bash
|
|
462
|
+
turbo run build --dry-run=json | jq '.tasks[] | {task: .task, outputs: .outputs}'
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
**Verify cache location:**
|
|
466
|
+
```bash
|
|
467
|
+
ls -la ./node_modules/.cache/turbo
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
**Check environment variables:**
|
|
471
|
+
```bash
|
|
472
|
+
echo $TURBO_TOKEN
|
|
473
|
+
echo $TURBO_TEAM
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
### Cache Too Large
|
|
477
|
+
|
|
478
|
+
**Analyze cache size:**
|
|
479
|
+
```bash
|
|
480
|
+
du -sh ./node_modules/.cache/turbo
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
**Reduce outputs:**
|
|
484
|
+
```json
|
|
485
|
+
{
|
|
486
|
+
"build": {
|
|
487
|
+
"outputs": [
|
|
488
|
+
"dist/**",
|
|
489
|
+
"!dist/**/*.map", // Exclude source maps
|
|
490
|
+
"!dist/**/*.test.js" // Exclude test files
|
|
491
|
+
]
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
**Clear old cache:**
|
|
497
|
+
```bash
|
|
498
|
+
# Turborepo doesn't auto-clean, manually remove:
|
|
499
|
+
rm -rf ./node_modules/.cache/turbo
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
### Remote Cache Connection Issues
|
|
503
|
+
|
|
504
|
+
**Test connection:**
|
|
505
|
+
```bash
|
|
506
|
+
curl -I https://cache.example.com
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
**Verify token:**
|
|
510
|
+
```bash
|
|
511
|
+
turbo link
|
|
512
|
+
# Should show: "Remote caching enabled"
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
**Check logs:**
|
|
516
|
+
```bash
|
|
517
|
+
turbo run build --output-logs=full
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
## Best Practices
|
|
521
|
+
|
|
522
|
+
1. **Define precise outputs** - Only cache necessary files
|
|
523
|
+
2. **Exclude nested caches** - Don't cache caches (.next/cache)
|
|
524
|
+
3. **Use remote caching** - Share cache across team and CI
|
|
525
|
+
4. **Track relevant inputs** - Use `inputs` to filter files
|
|
526
|
+
5. **Separate env vars** - Use `passThroughEnv` for debug flags
|
|
527
|
+
6. **Cache test results** - Include coverage in outputs
|
|
528
|
+
7. **Don't cache dev servers** - Set `cache: false` for dev tasks
|
|
529
|
+
8. **Use global dependencies** - Share config across packages
|
|
530
|
+
9. **Monitor cache performance** - Use `--summarize` to analyze
|
|
531
|
+
10. **Clear cache periodically** - Remove stale cache manually
|
|
532
|
+
|
|
533
|
+
## Cache Performance Tips
|
|
534
|
+
|
|
535
|
+
**For CI/CD:**
|
|
536
|
+
- Enable remote caching
|
|
537
|
+
- Run only changed packages: `--filter='...[origin/main]'`
|
|
538
|
+
- Use `--continue` to see all errors
|
|
539
|
+
- Cache node_modules separately
|
|
540
|
+
|
|
541
|
+
**For Local Development:**
|
|
542
|
+
- Keep local cache enabled
|
|
543
|
+
- Don't force rebuild unless needed
|
|
544
|
+
- Use filters to build only what changed
|
|
545
|
+
- Clear cache if issues arise
|
|
546
|
+
|
|
547
|
+
**For Large Monorepos:**
|
|
548
|
+
- Use granular outputs
|
|
549
|
+
- Implement input filters
|
|
550
|
+
- Monitor cache size regularly
|
|
551
|
+
- Consider cache size limits on remote cache
|