@vodailoc/kilo-kit-mcp 1.1.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.example.json +8 -0
- package/LICENSE +190 -0
- package/QUICKSTART.md +298 -0
- package/README.md +395 -0
- package/mcp/README.md +132 -0
- package/mcp/dist/formatters.js +77 -0
- package/mcp/dist/frontmatter.js +54 -0
- package/mcp/dist/paths.js +22 -0
- package/mcp/dist/registry.js +185 -0
- package/mcp/dist/router.js +98 -0
- package/mcp/dist/server.js +223 -0
- package/mcp/dist/smoke.js +57 -0
- package/mcp/dist/types.js +1 -0
- package/mcp/dist/validator.js +35 -0
- package/mcp/package.json +30 -0
- package/package.json +57 -0
- package/skills/README.md +647 -0
- package/skills/SKILLS_INDEX.md +139 -0
- package/skills/agent-frameworks/claukit/SKILL.md +61 -0
- package/skills/agent-frameworks/claukit/references/guardrails.md +42 -0
- package/skills/agent-frameworks/claukit/references/integration-hints.md +67 -0
- package/skills/agent-frameworks/claukit/references/mission-briefs.md +38 -0
- package/skills/agent-frameworks/claukit/references/skills-directory.md +70 -0
- package/skills/ai-media/ai-multimodal/.env.example +97 -0
- package/skills/ai-media/ai-multimodal/SKILL.md +357 -0
- package/skills/ai-media/ai-multimodal/references/audio-processing.md +373 -0
- package/skills/ai-media/ai-multimodal/references/image-generation.md +558 -0
- package/skills/ai-media/ai-multimodal/references/video-analysis.md +502 -0
- package/skills/ai-media/ai-multimodal/references/vision-understanding.md +483 -0
- package/skills/ai-media/ai-multimodal/scripts/document_converter.py +395 -0
- package/skills/ai-media/ai-multimodal/scripts/gemini_batch_process.py +480 -0
- package/skills/ai-media/ai-multimodal/scripts/media_optimizer.py +506 -0
- package/skills/ai-media/ai-multimodal/scripts/requirements.txt +26 -0
- package/skills/ai-media/ai-multimodal/scripts/tests/requirements.txt +20 -0
- package/skills/ai-media/ai-multimodal/scripts/tests/test_document_converter.py +299 -0
- package/skills/ai-media/ai-multimodal/scripts/tests/test_gemini_batch_process.py +362 -0
- package/skills/ai-media/ai-multimodal/scripts/tests/test_media_optimizer.py +373 -0
- package/skills/ai-media/geo-fundamentals/SKILL.md +156 -0
- package/skills/ai-media/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/skills/ai-media/media-processing/SKILL.md +358 -0
- package/skills/ai-media/media-processing/references/ffmpeg-encoding.md +358 -0
- package/skills/ai-media/media-processing/references/ffmpeg-filters.md +503 -0
- package/skills/ai-media/media-processing/references/ffmpeg-streaming.md +403 -0
- package/skills/ai-media/media-processing/references/format-compatibility.md +375 -0
- package/skills/ai-media/media-processing/references/imagemagick-batch.md +612 -0
- package/skills/ai-media/media-processing/references/imagemagick-editing.md +623 -0
- package/skills/ai-media/media-processing/scripts/batch_resize.py +342 -0
- package/skills/ai-media/media-processing/scripts/media_convert.py +311 -0
- package/skills/ai-media/media-processing/scripts/requirements.txt +24 -0
- package/skills/ai-media/media-processing/scripts/tests/requirements.txt +2 -0
- package/skills/ai-media/media-processing/scripts/tests/test_batch_resize.py +372 -0
- package/skills/ai-media/media-processing/scripts/tests/test_media_convert.py +259 -0
- package/skills/ai-media/media-processing/scripts/tests/test_video_optimize.py +397 -0
- package/skills/ai-media/media-processing/scripts/video_optimize.py +414 -0
- package/skills/ai-media/screenshot/LICENSE.txt +201 -0
- package/skills/ai-media/screenshot/SKILL.md +267 -0
- package/skills/ai-media/screenshot/agents/openai.yaml +6 -0
- package/skills/ai-media/screenshot/assets/screenshot-small.svg +5 -0
- package/skills/ai-media/screenshot/assets/screenshot.png +0 -0
- package/skills/ai-media/screenshot/scripts/ensure_macos_permissions.sh +54 -0
- package/skills/ai-media/screenshot/scripts/macos_display_info.swift +22 -0
- package/skills/ai-media/screenshot/scripts/macos_permissions.swift +40 -0
- package/skills/ai-media/screenshot/scripts/macos_window_info.swift +126 -0
- package/skills/ai-media/screenshot/scripts/take_screenshot.ps1 +163 -0
- package/skills/ai-media/screenshot/scripts/take_screenshot.py +585 -0
- package/skills/ai-media/seo-fundamentals/SKILL.md +129 -0
- package/skills/ai-media/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/skills/ai-media/sora/LICENSE.txt +201 -0
- package/skills/ai-media/sora/SKILL.md +153 -0
- package/skills/ai-media/sora/agents/openai.yaml +6 -0
- package/skills/ai-media/sora/assets/sora-small.svg +4 -0
- package/skills/ai-media/sora/assets/sora.png +0 -0
- package/skills/ai-media/sora/references/cinematic-shots.md +53 -0
- package/skills/ai-media/sora/references/cli.md +248 -0
- package/skills/ai-media/sora/references/codex-network.md +28 -0
- package/skills/ai-media/sora/references/prompting.md +137 -0
- package/skills/ai-media/sora/references/sample-prompts.md +95 -0
- package/skills/ai-media/sora/references/social-ads.md +42 -0
- package/skills/ai-media/sora/references/troubleshooting.md +58 -0
- package/skills/ai-media/sora/references/video-api.md +45 -0
- package/skills/ai-media/sora/scripts/sora.py +970 -0
- package/skills/design/aesthetic/SKILL.md +121 -0
- package/skills/design/aesthetic/assets/design-guideline-template.md +163 -0
- package/skills/design/aesthetic/assets/design-story-template.md +135 -0
- package/skills/design/aesthetic/references/design-principles.md +62 -0
- package/skills/design/aesthetic/references/design-resources.md +75 -0
- package/skills/design/aesthetic/references/micro-interactions.md +53 -0
- package/skills/design/aesthetic/references/storytelling-design.md +50 -0
- package/skills/design/figma/LICENSE.txt +202 -0
- package/skills/design/figma/SKILL.md +42 -0
- package/skills/design/figma/agents/openai.yaml +14 -0
- package/skills/design/figma/assets/figma-small.svg +3 -0
- package/skills/design/figma/assets/figma.png +0 -0
- package/skills/design/figma/assets/icon.svg +28 -0
- package/skills/design/figma/references/figma-mcp-config.md +35 -0
- package/skills/design/figma/references/figma-tools-and-prompts.md +34 -0
- package/skills/design/figma-implement-design/LICENSE.txt +202 -0
- package/skills/design/figma-implement-design/SKILL.md +264 -0
- package/skills/design/figma-implement-design/agents/openai.yaml +14 -0
- package/skills/design/figma-implement-design/assets/figma-small.svg +3 -0
- package/skills/design/figma-implement-design/assets/figma.png +0 -0
- package/skills/design/figma-implement-design/assets/icon.svg +28 -0
- package/skills/design/frontend-design/SKILL.md +42 -0
- package/skills/design/frontend-design/references/animejs.md +396 -0
- package/skills/design/mobile-design/SKILL.md +394 -0
- package/skills/design/mobile-design/decision-trees.md +516 -0
- package/skills/design/mobile-design/mobile-backend.md +491 -0
- package/skills/design/mobile-design/mobile-color-system.md +420 -0
- package/skills/design/mobile-design/mobile-debugging.md +122 -0
- package/skills/design/mobile-design/mobile-design-thinking.md +357 -0
- package/skills/design/mobile-design/mobile-navigation.md +458 -0
- package/skills/design/mobile-design/mobile-performance.md +767 -0
- package/skills/design/mobile-design/mobile-testing.md +356 -0
- package/skills/design/mobile-design/mobile-typography.md +433 -0
- package/skills/design/mobile-design/platform-android.md +666 -0
- package/skills/design/mobile-design/platform-ios.md +561 -0
- package/skills/design/mobile-design/scripts/mobile_audit.py +670 -0
- package/skills/design/mobile-design/touch-psychology.md +537 -0
- package/skills/design/tailwind-patterns/SKILL.md +269 -0
- package/skills/design/ui-styling/LICENSE.txt +202 -0
- package/skills/design/ui-styling/SKILL.md +321 -0
- package/skills/design/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/design/ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/design/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/design/ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/design/ui-styling/references/canvas-design-system.md +320 -0
- package/skills/design/ui-styling/references/shadcn-accessibility.md +471 -0
- package/skills/design/ui-styling/references/shadcn-components.md +424 -0
- package/skills/design/ui-styling/references/shadcn-theming.md +373 -0
- package/skills/design/ui-styling/references/tailwind-customization.md +483 -0
- package/skills/design/ui-styling/references/tailwind-responsive.md +382 -0
- package/skills/design/ui-styling/references/tailwind-utilities.md +455 -0
- package/skills/design/ui-styling/scripts/requirements.txt +17 -0
- package/skills/design/ui-styling/scripts/shadcn_add.py +292 -0
- package/skills/design/ui-styling/scripts/tailwind_config_gen.py +456 -0
- package/skills/design/ui-styling/scripts/tests/coverage-ui.json +1 -0
- package/skills/design/ui-styling/scripts/tests/requirements.txt +3 -0
- package/skills/design/ui-styling/scripts/tests/test_shadcn_add.py +266 -0
- package/skills/design/ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
- package/skills/engineering/api-patterns/SKILL.md +81 -0
- package/skills/engineering/api-patterns/api-style.md +42 -0
- package/skills/engineering/api-patterns/auth.md +24 -0
- package/skills/engineering/api-patterns/documentation.md +26 -0
- package/skills/engineering/api-patterns/graphql.md +41 -0
- package/skills/engineering/api-patterns/rate-limiting.md +31 -0
- package/skills/engineering/api-patterns/response.md +37 -0
- package/skills/engineering/api-patterns/rest.md +40 -0
- package/skills/engineering/api-patterns/scripts/api_validator.py +211 -0
- package/skills/engineering/api-patterns/security-testing.md +122 -0
- package/skills/engineering/api-patterns/trpc.md +41 -0
- package/skills/engineering/api-patterns/versioning.md +22 -0
- package/skills/engineering/app-builder/SKILL.md +75 -0
- package/skills/engineering/app-builder/agent-coordination.md +71 -0
- package/skills/engineering/app-builder/feature-building.md +53 -0
- package/skills/engineering/app-builder/project-detection.md +34 -0
- package/skills/engineering/app-builder/scaffolding.md +118 -0
- package/skills/engineering/app-builder/tech-stack.md +40 -0
- package/skills/engineering/app-builder/templates/SKILL.md +39 -0
- package/skills/engineering/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/skills/engineering/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/skills/engineering/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/skills/engineering/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/skills/engineering/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/skills/engineering/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/skills/engineering/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/skills/engineering/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
- package/skills/engineering/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
- package/skills/engineering/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
- package/skills/engineering/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
- package/skills/engineering/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/skills/engineering/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
- package/skills/engineering/architecture/SKILL.md +55 -0
- package/skills/engineering/architecture/context-discovery.md +43 -0
- package/skills/engineering/architecture/examples.md +94 -0
- package/skills/engineering/architecture/pattern-selection.md +68 -0
- package/skills/engineering/architecture/patterns-reference.md +50 -0
- package/skills/engineering/architecture/trade-off-analysis.md +77 -0
- package/skills/engineering/aspnet-core/LICENSE.txt +202 -0
- package/skills/engineering/aspnet-core/SKILL.md +61 -0
- package/skills/engineering/aspnet-core/agents/openai.yaml +5 -0
- package/skills/engineering/aspnet-core/assets/dotnet-logo.png +0 -0
- package/skills/engineering/aspnet-core/references/_sections.md +40 -0
- package/skills/engineering/aspnet-core/references/apis-minimal-and-controllers.md +81 -0
- package/skills/engineering/aspnet-core/references/data-state-and-services.md +69 -0
- package/skills/engineering/aspnet-core/references/program-and-pipeline.md +103 -0
- package/skills/engineering/aspnet-core/references/realtime-grpc-and-background-work.md +58 -0
- package/skills/engineering/aspnet-core/references/security-and-identity.md +75 -0
- package/skills/engineering/aspnet-core/references/source-map.md +43 -0
- package/skills/engineering/aspnet-core/references/stack-selection.md +63 -0
- package/skills/engineering/aspnet-core/references/testing-performance-and-operations.md +92 -0
- package/skills/engineering/aspnet-core/references/ui-blazor.md +53 -0
- package/skills/engineering/aspnet-core/references/ui-mvc.md +56 -0
- package/skills/engineering/aspnet-core/references/ui-razor-pages.md +55 -0
- package/skills/engineering/aspnet-core/references/versioning-and-upgrades.md +51 -0
- package/skills/engineering/backend-development/SKILL.md +95 -0
- package/skills/engineering/backend-development/references/backend-api-design.md +495 -0
- package/skills/engineering/backend-development/references/backend-architecture.md +454 -0
- package/skills/engineering/backend-development/references/backend-authentication.md +338 -0
- package/skills/engineering/backend-development/references/backend-code-quality.md +659 -0
- package/skills/engineering/backend-development/references/backend-debugging.md +904 -0
- package/skills/engineering/backend-development/references/backend-devops.md +494 -0
- package/skills/engineering/backend-development/references/backend-mindset.md +387 -0
- package/skills/engineering/backend-development/references/backend-performance.md +397 -0
- package/skills/engineering/backend-development/references/backend-security.md +290 -0
- package/skills/engineering/backend-development/references/backend-technologies.md +256 -0
- package/skills/engineering/backend-development/references/backend-testing.md +429 -0
- package/skills/engineering/better-auth/SKILL.md +204 -0
- package/skills/engineering/better-auth/references/advanced-features.md +553 -0
- package/skills/engineering/better-auth/references/database-integration.md +577 -0
- package/skills/engineering/better-auth/references/email-password-auth.md +416 -0
- package/skills/engineering/better-auth/references/oauth-providers.md +430 -0
- package/skills/engineering/better-auth/scripts/better_auth_init.py +521 -0
- package/skills/engineering/better-auth/scripts/requirements.txt +15 -0
- package/skills/engineering/better-auth/scripts/tests/test_better_auth_init.py +421 -0
- package/skills/engineering/clean-code/SKILL.md +201 -0
- package/skills/engineering/code-review/SKILL.md +140 -0
- package/skills/engineering/code-review/references/code-review-reception.md +209 -0
- package/skills/engineering/code-review/references/requesting-code-review.md +105 -0
- package/skills/engineering/code-review/references/verification-before-completion.md +139 -0
- package/skills/engineering/code-review-checklist/SKILL.md +109 -0
- package/skills/engineering/context-engineering/SKILL.md +86 -0
- package/skills/engineering/context-engineering/references/context-compression.md +84 -0
- package/skills/engineering/context-engineering/references/context-degradation.md +93 -0
- package/skills/engineering/context-engineering/references/context-fundamentals.md +75 -0
- package/skills/engineering/context-engineering/references/context-optimization.md +82 -0
- package/skills/engineering/context-engineering/references/evaluation.md +89 -0
- package/skills/engineering/context-engineering/references/memory-systems.md +88 -0
- package/skills/engineering/context-engineering/references/multi-agent-patterns.md +90 -0
- package/skills/engineering/context-engineering/references/project-development.md +97 -0
- package/skills/engineering/context-engineering/references/tool-design.md +86 -0
- package/skills/engineering/context-engineering/scripts/compression_evaluator.py +329 -0
- package/skills/engineering/context-engineering/scripts/context_analyzer.py +294 -0
- package/skills/engineering/database-design/SKILL.md +52 -0
- package/skills/engineering/database-design/database-selection.md +43 -0
- package/skills/engineering/database-design/indexing.md +39 -0
- package/skills/engineering/database-design/migrations.md +48 -0
- package/skills/engineering/database-design/optimization.md +36 -0
- package/skills/engineering/database-design/orm-selection.md +30 -0
- package/skills/engineering/database-design/schema-design.md +56 -0
- package/skills/engineering/database-design/scripts/schema_validator.py +172 -0
- package/skills/engineering/databases/SKILL.md +232 -0
- package/skills/engineering/databases/references/mongodb-aggregation.md +447 -0
- package/skills/engineering/databases/references/mongodb-atlas.md +465 -0
- package/skills/engineering/databases/references/mongodb-crud.md +408 -0
- package/skills/engineering/databases/references/mongodb-indexing.md +442 -0
- package/skills/engineering/databases/references/postgresql-administration.md +594 -0
- package/skills/engineering/databases/references/postgresql-performance.md +527 -0
- package/skills/engineering/databases/references/postgresql-psql-cli.md +467 -0
- package/skills/engineering/databases/references/postgresql-queries.md +475 -0
- package/skills/engineering/databases/scripts/db_backup.py +502 -0
- package/skills/engineering/databases/scripts/db_migrate.py +414 -0
- package/skills/engineering/databases/scripts/db_performance_check.py +444 -0
- package/skills/engineering/databases/scripts/requirements.txt +20 -0
- package/skills/engineering/databases/scripts/tests/coverage-db.json +1 -0
- package/skills/engineering/databases/scripts/tests/requirements.txt +4 -0
- package/skills/engineering/databases/scripts/tests/test_db_backup.py +340 -0
- package/skills/engineering/databases/scripts/tests/test_db_migrate.py +277 -0
- package/skills/engineering/databases/scripts/tests/test_db_performance_check.py +370 -0
- package/skills/engineering/diagnose/SKILL.md +117 -0
- package/skills/engineering/diagnose/scripts/hitl-loop.template.sh +41 -0
- package/skills/engineering/docs-seeker/SKILL.md +207 -0
- package/skills/engineering/docs-seeker/WORKFLOWS.md +505 -0
- package/skills/engineering/docs-seeker/references/best-practices.md +632 -0
- package/skills/engineering/docs-seeker/references/documentation-sources.md +461 -0
- package/skills/engineering/docs-seeker/references/error-handling.md +621 -0
- package/skills/engineering/docs-seeker/references/limitations.md +821 -0
- package/skills/engineering/docs-seeker/references/performance.md +574 -0
- package/skills/engineering/docs-seeker/references/tool-selection.md +262 -0
- package/skills/engineering/frontend-development/SKILL.md +399 -0
- package/skills/engineering/frontend-development/resources/common-patterns.md +331 -0
- package/skills/engineering/frontend-development/resources/complete-examples.md +872 -0
- package/skills/engineering/frontend-development/resources/component-patterns.md +502 -0
- package/skills/engineering/frontend-development/resources/data-fetching.md +767 -0
- package/skills/engineering/frontend-development/resources/file-organization.md +502 -0
- package/skills/engineering/frontend-development/resources/loading-and-error-states.md +501 -0
- package/skills/engineering/frontend-development/resources/performance.md +406 -0
- package/skills/engineering/frontend-development/resources/routing-guide.md +364 -0
- package/skills/engineering/frontend-development/resources/styling-guide.md +428 -0
- package/skills/engineering/frontend-development/resources/typescript-standards.md +418 -0
- package/skills/engineering/i18n-localization/SKILL.md +154 -0
- package/skills/engineering/i18n-localization/scripts/i18n_checker.py +241 -0
- package/skills/engineering/improve-codebase-architecture/DEEPENING.md +37 -0
- package/skills/engineering/improve-codebase-architecture/INTERFACE-DESIGN.md +44 -0
- package/skills/engineering/improve-codebase-architecture/LANGUAGE.md +53 -0
- package/skills/engineering/improve-codebase-architecture/SKILL.md +71 -0
- package/skills/engineering/lint-and-validate/SKILL.md +45 -0
- package/skills/engineering/lint-and-validate/scripts/lint_runner.py +172 -0
- package/skills/engineering/lint-and-validate/scripts/type_coverage.py +173 -0
- package/skills/engineering/nextjs-best-practices/SKILL.md +203 -0
- package/skills/engineering/nodejs-best-practices/SKILL.md +333 -0
- package/skills/engineering/openai-docs/LICENSE.txt +201 -0
- package/skills/engineering/openai-docs/SKILL.md +69 -0
- package/skills/engineering/openai-docs/agents/openai.yaml +14 -0
- package/skills/engineering/openai-docs/assets/openai-small.svg +3 -0
- package/skills/engineering/openai-docs/assets/openai.png +0 -0
- package/skills/engineering/openai-docs/references/gpt-5p4-prompting-guide.md +433 -0
- package/skills/engineering/openai-docs/references/latest-model.md +35 -0
- package/skills/engineering/openai-docs/references/upgrading-to-gpt-5p4.md +164 -0
- package/skills/engineering/performance-profiling/SKILL.md +143 -0
- package/skills/engineering/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/skills/engineering/playwright/LICENSE.txt +201 -0
- package/skills/engineering/playwright/NOTICE.txt +14 -0
- package/skills/engineering/playwright/SKILL.md +147 -0
- package/skills/engineering/playwright/agents/openai.yaml +6 -0
- package/skills/engineering/playwright/assets/playwright-small.svg +3 -0
- package/skills/engineering/playwright/assets/playwright.png +0 -0
- package/skills/engineering/playwright/references/cli.md +116 -0
- package/skills/engineering/playwright/references/workflows.md +95 -0
- package/skills/engineering/playwright/scripts/playwright_cli.sh +25 -0
- package/skills/engineering/playwright-interactive/LICENSE.txt +201 -0
- package/skills/engineering/playwright-interactive/NOTICE.txt +13 -0
- package/skills/engineering/playwright-interactive/SKILL.md +689 -0
- package/skills/engineering/playwright-interactive/agents/openai.yaml +6 -0
- package/skills/engineering/playwright-interactive/assets/playwright-small.svg +3 -0
- package/skills/engineering/playwright-interactive/assets/playwright.png +0 -0
- package/skills/engineering/python-patterns/SKILL.md +441 -0
- package/skills/engineering/react-patterns/SKILL.md +198 -0
- package/skills/engineering/render-deploy/LICENSE.txt +201 -0
- package/skills/engineering/render-deploy/SKILL.md +479 -0
- package/skills/engineering/render-deploy/agents/openai.yaml +14 -0
- package/skills/engineering/render-deploy/assets/docker.yaml +62 -0
- package/skills/engineering/render-deploy/assets/go-api.yaml +35 -0
- package/skills/engineering/render-deploy/assets/nextjs-postgres.yaml +35 -0
- package/skills/engineering/render-deploy/assets/node-express.yaml +25 -0
- package/skills/engineering/render-deploy/assets/python-django.yaml +89 -0
- package/skills/engineering/render-deploy/assets/render-small.svg +3 -0
- package/skills/engineering/render-deploy/assets/render.png +0 -0
- package/skills/engineering/render-deploy/assets/static-site.yaml +54 -0
- package/skills/engineering/render-deploy/references/blueprint-spec.md +718 -0
- package/skills/engineering/render-deploy/references/codebase-analysis.md +49 -0
- package/skills/engineering/render-deploy/references/configuration-guide.md +603 -0
- package/skills/engineering/render-deploy/references/deployment-details.md +224 -0
- package/skills/engineering/render-deploy/references/direct-creation.md +113 -0
- package/skills/engineering/render-deploy/references/error-patterns.md +13 -0
- package/skills/engineering/render-deploy/references/post-deploy-checks.md +36 -0
- package/skills/engineering/render-deploy/references/runtimes.md +473 -0
- package/skills/engineering/render-deploy/references/service-types.md +450 -0
- package/skills/engineering/render-deploy/references/troubleshooting-basics.md +36 -0
- package/skills/engineering/repomix/SKILL.md +215 -0
- package/skills/engineering/repomix/references/configuration.md +211 -0
- package/skills/engineering/repomix/references/usage-patterns.md +232 -0
- package/skills/engineering/repomix/scripts/README.md +179 -0
- package/skills/engineering/repomix/scripts/repomix_batch.py +455 -0
- package/skills/engineering/repomix/scripts/repos.example.json +15 -0
- package/skills/engineering/repomix/scripts/requirements.txt +15 -0
- package/skills/engineering/repomix/scripts/tests/test_repomix_batch.py +531 -0
- package/skills/engineering/setup-matt-pocock-skills/SKILL.md +121 -0
- package/skills/engineering/setup-matt-pocock-skills/domain.md +51 -0
- package/skills/engineering/setup-matt-pocock-skills/issue-tracker-github.md +22 -0
- package/skills/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md +23 -0
- package/skills/engineering/setup-matt-pocock-skills/issue-tracker-local.md +19 -0
- package/skills/engineering/setup-matt-pocock-skills/triage-labels.md +15 -0
- package/skills/engineering/shopify/README.md +66 -0
- package/skills/engineering/shopify/SKILL.md +319 -0
- package/skills/engineering/shopify/references/app-development.md +470 -0
- package/skills/engineering/shopify/references/extensions.md +493 -0
- package/skills/engineering/shopify/references/themes.md +498 -0
- package/skills/engineering/shopify/scripts/requirements.txt +19 -0
- package/skills/engineering/shopify/scripts/shopify_init.py +423 -0
- package/skills/engineering/shopify/scripts/tests/test_shopify_init.py +385 -0
- package/skills/engineering/tdd/SKILL.md +109 -0
- package/skills/engineering/tdd/deep-modules.md +33 -0
- package/skills/engineering/tdd/interface-design.md +31 -0
- package/skills/engineering/tdd/mocking.md +59 -0
- package/skills/engineering/tdd/refactoring.md +10 -0
- package/skills/engineering/tdd/tests.md +61 -0
- package/skills/engineering/tdd-workflow/SKILL.md +149 -0
- package/skills/engineering/testing-patterns/SKILL.md +178 -0
- package/skills/engineering/testing-patterns/scripts/test_runner.py +219 -0
- package/skills/engineering/to-issues/SKILL.md +81 -0
- package/skills/engineering/to-prd/SKILL.md +74 -0
- package/skills/engineering/triage/AGENT-BRIEF.md +168 -0
- package/skills/engineering/triage/OUT-OF-SCOPE.md +101 -0
- package/skills/engineering/triage/SKILL.md +103 -0
- package/skills/engineering/vulnerability-scanner/SKILL.md +276 -0
- package/skills/engineering/vulnerability-scanner/checklists.md +121 -0
- package/skills/engineering/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/skills/engineering/web-frameworks/SKILL.md +324 -0
- package/skills/engineering/web-frameworks/references/nextjs-app-router.md +465 -0
- package/skills/engineering/web-frameworks/references/nextjs-data-fetching.md +459 -0
- package/skills/engineering/web-frameworks/references/nextjs-optimization.md +511 -0
- package/skills/engineering/web-frameworks/references/nextjs-server-components.md +495 -0
- package/skills/engineering/web-frameworks/references/remix-icon-integration.md +603 -0
- package/skills/engineering/web-frameworks/references/turborepo-caching.md +551 -0
- package/skills/engineering/web-frameworks/references/turborepo-pipelines.md +517 -0
- package/skills/engineering/web-frameworks/references/turborepo-setup.md +542 -0
- package/skills/engineering/web-frameworks/scripts/__init__.py +0 -0
- package/skills/engineering/web-frameworks/scripts/nextjs_init.py +547 -0
- package/skills/engineering/web-frameworks/scripts/requirements.txt +16 -0
- package/skills/engineering/web-frameworks/scripts/tests/coverage-web.json +1 -0
- package/skills/engineering/web-frameworks/scripts/tests/requirements.txt +3 -0
- package/skills/engineering/web-frameworks/scripts/tests/test_nextjs_init.py +319 -0
- package/skills/engineering/web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -0
- package/skills/engineering/web-frameworks/scripts/turborepo_migrate.py +394 -0
- package/skills/engineering/webapp-testing/SKILL.md +187 -0
- package/skills/engineering/webapp-testing/scripts/playwright_runner.py +173 -0
- package/skills/engineering/write-a-skill/SKILL.md +117 -0
- package/skills/games/2d-games/SKILL.md +119 -0
- package/skills/games/3d-games/SKILL.md +135 -0
- package/skills/games/game-art/SKILL.md +185 -0
- package/skills/games/game-audio/SKILL.md +190 -0
- package/skills/games/game-design/SKILL.md +129 -0
- package/skills/games/game-development/2d-games/SKILL.md +119 -0
- package/skills/games/game-development/3d-games/SKILL.md +135 -0
- package/skills/games/game-development/SKILL.md +167 -0
- package/skills/games/game-development/game-art/SKILL.md +185 -0
- package/skills/games/game-development/game-audio/SKILL.md +190 -0
- package/skills/games/game-development/game-design/SKILL.md +129 -0
- package/skills/games/game-development/mobile-games/SKILL.md +108 -0
- package/skills/games/game-development/multiplayer/SKILL.md +132 -0
- package/skills/games/game-development/pc-games/SKILL.md +144 -0
- package/skills/games/game-development/vr-ar/SKILL.md +123 -0
- package/skills/games/game-development/web-games/SKILL.md +150 -0
- package/skills/games/mobile-games/SKILL.md +108 -0
- package/skills/games/multiplayer/SKILL.md +132 -0
- package/skills/games/pc-games/SKILL.md +144 -0
- package/skills/games/vr-ar/SKILL.md +123 -0
- package/skills/games/web-games/SKILL.md +150 -0
- package/skills/kilo-kit/SKILL.md +346 -0
- package/skills/kilo-kit/_template/SKILL.md +185 -0
- package/skills/kilo-kit/debugging/root-cause/SKILL.md +360 -0
- package/skills/kilo-kit/debugging/systematic/SKILL.md +339 -0
- package/skills/kilo-kit/debugging/verification/SKILL.md +424 -0
- package/skills/kilo-kit/development/backend/SKILL.md +540 -0
- package/skills/kilo-kit/development/security/SKILL.md +529 -0
- package/skills/kilo-kit/quality/code-review/SKILL.md +297 -0
- package/skills/kilo-kit/quality/testing/SKILL.md +540 -0
- package/skills/kilo-kit/references/output-formats.md +204 -0
- package/skills/kilo-kit/references/patterns.md +156 -0
- package/skills/kilo-kit/references/performance-benchmarks.md +90 -0
- package/skills/operations/bash-linux/SKILL.md +199 -0
- package/skills/operations/chrome-devtools/SKILL.md +392 -0
- package/skills/operations/chrome-devtools/references/cdp-domains.md +694 -0
- package/skills/operations/chrome-devtools/references/performance-guide.md +940 -0
- package/skills/operations/chrome-devtools/references/puppeteer-reference.md +953 -0
- package/skills/operations/chrome-devtools/scripts/PERSISTENT-BROWSER.md +107 -0
- package/skills/operations/chrome-devtools/scripts/README.md +213 -0
- package/skills/operations/chrome-devtools/scripts/__tests__/selector.test.js +210 -0
- package/skills/operations/chrome-devtools/scripts/click.js +79 -0
- package/skills/operations/chrome-devtools/scripts/close-persistent.js +36 -0
- package/skills/operations/chrome-devtools/scripts/console.js +75 -0
- package/skills/operations/chrome-devtools/scripts/evaluate.js +49 -0
- package/skills/operations/chrome-devtools/scripts/fill.js +72 -0
- package/skills/operations/chrome-devtools/scripts/install-deps.sh +181 -0
- package/skills/operations/chrome-devtools/scripts/install.sh +83 -0
- package/skills/operations/chrome-devtools/scripts/launch-persistent.js +71 -0
- package/skills/operations/chrome-devtools/scripts/lib/browser.js +144 -0
- package/skills/operations/chrome-devtools/scripts/lib/selector.js +178 -0
- package/skills/operations/chrome-devtools/scripts/navigate.js +46 -0
- package/skills/operations/chrome-devtools/scripts/network.js +102 -0
- package/skills/operations/chrome-devtools/scripts/package-lock.json +1206 -0
- package/skills/operations/chrome-devtools/scripts/package.json +15 -0
- package/skills/operations/chrome-devtools/scripts/performance.js +145 -0
- package/skills/operations/chrome-devtools/scripts/screenshot.js +180 -0
- package/skills/operations/chrome-devtools/scripts/snapshot.js +131 -0
- package/skills/operations/deployment-procedures/SKILL.md +241 -0
- package/skills/operations/devops/.env.example +76 -0
- package/skills/operations/devops/SKILL.md +285 -0
- package/skills/operations/devops/references/browser-rendering.md +305 -0
- package/skills/operations/devops/references/cloudflare-d1-kv.md +123 -0
- package/skills/operations/devops/references/cloudflare-platform.md +271 -0
- package/skills/operations/devops/references/cloudflare-r2-storage.md +280 -0
- package/skills/operations/devops/references/cloudflare-workers-advanced.md +312 -0
- package/skills/operations/devops/references/cloudflare-workers-apis.md +309 -0
- package/skills/operations/devops/references/cloudflare-workers-basics.md +418 -0
- package/skills/operations/devops/references/docker-basics.md +297 -0
- package/skills/operations/devops/references/docker-compose.md +292 -0
- package/skills/operations/devops/references/gcloud-platform.md +297 -0
- package/skills/operations/devops/references/gcloud-services.md +304 -0
- package/skills/operations/devops/scripts/cloudflare_deploy.py +269 -0
- package/skills/operations/devops/scripts/docker_optimize.py +320 -0
- package/skills/operations/devops/scripts/requirements.txt +20 -0
- package/skills/operations/devops/scripts/tests/requirements.txt +3 -0
- package/skills/operations/devops/scripts/tests/test_cloudflare_deploy.py +285 -0
- package/skills/operations/devops/scripts/tests/test_docker_optimize.py +436 -0
- package/skills/operations/mcp-builder/LICENSE.txt +202 -0
- package/skills/operations/mcp-builder/SKILL.md +328 -0
- package/skills/operations/mcp-builder/reference/evaluation.md +602 -0
- package/skills/operations/mcp-builder/reference/mcp_best_practices.md +915 -0
- package/skills/operations/mcp-builder/reference/node_mcp_server.md +916 -0
- package/skills/operations/mcp-builder/reference/python_mcp_server.md +752 -0
- package/skills/operations/mcp-builder/scripts/connections.py +151 -0
- package/skills/operations/mcp-builder/scripts/evaluation.py +373 -0
- package/skills/operations/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/operations/mcp-builder/scripts/requirements.txt +2 -0
- package/skills/operations/mcp-management/README.md +219 -0
- package/skills/operations/mcp-management/SKILL.md +176 -0
- package/skills/operations/mcp-management/assets/tools.json +3044 -0
- package/skills/operations/mcp-management/references/configuration.md +114 -0
- package/skills/operations/mcp-management/references/gemini-cli-integration.md +201 -0
- package/skills/operations/mcp-management/references/mcp-protocol.md +116 -0
- package/skills/operations/mcp-management/scripts/.env.example +10 -0
- package/skills/operations/mcp-management/scripts/cli.ts +155 -0
- package/skills/operations/mcp-management/scripts/dist/analyze-tools.js +70 -0
- package/skills/operations/mcp-management/scripts/dist/cli.js +131 -0
- package/skills/operations/mcp-management/scripts/dist/mcp-client.js +115 -0
- package/skills/operations/mcp-management/scripts/mcp-client.ts +163 -0
- package/skills/operations/mcp-management/scripts/package.json +18 -0
- package/skills/operations/mcp-management/scripts/tsconfig.json +15 -0
- package/skills/operations/powershell-windows/SKILL.md +167 -0
- package/skills/operations/server-management/SKILL.md +161 -0
- package/skills/problem-solving/collision-zone-thinking/SKILL.md +62 -0
- package/skills/problem-solving/defense-in-depth/SKILL.md +130 -0
- package/skills/problem-solving/inversion-exercise/SKILL.md +58 -0
- package/skills/problem-solving/meta-pattern-recognition/SKILL.md +54 -0
- package/skills/problem-solving/root-cause-tracing/SKILL.md +177 -0
- package/skills/problem-solving/root-cause-tracing/find-polluter.sh +63 -0
- package/skills/problem-solving/scale-game/SKILL.md +63 -0
- package/skills/problem-solving/sequential-thinking/README.md +118 -0
- package/skills/problem-solving/sequential-thinking/SKILL.md +93 -0
- package/skills/problem-solving/sequential-thinking/references/advanced.md +122 -0
- package/skills/problem-solving/sequential-thinking/references/examples.md +274 -0
- package/skills/problem-solving/simplification-cascades/SKILL.md +76 -0
- package/skills/problem-solving/systematic-debugging/CREATION-LOG.md +119 -0
- package/skills/problem-solving/systematic-debugging/SKILL.md +296 -0
- package/skills/problem-solving/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/skills/problem-solving/systematic-debugging/condition-based-waiting.md +115 -0
- package/skills/problem-solving/systematic-debugging/defense-in-depth.md +122 -0
- package/skills/problem-solving/systematic-debugging/find-polluter.sh +63 -0
- package/skills/problem-solving/systematic-debugging/root-cause-tracing.md +169 -0
- package/skills/problem-solving/systematic-debugging/test-academic.md +14 -0
- package/skills/problem-solving/systematic-debugging/test-pressure-1.md +58 -0
- package/skills/problem-solving/systematic-debugging/test-pressure-2.md +68 -0
- package/skills/problem-solving/systematic-debugging/test-pressure-3.md +69 -0
- package/skills/problem-solving/when-stuck/SKILL.md +88 -0
- package/skills/productivity/brainstorming/SKILL.md +54 -0
- package/skills/productivity/caveman/SKILL.md +49 -0
- package/skills/productivity/dispatching-parallel-agents/SKILL.md +180 -0
- package/skills/productivity/executing-plans/SKILL.md +85 -0
- package/skills/productivity/finishing-a-development-branch/SKILL.md +200 -0
- package/skills/productivity/grill-me/SKILL.md +10 -0
- package/skills/productivity/grill-with-docs/ADR-FORMAT.md +47 -0
- package/skills/productivity/grill-with-docs/CONTEXT-FORMAT.md +77 -0
- package/skills/productivity/grill-with-docs/SKILL.md +88 -0
- package/skills/productivity/parallel-agents/SKILL.md +175 -0
- package/skills/productivity/plan-writing/SKILL.md +152 -0
- package/skills/productivity/receiving-code-review/SKILL.md +213 -0
- package/skills/productivity/requesting-code-review/SKILL.md +105 -0
- package/skills/productivity/requesting-code-review/code-reviewer.md +146 -0
- package/skills/productivity/subagent-driven-development/SKILL.md +242 -0
- package/skills/productivity/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
- package/skills/productivity/subagent-driven-development/implementer-prompt.md +78 -0
- package/skills/productivity/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/skills/productivity/test-driven-development/SKILL.md +371 -0
- package/skills/productivity/test-driven-development/testing-anti-patterns.md +299 -0
- package/skills/productivity/using-git-worktrees/SKILL.md +218 -0
- package/skills/productivity/using-superpowers/SKILL.md +114 -0
- package/skills/productivity/verification-before-completion/SKILL.md +139 -0
- package/skills/productivity/writing-plans/SKILL.md +116 -0
- package/skills/productivity/writing-skills/SKILL.md +655 -0
- package/skills/productivity/writing-skills/anthropic-best-practices.md +1150 -0
- package/skills/productivity/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/skills/productivity/writing-skills/graphviz-conventions.dot +172 -0
- package/skills/productivity/writing-skills/persuasion-principles.md +187 -0
- package/skills/productivity/writing-skills/render-graphs.js +168 -0
- package/skills/productivity/writing-skills/testing-skills-with-subagents.md +384 -0
- package/skills/productivity/zoom-out/SKILL.md +7 -0
- package/skills/security/red-team-tactics/SKILL.md +199 -0
- package/skills/writing-docs/behavioral-modes/SKILL.md +242 -0
- package/skills/writing-docs/doc/LICENSE.txt +201 -0
- package/skills/writing-docs/doc/SKILL.md +80 -0
- package/skills/writing-docs/doc/agents/openai.yaml +6 -0
- package/skills/writing-docs/doc/assets/doc-small.svg +3 -0
- package/skills/writing-docs/doc/assets/doc.png +0 -0
- package/skills/writing-docs/doc/scripts/render_docx.py +296 -0
- package/skills/writing-docs/documentation-templates/SKILL.md +194 -0
- package/skills/writing-docs/docx/LICENSE.txt +30 -0
- package/skills/writing-docs/docx/SKILL.md +197 -0
- package/skills/writing-docs/docx/docx-js.md +350 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/writing-docs/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/writing-docs/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/writing-docs/docx/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/writing-docs/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/writing-docs/docx/ooxml/scripts/pack.py +159 -0
- package/skills/writing-docs/docx/ooxml/scripts/unpack.py +29 -0
- package/skills/writing-docs/docx/ooxml/scripts/validate.py +69 -0
- package/skills/writing-docs/docx/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/writing-docs/docx/ooxml/scripts/validation/base.py +951 -0
- package/skills/writing-docs/docx/ooxml/scripts/validation/docx.py +274 -0
- package/skills/writing-docs/docx/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/writing-docs/docx/ooxml/scripts/validation/redlining.py +279 -0
- package/skills/writing-docs/docx/ooxml.md +610 -0
- package/skills/writing-docs/docx/scripts/__init__.py +1 -0
- package/skills/writing-docs/docx/scripts/document.py +1276 -0
- package/skills/writing-docs/docx/scripts/templates/comments.xml +3 -0
- package/skills/writing-docs/docx/scripts/templates/commentsExtended.xml +3 -0
- package/skills/writing-docs/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/skills/writing-docs/docx/scripts/templates/commentsIds.xml +3 -0
- package/skills/writing-docs/docx/scripts/templates/people.xml +3 -0
- package/skills/writing-docs/docx/scripts/utilities.py +374 -0
- package/skills/writing-docs/mermaidjs-v11/SKILL.md +115 -0
- package/skills/writing-docs/mermaidjs-v11/references/cli-usage.md +228 -0
- package/skills/writing-docs/mermaidjs-v11/references/configuration.md +232 -0
- package/skills/writing-docs/mermaidjs-v11/references/diagram-types.md +315 -0
- package/skills/writing-docs/mermaidjs-v11/references/examples.md +344 -0
- package/skills/writing-docs/mermaidjs-v11/references/integration.md +310 -0
- package/skills/writing-docs/pdf/LICENSE.txt +30 -0
- package/skills/writing-docs/pdf/SKILL.md +294 -0
- package/skills/writing-docs/pdf/forms.md +205 -0
- package/skills/writing-docs/pdf/reference.md +612 -0
- package/skills/writing-docs/pdf/scripts/check_bounding_boxes.py +70 -0
- package/skills/writing-docs/pdf/scripts/check_bounding_boxes_test.py +226 -0
- package/skills/writing-docs/pdf/scripts/check_fillable_fields.py +12 -0
- package/skills/writing-docs/pdf/scripts/convert_pdf_to_images.py +35 -0
- package/skills/writing-docs/pdf/scripts/create_validation_image.py +41 -0
- package/skills/writing-docs/pdf/scripts/extract_form_field_info.py +152 -0
- package/skills/writing-docs/pdf/scripts/fill_fillable_fields.py +114 -0
- package/skills/writing-docs/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
- package/skills/writing-docs/pptx/LICENSE.txt +30 -0
- package/skills/writing-docs/pptx/SKILL.md +484 -0
- package/skills/writing-docs/pptx/html2pptx.md +625 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/writing-docs/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/writing-docs/pptx/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/writing-docs/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/writing-docs/pptx/ooxml/scripts/pack.py +159 -0
- package/skills/writing-docs/pptx/ooxml/scripts/unpack.py +29 -0
- package/skills/writing-docs/pptx/ooxml/scripts/validate.py +69 -0
- package/skills/writing-docs/pptx/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/writing-docs/pptx/ooxml/scripts/validation/base.py +951 -0
- package/skills/writing-docs/pptx/ooxml/scripts/validation/docx.py +274 -0
- package/skills/writing-docs/pptx/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/writing-docs/pptx/ooxml/scripts/validation/redlining.py +279 -0
- package/skills/writing-docs/pptx/ooxml.md +427 -0
- package/skills/writing-docs/pptx/scripts/html2pptx.js +979 -0
- package/skills/writing-docs/pptx/scripts/inventory.py +1020 -0
- package/skills/writing-docs/pptx/scripts/rearrange.py +231 -0
- package/skills/writing-docs/pptx/scripts/replace.py +385 -0
- package/skills/writing-docs/pptx/scripts/thumbnail.py +450 -0
- package/skills/writing-docs/slides/LICENSE.txt +201 -0
- package/skills/writing-docs/slides/SKILL.md +71 -0
- package/skills/writing-docs/slides/agents/openai.yaml +6 -0
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/code.js +104 -0
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/image.js +333 -0
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/index.js +33 -0
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/latex.js +51 -0
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/layout.js +643 -0
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/layout_builders.js +358 -0
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/svg.js +36 -0
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/text.js +789 -0
- package/skills/writing-docs/slides/assets/pptxgenjs_helpers/util.js +24 -0
- package/skills/writing-docs/slides/assets/slides-small.svg +3 -0
- package/skills/writing-docs/slides/assets/slides.png +0 -0
- package/skills/writing-docs/slides/references/pptxgenjs-helpers.md +61 -0
- package/skills/writing-docs/slides/scripts/create_montage.py +300 -0
- package/skills/writing-docs/slides/scripts/detect_font.py +873 -0
- package/skills/writing-docs/slides/scripts/ensure_raster_image.py +202 -0
- package/skills/writing-docs/slides/scripts/render_slides.py +273 -0
- package/skills/writing-docs/slides/scripts/slides_test.py +201 -0
- package/skills/writing-docs/template-skill/SKILL.md +26 -0
- package/skills/writing-docs/templates/SKILL.md +39 -0
- package/skills/writing-docs/templates/astro-static/TEMPLATE.md +76 -0
- package/skills/writing-docs/templates/chrome-extension/TEMPLATE.md +92 -0
- package/skills/writing-docs/templates/cli-tool/TEMPLATE.md +88 -0
- package/skills/writing-docs/templates/electron-desktop/TEMPLATE.md +88 -0
- package/skills/writing-docs/templates/express-api/TEMPLATE.md +83 -0
- package/skills/writing-docs/templates/flutter-app/TEMPLATE.md +90 -0
- package/skills/writing-docs/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/skills/writing-docs/templates/nextjs-fullstack/TEMPLATE.md +82 -0
- package/skills/writing-docs/templates/nextjs-saas/TEMPLATE.md +100 -0
- package/skills/writing-docs/templates/nextjs-static/TEMPLATE.md +106 -0
- package/skills/writing-docs/templates/nuxt-app/TEMPLATE.md +101 -0
- package/skills/writing-docs/templates/python-fastapi/TEMPLATE.md +83 -0
- package/skills/writing-docs/templates/react-native-app/TEMPLATE.md +93 -0
- package/skills/writing-docs/xlsx/LICENSE.txt +30 -0
- package/skills/writing-docs/xlsx/SKILL.md +289 -0
- package/skills/writing-docs/xlsx/recalc.py +178 -0
- package/src/core/KILO_MASTER.md +455 -0
- package/src/tools/validate-skill.js +465 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: server-management
|
|
3
|
+
description: Server management principles and decision-making. Process management, monitoring strategy, and scaling decisions. Teaches thinking, not commands.
|
|
4
|
+
allowed-tools: Read, Write, Edit, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Server Management
|
|
8
|
+
|
|
9
|
+
> Server management principles for production operations.
|
|
10
|
+
> **Learn to THINK, not memorize commands.**
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 1. Process Management Principles
|
|
15
|
+
|
|
16
|
+
### Tool Selection
|
|
17
|
+
|
|
18
|
+
| Scenario | Tool |
|
|
19
|
+
|----------|------|
|
|
20
|
+
| **Node.js app** | PM2 (clustering, reload) |
|
|
21
|
+
| **Any app** | systemd (Linux native) |
|
|
22
|
+
| **Containers** | Docker/Podman |
|
|
23
|
+
| **Orchestration** | Kubernetes, Docker Swarm |
|
|
24
|
+
|
|
25
|
+
### Process Management Goals
|
|
26
|
+
|
|
27
|
+
| Goal | What It Means |
|
|
28
|
+
|------|---------------|
|
|
29
|
+
| **Restart on crash** | Auto-recovery |
|
|
30
|
+
| **Zero-downtime reload** | No service interruption |
|
|
31
|
+
| **Clustering** | Use all CPU cores |
|
|
32
|
+
| **Persistence** | Survive server reboot |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 2. Monitoring Principles
|
|
37
|
+
|
|
38
|
+
### What to Monitor
|
|
39
|
+
|
|
40
|
+
| Category | Key Metrics |
|
|
41
|
+
|----------|-------------|
|
|
42
|
+
| **Availability** | Uptime, health checks |
|
|
43
|
+
| **Performance** | Response time, throughput |
|
|
44
|
+
| **Errors** | Error rate, types |
|
|
45
|
+
| **Resources** | CPU, memory, disk |
|
|
46
|
+
|
|
47
|
+
### Alert Severity Strategy
|
|
48
|
+
|
|
49
|
+
| Level | Response |
|
|
50
|
+
|-------|----------|
|
|
51
|
+
| **Critical** | Immediate action |
|
|
52
|
+
| **Warning** | Investigate soon |
|
|
53
|
+
| **Info** | Review daily |
|
|
54
|
+
|
|
55
|
+
### Monitoring Tool Selection
|
|
56
|
+
|
|
57
|
+
| Need | Options |
|
|
58
|
+
|------|---------|
|
|
59
|
+
| Simple/Free | PM2 metrics, htop |
|
|
60
|
+
| Full observability | Grafana, Datadog |
|
|
61
|
+
| Error tracking | Sentry |
|
|
62
|
+
| Uptime | UptimeRobot, Pingdom |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 3. Log Management Principles
|
|
67
|
+
|
|
68
|
+
### Log Strategy
|
|
69
|
+
|
|
70
|
+
| Log Type | Purpose |
|
|
71
|
+
|----------|---------|
|
|
72
|
+
| **Application logs** | Debug, audit |
|
|
73
|
+
| **Access logs** | Traffic analysis |
|
|
74
|
+
| **Error logs** | Issue detection |
|
|
75
|
+
|
|
76
|
+
### Log Principles
|
|
77
|
+
|
|
78
|
+
1. **Rotate logs** to prevent disk fill
|
|
79
|
+
2. **Structured logging** (JSON) for parsing
|
|
80
|
+
3. **Appropriate levels** (error/warn/info/debug)
|
|
81
|
+
4. **No sensitive data** in logs
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 4. Scaling Decisions
|
|
86
|
+
|
|
87
|
+
### When to Scale
|
|
88
|
+
|
|
89
|
+
| Symptom | Solution |
|
|
90
|
+
|---------|----------|
|
|
91
|
+
| High CPU | Add instances (horizontal) |
|
|
92
|
+
| High memory | Increase RAM or fix leak |
|
|
93
|
+
| Slow response | Profile first, then scale |
|
|
94
|
+
| Traffic spikes | Auto-scaling |
|
|
95
|
+
|
|
96
|
+
### Scaling Strategy
|
|
97
|
+
|
|
98
|
+
| Type | When to Use |
|
|
99
|
+
|------|-------------|
|
|
100
|
+
| **Vertical** | Quick fix, single instance |
|
|
101
|
+
| **Horizontal** | Sustainable, distributed |
|
|
102
|
+
| **Auto** | Variable traffic |
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 5. Health Check Principles
|
|
107
|
+
|
|
108
|
+
### What Constitutes Healthy
|
|
109
|
+
|
|
110
|
+
| Check | Meaning |
|
|
111
|
+
|-------|---------|
|
|
112
|
+
| **HTTP 200** | Service responding |
|
|
113
|
+
| **Database connected** | Data accessible |
|
|
114
|
+
| **Dependencies OK** | External services reachable |
|
|
115
|
+
| **Resources OK** | CPU/memory not exhausted |
|
|
116
|
+
|
|
117
|
+
### Health Check Implementation
|
|
118
|
+
|
|
119
|
+
- Simple: Just return 200
|
|
120
|
+
- Deep: Check all dependencies
|
|
121
|
+
- Choose based on load balancer needs
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 6. Security Principles
|
|
126
|
+
|
|
127
|
+
| Area | Principle |
|
|
128
|
+
|------|-----------|
|
|
129
|
+
| **Access** | SSH keys only, no passwords |
|
|
130
|
+
| **Firewall** | Only needed ports open |
|
|
131
|
+
| **Updates** | Regular security patches |
|
|
132
|
+
| **Secrets** | Environment vars, not files |
|
|
133
|
+
| **Audit** | Log access and changes |
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 7. Troubleshooting Priority
|
|
138
|
+
|
|
139
|
+
When something's wrong:
|
|
140
|
+
|
|
141
|
+
1. **Check if running** (process status)
|
|
142
|
+
2. **Check logs** (error messages)
|
|
143
|
+
3. **Check resources** (disk, memory, CPU)
|
|
144
|
+
4. **Check network** (ports, DNS)
|
|
145
|
+
5. **Check dependencies** (database, APIs)
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## 8. Anti-Patterns
|
|
150
|
+
|
|
151
|
+
| ❌ Don't | ✅ Do |
|
|
152
|
+
|----------|-------|
|
|
153
|
+
| Run as root | Use non-root user |
|
|
154
|
+
| Ignore logs | Set up log rotation |
|
|
155
|
+
| Skip monitoring | Monitor from day one |
|
|
156
|
+
| Manual restarts | Auto-restart config |
|
|
157
|
+
| No backups | Regular backup schedule |
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
> **Remember:** A well-managed server is boring. That's the goal.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Collision-Zone Thinking
|
|
3
|
+
description: Force unrelated concepts together to discover emergent properties - "What if we treated X like Y?"
|
|
4
|
+
when_to_use: when conventional approaches feel inadequate and you need breakthrough innovation by forcing unrelated concepts together
|
|
5
|
+
version: 1.1.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Collision-Zone Thinking
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
Revolutionary insights come from forcing unrelated concepts to collide. Treat X like Y and see what emerges.
|
|
13
|
+
|
|
14
|
+
**Core principle:** Deliberate metaphor-mixing generates novel solutions.
|
|
15
|
+
|
|
16
|
+
## Quick Reference
|
|
17
|
+
|
|
18
|
+
| Stuck On | Try Treating As | Might Discover |
|
|
19
|
+
|----------|-----------------|----------------|
|
|
20
|
+
| Code organization | DNA/genetics | Mutation testing, evolutionary algorithms |
|
|
21
|
+
| Service architecture | Lego bricks | Composable microservices, plug-and-play |
|
|
22
|
+
| Data management | Water flow | Streaming, data lakes, flow-based systems |
|
|
23
|
+
| Request handling | Postal mail | Message queues, async processing |
|
|
24
|
+
| Error handling | Circuit breakers | Fault isolation, graceful degradation |
|
|
25
|
+
|
|
26
|
+
## Process
|
|
27
|
+
|
|
28
|
+
1. **Pick two unrelated concepts** from different domains
|
|
29
|
+
2. **Force combination**: "What if we treated [A] like [B]?"
|
|
30
|
+
3. **Explore emergent properties**: What new capabilities appear?
|
|
31
|
+
4. **Test boundaries**: Where does the metaphor break?
|
|
32
|
+
5. **Extract insight**: What did we learn?
|
|
33
|
+
|
|
34
|
+
## Example Collision
|
|
35
|
+
|
|
36
|
+
**Problem:** Complex distributed system with cascading failures
|
|
37
|
+
|
|
38
|
+
**Collision:** "What if we treated services like electrical circuits?"
|
|
39
|
+
|
|
40
|
+
**Emergent properties:**
|
|
41
|
+
- Circuit breakers (disconnect on overload)
|
|
42
|
+
- Fuses (one-time failure protection)
|
|
43
|
+
- Ground faults (error isolation)
|
|
44
|
+
- Load balancing (current distribution)
|
|
45
|
+
|
|
46
|
+
**Where it works:** Preventing cascade failures
|
|
47
|
+
**Where it breaks:** Circuits don't have retry logic
|
|
48
|
+
**Insight gained:** Failure isolation patterns from electrical engineering
|
|
49
|
+
|
|
50
|
+
## Red Flags You Need This
|
|
51
|
+
|
|
52
|
+
- "I've tried everything in this domain"
|
|
53
|
+
- Solutions feel incremental, not breakthrough
|
|
54
|
+
- Stuck in conventional thinking
|
|
55
|
+
- Need innovation, not optimization
|
|
56
|
+
|
|
57
|
+
## Remember
|
|
58
|
+
|
|
59
|
+
- Wild combinations often yield best insights
|
|
60
|
+
- Test metaphor boundaries rigorously
|
|
61
|
+
- Document even failed collisions (they teach)
|
|
62
|
+
- Best source domains: physics, biology, economics, psychology
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Defense-in-Depth Validation
|
|
3
|
+
description: Validate at every layer data passes through to make bugs impossible
|
|
4
|
+
when_to_use: when invalid data causes failures deep in execution, requiring validation at multiple system layers
|
|
5
|
+
version: 1.1.0
|
|
6
|
+
languages: all
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Defense-in-Depth Validation
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
When you fix a bug caused by invalid data, adding validation at one place feels sufficient. But that single check can be bypassed by different code paths, refactoring, or mocks.
|
|
14
|
+
|
|
15
|
+
**Core principle:** Validate at EVERY layer data passes through. Make the bug structurally impossible.
|
|
16
|
+
|
|
17
|
+
## Why Multiple Layers
|
|
18
|
+
|
|
19
|
+
Single validation: "We fixed the bug"
|
|
20
|
+
Multiple layers: "We made the bug impossible"
|
|
21
|
+
|
|
22
|
+
Different layers catch different cases:
|
|
23
|
+
- Entry validation catches most bugs
|
|
24
|
+
- Business logic catches edge cases
|
|
25
|
+
- Environment guards prevent context-specific dangers
|
|
26
|
+
- Debug logging helps when other layers fail
|
|
27
|
+
|
|
28
|
+
## The Four Layers
|
|
29
|
+
|
|
30
|
+
### Layer 1: Entry Point Validation
|
|
31
|
+
**Purpose:** Reject obviously invalid input at API boundary
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
function createProject(name: string, workingDirectory: string) {
|
|
35
|
+
if (!workingDirectory || workingDirectory.trim() === '') {
|
|
36
|
+
throw new Error('workingDirectory cannot be empty');
|
|
37
|
+
}
|
|
38
|
+
if (!existsSync(workingDirectory)) {
|
|
39
|
+
throw new Error(`workingDirectory does not exist: ${workingDirectory}`);
|
|
40
|
+
}
|
|
41
|
+
if (!statSync(workingDirectory).isDirectory()) {
|
|
42
|
+
throw new Error(`workingDirectory is not a directory: ${workingDirectory}`);
|
|
43
|
+
}
|
|
44
|
+
// ... proceed
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Layer 2: Business Logic Validation
|
|
49
|
+
**Purpose:** Ensure data makes sense for this operation
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
function initializeWorkspace(projectDir: string, sessionId: string) {
|
|
53
|
+
if (!projectDir) {
|
|
54
|
+
throw new Error('projectDir required for workspace initialization');
|
|
55
|
+
}
|
|
56
|
+
// ... proceed
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Layer 3: Environment Guards
|
|
61
|
+
**Purpose:** Prevent dangerous operations in specific contexts
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
async function gitInit(directory: string) {
|
|
65
|
+
// In tests, refuse git init outside temp directories
|
|
66
|
+
if (process.env.NODE_ENV === 'test') {
|
|
67
|
+
const normalized = normalize(resolve(directory));
|
|
68
|
+
const tmpDir = normalize(resolve(tmpdir()));
|
|
69
|
+
|
|
70
|
+
if (!normalized.startsWith(tmpDir)) {
|
|
71
|
+
throw new Error(
|
|
72
|
+
`Refusing git init outside temp dir during tests: ${directory}`
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// ... proceed
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Layer 4: Debug Instrumentation
|
|
81
|
+
**Purpose:** Capture context for forensics
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
async function gitInit(directory: string) {
|
|
85
|
+
const stack = new Error().stack;
|
|
86
|
+
logger.debug('About to git init', {
|
|
87
|
+
directory,
|
|
88
|
+
cwd: process.cwd(),
|
|
89
|
+
stack,
|
|
90
|
+
});
|
|
91
|
+
// ... proceed
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Applying the Pattern
|
|
96
|
+
|
|
97
|
+
When you find a bug:
|
|
98
|
+
|
|
99
|
+
1. **Trace the data flow** - Where does bad value originate? Where used?
|
|
100
|
+
2. **Map all checkpoints** - List every point data passes through
|
|
101
|
+
3. **Add validation at each layer** - Entry, business, environment, debug
|
|
102
|
+
4. **Test each layer** - Try to bypass layer 1, verify layer 2 catches it
|
|
103
|
+
|
|
104
|
+
## Example from Session
|
|
105
|
+
|
|
106
|
+
Bug: Empty `projectDir` caused `git init` in source code
|
|
107
|
+
|
|
108
|
+
**Data flow:**
|
|
109
|
+
1. Test setup → empty string
|
|
110
|
+
2. `Project.create(name, '')`
|
|
111
|
+
3. `WorkspaceManager.createWorkspace('')`
|
|
112
|
+
4. `git init` runs in `process.cwd()`
|
|
113
|
+
|
|
114
|
+
**Four layers added:**
|
|
115
|
+
- Layer 1: `Project.create()` validates not empty/exists/writable
|
|
116
|
+
- Layer 2: `WorkspaceManager` validates projectDir not empty
|
|
117
|
+
- Layer 3: `WorktreeManager` refuses git init outside tmpdir in tests
|
|
118
|
+
- Layer 4: Stack trace logging before git init
|
|
119
|
+
|
|
120
|
+
**Result:** All 1847 tests passed, bug impossible to reproduce
|
|
121
|
+
|
|
122
|
+
## Key Insight
|
|
123
|
+
|
|
124
|
+
All four layers were necessary. During testing, each layer caught bugs the others missed:
|
|
125
|
+
- Different code paths bypassed entry validation
|
|
126
|
+
- Mocks bypassed business logic checks
|
|
127
|
+
- Edge cases on different platforms needed environment guards
|
|
128
|
+
- Debug logging identified structural misuse
|
|
129
|
+
|
|
130
|
+
**Don't stop at one validation point.** Add checks at every layer.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Inversion Exercise
|
|
3
|
+
description: Flip core assumptions to reveal hidden constraints and alternative approaches - "what if the opposite were true?"
|
|
4
|
+
when_to_use: when stuck on unquestioned assumptions or feeling forced into "the only way" to do something
|
|
5
|
+
version: 1.1.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Inversion Exercise
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
Flip every assumption and see what still works. Sometimes the opposite reveals the truth.
|
|
13
|
+
|
|
14
|
+
**Core principle:** Inversion exposes hidden assumptions and alternative approaches.
|
|
15
|
+
|
|
16
|
+
## Quick Reference
|
|
17
|
+
|
|
18
|
+
| Normal Assumption | Inverted | What It Reveals |
|
|
19
|
+
|-------------------|----------|-----------------|
|
|
20
|
+
| Cache to reduce latency | Add latency to enable caching | Debouncing patterns |
|
|
21
|
+
| Pull data when needed | Push data before needed | Prefetching, eager loading |
|
|
22
|
+
| Handle errors when occur | Make errors impossible | Type systems, contracts |
|
|
23
|
+
| Build features users want | Remove features users don't need | Simplicity >> addition |
|
|
24
|
+
| Optimize for common case | Optimize for worst case | Resilience patterns |
|
|
25
|
+
|
|
26
|
+
## Process
|
|
27
|
+
|
|
28
|
+
1. **List core assumptions** - What "must" be true?
|
|
29
|
+
2. **Invert each systematically** - "What if opposite were true?"
|
|
30
|
+
3. **Explore implications** - What would we do differently?
|
|
31
|
+
4. **Find valid inversions** - Which actually work somewhere?
|
|
32
|
+
|
|
33
|
+
## Example
|
|
34
|
+
|
|
35
|
+
**Problem:** Users complain app is slow
|
|
36
|
+
|
|
37
|
+
**Normal approach:** Make everything faster (caching, optimization, CDN)
|
|
38
|
+
|
|
39
|
+
**Inverted:** Make things intentionally slower in some places
|
|
40
|
+
- Debounce search (add latency → enable better results)
|
|
41
|
+
- Rate limit requests (add friction → prevent abuse)
|
|
42
|
+
- Lazy load content (delay → reduce initial load)
|
|
43
|
+
|
|
44
|
+
**Insight:** Strategic slowness can improve UX
|
|
45
|
+
|
|
46
|
+
## Red Flags You Need This
|
|
47
|
+
|
|
48
|
+
- "There's only one way to do this"
|
|
49
|
+
- Forcing solution that feels wrong
|
|
50
|
+
- Can't articulate why approach is necessary
|
|
51
|
+
- "This is just how it's done"
|
|
52
|
+
|
|
53
|
+
## Remember
|
|
54
|
+
|
|
55
|
+
- Not all inversions work (test boundaries)
|
|
56
|
+
- Valid inversions reveal context-dependence
|
|
57
|
+
- Sometimes opposite is the answer
|
|
58
|
+
- Question "must be" statements
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Meta-Pattern Recognition
|
|
3
|
+
description: Spot patterns appearing in 3+ domains to find universal principles
|
|
4
|
+
when_to_use: when noticing the same pattern across 3+ different domains or experiencing déjà vu in problem-solving
|
|
5
|
+
version: 1.1.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Meta-Pattern Recognition
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
When the same pattern appears in 3+ domains, it's probably a universal principle worth extracting.
|
|
13
|
+
|
|
14
|
+
**Core principle:** Find patterns in how patterns emerge.
|
|
15
|
+
|
|
16
|
+
## Quick Reference
|
|
17
|
+
|
|
18
|
+
| Pattern Appears In | Abstract Form | Where Else? |
|
|
19
|
+
|-------------------|---------------|-------------|
|
|
20
|
+
| CPU/DB/HTTP/DNS caching | Store frequently-accessed data closer | LLM prompt caching, CDN |
|
|
21
|
+
| Layering (network/storage/compute) | Separate concerns into abstraction levels | Architecture, organization |
|
|
22
|
+
| Queuing (message/task/request) | Decouple producer from consumer with buffer | Event systems, async processing |
|
|
23
|
+
| Pooling (connection/thread/object) | Reuse expensive resources | Memory management, resource governance |
|
|
24
|
+
|
|
25
|
+
## Process
|
|
26
|
+
|
|
27
|
+
1. **Spot repetition** - See same shape in 3+ places
|
|
28
|
+
2. **Extract abstract form** - Describe independent of any domain
|
|
29
|
+
3. **Identify variations** - How does it adapt per domain?
|
|
30
|
+
4. **Check applicability** - Where else might this help?
|
|
31
|
+
|
|
32
|
+
## Example
|
|
33
|
+
|
|
34
|
+
**Pattern spotted:** Rate limiting in API throttling, traffic shaping, circuit breakers, admission control
|
|
35
|
+
|
|
36
|
+
**Abstract form:** Bound resource consumption to prevent exhaustion
|
|
37
|
+
|
|
38
|
+
**Variation points:** What resource, what limit, what happens when exceeded
|
|
39
|
+
|
|
40
|
+
**New application:** LLM token budgets (same pattern - prevent context window exhaustion)
|
|
41
|
+
|
|
42
|
+
## Red Flags You're Missing Meta-Patterns
|
|
43
|
+
|
|
44
|
+
- "This problem is unique" (probably not)
|
|
45
|
+
- Multiple teams independently solving "different" problems identically
|
|
46
|
+
- Reinventing wheels across domains
|
|
47
|
+
- "Haven't we done something like this?" (yes, find it)
|
|
48
|
+
|
|
49
|
+
## Remember
|
|
50
|
+
|
|
51
|
+
- 3+ domains = likely universal
|
|
52
|
+
- Abstract form reveals new applications
|
|
53
|
+
- Variations show adaptation points
|
|
54
|
+
- Universal patterns are battle-tested
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Root Cause Tracing
|
|
3
|
+
description: Systematically trace bugs backward through call stack to find original trigger
|
|
4
|
+
when_to_use: when errors occur deep in execution and you need to trace back to find the original trigger
|
|
5
|
+
version: 1.1.0
|
|
6
|
+
languages: all
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Root Cause Tracing
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
Bugs often manifest deep in the call stack (git init in wrong directory, file created in wrong location, database opened with wrong path). Your instinct is to fix where the error appears, but that's treating a symptom.
|
|
14
|
+
|
|
15
|
+
**Core principle:** Trace backward through the call chain until you find the original trigger, then fix at the source.
|
|
16
|
+
|
|
17
|
+
## When to Use
|
|
18
|
+
|
|
19
|
+
```dot
|
|
20
|
+
digraph when_to_use {
|
|
21
|
+
"Bug appears deep in stack?" [shape=diamond];
|
|
22
|
+
"Can trace backwards?" [shape=diamond];
|
|
23
|
+
"Fix at symptom point" [shape=box];
|
|
24
|
+
"Trace to original trigger" [shape=box];
|
|
25
|
+
"BETTER: Also add defense-in-depth" [shape=box];
|
|
26
|
+
|
|
27
|
+
"Bug appears deep in stack?" -> "Can trace backwards?" [label="yes"];
|
|
28
|
+
"Can trace backwards?" -> "Trace to original trigger" [label="yes"];
|
|
29
|
+
"Can trace backwards?" -> "Fix at symptom point" [label="no - dead end"];
|
|
30
|
+
"Trace to original trigger" -> "BETTER: Also add defense-in-depth";
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Use when:**
|
|
35
|
+
- Error happens deep in execution (not at entry point)
|
|
36
|
+
- Stack trace shows long call chain
|
|
37
|
+
- Unclear where invalid data originated
|
|
38
|
+
- Need to find which test/code triggers the problem
|
|
39
|
+
|
|
40
|
+
## The Tracing Process
|
|
41
|
+
|
|
42
|
+
### 1. Observe the Symptom
|
|
43
|
+
```
|
|
44
|
+
Error: git init failed in /Users/jesse/project/packages/core
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 2. Find Immediate Cause
|
|
48
|
+
**What code directly causes this?**
|
|
49
|
+
```typescript
|
|
50
|
+
await execFileAsync('git', ['init'], { cwd: projectDir });
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 3. Ask: What Called This?
|
|
54
|
+
```typescript
|
|
55
|
+
WorktreeManager.createSessionWorktree(projectDir, sessionId)
|
|
56
|
+
→ called by Session.initializeWorkspace()
|
|
57
|
+
→ called by Session.create()
|
|
58
|
+
→ called by test at Project.create()
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 4. Keep Tracing Up
|
|
62
|
+
**What value was passed?**
|
|
63
|
+
- `projectDir = ''` (empty string!)
|
|
64
|
+
- Empty string as `cwd` resolves to `process.cwd()`
|
|
65
|
+
- That's the source code directory!
|
|
66
|
+
|
|
67
|
+
### 5. Find Original Trigger
|
|
68
|
+
**Where did empty string come from?**
|
|
69
|
+
```typescript
|
|
70
|
+
const context = setupCoreTest(); // Returns { tempDir: '' }
|
|
71
|
+
Project.create('name', context.tempDir); // Accessed before beforeEach!
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Adding Stack Traces
|
|
75
|
+
|
|
76
|
+
When you can't trace manually, add instrumentation:
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
// Before the problematic operation
|
|
80
|
+
async function gitInit(directory: string) {
|
|
81
|
+
const stack = new Error().stack;
|
|
82
|
+
console.error('DEBUG git init:', {
|
|
83
|
+
directory,
|
|
84
|
+
cwd: process.cwd(),
|
|
85
|
+
nodeEnv: process.env.NODE_ENV,
|
|
86
|
+
stack,
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
await execFileAsync('git', ['init'], { cwd: directory });
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Critical:** Use `console.error()` in tests (not logger - may not show)
|
|
94
|
+
|
|
95
|
+
**Run and capture:**
|
|
96
|
+
```bash
|
|
97
|
+
npm test 2>&1 | grep 'DEBUG git init'
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Analyze stack traces:**
|
|
101
|
+
- Look for test file names
|
|
102
|
+
- Find the line number triggering the call
|
|
103
|
+
- Identify the pattern (same test? same parameter?)
|
|
104
|
+
|
|
105
|
+
## Finding Which Test Causes Pollution
|
|
106
|
+
|
|
107
|
+
If something appears during tests but you don't know which test:
|
|
108
|
+
|
|
109
|
+
Use the bisection script: @find-polluter.sh
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
./find-polluter.sh '.git' 'src/**/*.test.ts'
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Runs tests one-by-one, stops at first polluter. See script for usage.
|
|
116
|
+
|
|
117
|
+
## Real Example: Empty projectDir
|
|
118
|
+
|
|
119
|
+
**Symptom:** `.git` created in `packages/core/` (source code)
|
|
120
|
+
|
|
121
|
+
**Trace chain:**
|
|
122
|
+
1. `git init` runs in `process.cwd()` ← empty cwd parameter
|
|
123
|
+
2. WorktreeManager called with empty projectDir
|
|
124
|
+
3. Session.create() passed empty string
|
|
125
|
+
4. Test accessed `context.tempDir` before beforeEach
|
|
126
|
+
5. setupCoreTest() returns `{ tempDir: '' }` initially
|
|
127
|
+
|
|
128
|
+
**Root cause:** Top-level variable initialization accessing empty value
|
|
129
|
+
|
|
130
|
+
**Fix:** Made tempDir a getter that throws if accessed before beforeEach
|
|
131
|
+
|
|
132
|
+
**Also added defense-in-depth:**
|
|
133
|
+
- Layer 1: Project.create() validates directory
|
|
134
|
+
- Layer 2: WorkspaceManager validates not empty
|
|
135
|
+
- Layer 3: NODE_ENV guard refuses git init outside tmpdir
|
|
136
|
+
- Layer 4: Stack trace logging before git init
|
|
137
|
+
|
|
138
|
+
## Key Principle
|
|
139
|
+
|
|
140
|
+
```dot
|
|
141
|
+
digraph principle {
|
|
142
|
+
"Found immediate cause" [shape=ellipse];
|
|
143
|
+
"Can trace one level up?" [shape=diamond];
|
|
144
|
+
"Trace backwards" [shape=box];
|
|
145
|
+
"Is this the source?" [shape=diamond];
|
|
146
|
+
"Fix at source" [shape=box];
|
|
147
|
+
"Add validation at each layer" [shape=box];
|
|
148
|
+
"Bug impossible" [shape=doublecircle];
|
|
149
|
+
"NEVER fix just the symptom" [shape=octagon, style=filled, fillcolor=red, fontcolor=white];
|
|
150
|
+
|
|
151
|
+
"Found immediate cause" -> "Can trace one level up?";
|
|
152
|
+
"Can trace one level up?" -> "Trace backwards" [label="yes"];
|
|
153
|
+
"Can trace one level up?" -> "NEVER fix just the symptom" [label="no"];
|
|
154
|
+
"Trace backwards" -> "Is this the source?";
|
|
155
|
+
"Is this the source?" -> "Trace backwards" [label="no - keeps going"];
|
|
156
|
+
"Is this the source?" -> "Fix at source" [label="yes"];
|
|
157
|
+
"Fix at source" -> "Add validation at each layer";
|
|
158
|
+
"Add validation at each layer" -> "Bug impossible";
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**NEVER fix just where the error appears.** Trace back to find the original trigger.
|
|
163
|
+
|
|
164
|
+
## Stack Trace Tips
|
|
165
|
+
|
|
166
|
+
**In tests:** Use `console.error()` not logger - logger may be suppressed
|
|
167
|
+
**Before operation:** Log before the dangerous operation, not after it fails
|
|
168
|
+
**Include context:** Directory, cwd, environment variables, timestamps
|
|
169
|
+
**Capture stack:** `new Error().stack` shows complete call chain
|
|
170
|
+
|
|
171
|
+
## Real-World Impact
|
|
172
|
+
|
|
173
|
+
From debugging session (2025-10-03):
|
|
174
|
+
- Found root cause through 5-level trace
|
|
175
|
+
- Fixed at source (getter validation)
|
|
176
|
+
- Added 4 layers of defense
|
|
177
|
+
- 1847 tests passed, zero pollution
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Bisection script to find which test creates unwanted files/state
|
|
3
|
+
# Usage: ./find-polluter.sh <file_or_dir_to_check> <test_pattern>
|
|
4
|
+
# Example: ./find-polluter.sh '.git' 'src/**/*.test.ts'
|
|
5
|
+
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
if [ $# -ne 2 ]; then
|
|
9
|
+
echo "Usage: $0 <file_to_check> <test_pattern>"
|
|
10
|
+
echo "Example: $0 '.git' 'src/**/*.test.ts'"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
POLLUTION_CHECK="$1"
|
|
15
|
+
TEST_PATTERN="$2"
|
|
16
|
+
|
|
17
|
+
echo "🔍 Searching for test that creates: $POLLUTION_CHECK"
|
|
18
|
+
echo "Test pattern: $TEST_PATTERN"
|
|
19
|
+
echo ""
|
|
20
|
+
|
|
21
|
+
# Get list of test files
|
|
22
|
+
TEST_FILES=$(find . -path "$TEST_PATTERN" | sort)
|
|
23
|
+
TOTAL=$(echo "$TEST_FILES" | wc -l | tr -d ' ')
|
|
24
|
+
|
|
25
|
+
echo "Found $TOTAL test files"
|
|
26
|
+
echo ""
|
|
27
|
+
|
|
28
|
+
COUNT=0
|
|
29
|
+
for TEST_FILE in $TEST_FILES; do
|
|
30
|
+
COUNT=$((COUNT + 1))
|
|
31
|
+
|
|
32
|
+
# Skip if pollution already exists
|
|
33
|
+
if [ -e "$POLLUTION_CHECK" ]; then
|
|
34
|
+
echo "⚠️ Pollution already exists before test $COUNT/$TOTAL"
|
|
35
|
+
echo " Skipping: $TEST_FILE"
|
|
36
|
+
continue
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
echo "[$COUNT/$TOTAL] Testing: $TEST_FILE"
|
|
40
|
+
|
|
41
|
+
# Run the test
|
|
42
|
+
npm test "$TEST_FILE" > /dev/null 2>&1 || true
|
|
43
|
+
|
|
44
|
+
# Check if pollution appeared
|
|
45
|
+
if [ -e "$POLLUTION_CHECK" ]; then
|
|
46
|
+
echo ""
|
|
47
|
+
echo "🎯 FOUND POLLUTER!"
|
|
48
|
+
echo " Test: $TEST_FILE"
|
|
49
|
+
echo " Created: $POLLUTION_CHECK"
|
|
50
|
+
echo ""
|
|
51
|
+
echo "Pollution details:"
|
|
52
|
+
ls -la "$POLLUTION_CHECK"
|
|
53
|
+
echo ""
|
|
54
|
+
echo "To investigate:"
|
|
55
|
+
echo " npm test $TEST_FILE # Run just this test"
|
|
56
|
+
echo " cat $TEST_FILE # Review test code"
|
|
57
|
+
exit 1
|
|
58
|
+
fi
|
|
59
|
+
done
|
|
60
|
+
|
|
61
|
+
echo ""
|
|
62
|
+
echo "✅ No polluter found - all tests clean!"
|
|
63
|
+
exit 0
|