@hybridlabor-api/bdb-antigravity-skills 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/GEMINI.md +29 -0
- package/README.md +64 -0
- package/installer.sh +97 -0
- package/mcp_config.json +32 -0
- package/package.json +20 -0
- package/skills/global_config/MCP_Manage/SKILL.md +39 -0
- package/skills/global_config/agent-manager-skill/SKILL.md +47 -0
- package/skills/global_config/agent-memory-mcp/SKILL.md +92 -0
- package/skills/global_config/agent-orchestrator/SKILL.md +321 -0
- package/skills/global_config/agent-orchestrator/references/capability-taxonomy.md +85 -0
- package/skills/global_config/agent-orchestrator/references/orchestration-patterns.md +129 -0
- package/skills/global_config/agent-orchestrator/scripts/match_skills.py +329 -0
- package/skills/global_config/agent-orchestrator/scripts/orchestrate.py +304 -0
- package/skills/global_config/agent-orchestrator/scripts/requirements.txt +1 -0
- package/skills/global_config/agent-orchestrator/scripts/scan_registry.py +508 -0
- package/skills/global_config/agent-tool-builder/SKILL.md +714 -0
- package/skills/global_config/ai-agent-development/SKILL.md +178 -0
- package/skills/global_config/ai-product/SKILL.md +753 -0
- package/skills/global_config/api-design-principles/SKILL.md +45 -0
- package/skills/global_config/api-design-principles/assets/api-design-checklist.md +155 -0
- package/skills/global_config/api-design-principles/assets/rest-api-template.py +182 -0
- package/skills/global_config/api-design-principles/references/graphql-schema-design.md +583 -0
- package/skills/global_config/api-design-principles/references/rest-best-practices.md +408 -0
- package/skills/global_config/api-design-principles/resources/implementation-playbook.md +513 -0
- package/skills/global_config/api-patterns/SKILL.md +90 -0
- package/skills/global_config/api-patterns/api-style.md +42 -0
- package/skills/global_config/api-patterns/auth.md +24 -0
- package/skills/global_config/api-patterns/documentation.md +26 -0
- package/skills/global_config/api-patterns/graphql.md +41 -0
- package/skills/global_config/api-patterns/rate-limiting.md +31 -0
- package/skills/global_config/api-patterns/response.md +37 -0
- package/skills/global_config/api-patterns/rest.md +40 -0
- package/skills/global_config/api-patterns/scripts/api_validator.py +211 -0
- package/skills/global_config/api-patterns/security-testing.md +122 -0
- package/skills/global_config/api-patterns/trpc.md +41 -0
- package/skills/global_config/api-patterns/versioning.md +22 -0
- package/skills/global_config/apify-lead-generation/SKILL.md +131 -0
- package/skills/global_config/apify-lead-generation/reference/scripts/run_actor.js +363 -0
- package/skills/global_config/apify-ultimate-scraper/SKILL.md +241 -0
- package/skills/global_config/apify-ultimate-scraper/reference/scripts/run_actor.js +363 -0
- package/skills/global_config/architect-review/SKILL.md +177 -0
- package/skills/global_config/bash-linux/SKILL.md +209 -0
- package/skills/global_config/bdbrainstorm/SKILL.md +37 -0
- package/skills/global_config/browser-automation/SKILL.md +1116 -0
- package/skills/global_config/clean-code/SKILL.md +99 -0
- package/skills/global_config/cloudflare-workers-expert/SKILL.md +94 -0
- package/skills/global_config/concise-planning/SKILL.md +73 -0
- package/skills/global_config/copywriting/SKILL.md +254 -0
- package/skills/global_config/crewai/SKILL.md +458 -0
- package/skills/global_config/database-design/SKILL.md +62 -0
- package/skills/global_config/database-design/database-selection.md +43 -0
- package/skills/global_config/database-design/indexing.md +39 -0
- package/skills/global_config/database-design/migrations.md +48 -0
- package/skills/global_config/database-design/optimization.md +36 -0
- package/skills/global_config/database-design/orm-selection.md +30 -0
- package/skills/global_config/database-design/schema-design.md +56 -0
- package/skills/global_config/database-design/scripts/schema_validator.py +172 -0
- package/skills/global_config/debugger/SKILL.md +58 -0
- package/skills/global_config/deep-research/SKILL.md +120 -0
- package/skills/global_config/design-spells/SKILL.md +41 -0
- package/skills/global_config/design-taste-frontend/SKILL.md +247 -0
- package/skills/global_config/docker-expert/SKILL.md +418 -0
- package/skills/global_config/documentation/SKILL.md +265 -0
- package/skills/global_config/drizzle-orm-expert/SKILL.md +368 -0
- package/skills/global_config/executing-plans/SKILL.md +87 -0
- package/skills/global_config/frontend-design/LICENSE.txt +177 -0
- package/skills/global_config/frontend-design/SKILL.md +282 -0
- package/skills/global_config/frontend-dev-guidelines/SKILL.md +369 -0
- package/skills/global_config/frontend-dev-guidelines/resources/common-patterns.md +331 -0
- package/skills/global_config/frontend-dev-guidelines/resources/complete-examples.md +872 -0
- package/skills/global_config/frontend-dev-guidelines/resources/component-patterns.md +502 -0
- package/skills/global_config/frontend-dev-guidelines/resources/data-fetching.md +767 -0
- package/skills/global_config/frontend-dev-guidelines/resources/file-organization.md +502 -0
- package/skills/global_config/frontend-dev-guidelines/resources/loading-and-error-states.md +501 -0
- package/skills/global_config/frontend-dev-guidelines/resources/performance.md +406 -0
- package/skills/global_config/frontend-dev-guidelines/resources/routing-guide.md +364 -0
- package/skills/global_config/frontend-dev-guidelines/resources/styling-guide.md +428 -0
- package/skills/global_config/frontend-dev-guidelines/resources/typescript-standards.md +418 -0
- package/skills/global_config/gemini-api-dev/SKILL.md +138 -0
- package/skills/global_config/gemini-api-integration/SKILL.md +193 -0
- package/skills/global_config/geo-fundamentals/SKILL.md +165 -0
- package/skills/global_config/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/skills/global_config/git-advanced-workflows/SKILL.md +420 -0
- package/skills/global_config/git-pr-review/SKILL.md +179 -0
- package/skills/global_config/github/SKILL.md +80 -0
- package/skills/global_config/github/agents/openai.yaml +4 -0
- package/skills/global_config/github-actions-templates/SKILL.md +353 -0
- package/skills/global_config/github-workflow-automation/SKILL.md +854 -0
- package/skills/global_config/go-concurrency-patterns/SKILL.md +41 -0
- package/skills/global_config/go-concurrency-patterns/resources/implementation-playbook.md +654 -0
- package/skills/global_config/go-playwright/SKILL.md +76 -0
- package/skills/global_config/go-playwright/resources/implementation-playbook.md +110 -0
- package/skills/global_config/golang-pro/SKILL.md +181 -0
- package/skills/global_config/google-sheets-automation/SKILL.md +149 -0
- package/skills/global_config/landing-page-generator/SKILL.md +213 -0
- package/skills/global_config/landing-page-generator/references/conversion-patterns.md +176 -0
- package/skills/global_config/landing-page-generator/references/frameworks.md +177 -0
- package/skills/global_config/landing-page-generator/references/landing-page-patterns.md +98 -0
- package/skills/global_config/landing-page-generator/references/seo-checklist.md +109 -0
- package/skills/global_config/landing-page-generator/scripts/landing_page_scaffolder.py +568 -0
- package/skills/global_config/linear-claude-skill/SKILL.md +523 -0
- package/skills/global_config/llm-app-patterns/SKILL.md +768 -0
- package/skills/global_config/llm-application-dev-ai-assistant/SKILL.md +43 -0
- package/skills/global_config/llm-application-dev-ai-assistant/resources/implementation-playbook.md +1236 -0
- package/skills/global_config/llm-prompt-optimizer/SKILL.md +187 -0
- package/skills/global_config/llm-structured-output/SKILL.md +212 -0
- package/skills/global_config/local-llm-expert/SKILL.md +88 -0
- package/skills/global_config/microservices-patterns/SKILL.md +43 -0
- package/skills/global_config/microservices-patterns/resources/implementation-playbook.md +607 -0
- package/skills/global_config/modern-javascript-patterns/SKILL.md +43 -0
- package/skills/global_config/modern-javascript-patterns/resources/implementation-playbook.md +910 -0
- package/skills/global_config/monorepo-management/SKILL.md +43 -0
- package/skills/global_config/monorepo-management/resources/implementation-playbook.md +621 -0
- package/skills/global_config/n8n-code-javascript/SKILL.md +706 -0
- package/skills/global_config/n8n-code-python/SKILL.md +755 -0
- package/skills/global_config/n8n-expression-syntax/SKILL.md +528 -0
- package/skills/global_config/n8n-mcp-tools-expert/SKILL.md +654 -0
- package/skills/global_config/n8n-workflow-patterns/SKILL.md +423 -0
- package/skills/global_config/neon-postgres/SKILL.md +619 -0
- package/skills/global_config/nextjs-app-router-patterns/SKILL.md +41 -0
- package/skills/global_config/nextjs-app-router-patterns/resources/implementation-playbook.md +543 -0
- package/skills/global_config/nextjs-best-practices/SKILL.md +213 -0
- package/skills/global_config/notion-automation/SKILL.md +224 -0
- package/skills/global_config/obsidian-markdown/SKILL.md +209 -0
- package/skills/global_config/obsidian-markdown/references/CALLOUTS.md +58 -0
- package/skills/global_config/obsidian-markdown/references/EMBEDS.md +63 -0
- package/skills/global_config/obsidian-markdown/references/PROPERTIES.md +61 -0
- package/skills/global_config/openapi-spec-generation/SKILL.md +41 -0
- package/skills/global_config/openapi-spec-generation/resources/implementation-playbook.md +1027 -0
- package/skills/global_config/os-scripting/SKILL.md +433 -0
- package/skills/global_config/planning-with-files/SKILL.md +189 -0
- package/skills/global_config/planning-with-files/examples.md +202 -0
- package/skills/global_config/planning-with-files/reference.md +218 -0
- package/skills/global_config/planning-with-files/scripts/check-complete.sh +44 -0
- package/skills/global_config/planning-with-files/scripts/init-session.sh +120 -0
- package/skills/global_config/planning-with-files/templates/findings.md +95 -0
- package/skills/global_config/planning-with-files/templates/progress.md +114 -0
- package/skills/global_config/planning-with-files/templates/task_plan.md +132 -0
- package/skills/global_config/playwright-skill/API_REFERENCE.md +653 -0
- package/skills/global_config/playwright-skill/SKILL.md +469 -0
- package/skills/global_config/playwright-skill/lib/helpers.js +441 -0
- package/skills/global_config/playwright-skill/package.json +26 -0
- package/skills/global_config/playwright-skill/run.js +228 -0
- package/skills/global_config/posix-shell-pro/SKILL.md +308 -0
- package/skills/global_config/postgres-best-practices/AGENTS.md +1490 -0
- package/skills/global_config/postgres-best-practices/README.md +119 -0
- package/skills/global_config/postgres-best-practices/SKILL.md +63 -0
- package/skills/global_config/postgres-best-practices/metadata.json +13 -0
- package/skills/global_config/postgres-best-practices/rules/_contributing.md +171 -0
- package/skills/global_config/postgres-best-practices/rules/_sections.md +39 -0
- package/skills/global_config/postgres-best-practices/rules/_template.md +34 -0
- package/skills/global_config/postgres-best-practices/rules/advanced-full-text-search.md +55 -0
- package/skills/global_config/postgres-best-practices/rules/advanced-jsonb-indexing.md +49 -0
- package/skills/global_config/postgres-best-practices/rules/conn-idle-timeout.md +46 -0
- package/skills/global_config/postgres-best-practices/rules/conn-limits.md +44 -0
- package/skills/global_config/postgres-best-practices/rules/conn-pooling.md +41 -0
- package/skills/global_config/postgres-best-practices/rules/conn-prepared-statements.md +46 -0
- package/skills/global_config/postgres-best-practices/rules/data-batch-inserts.md +54 -0
- package/skills/global_config/postgres-best-practices/rules/data-n-plus-one.md +53 -0
- package/skills/global_config/postgres-best-practices/rules/data-pagination.md +50 -0
- package/skills/global_config/postgres-best-practices/rules/data-upsert.md +50 -0
- package/skills/global_config/postgres-best-practices/rules/lock-advisory.md +56 -0
- package/skills/global_config/postgres-best-practices/rules/lock-deadlock-prevention.md +68 -0
- package/skills/global_config/postgres-best-practices/rules/lock-short-transactions.md +50 -0
- package/skills/global_config/postgres-best-practices/rules/lock-skip-locked.md +54 -0
- package/skills/global_config/postgres-best-practices/rules/monitor-explain-analyze.md +45 -0
- package/skills/global_config/postgres-best-practices/rules/monitor-pg-stat-statements.md +55 -0
- package/skills/global_config/postgres-best-practices/rules/monitor-vacuum-analyze.md +55 -0
- package/skills/global_config/postgres-best-practices/rules/query-composite-indexes.md +44 -0
- package/skills/global_config/postgres-best-practices/rules/query-covering-indexes.md +40 -0
- package/skills/global_config/postgres-best-practices/rules/query-index-types.md +45 -0
- package/skills/global_config/postgres-best-practices/rules/query-missing-indexes.md +43 -0
- package/skills/global_config/postgres-best-practices/rules/query-partial-indexes.md +45 -0
- package/skills/global_config/postgres-best-practices/rules/schema-data-types.md +46 -0
- package/skills/global_config/postgres-best-practices/rules/schema-foreign-key-indexes.md +59 -0
- package/skills/global_config/postgres-best-practices/rules/schema-lowercase-identifiers.md +55 -0
- package/skills/global_config/postgres-best-practices/rules/schema-partitioning.md +55 -0
- package/skills/global_config/postgres-best-practices/rules/schema-primary-keys.md +61 -0
- package/skills/global_config/postgres-best-practices/rules/security-privileges.md +54 -0
- package/skills/global_config/postgres-best-practices/rules/security-rls-basics.md +50 -0
- package/skills/global_config/postgres-best-practices/rules/security-rls-performance.md +57 -0
- package/skills/global_config/postgresql/SKILL.md +233 -0
- package/skills/global_config/prisma-expert/SKILL.md +366 -0
- package/skills/global_config/product-manager-toolkit/SKILL.md +362 -0
- package/skills/global_config/product-manager-toolkit/references/prd_templates.md +317 -0
- package/skills/global_config/product-manager-toolkit/scripts/customer_interview_analyzer.py +441 -0
- package/skills/global_config/product-manager-toolkit/scripts/rice_prioritizer.py +296 -0
- package/skills/global_config/programmatic-seo/SKILL.md +356 -0
- package/skills/global_config/prompt-engineer/README.md +659 -0
- package/skills/global_config/prompt-engineer/SKILL.md +281 -0
- package/skills/global_config/prompt-engineering-patterns/SKILL.md +221 -0
- package/skills/global_config/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
- package/skills/global_config/prompt-engineering-patterns/assets/prompt-template-library.md +246 -0
- package/skills/global_config/prompt-engineering-patterns/references/chain-of-thought.md +399 -0
- package/skills/global_config/prompt-engineering-patterns/references/few-shot-learning.md +369 -0
- package/skills/global_config/prompt-engineering-patterns/references/prompt-optimization.md +414 -0
- package/skills/global_config/prompt-engineering-patterns/references/prompt-templates.md +470 -0
- package/skills/global_config/prompt-engineering-patterns/references/system-prompts.md +189 -0
- package/skills/global_config/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
- package/skills/global_config/python-patterns/SKILL.md +451 -0
- package/skills/global_config/python-performance-optimization/SKILL.md +44 -0
- package/skills/global_config/python-performance-optimization/resources/implementation-playbook.md +868 -0
- package/skills/global_config/python-pro/SKILL.md +161 -0
- package/skills/global_config/rag-engineer/SKILL.md +341 -0
- package/skills/global_config/rag-implementation/SKILL.md +201 -0
- package/skills/global_config/react-best-practices/AGENTS.md +2249 -0
- package/skills/global_config/react-best-practices/README.md +123 -0
- package/skills/global_config/react-best-practices/SKILL.md +131 -0
- package/skills/global_config/react-best-practices/metadata.json +15 -0
- package/skills/global_config/react-best-practices/rules/_sections.md +46 -0
- package/skills/global_config/react-best-practices/rules/_template.md +28 -0
- package/skills/global_config/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/global_config/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/skills/global_config/react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/global_config/react-best-practices/rules/async-defer-await.md +80 -0
- package/skills/global_config/react-best-practices/rules/async-dependencies.md +36 -0
- package/skills/global_config/react-best-practices/rules/async-parallel.md +28 -0
- package/skills/global_config/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/global_config/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skills/global_config/react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/global_config/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/global_config/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/global_config/react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/global_config/react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/global_config/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/global_config/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/skills/global_config/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/global_config/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/global_config/react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/global_config/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/global_config/react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/global_config/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/global_config/react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/global_config/react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/global_config/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/global_config/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/global_config/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/global_config/react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/global_config/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/global_config/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/global_config/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/global_config/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/global_config/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/global_config/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/global_config/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/global_config/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/global_config/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/global_config/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/global_config/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/global_config/react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/global_config/react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/global_config/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/global_config/react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/global_config/react-best-practices/rules/server-cache-react.md +26 -0
- package/skills/global_config/react-best-practices/rules/server-parallel-fetching.md +79 -0
- package/skills/global_config/react-best-practices/rules/server-serialization.md +38 -0
- package/skills/global_config/react-component-performance/SKILL.md +139 -0
- package/skills/global_config/react-component-performance/agents/openai.yaml +4 -0
- package/skills/global_config/react-component-performance/references/examples.md +88 -0
- package/skills/global_config/react-patterns/SKILL.md +216 -0
- package/skills/global_config/readme/SKILL.md +848 -0
- package/skills/global_config/remotion/SKILL.md +404 -0
- package/skills/global_config/schema-markup/SKILL.md +363 -0
- package/skills/global_config/senior-frontend/SKILL.md +495 -0
- package/skills/global_config/senior-frontend/references/frontend_best_practices.md +806 -0
- package/skills/global_config/senior-frontend/references/nextjs_optimization_guide.md +724 -0
- package/skills/global_config/senior-frontend/references/react_patterns.md +746 -0
- package/skills/global_config/senior-frontend/scripts/bundle_analyzer.py +407 -0
- package/skills/global_config/senior-frontend/scripts/component_generator.py +329 -0
- package/skills/global_config/senior-frontend/scripts/frontend_scaffolder.py +1005 -0
- package/skills/global_config/senior-fullstack/SKILL.md +220 -0
- package/skills/global_config/senior-fullstack/references/architecture_patterns.md +103 -0
- package/skills/global_config/senior-fullstack/references/development_workflows.md +103 -0
- package/skills/global_config/senior-fullstack/references/tech_stack_guide.md +103 -0
- package/skills/global_config/senior-fullstack/scripts/code_quality_analyzer.py +114 -0
- package/skills/global_config/senior-fullstack/scripts/fullstack_scaffolder.py +114 -0
- package/skills/global_config/senior-fullstack/scripts/project_scaffolder.py +114 -0
- package/skills/global_config/seo/SKILL.md +143 -0
- package/skills/global_config/seo/references/cwv-thresholds.md +108 -0
- package/skills/global_config/seo/references/eeat-framework.md +214 -0
- package/skills/global_config/seo/references/quality-gates.md +155 -0
- package/skills/global_config/seo/references/schema-types.md +118 -0
- package/skills/global_config/seo-audit/SKILL.md +492 -0
- package/skills/global_config/seo-technical/SKILL.md +179 -0
- package/skills/global_config/shadcn/SKILL.md +254 -0
- package/skills/global_config/shadcn/agents/openai.yml +5 -0
- package/skills/global_config/shadcn/assets/shadcn-small.png +0 -0
- package/skills/global_config/shadcn/assets/shadcn.png +0 -0
- package/skills/global_config/shadcn/cli.md +255 -0
- package/skills/global_config/shadcn/customization.md +202 -0
- package/skills/global_config/shadcn/evals/evals.json +47 -0
- package/skills/global_config/shadcn/mcp.md +94 -0
- package/skills/global_config/shadcn/rules/base-vs-radix.md +306 -0
- package/skills/global_config/shadcn/rules/composition.md +195 -0
- package/skills/global_config/shadcn/rules/forms.md +192 -0
- package/skills/global_config/shadcn/rules/icons.md +101 -0
- package/skills/global_config/shadcn/rules/styling.md +162 -0
- package/skills/global_config/simplify-code/SKILL.md +183 -0
- package/skills/global_config/slack-automation/SKILL.md +197 -0
- package/skills/global_config/software-architecture/SKILL.md +86 -0
- package/skills/global_config/spline-3d-integration/SKILL.md +90 -0
- package/skills/global_config/spline-3d-integration/examples/interactive-scene.tsx +198 -0
- package/skills/global_config/spline-3d-integration/examples/react-spline-wrapper.tsx +124 -0
- package/skills/global_config/spline-3d-integration/examples/vanilla-embed.html +146 -0
- package/skills/global_config/spline-3d-integration/guides/COMMON_PROBLEMS.md +262 -0
- package/skills/global_config/spline-3d-integration/guides/PERFORMANCE.md +163 -0
- package/skills/global_config/spline-3d-integration/guides/REACT_INTEGRATION.md +212 -0
- package/skills/global_config/spline-3d-integration/guides/VANILLA_INTEGRATION.md +203 -0
- package/skills/global_config/subagent-driven-development/SKILL.md +247 -0
- package/skills/global_config/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
- package/skills/global_config/subagent-driven-development/implementer-prompt.md +78 -0
- package/skills/global_config/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/skills/global_config/systematic-debugging/CREATION-LOG.md +119 -0
- package/skills/global_config/systematic-debugging/SKILL.md +303 -0
- package/skills/global_config/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/skills/global_config/systematic-debugging/condition-based-waiting.md +115 -0
- package/skills/global_config/systematic-debugging/defense-in-depth.md +122 -0
- package/skills/global_config/systematic-debugging/find-polluter.sh +63 -0
- package/skills/global_config/systematic-debugging/root-cause-tracing.md +169 -0
- package/skills/global_config/systematic-debugging/test-academic.md +14 -0
- package/skills/global_config/systematic-debugging/test-pressure-1.md +58 -0
- package/skills/global_config/systematic-debugging/test-pressure-2.md +68 -0
- package/skills/global_config/systematic-debugging/test-pressure-3.md +69 -0
- package/skills/global_config/tailwind-patterns/SKILL.md +279 -0
- package/skills/global_config/tanstack-query-expert/SKILL.md +247 -0
- package/skills/global_config/tdd-workflow/SKILL.md +159 -0
- package/skills/global_config/test-driven-development/SKILL.md +378 -0
- package/skills/global_config/test-driven-development/testing-anti-patterns.md +299 -0
- package/skills/global_config/threejs-skills/SKILL.md +720 -0
- package/skills/global_config/tmux/SKILL.md +375 -0
- package/skills/global_config/turborepo-caching/SKILL.md +427 -0
- package/skills/global_config/typescript-pro/SKILL.md +58 -0
- package/skills/global_config/ui-component/SKILL.md +104 -0
- package/skills/global_config/ui-page/SKILL.md +100 -0
- package/skills/global_config/ui-pattern/SKILL.md +92 -0
- package/skills/global_config/ui-review/SKILL.md +90 -0
- package/skills/global_config/ui-tokens/SKILL.md +73 -0
- package/skills/global_config/ui-ux-pro-max/SKILL.md +361 -0
- package/skills/global_config/ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/global_config/ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/global_config/ui-ux-pro-max/data/icons.csv +101 -0
- package/skills/global_config/ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/global_config/ui-ux-pro-max/data/products.csv +97 -0
- package/skills/global_config/ui-ux-pro-max/data/prompts.csv +24 -0
- package/skills/global_config/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills/global_config/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/global_config/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills/global_config/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/global_config/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills/global_config/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills/global_config/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/global_config/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/global_config/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills/global_config/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/global_config/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/global_config/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/global_config/ui-ux-pro-max/data/styles.csv +59 -0
- package/skills/global_config/ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/global_config/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills/global_config/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/global_config/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills/global_config/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
- package/skills/global_config/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
- package/skills/global_config/ui-ux-pro-max/scripts/core.py +257 -0
- package/skills/global_config/ui-ux-pro-max/scripts/design_system.py +487 -0
- package/skills/global_config/ui-ux-pro-max/scripts/search.py +76 -0
- package/skills/global_config/using-neon/SKILL.md +90 -0
- package/skills/global_config/ux-audit/SKILL.md +66 -0
- package/skills/global_config/ux-feedback/SKILL.md +68 -0
- package/skills/global_config/ux-flow/SKILL.md +72 -0
- package/skills/global_config/ux-persuasion-engineer/SKILL.md +119 -0
- package/skills/global_config/vector-database-engineer/SKILL.md +68 -0
- package/skills/global_config/vercel-ai-sdk-expert/SKILL.md +227 -0
- package/skills/global_config/vercel-deployment/SKILL.md +682 -0
- package/skills/global_config/wcag-audit-patterns/SKILL.md +49 -0
- package/skills/global_config/wcag-audit-patterns/resources/implementation-playbook.md +541 -0
- package/skills/global_config/web-artifacts-builder/LICENSE.txt +202 -0
- package/skills/global_config/web-artifacts-builder/SKILL.md +84 -0
- package/skills/global_config/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/skills/global_config/web-artifacts-builder/scripts/init-artifact.sh +322 -0
- package/skills/global_config/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/skills/global_config/web-performance-optimization/SKILL.md +654 -0
- package/skills/global_config/web-scraper/SKILL.md +757 -0
- package/skills/global_config/web-scraper/references/data-transforms.md +397 -0
- package/skills/global_config/web-scraper/references/extraction-patterns.md +475 -0
- package/skills/global_config/web-scraper/references/output-templates.md +481 -0
- package/skills/global_config/webapp-testing/LICENSE.txt +202 -0
- package/skills/global_config/webapp-testing/SKILL.md +106 -0
- package/skills/global_config/webapp-testing/scripts/with_server.py +106 -0
- package/skills/global_config/writing-plans/SKILL.md +127 -0
- package/skills/global_config/zustand-store-ts/SKILL.md +79 -0
- package/skills/global_legacy/agent-manager-skill/SKILL.md +47 -0
- package/skills/global_legacy/agent-memory-mcp/SKILL.md +92 -0
- package/skills/global_legacy/agent-orchestrator/SKILL.md +321 -0
- package/skills/global_legacy/agent-orchestrator/references/capability-taxonomy.md +85 -0
- package/skills/global_legacy/agent-orchestrator/references/orchestration-patterns.md +129 -0
- package/skills/global_legacy/agent-orchestrator/scripts/match_skills.py +329 -0
- package/skills/global_legacy/agent-orchestrator/scripts/orchestrate.py +304 -0
- package/skills/global_legacy/agent-orchestrator/scripts/requirements.txt +1 -0
- package/skills/global_legacy/agent-orchestrator/scripts/scan_registry.py +508 -0
- package/skills/global_legacy/agent-tool-builder/SKILL.md +714 -0
- package/skills/global_legacy/ai-agent-development/SKILL.md +178 -0
- package/skills/global_legacy/ai-product/SKILL.md +753 -0
- package/skills/global_legacy/api-design-principles/SKILL.md +45 -0
- package/skills/global_legacy/api-design-principles/assets/api-design-checklist.md +155 -0
- package/skills/global_legacy/api-design-principles/assets/rest-api-template.py +182 -0
- package/skills/global_legacy/api-design-principles/references/graphql-schema-design.md +583 -0
- package/skills/global_legacy/api-design-principles/references/rest-best-practices.md +408 -0
- package/skills/global_legacy/api-design-principles/resources/implementation-playbook.md +513 -0
- package/skills/global_legacy/api-patterns/SKILL.md +90 -0
- package/skills/global_legacy/api-patterns/api-style.md +42 -0
- package/skills/global_legacy/api-patterns/auth.md +24 -0
- package/skills/global_legacy/api-patterns/documentation.md +26 -0
- package/skills/global_legacy/api-patterns/graphql.md +41 -0
- package/skills/global_legacy/api-patterns/rate-limiting.md +31 -0
- package/skills/global_legacy/api-patterns/response.md +37 -0
- package/skills/global_legacy/api-patterns/rest.md +40 -0
- package/skills/global_legacy/api-patterns/scripts/api_validator.py +211 -0
- package/skills/global_legacy/api-patterns/security-testing.md +122 -0
- package/skills/global_legacy/api-patterns/trpc.md +41 -0
- package/skills/global_legacy/api-patterns/versioning.md +22 -0
- package/skills/global_legacy/apify-lead-generation/SKILL.md +131 -0
- package/skills/global_legacy/apify-lead-generation/reference/scripts/run_actor.js +363 -0
- package/skills/global_legacy/apify-ultimate-scraper/SKILL.md +241 -0
- package/skills/global_legacy/apify-ultimate-scraper/reference/scripts/run_actor.js +363 -0
- package/skills/global_legacy/architect-review/SKILL.md +177 -0
- package/skills/global_legacy/bash-linux/SKILL.md +209 -0
- package/skills/global_legacy/brainstorming/SKILL.md +237 -0
- package/skills/global_legacy/browser-automation/SKILL.md +1116 -0
- package/skills/global_legacy/clean-code/SKILL.md +99 -0
- package/skills/global_legacy/cloudflare-workers-expert/SKILL.md +94 -0
- package/skills/global_legacy/concise-planning/SKILL.md +73 -0
- package/skills/global_legacy/copywriting/SKILL.md +254 -0
- package/skills/global_legacy/crewai/SKILL.md +458 -0
- package/skills/global_legacy/database-design/SKILL.md +62 -0
- package/skills/global_legacy/database-design/database-selection.md +43 -0
- package/skills/global_legacy/database-design/indexing.md +39 -0
- package/skills/global_legacy/database-design/migrations.md +48 -0
- package/skills/global_legacy/database-design/optimization.md +36 -0
- package/skills/global_legacy/database-design/orm-selection.md +30 -0
- package/skills/global_legacy/database-design/schema-design.md +56 -0
- package/skills/global_legacy/database-design/scripts/schema_validator.py +172 -0
- package/skills/global_legacy/debugger/SKILL.md +58 -0
- package/skills/global_legacy/deep-research/SKILL.md +120 -0
- package/skills/global_legacy/design-spells/SKILL.md +41 -0
- package/skills/global_legacy/design-taste-frontend/SKILL.md +247 -0
- package/skills/global_legacy/docker-expert/SKILL.md +418 -0
- package/skills/global_legacy/documentation/SKILL.md +265 -0
- package/skills/global_legacy/drizzle-orm-expert/SKILL.md +368 -0
- package/skills/global_legacy/executing-plans/SKILL.md +87 -0
- package/skills/global_legacy/frontend-design/LICENSE.txt +177 -0
- package/skills/global_legacy/frontend-design/SKILL.md +282 -0
- package/skills/global_legacy/frontend-dev-guidelines/SKILL.md +369 -0
- package/skills/global_legacy/frontend-dev-guidelines/resources/common-patterns.md +331 -0
- package/skills/global_legacy/frontend-dev-guidelines/resources/complete-examples.md +872 -0
- package/skills/global_legacy/frontend-dev-guidelines/resources/component-patterns.md +502 -0
- package/skills/global_legacy/frontend-dev-guidelines/resources/data-fetching.md +767 -0
- package/skills/global_legacy/frontend-dev-guidelines/resources/file-organization.md +502 -0
- package/skills/global_legacy/frontend-dev-guidelines/resources/loading-and-error-states.md +501 -0
- package/skills/global_legacy/frontend-dev-guidelines/resources/performance.md +406 -0
- package/skills/global_legacy/frontend-dev-guidelines/resources/routing-guide.md +364 -0
- package/skills/global_legacy/frontend-dev-guidelines/resources/styling-guide.md +428 -0
- package/skills/global_legacy/frontend-dev-guidelines/resources/typescript-standards.md +418 -0
- package/skills/global_legacy/gemini-api-dev/SKILL.md +138 -0
- package/skills/global_legacy/gemini-api-integration/SKILL.md +193 -0
- package/skills/global_legacy/geo-fundamentals/SKILL.md +165 -0
- package/skills/global_legacy/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/skills/global_legacy/git-advanced-workflows/SKILL.md +420 -0
- package/skills/global_legacy/git-pr-review/SKILL.md +179 -0
- package/skills/global_legacy/github/SKILL.md +80 -0
- package/skills/global_legacy/github/agents/openai.yaml +4 -0
- package/skills/global_legacy/github-actions-templates/SKILL.md +353 -0
- package/skills/global_legacy/github-workflow-automation/SKILL.md +854 -0
- package/skills/global_legacy/go-concurrency-patterns/SKILL.md +41 -0
- package/skills/global_legacy/go-concurrency-patterns/resources/implementation-playbook.md +654 -0
- package/skills/global_legacy/go-playwright/SKILL.md +76 -0
- package/skills/global_legacy/go-playwright/resources/implementation-playbook.md +110 -0
- package/skills/global_legacy/golang-pro/SKILL.md +181 -0
- package/skills/global_legacy/google-sheets-automation/SKILL.md +149 -0
- package/skills/global_legacy/landing-page-generator/SKILL.md +213 -0
- package/skills/global_legacy/landing-page-generator/references/conversion-patterns.md +176 -0
- package/skills/global_legacy/landing-page-generator/references/frameworks.md +177 -0
- package/skills/global_legacy/landing-page-generator/references/landing-page-patterns.md +98 -0
- package/skills/global_legacy/landing-page-generator/references/seo-checklist.md +109 -0
- package/skills/global_legacy/landing-page-generator/scripts/landing_page_scaffolder.py +568 -0
- package/skills/global_legacy/linear-claude-skill/SKILL.md +523 -0
- package/skills/global_legacy/llm-app-patterns/SKILL.md +768 -0
- package/skills/global_legacy/llm-application-dev-ai-assistant/SKILL.md +43 -0
- package/skills/global_legacy/llm-application-dev-ai-assistant/resources/implementation-playbook.md +1236 -0
- package/skills/global_legacy/llm-prompt-optimizer/SKILL.md +187 -0
- package/skills/global_legacy/llm-structured-output/SKILL.md +212 -0
- package/skills/global_legacy/local-llm-expert/SKILL.md +88 -0
- package/skills/global_legacy/microservices-patterns/SKILL.md +43 -0
- package/skills/global_legacy/microservices-patterns/resources/implementation-playbook.md +607 -0
- package/skills/global_legacy/modern-javascript-patterns/SKILL.md +43 -0
- package/skills/global_legacy/modern-javascript-patterns/resources/implementation-playbook.md +910 -0
- package/skills/global_legacy/monorepo-management/SKILL.md +43 -0
- package/skills/global_legacy/monorepo-management/resources/implementation-playbook.md +621 -0
- package/skills/global_legacy/n8n-code-javascript/SKILL.md +706 -0
- package/skills/global_legacy/n8n-code-python/SKILL.md +755 -0
- package/skills/global_legacy/n8n-expression-syntax/SKILL.md +528 -0
- package/skills/global_legacy/n8n-mcp-tools-expert/SKILL.md +654 -0
- package/skills/global_legacy/n8n-workflow-patterns/SKILL.md +423 -0
- package/skills/global_legacy/neon-postgres/SKILL.md +619 -0
- package/skills/global_legacy/nextjs-app-router-patterns/SKILL.md +41 -0
- package/skills/global_legacy/nextjs-app-router-patterns/resources/implementation-playbook.md +543 -0
- package/skills/global_legacy/nextjs-best-practices/SKILL.md +213 -0
- package/skills/global_legacy/notion-automation/SKILL.md +224 -0
- package/skills/global_legacy/obsidian-markdown/SKILL.md +209 -0
- package/skills/global_legacy/obsidian-markdown/references/CALLOUTS.md +58 -0
- package/skills/global_legacy/obsidian-markdown/references/EMBEDS.md +63 -0
- package/skills/global_legacy/obsidian-markdown/references/PROPERTIES.md +61 -0
- package/skills/global_legacy/openapi-spec-generation/SKILL.md +41 -0
- package/skills/global_legacy/openapi-spec-generation/resources/implementation-playbook.md +1027 -0
- package/skills/global_legacy/os-scripting/SKILL.md +433 -0
- package/skills/global_legacy/planning-with-files/SKILL.md +189 -0
- package/skills/global_legacy/planning-with-files/examples.md +202 -0
- package/skills/global_legacy/planning-with-files/reference.md +218 -0
- package/skills/global_legacy/planning-with-files/scripts/check-complete.sh +44 -0
- package/skills/global_legacy/planning-with-files/scripts/init-session.sh +120 -0
- package/skills/global_legacy/planning-with-files/templates/findings.md +95 -0
- package/skills/global_legacy/planning-with-files/templates/progress.md +114 -0
- package/skills/global_legacy/planning-with-files/templates/task_plan.md +132 -0
- package/skills/global_legacy/playwright-skill/API_REFERENCE.md +653 -0
- package/skills/global_legacy/playwright-skill/SKILL.md +469 -0
- package/skills/global_legacy/playwright-skill/lib/helpers.js +441 -0
- package/skills/global_legacy/playwright-skill/package.json +26 -0
- package/skills/global_legacy/playwright-skill/run.js +228 -0
- package/skills/global_legacy/posix-shell-pro/SKILL.md +308 -0
- package/skills/global_legacy/postgres-best-practices/AGENTS.md +1490 -0
- package/skills/global_legacy/postgres-best-practices/README.md +119 -0
- package/skills/global_legacy/postgres-best-practices/SKILL.md +63 -0
- package/skills/global_legacy/postgres-best-practices/metadata.json +13 -0
- package/skills/global_legacy/postgres-best-practices/rules/_contributing.md +171 -0
- package/skills/global_legacy/postgres-best-practices/rules/_sections.md +39 -0
- package/skills/global_legacy/postgres-best-practices/rules/_template.md +34 -0
- package/skills/global_legacy/postgres-best-practices/rules/advanced-full-text-search.md +55 -0
- package/skills/global_legacy/postgres-best-practices/rules/advanced-jsonb-indexing.md +49 -0
- package/skills/global_legacy/postgres-best-practices/rules/conn-idle-timeout.md +46 -0
- package/skills/global_legacy/postgres-best-practices/rules/conn-limits.md +44 -0
- package/skills/global_legacy/postgres-best-practices/rules/conn-pooling.md +41 -0
- package/skills/global_legacy/postgres-best-practices/rules/conn-prepared-statements.md +46 -0
- package/skills/global_legacy/postgres-best-practices/rules/data-batch-inserts.md +54 -0
- package/skills/global_legacy/postgres-best-practices/rules/data-n-plus-one.md +53 -0
- package/skills/global_legacy/postgres-best-practices/rules/data-pagination.md +50 -0
- package/skills/global_legacy/postgres-best-practices/rules/data-upsert.md +50 -0
- package/skills/global_legacy/postgres-best-practices/rules/lock-advisory.md +56 -0
- package/skills/global_legacy/postgres-best-practices/rules/lock-deadlock-prevention.md +68 -0
- package/skills/global_legacy/postgres-best-practices/rules/lock-short-transactions.md +50 -0
- package/skills/global_legacy/postgres-best-practices/rules/lock-skip-locked.md +54 -0
- package/skills/global_legacy/postgres-best-practices/rules/monitor-explain-analyze.md +45 -0
- package/skills/global_legacy/postgres-best-practices/rules/monitor-pg-stat-statements.md +55 -0
- package/skills/global_legacy/postgres-best-practices/rules/monitor-vacuum-analyze.md +55 -0
- package/skills/global_legacy/postgres-best-practices/rules/query-composite-indexes.md +44 -0
- package/skills/global_legacy/postgres-best-practices/rules/query-covering-indexes.md +40 -0
- package/skills/global_legacy/postgres-best-practices/rules/query-index-types.md +45 -0
- package/skills/global_legacy/postgres-best-practices/rules/query-missing-indexes.md +43 -0
- package/skills/global_legacy/postgres-best-practices/rules/query-partial-indexes.md +45 -0
- package/skills/global_legacy/postgres-best-practices/rules/schema-data-types.md +46 -0
- package/skills/global_legacy/postgres-best-practices/rules/schema-foreign-key-indexes.md +59 -0
- package/skills/global_legacy/postgres-best-practices/rules/schema-lowercase-identifiers.md +55 -0
- package/skills/global_legacy/postgres-best-practices/rules/schema-partitioning.md +55 -0
- package/skills/global_legacy/postgres-best-practices/rules/schema-primary-keys.md +61 -0
- package/skills/global_legacy/postgres-best-practices/rules/security-privileges.md +54 -0
- package/skills/global_legacy/postgres-best-practices/rules/security-rls-basics.md +50 -0
- package/skills/global_legacy/postgres-best-practices/rules/security-rls-performance.md +57 -0
- package/skills/global_legacy/postgresql/SKILL.md +233 -0
- package/skills/global_legacy/prisma-expert/SKILL.md +366 -0
- package/skills/global_legacy/product-manager-toolkit/SKILL.md +362 -0
- package/skills/global_legacy/product-manager-toolkit/references/prd_templates.md +317 -0
- package/skills/global_legacy/product-manager-toolkit/scripts/customer_interview_analyzer.py +441 -0
- package/skills/global_legacy/product-manager-toolkit/scripts/rice_prioritizer.py +296 -0
- package/skills/global_legacy/programmatic-seo/SKILL.md +356 -0
- package/skills/global_legacy/prompt-engineer/README.md +659 -0
- package/skills/global_legacy/prompt-engineer/SKILL.md +281 -0
- package/skills/global_legacy/prompt-engineering-patterns/SKILL.md +221 -0
- package/skills/global_legacy/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
- package/skills/global_legacy/prompt-engineering-patterns/assets/prompt-template-library.md +246 -0
- package/skills/global_legacy/prompt-engineering-patterns/references/chain-of-thought.md +399 -0
- package/skills/global_legacy/prompt-engineering-patterns/references/few-shot-learning.md +369 -0
- package/skills/global_legacy/prompt-engineering-patterns/references/prompt-optimization.md +414 -0
- package/skills/global_legacy/prompt-engineering-patterns/references/prompt-templates.md +470 -0
- package/skills/global_legacy/prompt-engineering-patterns/references/system-prompts.md +189 -0
- package/skills/global_legacy/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
- package/skills/global_legacy/python-patterns/SKILL.md +451 -0
- package/skills/global_legacy/python-performance-optimization/SKILL.md +44 -0
- package/skills/global_legacy/python-performance-optimization/resources/implementation-playbook.md +868 -0
- package/skills/global_legacy/python-pro/SKILL.md +161 -0
- package/skills/global_legacy/rag-engineer/SKILL.md +341 -0
- package/skills/global_legacy/rag-implementation/SKILL.md +201 -0
- package/skills/global_legacy/react-best-practices/AGENTS.md +2249 -0
- package/skills/global_legacy/react-best-practices/README.md +123 -0
- package/skills/global_legacy/react-best-practices/SKILL.md +131 -0
- package/skills/global_legacy/react-best-practices/metadata.json +15 -0
- package/skills/global_legacy/react-best-practices/rules/_sections.md +46 -0
- package/skills/global_legacy/react-best-practices/rules/_template.md +28 -0
- package/skills/global_legacy/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/global_legacy/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/skills/global_legacy/react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/global_legacy/react-best-practices/rules/async-defer-await.md +80 -0
- package/skills/global_legacy/react-best-practices/rules/async-dependencies.md +36 -0
- package/skills/global_legacy/react-best-practices/rules/async-parallel.md +28 -0
- package/skills/global_legacy/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/global_legacy/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skills/global_legacy/react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/global_legacy/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/global_legacy/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/global_legacy/react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/global_legacy/react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/global_legacy/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/global_legacy/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/skills/global_legacy/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/global_legacy/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/global_legacy/react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/global_legacy/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/global_legacy/react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/global_legacy/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/global_legacy/react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/global_legacy/react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/global_legacy/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/global_legacy/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/global_legacy/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/global_legacy/react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/global_legacy/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/global_legacy/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/global_legacy/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/global_legacy/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/global_legacy/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/global_legacy/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/global_legacy/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/global_legacy/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/global_legacy/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/global_legacy/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/global_legacy/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/global_legacy/react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/global_legacy/react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/global_legacy/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/global_legacy/react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/global_legacy/react-best-practices/rules/server-cache-react.md +26 -0
- package/skills/global_legacy/react-best-practices/rules/server-parallel-fetching.md +79 -0
- package/skills/global_legacy/react-best-practices/rules/server-serialization.md +38 -0
- package/skills/global_legacy/react-component-performance/SKILL.md +139 -0
- package/skills/global_legacy/react-component-performance/agents/openai.yaml +4 -0
- package/skills/global_legacy/react-component-performance/references/examples.md +88 -0
- package/skills/global_legacy/react-patterns/SKILL.md +216 -0
- package/skills/global_legacy/readme/SKILL.md +848 -0
- package/skills/global_legacy/remotion/SKILL.md +404 -0
- package/skills/global_legacy/schema-markup/SKILL.md +363 -0
- package/skills/global_legacy/senior-frontend/SKILL.md +495 -0
- package/skills/global_legacy/senior-frontend/references/frontend_best_practices.md +806 -0
- package/skills/global_legacy/senior-frontend/references/nextjs_optimization_guide.md +724 -0
- package/skills/global_legacy/senior-frontend/references/react_patterns.md +746 -0
- package/skills/global_legacy/senior-frontend/scripts/bundle_analyzer.py +407 -0
- package/skills/global_legacy/senior-frontend/scripts/component_generator.py +329 -0
- package/skills/global_legacy/senior-frontend/scripts/frontend_scaffolder.py +1005 -0
- package/skills/global_legacy/senior-fullstack/SKILL.md +220 -0
- package/skills/global_legacy/senior-fullstack/references/architecture_patterns.md +103 -0
- package/skills/global_legacy/senior-fullstack/references/development_workflows.md +103 -0
- package/skills/global_legacy/senior-fullstack/references/tech_stack_guide.md +103 -0
- package/skills/global_legacy/senior-fullstack/scripts/code_quality_analyzer.py +114 -0
- package/skills/global_legacy/senior-fullstack/scripts/fullstack_scaffolder.py +114 -0
- package/skills/global_legacy/senior-fullstack/scripts/project_scaffolder.py +114 -0
- package/skills/global_legacy/seo/SKILL.md +143 -0
- package/skills/global_legacy/seo/references/cwv-thresholds.md +108 -0
- package/skills/global_legacy/seo/references/eeat-framework.md +214 -0
- package/skills/global_legacy/seo/references/quality-gates.md +155 -0
- package/skills/global_legacy/seo/references/schema-types.md +118 -0
- package/skills/global_legacy/seo-audit/SKILL.md +492 -0
- package/skills/global_legacy/seo-technical/SKILL.md +179 -0
- package/skills/global_legacy/shadcn/SKILL.md +254 -0
- package/skills/global_legacy/shadcn/agents/openai.yml +5 -0
- package/skills/global_legacy/shadcn/assets/shadcn-small.png +0 -0
- package/skills/global_legacy/shadcn/assets/shadcn.png +0 -0
- package/skills/global_legacy/shadcn/cli.md +255 -0
- package/skills/global_legacy/shadcn/customization.md +202 -0
- package/skills/global_legacy/shadcn/evals/evals.json +47 -0
- package/skills/global_legacy/shadcn/mcp.md +94 -0
- package/skills/global_legacy/shadcn/rules/base-vs-radix.md +306 -0
- package/skills/global_legacy/shadcn/rules/composition.md +195 -0
- package/skills/global_legacy/shadcn/rules/forms.md +192 -0
- package/skills/global_legacy/shadcn/rules/icons.md +101 -0
- package/skills/global_legacy/shadcn/rules/styling.md +162 -0
- package/skills/global_legacy/simplify-code/SKILL.md +183 -0
- package/skills/global_legacy/slack-automation/SKILL.md +197 -0
- package/skills/global_legacy/software-architecture/SKILL.md +86 -0
- package/skills/global_legacy/spline-3d-integration/SKILL.md +90 -0
- package/skills/global_legacy/spline-3d-integration/examples/interactive-scene.tsx +198 -0
- package/skills/global_legacy/spline-3d-integration/examples/react-spline-wrapper.tsx +124 -0
- package/skills/global_legacy/spline-3d-integration/examples/vanilla-embed.html +146 -0
- package/skills/global_legacy/spline-3d-integration/guides/COMMON_PROBLEMS.md +262 -0
- package/skills/global_legacy/spline-3d-integration/guides/PERFORMANCE.md +163 -0
- package/skills/global_legacy/spline-3d-integration/guides/REACT_INTEGRATION.md +212 -0
- package/skills/global_legacy/spline-3d-integration/guides/VANILLA_INTEGRATION.md +203 -0
- package/skills/global_legacy/subagent-driven-development/SKILL.md +247 -0
- package/skills/global_legacy/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
- package/skills/global_legacy/subagent-driven-development/implementer-prompt.md +78 -0
- package/skills/global_legacy/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/skills/global_legacy/systematic-debugging/CREATION-LOG.md +119 -0
- package/skills/global_legacy/systematic-debugging/SKILL.md +303 -0
- package/skills/global_legacy/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/skills/global_legacy/systematic-debugging/condition-based-waiting.md +115 -0
- package/skills/global_legacy/systematic-debugging/defense-in-depth.md +122 -0
- package/skills/global_legacy/systematic-debugging/find-polluter.sh +63 -0
- package/skills/global_legacy/systematic-debugging/root-cause-tracing.md +169 -0
- package/skills/global_legacy/systematic-debugging/test-academic.md +14 -0
- package/skills/global_legacy/systematic-debugging/test-pressure-1.md +58 -0
- package/skills/global_legacy/systematic-debugging/test-pressure-2.md +68 -0
- package/skills/global_legacy/systematic-debugging/test-pressure-3.md +69 -0
- package/skills/global_legacy/tailwind-patterns/SKILL.md +279 -0
- package/skills/global_legacy/tanstack-query-expert/SKILL.md +247 -0
- package/skills/global_legacy/tdd-workflow/SKILL.md +159 -0
- package/skills/global_legacy/test-driven-development/SKILL.md +378 -0
- package/skills/global_legacy/test-driven-development/testing-anti-patterns.md +299 -0
- package/skills/global_legacy/threejs-skills/SKILL.md +720 -0
- package/skills/global_legacy/tmux/SKILL.md +375 -0
- package/skills/global_legacy/turborepo-caching/SKILL.md +427 -0
- package/skills/global_legacy/typescript-pro/SKILL.md +58 -0
- package/skills/global_legacy/ui-component/SKILL.md +104 -0
- package/skills/global_legacy/ui-page/SKILL.md +100 -0
- package/skills/global_legacy/ui-pattern/SKILL.md +92 -0
- package/skills/global_legacy/ui-review/SKILL.md +90 -0
- package/skills/global_legacy/ui-tokens/SKILL.md +73 -0
- package/skills/global_legacy/ui-ux-pro-max/SKILL.md +361 -0
- package/skills/global_legacy/ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/global_legacy/ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/global_legacy/ui-ux-pro-max/data/icons.csv +101 -0
- package/skills/global_legacy/ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/global_legacy/ui-ux-pro-max/data/products.csv +97 -0
- package/skills/global_legacy/ui-ux-pro-max/data/prompts.csv +24 -0
- package/skills/global_legacy/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills/global_legacy/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/global_legacy/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills/global_legacy/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/global_legacy/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills/global_legacy/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills/global_legacy/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/global_legacy/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/global_legacy/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills/global_legacy/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/global_legacy/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/global_legacy/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/global_legacy/ui-ux-pro-max/data/styles.csv +59 -0
- package/skills/global_legacy/ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/global_legacy/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills/global_legacy/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/global_legacy/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills/global_legacy/ui-ux-pro-max/scripts/core.py +257 -0
- package/skills/global_legacy/ui-ux-pro-max/scripts/design_system.py +487 -0
- package/skills/global_legacy/ui-ux-pro-max/scripts/search.py +76 -0
- package/skills/global_legacy/using-neon/SKILL.md +90 -0
- package/skills/global_legacy/ux-audit/SKILL.md +66 -0
- package/skills/global_legacy/ux-feedback/SKILL.md +68 -0
- package/skills/global_legacy/ux-flow/SKILL.md +72 -0
- package/skills/global_legacy/ux-persuasion-engineer/SKILL.md +119 -0
- package/skills/global_legacy/vector-database-engineer/SKILL.md +68 -0
- package/skills/global_legacy/vercel-ai-sdk-expert/SKILL.md +227 -0
- package/skills/global_legacy/vercel-deployment/SKILL.md +682 -0
- package/skills/global_legacy/wcag-audit-patterns/SKILL.md +49 -0
- package/skills/global_legacy/wcag-audit-patterns/resources/implementation-playbook.md +541 -0
- package/skills/global_legacy/web-artifacts-builder/LICENSE.txt +202 -0
- package/skills/global_legacy/web-artifacts-builder/SKILL.md +84 -0
- package/skills/global_legacy/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/skills/global_legacy/web-artifacts-builder/scripts/init-artifact.sh +322 -0
- package/skills/global_legacy/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/skills/global_legacy/web-performance-optimization/SKILL.md +654 -0
- package/skills/global_legacy/web-scraper/SKILL.md +757 -0
- package/skills/global_legacy/web-scraper/references/data-transforms.md +397 -0
- package/skills/global_legacy/web-scraper/references/extraction-patterns.md +475 -0
- package/skills/global_legacy/web-scraper/references/output-templates.md +481 -0
- package/skills/global_legacy/webapp-testing/LICENSE.txt +202 -0
- package/skills/global_legacy/webapp-testing/SKILL.md +106 -0
- package/skills/global_legacy/webapp-testing/scripts/with_server.py +106 -0
- package/skills/global_legacy/writing-plans/SKILL.md +127 -0
- package/skills/global_legacy/zustand-store-ts/SKILL.md +79 -0
- package/skills/workspace_agents/firecrawl/SKILL.md +148 -0
- package/skills/workspace_agents/firecrawl/rules/install.md +82 -0
- package/skills/workspace_agents/firecrawl/rules/security.md +26 -0
- package/skills/workspace_agents/firecrawl-agent/SKILL.md +57 -0
- package/skills/workspace_agents/firecrawl-build/SKILL.md +38 -0
- package/skills/workspace_agents/firecrawl-build-interact/SKILL.md +67 -0
- package/skills/workspace_agents/firecrawl-build-onboarding/SKILL.md +102 -0
- package/skills/workspace_agents/firecrawl-build-onboarding/references/auth-flow.md +39 -0
- package/skills/workspace_agents/firecrawl-build-onboarding/references/project-setup.md +20 -0
- package/skills/workspace_agents/firecrawl-build-onboarding/references/sdk-installation.md +17 -0
- package/skills/workspace_agents/firecrawl-build-scrape/SKILL.md +68 -0
- package/skills/workspace_agents/firecrawl-build-search/SKILL.md +68 -0
- package/skills/workspace_agents/firecrawl-crawl/SKILL.md +58 -0
- package/skills/workspace_agents/firecrawl-download/SKILL.md +69 -0
- package/skills/workspace_agents/firecrawl-interact/SKILL.md +83 -0
- package/skills/workspace_agents/firecrawl-map/SKILL.md +50 -0
- package/skills/workspace_agents/firecrawl-scrape/SKILL.md +68 -0
- package/skills/workspace_agents/firecrawl-search/SKILL.md +59 -0
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
# Common Problems & Debugging
|
|
2
|
+
|
|
3
|
+
These are the real-world issues that only surface after integration. Read this before finishing any Spline implementation.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🚨 Critical Gotchas (Will Break Your Site)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
### 1. Scroll Hijacking — Page Won't Scroll
|
|
12
|
+
|
|
13
|
+
**What happens:** After adding Spline, the whole page stops scrolling. Users are stuck.
|
|
14
|
+
|
|
15
|
+
**Why:** Spline's auto-generated vanilla JS exports inject `overflow: hidden` into `<body>` CSS by default. This is baked into their generated code.
|
|
16
|
+
|
|
17
|
+
**Fix:**
|
|
18
|
+
```css
|
|
19
|
+
/* Add this to your CSS — overrides Spline's injection */
|
|
20
|
+
body {
|
|
21
|
+
overflow: auto !important;
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Or in Play Settings (Spline editor → Export → Play Settings), **disable "Page Scroll"** before generating the URL. This removes the overflow rule from the output.
|
|
26
|
+
|
|
27
|
+
**Also check:** If using the Runtime API and you embedded the generated `index.html` files, open them and manually remove the `overflow: hidden` line from the `<style>` block.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
### 2. White Box Behind the 3D Scene
|
|
32
|
+
|
|
33
|
+
**What happens:** Your dark/transparent website has a white rectangle where the Spline scene is.
|
|
34
|
+
|
|
35
|
+
**Why:** The background color is set to white by default in Spline's export settings.
|
|
36
|
+
|
|
37
|
+
**Fix:**
|
|
38
|
+
1. In Spline editor → Export → Play Settings → toggle **Hide Background** ON
|
|
39
|
+
2. Click **Generate Draft** or **Promote to Production** — the URL does NOT auto-update with new settings
|
|
40
|
+
3. Copy the new URL
|
|
41
|
+
|
|
42
|
+
For the web component you can also override inline:
|
|
43
|
+
```html
|
|
44
|
+
<spline-viewer url="..." background="transparent"></spline-viewer>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
### 3. Spline Scene Intermittently Fails to Load
|
|
50
|
+
|
|
51
|
+
**What happens:** Page loads fine sometimes, blank or broken other times. Feels random.
|
|
52
|
+
|
|
53
|
+
**Why:** The `prod.spline.design` CDN occasionally has latency or drops requests. There's no built-in retry or error handling.
|
|
54
|
+
|
|
55
|
+
**Fix — add a timeout fallback:**
|
|
56
|
+
```js
|
|
57
|
+
const TIMEOUT_MS = 8000;
|
|
58
|
+
|
|
59
|
+
const timeoutId = setTimeout(() => {
|
|
60
|
+
// Spline didn't load in time — show fallback
|
|
61
|
+
document.getElementById('spline-fallback').style.display = 'block';
|
|
62
|
+
document.querySelector('.spline-wrapper').style.display = 'none';
|
|
63
|
+
}, TIMEOUT_MS);
|
|
64
|
+
|
|
65
|
+
// If using Runtime API, clear the timeout on successful load:
|
|
66
|
+
spline.load(sceneUrl).then(() => {
|
|
67
|
+
clearTimeout(timeoutId);
|
|
68
|
+
});
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Long-term fix:** Download the `.splinecode` file and self-host it on your own CDN. This eliminates the third-party dependency entirely and also fixes CORS issues.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### 4. Scene Looks Fine on Mac, Lags on Everything Else
|
|
76
|
+
|
|
77
|
+
**What happens:** Buttery smooth on MacBook Pro or M-chip Mac. Completely broken — laggy, stuttering, sometimes crashing — on mid-range Windows laptops or Android phones.
|
|
78
|
+
|
|
79
|
+
**Why:** Spline uses WebGL which runs on the GPU. Apple Silicon Macs have exceptional GPU performance. Most Windows laptops and Android devices do not have dedicated GPUs.
|
|
80
|
+
|
|
81
|
+
**Fix — detect capability before loading:**
|
|
82
|
+
```js
|
|
83
|
+
function shouldLoadSpline() {
|
|
84
|
+
const isMobile = window.innerWidth < 768;
|
|
85
|
+
const isLowEnd = navigator.hardwareConcurrency <= 2;
|
|
86
|
+
|
|
87
|
+
// Optional: test WebGL support
|
|
88
|
+
const canvas = document.createElement('canvas');
|
|
89
|
+
const gl = canvas.getContext('webgl2') || canvas.getContext('webgl');
|
|
90
|
+
const noWebGL = !gl;
|
|
91
|
+
|
|
92
|
+
return !isMobile && !isLowEnd && !noWebGL;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (shouldLoadSpline()) {
|
|
96
|
+
loadSplineScene();
|
|
97
|
+
} else {
|
|
98
|
+
showFallback();
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
### 5. Layout Shift — Page Jumps When Scene Loads
|
|
105
|
+
|
|
106
|
+
**What happens:** User sees the page layout, then everything shifts/jumps when the 3D scene loads in.
|
|
107
|
+
|
|
108
|
+
**Why:** The canvas has no reserved height before loading, so the browser doesn't know how much space to allocate. HTML renders → space collapses → scene loads → everything jumps. This tanks your CLS (Cumulative Layout Shift) Core Web Vitals score.
|
|
109
|
+
|
|
110
|
+
**Fix — pre-allocate space:**
|
|
111
|
+
```css
|
|
112
|
+
spline-viewer, canvas.spline-canvas {
|
|
113
|
+
display: block;
|
|
114
|
+
width: 100%;
|
|
115
|
+
height: 100vh; /* or whatever your target height is */
|
|
116
|
+
contain: strict; /* tells browser to reserve this space */
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
For `position: fixed` backgrounds this is less of an issue, but for inline scenes it's critical.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
### 6. Rotation Values Are Radians, Not Degrees
|
|
125
|
+
|
|
126
|
+
**What happens:** You try to rotate an object to 90 degrees. It barely moves or spins wildly.
|
|
127
|
+
|
|
128
|
+
**Why:** Spline's runtime API uses **radians**, not degrees. 90 degrees = `Math.PI / 2`. 180 degrees = `Math.PI`.
|
|
129
|
+
|
|
130
|
+
**Fix:**
|
|
131
|
+
```js
|
|
132
|
+
// WRONG
|
|
133
|
+
obj.rotation.y = 90;
|
|
134
|
+
|
|
135
|
+
// CORRECT
|
|
136
|
+
obj.rotation.y = Math.PI / 2; // 90 degrees
|
|
137
|
+
obj.rotation.y = Math.PI; // 180 degrees
|
|
138
|
+
obj.rotation.y = Math.PI * 2; // 360 degrees (full rotation)
|
|
139
|
+
|
|
140
|
+
// Helper function to use if you prefer degrees:
|
|
141
|
+
const toRad = (deg) => deg * (Math.PI / 180);
|
|
142
|
+
obj.rotation.y = toRad(90);
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
### 7. 3D Scene Blocks Clicks on Buttons / Links
|
|
148
|
+
|
|
149
|
+
**What happens:** Buttons, CTAs, or nav links that overlap with the Spline scene don't respond to clicks.
|
|
150
|
+
|
|
151
|
+
**Why:** The Spline canvas sits on top and captures all pointer events.
|
|
152
|
+
|
|
153
|
+
**Fix:** Add `pointer-events: none` to the Spline wrapper if it's decorative (no interaction needed):
|
|
154
|
+
```css
|
|
155
|
+
.spline-wrapper {
|
|
156
|
+
pointer-events: none; /* scene won't capture any clicks */
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
If you need BOTH mouse interaction on the scene AND clickable content on top:
|
|
161
|
+
```css
|
|
162
|
+
.spline-wrapper {
|
|
163
|
+
pointer-events: all; /* scene gets mouse events */
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.content-overlay {
|
|
167
|
+
position: relative;
|
|
168
|
+
z-index: 10;
|
|
169
|
+
pointer-events: all; /* content also gets mouse events */
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Note: When both have `pointer-events: all`, the topmost element (by z-index) wins. Make sure your content div has a higher z-index than the Spline wrapper.
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
### 8. Spline Watermark Visible (Free Plan)
|
|
178
|
+
|
|
179
|
+
**What happens:** A small "Built with Spline" logo appears in the corner.
|
|
180
|
+
|
|
181
|
+
**Options:**
|
|
182
|
+
|
|
183
|
+
**Option A — Upgrade to a Spline paid plan.** Then in Export → Play Settings → toggle "Hide Spline Logo" ON.
|
|
184
|
+
|
|
185
|
+
**Option B — CSS overlay (free plan workaround):**
|
|
186
|
+
```css
|
|
187
|
+
/* Hides the watermark via CSS — targets the shadow DOM */
|
|
188
|
+
spline-viewer::part(logo) {
|
|
189
|
+
display: none;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/* Fallback if the above doesn't work */
|
|
193
|
+
spline-viewer {
|
|
194
|
+
--spline-viewer-logo-display: none;
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Note: CSS-based hiding may break with Spline updates. The paid plan is the reliable solution.
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
### 9. CORS Error When Loading Scene
|
|
203
|
+
|
|
204
|
+
**What happens:** Scene fails to load with a CORS error in the console.
|
|
205
|
+
|
|
206
|
+
**Why:** Browser security blocks cross-origin requests in some environments (especially localhost dev servers with certain configurations).
|
|
207
|
+
|
|
208
|
+
**Fix — self-host the scene file:**
|
|
209
|
+
1. In Spline → Export → Code Export → click the download icon next to the URL
|
|
210
|
+
2. Download the `.splinecode` file
|
|
211
|
+
3. Host it on your own server or CDN (same origin as your site)
|
|
212
|
+
4. Update the URL in your embed code to point to your hosted version
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
### 10. Next.js Hydration Error
|
|
217
|
+
|
|
218
|
+
**What happens:** React hydration mismatch error in Next.js when the Spline component is included.
|
|
219
|
+
|
|
220
|
+
**Why:** Spline renders on the client only (it needs the browser's WebGL), but Next.js tries to render on the server too.
|
|
221
|
+
|
|
222
|
+
**Fix:**
|
|
223
|
+
```jsx
|
|
224
|
+
import dynamic from 'next/dynamic';
|
|
225
|
+
|
|
226
|
+
// ssr: false tells Next.js not to render this on the server
|
|
227
|
+
const Spline = dynamic(() => import('@splinetool/react-spline/next'), {
|
|
228
|
+
ssr: false,
|
|
229
|
+
loading: () => <div style={{ background: '#0a0a0a', height: '100vh' }} />
|
|
230
|
+
});
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
### 11. Scene URL Not Reflecting Latest Changes
|
|
236
|
+
|
|
237
|
+
**What happens:** You updated the scene in the Spline editor, but the embed still shows the old version.
|
|
238
|
+
|
|
239
|
+
**Why:** The `prod.spline.design` URL is a snapshot. It does **not** auto-update when you make changes.
|
|
240
|
+
|
|
241
|
+
**Fix:** Every time you make changes in the Spline editor, you must:
|
|
242
|
+
1. Go to Export → Code Export
|
|
243
|
+
2. Click **"Promote to Production"** (or "Generate Draft" for a new draft URL)
|
|
244
|
+
3. The existing prod URL will now serve the updated scene — no need to change the URL in your code
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Quick Diagnostic Table
|
|
249
|
+
|
|
250
|
+
| Symptom | Most Likely Cause | Fix |
|
|
251
|
+
|---|---|---|
|
|
252
|
+
| Page won't scroll | `overflow: hidden` injected by Spline | Add `body { overflow: auto !important }` or disable Page Scroll in Play Settings |
|
|
253
|
+
| White box behind scene | Background not hidden | Play Settings → Hide Background → regenerate URL |
|
|
254
|
+
| Loads sometimes, blank others | CDN flakiness | Add timeout fallback; consider self-hosting |
|
|
255
|
+
| Smooth on Mac, laggy elsewhere | GPU performance gap | Add hardware detection, skip on low-end |
|
|
256
|
+
| Page jumps on load | No reserved space (CLS) | Set explicit height on canvas/viewer element |
|
|
257
|
+
| Rotations look wrong | Degrees vs radians | Use `Math.PI / 180 * degrees` |
|
|
258
|
+
| Buttons not clickable | Canvas capturing pointer events | Add `pointer-events: none` to Spline wrapper |
|
|
259
|
+
| Watermark visible | Free plan | Upgrade or use CSS override |
|
|
260
|
+
| CORS error | Cross-origin loading | Self-host the `.splinecode` file |
|
|
261
|
+
| Hydration error (Next.js) | SSR conflict | Use `dynamic(() => import(...), { ssr: false })` |
|
|
262
|
+
| Old scene still showing | Didn't promote to production | Click "Promote to Production" in Spline editor |
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Performance & Mobile Optimization
|
|
2
|
+
|
|
3
|
+
Spline scenes are WebGL — they run on the GPU. A poorly optimized scene will tank your PageSpeed score, lag on mid-range devices, and drain mobile batteries. Treat them like video files, not images.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Before You Even Integrate — Check Scene Size
|
|
8
|
+
|
|
9
|
+
**Tell the user to check their scene file size before giving you the URL.**
|
|
10
|
+
|
|
11
|
+
- Under ~3MB = generally fine
|
|
12
|
+
- 3–10MB = usable but optimize where possible
|
|
13
|
+
- Over 10MB = serious problem, needs optimization or a different approach
|
|
14
|
+
- Over 20MB = do not embed as live 3D — export as video instead
|
|
15
|
+
|
|
16
|
+
To check: in Spline editor → Export → Code Export → the file size is shown before generating the URL.
|
|
17
|
+
|
|
18
|
+
**If the scene is too heavy, tell the user to:**
|
|
19
|
+
1. In Export → Play Settings, set **Geometry Quality** to "Performance"
|
|
20
|
+
2. Reduce subdivision levels (1 is usually enough, max 2)
|
|
21
|
+
3. Delete objects that are hidden or never visible
|
|
22
|
+
4. Remove unused textures and images
|
|
23
|
+
5. Use fewer than 3 lights — prefer Matcap materials for reflective effects (fakes reflections without GPU cost)
|
|
24
|
+
6. Merge objects that share the same material
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Optimization Checklist (Pre-Integration)
|
|
29
|
+
|
|
30
|
+
Go through these before writing any embed code:
|
|
31
|
+
|
|
32
|
+
- [ ] Scene file size is under 10MB
|
|
33
|
+
- [ ] Geometry Quality set to "Performance" in Play Settings
|
|
34
|
+
- [ ] Background hidden if site has its own background color
|
|
35
|
+
- [ ] Disabled: Page Scroll, Zoom, Pan (in Play Settings) unless explicitly needed
|
|
36
|
+
- [ ] Max 1–2 Spline embeds on the page (never more than 3)
|
|
37
|
+
- [ ] Less than 3 lights in the scene
|
|
38
|
+
- [ ] No high-res textures unless essential
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Loading Strategy
|
|
43
|
+
|
|
44
|
+
### 1. Preload the scene file
|
|
45
|
+
Add to `<head>` to start fetching before scripts execute:
|
|
46
|
+
```html
|
|
47
|
+
<link rel="preload" href="https://prod.spline.design/REPLACE_ME/scene.splinecode" as="fetch" crossorigin>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 2. Show a fallback while loading
|
|
51
|
+
Never leave users staring at a blank space. Always render a background color or static image as a placeholder:
|
|
52
|
+
|
|
53
|
+
```css
|
|
54
|
+
.spline-wrapper {
|
|
55
|
+
background: #0a0a0a; /* your site's bg color — shows instantly */
|
|
56
|
+
width: 100%;
|
|
57
|
+
height: 100vh;
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 3. Lazy load (React)
|
|
62
|
+
Don't load Spline until it's needed:
|
|
63
|
+
```jsx
|
|
64
|
+
const Spline = lazy(() => import('@splinetool/react-spline'));
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 4. Intersection Observer (load only when visible)
|
|
68
|
+
For Spline scenes below the fold:
|
|
69
|
+
```js
|
|
70
|
+
const observer = new IntersectionObserver((entries) => {
|
|
71
|
+
if (entries[0].isIntersecting) {
|
|
72
|
+
loadSplineScene(); // only load when user scrolls to it
|
|
73
|
+
observer.disconnect();
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
observer.observe(document.getElementById('spline-section'));
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Mobile Strategy
|
|
82
|
+
|
|
83
|
+
Spline scenes are GPU-intensive. On mobile they:
|
|
84
|
+
- Drain battery quickly
|
|
85
|
+
- Lag on any device without a dedicated GPU
|
|
86
|
+
- Can cause the browser tab to crash on lower-end Android
|
|
87
|
+
|
|
88
|
+
**Always implement one of these strategies:**
|
|
89
|
+
|
|
90
|
+
### Option A — Skip entirely on mobile (recommended for hero backgrounds)
|
|
91
|
+
```js
|
|
92
|
+
if (window.innerWidth < 768) {
|
|
93
|
+
// Don't load Spline — show static background instead
|
|
94
|
+
document.querySelector('.spline-wrapper').style.background = 'url(fallback.jpg) center/cover';
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Option B — Hardware concurrency check
|
|
99
|
+
```js
|
|
100
|
+
// navigator.hardwareConcurrency = number of CPU cores
|
|
101
|
+
// Low core count = likely a low-end device
|
|
102
|
+
if (navigator.hardwareConcurrency <= 2 || window.innerWidth < 768) {
|
|
103
|
+
// Skip Spline, use fallback
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Option C — Export as video for mobile
|
|
108
|
+
For decorative/non-interactive scenes: record the animation in Spline as MP4, serve that on mobile instead. Users get the visual, no GPU cost.
|
|
109
|
+
|
|
110
|
+
```js
|
|
111
|
+
const isMobile = window.innerWidth < 768;
|
|
112
|
+
|
|
113
|
+
if (isMobile) {
|
|
114
|
+
// Show video
|
|
115
|
+
document.getElementById('spline-video').style.display = 'block';
|
|
116
|
+
} else {
|
|
117
|
+
// Load Spline
|
|
118
|
+
loadSpline();
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Core Web Vitals (LCP / CLS)
|
|
125
|
+
|
|
126
|
+
Spline scenes are almost always the **Largest Contentful Paint** element, which means they directly affect your Google score.
|
|
127
|
+
|
|
128
|
+
### Preventing Layout Shift (CLS)
|
|
129
|
+
The canvas loads after HTML, causing the page to jump. Fix it by pre-allocating space:
|
|
130
|
+
|
|
131
|
+
```css
|
|
132
|
+
canvas#canvas3d {
|
|
133
|
+
width: 100%;
|
|
134
|
+
height: 100vh;
|
|
135
|
+
/* This tells the browser to reserve this space before the scene loads */
|
|
136
|
+
contain: strict;
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Or for the web component:
|
|
141
|
+
```html
|
|
142
|
+
<spline-viewer
|
|
143
|
+
url="..."
|
|
144
|
+
style="width: 100%; height: 100vh; display: block;">
|
|
145
|
+
</spline-viewer>
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Lighthouse note
|
|
149
|
+
Lighthouse often cannot calculate a performance score at all when a Spline scene is the dominant above-the-fold element. This is a known Lighthouse limitation, not necessarily a site problem. Use WebPageTest or Chrome DevTools instead for real profiling.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## When NOT to Use a Live 3D Embed
|
|
154
|
+
|
|
155
|
+
Sometimes a Spline embed is the wrong tool. Use a video or GIF instead when:
|
|
156
|
+
|
|
157
|
+
- The animation doesn't respond to user input (no mouse tracking, no clicks)
|
|
158
|
+
- The scene file is over 15MB
|
|
159
|
+
- Your target audience is primarily mobile
|
|
160
|
+
- You need the page to score above 80 on PageSpeed
|
|
161
|
+
|
|
162
|
+
**How to export as video from Spline:**
|
|
163
|
+
In Spline editor → Export → Video → record your animation → compress with HandBrake → host on GitHub or a CDN → embed as `<video autoplay loop muted playsinline>`
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# React / Next.js / Vue Integration
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## React / Vite
|
|
6
|
+
|
|
7
|
+
Install:
|
|
8
|
+
```bash
|
|
9
|
+
npm install @splinetool/react-spline
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Basic:
|
|
13
|
+
```jsx
|
|
14
|
+
import Spline from '@splinetool/react-spline';
|
|
15
|
+
|
|
16
|
+
export default function App() {
|
|
17
|
+
return (
|
|
18
|
+
<div style={{ width: '100%', height: '100vh' }}>
|
|
19
|
+
<Spline scene="https://prod.spline.design/REPLACE_ME/scene.splinecode" />
|
|
20
|
+
</div>
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
With object interaction + event listeners:
|
|
26
|
+
```jsx
|
|
27
|
+
import { useRef } from 'react';
|
|
28
|
+
import Spline from '@splinetool/react-spline';
|
|
29
|
+
|
|
30
|
+
export default function App() {
|
|
31
|
+
const splineRef = useRef();
|
|
32
|
+
|
|
33
|
+
function onLoad(splineApp) {
|
|
34
|
+
splineRef.current = splineApp;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function triggerAnimation() {
|
|
38
|
+
splineRef.current.emitEvent('mouseHover', 'Cube');
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function onSplineEvent(e) {
|
|
42
|
+
console.log('Object interacted:', e.target.name);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<div>
|
|
47
|
+
<Spline
|
|
48
|
+
scene="https://prod.spline.design/REPLACE_ME/scene.splinecode"
|
|
49
|
+
onLoad={onLoad}
|
|
50
|
+
onMouseDown={onSplineEvent}
|
|
51
|
+
/>
|
|
52
|
+
<button onClick={triggerAnimation}>Trigger</button>
|
|
53
|
+
</div>
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Lazy loading (recommended for performance):**
|
|
59
|
+
```jsx
|
|
60
|
+
import { lazy, Suspense } from 'react';
|
|
61
|
+
|
|
62
|
+
const Spline = lazy(() => import('@splinetool/react-spline'));
|
|
63
|
+
|
|
64
|
+
export default function Hero() {
|
|
65
|
+
return (
|
|
66
|
+
<Suspense fallback={<div style={{ background: '#0a0a0a', width: '100%', height: '100vh' }} />}>
|
|
67
|
+
<Spline scene="https://prod.spline.design/REPLACE_ME/scene.splinecode" />
|
|
68
|
+
</Suspense>
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Next.js
|
|
76
|
+
|
|
77
|
+
Install:
|
|
78
|
+
```bash
|
|
79
|
+
npm install @splinetool/react-spline
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Use the `/next` import** for SSR support + auto blurred placeholder:
|
|
83
|
+
```jsx
|
|
84
|
+
import Spline from '@splinetool/react-spline/next';
|
|
85
|
+
|
|
86
|
+
export default function Page() {
|
|
87
|
+
return (
|
|
88
|
+
<Spline scene="https://prod.spline.design/REPLACE_ME/scene.splinecode" />
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**With dynamic import (if you get hydration errors):**
|
|
94
|
+
```jsx
|
|
95
|
+
import dynamic from 'next/dynamic';
|
|
96
|
+
|
|
97
|
+
const Spline = dynamic(() => import('@splinetool/react-spline/next'), {
|
|
98
|
+
ssr: false,
|
|
99
|
+
loading: () => <div style={{ background: '#0a0a0a', width: '100%', height: '100vh' }} />
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
export default function Page() {
|
|
103
|
+
return <Spline scene="https://prod.spline.design/REPLACE_ME/scene.splinecode" />;
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Vue
|
|
110
|
+
|
|
111
|
+
Install:
|
|
112
|
+
```bash
|
|
113
|
+
npm install @splinetool/vue-spline
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
```vue
|
|
117
|
+
<template>
|
|
118
|
+
<Spline
|
|
119
|
+
scene="https://prod.spline.design/REPLACE_ME/scene.splinecode"
|
|
120
|
+
@spline-loaded="onLoaded"
|
|
121
|
+
@mouseDown="onClick"
|
|
122
|
+
/>
|
|
123
|
+
</template>
|
|
124
|
+
|
|
125
|
+
<script>
|
|
126
|
+
import Spline from '@splinetool/vue-spline';
|
|
127
|
+
|
|
128
|
+
export default {
|
|
129
|
+
components: { Spline },
|
|
130
|
+
methods: {
|
|
131
|
+
onLoaded(spline) {
|
|
132
|
+
const obj = spline.findObjectByName('Cube');
|
|
133
|
+
obj.position.x += 10; // NOTE: radians for rotation, not degrees
|
|
134
|
+
},
|
|
135
|
+
onClick(e) {
|
|
136
|
+
console.log('Clicked:', e.target.name);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
</script>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Full-Page Background (React)
|
|
146
|
+
|
|
147
|
+
```jsx
|
|
148
|
+
import Spline from '@splinetool/react-spline';
|
|
149
|
+
import { useState } from 'react';
|
|
150
|
+
|
|
151
|
+
export default function HeroSection() {
|
|
152
|
+
const [loaded, setLoaded] = useState(false);
|
|
153
|
+
|
|
154
|
+
// Skip Spline on mobile / low-end devices
|
|
155
|
+
const isMobile = typeof window !== 'undefined' && window.innerWidth < 768;
|
|
156
|
+
const isLowEnd = typeof navigator !== 'undefined' && navigator.hardwareConcurrency <= 2;
|
|
157
|
+
|
|
158
|
+
return (
|
|
159
|
+
<div style={{ position: 'relative', width: '100vw', height: '100vh' }}>
|
|
160
|
+
|
|
161
|
+
{/* Fallback background — always rendered, hidden once Spline loads */}
|
|
162
|
+
<div style={{
|
|
163
|
+
position: 'absolute', inset: 0,
|
|
164
|
+
background: '#0a0a0a',
|
|
165
|
+
zIndex: 0,
|
|
166
|
+
opacity: loaded ? 0 : 1,
|
|
167
|
+
transition: 'opacity 0.5s ease'
|
|
168
|
+
}} />
|
|
169
|
+
|
|
170
|
+
{/* Spline scene — only load on capable devices */}
|
|
171
|
+
{!isMobile && !isLowEnd && (
|
|
172
|
+
<Spline
|
|
173
|
+
scene="https://prod.spline.design/REPLACE_ME/scene.splinecode"
|
|
174
|
+
onLoad={() => setLoaded(true)}
|
|
175
|
+
style={{
|
|
176
|
+
position: 'absolute',
|
|
177
|
+
top: 0, left: 0,
|
|
178
|
+
width: '100%', height: '100%',
|
|
179
|
+
zIndex: 0
|
|
180
|
+
}}
|
|
181
|
+
/>
|
|
182
|
+
)}
|
|
183
|
+
|
|
184
|
+
{/* Content sits on top */}
|
|
185
|
+
<div style={{ position: 'relative', zIndex: 1 }}>
|
|
186
|
+
<h1>Your Content Here</h1>
|
|
187
|
+
</div>
|
|
188
|
+
|
|
189
|
+
</div>
|
|
190
|
+
);
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## React Prop Reference
|
|
197
|
+
|
|
198
|
+
| Prop | Type | Description |
|
|
199
|
+
|---|---|---|
|
|
200
|
+
| `scene` | string | Scene URL (required) |
|
|
201
|
+
| `onLoad` | function | Called with splineApp when loaded |
|
|
202
|
+
| `onMouseDown` | function | Mouse/touch down on object |
|
|
203
|
+
| `onMouseUp` | function | Mouse/touch up |
|
|
204
|
+
| `onMouseHover` | function | Hover over object |
|
|
205
|
+
| `onKeyDown` | function | Key pressed |
|
|
206
|
+
| `onKeyUp` | function | Key released |
|
|
207
|
+
| `onStart` | function | Scene started |
|
|
208
|
+
| `onScroll` | function | Scroll event |
|
|
209
|
+
| `style` | object | CSS styles for the canvas |
|
|
210
|
+
| `className` | string | CSS class |
|
|
211
|
+
|
|
212
|
+
See [PERFORMANCE.md](PERFORMANCE.md) and [COMMON_PROBLEMS.md](COMMON_PROBLEMS.md) before finishing.
|