cokit-cli 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +103 -0
- package/README.FLOW.md +237 -0
- package/README.md +153 -94
- package/agents/brainstormer.agent.md +71 -0
- package/agents/code-reviewer.agent.md +128 -0
- package/agents/database-admin.agent.md +91 -0
- package/agents/debugger.agent.md +128 -0
- package/agents/docs-manager.agent.md +121 -0
- package/agents/fullstack-developer.agent.md +96 -0
- package/agents/git-manager.agent.md +392 -0
- package/agents/mcp-manager.agent.md +93 -0
- package/agents/planner.agent.md +94 -0
- package/agents/project-manager.agent.md +124 -0
- package/agents/researcher.agent.md +32 -0
- package/agents/scout-external.agent.md +141 -0
- package/agents/scout.agent.md +107 -0
- package/agents/tester.agent.md +106 -0
- package/agents/ui-ux-designer.agent.md +225 -0
- package/collections/ck-core.collection.yml +30 -0
- package/collections/ck-development-rules.collection.yml +18 -0
- package/collections/ck-documentation.collection.yml +18 -0
- package/collections/ck-git-workflow.collection.yml +18 -0
- package/collections/ck-orchestration.collection.yml +22 -0
- package/collections/ck-ui-design.collection.yml +18 -0
- package/docs/README.md +85 -0
- package/docs/copilot-processing-flow.md +128 -0
- package/instructions/ck-backend.instructions.md +48 -0
- package/instructions/ck-development.instructions.md +40 -0
- package/instructions/ck-frontend-design-pro.instructions.md +58 -0
- package/instructions/ck-frontend.instructions.md +44 -0
- package/instructions/ck-google-adk-python.instructions.md +242 -0
- package/instructions/ck-research.instructions.md +167 -0
- package/instructions/ck-testing.instructions.md +36 -0
- package/package.json +9 -2
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-01-restructure-folders.md +183 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-02-convert-agents.md +206 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-03-convert-commands-to-prompts.md +284 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-04-convert-skills-to-instructions.md +349 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-05-create-collections.md +320 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-06-update-cli-build-scripts.md +450 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-07-update-documentation.md +407 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/plan.md +136 -0
- package/prompts/ck-ask.prompt.md +57 -0
- package/prompts/ck-bootstrap-auto-fast.prompt.md +108 -0
- package/prompts/ck-bootstrap-auto-parallel.prompt.md +66 -0
- package/prompts/ck-bootstrap-auto.prompt.md +114 -0
- package/prompts/ck-bootstrap.prompt.md +136 -0
- package/prompts/ck-brainstorm.prompt.md +68 -0
- package/prompts/ck-ck-help.prompt.md +114 -0
- package/prompts/ck-code-auto.prompt.md +171 -0
- package/prompts/ck-code-no-test.prompt.md +159 -0
- package/prompts/ck-code-parallel.prompt.md +56 -0
- package/prompts/ck-code.prompt.md +177 -0
- package/prompts/ck-coding-level.prompt.md +54 -0
- package/prompts/ck-cook-auto-fast.prompt.md +26 -0
- package/prompts/ck-cook-auto-parallel.prompt.md +49 -0
- package/prompts/ck-cook-auto.prompt.md +15 -0
- package/prompts/ck-cook.prompt.md +96 -0
- package/prompts/ck-debug.prompt.md +14 -0
- package/prompts/ck-design-3d.prompt.md +84 -0
- package/prompts/ck-design-describe.prompt.md +24 -0
- package/prompts/ck-design-fast.prompt.md +32 -0
- package/prompts/ck-design-good.prompt.md +36 -0
- package/prompts/ck-design-screenshot.prompt.md +35 -0
- package/prompts/ck-design-video.prompt.md +35 -0
- package/prompts/ck-docs-init.prompt.md +27 -0
- package/prompts/ck-docs-summarize.prompt.md +23 -0
- package/prompts/ck-docs-update.prompt.md +36 -0
- package/prompts/ck-fix-ci.prompt.md +18 -0
- package/prompts/ck-fix-fast.prompt.md +18 -0
- package/prompts/ck-fix-hard.prompt.md +36 -0
- package/prompts/ck-fix-logs.prompt.md +27 -0
- package/prompts/ck-fix-parallel.prompt.md +54 -0
- package/prompts/ck-fix-test.prompt.md +19 -0
- package/prompts/ck-fix-types.prompt.md +11 -0
- package/prompts/ck-fix-ui.prompt.md +49 -0
- package/prompts/ck-fix.prompt.md +44 -0
- package/prompts/ck-git-cm.prompt.md +8 -0
- package/prompts/ck-git-cp.prompt.md +7 -0
- package/prompts/ck-git-merge.prompt.md +41 -0
- package/prompts/ck-git-pr.prompt.md +49 -0
- package/prompts/ck-kanban.prompt.md +77 -0
- package/prompts/ck-plan-archive.prompt.md +58 -0
- package/prompts/ck-plan-ci.prompt.md +34 -0
- package/prompts/ck-plan-cro.prompt.md +66 -0
- package/prompts/ck-plan-fast.prompt.md +67 -0
- package/prompts/ck-plan-hard.prompt.md +89 -0
- package/prompts/ck-plan-parallel.prompt.md +126 -0
- package/prompts/ck-plan-two.prompt.md +43 -0
- package/prompts/ck-plan-validate.prompt.md +118 -0
- package/prompts/ck-plan.prompt.md +29 -1
- package/prompts/ck-preview.prompt.md +65 -0
- package/prompts/ck-review-codebase.prompt.md +44 -0
- package/prompts/ck-scout-ext.prompt.md +35 -0
- package/prompts/ck-scout.prompt.md +25 -0
- package/prompts/ck-skill-add.prompt.md +36 -0
- package/prompts/ck-skill-create.prompt.md +29 -0
- package/prompts/ck-skill-fix-logs.prompt.md +22 -0
- package/prompts/ck-skill-optimize-auto.prompt.md +25 -0
- package/prompts/ck-skill-optimize.prompt.md +34 -0
- package/prompts/ck-skill-plan.prompt.md +46 -0
- package/prompts/ck-test-ui.prompt.md +92 -0
- package/prompts/ck-test.prompt.md +10 -0
- package/prompts/ck-use-mcp.prompt.md +27 -0
- package/prompts/ck-watzup.prompt.md +11 -0
- package/prompts/ck-worktree.prompt.md +127 -0
- package/rules/README.agents.md +55 -0
- package/rules/README.collections.md +78 -0
- package/rules/README.copilot-instructions.md +66 -0
- package/rules/README.instructions.md +73 -0
- package/rules/README.md +39 -0
- package/rules/README.prompts.md +76 -0
- package/rules/README.skills.md +71 -0
- package/skills/ck-ai-artist/SKILL.md +73 -0
- package/skills/ck-ai-artist/references/advanced-techniques.md +184 -0
- package/skills/ck-ai-artist/references/domain-code.md +66 -0
- package/skills/ck-ai-artist/references/domain-data.md +72 -0
- package/skills/ck-ai-artist/references/domain-marketing.md +66 -0
- package/skills/ck-ai-artist/references/domain-patterns.md +33 -0
- package/skills/ck-ai-artist/references/domain-writing.md +68 -0
- package/skills/ck-ai-artist/references/image-prompting.md +141 -0
- package/skills/ck-ai-artist/references/llm-prompting.md +165 -0
- package/skills/ck-ai-artist/references/nano-banana.md +59 -0
- package/skills/ck-ai-artist/references/reasoning-techniques.md +201 -0
- package/skills/ck-backend-development/SKILL.md +93 -0
- package/skills/ck-backend-development/references/backend-api-design.md +495 -0
- package/skills/ck-backend-development/references/backend-architecture.md +454 -0
- package/skills/ck-backend-development/references/backend-authentication.md +338 -0
- package/skills/ck-backend-development/references/backend-code-quality.md +659 -0
- package/skills/ck-backend-development/references/backend-debugging.md +904 -0
- package/skills/ck-backend-development/references/backend-devops.md +494 -0
- package/skills/ck-backend-development/references/backend-mindset.md +387 -0
- package/skills/ck-backend-development/references/backend-performance.md +397 -0
- package/skills/ck-backend-development/references/backend-security.md +290 -0
- package/skills/ck-backend-development/references/backend-technologies.md +256 -0
- package/skills/ck-backend-development/references/backend-testing.md +429 -0
- package/skills/ck-better-auth/SKILL.md +202 -0
- package/skills/ck-better-auth/references/advanced-features.md +553 -0
- package/skills/ck-better-auth/references/database-integration.md +577 -0
- package/skills/ck-better-auth/references/email-password-auth.md +416 -0
- package/skills/ck-better-auth/references/oauth-providers.md +430 -0
- package/skills/ck-better-auth/scripts/.coverage +0 -0
- package/skills/ck-better-auth/scripts/better_auth_init.py +521 -0
- package/skills/ck-better-auth/scripts/requirements.txt +15 -0
- package/skills/ck-better-auth/scripts/tests/.coverage +0 -0
- package/skills/ck-better-auth/scripts/tests/test_better_auth_init.py +421 -0
- package/skills/ck-chrome-devtools/SKILL.md +470 -0
- package/skills/ck-chrome-devtools/references/cdp-domains.md +694 -0
- package/skills/ck-chrome-devtools/references/performance-guide.md +940 -0
- package/skills/ck-chrome-devtools/references/puppeteer-reference.md +953 -0
- package/skills/ck-chrome-devtools/scripts/README.md +272 -0
- package/skills/ck-chrome-devtools/scripts/__tests__/selector.test.js +210 -0
- package/skills/ck-chrome-devtools/scripts/aria-snapshot.js +362 -0
- package/skills/ck-chrome-devtools/scripts/click.js +83 -0
- package/skills/ck-chrome-devtools/scripts/console.js +79 -0
- package/skills/ck-chrome-devtools/scripts/evaluate.js +53 -0
- package/skills/ck-chrome-devtools/scripts/fill.js +76 -0
- package/skills/ck-chrome-devtools/scripts/inject-auth.js +229 -0
- package/skills/ck-chrome-devtools/scripts/install-deps.sh +181 -0
- package/skills/ck-chrome-devtools/scripts/install.sh +83 -0
- package/skills/ck-chrome-devtools/scripts/lib/browser.js +318 -0
- package/skills/ck-chrome-devtools/scripts/lib/selector.js +178 -0
- package/skills/ck-chrome-devtools/scripts/navigate.js +54 -0
- package/skills/ck-chrome-devtools/scripts/network.js +106 -0
- package/skills/ck-chrome-devtools/scripts/package-lock.json +1589 -0
- package/skills/ck-chrome-devtools/scripts/package.json +16 -0
- package/skills/ck-chrome-devtools/scripts/performance.js +149 -0
- package/skills/ck-chrome-devtools/scripts/screenshot.js +198 -0
- package/skills/ck-chrome-devtools/scripts/select-ref.js +131 -0
- package/skills/ck-chrome-devtools/scripts/snapshot.js +135 -0
- package/skills/ck-code-review/SKILL.md +110 -53
- package/skills/ck-code-review/references/code-review-reception.md +182 -49
- package/skills/ck-code-review/references/requesting-code-review.md +105 -0
- package/skills/ck-code-review/references/verification-before-completion.md +111 -58
- package/skills/ck-databases/SKILL.md +231 -0
- package/skills/ck-databases/references/mongodb-aggregation.md +447 -0
- package/skills/ck-databases/references/mongodb-atlas.md +465 -0
- package/skills/ck-databases/references/mongodb-crud.md +408 -0
- package/skills/ck-databases/references/mongodb-indexing.md +442 -0
- package/skills/ck-databases/references/postgresql-administration.md +594 -0
- package/skills/ck-databases/references/postgresql-performance.md +527 -0
- package/skills/ck-databases/references/postgresql-psql-cli.md +467 -0
- package/skills/ck-databases/references/postgresql-queries.md +475 -0
- package/skills/ck-databases/scripts/.coverage +0 -0
- package/skills/ck-databases/scripts/db_backup.py +502 -0
- package/skills/ck-databases/scripts/db_migrate.py +425 -0
- package/skills/ck-databases/scripts/db_performance_check.py +456 -0
- package/skills/ck-databases/scripts/requirements.txt +20 -0
- package/skills/ck-databases/scripts/tests/coverage-db.json +1 -0
- package/skills/ck-databases/scripts/tests/requirements.txt +4 -0
- package/skills/ck-databases/scripts/tests/test_db_backup.py +340 -0
- package/skills/ck-databases/scripts/tests/test_db_migrate.py +277 -0
- package/skills/ck-databases/scripts/tests/test_db_performance_check.py +370 -0
- package/skills/ck-debugging/SKILL.md +55 -43
- package/skills/ck-debugging/references/defense-in-depth.md +124 -0
- package/skills/ck-debugging/references/root-cause-tracing.md +100 -43
- package/skills/ck-debugging/references/systematic-debugging.md +80 -52
- package/skills/ck-debugging/references/verification.md +101 -52
- package/skills/ck-debugging/scripts/find-polluter.sh +63 -0
- package/skills/ck-debugging/scripts/find-polluter.test.md +102 -0
- package/skills/ck-devops/.env.example +76 -0
- package/skills/ck-devops/SKILL.md +283 -0
- package/skills/ck-devops/references/browser-rendering.md +305 -0
- package/skills/ck-devops/references/cloudflare-d1-kv.md +123 -0
- package/skills/ck-devops/references/cloudflare-platform.md +271 -0
- package/skills/ck-devops/references/cloudflare-r2-storage.md +280 -0
- package/skills/ck-devops/references/cloudflare-workers-advanced.md +312 -0
- package/skills/ck-devops/references/cloudflare-workers-apis.md +309 -0
- package/skills/ck-devops/references/cloudflare-workers-basics.md +418 -0
- package/skills/ck-devops/references/docker-basics.md +297 -0
- package/skills/ck-devops/references/docker-compose.md +292 -0
- package/skills/ck-devops/references/gcloud-platform.md +297 -0
- package/skills/ck-devops/references/gcloud-services.md +304 -0
- package/skills/ck-devops/scripts/cloudflare_deploy.py +269 -0
- package/skills/ck-devops/scripts/docker_optimize.py +331 -0
- package/skills/ck-devops/scripts/requirements.txt +20 -0
- package/skills/ck-devops/scripts/tests/requirements.txt +3 -0
- package/skills/ck-devops/scripts/tests/test_cloudflare_deploy.py +285 -0
- package/skills/ck-devops/scripts/tests/test_docker_optimize.py +436 -0
- package/skills/ck-docs-seeker/.env.example +15 -0
- package/skills/ck-docs-seeker/SKILL.md +70 -65
- package/skills/ck-docs-seeker/package.json +25 -0
- package/skills/ck-docs-seeker/references/advanced.md +79 -0
- package/skills/ck-docs-seeker/references/context7-patterns.md +68 -0
- package/skills/ck-docs-seeker/references/errors.md +68 -0
- package/skills/ck-docs-seeker/scripts/analyze-llms-txt.js +211 -0
- package/skills/ck-docs-seeker/scripts/detect-topic.js +172 -0
- package/skills/ck-docs-seeker/scripts/fetch-docs.js +213 -0
- package/skills/ck-docs-seeker/scripts/tests/run-tests.js +72 -0
- package/skills/ck-docs-seeker/scripts/tests/test-analyze-llms.js +119 -0
- package/skills/ck-docs-seeker/scripts/tests/test-detect-topic.js +112 -0
- package/skills/ck-docs-seeker/scripts/tests/test-fetch-docs.js +84 -0
- package/skills/ck-docs-seeker/scripts/utils/env-loader.js +94 -0
- package/skills/ck-docs-seeker/workflows/library-search.md +87 -0
- package/skills/ck-docs-seeker/workflows/repo-analysis.md +91 -0
- package/skills/ck-docs-seeker/workflows/topic-search.md +77 -0
- package/skills/ck-frontend-design/SKILL.md +79 -0
- package/skills/ck-frontend-design/references/analysis-best-practices.md +80 -0
- package/skills/ck-frontend-design/references/analysis-prompts.md +141 -0
- package/skills/ck-frontend-design/references/analysis-techniques.md +118 -0
- package/skills/ck-frontend-design/references/animejs.md +396 -0
- package/skills/ck-frontend-design/references/design-extraction-overview.md +71 -0
- package/skills/ck-frontend-design/references/extraction-best-practices.md +141 -0
- package/skills/ck-frontend-design/references/extraction-output-templates.md +162 -0
- package/skills/ck-frontend-design/references/extraction-prompts.md +127 -0
- package/skills/ck-frontend-design/references/technical-accessibility.md +119 -0
- package/skills/ck-frontend-design/references/technical-best-practices.md +97 -0
- package/skills/ck-frontend-design/references/technical-optimization.md +44 -0
- package/skills/ck-frontend-design/references/technical-overview.md +90 -0
- package/skills/ck-frontend-design/references/technical-workflows.md +150 -0
- package/skills/ck-frontend-design/references/visual-analysis-overview.md +95 -0
- package/skills/ck-frontend-development/SKILL.md +399 -0
- package/skills/ck-frontend-development/resources/common-patterns.md +331 -0
- package/skills/ck-frontend-development/resources/complete-examples.md +872 -0
- package/skills/ck-frontend-development/resources/component-patterns.md +502 -0
- package/skills/ck-frontend-development/resources/data-fetching.md +767 -0
- package/skills/ck-frontend-development/resources/file-organization.md +502 -0
- package/skills/ck-frontend-development/resources/loading-and-error-states.md +501 -0
- package/skills/ck-frontend-development/resources/performance.md +406 -0
- package/skills/ck-frontend-development/resources/routing-guide.md +364 -0
- package/skills/ck-frontend-development/resources/styling-guide.md +428 -0
- package/skills/ck-frontend-development/resources/typescript-standards.md +418 -0
- package/skills/ck-markdown-novel-viewer/SKILL.md +190 -0
- package/skills/ck-markdown-novel-viewer/assets/directory-browser.css +215 -0
- package/skills/ck-markdown-novel-viewer/assets/favicon.png +0 -0
- package/skills/ck-markdown-novel-viewer/assets/novel-theme.css +818 -0
- package/skills/ck-markdown-novel-viewer/assets/reader.js +262 -0
- package/skills/ck-markdown-novel-viewer/assets/template.html +80 -0
- package/skills/ck-markdown-novel-viewer/package.json +15 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/http-server.cjs +434 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/markdown-renderer.cjs +272 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/plan-navigator.cjs +509 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/port-finder.cjs +48 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/process-mgr.cjs +150 -0
- package/skills/ck-markdown-novel-viewer/scripts/server.cjs +411 -0
- package/skills/ck-markdown-novel-viewer/scripts/tests/server.test.cjs +283 -0
- package/skills/ck-markdown-novel-viewer/tests/dashboard-assets.test.cjs +340 -0
- package/skills/ck-markdown-novel-viewer/tests/dashboard-renderer.test.cjs +404 -0
- package/skills/ck-markdown-novel-viewer/tests/http-server.test.cjs +271 -0
- package/skills/ck-markdown-novel-viewer/tests/run-tests.cjs +51 -0
- package/skills/ck-markdown-novel-viewer/tests/test-framework.cjs +154 -0
- package/skills/ck-markdown-novel-viewer/tests/verify-xss.cjs +90 -0
- package/skills/ck-mcp-builder/LICENSE.txt +202 -0
- package/skills/ck-mcp-builder/SKILL.md +327 -0
- package/skills/ck-mcp-builder/reference/evaluation.md +602 -0
- package/skills/ck-mcp-builder/reference/mcp_best_practices.md +915 -0
- package/skills/ck-mcp-builder/reference/node_mcp_server.md +916 -0
- package/skills/ck-mcp-builder/reference/python_mcp_server.md +752 -0
- package/skills/ck-mcp-builder/scripts/connections.py +151 -0
- package/skills/ck-mcp-builder/scripts/evaluation.py +373 -0
- package/skills/ck-mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/ck-mcp-builder/scripts/requirements.txt +2 -0
- package/skills/ck-mcp-management/README.md +219 -0
- package/skills/ck-mcp-management/SKILL.md +209 -0
- package/skills/ck-mcp-management/assets/tools.json +3146 -0
- package/skills/ck-mcp-management/references/configuration.md +114 -0
- package/skills/ck-mcp-management/references/gemini-cli-integration.md +215 -0
- package/skills/ck-mcp-management/references/mcp-protocol.md +116 -0
- package/skills/ck-mcp-management/scripts/.env.example +10 -0
- package/skills/ck-mcp-management/scripts/cli.ts +195 -0
- package/skills/ck-mcp-management/scripts/dist/analyze-tools.js +70 -0
- package/skills/ck-mcp-management/scripts/dist/cli.js +160 -0
- package/skills/ck-mcp-management/scripts/dist/mcp-client.js +183 -0
- package/skills/ck-mcp-management/scripts/mcp-client.ts +230 -0
- package/skills/ck-mcp-management/scripts/package.json +20 -0
- package/skills/ck-mcp-management/scripts/tsconfig.json +15 -0
- package/skills/ck-media-processing/SKILL.md +90 -0
- package/skills/ck-media-processing/references/common-workflows.md +132 -0
- package/skills/ck-media-processing/references/ffmpeg-encoding.md +358 -0
- package/skills/ck-media-processing/references/ffmpeg-filters.md +503 -0
- package/skills/ck-media-processing/references/ffmpeg-streaming.md +403 -0
- package/skills/ck-media-processing/references/format-compatibility.md +375 -0
- package/skills/ck-media-processing/references/imagemagick-batch.md +612 -0
- package/skills/ck-media-processing/references/imagemagick-editing.md +623 -0
- package/skills/ck-media-processing/references/rmbg-background-removal.md +66 -0
- package/skills/ck-media-processing/references/troubleshooting.md +109 -0
- package/skills/ck-media-processing/scripts/README.md +111 -0
- package/skills/ck-media-processing/scripts/batch-remove-background.sh +124 -0
- package/skills/ck-media-processing/scripts/batch_resize.py +342 -0
- package/skills/ck-media-processing/scripts/media_convert.py +311 -0
- package/skills/ck-media-processing/scripts/remove-background.sh +96 -0
- package/skills/ck-media-processing/scripts/remove-bg-node.js +158 -0
- package/skills/ck-media-processing/scripts/requirements.txt +24 -0
- package/skills/ck-media-processing/scripts/tests/.coverage +0 -0
- package/skills/ck-media-processing/scripts/tests/requirements.txt +2 -0
- package/skills/ck-media-processing/scripts/tests/test_batch_resize.py +372 -0
- package/skills/ck-media-processing/scripts/tests/test_media_convert.py +259 -0
- package/skills/ck-media-processing/scripts/tests/test_video_optimize.py +397 -0
- package/skills/ck-media-processing/scripts/video_optimize.py +414 -0
- package/skills/ck-mobile-development/SKILL.md +210 -0
- package/skills/ck-mobile-development/references/mobile-android.md +604 -0
- package/skills/ck-mobile-development/references/mobile-best-practices.md +545 -0
- package/skills/ck-mobile-development/references/mobile-debugging.md +1089 -0
- package/skills/ck-mobile-development/references/mobile-frameworks.md +465 -0
- package/skills/ck-mobile-development/references/mobile-ios.md +496 -0
- package/skills/ck-mobile-development/references/mobile-mindset.md +544 -0
- package/skills/ck-payment-integration/README.md +185 -0
- package/skills/ck-payment-integration/SKILL.md +116 -0
- package/skills/ck-payment-integration/references/polar/benefits.md +396 -0
- package/skills/ck-payment-integration/references/polar/best-practices.md +482 -0
- package/skills/ck-payment-integration/references/polar/checkouts.md +266 -0
- package/skills/ck-payment-integration/references/polar/overview.md +184 -0
- package/skills/ck-payment-integration/references/polar/products.md +244 -0
- package/skills/ck-payment-integration/references/polar/sdk.md +436 -0
- package/skills/ck-payment-integration/references/polar/subscriptions.md +340 -0
- package/skills/ck-payment-integration/references/polar/webhooks.md +405 -0
- package/skills/ck-payment-integration/references/sepay/api.md +140 -0
- package/skills/ck-payment-integration/references/sepay/best-practices.md +337 -0
- package/skills/ck-payment-integration/references/sepay/overview.md +138 -0
- package/skills/ck-payment-integration/references/sepay/qr-codes.md +228 -0
- package/skills/ck-payment-integration/references/sepay/sdk.md +213 -0
- package/skills/ck-payment-integration/references/sepay/webhooks.md +208 -0
- package/skills/ck-payment-integration/scripts/.env.example +20 -0
- package/skills/ck-payment-integration/scripts/checkout-helper.js +244 -0
- package/skills/ck-payment-integration/scripts/package.json +17 -0
- package/skills/ck-payment-integration/scripts/polar-webhook-verify.js +202 -0
- package/skills/ck-payment-integration/scripts/sepay-webhook-verify.js +193 -0
- package/skills/ck-payment-integration/scripts/test-scripts.js +237 -0
- package/skills/ck-planning/SKILL.md +79 -49
- package/skills/ck-planning/references/codebase-understanding.md +62 -0
- package/skills/ck-planning/references/output-standards.md +127 -0
- package/skills/ck-planning/references/plan-organization.md +122 -60
- package/skills/ck-planning/references/research-phase.md +49 -56
- package/skills/ck-planning/references/solution-design.md +61 -63
- package/skills/ck-problem-solving/SKILL.md +95 -0
- package/skills/ck-problem-solving/references/attribution.md +69 -0
- package/skills/ck-problem-solving/references/collision-zone-thinking.md +79 -0
- package/skills/ck-problem-solving/references/inversion-exercise.md +91 -0
- package/skills/ck-problem-solving/references/meta-pattern-recognition.md +87 -0
- package/skills/ck-problem-solving/references/scale-game.md +95 -0
- package/skills/ck-problem-solving/references/simplification-cascades.md +80 -0
- package/skills/ck-problem-solving/references/when-stuck.md +72 -0
- package/skills/ck-repomix/SKILL.md +247 -0
- package/skills/ck-repomix/references/configuration.md +211 -0
- package/skills/ck-repomix/references/usage-patterns.md +232 -0
- package/skills/ck-repomix/scripts/.coverage +0 -0
- package/skills/ck-repomix/scripts/README.md +179 -0
- package/skills/ck-repomix/scripts/repomix_batch.py +455 -0
- package/skills/ck-repomix/scripts/repos.example.json +15 -0
- package/skills/ck-repomix/scripts/requirements.txt +15 -0
- package/skills/ck-repomix/scripts/tests/test_repomix_batch.py +531 -0
- package/skills/ck-sequential-thinking/.env.example +8 -0
- package/skills/ck-sequential-thinking/README.md +183 -0
- package/skills/ck-sequential-thinking/SKILL.md +14 -2
- package/skills/ck-sequential-thinking/package.json +31 -0
- package/skills/ck-sequential-thinking/references/advanced-strategies.md +79 -0
- package/skills/ck-sequential-thinking/references/advanced-techniques.md +2 -14
- package/skills/ck-sequential-thinking/references/core-patterns.md +8 -0
- package/skills/ck-sequential-thinking/references/examples-api.md +88 -0
- package/skills/ck-sequential-thinking/references/examples-architecture.md +94 -0
- package/skills/ck-sequential-thinking/references/examples-debug.md +90 -0
- package/skills/ck-sequential-thinking/scripts/format-thought.js +159 -0
- package/skills/ck-sequential-thinking/scripts/process-thought.js +236 -0
- package/skills/ck-sequential-thinking/tests/format-thought.test.js +133 -0
- package/skills/ck-sequential-thinking/tests/process-thought.test.js +215 -0
- package/skills/ck-shopify/README.md +66 -0
- package/skills/ck-shopify/SKILL.md +319 -0
- package/skills/ck-shopify/references/app-development.md +470 -0
- package/skills/ck-shopify/references/extensions.md +493 -0
- package/skills/ck-shopify/references/themes.md +498 -0
- package/skills/ck-shopify/scripts/.coverage +0 -0
- package/skills/ck-shopify/scripts/requirements.txt +19 -0
- package/skills/ck-shopify/scripts/shopify_init.py +423 -0
- package/skills/ck-shopify/scripts/tests/.coverage +0 -0
- package/skills/ck-shopify/scripts/tests/test_shopify_init.py +385 -0
- package/skills/ck-skill-creator/LICENSE.txt +202 -0
- package/skills/ck-skill-creator/SKILL.md +265 -0
- package/skills/ck-skill-creator/scripts/init_skill.py +303 -0
- package/skills/ck-skill-creator/scripts/package_skill.py +110 -0
- package/skills/ck-skill-creator/scripts/quick_validate.py +65 -0
- package/skills/ck-threejs/SKILL.md +87 -0
- package/skills/ck-threejs/references/01-getting-started.md +177 -0
- package/skills/ck-threejs/references/02-loaders.md +169 -0
- package/skills/ck-threejs/references/03-textures.md +170 -0
- package/skills/ck-threejs/references/04-cameras.md +195 -0
- package/skills/ck-threejs/references/05-lights.md +183 -0
- package/skills/ck-threejs/references/06-animations.md +214 -0
- package/skills/ck-threejs/references/07-math.md +260 -0
- package/skills/ck-threejs/references/08-interaction.md +267 -0
- package/skills/ck-threejs/references/09-postprocessing.md +240 -0
- package/skills/ck-threejs/references/10-controls.md +259 -0
- package/skills/ck-threejs/references/11-materials-advanced.md +270 -0
- package/skills/ck-threejs/references/12-performance.md +269 -0
- package/skills/ck-threejs/references/13-node-materials.md +298 -0
- package/skills/ck-threejs/references/14-physics-vr.md +304 -0
- package/skills/ck-threejs/references/15-specialized-loaders.md +333 -0
- package/skills/ck-threejs/references/16-webgpu.md +302 -0
- package/skills/ck-ui-styling/LICENSE.txt +202 -0
- package/skills/ck-ui-styling/SKILL.md +319 -0
- package/skills/ck-ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/ck-ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/ck-ui-styling/references/canvas-design-system.md +320 -0
- package/skills/ck-ui-styling/references/shadcn-accessibility.md +471 -0
- package/skills/ck-ui-styling/references/shadcn-components.md +424 -0
- package/skills/ck-ui-styling/references/shadcn-theming.md +373 -0
- package/skills/ck-ui-styling/references/tailwind-customization.md +483 -0
- package/skills/ck-ui-styling/references/tailwind-responsive.md +382 -0
- package/skills/ck-ui-styling/references/tailwind-utilities.md +455 -0
- package/skills/ck-ui-styling/scripts/.coverage +0 -0
- package/skills/ck-ui-styling/scripts/requirements.txt +17 -0
- package/skills/ck-ui-styling/scripts/shadcn_add.py +292 -0
- package/skills/ck-ui-styling/scripts/tailwind_config_gen.py +456 -0
- package/skills/ck-ui-styling/scripts/tests/coverage-ui.json +1 -0
- package/skills/ck-ui-styling/scripts/tests/requirements.txt +3 -0
- package/skills/ck-ui-styling/scripts/tests/test_shadcn_add.py +266 -0
- package/skills/ck-ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
- package/skills/ck-ui-ux-pro-max/SKILL.md +227 -0
- package/skills/ck-ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/ck-ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/ck-ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/ck-ui-ux-pro-max/data/products.csv +97 -0
- package/skills/ck-ui-ux-pro-max/data/prompts.csv +24 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/html-tailwind.csv +51 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/ck-ui-ux-pro-max/data/styles.csv +59 -0
- package/skills/ck-ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/ck-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/ck-ui-ux-pro-max/scripts/core.py +236 -0
- package/skills/ck-ui-ux-pro-max/scripts/search.py +76 -0
- package/skills/ck-web-frameworks/SKILL.md +322 -0
- package/skills/ck-web-frameworks/references/nextjs-app-router.md +465 -0
- package/skills/ck-web-frameworks/references/nextjs-data-fetching.md +459 -0
- package/skills/ck-web-frameworks/references/nextjs-optimization.md +511 -0
- package/skills/ck-web-frameworks/references/nextjs-server-components.md +495 -0
- package/skills/ck-web-frameworks/references/remix-icon-integration.md +603 -0
- package/skills/ck-web-frameworks/references/turborepo-caching.md +551 -0
- package/skills/ck-web-frameworks/references/turborepo-pipelines.md +517 -0
- package/skills/ck-web-frameworks/references/turborepo-setup.md +542 -0
- package/skills/ck-web-frameworks/scripts/.coverage +0 -0
- package/skills/ck-web-frameworks/scripts/__init__.py +0 -0
- package/skills/ck-web-frameworks/scripts/nextjs_init.py +547 -0
- package/skills/ck-web-frameworks/scripts/requirements.txt +16 -0
- package/skills/ck-web-frameworks/scripts/tests/coverage-web.json +1 -0
- package/skills/ck-web-frameworks/scripts/tests/requirements.txt +3 -0
- package/skills/ck-web-frameworks/scripts/tests/test_nextjs_init.py +319 -0
- package/skills/ck-web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -0
- package/skills/ck-web-frameworks/scripts/turborepo_migrate.py +394 -0
- package/src/commands/init.js +61 -30
- package/src/utils/paths.js +35 -4
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Quick validation script for skills - minimal version
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import sys
|
|
7
|
+
import os
|
|
8
|
+
import re
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
def validate_skill(skill_path):
|
|
12
|
+
"""Basic validation of a skill"""
|
|
13
|
+
skill_path = Path(skill_path)
|
|
14
|
+
|
|
15
|
+
# Check SKILL.md exists
|
|
16
|
+
skill_md = skill_path / 'SKILL.md'
|
|
17
|
+
if not skill_md.exists():
|
|
18
|
+
return False, "SKILL.md not found"
|
|
19
|
+
|
|
20
|
+
# Read and validate frontmatter
|
|
21
|
+
content = skill_md.read_text()
|
|
22
|
+
if not content.startswith('---'):
|
|
23
|
+
return False, "No YAML frontmatter found"
|
|
24
|
+
|
|
25
|
+
# Extract frontmatter
|
|
26
|
+
match = re.match(r'^---\n(.*?)\n---', content, re.DOTALL)
|
|
27
|
+
if not match:
|
|
28
|
+
return False, "Invalid frontmatter format"
|
|
29
|
+
|
|
30
|
+
frontmatter = match.group(1)
|
|
31
|
+
|
|
32
|
+
# Check required fields
|
|
33
|
+
if 'name:' not in frontmatter:
|
|
34
|
+
return False, "Missing 'name' in frontmatter"
|
|
35
|
+
if 'description:' not in frontmatter:
|
|
36
|
+
return False, "Missing 'description' in frontmatter"
|
|
37
|
+
|
|
38
|
+
# Extract name for validation
|
|
39
|
+
name_match = re.search(r'name:\s*(.+)', frontmatter)
|
|
40
|
+
if name_match:
|
|
41
|
+
name = name_match.group(1).strip()
|
|
42
|
+
# Check naming convention (hyphen-case: lowercase with hyphens)
|
|
43
|
+
if not re.match(r'^[a-z0-9-]+$', name):
|
|
44
|
+
return False, f"Name '{name}' should be hyphen-case (lowercase letters, digits, and hyphens only)"
|
|
45
|
+
if name.startswith('-') or name.endswith('-') or '--' in name:
|
|
46
|
+
return False, f"Name '{name}' cannot start/end with hyphen or contain consecutive hyphens"
|
|
47
|
+
|
|
48
|
+
# Extract and validate description
|
|
49
|
+
desc_match = re.search(r'description:\s*(.+)', frontmatter)
|
|
50
|
+
if desc_match:
|
|
51
|
+
description = desc_match.group(1).strip()
|
|
52
|
+
# Check for angle brackets
|
|
53
|
+
if '<' in description or '>' in description:
|
|
54
|
+
return False, "Description cannot contain angle brackets (< or >)"
|
|
55
|
+
|
|
56
|
+
return True, "Skill is valid!"
|
|
57
|
+
|
|
58
|
+
if __name__ == "__main__":
|
|
59
|
+
if len(sys.argv) != 2:
|
|
60
|
+
print("Usage: python quick_validate.py <skill_directory>")
|
|
61
|
+
sys.exit(1)
|
|
62
|
+
|
|
63
|
+
valid, message = validate_skill(sys.argv[1])
|
|
64
|
+
print(message)
|
|
65
|
+
sys.exit(0 if valid else 1)
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'ck-threejs'
|
|
3
|
+
description: 'Build immersive 3D web experiences with Three.js - WebGL/WebGPU library for scenes, cameras, geometries, materials, lights, animations, loaders, post-processing, shaders (including node-based TSL), compute, physics, VR/XR, and advanced rendering. Use when creating 3D visualizations, games, interactive graphics, data viz, product configurators, architectural walkthroughs, or WebGL/WebGPU applications. Covers OrbitControls, GLTF/FBX loading, PBR materials, shadow mapping, post-processing effects (bloom, SSAO, SSR), custom shaders, instancing, LOD, animation systems, and WebXR.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Three.js Development
|
|
7
|
+
|
|
8
|
+
Build high-performance 3D web applications using Three.js - a cross-browser WebGL/WebGPU library.
|
|
9
|
+
|
|
10
|
+
## When to Use This Skill
|
|
11
|
+
|
|
12
|
+
Use when working with:
|
|
13
|
+
- 3D scenes, models, animations, or visualizations
|
|
14
|
+
- WebGL/WebGPU rendering and graphics programming
|
|
15
|
+
- Interactive 3D experiences (games, configurators, data viz)
|
|
16
|
+
- Camera controls, lighting, materials, or shaders
|
|
17
|
+
- Loading 3D assets (GLTF, FBX, OBJ) or textures
|
|
18
|
+
- Post-processing effects (bloom, depth of field, SSAO)
|
|
19
|
+
- Physics simulations, VR/XR experiences, or spatial audio
|
|
20
|
+
- Performance optimization (instancing, LOD, frustum culling)
|
|
21
|
+
|
|
22
|
+
## Progressive Learning Path
|
|
23
|
+
|
|
24
|
+
### Level 1: Getting Started
|
|
25
|
+
Load `references/01-getting-started.md` - Scene setup, basic geometries, materials, lights, rendering loop
|
|
26
|
+
|
|
27
|
+
### Level 2: Common Tasks
|
|
28
|
+
- **Asset Loading**: `references/02-loaders.md` - GLTF, FBX, OBJ, texture loaders
|
|
29
|
+
- **Textures**: `references/03-textures.md` - Types, mapping, wrapping, filtering
|
|
30
|
+
- **Cameras**: `references/04-cameras.md` - Perspective, orthographic, controls
|
|
31
|
+
- **Lights**: `references/05-lights.md` - Types, shadows, helpers
|
|
32
|
+
- **Animations**: `references/06-animations.md` - Clips, mixer, keyframes
|
|
33
|
+
- **Math**: `references/07-math.md` - Vectors, matrices, quaternions, curves
|
|
34
|
+
|
|
35
|
+
### Level 3: Interactive & Effects
|
|
36
|
+
- **Interaction**: `references/08-interaction.md` - Raycasting, picking, transforms
|
|
37
|
+
- **Post-Processing**: `references/09-postprocessing.md` - Passes, bloom, SSAO, SSR
|
|
38
|
+
- **Controls (Addons)**: `references/10-controls.md` - Orbit, transform, first-person
|
|
39
|
+
|
|
40
|
+
### Level 4: Advanced Rendering
|
|
41
|
+
- **Materials Advanced**: `references/11-materials-advanced.md` - PBR, custom shaders
|
|
42
|
+
- **Performance**: `references/12-performance.md` - Instancing, LOD, batching, culling
|
|
43
|
+
- **Node Materials (TSL)**: `references/13-node-materials.md` - Shader graphs, compute
|
|
44
|
+
|
|
45
|
+
### Level 5: Specialized
|
|
46
|
+
- **Physics**: `references/14-physics-vr.md` - Ammo, Rapier, Jolt, VR/XR
|
|
47
|
+
- **Advanced Loaders**: `references/15-specialized-loaders.md` - SVG, VRML, domain-specific
|
|
48
|
+
- **WebGPU**: `references/16-webgpu.md` - Modern backend, compute shaders
|
|
49
|
+
|
|
50
|
+
## Quick Start Pattern
|
|
51
|
+
|
|
52
|
+
```javascript
|
|
53
|
+
// 1. Scene, Camera, Renderer
|
|
54
|
+
const scene = new THREE.Scene();
|
|
55
|
+
const camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);
|
|
56
|
+
const renderer = new THREE.WebGLRenderer();
|
|
57
|
+
renderer.setSize(window.innerWidth, window.innerHeight);
|
|
58
|
+
document.body.appendChild(renderer.domElement);
|
|
59
|
+
|
|
60
|
+
// 2. Add Objects
|
|
61
|
+
const geometry = new THREE.BoxGeometry();
|
|
62
|
+
const material = new THREE.MeshStandardMaterial({ color: 0x00ff00 });
|
|
63
|
+
const cube = new THREE.Mesh(geometry, material);
|
|
64
|
+
scene.add(cube);
|
|
65
|
+
|
|
66
|
+
// 3. Add Lights
|
|
67
|
+
const light = new THREE.DirectionalLight(0xffffff, 1);
|
|
68
|
+
light.position.set(5, 5, 5);
|
|
69
|
+
scene.add(light);
|
|
70
|
+
scene.add(new THREE.AmbientLight(0x404040));
|
|
71
|
+
|
|
72
|
+
// 4. Animation Loop
|
|
73
|
+
function animate() {
|
|
74
|
+
requestAnimationFrame(animate);
|
|
75
|
+
cube.rotation.x += 0.01;
|
|
76
|
+
cube.rotation.y += 0.01;
|
|
77
|
+
renderer.render(scene, camera);
|
|
78
|
+
}
|
|
79
|
+
animate();
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## External Resources
|
|
83
|
+
|
|
84
|
+
- Official Docs: https://threejs.org/docs/
|
|
85
|
+
- Examples: https://threejs.org/examples/
|
|
86
|
+
- Editor: https://threejs.org/editor/
|
|
87
|
+
- Discord: https://discord.gg/56GBJwAnUS
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# Getting Started with Three.js
|
|
2
|
+
|
|
3
|
+
Core concepts for building your first 3D scene.
|
|
4
|
+
|
|
5
|
+
## Essential Components
|
|
6
|
+
|
|
7
|
+
Every Three.js app needs 3 core elements:
|
|
8
|
+
|
|
9
|
+
### 1. Scene
|
|
10
|
+
Container for all 3D objects, lights, cameras.
|
|
11
|
+
|
|
12
|
+
```javascript
|
|
13
|
+
const scene = new THREE.Scene();
|
|
14
|
+
scene.background = new THREE.Color(0x000000); // black background
|
|
15
|
+
scene.fog = new THREE.Fog(0xffffff, 1, 5000); // distance fog
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### 2. Camera
|
|
19
|
+
Viewpoint into the 3D scene.
|
|
20
|
+
|
|
21
|
+
**PerspectiveCamera** (realistic, most common):
|
|
22
|
+
```javascript
|
|
23
|
+
const camera = new THREE.PerspectiveCamera(
|
|
24
|
+
75, // fov - field of view in degrees
|
|
25
|
+
window.innerWidth / window.innerHeight, // aspect ratio
|
|
26
|
+
0.1, // near clipping plane
|
|
27
|
+
1000 // far clipping plane
|
|
28
|
+
);
|
|
29
|
+
camera.position.set(0, 0, 5);
|
|
30
|
+
camera.lookAt(0, 0, 0);
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**OrthographicCamera** (no perspective distortion):
|
|
34
|
+
```javascript
|
|
35
|
+
const camera = new THREE.OrthographicCamera(
|
|
36
|
+
left, right, top, bottom, near, far
|
|
37
|
+
);
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 3. Renderer
|
|
41
|
+
Renders scene using camera perspective.
|
|
42
|
+
|
|
43
|
+
```javascript
|
|
44
|
+
const renderer = new THREE.WebGLRenderer({ antialias: true });
|
|
45
|
+
renderer.setSize(window.innerWidth, window.innerHeight);
|
|
46
|
+
renderer.setPixelRatio(window.devicePixelRatio);
|
|
47
|
+
document.body.appendChild(renderer.domElement);
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Basic Geometries
|
|
51
|
+
|
|
52
|
+
Primitive shapes ready to use:
|
|
53
|
+
|
|
54
|
+
```javascript
|
|
55
|
+
// Box
|
|
56
|
+
new THREE.BoxGeometry(width, height, depth);
|
|
57
|
+
|
|
58
|
+
// Sphere
|
|
59
|
+
new THREE.SphereGeometry(radius, widthSegments, heightSegments);
|
|
60
|
+
|
|
61
|
+
// Plane
|
|
62
|
+
new THREE.PlaneGeometry(width, height);
|
|
63
|
+
|
|
64
|
+
// Cylinder
|
|
65
|
+
new THREE.CylinderGeometry(radiusTop, radiusBottom, height, radialSegments);
|
|
66
|
+
|
|
67
|
+
// Cone
|
|
68
|
+
new THREE.ConeGeometry(radius, height, radialSegments);
|
|
69
|
+
|
|
70
|
+
// Torus
|
|
71
|
+
new THREE.TorusGeometry(radius, tube, radialSegments, tubularSegments);
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Basic Materials
|
|
75
|
+
|
|
76
|
+
Materials define surface appearance:
|
|
77
|
+
|
|
78
|
+
**MeshBasicMaterial** - unlit, flat color:
|
|
79
|
+
```javascript
|
|
80
|
+
new THREE.MeshBasicMaterial({ color: 0xff0000 });
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**MeshStandardMaterial** - PBR, responds to lights:
|
|
84
|
+
```javascript
|
|
85
|
+
new THREE.MeshStandardMaterial({
|
|
86
|
+
color: 0x00ff00,
|
|
87
|
+
metalness: 0.5,
|
|
88
|
+
roughness: 0.5
|
|
89
|
+
});
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**MeshPhongMaterial** - specular highlights:
|
|
93
|
+
```javascript
|
|
94
|
+
new THREE.MeshPhongMaterial({
|
|
95
|
+
color: 0x0000ff,
|
|
96
|
+
shininess: 100
|
|
97
|
+
});
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Creating Mesh
|
|
101
|
+
|
|
102
|
+
Combine geometry + material:
|
|
103
|
+
|
|
104
|
+
```javascript
|
|
105
|
+
const geometry = new THREE.BoxGeometry(1, 1, 1);
|
|
106
|
+
const material = new THREE.MeshStandardMaterial({ color: 0x00ff00 });
|
|
107
|
+
const cube = new THREE.Mesh(geometry, material);
|
|
108
|
+
scene.add(cube);
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Basic Lights
|
|
112
|
+
|
|
113
|
+
Materials (except Basic) need lights to be visible:
|
|
114
|
+
|
|
115
|
+
```javascript
|
|
116
|
+
// Ambient - global illumination
|
|
117
|
+
const ambient = new THREE.AmbientLight(0x404040); // soft white
|
|
118
|
+
scene.add(ambient);
|
|
119
|
+
|
|
120
|
+
// Directional - sun-like, infinite distance
|
|
121
|
+
const directional = new THREE.DirectionalLight(0xffffff, 1);
|
|
122
|
+
directional.position.set(5, 5, 5);
|
|
123
|
+
scene.add(directional);
|
|
124
|
+
|
|
125
|
+
// Point - lightbulb, radiates in all directions
|
|
126
|
+
const point = new THREE.PointLight(0xff0000, 1, 100);
|
|
127
|
+
point.position.set(0, 10, 0);
|
|
128
|
+
scene.add(point);
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Animation Loop
|
|
132
|
+
|
|
133
|
+
Continuously render and update scene:
|
|
134
|
+
|
|
135
|
+
```javascript
|
|
136
|
+
function animate() {
|
|
137
|
+
requestAnimationFrame(animate);
|
|
138
|
+
|
|
139
|
+
// Update objects
|
|
140
|
+
cube.rotation.x += 0.01;
|
|
141
|
+
cube.rotation.y += 0.01;
|
|
142
|
+
|
|
143
|
+
// Render
|
|
144
|
+
renderer.render(scene, camera);
|
|
145
|
+
}
|
|
146
|
+
animate();
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Handle Window Resize
|
|
150
|
+
|
|
151
|
+
Keep aspect ratio correct:
|
|
152
|
+
|
|
153
|
+
```javascript
|
|
154
|
+
window.addEventListener('resize', () => {
|
|
155
|
+
camera.aspect = window.innerWidth / window.innerHeight;
|
|
156
|
+
camera.updateProjectionMatrix();
|
|
157
|
+
renderer.setSize(window.innerWidth, window.innerHeight);
|
|
158
|
+
});
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Object3D Hierarchy
|
|
162
|
+
|
|
163
|
+
Transform and group objects:
|
|
164
|
+
|
|
165
|
+
```javascript
|
|
166
|
+
const group = new THREE.Group();
|
|
167
|
+
group.add(cube1);
|
|
168
|
+
group.add(cube2);
|
|
169
|
+
scene.add(group);
|
|
170
|
+
|
|
171
|
+
// Transform
|
|
172
|
+
object.position.set(x, y, z);
|
|
173
|
+
object.rotation.set(x, y, z); // Euler angles
|
|
174
|
+
object.scale.set(x, y, z);
|
|
175
|
+
|
|
176
|
+
// Hierarchy transforms are relative to parent
|
|
177
|
+
```
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# Asset Loading
|
|
2
|
+
|
|
3
|
+
Load 3D models, textures, and other assets.
|
|
4
|
+
|
|
5
|
+
## Loading Manager
|
|
6
|
+
|
|
7
|
+
Coordinate multiple loads, track progress:
|
|
8
|
+
|
|
9
|
+
```javascript
|
|
10
|
+
const manager = new THREE.LoadingManager();
|
|
11
|
+
manager.onStart = (url, loaded, total) => console.log('Loading:', url);
|
|
12
|
+
manager.onProgress = (url, loaded, total) => console.log(`${loaded}/${total}`);
|
|
13
|
+
manager.onLoad = () => console.log('Complete');
|
|
14
|
+
manager.onError = (url) => console.error('Error:', url);
|
|
15
|
+
|
|
16
|
+
const loader = new THREE.TextureLoader(manager);
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## GLTF Loader (Recommended Format)
|
|
20
|
+
|
|
21
|
+
Industry standard, supports PBR materials, animations, bones:
|
|
22
|
+
|
|
23
|
+
```javascript
|
|
24
|
+
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
|
|
25
|
+
|
|
26
|
+
const loader = new GLTFLoader();
|
|
27
|
+
loader.load(
|
|
28
|
+
'model.gltf',
|
|
29
|
+
(gltf) => {
|
|
30
|
+
scene.add(gltf.scene);
|
|
31
|
+
|
|
32
|
+
// Access animations
|
|
33
|
+
const mixer = new THREE.AnimationMixer(gltf.scene);
|
|
34
|
+
gltf.animations.forEach((clip) => mixer.clipAction(clip).play());
|
|
35
|
+
},
|
|
36
|
+
(xhr) => console.log((xhr.loaded / xhr.total * 100) + '% loaded'),
|
|
37
|
+
(error) => console.error(error)
|
|
38
|
+
);
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## FBX Loader
|
|
42
|
+
|
|
43
|
+
Autodesk format, common in game dev:
|
|
44
|
+
|
|
45
|
+
```javascript
|
|
46
|
+
import { FBXLoader } from 'three/addons/loaders/FBXLoader.js';
|
|
47
|
+
|
|
48
|
+
const loader = new FBXLoader();
|
|
49
|
+
loader.load('model.fbx', (object) => {
|
|
50
|
+
scene.add(object);
|
|
51
|
+
});
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## OBJ Loader
|
|
55
|
+
|
|
56
|
+
Simple geometry format:
|
|
57
|
+
|
|
58
|
+
```javascript
|
|
59
|
+
import { OBJLoader } from 'three/addons/loaders/OBJLoader.js';
|
|
60
|
+
|
|
61
|
+
const loader = new OBJLoader();
|
|
62
|
+
loader.load('model.obj', (object) => {
|
|
63
|
+
scene.add(object);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// With MTL (material library)
|
|
67
|
+
import { MTLLoader } from 'three/addons/loaders/MTLLoader.js';
|
|
68
|
+
|
|
69
|
+
const mtlLoader = new MTLLoader();
|
|
70
|
+
mtlLoader.load('model.mtl', (materials) => {
|
|
71
|
+
materials.preload();
|
|
72
|
+
const objLoader = new OBJLoader();
|
|
73
|
+
objLoader.setMaterials(materials);
|
|
74
|
+
objLoader.load('model.obj', (object) => scene.add(object));
|
|
75
|
+
});
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Texture Loader
|
|
79
|
+
|
|
80
|
+
Load images as textures:
|
|
81
|
+
|
|
82
|
+
```javascript
|
|
83
|
+
const textureLoader = new THREE.TextureLoader();
|
|
84
|
+
const texture = textureLoader.load('texture.jpg');
|
|
85
|
+
|
|
86
|
+
// Use in material
|
|
87
|
+
const material = new THREE.MeshStandardMaterial({ map: texture });
|
|
88
|
+
|
|
89
|
+
// Load with callback
|
|
90
|
+
textureLoader.load(
|
|
91
|
+
'texture.jpg',
|
|
92
|
+
(texture) => {
|
|
93
|
+
material.map = texture;
|
|
94
|
+
material.needsUpdate = true;
|
|
95
|
+
},
|
|
96
|
+
(xhr) => console.log((xhr.loaded / xhr.total * 100) + '% loaded'),
|
|
97
|
+
(error) => console.error(error)
|
|
98
|
+
);
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Cube Texture Loader
|
|
102
|
+
|
|
103
|
+
Load environment maps (skybox):
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
const cubeLoader = new THREE.CubeTextureLoader();
|
|
107
|
+
const envMap = cubeLoader.load([
|
|
108
|
+
'px.jpg', 'nx.jpg', // positive x, negative x
|
|
109
|
+
'py.jpg', 'ny.jpg', // positive y, negative y
|
|
110
|
+
'pz.jpg', 'nz.jpg' // positive z, negative z
|
|
111
|
+
]);
|
|
112
|
+
|
|
113
|
+
scene.background = envMap;
|
|
114
|
+
material.envMap = envMap;
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## DRACO Compressed Models
|
|
118
|
+
|
|
119
|
+
Smaller file sizes for GLTF:
|
|
120
|
+
|
|
121
|
+
```javascript
|
|
122
|
+
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
|
|
123
|
+
import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';
|
|
124
|
+
|
|
125
|
+
const dracoLoader = new DRACOLoader();
|
|
126
|
+
dracoLoader.setDecoderPath('path/to/draco/');
|
|
127
|
+
|
|
128
|
+
const loader = new GLTFLoader();
|
|
129
|
+
loader.setDRACOLoader(dracoLoader);
|
|
130
|
+
loader.load('compressed.gltf', (gltf) => scene.add(gltf.scene));
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## KTX2 Compressed Textures
|
|
134
|
+
|
|
135
|
+
GPU-optimized texture compression:
|
|
136
|
+
|
|
137
|
+
```javascript
|
|
138
|
+
import { KTX2Loader } from 'three/addons/loaders/KTX2Loader.js';
|
|
139
|
+
|
|
140
|
+
const ktx2Loader = new KTX2Loader();
|
|
141
|
+
ktx2Loader.setTranscoderPath('path/to/basis/');
|
|
142
|
+
ktx2Loader.detectSupport(renderer);
|
|
143
|
+
ktx2Loader.load('texture.ktx2', (texture) => {
|
|
144
|
+
material.map = texture;
|
|
145
|
+
material.needsUpdate = true;
|
|
146
|
+
});
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Common Other Loaders
|
|
150
|
+
|
|
151
|
+
```javascript
|
|
152
|
+
// STL (3D printing)
|
|
153
|
+
import { STLLoader } from 'three/addons/loaders/STLLoader.js';
|
|
154
|
+
|
|
155
|
+
// Collada (.dae)
|
|
156
|
+
import { ColladaLoader } from 'three/addons/loaders/ColladaLoader.js';
|
|
157
|
+
|
|
158
|
+
// 3DS Max
|
|
159
|
+
import { TDSLoader } from 'three/addons/loaders/TDSLoader.js';
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Best Practices
|
|
163
|
+
|
|
164
|
+
- Use GLTF/GLB for web (best compression, features)
|
|
165
|
+
- Compress with DRACO for large models
|
|
166
|
+
- Use KTX2 for textures (GPU-friendly)
|
|
167
|
+
- Enable caching: `THREE.Cache.enabled = true;`
|
|
168
|
+
- Show loading progress to users
|
|
169
|
+
- Handle errors gracefully
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Textures
|
|
2
|
+
|
|
3
|
+
Map images and data onto 3D surfaces.
|
|
4
|
+
|
|
5
|
+
## Texture Types
|
|
6
|
+
|
|
7
|
+
### Standard 2D Texture
|
|
8
|
+
```javascript
|
|
9
|
+
const texture = new THREE.Texture(image);
|
|
10
|
+
texture.needsUpdate = true; // required after manual creation
|
|
11
|
+
|
|
12
|
+
// Or use loader (auto-updates)
|
|
13
|
+
const texture = new THREE.TextureLoader().load('image.jpg');
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Canvas Texture
|
|
17
|
+
```javascript
|
|
18
|
+
const canvas = document.createElement('canvas');
|
|
19
|
+
const ctx = canvas.getContext('2d');
|
|
20
|
+
// Draw on canvas...
|
|
21
|
+
const texture = new THREE.CanvasTexture(canvas);
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Video Texture
|
|
25
|
+
```javascript
|
|
26
|
+
const video = document.createElement('video');
|
|
27
|
+
video.src = 'video.mp4';
|
|
28
|
+
video.play();
|
|
29
|
+
const texture = new THREE.VideoTexture(video);
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Data Texture
|
|
33
|
+
```javascript
|
|
34
|
+
const size = 512;
|
|
35
|
+
const data = new Uint8Array(size * size * 4);
|
|
36
|
+
// Fill data with RGBA values...
|
|
37
|
+
const texture = new THREE.DataTexture(data, size, size);
|
|
38
|
+
texture.needsUpdate = true;
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Cube Texture (Environment/Skybox)
|
|
42
|
+
```javascript
|
|
43
|
+
const loader = new THREE.CubeTextureLoader();
|
|
44
|
+
const texture = loader.load(['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg']);
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Material Maps
|
|
48
|
+
|
|
49
|
+
Multiple texture types for different effects:
|
|
50
|
+
|
|
51
|
+
```javascript
|
|
52
|
+
const material = new THREE.MeshStandardMaterial({
|
|
53
|
+
map: diffuseTexture, // base color
|
|
54
|
+
normalMap: normalTexture, // surface detail
|
|
55
|
+
roughnessMap: roughnessTexture, // surface roughness variation
|
|
56
|
+
metalnessMap: metalnessTexture, // metallic areas
|
|
57
|
+
aoMap: aoTexture, // ambient occlusion
|
|
58
|
+
emissiveMap: emissiveTexture, // glow areas
|
|
59
|
+
alphaMap: alphaTexture, // transparency
|
|
60
|
+
bumpMap: bumpTexture, // height variation
|
|
61
|
+
displacementMap: dispTexture // vertex displacement
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
// AO map requires second UV set
|
|
65
|
+
geometry.setAttribute('uv2', geometry.attributes.uv);
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Wrapping Modes
|
|
69
|
+
|
|
70
|
+
Control texture repeat behavior:
|
|
71
|
+
|
|
72
|
+
```javascript
|
|
73
|
+
texture.wrapS = THREE.RepeatWrapping; // horizontal
|
|
74
|
+
texture.wrapT = THREE.RepeatWrapping; // vertical
|
|
75
|
+
|
|
76
|
+
// Options:
|
|
77
|
+
// THREE.RepeatWrapping - tile infinitely
|
|
78
|
+
// THREE.ClampToEdgeWrapping - stretch edge pixels
|
|
79
|
+
// THREE.MirroredRepeatWrapping - mirror on each repeat
|
|
80
|
+
|
|
81
|
+
// Set repeat count
|
|
82
|
+
texture.repeat.set(4, 4);
|
|
83
|
+
|
|
84
|
+
// Offset texture
|
|
85
|
+
texture.offset.set(0.5, 0.5);
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Filtering
|
|
89
|
+
|
|
90
|
+
Control texture sampling quality:
|
|
91
|
+
|
|
92
|
+
```javascript
|
|
93
|
+
// Magnification (when texel < pixel)
|
|
94
|
+
texture.magFilter = THREE.LinearFilter; // smooth
|
|
95
|
+
// or THREE.NearestFilter // pixelated
|
|
96
|
+
|
|
97
|
+
// Minification (when texel > pixel)
|
|
98
|
+
texture.minFilter = THREE.LinearMipmapLinearFilter; // best quality
|
|
99
|
+
// Options:
|
|
100
|
+
// THREE.NearestFilter
|
|
101
|
+
// THREE.LinearFilter
|
|
102
|
+
// THREE.NearestMipmapNearestFilter
|
|
103
|
+
// THREE.NearestMipmapLinearFilter
|
|
104
|
+
// THREE.LinearMipmapNearestFilter
|
|
105
|
+
// THREE.LinearMipmapLinearFilter
|
|
106
|
+
|
|
107
|
+
// Anisotropic filtering (better at angles)
|
|
108
|
+
texture.anisotropy = renderer.capabilities.getMaxAnisotropy();
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## UV Mapping
|
|
112
|
+
|
|
113
|
+
Control how texture is mapped to geometry:
|
|
114
|
+
|
|
115
|
+
```javascript
|
|
116
|
+
// Flip texture vertically
|
|
117
|
+
texture.flipY = false;
|
|
118
|
+
|
|
119
|
+
// Rotate texture
|
|
120
|
+
texture.rotation = Math.PI / 4; // 45 degrees
|
|
121
|
+
texture.center.set(0.5, 0.5); // rotation center
|
|
122
|
+
|
|
123
|
+
// Transform UV coordinates
|
|
124
|
+
const uvAttribute = geometry.attributes.uv;
|
|
125
|
+
for (let i = 0; i < uvAttribute.count; i++) {
|
|
126
|
+
let u = uvAttribute.getX(i);
|
|
127
|
+
let v = uvAttribute.getY(i);
|
|
128
|
+
uvAttribute.setXY(i, u * 2, v * 2); // scale UVs
|
|
129
|
+
}
|
|
130
|
+
uvAttribute.needsUpdate = true;
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Color Space
|
|
134
|
+
|
|
135
|
+
Handle color space correctly:
|
|
136
|
+
|
|
137
|
+
```javascript
|
|
138
|
+
// For color data (diffuse, emissive)
|
|
139
|
+
texture.colorSpace = THREE.SRGBColorSpace;
|
|
140
|
+
|
|
141
|
+
// For non-color data (normal, roughness, etc.)
|
|
142
|
+
texture.colorSpace = THREE.NoColorSpace; // or LinearSRGBColorSpace
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Performance Optimization
|
|
146
|
+
|
|
147
|
+
```javascript
|
|
148
|
+
// Use mipmaps (auto-generated by default)
|
|
149
|
+
texture.generateMipmaps = true;
|
|
150
|
+
|
|
151
|
+
// Dispose when done
|
|
152
|
+
texture.dispose();
|
|
153
|
+
|
|
154
|
+
// Compress textures (use KTX2Loader for .ktx2 files)
|
|
155
|
+
// Reduce resolution for distant objects
|
|
156
|
+
// Use texture atlases to reduce draw calls
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Advanced Textures
|
|
160
|
+
|
|
161
|
+
```javascript
|
|
162
|
+
// 3D Texture (volumetric)
|
|
163
|
+
const texture3d = new THREE.Data3DTexture(data, width, height, depth);
|
|
164
|
+
|
|
165
|
+
// Depth Texture (for advanced effects)
|
|
166
|
+
const depthTexture = new THREE.DepthTexture(width, height);
|
|
167
|
+
|
|
168
|
+
// Compressed Texture
|
|
169
|
+
const compressedTexture = new THREE.CompressedTexture(...);
|
|
170
|
+
```
|