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,236 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
UI/UX Pro Max Core - BM25 search engine for UI/UX style guides
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import csv
|
|
8
|
+
import re
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
from math import log
|
|
11
|
+
from collections import defaultdict
|
|
12
|
+
|
|
13
|
+
# ============ CONFIGURATION ============
|
|
14
|
+
DATA_DIR = Path(__file__).parent.parent / "data"
|
|
15
|
+
MAX_RESULTS = 3
|
|
16
|
+
|
|
17
|
+
CSV_CONFIG = {
|
|
18
|
+
"style": {
|
|
19
|
+
"file": "styles.csv",
|
|
20
|
+
"search_cols": ["Style Category", "Keywords", "Best For", "Type"],
|
|
21
|
+
"output_cols": ["Style Category", "Type", "Keywords", "Primary Colors", "Effects & Animation", "Best For", "Performance", "Accessibility", "Framework Compatibility", "Complexity"]
|
|
22
|
+
},
|
|
23
|
+
"prompt": {
|
|
24
|
+
"file": "prompts.csv",
|
|
25
|
+
"search_cols": ["Style Category", "AI Prompt Keywords (Copy-Paste Ready)", "CSS/Technical Keywords"],
|
|
26
|
+
"output_cols": ["Style Category", "AI Prompt Keywords (Copy-Paste Ready)", "CSS/Technical Keywords", "Implementation Checklist"]
|
|
27
|
+
},
|
|
28
|
+
"color": {
|
|
29
|
+
"file": "colors.csv",
|
|
30
|
+
"search_cols": ["Product Type", "Keywords", "Notes"],
|
|
31
|
+
"output_cols": ["Product Type", "Keywords", "Primary (Hex)", "Secondary (Hex)", "CTA (Hex)", "Background (Hex)", "Text (Hex)", "Border (Hex)", "Notes"]
|
|
32
|
+
},
|
|
33
|
+
"chart": {
|
|
34
|
+
"file": "charts.csv",
|
|
35
|
+
"search_cols": ["Data Type", "Keywords", "Best Chart Type", "Accessibility Notes"],
|
|
36
|
+
"output_cols": ["Data Type", "Keywords", "Best Chart Type", "Secondary Options", "Color Guidance", "Accessibility Notes", "Library Recommendation", "Interactive Level"]
|
|
37
|
+
},
|
|
38
|
+
"landing": {
|
|
39
|
+
"file": "landing.csv",
|
|
40
|
+
"search_cols": ["Pattern Name", "Keywords", "Conversion Optimization", "Section Order"],
|
|
41
|
+
"output_cols": ["Pattern Name", "Keywords", "Section Order", "Primary CTA Placement", "Color Strategy", "Conversion Optimization"]
|
|
42
|
+
},
|
|
43
|
+
"product": {
|
|
44
|
+
"file": "products.csv",
|
|
45
|
+
"search_cols": ["Product Type", "Keywords", "Primary Style Recommendation", "Key Considerations"],
|
|
46
|
+
"output_cols": ["Product Type", "Keywords", "Primary Style Recommendation", "Secondary Styles", "Landing Page Pattern", "Dashboard Style (if applicable)", "Color Palette Focus"]
|
|
47
|
+
},
|
|
48
|
+
"ux": {
|
|
49
|
+
"file": "ux-guidelines.csv",
|
|
50
|
+
"search_cols": ["Category", "Issue", "Description", "Platform"],
|
|
51
|
+
"output_cols": ["Category", "Issue", "Platform", "Description", "Do", "Don't", "Code Example Good", "Code Example Bad", "Severity"]
|
|
52
|
+
},
|
|
53
|
+
"typography": {
|
|
54
|
+
"file": "typography.csv",
|
|
55
|
+
"search_cols": ["Font Pairing Name", "Category", "Mood/Style Keywords", "Best For", "Heading Font", "Body Font"],
|
|
56
|
+
"output_cols": ["Font Pairing Name", "Category", "Heading Font", "Body Font", "Mood/Style Keywords", "Best For", "Google Fonts URL", "CSS Import", "Tailwind Config", "Notes"]
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
STACK_CONFIG = {
|
|
61
|
+
"html-tailwind": {"file": "stacks/html-tailwind.csv"},
|
|
62
|
+
"react": {"file": "stacks/react.csv"},
|
|
63
|
+
"nextjs": {"file": "stacks/nextjs.csv"},
|
|
64
|
+
"vue": {"file": "stacks/vue.csv"},
|
|
65
|
+
"svelte": {"file": "stacks/svelte.csv"},
|
|
66
|
+
"swiftui": {"file": "stacks/swiftui.csv"},
|
|
67
|
+
"react-native": {"file": "stacks/react-native.csv"},
|
|
68
|
+
"flutter": {"file": "stacks/flutter.csv"}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
# Common columns for all stacks
|
|
72
|
+
_STACK_COLS = {
|
|
73
|
+
"search_cols": ["Category", "Guideline", "Description", "Do", "Don't"],
|
|
74
|
+
"output_cols": ["Category", "Guideline", "Description", "Do", "Don't", "Code Good", "Code Bad", "Severity", "Docs URL"]
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
AVAILABLE_STACKS = list(STACK_CONFIG.keys())
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
# ============ BM25 IMPLEMENTATION ============
|
|
81
|
+
class BM25:
|
|
82
|
+
"""BM25 ranking algorithm for text search"""
|
|
83
|
+
|
|
84
|
+
def __init__(self, k1=1.5, b=0.75):
|
|
85
|
+
self.k1 = k1
|
|
86
|
+
self.b = b
|
|
87
|
+
self.corpus = []
|
|
88
|
+
self.doc_lengths = []
|
|
89
|
+
self.avgdl = 0
|
|
90
|
+
self.idf = {}
|
|
91
|
+
self.doc_freqs = defaultdict(int)
|
|
92
|
+
self.N = 0
|
|
93
|
+
|
|
94
|
+
def tokenize(self, text):
|
|
95
|
+
"""Lowercase, split, remove punctuation, filter short words"""
|
|
96
|
+
text = re.sub(r'[^\w\s]', ' ', str(text).lower())
|
|
97
|
+
return [w for w in text.split() if len(w) > 2]
|
|
98
|
+
|
|
99
|
+
def fit(self, documents):
|
|
100
|
+
"""Build BM25 index from documents"""
|
|
101
|
+
self.corpus = [self.tokenize(doc) for doc in documents]
|
|
102
|
+
self.N = len(self.corpus)
|
|
103
|
+
if self.N == 0:
|
|
104
|
+
return
|
|
105
|
+
self.doc_lengths = [len(doc) for doc in self.corpus]
|
|
106
|
+
self.avgdl = sum(self.doc_lengths) / self.N
|
|
107
|
+
|
|
108
|
+
for doc in self.corpus:
|
|
109
|
+
seen = set()
|
|
110
|
+
for word in doc:
|
|
111
|
+
if word not in seen:
|
|
112
|
+
self.doc_freqs[word] += 1
|
|
113
|
+
seen.add(word)
|
|
114
|
+
|
|
115
|
+
for word, freq in self.doc_freqs.items():
|
|
116
|
+
self.idf[word] = log((self.N - freq + 0.5) / (freq + 0.5) + 1)
|
|
117
|
+
|
|
118
|
+
def score(self, query):
|
|
119
|
+
"""Score all documents against query"""
|
|
120
|
+
query_tokens = self.tokenize(query)
|
|
121
|
+
scores = []
|
|
122
|
+
|
|
123
|
+
for idx, doc in enumerate(self.corpus):
|
|
124
|
+
score = 0
|
|
125
|
+
doc_len = self.doc_lengths[idx]
|
|
126
|
+
term_freqs = defaultdict(int)
|
|
127
|
+
for word in doc:
|
|
128
|
+
term_freqs[word] += 1
|
|
129
|
+
|
|
130
|
+
for token in query_tokens:
|
|
131
|
+
if token in self.idf:
|
|
132
|
+
tf = term_freqs[token]
|
|
133
|
+
idf = self.idf[token]
|
|
134
|
+
numerator = tf * (self.k1 + 1)
|
|
135
|
+
denominator = tf + self.k1 * (1 - self.b + self.b * doc_len / self.avgdl)
|
|
136
|
+
score += idf * numerator / denominator
|
|
137
|
+
|
|
138
|
+
scores.append((idx, score))
|
|
139
|
+
|
|
140
|
+
return sorted(scores, key=lambda x: x[1], reverse=True)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
# ============ SEARCH FUNCTIONS ============
|
|
144
|
+
def _load_csv(filepath):
|
|
145
|
+
"""Load CSV and return list of dicts"""
|
|
146
|
+
with open(filepath, 'r', encoding='utf-8') as f:
|
|
147
|
+
return list(csv.DictReader(f))
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def _search_csv(filepath, search_cols, output_cols, query, max_results):
|
|
151
|
+
"""Core search function using BM25"""
|
|
152
|
+
if not filepath.exists():
|
|
153
|
+
return []
|
|
154
|
+
|
|
155
|
+
data = _load_csv(filepath)
|
|
156
|
+
|
|
157
|
+
# Build documents from search columns
|
|
158
|
+
documents = [" ".join(str(row.get(col, "")) for col in search_cols) for row in data]
|
|
159
|
+
|
|
160
|
+
# BM25 search
|
|
161
|
+
bm25 = BM25()
|
|
162
|
+
bm25.fit(documents)
|
|
163
|
+
ranked = bm25.score(query)
|
|
164
|
+
|
|
165
|
+
# Get top results with score > 0
|
|
166
|
+
results = []
|
|
167
|
+
for idx, score in ranked[:max_results]:
|
|
168
|
+
if score > 0:
|
|
169
|
+
row = data[idx]
|
|
170
|
+
results.append({col: row.get(col, "") for col in output_cols if col in row})
|
|
171
|
+
|
|
172
|
+
return results
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def detect_domain(query):
|
|
176
|
+
"""Auto-detect the most relevant domain from query"""
|
|
177
|
+
query_lower = query.lower()
|
|
178
|
+
|
|
179
|
+
domain_keywords = {
|
|
180
|
+
"color": ["color", "palette", "hex", "#", "rgb"],
|
|
181
|
+
"chart": ["chart", "graph", "visualization", "trend", "bar", "pie", "scatter", "heatmap", "funnel"],
|
|
182
|
+
"landing": ["landing", "page", "cta", "conversion", "hero", "testimonial", "pricing", "section"],
|
|
183
|
+
"product": ["saas", "ecommerce", "e-commerce", "fintech", "healthcare", "gaming", "portfolio", "crypto", "dashboard"],
|
|
184
|
+
"prompt": ["prompt", "css", "implementation", "variable", "checklist", "tailwind"],
|
|
185
|
+
"style": ["style", "design", "ui", "minimalism", "glassmorphism", "neumorphism", "brutalism", "dark mode", "flat", "aurora"],
|
|
186
|
+
"ux": ["ux", "usability", "accessibility", "wcag", "touch", "scroll", "animation", "keyboard", "navigation", "mobile"],
|
|
187
|
+
"typography": ["font", "typography", "heading", "serif", "sans"]
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
scores = {domain: sum(1 for kw in keywords if kw in query_lower) for domain, keywords in domain_keywords.items()}
|
|
191
|
+
best = max(scores, key=scores.get)
|
|
192
|
+
return best if scores[best] > 0 else "style"
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def search(query, domain=None, max_results=MAX_RESULTS):
|
|
196
|
+
"""Main search function with auto-domain detection"""
|
|
197
|
+
if domain is None:
|
|
198
|
+
domain = detect_domain(query)
|
|
199
|
+
|
|
200
|
+
config = CSV_CONFIG.get(domain, CSV_CONFIG["style"])
|
|
201
|
+
filepath = DATA_DIR / config["file"]
|
|
202
|
+
|
|
203
|
+
if not filepath.exists():
|
|
204
|
+
return {"error": f"File not found: {filepath}", "domain": domain}
|
|
205
|
+
|
|
206
|
+
results = _search_csv(filepath, config["search_cols"], config["output_cols"], query, max_results)
|
|
207
|
+
|
|
208
|
+
return {
|
|
209
|
+
"domain": domain,
|
|
210
|
+
"query": query,
|
|
211
|
+
"file": config["file"],
|
|
212
|
+
"count": len(results),
|
|
213
|
+
"results": results
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
def search_stack(query, stack, max_results=MAX_RESULTS):
|
|
218
|
+
"""Search stack-specific guidelines"""
|
|
219
|
+
if stack not in STACK_CONFIG:
|
|
220
|
+
return {"error": f"Unknown stack: {stack}. Available: {', '.join(AVAILABLE_STACKS)}"}
|
|
221
|
+
|
|
222
|
+
filepath = DATA_DIR / STACK_CONFIG[stack]["file"]
|
|
223
|
+
|
|
224
|
+
if not filepath.exists():
|
|
225
|
+
return {"error": f"Stack file not found: {filepath}", "stack": stack}
|
|
226
|
+
|
|
227
|
+
results = _search_csv(filepath, _STACK_COLS["search_cols"], _STACK_COLS["output_cols"], query, max_results)
|
|
228
|
+
|
|
229
|
+
return {
|
|
230
|
+
"domain": "stack",
|
|
231
|
+
"stack": stack,
|
|
232
|
+
"query": query,
|
|
233
|
+
"file": STACK_CONFIG[stack]["file"],
|
|
234
|
+
"count": len(results),
|
|
235
|
+
"results": results
|
|
236
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
UI/UX Pro Max Search - BM25 search engine for UI/UX style guides
|
|
5
|
+
Usage: python search.py "<query>" [--domain <domain>] [--stack <stack>] [--max-results 3]
|
|
6
|
+
|
|
7
|
+
Domains: style, prompt, color, chart, landing, product, ux, typography
|
|
8
|
+
Stacks: html-tailwind, react, nextjs
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import argparse
|
|
12
|
+
import sys
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
|
|
15
|
+
# Add shared scripts to path for win_compat
|
|
16
|
+
sys.path.insert(0, str(Path.home() / '.claude' / 'scripts'))
|
|
17
|
+
try:
|
|
18
|
+
from win_compat import ensure_utf8_stdout
|
|
19
|
+
ensure_utf8_stdout()
|
|
20
|
+
except ImportError:
|
|
21
|
+
# Fallback if shared utility not available
|
|
22
|
+
if sys.platform == 'win32':
|
|
23
|
+
import io
|
|
24
|
+
if hasattr(sys.stdout, 'buffer'):
|
|
25
|
+
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
|
26
|
+
|
|
27
|
+
from core import CSV_CONFIG, AVAILABLE_STACKS, MAX_RESULTS, search, search_stack
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def format_output(result):
|
|
31
|
+
"""Format results for Claude consumption (token-optimized)"""
|
|
32
|
+
if "error" in result:
|
|
33
|
+
return f"Error: {result['error']}"
|
|
34
|
+
|
|
35
|
+
output = []
|
|
36
|
+
if result.get("stack"):
|
|
37
|
+
output.append(f"## UI Pro Max Stack Guidelines")
|
|
38
|
+
output.append(f"**Stack:** {result['stack']} | **Query:** {result['query']}")
|
|
39
|
+
else:
|
|
40
|
+
output.append(f"## UI Pro Max Search Results")
|
|
41
|
+
output.append(f"**Domain:** {result['domain']} | **Query:** {result['query']}")
|
|
42
|
+
output.append(f"**Source:** {result['file']} | **Found:** {result['count']} results\n")
|
|
43
|
+
|
|
44
|
+
for i, row in enumerate(result['results'], 1):
|
|
45
|
+
output.append(f"### Result {i}")
|
|
46
|
+
for key, value in row.items():
|
|
47
|
+
value_str = str(value)
|
|
48
|
+
if len(value_str) > 300:
|
|
49
|
+
value_str = value_str[:300] + "..."
|
|
50
|
+
output.append(f"- **{key}:** {value_str}")
|
|
51
|
+
output.append("")
|
|
52
|
+
|
|
53
|
+
return "\n".join(output)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
if __name__ == "__main__":
|
|
57
|
+
parser = argparse.ArgumentParser(description="UI Pro Max Search")
|
|
58
|
+
parser.add_argument("query", help="Search query")
|
|
59
|
+
parser.add_argument("--domain", "-d", choices=list(CSV_CONFIG.keys()), help="Search domain")
|
|
60
|
+
parser.add_argument("--stack", "-s", choices=AVAILABLE_STACKS, help="Stack-specific search (html-tailwind, react, nextjs)")
|
|
61
|
+
parser.add_argument("--max-results", "-n", type=int, default=MAX_RESULTS, help="Max results (default: 3)")
|
|
62
|
+
parser.add_argument("--json", action="store_true", help="Output as JSON")
|
|
63
|
+
|
|
64
|
+
args = parser.parse_args()
|
|
65
|
+
|
|
66
|
+
# Stack search takes priority
|
|
67
|
+
if args.stack:
|
|
68
|
+
result = search_stack(args.query, args.stack, args.max_results)
|
|
69
|
+
else:
|
|
70
|
+
result = search(args.query, args.domain, args.max_results)
|
|
71
|
+
|
|
72
|
+
if args.json:
|
|
73
|
+
import json
|
|
74
|
+
print(json.dumps(result, indent=2, ensure_ascii=False))
|
|
75
|
+
else:
|
|
76
|
+
print(format_output(result))
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'ck-web-frameworks'
|
|
3
|
+
description: 'Build modern full-stack web applications with Next.js (App Router, Server Components, RSC, PPR, SSR, SSG, ISR), Turborepo (monorepo management, task pipelines, remote caching, parallel execution), and RemixIcon (3100+ SVG icons in outlined/filled styles). Use when creating React applications, implementing server-side rendering, setting up monorepos with multiple packages, optimizing build performance and caching strategies, adding icon libraries, managing shared dependencies, or working with TypeScript full-stack projects.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Web Frameworks Skill Group
|
|
7
|
+
|
|
8
|
+
Comprehensive guide for building modern full-stack web applications using Next.js, Turborepo, and RemixIcon.
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
This skill group combines three powerful tools for web development:
|
|
13
|
+
|
|
14
|
+
**Next.js** - React framework with SSR, SSG, RSC, and optimization features
|
|
15
|
+
**Turborepo** - High-performance monorepo build system for JavaScript/TypeScript
|
|
16
|
+
**RemixIcon** - Icon library with 3,100+ outlined and filled style icons
|
|
17
|
+
|
|
18
|
+
## When to Use This Skill Group
|
|
19
|
+
|
|
20
|
+
- Building new full-stack web applications with modern React
|
|
21
|
+
- Setting up monorepos with multiple apps and shared packages
|
|
22
|
+
- Implementing server-side rendering and static generation
|
|
23
|
+
- Optimizing build performance with intelligent caching
|
|
24
|
+
- Creating consistent UI with professional iconography
|
|
25
|
+
- Managing workspace dependencies across multiple projects
|
|
26
|
+
- Deploying production-ready applications with proper optimization
|
|
27
|
+
|
|
28
|
+
## Stack Selection Guide
|
|
29
|
+
|
|
30
|
+
### Single Application: Next.js + RemixIcon
|
|
31
|
+
|
|
32
|
+
Use when building a standalone application:
|
|
33
|
+
- E-commerce sites
|
|
34
|
+
- Marketing websites
|
|
35
|
+
- SaaS applications
|
|
36
|
+
- Documentation sites
|
|
37
|
+
- Blogs and content platforms
|
|
38
|
+
|
|
39
|
+
**Setup:**
|
|
40
|
+
```bash
|
|
41
|
+
npx create-next-app@latest my-app
|
|
42
|
+
cd my-app
|
|
43
|
+
npm install remixicon
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Monorepo: Next.js + Turborepo + RemixIcon
|
|
47
|
+
|
|
48
|
+
Use when building multiple applications with shared code:
|
|
49
|
+
- Microfrontends
|
|
50
|
+
- Multi-tenant platforms
|
|
51
|
+
- Internal tools with shared component library
|
|
52
|
+
- Multiple apps (web, admin, mobile-web) sharing logic
|
|
53
|
+
- Design system with documentation site
|
|
54
|
+
|
|
55
|
+
**Setup:**
|
|
56
|
+
```bash
|
|
57
|
+
npx create-turbo@latest my-monorepo
|
|
58
|
+
# Then configure Next.js apps in apps/ directory
|
|
59
|
+
# Install remixicon in shared UI packages
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Framework Features Comparison
|
|
63
|
+
|
|
64
|
+
| Feature | Next.js | Turborepo | RemixIcon |
|
|
65
|
+
|---------|---------|-----------|-----------|
|
|
66
|
+
| Primary Use | Web framework | Build system | UI icons |
|
|
67
|
+
| Best For | SSR/SSG apps | Monorepos | Consistent iconography |
|
|
68
|
+
| Performance | Built-in optimization | Caching & parallel tasks | Lightweight fonts/SVG |
|
|
69
|
+
| TypeScript | Full support | Full support | Type definitions available |
|
|
70
|
+
|
|
71
|
+
## Quick Start
|
|
72
|
+
|
|
73
|
+
### Next.js Application
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Create new project
|
|
77
|
+
npx create-next-app@latest my-app
|
|
78
|
+
cd my-app
|
|
79
|
+
|
|
80
|
+
# Install RemixIcon
|
|
81
|
+
npm install remixicon
|
|
82
|
+
|
|
83
|
+
# Import in layout
|
|
84
|
+
# app/layout.tsx
|
|
85
|
+
import 'remixicon/fonts/remixicon.css'
|
|
86
|
+
|
|
87
|
+
# Start development
|
|
88
|
+
npm run dev
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Turborepo Monorepo
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# Create monorepo
|
|
95
|
+
npx create-turbo@latest my-monorepo
|
|
96
|
+
cd my-monorepo
|
|
97
|
+
|
|
98
|
+
# Structure:
|
|
99
|
+
# apps/web/ - Next.js application
|
|
100
|
+
# apps/docs/ - Documentation site
|
|
101
|
+
# packages/ui/ - Shared components with RemixIcon
|
|
102
|
+
# packages/config/ - Shared configs
|
|
103
|
+
# turbo.json - Pipeline configuration
|
|
104
|
+
|
|
105
|
+
# Run all apps
|
|
106
|
+
npm run dev
|
|
107
|
+
|
|
108
|
+
# Build all packages
|
|
109
|
+
npm run build
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### RemixIcon Integration
|
|
113
|
+
|
|
114
|
+
```tsx
|
|
115
|
+
// Webfont (HTML/CSS)
|
|
116
|
+
<i className="ri-home-line"></i>
|
|
117
|
+
<i className="ri-search-fill ri-2x"></i>
|
|
118
|
+
|
|
119
|
+
// React component
|
|
120
|
+
import { RiHomeLine, RiSearchFill } from "@remixicon/react"
|
|
121
|
+
<RiHomeLine size={24} />
|
|
122
|
+
<RiSearchFill size={32} color="blue" />
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Reference Navigation
|
|
126
|
+
|
|
127
|
+
**Next.js References:**
|
|
128
|
+
- [App Router Architecture](./references/nextjs-app-router.md) - Routing, layouts, pages, parallel routes
|
|
129
|
+
- [Server Components](./references/nextjs-server-components.md) - RSC patterns, client vs server, streaming
|
|
130
|
+
- [Data Fetching](./references/nextjs-data-fetching.md) - fetch API, caching, revalidation, loading states
|
|
131
|
+
- [Optimization](./references/nextjs-optimization.md) - Images, fonts, scripts, bundle analysis, PPR
|
|
132
|
+
|
|
133
|
+
**Turborepo References:**
|
|
134
|
+
- [Setup & Configuration](./references/turborepo-setup.md) - Installation, workspace config, package structure
|
|
135
|
+
- [Task Pipelines](./references/turborepo-pipelines.md) - Dependencies, parallel execution, task ordering
|
|
136
|
+
- [Caching Strategies](./references/turborepo-caching.md) - Local cache, remote cache, cache invalidation
|
|
137
|
+
|
|
138
|
+
**RemixIcon References:**
|
|
139
|
+
- [Integration Guide](./references/remix-icon-integration.md) - Installation, usage, customization, accessibility
|
|
140
|
+
|
|
141
|
+
## Common Patterns & Workflows
|
|
142
|
+
|
|
143
|
+
### Pattern 1: Full-Stack Monorepo
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
my-monorepo/
|
|
147
|
+
├── apps/
|
|
148
|
+
│ ├── web/ # Customer-facing Next.js app
|
|
149
|
+
│ ├── admin/ # Admin dashboard Next.js app
|
|
150
|
+
│ └── docs/ # Documentation site
|
|
151
|
+
├── packages/
|
|
152
|
+
│ ├── ui/ # Shared UI with RemixIcon
|
|
153
|
+
│ ├── api-client/ # API client library
|
|
154
|
+
│ ├── config/ # ESLint, TypeScript configs
|
|
155
|
+
│ └── types/ # Shared TypeScript types
|
|
156
|
+
└── turbo.json # Build pipeline
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**turbo.json:**
|
|
160
|
+
```json
|
|
161
|
+
{
|
|
162
|
+
"$schema": "https://turbo.build/schema.json",
|
|
163
|
+
"pipeline": {
|
|
164
|
+
"build": {
|
|
165
|
+
"dependsOn": ["^build"],
|
|
166
|
+
"outputs": [".next/**", "!.next/cache/**", "dist/**"]
|
|
167
|
+
},
|
|
168
|
+
"dev": {
|
|
169
|
+
"cache": false,
|
|
170
|
+
"persistent": true
|
|
171
|
+
},
|
|
172
|
+
"lint": {},
|
|
173
|
+
"test": {
|
|
174
|
+
"dependsOn": ["build"]
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Pattern 2: Shared Component Library
|
|
181
|
+
|
|
182
|
+
```tsx
|
|
183
|
+
// packages/ui/src/button.tsx
|
|
184
|
+
import { RiLoader4Line } from "@remixicon/react"
|
|
185
|
+
|
|
186
|
+
export function Button({ children, loading, icon }) {
|
|
187
|
+
return (
|
|
188
|
+
<button>
|
|
189
|
+
{loading ? <RiLoader4Line className="animate-spin" /> : icon}
|
|
190
|
+
{children}
|
|
191
|
+
</button>
|
|
192
|
+
)
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// apps/web/app/page.tsx
|
|
196
|
+
import { Button } from "@repo/ui/button"
|
|
197
|
+
import { RiHomeLine } from "@remixicon/react"
|
|
198
|
+
|
|
199
|
+
export default function Page() {
|
|
200
|
+
return <Button icon={<RiHomeLine />}>Home</Button>
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Pattern 3: Optimized Data Fetching
|
|
205
|
+
|
|
206
|
+
```tsx
|
|
207
|
+
// app/posts/[slug]/page.tsx
|
|
208
|
+
import { notFound } from 'next/navigation'
|
|
209
|
+
|
|
210
|
+
// Static generation at build time
|
|
211
|
+
export async function generateStaticParams() {
|
|
212
|
+
const posts = await getPosts()
|
|
213
|
+
return posts.map(post => ({ slug: post.slug }))
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// Revalidate every hour
|
|
217
|
+
async function getPost(slug: string) {
|
|
218
|
+
const res = await fetch(`https://api.example.com/posts/${slug}`, {
|
|
219
|
+
next: { revalidate: 3600 }
|
|
220
|
+
})
|
|
221
|
+
if (!res.ok) return null
|
|
222
|
+
return res.json()
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
export default async function Post({ params }: { params: { slug: string } }) {
|
|
226
|
+
const post = await getPost(params.slug)
|
|
227
|
+
if (!post) notFound()
|
|
228
|
+
|
|
229
|
+
return <article>{post.content}</article>
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Pattern 4: Monorepo CI/CD Pipeline
|
|
234
|
+
|
|
235
|
+
```yaml
|
|
236
|
+
# .github/workflows/ci.yml
|
|
237
|
+
name: CI
|
|
238
|
+
on: [push, pull_request]
|
|
239
|
+
|
|
240
|
+
jobs:
|
|
241
|
+
build:
|
|
242
|
+
runs-on: ubuntu-latest
|
|
243
|
+
steps:
|
|
244
|
+
- uses: actions/checkout@v4
|
|
245
|
+
- uses: actions/setup-node@v4
|
|
246
|
+
with:
|
|
247
|
+
node-version: 18
|
|
248
|
+
- run: npm install
|
|
249
|
+
- run: npx turbo run build test lint
|
|
250
|
+
env:
|
|
251
|
+
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
252
|
+
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## Utility Scripts
|
|
256
|
+
|
|
257
|
+
Python utilities in `scripts/` directory:
|
|
258
|
+
|
|
259
|
+
**nextjs-init.py** - Initialize Next.js project with best practices
|
|
260
|
+
**turborepo-migrate.py** - Convert existing monorepo to Turborepo
|
|
261
|
+
|
|
262
|
+
Usage examples:
|
|
263
|
+
```bash
|
|
264
|
+
# Initialize new Next.js app with TypeScript and recommended setup
|
|
265
|
+
python scripts/nextjs-init.py --name my-app --typescript --app-router
|
|
266
|
+
|
|
267
|
+
# Migrate existing monorepo to Turborepo with dry-run
|
|
268
|
+
python scripts/turborepo-migrate.py --path ./my-monorepo --dry-run
|
|
269
|
+
|
|
270
|
+
# Run tests
|
|
271
|
+
cd scripts/tests
|
|
272
|
+
pytest
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
## Best Practices
|
|
276
|
+
|
|
277
|
+
**Next.js:**
|
|
278
|
+
- Default to Server Components, use Client Components only when needed
|
|
279
|
+
- Implement proper loading and error states
|
|
280
|
+
- Use Image component for automatic optimization
|
|
281
|
+
- Set proper metadata for SEO
|
|
282
|
+
- Leverage caching strategies (force-cache, revalidate, no-store)
|
|
283
|
+
|
|
284
|
+
**Turborepo:**
|
|
285
|
+
- Structure monorepo with clear separation (apps/, packages/)
|
|
286
|
+
- Define task dependencies correctly (^build for topological)
|
|
287
|
+
- Configure outputs for proper caching
|
|
288
|
+
- Enable remote caching for team collaboration
|
|
289
|
+
- Use filters to run tasks on changed packages only
|
|
290
|
+
|
|
291
|
+
**RemixIcon:**
|
|
292
|
+
- Use line style for minimal interfaces, fill for emphasis
|
|
293
|
+
- Maintain 24x24 grid alignment for crisp rendering
|
|
294
|
+
- Provide aria-labels for accessibility
|
|
295
|
+
- Use currentColor for flexible theming
|
|
296
|
+
- Prefer webfonts for multiple icons, SVG for single icons
|
|
297
|
+
|
|
298
|
+
## Resources
|
|
299
|
+
|
|
300
|
+
- Next.js: https://nextjs.org/docs/llms.txt
|
|
301
|
+
- Turborepo: https://turbo.build/repo/docs
|
|
302
|
+
- RemixIcon: https://remixicon.com
|
|
303
|
+
|
|
304
|
+
## Implementation Checklist
|
|
305
|
+
|
|
306
|
+
Building with this stack:
|
|
307
|
+
|
|
308
|
+
- [ ] Create project structure (single app or monorepo)
|
|
309
|
+
- [ ] Configure TypeScript and ESLint
|
|
310
|
+
- [ ] Set up Next.js with App Router
|
|
311
|
+
- [ ] Configure Turborepo pipeline (if monorepo)
|
|
312
|
+
- [ ] Install and configure RemixIcon
|
|
313
|
+
- [ ] Implement routing and layouts
|
|
314
|
+
- [ ] Add loading and error states
|
|
315
|
+
- [ ] Configure image and font optimization
|
|
316
|
+
- [ ] Set up data fetching patterns
|
|
317
|
+
- [ ] Configure caching strategies
|
|
318
|
+
- [ ] Add API routes as needed
|
|
319
|
+
- [ ] Implement shared component library (if monorepo)
|
|
320
|
+
- [ ] Configure remote caching (if monorepo)
|
|
321
|
+
- [ ] Set up CI/CD pipeline
|
|
322
|
+
- [ ] Configure deployment platform
|