cokit-cli 1.0.1 → 1.0.3
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/AGENTS.md +103 -0
- package/README.FLOW.md +237 -0
- package/README.md +153 -94
- package/agents/brainstormer.agent.md +71 -0
- package/agents/code-reviewer.agent.md +128 -0
- package/agents/database-admin.agent.md +91 -0
- package/agents/debugger.agent.md +128 -0
- package/agents/docs-manager.agent.md +121 -0
- package/agents/fullstack-developer.agent.md +96 -0
- package/agents/git-manager.agent.md +392 -0
- package/agents/mcp-manager.agent.md +93 -0
- package/agents/planner.agent.md +94 -0
- package/agents/project-manager.agent.md +124 -0
- package/agents/researcher.agent.md +32 -0
- package/agents/scout-external.agent.md +141 -0
- package/agents/scout.agent.md +107 -0
- package/agents/tester.agent.md +106 -0
- package/agents/ui-ux-designer.agent.md +225 -0
- package/collections/ck-core.collection.yml +30 -0
- package/collections/ck-development-rules.collection.yml +18 -0
- package/collections/ck-documentation.collection.yml +18 -0
- package/collections/ck-git-workflow.collection.yml +18 -0
- package/collections/ck-orchestration.collection.yml +22 -0
- package/collections/ck-ui-design.collection.yml +18 -0
- package/docs/README.md +85 -0
- package/docs/copilot-processing-flow.md +128 -0
- package/instructions/ck-backend.instructions.md +48 -0
- package/instructions/ck-development.instructions.md +40 -0
- package/instructions/ck-frontend-design-pro.instructions.md +58 -0
- package/instructions/ck-frontend.instructions.md +44 -0
- package/instructions/ck-google-adk-python.instructions.md +242 -0
- package/instructions/ck-research.instructions.md +167 -0
- package/instructions/ck-testing.instructions.md +36 -0
- package/package.json +9 -2
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-01-restructure-folders.md +183 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-02-convert-agents.md +206 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-03-convert-commands-to-prompts.md +284 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-04-convert-skills-to-instructions.md +349 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-05-create-collections.md +320 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-06-update-cli-build-scripts.md +450 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-07-update-documentation.md +407 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/plan.md +136 -0
- package/prompts/ck-ask.prompt.md +57 -0
- package/prompts/ck-bootstrap-auto-fast.prompt.md +108 -0
- package/prompts/ck-bootstrap-auto-parallel.prompt.md +66 -0
- package/prompts/ck-bootstrap-auto.prompt.md +114 -0
- package/prompts/ck-bootstrap.prompt.md +136 -0
- package/prompts/ck-brainstorm.prompt.md +68 -0
- package/prompts/ck-ck-help.prompt.md +114 -0
- package/prompts/ck-code-auto.prompt.md +171 -0
- package/prompts/ck-code-no-test.prompt.md +159 -0
- package/prompts/ck-code-parallel.prompt.md +56 -0
- package/prompts/ck-code.prompt.md +177 -0
- package/prompts/ck-coding-level.prompt.md +54 -0
- package/prompts/ck-cook-auto-fast.prompt.md +26 -0
- package/prompts/ck-cook-auto-parallel.prompt.md +49 -0
- package/prompts/ck-cook-auto.prompt.md +15 -0
- package/prompts/ck-cook.prompt.md +96 -0
- package/prompts/ck-debug.prompt.md +14 -0
- package/prompts/ck-design-3d.prompt.md +84 -0
- package/prompts/ck-design-describe.prompt.md +24 -0
- package/prompts/ck-design-fast.prompt.md +32 -0
- package/prompts/ck-design-good.prompt.md +36 -0
- package/prompts/ck-design-screenshot.prompt.md +35 -0
- package/prompts/ck-design-video.prompt.md +35 -0
- package/prompts/ck-docs-init.prompt.md +27 -0
- package/prompts/ck-docs-summarize.prompt.md +23 -0
- package/prompts/ck-docs-update.prompt.md +36 -0
- package/prompts/ck-fix-ci.prompt.md +18 -0
- package/prompts/ck-fix-fast.prompt.md +18 -0
- package/prompts/ck-fix-hard.prompt.md +36 -0
- package/prompts/ck-fix-logs.prompt.md +27 -0
- package/prompts/ck-fix-parallel.prompt.md +54 -0
- package/prompts/ck-fix-test.prompt.md +19 -0
- package/prompts/ck-fix-types.prompt.md +11 -0
- package/prompts/ck-fix-ui.prompt.md +49 -0
- package/prompts/ck-fix.prompt.md +44 -0
- package/prompts/ck-git-cm.prompt.md +8 -0
- package/prompts/ck-git-cp.prompt.md +7 -0
- package/prompts/ck-git-merge.prompt.md +41 -0
- package/prompts/ck-git-pr.prompt.md +49 -0
- package/prompts/ck-kanban.prompt.md +77 -0
- package/prompts/ck-plan-archive.prompt.md +58 -0
- package/prompts/ck-plan-ci.prompt.md +34 -0
- package/prompts/ck-plan-cro.prompt.md +66 -0
- package/prompts/ck-plan-fast.prompt.md +67 -0
- package/prompts/ck-plan-hard.prompt.md +89 -0
- package/prompts/ck-plan-parallel.prompt.md +126 -0
- package/prompts/ck-plan-two.prompt.md +43 -0
- package/prompts/ck-plan-validate.prompt.md +118 -0
- package/prompts/ck-plan.prompt.md +29 -1
- package/prompts/ck-preview.prompt.md +65 -0
- package/prompts/ck-review-codebase.prompt.md +44 -0
- package/prompts/ck-scout-ext.prompt.md +35 -0
- package/prompts/ck-scout.prompt.md +25 -0
- package/prompts/ck-skill-add.prompt.md +36 -0
- package/prompts/ck-skill-create.prompt.md +29 -0
- package/prompts/ck-skill-fix-logs.prompt.md +22 -0
- package/prompts/ck-skill-optimize-auto.prompt.md +25 -0
- package/prompts/ck-skill-optimize.prompt.md +34 -0
- package/prompts/ck-skill-plan.prompt.md +46 -0
- package/prompts/ck-test-ui.prompt.md +92 -0
- package/prompts/ck-test.prompt.md +10 -0
- package/prompts/ck-use-mcp.prompt.md +27 -0
- package/prompts/ck-watzup.prompt.md +11 -0
- package/prompts/ck-worktree.prompt.md +127 -0
- package/rules/README.agents.md +55 -0
- package/rules/README.collections.md +78 -0
- package/rules/README.copilot-instructions.md +66 -0
- package/rules/README.instructions.md +73 -0
- package/rules/README.md +39 -0
- package/rules/README.prompts.md +76 -0
- package/rules/README.skills.md +71 -0
- package/skills/ck-ai-artist/SKILL.md +73 -0
- package/skills/ck-ai-artist/references/advanced-techniques.md +184 -0
- package/skills/ck-ai-artist/references/domain-code.md +66 -0
- package/skills/ck-ai-artist/references/domain-data.md +72 -0
- package/skills/ck-ai-artist/references/domain-marketing.md +66 -0
- package/skills/ck-ai-artist/references/domain-patterns.md +33 -0
- package/skills/ck-ai-artist/references/domain-writing.md +68 -0
- package/skills/ck-ai-artist/references/image-prompting.md +141 -0
- package/skills/ck-ai-artist/references/llm-prompting.md +165 -0
- package/skills/ck-ai-artist/references/nano-banana.md +59 -0
- package/skills/ck-ai-artist/references/reasoning-techniques.md +201 -0
- package/skills/ck-backend-development/SKILL.md +93 -0
- package/skills/ck-backend-development/references/backend-api-design.md +495 -0
- package/skills/ck-backend-development/references/backend-architecture.md +454 -0
- package/skills/ck-backend-development/references/backend-authentication.md +338 -0
- package/skills/ck-backend-development/references/backend-code-quality.md +659 -0
- package/skills/ck-backend-development/references/backend-debugging.md +904 -0
- package/skills/ck-backend-development/references/backend-devops.md +494 -0
- package/skills/ck-backend-development/references/backend-mindset.md +387 -0
- package/skills/ck-backend-development/references/backend-performance.md +397 -0
- package/skills/ck-backend-development/references/backend-security.md +290 -0
- package/skills/ck-backend-development/references/backend-technologies.md +256 -0
- package/skills/ck-backend-development/references/backend-testing.md +429 -0
- package/skills/ck-better-auth/SKILL.md +202 -0
- package/skills/ck-better-auth/references/advanced-features.md +553 -0
- package/skills/ck-better-auth/references/database-integration.md +577 -0
- package/skills/ck-better-auth/references/email-password-auth.md +416 -0
- package/skills/ck-better-auth/references/oauth-providers.md +430 -0
- package/skills/ck-better-auth/scripts/.coverage +0 -0
- package/skills/ck-better-auth/scripts/better_auth_init.py +521 -0
- package/skills/ck-better-auth/scripts/requirements.txt +15 -0
- package/skills/ck-better-auth/scripts/tests/.coverage +0 -0
- package/skills/ck-better-auth/scripts/tests/test_better_auth_init.py +421 -0
- package/skills/ck-chrome-devtools/SKILL.md +470 -0
- package/skills/ck-chrome-devtools/references/cdp-domains.md +694 -0
- package/skills/ck-chrome-devtools/references/performance-guide.md +940 -0
- package/skills/ck-chrome-devtools/references/puppeteer-reference.md +953 -0
- package/skills/ck-chrome-devtools/scripts/README.md +272 -0
- package/skills/ck-chrome-devtools/scripts/__tests__/selector.test.js +210 -0
- package/skills/ck-chrome-devtools/scripts/aria-snapshot.js +362 -0
- package/skills/ck-chrome-devtools/scripts/click.js +83 -0
- package/skills/ck-chrome-devtools/scripts/console.js +79 -0
- package/skills/ck-chrome-devtools/scripts/evaluate.js +53 -0
- package/skills/ck-chrome-devtools/scripts/fill.js +76 -0
- package/skills/ck-chrome-devtools/scripts/inject-auth.js +229 -0
- package/skills/ck-chrome-devtools/scripts/install-deps.sh +181 -0
- package/skills/ck-chrome-devtools/scripts/install.sh +83 -0
- package/skills/ck-chrome-devtools/scripts/lib/browser.js +318 -0
- package/skills/ck-chrome-devtools/scripts/lib/selector.js +178 -0
- package/skills/ck-chrome-devtools/scripts/navigate.js +54 -0
- package/skills/ck-chrome-devtools/scripts/network.js +106 -0
- package/skills/ck-chrome-devtools/scripts/package-lock.json +1589 -0
- package/skills/ck-chrome-devtools/scripts/package.json +16 -0
- package/skills/ck-chrome-devtools/scripts/performance.js +149 -0
- package/skills/ck-chrome-devtools/scripts/screenshot.js +198 -0
- package/skills/ck-chrome-devtools/scripts/select-ref.js +131 -0
- package/skills/ck-chrome-devtools/scripts/snapshot.js +135 -0
- package/skills/ck-code-review/SKILL.md +110 -53
- package/skills/ck-code-review/references/code-review-reception.md +182 -49
- package/skills/ck-code-review/references/requesting-code-review.md +105 -0
- package/skills/ck-code-review/references/verification-before-completion.md +111 -58
- package/skills/ck-databases/SKILL.md +231 -0
- package/skills/ck-databases/references/mongodb-aggregation.md +447 -0
- package/skills/ck-databases/references/mongodb-atlas.md +465 -0
- package/skills/ck-databases/references/mongodb-crud.md +408 -0
- package/skills/ck-databases/references/mongodb-indexing.md +442 -0
- package/skills/ck-databases/references/postgresql-administration.md +594 -0
- package/skills/ck-databases/references/postgresql-performance.md +527 -0
- package/skills/ck-databases/references/postgresql-psql-cli.md +467 -0
- package/skills/ck-databases/references/postgresql-queries.md +475 -0
- package/skills/ck-databases/scripts/.coverage +0 -0
- package/skills/ck-databases/scripts/db_backup.py +502 -0
- package/skills/ck-databases/scripts/db_migrate.py +425 -0
- package/skills/ck-databases/scripts/db_performance_check.py +456 -0
- package/skills/ck-databases/scripts/requirements.txt +20 -0
- package/skills/ck-databases/scripts/tests/coverage-db.json +1 -0
- package/skills/ck-databases/scripts/tests/requirements.txt +4 -0
- package/skills/ck-databases/scripts/tests/test_db_backup.py +340 -0
- package/skills/ck-databases/scripts/tests/test_db_migrate.py +277 -0
- package/skills/ck-databases/scripts/tests/test_db_performance_check.py +370 -0
- package/skills/ck-debugging/SKILL.md +55 -43
- package/skills/ck-debugging/references/defense-in-depth.md +124 -0
- package/skills/ck-debugging/references/root-cause-tracing.md +100 -43
- package/skills/ck-debugging/references/systematic-debugging.md +80 -52
- package/skills/ck-debugging/references/verification.md +101 -52
- package/skills/ck-debugging/scripts/find-polluter.sh +63 -0
- package/skills/ck-debugging/scripts/find-polluter.test.md +102 -0
- package/skills/ck-devops/.env.example +76 -0
- package/skills/ck-devops/SKILL.md +283 -0
- package/skills/ck-devops/references/browser-rendering.md +305 -0
- package/skills/ck-devops/references/cloudflare-d1-kv.md +123 -0
- package/skills/ck-devops/references/cloudflare-platform.md +271 -0
- package/skills/ck-devops/references/cloudflare-r2-storage.md +280 -0
- package/skills/ck-devops/references/cloudflare-workers-advanced.md +312 -0
- package/skills/ck-devops/references/cloudflare-workers-apis.md +309 -0
- package/skills/ck-devops/references/cloudflare-workers-basics.md +418 -0
- package/skills/ck-devops/references/docker-basics.md +297 -0
- package/skills/ck-devops/references/docker-compose.md +292 -0
- package/skills/ck-devops/references/gcloud-platform.md +297 -0
- package/skills/ck-devops/references/gcloud-services.md +304 -0
- package/skills/ck-devops/scripts/cloudflare_deploy.py +269 -0
- package/skills/ck-devops/scripts/docker_optimize.py +331 -0
- package/skills/ck-devops/scripts/requirements.txt +20 -0
- package/skills/ck-devops/scripts/tests/requirements.txt +3 -0
- package/skills/ck-devops/scripts/tests/test_cloudflare_deploy.py +285 -0
- package/skills/ck-devops/scripts/tests/test_docker_optimize.py +436 -0
- package/skills/ck-docs-seeker/.env.example +15 -0
- package/skills/ck-docs-seeker/SKILL.md +70 -65
- package/skills/ck-docs-seeker/package.json +25 -0
- package/skills/ck-docs-seeker/references/advanced.md +79 -0
- package/skills/ck-docs-seeker/references/context7-patterns.md +68 -0
- package/skills/ck-docs-seeker/references/errors.md +68 -0
- package/skills/ck-docs-seeker/scripts/analyze-llms-txt.js +211 -0
- package/skills/ck-docs-seeker/scripts/detect-topic.js +172 -0
- package/skills/ck-docs-seeker/scripts/fetch-docs.js +213 -0
- package/skills/ck-docs-seeker/scripts/tests/run-tests.js +72 -0
- package/skills/ck-docs-seeker/scripts/tests/test-analyze-llms.js +119 -0
- package/skills/ck-docs-seeker/scripts/tests/test-detect-topic.js +112 -0
- package/skills/ck-docs-seeker/scripts/tests/test-fetch-docs.js +84 -0
- package/skills/ck-docs-seeker/scripts/utils/env-loader.js +94 -0
- package/skills/ck-docs-seeker/workflows/library-search.md +87 -0
- package/skills/ck-docs-seeker/workflows/repo-analysis.md +91 -0
- package/skills/ck-docs-seeker/workflows/topic-search.md +77 -0
- package/skills/ck-frontend-design/SKILL.md +79 -0
- package/skills/ck-frontend-design/references/analysis-best-practices.md +80 -0
- package/skills/ck-frontend-design/references/analysis-prompts.md +141 -0
- package/skills/ck-frontend-design/references/analysis-techniques.md +118 -0
- package/skills/ck-frontend-design/references/animejs.md +396 -0
- package/skills/ck-frontend-design/references/design-extraction-overview.md +71 -0
- package/skills/ck-frontend-design/references/extraction-best-practices.md +141 -0
- package/skills/ck-frontend-design/references/extraction-output-templates.md +162 -0
- package/skills/ck-frontend-design/references/extraction-prompts.md +127 -0
- package/skills/ck-frontend-design/references/technical-accessibility.md +119 -0
- package/skills/ck-frontend-design/references/technical-best-practices.md +97 -0
- package/skills/ck-frontend-design/references/technical-optimization.md +44 -0
- package/skills/ck-frontend-design/references/technical-overview.md +90 -0
- package/skills/ck-frontend-design/references/technical-workflows.md +150 -0
- package/skills/ck-frontend-design/references/visual-analysis-overview.md +95 -0
- package/skills/ck-frontend-development/SKILL.md +399 -0
- package/skills/ck-frontend-development/resources/common-patterns.md +331 -0
- package/skills/ck-frontend-development/resources/complete-examples.md +872 -0
- package/skills/ck-frontend-development/resources/component-patterns.md +502 -0
- package/skills/ck-frontend-development/resources/data-fetching.md +767 -0
- package/skills/ck-frontend-development/resources/file-organization.md +502 -0
- package/skills/ck-frontend-development/resources/loading-and-error-states.md +501 -0
- package/skills/ck-frontend-development/resources/performance.md +406 -0
- package/skills/ck-frontend-development/resources/routing-guide.md +364 -0
- package/skills/ck-frontend-development/resources/styling-guide.md +428 -0
- package/skills/ck-frontend-development/resources/typescript-standards.md +418 -0
- package/skills/ck-markdown-novel-viewer/SKILL.md +190 -0
- package/skills/ck-markdown-novel-viewer/assets/directory-browser.css +215 -0
- package/skills/ck-markdown-novel-viewer/assets/favicon.png +0 -0
- package/skills/ck-markdown-novel-viewer/assets/novel-theme.css +818 -0
- package/skills/ck-markdown-novel-viewer/assets/reader.js +262 -0
- package/skills/ck-markdown-novel-viewer/assets/template.html +80 -0
- package/skills/ck-markdown-novel-viewer/package.json +15 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/http-server.cjs +434 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/markdown-renderer.cjs +272 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/plan-navigator.cjs +509 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/port-finder.cjs +48 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/process-mgr.cjs +150 -0
- package/skills/ck-markdown-novel-viewer/scripts/server.cjs +411 -0
- package/skills/ck-markdown-novel-viewer/scripts/tests/server.test.cjs +283 -0
- package/skills/ck-markdown-novel-viewer/tests/dashboard-assets.test.cjs +340 -0
- package/skills/ck-markdown-novel-viewer/tests/dashboard-renderer.test.cjs +404 -0
- package/skills/ck-markdown-novel-viewer/tests/http-server.test.cjs +271 -0
- package/skills/ck-markdown-novel-viewer/tests/run-tests.cjs +51 -0
- package/skills/ck-markdown-novel-viewer/tests/test-framework.cjs +154 -0
- package/skills/ck-markdown-novel-viewer/tests/verify-xss.cjs +90 -0
- package/skills/ck-mcp-builder/LICENSE.txt +202 -0
- package/skills/ck-mcp-builder/SKILL.md +327 -0
- package/skills/ck-mcp-builder/reference/evaluation.md +602 -0
- package/skills/ck-mcp-builder/reference/mcp_best_practices.md +915 -0
- package/skills/ck-mcp-builder/reference/node_mcp_server.md +916 -0
- package/skills/ck-mcp-builder/reference/python_mcp_server.md +752 -0
- package/skills/ck-mcp-builder/scripts/connections.py +151 -0
- package/skills/ck-mcp-builder/scripts/evaluation.py +373 -0
- package/skills/ck-mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/ck-mcp-builder/scripts/requirements.txt +2 -0
- package/skills/ck-mcp-management/README.md +219 -0
- package/skills/ck-mcp-management/SKILL.md +209 -0
- package/skills/ck-mcp-management/assets/tools.json +3146 -0
- package/skills/ck-mcp-management/references/configuration.md +114 -0
- package/skills/ck-mcp-management/references/gemini-cli-integration.md +215 -0
- package/skills/ck-mcp-management/references/mcp-protocol.md +116 -0
- package/skills/ck-mcp-management/scripts/.env.example +10 -0
- package/skills/ck-mcp-management/scripts/cli.ts +195 -0
- package/skills/ck-mcp-management/scripts/dist/analyze-tools.js +70 -0
- package/skills/ck-mcp-management/scripts/dist/cli.js +160 -0
- package/skills/ck-mcp-management/scripts/dist/mcp-client.js +183 -0
- package/skills/ck-mcp-management/scripts/mcp-client.ts +230 -0
- package/skills/ck-mcp-management/scripts/package.json +20 -0
- package/skills/ck-mcp-management/scripts/tsconfig.json +15 -0
- package/skills/ck-media-processing/SKILL.md +90 -0
- package/skills/ck-media-processing/references/common-workflows.md +132 -0
- package/skills/ck-media-processing/references/ffmpeg-encoding.md +358 -0
- package/skills/ck-media-processing/references/ffmpeg-filters.md +503 -0
- package/skills/ck-media-processing/references/ffmpeg-streaming.md +403 -0
- package/skills/ck-media-processing/references/format-compatibility.md +375 -0
- package/skills/ck-media-processing/references/imagemagick-batch.md +612 -0
- package/skills/ck-media-processing/references/imagemagick-editing.md +623 -0
- package/skills/ck-media-processing/references/rmbg-background-removal.md +66 -0
- package/skills/ck-media-processing/references/troubleshooting.md +109 -0
- package/skills/ck-media-processing/scripts/README.md +111 -0
- package/skills/ck-media-processing/scripts/batch-remove-background.sh +124 -0
- package/skills/ck-media-processing/scripts/batch_resize.py +342 -0
- package/skills/ck-media-processing/scripts/media_convert.py +311 -0
- package/skills/ck-media-processing/scripts/remove-background.sh +96 -0
- package/skills/ck-media-processing/scripts/remove-bg-node.js +158 -0
- package/skills/ck-media-processing/scripts/requirements.txt +24 -0
- package/skills/ck-media-processing/scripts/tests/.coverage +0 -0
- package/skills/ck-media-processing/scripts/tests/requirements.txt +2 -0
- package/skills/ck-media-processing/scripts/tests/test_batch_resize.py +372 -0
- package/skills/ck-media-processing/scripts/tests/test_media_convert.py +259 -0
- package/skills/ck-media-processing/scripts/tests/test_video_optimize.py +397 -0
- package/skills/ck-media-processing/scripts/video_optimize.py +414 -0
- package/skills/ck-mobile-development/SKILL.md +210 -0
- package/skills/ck-mobile-development/references/mobile-android.md +604 -0
- package/skills/ck-mobile-development/references/mobile-best-practices.md +545 -0
- package/skills/ck-mobile-development/references/mobile-debugging.md +1089 -0
- package/skills/ck-mobile-development/references/mobile-frameworks.md +465 -0
- package/skills/ck-mobile-development/references/mobile-ios.md +496 -0
- package/skills/ck-mobile-development/references/mobile-mindset.md +544 -0
- package/skills/ck-payment-integration/README.md +185 -0
- package/skills/ck-payment-integration/SKILL.md +116 -0
- package/skills/ck-payment-integration/references/polar/benefits.md +396 -0
- package/skills/ck-payment-integration/references/polar/best-practices.md +482 -0
- package/skills/ck-payment-integration/references/polar/checkouts.md +266 -0
- package/skills/ck-payment-integration/references/polar/overview.md +184 -0
- package/skills/ck-payment-integration/references/polar/products.md +244 -0
- package/skills/ck-payment-integration/references/polar/sdk.md +436 -0
- package/skills/ck-payment-integration/references/polar/subscriptions.md +340 -0
- package/skills/ck-payment-integration/references/polar/webhooks.md +405 -0
- package/skills/ck-payment-integration/references/sepay/api.md +140 -0
- package/skills/ck-payment-integration/references/sepay/best-practices.md +337 -0
- package/skills/ck-payment-integration/references/sepay/overview.md +138 -0
- package/skills/ck-payment-integration/references/sepay/qr-codes.md +228 -0
- package/skills/ck-payment-integration/references/sepay/sdk.md +213 -0
- package/skills/ck-payment-integration/references/sepay/webhooks.md +208 -0
- package/skills/ck-payment-integration/scripts/.env.example +20 -0
- package/skills/ck-payment-integration/scripts/checkout-helper.js +244 -0
- package/skills/ck-payment-integration/scripts/package.json +17 -0
- package/skills/ck-payment-integration/scripts/polar-webhook-verify.js +202 -0
- package/skills/ck-payment-integration/scripts/sepay-webhook-verify.js +193 -0
- package/skills/ck-payment-integration/scripts/test-scripts.js +237 -0
- package/skills/ck-planning/SKILL.md +79 -49
- package/skills/ck-planning/references/codebase-understanding.md +62 -0
- package/skills/ck-planning/references/output-standards.md +127 -0
- package/skills/ck-planning/references/plan-organization.md +122 -60
- package/skills/ck-planning/references/research-phase.md +49 -56
- package/skills/ck-planning/references/solution-design.md +61 -63
- package/skills/ck-problem-solving/SKILL.md +95 -0
- package/skills/ck-problem-solving/references/attribution.md +69 -0
- package/skills/ck-problem-solving/references/collision-zone-thinking.md +79 -0
- package/skills/ck-problem-solving/references/inversion-exercise.md +91 -0
- package/skills/ck-problem-solving/references/meta-pattern-recognition.md +87 -0
- package/skills/ck-problem-solving/references/scale-game.md +95 -0
- package/skills/ck-problem-solving/references/simplification-cascades.md +80 -0
- package/skills/ck-problem-solving/references/when-stuck.md +72 -0
- package/skills/ck-repomix/SKILL.md +247 -0
- package/skills/ck-repomix/references/configuration.md +211 -0
- package/skills/ck-repomix/references/usage-patterns.md +232 -0
- package/skills/ck-repomix/scripts/.coverage +0 -0
- package/skills/ck-repomix/scripts/README.md +179 -0
- package/skills/ck-repomix/scripts/repomix_batch.py +455 -0
- package/skills/ck-repomix/scripts/repos.example.json +15 -0
- package/skills/ck-repomix/scripts/requirements.txt +15 -0
- package/skills/ck-repomix/scripts/tests/test_repomix_batch.py +531 -0
- package/skills/ck-sequential-thinking/.env.example +8 -0
- package/skills/ck-sequential-thinking/README.md +183 -0
- package/skills/ck-sequential-thinking/SKILL.md +14 -2
- package/skills/ck-sequential-thinking/package.json +31 -0
- package/skills/ck-sequential-thinking/references/advanced-strategies.md +79 -0
- package/skills/ck-sequential-thinking/references/advanced-techniques.md +2 -14
- package/skills/ck-sequential-thinking/references/core-patterns.md +8 -0
- package/skills/ck-sequential-thinking/references/examples-api.md +88 -0
- package/skills/ck-sequential-thinking/references/examples-architecture.md +94 -0
- package/skills/ck-sequential-thinking/references/examples-debug.md +90 -0
- package/skills/ck-sequential-thinking/scripts/format-thought.js +159 -0
- package/skills/ck-sequential-thinking/scripts/process-thought.js +236 -0
- package/skills/ck-sequential-thinking/tests/format-thought.test.js +133 -0
- package/skills/ck-sequential-thinking/tests/process-thought.test.js +215 -0
- package/skills/ck-shopify/README.md +66 -0
- package/skills/ck-shopify/SKILL.md +319 -0
- package/skills/ck-shopify/references/app-development.md +470 -0
- package/skills/ck-shopify/references/extensions.md +493 -0
- package/skills/ck-shopify/references/themes.md +498 -0
- package/skills/ck-shopify/scripts/.coverage +0 -0
- package/skills/ck-shopify/scripts/requirements.txt +19 -0
- package/skills/ck-shopify/scripts/shopify_init.py +423 -0
- package/skills/ck-shopify/scripts/tests/.coverage +0 -0
- package/skills/ck-shopify/scripts/tests/test_shopify_init.py +385 -0
- package/skills/ck-skill-creator/LICENSE.txt +202 -0
- package/skills/ck-skill-creator/SKILL.md +265 -0
- package/skills/ck-skill-creator/scripts/init_skill.py +303 -0
- package/skills/ck-skill-creator/scripts/package_skill.py +110 -0
- package/skills/ck-skill-creator/scripts/quick_validate.py +65 -0
- package/skills/ck-threejs/SKILL.md +87 -0
- package/skills/ck-threejs/references/01-getting-started.md +177 -0
- package/skills/ck-threejs/references/02-loaders.md +169 -0
- package/skills/ck-threejs/references/03-textures.md +170 -0
- package/skills/ck-threejs/references/04-cameras.md +195 -0
- package/skills/ck-threejs/references/05-lights.md +183 -0
- package/skills/ck-threejs/references/06-animations.md +214 -0
- package/skills/ck-threejs/references/07-math.md +260 -0
- package/skills/ck-threejs/references/08-interaction.md +267 -0
- package/skills/ck-threejs/references/09-postprocessing.md +240 -0
- package/skills/ck-threejs/references/10-controls.md +259 -0
- package/skills/ck-threejs/references/11-materials-advanced.md +270 -0
- package/skills/ck-threejs/references/12-performance.md +269 -0
- package/skills/ck-threejs/references/13-node-materials.md +298 -0
- package/skills/ck-threejs/references/14-physics-vr.md +304 -0
- package/skills/ck-threejs/references/15-specialized-loaders.md +333 -0
- package/skills/ck-threejs/references/16-webgpu.md +302 -0
- package/skills/ck-ui-styling/LICENSE.txt +202 -0
- package/skills/ck-ui-styling/SKILL.md +319 -0
- package/skills/ck-ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/ck-ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/ck-ui-styling/references/canvas-design-system.md +320 -0
- package/skills/ck-ui-styling/references/shadcn-accessibility.md +471 -0
- package/skills/ck-ui-styling/references/shadcn-components.md +424 -0
- package/skills/ck-ui-styling/references/shadcn-theming.md +373 -0
- package/skills/ck-ui-styling/references/tailwind-customization.md +483 -0
- package/skills/ck-ui-styling/references/tailwind-responsive.md +382 -0
- package/skills/ck-ui-styling/references/tailwind-utilities.md +455 -0
- package/skills/ck-ui-styling/scripts/.coverage +0 -0
- package/skills/ck-ui-styling/scripts/requirements.txt +17 -0
- package/skills/ck-ui-styling/scripts/shadcn_add.py +292 -0
- package/skills/ck-ui-styling/scripts/tailwind_config_gen.py +456 -0
- package/skills/ck-ui-styling/scripts/tests/coverage-ui.json +1 -0
- package/skills/ck-ui-styling/scripts/tests/requirements.txt +3 -0
- package/skills/ck-ui-styling/scripts/tests/test_shadcn_add.py +266 -0
- package/skills/ck-ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
- package/skills/ck-ui-ux-pro-max/SKILL.md +227 -0
- package/skills/ck-ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/ck-ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/ck-ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/ck-ui-ux-pro-max/data/products.csv +97 -0
- package/skills/ck-ui-ux-pro-max/data/prompts.csv +24 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/html-tailwind.csv +51 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/ck-ui-ux-pro-max/data/styles.csv +59 -0
- package/skills/ck-ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/ck-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/ck-ui-ux-pro-max/scripts/core.py +236 -0
- package/skills/ck-ui-ux-pro-max/scripts/search.py +76 -0
- package/skills/ck-web-frameworks/SKILL.md +322 -0
- package/skills/ck-web-frameworks/references/nextjs-app-router.md +465 -0
- package/skills/ck-web-frameworks/references/nextjs-data-fetching.md +459 -0
- package/skills/ck-web-frameworks/references/nextjs-optimization.md +511 -0
- package/skills/ck-web-frameworks/references/nextjs-server-components.md +495 -0
- package/skills/ck-web-frameworks/references/remix-icon-integration.md +603 -0
- package/skills/ck-web-frameworks/references/turborepo-caching.md +551 -0
- package/skills/ck-web-frameworks/references/turborepo-pipelines.md +517 -0
- package/skills/ck-web-frameworks/references/turborepo-setup.md +542 -0
- package/skills/ck-web-frameworks/scripts/.coverage +0 -0
- package/skills/ck-web-frameworks/scripts/__init__.py +0 -0
- package/skills/ck-web-frameworks/scripts/nextjs_init.py +547 -0
- package/skills/ck-web-frameworks/scripts/requirements.txt +16 -0
- package/skills/ck-web-frameworks/scripts/tests/coverage-web.json +1 -0
- package/skills/ck-web-frameworks/scripts/tests/requirements.txt +3 -0
- package/skills/ck-web-frameworks/scripts/tests/test_nextjs_init.py +319 -0
- package/skills/ck-web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -0
- package/skills/ck-web-frameworks/scripts/turborepo_migrate.py +394 -0
- package/src/commands/init.js +61 -30
- package/src/utils/paths.js +35 -4
|
@@ -1,65 +1,122 @@
|
|
|
1
1
|
# Root Cause Tracing
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Systematically trace bugs backward through call stack to find original trigger.
|
|
4
4
|
|
|
5
|
-
## Core
|
|
5
|
+
## Core Principle
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**Trace backward through call chain until finding original trigger, then fix at source.**
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Bugs often manifest deep in call stack (git init in wrong directory, file created in wrong location). Instinct is to fix where error appears, but that's treating symptom.
|
|
10
10
|
|
|
11
|
-
When
|
|
11
|
+
## When to Use
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
**Use when:**
|
|
14
|
+
- Error happens deep in execution (not at entry point)
|
|
15
|
+
- Stack trace shows long call chain
|
|
16
|
+
- Unclear where invalid data originated
|
|
17
|
+
- Need to find which test/code triggers problem
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
- What function called this?
|
|
19
|
-
- What set this variable?
|
|
19
|
+
## The Tracing Process
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
### 1. Observe the Symptom
|
|
22
|
+
```
|
|
23
|
+
Error: git init failed in /Users/jesse/project/packages/core
|
|
24
|
+
```
|
|
24
25
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
### 2. Find Immediate Cause
|
|
27
|
+
What code directly causes this?
|
|
28
|
+
```typescript
|
|
29
|
+
await execFileAsync('git', ['init'], { cwd: projectDir });
|
|
30
|
+
```
|
|
28
31
|
|
|
29
|
-
|
|
32
|
+
### 3. Ask: What Called This?
|
|
33
|
+
```typescript
|
|
34
|
+
WorktreeManager.createSessionWorktree(projectDir, sessionId)
|
|
35
|
+
→ called by Session.initializeWorkspace()
|
|
36
|
+
→ called by Session.create()
|
|
37
|
+
→ called by test at Project.create()
|
|
38
|
+
```
|
|
30
39
|
|
|
40
|
+
### 4. Keep Tracing Up
|
|
41
|
+
What value was passed?
|
|
42
|
+
- `projectDir = ''` (empty string!)
|
|
43
|
+
- Empty string as `cwd` resolves to `process.cwd()`
|
|
44
|
+
- That's the source code directory!
|
|
45
|
+
|
|
46
|
+
### 5. Find Original Trigger
|
|
47
|
+
Where did empty string come from?
|
|
48
|
+
```typescript
|
|
49
|
+
const context = setupCoreTest(); // Returns { tempDir: '' }
|
|
50
|
+
Project.create('name', context.tempDir); // Accessed before beforeEach!
|
|
31
51
|
```
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
52
|
+
|
|
53
|
+
## Adding Stack Traces
|
|
54
|
+
|
|
55
|
+
When can't trace manually, add instrumentation:
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
async function gitInit(directory: string) {
|
|
59
|
+
const stack = new Error().stack;
|
|
60
|
+
console.error('DEBUG git init:', {
|
|
61
|
+
directory,
|
|
62
|
+
cwd: process.cwd(),
|
|
63
|
+
stack,
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
await execFileAsync('git', ['init'], { cwd: directory });
|
|
67
|
+
}
|
|
37
68
|
```
|
|
38
69
|
|
|
39
|
-
**
|
|
40
|
-
|
|
70
|
+
**Critical:** Use `console.error()` in tests (not logger - may not show)
|
|
71
|
+
|
|
72
|
+
**Run and capture:**
|
|
73
|
+
```bash
|
|
74
|
+
npm test 2>&1 | grep 'DEBUG git init'
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Analyze stack traces:**
|
|
78
|
+
- Look for test file names
|
|
79
|
+
- Find line number triggering call
|
|
80
|
+
- Identify pattern (same test? same parameter?)
|
|
81
|
+
|
|
82
|
+
## Finding Which Test Causes Pollution
|
|
83
|
+
|
|
84
|
+
If something appears during tests but don't know which test:
|
|
85
|
+
|
|
86
|
+
Use bisection script: `scripts/find-polluter.sh`
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
./scripts/find-polluter.sh '.git' 'src/**/*.test.ts'
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Runs tests one-by-one, stops at first polluter.
|
|
93
|
+
|
|
94
|
+
## Key Principle
|
|
95
|
+
|
|
96
|
+
**NEVER fix just where error appears.** Trace back to find original trigger.
|
|
41
97
|
|
|
42
|
-
|
|
98
|
+
When found immediate cause:
|
|
99
|
+
- Can trace one level up? → Trace backwards
|
|
100
|
+
- Is this the source? → Fix at source
|
|
101
|
+
- Then add validation at each layer (see defense-in-depth.md)
|
|
43
102
|
|
|
44
|
-
|
|
45
|
-
- What is the value here?
|
|
46
|
-
- Is it what I expect?
|
|
47
|
-
- Who set it / passed it?
|
|
48
|
-
- Was it validated?
|
|
103
|
+
## Real Example
|
|
49
104
|
|
|
50
|
-
|
|
105
|
+
**Symptom:** `.git` created in `packages/core/` (source code)
|
|
51
106
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
107
|
+
**Trace chain:**
|
|
108
|
+
1. `git init` runs in `process.cwd()` ← empty cwd parameter
|
|
109
|
+
2. WorktreeManager called with empty projectDir
|
|
110
|
+
3. Session.create() passed empty string
|
|
111
|
+
4. Test accessed `context.tempDir` before beforeEach
|
|
112
|
+
5. setupCoreTest() returns `{ tempDir: '' }` initially
|
|
56
113
|
|
|
57
|
-
|
|
114
|
+
**Root cause:** Top-level variable initialization accessing empty value
|
|
58
115
|
|
|
59
|
-
|
|
116
|
+
**Fix:** Made tempDir a getter that throws if accessed before beforeEach
|
|
60
117
|
|
|
61
|
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
118
|
+
**Also added defense-in-depth:**
|
|
119
|
+
- Layer 1: Project.create() validates directory
|
|
120
|
+
- Layer 2: WorkspaceManager validates not empty
|
|
121
|
+
- Layer 3: NODE_ENV guard refuses git init outside tmpdir
|
|
122
|
+
- Layer 4: Stack trace logging before git init
|
|
@@ -1,74 +1,102 @@
|
|
|
1
1
|
# Systematic Debugging
|
|
2
2
|
|
|
3
|
-
Four-phase framework
|
|
3
|
+
Four-phase debugging framework that ensures root cause investigation before attempting fixes.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## The Iron Law
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
```
|
|
8
|
+
NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
|
|
9
|
+
```
|
|
8
10
|
|
|
9
|
-
1
|
|
10
|
-
- Stack trace, line numbers, error type
|
|
11
|
-
- Don't skim - read word by word
|
|
11
|
+
If haven't completed Phase 1, cannot propose fixes.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
- Can you trigger it reliably?
|
|
15
|
-
- What are the exact steps?
|
|
13
|
+
## The Four Phases
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
- What changed since it last worked?
|
|
19
|
-
- git diff, recent commits
|
|
15
|
+
Must complete each phase before proceeding to next.
|
|
20
16
|
|
|
21
|
-
|
|
22
|
-
- Add logging if needed
|
|
23
|
-
- Check inputs and outputs
|
|
24
|
-
- Don't guess - observe
|
|
17
|
+
### Phase 1: Root Cause Investigation
|
|
25
18
|
|
|
26
|
-
|
|
19
|
+
**BEFORE attempting ANY fix:**
|
|
27
20
|
|
|
28
|
-
1. **
|
|
29
|
-
|
|
30
|
-
|
|
21
|
+
1. **Read Error Messages Carefully** - Don't skip past errors/warnings, read stack traces completely
|
|
22
|
+
2. **Reproduce Consistently** - Can trigger reliably? Exact steps? If not reproducible → gather more data
|
|
23
|
+
3. **Check Recent Changes** - What changed? Git diff, recent commits, new dependencies, config changes
|
|
24
|
+
4. **Gather Evidence in Multi-Component Systems**
|
|
25
|
+
- For EACH component boundary: log data entering/exiting, verify environment propagation
|
|
26
|
+
- Run once to gather evidence showing WHERE it breaks
|
|
27
|
+
- THEN analyze to identify failing component
|
|
28
|
+
5. **Trace Data Flow** - Where does bad value originate? Trace up call stack until finding source (see root-cause-tracing.md)
|
|
31
29
|
|
|
32
|
-
2
|
|
33
|
-
- Line by line comparison
|
|
34
|
-
- What's different?
|
|
30
|
+
### Phase 2: Pattern Analysis
|
|
35
31
|
|
|
36
|
-
|
|
37
|
-
- What's the minimal difference?
|
|
38
|
-
- What assumption changed?
|
|
32
|
+
**Find pattern before fixing:**
|
|
39
33
|
|
|
40
|
-
|
|
34
|
+
1. **Find Working Examples** - Locate similar working code in same codebase
|
|
35
|
+
2. **Compare Against References** - Read reference implementation COMPLETELY, understand fully before applying
|
|
36
|
+
3. **Identify Differences** - List every difference however small, don't assume "that can't matter"
|
|
37
|
+
4. **Understand Dependencies** - What other components, settings, config, environment needed?
|
|
41
38
|
|
|
42
|
-
|
|
43
|
-
- "The bug is caused by X because Y"
|
|
44
|
-
- Must be testable
|
|
39
|
+
### Phase 3: Hypothesis and Testing
|
|
45
40
|
|
|
46
|
-
|
|
47
|
-
- Smallest change to prove/disprove
|
|
48
|
-
- Don't fix yet - just test theory
|
|
41
|
+
**Scientific method:**
|
|
49
42
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
43
|
+
1. **Form Single Hypothesis** - "I think X is root cause because Y", be specific not vague
|
|
44
|
+
2. **Test Minimally** - SMALLEST possible change to test hypothesis, one variable at a time
|
|
45
|
+
3. **Verify Before Continuing** - Worked? → Phase 4. Didn't work? → NEW hypothesis. DON'T add more fixes
|
|
46
|
+
4. **When Don't Know** - Say "I don't understand X", don't pretend, ask for help
|
|
53
47
|
|
|
54
|
-
|
|
48
|
+
### Phase 4: Implementation
|
|
55
49
|
|
|
56
|
-
|
|
57
|
-
- Test should fail before fix
|
|
58
|
-
- Proves you understand bug
|
|
50
|
+
**Fix root cause, not symptom:**
|
|
59
51
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
52
|
+
1. **Create Failing Test Case** - Simplest reproduction, automated if possible, MUST have before fixing
|
|
53
|
+
2. **Implement Single Fix** - Address root cause identified, ONE change, no "while I'm here" improvements
|
|
54
|
+
3. **Verify Fix** - Test passes? No other tests broken? Issue actually resolved?
|
|
55
|
+
4. **If Fix Doesn't Work**
|
|
56
|
+
- STOP. Count: How many fixes tried?
|
|
57
|
+
- If < 3: Return to Phase 1, re-analyze with new information
|
|
58
|
+
- **If ≥ 3: STOP and question architecture**
|
|
59
|
+
5. **If 3+ Fixes Failed: Question Architecture**
|
|
60
|
+
- Pattern: Each fix reveals new shared state/coupling problem elsewhere
|
|
61
|
+
- STOP and question fundamentals: Is pattern sound? Wrong architecture?
|
|
62
|
+
- Discuss with human partner before more fixes
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
- Test passes now
|
|
66
|
-
- No regressions
|
|
67
|
-
- Fresh run, not cached
|
|
64
|
+
## Red Flags - STOP and Follow Process
|
|
68
65
|
|
|
69
|
-
|
|
66
|
+
If catch yourself thinking:
|
|
67
|
+
- "Quick fix for now, investigate later"
|
|
68
|
+
- "Just try changing X and see if it works"
|
|
69
|
+
- "Add multiple changes, run tests"
|
|
70
|
+
- "Skip the test, I'll manually verify"
|
|
71
|
+
- "It's probably X, let me fix that"
|
|
72
|
+
- "I don't fully understand but this might work"
|
|
73
|
+
- "One more fix attempt" (when already tried 2+)
|
|
70
74
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
+
**ALL mean:** STOP. Return to Phase 1.
|
|
76
|
+
|
|
77
|
+
## Human Partner Signals You're Doing It Wrong
|
|
78
|
+
|
|
79
|
+
- "Is that not happening?" - Assumed without verifying
|
|
80
|
+
- "Will it show us...?" - Should have added evidence gathering
|
|
81
|
+
- "Stop guessing" - Proposing fixes without understanding
|
|
82
|
+
- "Ultrathink this" - Question fundamentals, not just symptoms
|
|
83
|
+
- "We're stuck?" (frustrated) - Approach isn't working
|
|
84
|
+
|
|
85
|
+
**When see these:** STOP. Return to Phase 1.
|
|
86
|
+
|
|
87
|
+
## Common Rationalizations
|
|
88
|
+
|
|
89
|
+
| Excuse | Reality |
|
|
90
|
+
|--------|---------|
|
|
91
|
+
| "Issue is simple, don't need process" | Simple issues have root causes too |
|
|
92
|
+
| "Emergency, no time for process" | Systematic is FASTER than guess-and-check |
|
|
93
|
+
| "Just try this first, then investigate" | First fix sets pattern. Do right from start |
|
|
94
|
+
| "One more fix attempt" (after 2+ failures) | 3+ failures = architectural problem |
|
|
95
|
+
|
|
96
|
+
## Real-World Impact
|
|
97
|
+
|
|
98
|
+
From debugging sessions:
|
|
99
|
+
- Systematic approach: 15-30 minutes to fix
|
|
100
|
+
- Random fixes approach: 2-3 hours of thrashing
|
|
101
|
+
- First-time fix rate: 95% vs 40%
|
|
102
|
+
- New bugs introduced: Near zero vs common
|
|
@@ -1,74 +1,123 @@
|
|
|
1
|
-
# Verification
|
|
1
|
+
# Verification Before Completion
|
|
2
2
|
|
|
3
3
|
Run verification commands and confirm output before claiming success.
|
|
4
4
|
|
|
5
|
-
## Core
|
|
5
|
+
## Core Principle
|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**Evidence before claims, always.**
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Claiming work complete without verification is dishonesty, not efficiency.
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## The Iron Law
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
```
|
|
14
|
+
NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
|
|
15
|
+
```
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
- Run from clean state
|
|
17
|
-
- Don't rely on previous runs
|
|
17
|
+
If haven't run verification command in this message, cannot claim it passes.
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
## The Gate Function
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
- Check for warnings too
|
|
21
|
+
```
|
|
22
|
+
BEFORE claiming any status or expressing satisfaction:
|
|
24
23
|
|
|
25
|
-
|
|
24
|
+
1. IDENTIFY: What command proves this claim?
|
|
25
|
+
2. RUN: Execute FULL command (fresh, complete)
|
|
26
|
+
3. READ: Full output, check exit code, count failures
|
|
27
|
+
4. VERIFY: Does output confirm claim?
|
|
28
|
+
- If NO: State actual status with evidence
|
|
29
|
+
- If YES: State claim WITH evidence
|
|
30
|
+
5. ONLY THEN: Make claim
|
|
31
|
+
|
|
32
|
+
Skip any step = lying, not verifying
|
|
33
|
+
```
|
|
26
34
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
35
|
+
## Common Failures
|
|
36
|
+
|
|
37
|
+
| Claim | Requires | Not Sufficient |
|
|
38
|
+
|-------|----------|----------------|
|
|
39
|
+
| Tests pass | Test command output: 0 failures | Previous run, "should pass" |
|
|
40
|
+
| Linter clean | Linter output: 0 errors | Partial check, extrapolation |
|
|
41
|
+
| Build succeeds | Build command: exit 0 | Linter passing, logs look good |
|
|
42
|
+
| Bug fixed | Test original symptom: passes | Code changed, assumed fixed |
|
|
43
|
+
| Regression test works | Red-green cycle verified | Test passes once |
|
|
44
|
+
| Agent completed | VCS diff shows changes | Agent reports "success" |
|
|
45
|
+
| Requirements met | Line-by-line checklist | Tests passing |
|
|
46
|
+
|
|
47
|
+
## Red Flags - STOP
|
|
48
|
+
|
|
49
|
+
- Using "should", "probably", "seems to"
|
|
50
|
+
- Expressing satisfaction before verification ("Great!", "Perfect!", "Done!")
|
|
51
|
+
- About to commit/push/PR without verification
|
|
52
|
+
- Trusting agent success reports
|
|
53
|
+
- Relying on partial verification
|
|
54
|
+
- Thinking "just this once"
|
|
55
|
+
- Tired and wanting work over
|
|
56
|
+
- **ANY wording implying success without having run verification**
|
|
57
|
+
|
|
58
|
+
## Rationalization Prevention
|
|
59
|
+
|
|
60
|
+
| Excuse | Reality |
|
|
61
|
+
|--------|---------|
|
|
62
|
+
| "Should work now" | RUN verification |
|
|
63
|
+
| "I'm confident" | Confidence ≠ evidence |
|
|
64
|
+
| "Just this once" | No exceptions |
|
|
65
|
+
| "Linter passed" | Linter ≠ compiler |
|
|
66
|
+
| "Agent said success" | Verify independently |
|
|
67
|
+
| "Partial check is enough" | Partial proves nothing |
|
|
68
|
+
|
|
69
|
+
## Key Patterns
|
|
70
|
+
|
|
71
|
+
**Tests:**
|
|
72
|
+
```
|
|
73
|
+
✅ [Run test command] [See: 34/34 pass] "All tests pass"
|
|
74
|
+
❌ "Should pass now" / "Looks correct"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Regression tests (TDD Red-Green):**
|
|
78
|
+
```
|
|
79
|
+
✅ Write → Run (pass) → Revert fix → Run (MUST FAIL) → Restore → Run (pass)
|
|
80
|
+
❌ "I've written regression test" (without red-green verification)
|
|
81
|
+
```
|
|
30
82
|
|
|
31
|
-
|
|
83
|
+
**Build:**
|
|
84
|
+
```
|
|
85
|
+
✅ [Run build] [See: exit 0] "Build passes"
|
|
86
|
+
❌ "Linter passed" (linter doesn't check compilation)
|
|
87
|
+
```
|
|
32
88
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
89
|
+
**Requirements:**
|
|
90
|
+
```
|
|
91
|
+
✅ Re-read plan → Create checklist → Verify each → Report gaps or completion
|
|
92
|
+
❌ "Tests pass, phase complete"
|
|
93
|
+
```
|
|
36
94
|
|
|
37
|
-
|
|
95
|
+
**Agent delegation:**
|
|
96
|
+
```
|
|
97
|
+
✅ Agent reports success → Check VCS diff → Verify changes → Report actual state
|
|
98
|
+
❌ Trust agent report
|
|
99
|
+
```
|
|
38
100
|
|
|
39
|
-
|
|
40
|
-
- [ ] Tests pass (fresh run)
|
|
41
|
-
- [ ] No new errors in logs
|
|
42
|
-
- [ ] Feature works manually
|
|
43
|
-
- [ ] Edge cases handled
|
|
101
|
+
## When To Apply
|
|
44
102
|
|
|
45
|
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
103
|
+
**ALWAYS before:**
|
|
104
|
+
- ANY variation of success/completion claims
|
|
105
|
+
- ANY expression of satisfaction
|
|
106
|
+
- ANY positive statement about work state
|
|
107
|
+
- Committing, PR creation, task completion
|
|
108
|
+
- Moving to next task
|
|
109
|
+
- Delegating to agents
|
|
50
110
|
|
|
51
|
-
|
|
111
|
+
**Rule applies to:**
|
|
112
|
+
- Exact phrases
|
|
113
|
+
- Paraphrases and synonyms
|
|
114
|
+
- Implications of success
|
|
115
|
+
- ANY communication suggesting completion/correctness
|
|
52
116
|
|
|
53
|
-
|
|
54
|
-
- "Tests passed earlier"
|
|
55
|
-
- "It worked on my machine"
|
|
56
|
-
- "Should be fine now"
|
|
57
|
-
- Skipping verification because confident
|
|
117
|
+
## The Bottom Line
|
|
58
118
|
|
|
59
|
-
**
|
|
60
|
-
- Run fresh every time
|
|
61
|
-
- Read actual output
|
|
62
|
-
- Verify on clean state
|
|
63
|
-
- Question assumptions
|
|
119
|
+
**No shortcuts for verification.**
|
|
64
120
|
|
|
65
|
-
|
|
121
|
+
Run command. Read output. THEN claim result.
|
|
66
122
|
|
|
67
|
-
|
|
68
|
-
[ ] Ran command fresh (not cached)
|
|
69
|
-
[ ] Read full output (not skimmed)
|
|
70
|
-
[ ] Output matches expectations
|
|
71
|
-
[ ] No warnings or errors
|
|
72
|
-
[ ] Tested edge case
|
|
73
|
-
[ ] Documented result
|
|
74
|
-
```
|
|
123
|
+
Non-negotiable.
|
|
@@ -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
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# find-polluter.sh Test Documentation
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Bisection script to find which test creates unwanted files or state pollution.
|
|
5
|
+
|
|
6
|
+
## Manual Test Procedure
|
|
7
|
+
|
|
8
|
+
### Setup Test Scenario
|
|
9
|
+
```bash
|
|
10
|
+
# Create test directory
|
|
11
|
+
mkdir -p /tmp/polluter-test && cd /tmp/polluter-test
|
|
12
|
+
|
|
13
|
+
# Create clean test
|
|
14
|
+
cat > test1.test.js << 'EOF'
|
|
15
|
+
console.log('Test 1: clean');
|
|
16
|
+
EOF
|
|
17
|
+
|
|
18
|
+
# Create polluter test
|
|
19
|
+
cat > test2.test.js << 'EOF'
|
|
20
|
+
const fs = require('fs');
|
|
21
|
+
fs.mkdirSync('.git', { recursive: true });
|
|
22
|
+
console.log('Test 2: creates pollution');
|
|
23
|
+
EOF
|
|
24
|
+
|
|
25
|
+
# Create another clean test
|
|
26
|
+
cat > test3.test.js << 'EOF'
|
|
27
|
+
console.log('Test 3: clean');
|
|
28
|
+
EOF
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Run Script
|
|
32
|
+
```bash
|
|
33
|
+
# For projects with npm test
|
|
34
|
+
/path/to/find-polluter.sh '.git' 'src/**/*.test.ts'
|
|
35
|
+
|
|
36
|
+
# For node-only tests (modify script to use 'node' instead of 'npm test')
|
|
37
|
+
./find-polluter.sh '.git' '*.test.js'
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Expected Output
|
|
41
|
+
```
|
|
42
|
+
🔍 Searching for test that creates: .git
|
|
43
|
+
Test pattern: *.test.js
|
|
44
|
+
|
|
45
|
+
Found 3 test files
|
|
46
|
+
|
|
47
|
+
[1/3] Testing: ./test1.test.js
|
|
48
|
+
[2/3] Testing: ./test2.test.js
|
|
49
|
+
|
|
50
|
+
🎯 FOUND POLLUTER!
|
|
51
|
+
Test: ./test2.test.js
|
|
52
|
+
Created: .git
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Cleanup
|
|
56
|
+
```bash
|
|
57
|
+
rm -rf /tmp/polluter-test
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Test Results
|
|
61
|
+
|
|
62
|
+
✅ Script logic verified (2025-11-11)
|
|
63
|
+
- Correctly iterates through test files
|
|
64
|
+
- Detects pollution creation
|
|
65
|
+
- Reports the polluting test file
|
|
66
|
+
- Exits early when polluter found
|
|
67
|
+
|
|
68
|
+
## Usage Notes
|
|
69
|
+
|
|
70
|
+
**Prerequisites:**
|
|
71
|
+
- Test runner (npm test) must be configured in project
|
|
72
|
+
- Test pattern must match actual test files
|
|
73
|
+
- Pollution path must be accurate
|
|
74
|
+
|
|
75
|
+
**Customization:**
|
|
76
|
+
If your project doesn't use `npm test`, modify line 42:
|
|
77
|
+
```bash
|
|
78
|
+
# Replace
|
|
79
|
+
npm test "$TEST_FILE" > /dev/null 2>&1 || true
|
|
80
|
+
|
|
81
|
+
# With your test command
|
|
82
|
+
node "$TEST_FILE" > /dev/null 2>&1 || true
|
|
83
|
+
# Or
|
|
84
|
+
jest "$TEST_FILE" > /dev/null 2>&1 || true
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Common Use Cases
|
|
88
|
+
|
|
89
|
+
1. **Find test creating .git directory:**
|
|
90
|
+
```bash
|
|
91
|
+
./find-polluter.sh '.git' 'src/**/*.test.ts'
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
2. **Find test creating node_modules:**
|
|
95
|
+
```bash
|
|
96
|
+
./find-polluter.sh 'node_modules' 'test/**/*.spec.js'
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
3. **Find test creating specific file:**
|
|
100
|
+
```bash
|
|
101
|
+
./find-polluter.sh 'unwanted-file.txt' '**/*.test.js'
|
|
102
|
+
```
|