@vodailoc/kilo-kit-mcp 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mcp/kilo-kit.codex-windows.toml +5 -0
- package/LICENSE +190 -190
- package/QUICKSTART.md +265 -255
- package/README.md +321 -267
- package/mcp/README.md +64 -12
- package/mcp/dist/formatters.js +142 -1
- package/mcp/dist/orchestration-audit.js +20 -0
- package/mcp/dist/orchestration-memory.js +258 -0
- package/mcp/dist/orchestration-types.js +1 -0
- package/mcp/dist/orchestrator.js +222 -0
- package/mcp/dist/question-templates.js +249 -0
- package/mcp/dist/route-analytics.js +149 -0
- package/mcp/dist/router.js +75 -82
- package/mcp/dist/routing-policy-data.js +241 -0
- package/mcp/dist/routing-policy.js +145 -0
- package/mcp/dist/server.js +93 -4
- package/mcp/dist/smoke-env.js +18 -0
- package/mcp/dist/smoke.js +68 -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,81 +1,81 @@
|
|
|
1
|
-
# APIs: Minimal And Controllers
|
|
2
|
-
|
|
3
|
-
Primary docs:
|
|
4
|
-
- https://learn.microsoft.com/aspnet/core/fundamentals/minimal-apis
|
|
5
|
-
- https://learn.microsoft.com/aspnet/core/web-api/
|
|
6
|
-
- https://learn.microsoft.com/aspnet/core/fundamentals/error-handling-api
|
|
7
|
-
|
|
8
|
-
## First Decision
|
|
9
|
-
|
|
10
|
-
Choose between:
|
|
11
|
-
|
|
12
|
-
- Minimal APIs for focused, low-ceremony HTTP endpoints
|
|
13
|
-
- controller-based APIs for richer MVC conventions and attribute-driven behavior
|
|
14
|
-
|
|
15
|
-
Do not mix both styles in the same feature unless that split is genuinely useful.
|
|
16
|
-
|
|
17
|
-
## Minimal API Guidance
|
|
18
|
-
|
|
19
|
-
Prefer Minimal APIs when the surface is small to medium and you want concise endpoint definitions.
|
|
20
|
-
|
|
21
|
-
Good defaults:
|
|
22
|
-
|
|
23
|
-
- organize endpoints with route groups
|
|
24
|
-
- keep route handlers thin
|
|
25
|
-
- move business logic into services
|
|
26
|
-
- prefer `TypedResults` over untyped results
|
|
27
|
-
- use endpoint filters when cross-cutting behavior belongs at the endpoint layer
|
|
28
|
-
- use built-in validation support on supported target frameworks
|
|
29
|
-
|
|
30
|
-
Minimal API reminders:
|
|
31
|
-
|
|
32
|
-
- handler parameters can be bound from route, query, headers, body, form, or DI
|
|
33
|
-
- authorization can be applied with `RequireAuthorization`
|
|
34
|
-
- return `IResult` or `TypedResults` when response shape matters
|
|
35
|
-
- use OpenAPI support for discoverable contracts
|
|
36
|
-
|
|
37
|
-
On .NET 10, Minimal APIs support built-in validation with `AddValidation()`. Use that instead of inventing parallel validation infrastructure when the target framework supports it.
|
|
38
|
-
|
|
39
|
-
## Controller API Guidance
|
|
40
|
-
|
|
41
|
-
Prefer controllers when the API needs:
|
|
42
|
-
|
|
43
|
-
- `[ApiController]` behaviors
|
|
44
|
-
- attribute routing and conventions
|
|
45
|
-
- filters
|
|
46
|
-
- custom formatters
|
|
47
|
-
- mature controller organization in an existing codebase
|
|
48
|
-
|
|
49
|
-
Controller defaults:
|
|
50
|
-
|
|
51
|
-
- derive API controllers from `ControllerBase`
|
|
52
|
-
- annotate with `[ApiController]`
|
|
53
|
-
- use attribute routing
|
|
54
|
-
- return ProblemDetails-compatible failures
|
|
55
|
-
- let automatic model validation handle invalid requests unless there is a concrete override requirement
|
|
56
|
-
|
|
57
|
-
Key `[ApiController]` behaviors:
|
|
58
|
-
|
|
59
|
-
- attribute routing is required
|
|
60
|
-
- invalid model state automatically becomes HTTP 400
|
|
61
|
-
- binding source inference applies
|
|
62
|
-
- error responses use ProblemDetails patterns
|
|
63
|
-
|
|
64
|
-
## Shared API Practices
|
|
65
|
-
|
|
66
|
-
- Keep request and response DTOs separate from persistence models
|
|
67
|
-
- Use version-stable route and payload contracts
|
|
68
|
-
- Use `CreatedAt...` patterns for resource creation
|
|
69
|
-
- Prefer explicit status codes and typed results over implicit behavior
|
|
70
|
-
- Apply authorization at the endpoint or controller boundary, not only inside service methods
|
|
71
|
-
- Use `ProblemDetails` for errors instead of ad hoc JSON shapes
|
|
72
|
-
|
|
73
|
-
## Browser-Facing Notes
|
|
74
|
-
|
|
75
|
-
- Be careful with cookie-authenticated API endpoints and CORS
|
|
76
|
-
- For browser-based form or file upload endpoints, account for antiforgery requirements
|
|
77
|
-
- In ASP.NET Core 10, known API endpoints no longer use cookie-login redirects by default; rely on API-appropriate unauthorized responses instead
|
|
78
|
-
|
|
79
|
-
## Native AOT
|
|
80
|
-
|
|
81
|
-
Use `dotnet new webapiaot` only when native AOT is an explicit deployment requirement. Treat it as a constraint that affects library choice, reflection, JSON patterns, and compatibility.
|
|
1
|
+
# APIs: Minimal And Controllers
|
|
2
|
+
|
|
3
|
+
Primary docs:
|
|
4
|
+
- https://learn.microsoft.com/aspnet/core/fundamentals/minimal-apis
|
|
5
|
+
- https://learn.microsoft.com/aspnet/core/web-api/
|
|
6
|
+
- https://learn.microsoft.com/aspnet/core/fundamentals/error-handling-api
|
|
7
|
+
|
|
8
|
+
## First Decision
|
|
9
|
+
|
|
10
|
+
Choose between:
|
|
11
|
+
|
|
12
|
+
- Minimal APIs for focused, low-ceremony HTTP endpoints
|
|
13
|
+
- controller-based APIs for richer MVC conventions and attribute-driven behavior
|
|
14
|
+
|
|
15
|
+
Do not mix both styles in the same feature unless that split is genuinely useful.
|
|
16
|
+
|
|
17
|
+
## Minimal API Guidance
|
|
18
|
+
|
|
19
|
+
Prefer Minimal APIs when the surface is small to medium and you want concise endpoint definitions.
|
|
20
|
+
|
|
21
|
+
Good defaults:
|
|
22
|
+
|
|
23
|
+
- organize endpoints with route groups
|
|
24
|
+
- keep route handlers thin
|
|
25
|
+
- move business logic into services
|
|
26
|
+
- prefer `TypedResults` over untyped results
|
|
27
|
+
- use endpoint filters when cross-cutting behavior belongs at the endpoint layer
|
|
28
|
+
- use built-in validation support on supported target frameworks
|
|
29
|
+
|
|
30
|
+
Minimal API reminders:
|
|
31
|
+
|
|
32
|
+
- handler parameters can be bound from route, query, headers, body, form, or DI
|
|
33
|
+
- authorization can be applied with `RequireAuthorization`
|
|
34
|
+
- return `IResult` or `TypedResults` when response shape matters
|
|
35
|
+
- use OpenAPI support for discoverable contracts
|
|
36
|
+
|
|
37
|
+
On .NET 10, Minimal APIs support built-in validation with `AddValidation()`. Use that instead of inventing parallel validation infrastructure when the target framework supports it.
|
|
38
|
+
|
|
39
|
+
## Controller API Guidance
|
|
40
|
+
|
|
41
|
+
Prefer controllers when the API needs:
|
|
42
|
+
|
|
43
|
+
- `[ApiController]` behaviors
|
|
44
|
+
- attribute routing and conventions
|
|
45
|
+
- filters
|
|
46
|
+
- custom formatters
|
|
47
|
+
- mature controller organization in an existing codebase
|
|
48
|
+
|
|
49
|
+
Controller defaults:
|
|
50
|
+
|
|
51
|
+
- derive API controllers from `ControllerBase`
|
|
52
|
+
- annotate with `[ApiController]`
|
|
53
|
+
- use attribute routing
|
|
54
|
+
- return ProblemDetails-compatible failures
|
|
55
|
+
- let automatic model validation handle invalid requests unless there is a concrete override requirement
|
|
56
|
+
|
|
57
|
+
Key `[ApiController]` behaviors:
|
|
58
|
+
|
|
59
|
+
- attribute routing is required
|
|
60
|
+
- invalid model state automatically becomes HTTP 400
|
|
61
|
+
- binding source inference applies
|
|
62
|
+
- error responses use ProblemDetails patterns
|
|
63
|
+
|
|
64
|
+
## Shared API Practices
|
|
65
|
+
|
|
66
|
+
- Keep request and response DTOs separate from persistence models
|
|
67
|
+
- Use version-stable route and payload contracts
|
|
68
|
+
- Use `CreatedAt...` patterns for resource creation
|
|
69
|
+
- Prefer explicit status codes and typed results over implicit behavior
|
|
70
|
+
- Apply authorization at the endpoint or controller boundary, not only inside service methods
|
|
71
|
+
- Use `ProblemDetails` for errors instead of ad hoc JSON shapes
|
|
72
|
+
|
|
73
|
+
## Browser-Facing Notes
|
|
74
|
+
|
|
75
|
+
- Be careful with cookie-authenticated API endpoints and CORS
|
|
76
|
+
- For browser-based form or file upload endpoints, account for antiforgery requirements
|
|
77
|
+
- In ASP.NET Core 10, known API endpoints no longer use cookie-login redirects by default; rely on API-appropriate unauthorized responses instead
|
|
78
|
+
|
|
79
|
+
## Native AOT
|
|
80
|
+
|
|
81
|
+
Use `dotnet new webapiaot` only when native AOT is an explicit deployment requirement. Treat it as a constraint that affects library choice, reflection, JSON patterns, and compatibility.
|
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
# Data, State, And Services
|
|
2
|
-
|
|
3
|
-
Primary docs:
|
|
4
|
-
- https://learn.microsoft.com/aspnet/core/data/
|
|
5
|
-
- https://learn.microsoft.com/aspnet/core/fundamentals/dependency-injection
|
|
6
|
-
- https://learn.microsoft.com/aspnet/core/fundamentals/http-requests
|
|
7
|
-
- https://learn.microsoft.com/aspnet/core/fundamentals/app-state
|
|
8
|
-
|
|
9
|
-
## Dependency Injection Defaults
|
|
10
|
-
|
|
11
|
-
- Register infrastructure and business services in `Program.cs`
|
|
12
|
-
- Inject dependencies through constructors by default
|
|
13
|
-
- Keep scoped services request-bound
|
|
14
|
-
- Avoid resolving scoped services from singletons
|
|
15
|
-
- Use keyed or named patterns only when there is a real need for multiple implementations
|
|
16
|
-
|
|
17
|
-
## EF Core And DbContext
|
|
18
|
-
|
|
19
|
-
Use EF Core for common relational data access patterns unless the repository already uses another data layer.
|
|
20
|
-
|
|
21
|
-
Default guidance:
|
|
22
|
-
|
|
23
|
-
- register `DbContext` with `AddDbContext`
|
|
24
|
-
- treat `DbContext` as scoped
|
|
25
|
-
- keep queries and transactions in services, not UI code
|
|
26
|
-
- use migrations intentionally
|
|
27
|
-
- keep entities out of public API contracts and UI view models
|
|
28
|
-
|
|
29
|
-
Use `IDbContextFactory<TContext>` when the execution model is not request-scoped, such as:
|
|
30
|
-
|
|
31
|
-
- Blazor components with longer-lived scopes
|
|
32
|
-
- background services
|
|
33
|
-
- explicit factory-driven data work
|
|
34
|
-
|
|
35
|
-
## Options And Configuration
|
|
36
|
-
|
|
37
|
-
- Bind structured configuration into options classes
|
|
38
|
-
- validate options early when bad configuration should fail fast
|
|
39
|
-
- keep configuration access close to the service that owns it
|
|
40
|
-
- avoid scattering raw configuration keys across the codebase
|
|
41
|
-
|
|
42
|
-
## Outbound HTTP
|
|
43
|
-
|
|
44
|
-
Use `IHttpClientFactory` for outbound HTTP calls.
|
|
45
|
-
|
|
46
|
-
Prefer:
|
|
47
|
-
|
|
48
|
-
- named clients for distinct external systems
|
|
49
|
-
- typed clients for richer integrations
|
|
50
|
-
- delegating handlers for retries, headers, or telemetry concerns
|
|
51
|
-
|
|
52
|
-
Avoid manual `new HttpClient()` patterns scattered through request handlers.
|
|
53
|
-
|
|
54
|
-
## App State
|
|
55
|
-
|
|
56
|
-
Use the smallest state mechanism that fits:
|
|
57
|
-
|
|
58
|
-
- query string or route values for transparent request state
|
|
59
|
-
- form posts for user input
|
|
60
|
-
- TempData for short-lived redirect-friendly messages
|
|
61
|
-
- session only when necessary and with an understanding of its server-side and scaling implications
|
|
62
|
-
|
|
63
|
-
Do not treat session as the primary application data store.
|
|
64
|
-
|
|
65
|
-
## Caching And State Boundaries
|
|
66
|
-
|
|
67
|
-
- Keep cached data derivable from a durable source
|
|
68
|
-
- Separate cache shape from persistence shape when it improves safety or performance
|
|
69
|
-
- Revisit session, in-memory cache, and singleton state when the app scales to multiple instances
|
|
1
|
+
# Data, State, And Services
|
|
2
|
+
|
|
3
|
+
Primary docs:
|
|
4
|
+
- https://learn.microsoft.com/aspnet/core/data/
|
|
5
|
+
- https://learn.microsoft.com/aspnet/core/fundamentals/dependency-injection
|
|
6
|
+
- https://learn.microsoft.com/aspnet/core/fundamentals/http-requests
|
|
7
|
+
- https://learn.microsoft.com/aspnet/core/fundamentals/app-state
|
|
8
|
+
|
|
9
|
+
## Dependency Injection Defaults
|
|
10
|
+
|
|
11
|
+
- Register infrastructure and business services in `Program.cs`
|
|
12
|
+
- Inject dependencies through constructors by default
|
|
13
|
+
- Keep scoped services request-bound
|
|
14
|
+
- Avoid resolving scoped services from singletons
|
|
15
|
+
- Use keyed or named patterns only when there is a real need for multiple implementations
|
|
16
|
+
|
|
17
|
+
## EF Core And DbContext
|
|
18
|
+
|
|
19
|
+
Use EF Core for common relational data access patterns unless the repository already uses another data layer.
|
|
20
|
+
|
|
21
|
+
Default guidance:
|
|
22
|
+
|
|
23
|
+
- register `DbContext` with `AddDbContext`
|
|
24
|
+
- treat `DbContext` as scoped
|
|
25
|
+
- keep queries and transactions in services, not UI code
|
|
26
|
+
- use migrations intentionally
|
|
27
|
+
- keep entities out of public API contracts and UI view models
|
|
28
|
+
|
|
29
|
+
Use `IDbContextFactory<TContext>` when the execution model is not request-scoped, such as:
|
|
30
|
+
|
|
31
|
+
- Blazor components with longer-lived scopes
|
|
32
|
+
- background services
|
|
33
|
+
- explicit factory-driven data work
|
|
34
|
+
|
|
35
|
+
## Options And Configuration
|
|
36
|
+
|
|
37
|
+
- Bind structured configuration into options classes
|
|
38
|
+
- validate options early when bad configuration should fail fast
|
|
39
|
+
- keep configuration access close to the service that owns it
|
|
40
|
+
- avoid scattering raw configuration keys across the codebase
|
|
41
|
+
|
|
42
|
+
## Outbound HTTP
|
|
43
|
+
|
|
44
|
+
Use `IHttpClientFactory` for outbound HTTP calls.
|
|
45
|
+
|
|
46
|
+
Prefer:
|
|
47
|
+
|
|
48
|
+
- named clients for distinct external systems
|
|
49
|
+
- typed clients for richer integrations
|
|
50
|
+
- delegating handlers for retries, headers, or telemetry concerns
|
|
51
|
+
|
|
52
|
+
Avoid manual `new HttpClient()` patterns scattered through request handlers.
|
|
53
|
+
|
|
54
|
+
## App State
|
|
55
|
+
|
|
56
|
+
Use the smallest state mechanism that fits:
|
|
57
|
+
|
|
58
|
+
- query string or route values for transparent request state
|
|
59
|
+
- form posts for user input
|
|
60
|
+
- TempData for short-lived redirect-friendly messages
|
|
61
|
+
- session only when necessary and with an understanding of its server-side and scaling implications
|
|
62
|
+
|
|
63
|
+
Do not treat session as the primary application data store.
|
|
64
|
+
|
|
65
|
+
## Caching And State Boundaries
|
|
66
|
+
|
|
67
|
+
- Keep cached data derivable from a durable source
|
|
68
|
+
- Separate cache shape from persistence shape when it improves safety or performance
|
|
69
|
+
- Revisit session, in-memory cache, and singleton state when the app scales to multiple instances
|
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
# Program And Pipeline
|
|
2
|
-
|
|
3
|
-
Primary docs:
|
|
4
|
-
- https://learn.microsoft.com/aspnet/core/fundamentals/
|
|
5
|
-
- https://learn.microsoft.com/aspnet/core/fundamentals/minimal-apis/webapplication
|
|
6
|
-
- https://learn.microsoft.com/aspnet/core/fundamentals/middleware/
|
|
7
|
-
- https://learn.microsoft.com/aspnet/core/fundamentals/configuration/
|
|
8
|
-
|
|
9
|
-
## Startup Shape
|
|
10
|
-
|
|
11
|
-
Prefer the modern hosting model:
|
|
12
|
-
|
|
13
|
-
1. Create `var builder = WebApplication.CreateBuilder(args);`
|
|
14
|
-
2. Register services on `builder.Services`
|
|
15
|
-
3. Build `var app = builder.Build();`
|
|
16
|
-
4. Configure middleware in the correct order
|
|
17
|
-
5. Map endpoints
|
|
18
|
-
6. Call `app.Run();`
|
|
19
|
-
|
|
20
|
-
Use older `Startup` patterns only when the repository already uses them or the task is migration.
|
|
21
|
-
|
|
22
|
-
## Service Registration
|
|
23
|
-
|
|
24
|
-
- Register framework services explicitly: Razor Pages, controllers, Razor components, authentication, authorization, health checks, rate limiting, response compression, output caching, EF Core, and `IHttpClientFactory`
|
|
25
|
-
- Keep business logic in services instead of controllers, page models, or route handlers
|
|
26
|
-
- Use constructor injection as the default
|
|
27
|
-
- Use options classes for structured configuration
|
|
28
|
-
- Choose lifetimes intentionally:
|
|
29
|
-
- singleton: stateless or shared infrastructure
|
|
30
|
-
- scoped: request-bound work such as `DbContext`
|
|
31
|
-
- transient: lightweight stateless services
|
|
32
|
-
|
|
33
|
-
## Configuration Defaults
|
|
34
|
-
|
|
35
|
-
`WebApplication.CreateBuilder` already loads configuration from common providers such as:
|
|
36
|
-
|
|
37
|
-
- `appsettings.json`
|
|
38
|
-
- environment-specific `appsettings.{Environment}.json`
|
|
39
|
-
- environment variables
|
|
40
|
-
- command-line arguments
|
|
41
|
-
|
|
42
|
-
For secrets:
|
|
43
|
-
|
|
44
|
-
- use Secret Manager in development
|
|
45
|
-
- use a secure external store in production
|
|
46
|
-
- do not commit secrets to source control
|
|
47
|
-
|
|
48
|
-
## Middleware Order
|
|
49
|
-
|
|
50
|
-
Middleware order is a frequent source of broken behavior. Favor this shape and adjust only with a concrete reason:
|
|
51
|
-
|
|
52
|
-
1. Forwarded headers if behind a proxy or load balancer
|
|
53
|
-
2. Exception handling and HSTS for non-development environments
|
|
54
|
-
3. HTTPS redirection
|
|
55
|
-
4. Static files
|
|
56
|
-
5. Routing when explicit routing middleware is needed
|
|
57
|
-
6. CORS when endpoints require it
|
|
58
|
-
7. Authentication
|
|
59
|
-
8. Authorization
|
|
60
|
-
9. Endpoint-specific middleware such as rate limiting or session as required
|
|
61
|
-
10. Endpoint mapping with `MapRazorPages`, `MapControllers`, `MapGet`, `MapHub`, or `MapGrpcService`
|
|
62
|
-
|
|
63
|
-
Important ordering rules:
|
|
64
|
-
|
|
65
|
-
- Call `UseAuthentication()` before `UseAuthorization()`
|
|
66
|
-
- Keep proxy/header processing before auth, redirects, and link generation
|
|
67
|
-
- Do not insert custom middleware randomly between auth and authorization without a reason
|
|
68
|
-
- In Minimal API apps, explicit `UseRouting()` is usually unnecessary unless you need to control order
|
|
69
|
-
|
|
70
|
-
## Routing And Endpoints
|
|
71
|
-
|
|
72
|
-
- Prefer endpoint routing everywhere
|
|
73
|
-
- Use route groups for larger Minimal API surfaces
|
|
74
|
-
- Keep MVC and API routes explicit and predictable
|
|
75
|
-
- Use areas only when the application is large enough to benefit from bounded sections
|
|
76
|
-
- Keep endpoint names stable when generating links or integrating with clients
|
|
77
|
-
|
|
78
|
-
## Error Handling
|
|
79
|
-
|
|
80
|
-
- Use centralized exception handling instead of scattered `try/catch` blocks for ordinary request failures
|
|
81
|
-
- Prefer ProblemDetails-style responses for APIs
|
|
82
|
-
- Keep the developer exception page limited to development
|
|
83
|
-
- Separate user-facing failures from internal exception details
|
|
84
|
-
|
|
85
|
-
## Logging And Diagnostics
|
|
86
|
-
|
|
87
|
-
- Use `ILogger<T>` from DI
|
|
88
|
-
- Log structured values, not concatenated strings
|
|
89
|
-
- Put correlation and request diagnostics in middleware or infrastructure, not business logic
|
|
90
|
-
- Enable HTTP logging only when the scenario warrants it and avoid leaking sensitive data
|
|
91
|
-
|
|
92
|
-
## Static Assets And Web Root
|
|
93
|
-
|
|
94
|
-
- Keep public assets in `wwwroot`
|
|
95
|
-
- Treat the web root as publicly readable content
|
|
96
|
-
- Prevent publishing local-only static content through project file rules when needed
|
|
97
|
-
- Use Razor Class Libraries for reusable UI assets across apps
|
|
98
|
-
|
|
99
|
-
## Architectural Defaults
|
|
100
|
-
|
|
101
|
-
- Keep `Program.cs` readable; extract feature registration to extension methods when it starts accumulating unrelated concerns
|
|
102
|
-
- Prefer vertical slices or feature folders over giant "Controllers", "Services", and "Repositories" buckets with weak boundaries
|
|
103
|
-
- Keep framework configuration close to the host and business logic out of it
|
|
1
|
+
# Program And Pipeline
|
|
2
|
+
|
|
3
|
+
Primary docs:
|
|
4
|
+
- https://learn.microsoft.com/aspnet/core/fundamentals/
|
|
5
|
+
- https://learn.microsoft.com/aspnet/core/fundamentals/minimal-apis/webapplication
|
|
6
|
+
- https://learn.microsoft.com/aspnet/core/fundamentals/middleware/
|
|
7
|
+
- https://learn.microsoft.com/aspnet/core/fundamentals/configuration/
|
|
8
|
+
|
|
9
|
+
## Startup Shape
|
|
10
|
+
|
|
11
|
+
Prefer the modern hosting model:
|
|
12
|
+
|
|
13
|
+
1. Create `var builder = WebApplication.CreateBuilder(args);`
|
|
14
|
+
2. Register services on `builder.Services`
|
|
15
|
+
3. Build `var app = builder.Build();`
|
|
16
|
+
4. Configure middleware in the correct order
|
|
17
|
+
5. Map endpoints
|
|
18
|
+
6. Call `app.Run();`
|
|
19
|
+
|
|
20
|
+
Use older `Startup` patterns only when the repository already uses them or the task is migration.
|
|
21
|
+
|
|
22
|
+
## Service Registration
|
|
23
|
+
|
|
24
|
+
- Register framework services explicitly: Razor Pages, controllers, Razor components, authentication, authorization, health checks, rate limiting, response compression, output caching, EF Core, and `IHttpClientFactory`
|
|
25
|
+
- Keep business logic in services instead of controllers, page models, or route handlers
|
|
26
|
+
- Use constructor injection as the default
|
|
27
|
+
- Use options classes for structured configuration
|
|
28
|
+
- Choose lifetimes intentionally:
|
|
29
|
+
- singleton: stateless or shared infrastructure
|
|
30
|
+
- scoped: request-bound work such as `DbContext`
|
|
31
|
+
- transient: lightweight stateless services
|
|
32
|
+
|
|
33
|
+
## Configuration Defaults
|
|
34
|
+
|
|
35
|
+
`WebApplication.CreateBuilder` already loads configuration from common providers such as:
|
|
36
|
+
|
|
37
|
+
- `appsettings.json`
|
|
38
|
+
- environment-specific `appsettings.{Environment}.json`
|
|
39
|
+
- environment variables
|
|
40
|
+
- command-line arguments
|
|
41
|
+
|
|
42
|
+
For secrets:
|
|
43
|
+
|
|
44
|
+
- use Secret Manager in development
|
|
45
|
+
- use a secure external store in production
|
|
46
|
+
- do not commit secrets to source control
|
|
47
|
+
|
|
48
|
+
## Middleware Order
|
|
49
|
+
|
|
50
|
+
Middleware order is a frequent source of broken behavior. Favor this shape and adjust only with a concrete reason:
|
|
51
|
+
|
|
52
|
+
1. Forwarded headers if behind a proxy or load balancer
|
|
53
|
+
2. Exception handling and HSTS for non-development environments
|
|
54
|
+
3. HTTPS redirection
|
|
55
|
+
4. Static files
|
|
56
|
+
5. Routing when explicit routing middleware is needed
|
|
57
|
+
6. CORS when endpoints require it
|
|
58
|
+
7. Authentication
|
|
59
|
+
8. Authorization
|
|
60
|
+
9. Endpoint-specific middleware such as rate limiting or session as required
|
|
61
|
+
10. Endpoint mapping with `MapRazorPages`, `MapControllers`, `MapGet`, `MapHub`, or `MapGrpcService`
|
|
62
|
+
|
|
63
|
+
Important ordering rules:
|
|
64
|
+
|
|
65
|
+
- Call `UseAuthentication()` before `UseAuthorization()`
|
|
66
|
+
- Keep proxy/header processing before auth, redirects, and link generation
|
|
67
|
+
- Do not insert custom middleware randomly between auth and authorization without a reason
|
|
68
|
+
- In Minimal API apps, explicit `UseRouting()` is usually unnecessary unless you need to control order
|
|
69
|
+
|
|
70
|
+
## Routing And Endpoints
|
|
71
|
+
|
|
72
|
+
- Prefer endpoint routing everywhere
|
|
73
|
+
- Use route groups for larger Minimal API surfaces
|
|
74
|
+
- Keep MVC and API routes explicit and predictable
|
|
75
|
+
- Use areas only when the application is large enough to benefit from bounded sections
|
|
76
|
+
- Keep endpoint names stable when generating links or integrating with clients
|
|
77
|
+
|
|
78
|
+
## Error Handling
|
|
79
|
+
|
|
80
|
+
- Use centralized exception handling instead of scattered `try/catch` blocks for ordinary request failures
|
|
81
|
+
- Prefer ProblemDetails-style responses for APIs
|
|
82
|
+
- Keep the developer exception page limited to development
|
|
83
|
+
- Separate user-facing failures from internal exception details
|
|
84
|
+
|
|
85
|
+
## Logging And Diagnostics
|
|
86
|
+
|
|
87
|
+
- Use `ILogger<T>` from DI
|
|
88
|
+
- Log structured values, not concatenated strings
|
|
89
|
+
- Put correlation and request diagnostics in middleware or infrastructure, not business logic
|
|
90
|
+
- Enable HTTP logging only when the scenario warrants it and avoid leaking sensitive data
|
|
91
|
+
|
|
92
|
+
## Static Assets And Web Root
|
|
93
|
+
|
|
94
|
+
- Keep public assets in `wwwroot`
|
|
95
|
+
- Treat the web root as publicly readable content
|
|
96
|
+
- Prevent publishing local-only static content through project file rules when needed
|
|
97
|
+
- Use Razor Class Libraries for reusable UI assets across apps
|
|
98
|
+
|
|
99
|
+
## Architectural Defaults
|
|
100
|
+
|
|
101
|
+
- Keep `Program.cs` readable; extract feature registration to extension methods when it starts accumulating unrelated concerns
|
|
102
|
+
- Prefer vertical slices or feature folders over giant "Controllers", "Services", and "Repositories" buckets with weak boundaries
|
|
103
|
+
- Keep framework configuration close to the host and business logic out of it
|
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
# Realtime, gRPC, And Background Work
|
|
2
|
-
|
|
3
|
-
Primary docs:
|
|
4
|
-
- https://learn.microsoft.com/aspnet/core/signalr/introduction
|
|
5
|
-
- https://learn.microsoft.com/aspnet/core/grpc/
|
|
6
|
-
- https://learn.microsoft.com/aspnet/core/fundamentals/host/hosted-services
|
|
7
|
-
|
|
8
|
-
## SignalR
|
|
9
|
-
|
|
10
|
-
Use SignalR when the server must push updates to connected clients in near real time.
|
|
11
|
-
|
|
12
|
-
Good fits:
|
|
13
|
-
|
|
14
|
-
- chat
|
|
15
|
-
- dashboards
|
|
16
|
-
- notifications
|
|
17
|
-
- collaborative editing
|
|
18
|
-
- live status streams
|
|
19
|
-
|
|
20
|
-
Guidance:
|
|
21
|
-
|
|
22
|
-
- model the hub as a communication boundary, not the home of business logic
|
|
23
|
-
- use groups and user targeting deliberately
|
|
24
|
-
- authenticate connections when data is user-specific
|
|
25
|
-
- plan for scale-out if the app may run on multiple instances
|
|
26
|
-
|
|
27
|
-
Remember that Blazor interactive server rendering already relies on a real-time connection. Do not add a second realtime channel unless the feature truly needs one.
|
|
28
|
-
|
|
29
|
-
## gRPC
|
|
30
|
-
|
|
31
|
-
Use gRPC for efficient service-to-service communication, strongly typed contracts, and streaming over HTTP/2.
|
|
32
|
-
|
|
33
|
-
Prefer gRPC when:
|
|
34
|
-
|
|
35
|
-
- both ends are under your control
|
|
36
|
-
- performance and contract fidelity matter
|
|
37
|
-
- streaming is a first-class requirement
|
|
38
|
-
|
|
39
|
-
Guidance:
|
|
40
|
-
|
|
41
|
-
- keep `.proto` contracts versioned and stable
|
|
42
|
-
- generate client and server types from contracts
|
|
43
|
-
- keep auth, logging, and DI integrated with the host
|
|
44
|
-
- account for browser interoperability differences before choosing gRPC for public browser clients
|
|
45
|
-
|
|
46
|
-
## Background Work
|
|
47
|
-
|
|
48
|
-
Use `IHostedService` or `BackgroundService` for in-process background tasks tied to the application host.
|
|
49
|
-
|
|
50
|
-
Defaults:
|
|
51
|
-
|
|
52
|
-
- keep background services small and observable
|
|
53
|
-
- create scopes for scoped dependencies
|
|
54
|
-
- do not capture scoped services directly in singleton hosted services
|
|
55
|
-
- respect cancellation tokens
|
|
56
|
-
- avoid long blocking startup paths
|
|
57
|
-
|
|
58
|
-
If the work is durable, high-volume, or business-critical, consider whether it belongs in an out-of-process queue or worker instead of only inside the web host.
|
|
1
|
+
# Realtime, gRPC, And Background Work
|
|
2
|
+
|
|
3
|
+
Primary docs:
|
|
4
|
+
- https://learn.microsoft.com/aspnet/core/signalr/introduction
|
|
5
|
+
- https://learn.microsoft.com/aspnet/core/grpc/
|
|
6
|
+
- https://learn.microsoft.com/aspnet/core/fundamentals/host/hosted-services
|
|
7
|
+
|
|
8
|
+
## SignalR
|
|
9
|
+
|
|
10
|
+
Use SignalR when the server must push updates to connected clients in near real time.
|
|
11
|
+
|
|
12
|
+
Good fits:
|
|
13
|
+
|
|
14
|
+
- chat
|
|
15
|
+
- dashboards
|
|
16
|
+
- notifications
|
|
17
|
+
- collaborative editing
|
|
18
|
+
- live status streams
|
|
19
|
+
|
|
20
|
+
Guidance:
|
|
21
|
+
|
|
22
|
+
- model the hub as a communication boundary, not the home of business logic
|
|
23
|
+
- use groups and user targeting deliberately
|
|
24
|
+
- authenticate connections when data is user-specific
|
|
25
|
+
- plan for scale-out if the app may run on multiple instances
|
|
26
|
+
|
|
27
|
+
Remember that Blazor interactive server rendering already relies on a real-time connection. Do not add a second realtime channel unless the feature truly needs one.
|
|
28
|
+
|
|
29
|
+
## gRPC
|
|
30
|
+
|
|
31
|
+
Use gRPC for efficient service-to-service communication, strongly typed contracts, and streaming over HTTP/2.
|
|
32
|
+
|
|
33
|
+
Prefer gRPC when:
|
|
34
|
+
|
|
35
|
+
- both ends are under your control
|
|
36
|
+
- performance and contract fidelity matter
|
|
37
|
+
- streaming is a first-class requirement
|
|
38
|
+
|
|
39
|
+
Guidance:
|
|
40
|
+
|
|
41
|
+
- keep `.proto` contracts versioned and stable
|
|
42
|
+
- generate client and server types from contracts
|
|
43
|
+
- keep auth, logging, and DI integrated with the host
|
|
44
|
+
- account for browser interoperability differences before choosing gRPC for public browser clients
|
|
45
|
+
|
|
46
|
+
## Background Work
|
|
47
|
+
|
|
48
|
+
Use `IHostedService` or `BackgroundService` for in-process background tasks tied to the application host.
|
|
49
|
+
|
|
50
|
+
Defaults:
|
|
51
|
+
|
|
52
|
+
- keep background services small and observable
|
|
53
|
+
- create scopes for scoped dependencies
|
|
54
|
+
- do not capture scoped services directly in singleton hosted services
|
|
55
|
+
- respect cancellation tokens
|
|
56
|
+
- avoid long blocking startup paths
|
|
57
|
+
|
|
58
|
+
If the work is durable, high-volume, or business-critical, consider whether it belongs in an out-of-process queue or worker instead of only inside the web host.
|