cokit-cli 1.0.1 → 1.0.2
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
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Turborepo Migration Script
|
|
4
|
+
|
|
5
|
+
Convert existing monorepo to Turborepo with intelligent pipeline generation.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import argparse
|
|
9
|
+
import json
|
|
10
|
+
import os
|
|
11
|
+
import sys
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
from typing import Dict, List, Optional, Set
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class TurborepoMigrator:
|
|
17
|
+
"""Migrate existing monorepo to Turborepo."""
|
|
18
|
+
|
|
19
|
+
def __init__(
|
|
20
|
+
self,
|
|
21
|
+
path: Path,
|
|
22
|
+
dry_run: bool = False,
|
|
23
|
+
package_manager: str = "npm",
|
|
24
|
+
):
|
|
25
|
+
"""
|
|
26
|
+
Initialize TurborepoMigrator.
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
path: Path to existing monorepo
|
|
30
|
+
dry_run: Preview changes without writing files
|
|
31
|
+
package_manager: Package manager (npm, yarn, pnpm, bun)
|
|
32
|
+
"""
|
|
33
|
+
self.path = path.resolve()
|
|
34
|
+
self.dry_run = dry_run
|
|
35
|
+
self.package_manager = package_manager
|
|
36
|
+
self.packages: List[Dict] = []
|
|
37
|
+
self.workspace_config: Dict = {}
|
|
38
|
+
|
|
39
|
+
def validate_path(self) -> None:
|
|
40
|
+
"""Validate monorepo path."""
|
|
41
|
+
if not self.path.exists():
|
|
42
|
+
raise FileNotFoundError(f"Path '{self.path}' does not exist")
|
|
43
|
+
|
|
44
|
+
if not self.path.is_dir():
|
|
45
|
+
raise NotADirectoryError(f"Path '{self.path}' is not a directory")
|
|
46
|
+
|
|
47
|
+
package_json = self.path / "package.json"
|
|
48
|
+
if not package_json.exists():
|
|
49
|
+
raise FileNotFoundError(
|
|
50
|
+
f"No package.json found in '{self.path}'. Not a valid monorepo."
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
def analyze_workspace(self) -> None:
|
|
54
|
+
"""Analyze existing workspace configuration."""
|
|
55
|
+
print("Analyzing workspace...")
|
|
56
|
+
|
|
57
|
+
package_json = self.path / "package.json"
|
|
58
|
+
with open(package_json) as f:
|
|
59
|
+
root_config = json.load(f)
|
|
60
|
+
|
|
61
|
+
# Detect workspace configuration
|
|
62
|
+
if "workspaces" in root_config:
|
|
63
|
+
self.workspace_config = {
|
|
64
|
+
"type": "npm/yarn",
|
|
65
|
+
"patterns": root_config["workspaces"],
|
|
66
|
+
}
|
|
67
|
+
elif (self.path / "pnpm-workspace.yaml").exists():
|
|
68
|
+
self.workspace_config = {
|
|
69
|
+
"type": "pnpm",
|
|
70
|
+
"file": "pnpm-workspace.yaml",
|
|
71
|
+
}
|
|
72
|
+
else:
|
|
73
|
+
raise ValueError(
|
|
74
|
+
"No workspace configuration found. Monorepo structure not detected."
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
print(f" Workspace type: {self.workspace_config['type']}")
|
|
78
|
+
|
|
79
|
+
def discover_packages(self) -> None:
|
|
80
|
+
"""Discover all packages in workspace."""
|
|
81
|
+
print("Discovering packages...")
|
|
82
|
+
|
|
83
|
+
if self.workspace_config["type"] == "npm/yarn":
|
|
84
|
+
patterns = self.workspace_config["patterns"]
|
|
85
|
+
if isinstance(patterns, dict):
|
|
86
|
+
patterns = patterns.get("packages", [])
|
|
87
|
+
else:
|
|
88
|
+
# Parse pnpm-workspace.yaml
|
|
89
|
+
yaml_file = self.path / "pnpm-workspace.yaml"
|
|
90
|
+
patterns = self._parse_pnpm_workspace(yaml_file)
|
|
91
|
+
|
|
92
|
+
# Find all packages matching patterns
|
|
93
|
+
for pattern in patterns:
|
|
94
|
+
self._find_packages_by_pattern(pattern)
|
|
95
|
+
|
|
96
|
+
print(f" Found {len(self.packages)} packages")
|
|
97
|
+
for pkg in self.packages:
|
|
98
|
+
print(f" - {pkg['name']} ({pkg['path'].relative_to(self.path)})")
|
|
99
|
+
|
|
100
|
+
def _parse_pnpm_workspace(self, yaml_file: Path) -> List[str]:
|
|
101
|
+
"""Parse pnpm-workspace.yaml file."""
|
|
102
|
+
patterns = []
|
|
103
|
+
with open(yaml_file) as f:
|
|
104
|
+
in_packages = False
|
|
105
|
+
for line in f:
|
|
106
|
+
line = line.strip()
|
|
107
|
+
if line.startswith("packages:"):
|
|
108
|
+
in_packages = True
|
|
109
|
+
continue
|
|
110
|
+
if in_packages and line.startswith("- "):
|
|
111
|
+
pattern = line[2:].strip().strip("'\"")
|
|
112
|
+
patterns.append(pattern)
|
|
113
|
+
return patterns
|
|
114
|
+
|
|
115
|
+
def _find_packages_by_pattern(self, pattern: str) -> None:
|
|
116
|
+
"""Find packages matching glob pattern."""
|
|
117
|
+
import glob
|
|
118
|
+
|
|
119
|
+
# Convert pattern to absolute path
|
|
120
|
+
search_pattern = str(self.path / pattern)
|
|
121
|
+
|
|
122
|
+
for match in glob.glob(search_pattern):
|
|
123
|
+
match_path = Path(match)
|
|
124
|
+
package_json = match_path / "package.json"
|
|
125
|
+
|
|
126
|
+
if package_json.exists():
|
|
127
|
+
with open(package_json) as f:
|
|
128
|
+
pkg_data = json.load(f)
|
|
129
|
+
|
|
130
|
+
self.packages.append(
|
|
131
|
+
{
|
|
132
|
+
"name": pkg_data.get("name", match_path.name),
|
|
133
|
+
"path": match_path,
|
|
134
|
+
"scripts": pkg_data.get("scripts", {}),
|
|
135
|
+
"dependencies": pkg_data.get("dependencies", {}),
|
|
136
|
+
"devDependencies": pkg_data.get("devDependencies", {}),
|
|
137
|
+
}
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
def analyze_scripts(self) -> Dict[str, Set[str]]:
|
|
141
|
+
"""Analyze common scripts across packages."""
|
|
142
|
+
print("Analyzing scripts...")
|
|
143
|
+
|
|
144
|
+
script_map: Dict[str, Set[str]] = {}
|
|
145
|
+
|
|
146
|
+
for pkg in self.packages:
|
|
147
|
+
for script_name in pkg["scripts"]:
|
|
148
|
+
if script_name not in script_map:
|
|
149
|
+
script_map[script_name] = set()
|
|
150
|
+
script_map[script_name].add(pkg["name"])
|
|
151
|
+
|
|
152
|
+
common_scripts = {
|
|
153
|
+
name: packages
|
|
154
|
+
for name, packages in script_map.items()
|
|
155
|
+
if len(packages) >= 2 # Present in at least 2 packages
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
print(f" Found {len(common_scripts)} common scripts:")
|
|
159
|
+
for script, packages in common_scripts.items():
|
|
160
|
+
print(f" - {script} ({len(packages)} packages)")
|
|
161
|
+
|
|
162
|
+
return common_scripts
|
|
163
|
+
|
|
164
|
+
def generate_turbo_config(self, common_scripts: Dict[str, Set[str]]) -> Dict:
|
|
165
|
+
"""Generate turbo.json configuration."""
|
|
166
|
+
print("Generating turbo.json configuration...")
|
|
167
|
+
|
|
168
|
+
pipeline = {}
|
|
169
|
+
|
|
170
|
+
# Build task
|
|
171
|
+
if "build" in common_scripts:
|
|
172
|
+
pipeline["build"] = {
|
|
173
|
+
"dependsOn": ["^build"],
|
|
174
|
+
"outputs": self._infer_build_outputs(),
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
# Test task
|
|
178
|
+
if "test" in common_scripts:
|
|
179
|
+
pipeline["test"] = {
|
|
180
|
+
"dependsOn": ["build"],
|
|
181
|
+
"outputs": ["coverage/**"],
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
# Lint task
|
|
185
|
+
if "lint" in common_scripts:
|
|
186
|
+
pipeline["lint"] = {"dependsOn": ["^build"]}
|
|
187
|
+
|
|
188
|
+
# Typecheck task
|
|
189
|
+
if "typecheck" in common_scripts or "type-check" in common_scripts:
|
|
190
|
+
task_name = "typecheck" if "typecheck" in common_scripts else "type-check"
|
|
191
|
+
pipeline[task_name] = {"dependsOn": ["^build"]}
|
|
192
|
+
|
|
193
|
+
# Dev task
|
|
194
|
+
if "dev" in common_scripts or "start" in common_scripts:
|
|
195
|
+
dev_task = "dev" if "dev" in common_scripts else "start"
|
|
196
|
+
pipeline[dev_task] = {"cache": False, "persistent": True}
|
|
197
|
+
|
|
198
|
+
# Clean task
|
|
199
|
+
if "clean" in common_scripts:
|
|
200
|
+
pipeline["clean"] = {"cache": False}
|
|
201
|
+
|
|
202
|
+
turbo_config = {
|
|
203
|
+
"$schema": "https://turbo.build/schema.json",
|
|
204
|
+
"globalDependencies": ["**/.env.*local"],
|
|
205
|
+
"pipeline": pipeline,
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return turbo_config
|
|
209
|
+
|
|
210
|
+
def _infer_build_outputs(self) -> List[str]:
|
|
211
|
+
"""Infer build output directories from packages."""
|
|
212
|
+
outputs = set()
|
|
213
|
+
|
|
214
|
+
for pkg in self.packages:
|
|
215
|
+
pkg_path = pkg["path"]
|
|
216
|
+
|
|
217
|
+
# Check common output directories
|
|
218
|
+
if (pkg_path / "dist").exists():
|
|
219
|
+
outputs.add("dist/**")
|
|
220
|
+
if (pkg_path / "build").exists():
|
|
221
|
+
outputs.add("build/**")
|
|
222
|
+
if (pkg_path / ".next").exists():
|
|
223
|
+
outputs.add(".next/**")
|
|
224
|
+
outputs.add("!.next/cache/**")
|
|
225
|
+
if (pkg_path / "out").exists():
|
|
226
|
+
outputs.add("out/**")
|
|
227
|
+
|
|
228
|
+
return sorted(list(outputs)) or ["dist/**"]
|
|
229
|
+
|
|
230
|
+
def update_root_package_json(self) -> Dict:
|
|
231
|
+
"""Update root package.json with Turborepo scripts."""
|
|
232
|
+
print("Updating root package.json...")
|
|
233
|
+
|
|
234
|
+
package_json_path = self.path / "package.json"
|
|
235
|
+
with open(package_json_path) as f:
|
|
236
|
+
package_json = json.load(f)
|
|
237
|
+
|
|
238
|
+
# Add turbo to devDependencies
|
|
239
|
+
if "devDependencies" not in package_json:
|
|
240
|
+
package_json["devDependencies"] = {}
|
|
241
|
+
|
|
242
|
+
package_json["devDependencies"]["turbo"] = "latest"
|
|
243
|
+
|
|
244
|
+
# Update scripts to use turbo
|
|
245
|
+
if "scripts" not in package_json:
|
|
246
|
+
package_json["scripts"] = {}
|
|
247
|
+
|
|
248
|
+
common_tasks = ["build", "dev", "test", "lint", "typecheck", "clean"]
|
|
249
|
+
for task in common_tasks:
|
|
250
|
+
# Check if task exists in any package
|
|
251
|
+
if any(task in pkg["scripts"] for pkg in self.packages):
|
|
252
|
+
package_json["scripts"][task] = f"turbo run {task}"
|
|
253
|
+
|
|
254
|
+
return package_json
|
|
255
|
+
|
|
256
|
+
def generate_migration_report(
|
|
257
|
+
self, turbo_config: Dict, updated_package_json: Dict
|
|
258
|
+
) -> str:
|
|
259
|
+
"""Generate migration report."""
|
|
260
|
+
report = []
|
|
261
|
+
|
|
262
|
+
report.append("=" * 60)
|
|
263
|
+
report.append("TURBOREPO MIGRATION REPORT")
|
|
264
|
+
report.append("=" * 60)
|
|
265
|
+
report.append("")
|
|
266
|
+
|
|
267
|
+
report.append(f"Monorepo Path: {self.path}")
|
|
268
|
+
report.append(f"Package Manager: {self.package_manager}")
|
|
269
|
+
report.append(f"Total Packages: {len(self.packages)}")
|
|
270
|
+
report.append("")
|
|
271
|
+
|
|
272
|
+
report.append("PACKAGES:")
|
|
273
|
+
for pkg in self.packages:
|
|
274
|
+
rel_path = pkg["path"].relative_to(self.path)
|
|
275
|
+
report.append(f" - {pkg['name']} ({rel_path})")
|
|
276
|
+
report.append("")
|
|
277
|
+
|
|
278
|
+
report.append("TURBO.JSON PIPELINE:")
|
|
279
|
+
for task, config in turbo_config["pipeline"].items():
|
|
280
|
+
report.append(f" {task}:")
|
|
281
|
+
for key, value in config.items():
|
|
282
|
+
report.append(f" {key}: {value}")
|
|
283
|
+
report.append("")
|
|
284
|
+
|
|
285
|
+
report.append("ROOT PACKAGE.JSON SCRIPTS:")
|
|
286
|
+
for script, command in updated_package_json.get("scripts", {}).items():
|
|
287
|
+
report.append(f" {script}: {command}")
|
|
288
|
+
report.append("")
|
|
289
|
+
|
|
290
|
+
report.append("RECOMMENDATIONS:")
|
|
291
|
+
report.append(" 1. Review generated turbo.json pipeline configuration")
|
|
292
|
+
report.append(" 2. Adjust output directories based on your build tools")
|
|
293
|
+
report.append(" 3. Configure remote caching: turbo login && turbo link")
|
|
294
|
+
report.append(" 4. Run 'npm install' to install Turborepo")
|
|
295
|
+
report.append(" 5. Test with: turbo run build --dry-run")
|
|
296
|
+
report.append("")
|
|
297
|
+
|
|
298
|
+
if self.dry_run:
|
|
299
|
+
report.append("DRY RUN MODE: No files were modified")
|
|
300
|
+
else:
|
|
301
|
+
report.append("FILES CREATED/MODIFIED:")
|
|
302
|
+
report.append(f" - {self.path / 'turbo.json'}")
|
|
303
|
+
report.append(f" - {self.path / 'package.json'}")
|
|
304
|
+
|
|
305
|
+
report.append("")
|
|
306
|
+
report.append("=" * 60)
|
|
307
|
+
|
|
308
|
+
return "\n".join(report)
|
|
309
|
+
|
|
310
|
+
def write_files(self, turbo_config: Dict, updated_package_json: Dict) -> None:
|
|
311
|
+
"""Write configuration files."""
|
|
312
|
+
if self.dry_run:
|
|
313
|
+
print("\nDRY RUN - Files that would be created/modified:")
|
|
314
|
+
print(f" - {self.path / 'turbo.json'}")
|
|
315
|
+
print(f" - {self.path / 'package.json'}")
|
|
316
|
+
return
|
|
317
|
+
|
|
318
|
+
print("Writing files...")
|
|
319
|
+
|
|
320
|
+
# Write turbo.json
|
|
321
|
+
turbo_json_path = self.path / "turbo.json"
|
|
322
|
+
with open(turbo_json_path, "w") as f:
|
|
323
|
+
json.dump(turbo_config, f, indent=2)
|
|
324
|
+
print(f" ✓ Created {turbo_json_path}")
|
|
325
|
+
|
|
326
|
+
# Write updated package.json
|
|
327
|
+
package_json_path = self.path / "package.json"
|
|
328
|
+
with open(package_json_path, "w") as f:
|
|
329
|
+
json.dump(updated_package_json, f, indent=2)
|
|
330
|
+
print(f" ✓ Updated {package_json_path}")
|
|
331
|
+
|
|
332
|
+
def migrate(self) -> None:
|
|
333
|
+
"""Run migration process."""
|
|
334
|
+
try:
|
|
335
|
+
print(f"Migrating monorepo to Turborepo: {self.path}")
|
|
336
|
+
print(f"Dry run: {self.dry_run}")
|
|
337
|
+
print()
|
|
338
|
+
|
|
339
|
+
self.validate_path()
|
|
340
|
+
self.analyze_workspace()
|
|
341
|
+
self.discover_packages()
|
|
342
|
+
|
|
343
|
+
common_scripts = self.analyze_scripts()
|
|
344
|
+
turbo_config = self.generate_turbo_config(common_scripts)
|
|
345
|
+
updated_package_json = self.update_root_package_json()
|
|
346
|
+
|
|
347
|
+
print()
|
|
348
|
+
self.write_files(turbo_config, updated_package_json)
|
|
349
|
+
|
|
350
|
+
print()
|
|
351
|
+
report = self.generate_migration_report(turbo_config, updated_package_json)
|
|
352
|
+
print(report)
|
|
353
|
+
|
|
354
|
+
except Exception as e:
|
|
355
|
+
print(f"Error: {e}", file=sys.stderr)
|
|
356
|
+
sys.exit(1)
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
def main():
|
|
360
|
+
"""CLI entry point."""
|
|
361
|
+
parser = argparse.ArgumentParser(
|
|
362
|
+
description="Migrate existing monorepo to Turborepo"
|
|
363
|
+
)
|
|
364
|
+
parser.add_argument(
|
|
365
|
+
"--path",
|
|
366
|
+
type=Path,
|
|
367
|
+
default=Path.cwd(),
|
|
368
|
+
help="Path to monorepo (default: current directory)",
|
|
369
|
+
)
|
|
370
|
+
parser.add_argument(
|
|
371
|
+
"--dry-run",
|
|
372
|
+
action="store_true",
|
|
373
|
+
help="Preview changes without writing files",
|
|
374
|
+
)
|
|
375
|
+
parser.add_argument(
|
|
376
|
+
"--package-manager",
|
|
377
|
+
choices=["npm", "yarn", "pnpm", "bun"],
|
|
378
|
+
default="npm",
|
|
379
|
+
help="Package manager (default: npm)",
|
|
380
|
+
)
|
|
381
|
+
|
|
382
|
+
args = parser.parse_args()
|
|
383
|
+
|
|
384
|
+
migrator = TurborepoMigrator(
|
|
385
|
+
path=args.path,
|
|
386
|
+
dry_run=args.dry_run,
|
|
387
|
+
package_manager=args.package_manager,
|
|
388
|
+
)
|
|
389
|
+
|
|
390
|
+
migrator.migrate()
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
if __name__ == "__main__":
|
|
394
|
+
main()
|
package/src/commands/init.js
CHANGED
|
@@ -2,15 +2,27 @@
|
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import prompts from 'prompts';
|
|
4
4
|
import { copyDir, pathExists } from '../utils/copy.js';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
getTemplatesDir,
|
|
7
|
+
getSkillsSourceDir,
|
|
8
|
+
getAgentsSourceDir,
|
|
9
|
+
getPromptsSourceDir,
|
|
10
|
+
getInstructionsSourceDir,
|
|
11
|
+
getUserSkillsDir,
|
|
12
|
+
getUserAgentsDir,
|
|
13
|
+
getUserPromptsDir,
|
|
14
|
+
getUserInstructionsDir,
|
|
15
|
+
getRepoGithubDir,
|
|
16
|
+
getRepoVscodeDir
|
|
17
|
+
} from '../utils/paths.js';
|
|
6
18
|
import { success, error, done, info, hint, bold, cyan } from '../utils/colors.js';
|
|
7
19
|
import { join } from 'path';
|
|
8
20
|
import { mkdirSync, existsSync } from 'fs';
|
|
9
21
|
|
|
10
22
|
export const initCommand = new Command('init')
|
|
11
23
|
.description('Set up CoKit in your project or globally')
|
|
12
|
-
.option('-g, --global', 'Install
|
|
13
|
-
.option('-a, --all', 'Install both project templates and
|
|
24
|
+
.option('-g, --global', 'Install all CoKit resources to ~/.copilot/')
|
|
25
|
+
.option('-a, --all', 'Install both project templates and global resources')
|
|
14
26
|
.option('-y, --yes', 'Skip confirmation prompts')
|
|
15
27
|
.option('--overwrite', 'Overwrite existing files without prompting')
|
|
16
28
|
.action(async (options) => {
|
|
@@ -19,7 +31,6 @@ export const initCommand = new Command('init')
|
|
|
19
31
|
console.log();
|
|
20
32
|
|
|
21
33
|
try {
|
|
22
|
-
// Determine what to install
|
|
23
34
|
let installProject = false;
|
|
24
35
|
let installGlobal = false;
|
|
25
36
|
|
|
@@ -29,14 +40,13 @@ export const initCommand = new Command('init')
|
|
|
29
40
|
} else if (options.global) {
|
|
30
41
|
installGlobal = true;
|
|
31
42
|
} else if (!options.global && !options.all) {
|
|
32
|
-
// Interactive mode - ask user
|
|
33
43
|
const response = await prompts({
|
|
34
44
|
type: 'select',
|
|
35
45
|
name: 'mode',
|
|
36
46
|
message: 'What do you want to set up?',
|
|
37
47
|
choices: [
|
|
38
48
|
{ title: 'Project templates (.github/)', value: 'project', description: 'For this project only - share via git' },
|
|
39
|
-
{ title: '
|
|
49
|
+
{ title: 'Global resources (~/.copilot/)', value: 'global', description: 'Works in all projects' },
|
|
40
50
|
{ title: 'Both', value: 'both', description: 'Recommended for first-time setup' }
|
|
41
51
|
],
|
|
42
52
|
initial: 0
|
|
@@ -51,11 +61,10 @@ export const initCommand = new Command('init')
|
|
|
51
61
|
installGlobal = response.mode === 'global' || response.mode === 'both';
|
|
52
62
|
}
|
|
53
63
|
|
|
54
|
-
// Confirm before proceeding
|
|
55
64
|
if (!options.yes) {
|
|
56
65
|
const targets = [];
|
|
57
66
|
if (installProject) targets.push('.github/');
|
|
58
|
-
if (installGlobal) targets.push('~/.copilot/
|
|
67
|
+
if (installGlobal) targets.push('~/.copilot/');
|
|
59
68
|
|
|
60
69
|
const confirm = await prompts({
|
|
61
70
|
type: 'confirm',
|
|
@@ -72,21 +81,18 @@ export const initCommand = new Command('init')
|
|
|
72
81
|
|
|
73
82
|
console.log();
|
|
74
83
|
|
|
75
|
-
// Install project templates
|
|
76
84
|
if (installProject) {
|
|
77
85
|
info('Setting up project templates...');
|
|
78
86
|
await installProjectTemplates(options);
|
|
79
87
|
console.log();
|
|
80
88
|
}
|
|
81
89
|
|
|
82
|
-
// Install global skills
|
|
83
90
|
if (installGlobal) {
|
|
84
|
-
info('Setting up
|
|
85
|
-
await
|
|
91
|
+
info('Setting up global CoKit resources...');
|
|
92
|
+
await installGlobalResources(options);
|
|
86
93
|
console.log();
|
|
87
94
|
}
|
|
88
95
|
|
|
89
|
-
// Success message
|
|
90
96
|
done('Done! Open VS Code and start using Copilot.');
|
|
91
97
|
hint('Try typing /ck-fix in Copilot Chat.');
|
|
92
98
|
console.log();
|
|
@@ -101,13 +107,11 @@ async function installProjectTemplates(options) {
|
|
|
101
107
|
const templatesDir = getTemplatesDir();
|
|
102
108
|
const cwd = process.cwd();
|
|
103
109
|
|
|
104
|
-
// Check if templates exist
|
|
105
110
|
if (!pathExists(templatesDir)) {
|
|
106
111
|
error('Templates not found. Package may be corrupted.');
|
|
107
112
|
return;
|
|
108
113
|
}
|
|
109
114
|
|
|
110
|
-
// Copy .github directory
|
|
111
115
|
const githubSrc = join(templatesDir, '.github');
|
|
112
116
|
const githubDest = getRepoGithubDir(cwd);
|
|
113
117
|
|
|
@@ -118,7 +122,6 @@ async function installProjectTemplates(options) {
|
|
|
118
122
|
});
|
|
119
123
|
}
|
|
120
124
|
|
|
121
|
-
// Copy .vscode directory
|
|
122
125
|
const vscodeSrc = join(templatesDir, '.vscode');
|
|
123
126
|
const vscodeDest = getRepoVscodeDir(cwd);
|
|
124
127
|
|
|
@@ -130,23 +133,51 @@ async function installProjectTemplates(options) {
|
|
|
130
133
|
}
|
|
131
134
|
}
|
|
132
135
|
|
|
133
|
-
async function
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
+
async function installGlobalResources(options) {
|
|
137
|
+
const copyOptions = {
|
|
138
|
+
overwrite: options.overwrite,
|
|
139
|
+
prompt: !options.yes
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
// Install agents
|
|
143
|
+
const agentsSrc = getAgentsSourceDir();
|
|
144
|
+
const agentsDest = getUserAgentsDir();
|
|
145
|
+
if (pathExists(agentsSrc)) {
|
|
146
|
+
ensureDir(agentsDest);
|
|
147
|
+
await copyDir(agentsSrc, agentsDest, copyOptions);
|
|
148
|
+
success(` ✓ Agents installed to ${agentsDest}`);
|
|
149
|
+
}
|
|
136
150
|
|
|
137
|
-
//
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
151
|
+
// Install prompts
|
|
152
|
+
const promptsSrc = getPromptsSourceDir();
|
|
153
|
+
const promptsDest = getUserPromptsDir();
|
|
154
|
+
if (pathExists(promptsSrc)) {
|
|
155
|
+
ensureDir(promptsDest);
|
|
156
|
+
await copyDir(promptsSrc, promptsDest, copyOptions);
|
|
157
|
+
success(` ✓ Prompts installed to ${promptsDest}`);
|
|
141
158
|
}
|
|
142
159
|
|
|
143
|
-
//
|
|
144
|
-
|
|
145
|
-
|
|
160
|
+
// Install instructions
|
|
161
|
+
const instructionsSrc = getInstructionsSourceDir();
|
|
162
|
+
const instructionsDest = getUserInstructionsDir();
|
|
163
|
+
if (pathExists(instructionsSrc)) {
|
|
164
|
+
ensureDir(instructionsDest);
|
|
165
|
+
await copyDir(instructionsSrc, instructionsDest, copyOptions);
|
|
166
|
+
success(` ✓ Instructions installed to ${instructionsDest}`);
|
|
146
167
|
}
|
|
147
168
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
169
|
+
// Install skills
|
|
170
|
+
const skillsSrc = getSkillsSourceDir();
|
|
171
|
+
const skillsDest = getUserSkillsDir();
|
|
172
|
+
if (pathExists(skillsSrc)) {
|
|
173
|
+
ensureDir(skillsDest);
|
|
174
|
+
await copyDir(skillsSrc, skillsDest, copyOptions);
|
|
175
|
+
success(` ✓ Skills installed to ${skillsDest}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function ensureDir(dir) {
|
|
180
|
+
if (!existsSync(dir)) {
|
|
181
|
+
mkdirSync(dir, { recursive: true });
|
|
182
|
+
}
|
|
152
183
|
}
|
package/src/utils/paths.js
CHANGED
|
@@ -14,16 +14,47 @@ export function getUserSkillsDir() {
|
|
|
14
14
|
return join(homedir(), '.copilot', 'skills');
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
//
|
|
18
|
-
export function
|
|
19
|
-
return join(
|
|
17
|
+
// User-level agents directory (~/.copilot/agents/)
|
|
18
|
+
export function getUserAgentsDir() {
|
|
19
|
+
return join(homedir(), '.copilot', 'agents');
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// User-level prompts directory (~/.copilot/prompts/)
|
|
23
|
+
export function getUserPromptsDir() {
|
|
24
|
+
return join(homedir(), '.copilot', 'prompts');
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// User-level instructions directory (~/.copilot/instructions/)
|
|
28
|
+
export function getUserInstructionsDir() {
|
|
29
|
+
return join(homedir(), '.copilot', 'instructions');
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Source directories in package
|
|
33
|
+
export function getAgentsSourceDir() {
|
|
34
|
+
return join(PACKAGE_ROOT, 'agents');
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function getPromptsSourceDir() {
|
|
38
|
+
return join(PACKAGE_ROOT, 'prompts');
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function getInstructionsSourceDir() {
|
|
42
|
+
return join(PACKAGE_ROOT, 'instructions');
|
|
20
43
|
}
|
|
21
44
|
|
|
22
|
-
// User-level skills source
|
|
23
45
|
export function getSkillsSourceDir() {
|
|
24
46
|
return join(PACKAGE_ROOT, 'skills');
|
|
25
47
|
}
|
|
26
48
|
|
|
49
|
+
export function getCollectionsSourceDir() {
|
|
50
|
+
return join(PACKAGE_ROOT, 'collections');
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Repo-level templates source (legacy)
|
|
54
|
+
export function getTemplatesDir() {
|
|
55
|
+
return join(PACKAGE_ROOT, 'templates', 'repo');
|
|
56
|
+
}
|
|
57
|
+
|
|
27
58
|
// Get .github directory in current project
|
|
28
59
|
export function getRepoGithubDir(cwd = process.cwd()) {
|
|
29
60
|
return join(cwd, '.github');
|