@ngxtm/devkit 3.15.0 → 3.16.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/SKILLS_INDEX.md +1914 -459
- package/merged-commands/3d-web-experience.md +5 -1
- package/merged-commands/ab-test-setup.md +6 -1
- package/merged-commands/accessibility-compliance-accessibility-audit.md +2 -0
- package/merged-commands/active-directory-attacks.md +7 -2
- package/merged-commands/activecampaign-automation.md +214 -0
- package/merged-commands/address-github-comments.md +6 -1
- package/merged-commands/agent-evaluation.md +5 -1
- package/merged-commands/agent-framework-azure-ai-py.md +338 -0
- package/merged-commands/agent-framework-azure-hosted-agents.md +3 -0
- package/merged-commands/agent-manager-skill.md +3 -1
- package/merged-commands/agent-memory-mcp.md +6 -1
- package/merged-commands/agent-memory-systems.md +5 -1
- package/merged-commands/agent-orchestration-improve-agent.md +2 -0
- package/merged-commands/agent-orchestration-multi-agent-optimize.md +2 -0
- package/merged-commands/agent-tool-builder.md +5 -1
- package/merged-commands/agents-v2-py.md +326 -0
- package/merged-commands/ai-agent-development.md +174 -0
- package/merged-commands/ai-agents-architect.md +5 -1
- package/merged-commands/ai-engineer.md +3 -1
- package/merged-commands/ai-ml.md +253 -0
- package/merged-commands/ai-product.md +5 -1
- package/merged-commands/ai-wrapper-product.md +5 -1
- package/merged-commands/airflow-dag-patterns.md +3 -1
- package/merged-commands/airtable-automation.md +175 -0
- package/merged-commands/algolia-search.md +4 -0
- package/merged-commands/algorithmic-art.md +106 -375
- package/merged-commands/amplitude-automation.md +221 -0
- package/merged-commands/analytics-tracking.md +6 -1
- package/merged-commands/android-jetpack-compose-expert.md +152 -0
- package/merged-commands/angular-best-practices.md +562 -0
- package/merged-commands/angular-migration.md +3 -1
- package/merged-commands/angular-state-management.md +634 -0
- package/merged-commands/angular-ui-patterns.md +511 -0
- package/merged-commands/angular.md +821 -0
- package/merged-commands/anti-reversing-techniques.md +3 -1
- package/merged-commands/antigravity-workflows.md +80 -0
- package/merged-commands/api-design-principles.md +3 -1
- package/merged-commands/api-documentation-generator.md +2 -0
- package/merged-commands/api-documentation.md +164 -0
- package/merged-commands/api-documenter.md +3 -1
- package/merged-commands/api-fuzzing-bug-bounty.md +7 -2
- package/merged-commands/api-patterns.md +1 -1
- package/merged-commands/api-security-best-practices.md +2 -0
- package/merged-commands/api-security-testing.md +172 -0
- package/merged-commands/api-testing-observability-api-mock.md +2 -0
- package/merged-commands/app-builder.md +6 -1
- package/merged-commands/app-store-optimization.md +6 -1
- package/merged-commands/application-performance-performance-optimization.md +2 -0
- package/merged-commands/architect-review.md +2 -0
- package/merged-commands/architecture-decision-records.md +7 -5
- package/merged-commands/architecture-patterns.md +3 -1
- package/merged-commands/architecture.md +6 -1
- package/merged-commands/arm-cortex-expert.md +3 -1
- package/merged-commands/asana-automation.md +176 -0
- package/merged-commands/async-python-patterns.md +3 -1
- package/merged-commands/attack-tree-construction.md +3 -1
- package/merged-commands/audio-transcriber.md +559 -0
- package/merged-commands/auth-implementation-patterns.md +3 -1
- package/merged-commands/automate-whatsapp.md +10 -10
- package/merged-commands/autonomous-agent-patterns.md +3 -1
- package/merged-commands/autonomous-agents.md +5 -1
- package/merged-commands/avalonia-layout-zafiro.md +6 -1
- package/merged-commands/avalonia-viewmodels-zafiro.md +6 -1
- package/merged-commands/avalonia-zafiro-development.md +6 -1
- package/merged-commands/aws-cost-cleanup.md +309 -0
- package/merged-commands/aws-cost-optimizer.md +192 -0
- package/merged-commands/aws-penetration-testing.md +7 -2
- package/merged-commands/aws-serverless.md +5 -1
- package/merged-commands/azd-deployment.md +2 -0
- package/merged-commands/azure-ai-agents-persistent-dotnet.md +354 -0
- package/merged-commands/azure-ai-agents-persistent-java.md +142 -0
- package/merged-commands/azure-ai-anomalydetector-java.md +261 -0
- package/merged-commands/azure-ai-contentsafety-java.md +287 -0
- package/merged-commands/azure-ai-contentsafety-py.md +219 -0
- package/merged-commands/azure-ai-contentsafety-ts.md +305 -0
- package/merged-commands/azure-ai-contentunderstanding-py.md +278 -0
- package/merged-commands/azure-ai-document-intelligence-dotnet.md +342 -0
- package/merged-commands/azure-ai-document-intelligence-ts.md +328 -0
- package/merged-commands/azure-ai-formrecognizer-java.md +346 -0
- package/merged-commands/azure-ai-ml-py.md +276 -0
- package/merged-commands/azure-ai-openai-dotnet.md +460 -0
- package/merged-commands/azure-ai-projects-dotnet.md +353 -0
- package/merged-commands/azure-ai-projects-java.md +157 -0
- package/merged-commands/azure-ai-projects-py.md +300 -0
- package/merged-commands/azure-ai-projects-ts.md +294 -0
- package/merged-commands/azure-ai-textanalytics-py.md +232 -0
- package/merged-commands/azure-ai-transcription-py.md +74 -0
- package/merged-commands/azure-ai-translation-document-py.md +254 -0
- package/merged-commands/azure-ai-translation-text-py.md +279 -0
- package/merged-commands/azure-ai-translation-ts.md +291 -0
- package/merged-commands/azure-ai-vision-imageanalysis-java.md +294 -0
- package/merged-commands/azure-ai-vision-imageanalysis-py.md +265 -0
- package/merged-commands/azure-ai-voicelive-dotnet.md +270 -0
- package/merged-commands/azure-ai-voicelive-java.md +230 -0
- package/merged-commands/azure-ai-voicelive-py.md +314 -0
- package/merged-commands/azure-ai-voicelive-ts.md +470 -0
- package/merged-commands/azure-appconfiguration-java.md +475 -0
- package/merged-commands/azure-appconfiguration-py.md +254 -0
- package/merged-commands/azure-appconfiguration-ts.md +354 -0
- package/merged-commands/azure-communication-callautomation-java.md +259 -0
- package/merged-commands/azure-communication-callingserver-java.md +96 -0
- package/merged-commands/azure-communication-chat-java.md +315 -0
- package/merged-commands/azure-communication-common-java.md +309 -0
- package/merged-commands/azure-communication-sms-java.md +279 -0
- package/merged-commands/azure-compute-batch-java.md +384 -0
- package/merged-commands/azure-containerregistry-py.md +257 -0
- package/merged-commands/azure-cosmos-db-py.md +244 -0
- package/merged-commands/azure-cosmos-java.md +263 -0
- package/merged-commands/azure-cosmos-py.md +285 -0
- package/merged-commands/azure-cosmos-rust.md +140 -0
- package/merged-commands/azure-cosmos-ts.md +476 -0
- package/merged-commands/azure-data-tables-java.md +339 -0
- package/merged-commands/azure-data-tables-py.md +248 -0
- package/merged-commands/azure-eventgrid-dotnet.md +493 -0
- package/merged-commands/azure-eventgrid-java.md +310 -0
- package/merged-commands/azure-eventgrid-py.md +173 -0
- package/merged-commands/azure-eventhub-dotnet.md +367 -0
- package/merged-commands/azure-eventhub-java.md +361 -0
- package/merged-commands/azure-eventhub-py.md +245 -0
- package/merged-commands/azure-eventhub-rust.md +132 -0
- package/merged-commands/azure-eventhub-ts.md +273 -0
- package/merged-commands/azure-functions.md +5 -1
- package/merged-commands/azure-identity-dotnet.md +344 -0
- package/merged-commands/azure-identity-java.md +371 -0
- package/merged-commands/azure-identity-py.md +197 -0
- package/merged-commands/azure-identity-rust.md +120 -0
- package/merged-commands/azure-identity-ts.md +308 -0
- package/merged-commands/azure-keyvault-certificates-rust.md +182 -0
- package/merged-commands/azure-keyvault-keys-rust.md +172 -0
- package/merged-commands/azure-keyvault-keys-ts.md +274 -0
- package/merged-commands/azure-keyvault-py.md +252 -0
- package/merged-commands/azure-keyvault-secrets-rust.md +147 -0
- package/merged-commands/azure-keyvault-secrets-ts.md +274 -0
- package/merged-commands/azure-maps-search-dotnet.md +499 -0
- package/merged-commands/azure-messaging-webpubsub-java.md +307 -0
- package/merged-commands/azure-messaging-webpubsubservice-py.md +250 -0
- package/merged-commands/azure-mgmt-apicenter-dotnet.md +416 -0
- package/merged-commands/azure-mgmt-apicenter-py.md +247 -0
- package/merged-commands/azure-mgmt-apimanagement-dotnet.md +315 -0
- package/merged-commands/azure-mgmt-apimanagement-py.md +283 -0
- package/merged-commands/azure-mgmt-applicationinsights-dotnet.md +491 -0
- package/merged-commands/azure-mgmt-arizeaiobservabilityeval-dotnet.md +235 -0
- package/merged-commands/azure-mgmt-botservice-dotnet.md +339 -0
- package/merged-commands/azure-mgmt-botservice-py.md +325 -0
- package/merged-commands/azure-mgmt-fabric-dotnet.md +343 -0
- package/merged-commands/azure-mgmt-fabric-py.md +263 -0
- package/merged-commands/azure-mgmt-mongodbatlas-dotnet.md +359 -0
- package/merged-commands/azure-mgmt-weightsandbiases-dotnet.md +333 -0
- package/merged-commands/azure-microsoft-playwright-testing-ts.md +307 -0
- package/merged-commands/azure-monitor-ingestion-java.md +235 -0
- package/merged-commands/azure-monitor-ingestion-py.md +209 -0
- package/merged-commands/azure-monitor-opentelemetry-exporter-java.md +289 -0
- package/merged-commands/azure-monitor-opentelemetry-exporter-py.md +209 -0
- package/merged-commands/azure-monitor-opentelemetry-py.md +229 -0
- package/merged-commands/azure-monitor-opentelemetry-ts.md +324 -0
- package/merged-commands/azure-monitor-query-java.md +422 -0
- package/merged-commands/azure-monitor-query-py.md +257 -0
- package/merged-commands/azure-postgres-ts.md +482 -0
- package/merged-commands/azure-resource-manager-cosmosdb-dotnet.md +255 -0
- package/merged-commands/azure-resource-manager-durabletask-dotnet.md +382 -0
- package/merged-commands/azure-resource-manager-mysql-dotnet.md +397 -0
- package/merged-commands/azure-resource-manager-playwright-dotnet.md +302 -0
- package/merged-commands/azure-resource-manager-postgresql-dotnet.md +437 -0
- package/merged-commands/azure-resource-manager-redis-dotnet.md +361 -0
- package/merged-commands/azure-resource-manager-sql-dotnet.md +324 -0
- package/merged-commands/azure-search-documents-dotnet.md +344 -0
- package/merged-commands/azure-search-documents-py.md +533 -0
- package/merged-commands/azure-search-documents-ts.md +271 -0
- package/merged-commands/azure-security-keyvault-keys-dotnet.md +411 -0
- package/merged-commands/azure-security-keyvault-keys-java.md +367 -0
- package/merged-commands/azure-security-keyvault-secrets-java.md +361 -0
- package/merged-commands/azure-servicebus-dotnet.md +338 -0
- package/merged-commands/azure-servicebus-py.md +272 -0
- package/merged-commands/azure-servicebus-ts.md +238 -0
- package/merged-commands/azure-speech-to-text-rest-py.md +377 -0
- package/merged-commands/azure-storage-blob-java.md +393 -0
- package/merged-commands/azure-storage-blob-py.md +224 -0
- package/merged-commands/azure-storage-blob-rust.md +137 -0
- package/merged-commands/azure-storage-blob-ts.md +487 -0
- package/merged-commands/azure-storage-file-datalake-py.md +216 -0
- package/merged-commands/azure-storage-file-share-py.md +243 -0
- package/merged-commands/azure-storage-file-share-ts.md +498 -0
- package/merged-commands/azure-storage-queue-py.md +218 -0
- package/merged-commands/azure-storage-queue-ts.md +529 -0
- package/merged-commands/azure-web-pubsub-ts.md +315 -0
- package/merged-commands/backend-architect.md +3 -1
- package/merged-commands/backend-dev-guidelines.md +6 -1
- package/merged-commands/backend-development-feature-development.md +2 -0
- package/merged-commands/backend-security-coder.md +3 -1
- package/merged-commands/backtesting-frameworks.md +3 -1
- package/merged-commands/bamboohr-automation.md +225 -0
- package/merged-commands/basecamp-automation.md +239 -0
- package/merged-commands/bash-defensive-patterns.md +3 -1
- package/merged-commands/bash-linux.md +6 -1
- package/merged-commands/bash-pro.md +3 -1
- package/merged-commands/bash-scripting.md +197 -0
- package/merged-commands/bats-testing-patterns.md +3 -1
- package/merged-commands/bazel-build-optimization.md +3 -1
- package/merged-commands/behavioral-modes.md +6 -1
- package/merged-commands/bevy-ecs-expert.md +133 -0
- package/merged-commands/billing-automation.md +3 -1
- package/merged-commands/binary-analysis-patterns.md +3 -1
- package/merged-commands/bitbucket-automation.md +229 -0
- package/merged-commands/blockchain-developer.md +3 -1
- package/merged-commands/blockrun.md +3 -1
- package/merged-commands/box-automation.md +238 -0
- package/merged-commands/brainstorming.md +37 -213
- package/merged-commands/brand-guidelines-anthropic.md +7 -2
- package/merged-commands/brand-guidelines-community.md +7 -2
- package/merged-commands/brevo-automation.md +202 -0
- package/merged-commands/broken-authentication.md +7 -2
- package/merged-commands/browser-automation.md +5 -1
- package/merged-commands/browser-extension-builder.md +5 -1
- package/merged-commands/bullmq-specialist.md +4 -0
- package/merged-commands/bun-development.md +3 -1
- package/merged-commands/burp-suite-testing.md +7 -2
- package/merged-commands/business-analyst.md +3 -1
- package/merged-commands/busybox-on-windows.md +6 -1
- package/merged-commands/c-pro.md +2 -0
- package/merged-commands/c4-architecture-c4-architecture.md +2 -0
- package/merged-commands/c4-code.md +3 -1
- package/merged-commands/c4-component.md +7 -5
- package/merged-commands/c4-container.md +4 -2
- package/merged-commands/c4-context.md +5 -3
- package/merged-commands/cal-com-automation.md +208 -0
- package/merged-commands/calendly-automation.md +216 -0
- package/merged-commands/canva-automation.md +222 -0
- package/merged-commands/canvas-design.md +7 -2
- package/merged-commands/cc-skill-backend-patterns.md +8 -3
- package/merged-commands/cc-skill-clickhouse-io.md +8 -3
- package/merged-commands/cc-skill-coding-standards.md +8 -3
- package/merged-commands/cc-skill-continuous-learning.md +6 -1
- package/merged-commands/cc-skill-frontend-patterns.md +8 -3
- package/merged-commands/cc-skill-project-guidelines-example.md +3 -1
- package/merged-commands/cc-skill-security-review.md +8 -3
- package/merged-commands/cc-skill-strategic-compact.md +6 -1
- package/merged-commands/changelog-automation.md +3 -1
- package/merged-commands/cicd-automation-workflow-automate.md +3 -1
- package/merged-commands/circleci-automation.md +182 -0
- package/merged-commands/claude-code-guide.md +7 -2
- package/merged-commands/claude-d3js-skill.md +4 -2
- package/merged-commands/clean-code.md +79 -77
- package/merged-commands/clerk-auth.md +4 -0
- package/merged-commands/clickup-automation.md +239 -0
- package/merged-commands/close-automation.md +217 -0
- package/merged-commands/cloud-architect.md +102 -131
- package/merged-commands/cloud-devops.md +236 -0
- package/merged-commands/cloud-penetration-testing.md +7 -2
- package/merged-commands/coda-automation.md +246 -0
- package/merged-commands/code-documentation-code-explain.md +3 -1
- package/merged-commands/code-documentation-doc-generate.md +3 -1
- package/merged-commands/code-refactoring-context-restore.md +2 -0
- package/merged-commands/code-refactoring-refactor-clean.md +3 -1
- package/merged-commands/code-refactoring-tech-debt.md +2 -0
- package/merged-commands/code-review-ai-ai-review.md +2 -0
- package/merged-commands/code-review-checklist.md +75 -410
- package/merged-commands/code-review-excellence.md +3 -1
- package/merged-commands/code-reviewer.md +205 -174
- package/merged-commands/codebase-cleanup-deps-audit.md +3 -1
- package/merged-commands/codebase-cleanup-refactor-clean.md +3 -1
- package/merged-commands/codebase-cleanup-tech-debt.md +2 -0
- package/merged-commands/codex-review.md +3 -1
- package/merged-commands/commit.md +1 -1
- package/merged-commands/competitive-landscape.md +3 -1
- package/merged-commands/competitor-alternatives.md +6 -1
- package/merged-commands/comprehensive-review-full-review.md +2 -0
- package/merged-commands/comprehensive-review-pr-enhance.md +3 -1
- package/merged-commands/computer-use-agents.md +5 -1
- package/merged-commands/computer-vision-expert.md +72 -0
- package/merged-commands/concise-planning.md +6 -1
- package/merged-commands/conductor-implement.md +3 -1
- package/merged-commands/conductor-manage.md +2 -0
- package/merged-commands/conductor-new-track.md +8 -6
- package/merged-commands/conductor-revert.md +3 -1
- package/merged-commands/conductor-setup.md +8 -6
- package/merged-commands/conductor-status.md +3 -1
- package/merged-commands/conductor-validator.md +3 -1
- package/merged-commands/confluence-automation.md +213 -0
- package/merged-commands/content-creator.md +7 -1
- package/merged-commands/content-marketer.md +3 -1
- package/merged-commands/context-compression.md +5 -1
- package/merged-commands/context-degradation.md +1 -1
- package/merged-commands/context-driven-development.md +3 -1
- package/merged-commands/context-fundamentals.md +1 -1
- package/merged-commands/context-management-context-restore.md +2 -0
- package/merged-commands/context-management-context-save.md +2 -0
- package/merged-commands/context-manager.md +3 -1
- package/merged-commands/context-optimization.md +1 -1
- package/merged-commands/context-window-management.md +5 -1
- package/merged-commands/context7-auto-research.md +3 -1
- package/merged-commands/conversation-memory.md +4 -0
- package/merged-commands/convertkit-automation.md +200 -0
- package/merged-commands/copilot-sdk.md +515 -0
- package/merged-commands/copy-editing.md +3 -1
- package/merged-commands/copywriting.md +6 -1
- package/merged-commands/core-components.md +6 -1
- package/merged-commands/cost-optimization.md +3 -1
- package/merged-commands/cpp-pro.md +80 -42
- package/merged-commands/cqrs-implementation.md +3 -1
- package/merged-commands/crewai.md +5 -1
- package/merged-commands/crypto-bd-agent.md +248 -0
- package/merged-commands/csharp-pro.md +3 -1
- package/merged-commands/customer-support.md +3 -1
- package/merged-commands/daily-news-report.md +7 -2
- package/merged-commands/data-engineer.md +3 -1
- package/merged-commands/data-engineering-data-driven-feature.md +2 -0
- package/merged-commands/data-engineering-data-pipeline.md +2 -0
- package/merged-commands/data-quality-frameworks.md +3 -1
- package/merged-commands/data-scientist.md +3 -1
- package/merged-commands/data-storytelling.md +3 -1
- package/merged-commands/data-structure-protocol.md +198 -0
- package/merged-commands/database-admin.md +3 -1
- package/merged-commands/database-architect.md +3 -1
- package/merged-commands/database-cloud-optimization-cost-optimize.md +3 -1
- package/merged-commands/database-design.md +158 -33
- package/merged-commands/database-migration.md +3 -1
- package/merged-commands/database-migrations-migration-observability.md +3 -1
- package/merged-commands/database-migrations-sql-migrations.md +15 -20
- package/merged-commands/database-optimizer.md +91 -163
- package/merged-commands/database.md +213 -0
- package/merged-commands/datadog-automation.md +240 -0
- package/merged-commands/dbos-golang.md +133 -0
- package/merged-commands/dbos-python.md +102 -0
- package/merged-commands/dbos-typescript.md +111 -0
- package/merged-commands/dbt-transformation-patterns.md +3 -1
- package/merged-commands/ddd-context-mapping.md +51 -0
- package/merged-commands/ddd-strategic-design.md +51 -0
- package/merged-commands/ddd-tactical-patterns.md +52 -0
- package/merged-commands/debugger.md +3 -1
- package/merged-commands/debugging-strategies.md +3 -1
- package/merged-commands/debugging-toolkit-smart-debug.md +2 -0
- package/merged-commands/deep-research.md +1 -1
- package/merged-commands/defi-protocol-templates.md +3 -1
- package/merged-commands/dependency-management-deps-audit.md +3 -1
- package/merged-commands/dependency-upgrade.md +3 -1
- package/merged-commands/deployment-engineer.md +3 -1
- package/merged-commands/deployment-pipeline-design.md +3 -1
- package/merged-commands/deployment-procedures.md +6 -1
- package/merged-commands/deployment-validation-config-validate.md +2 -0
- package/merged-commands/design-orchestration.md +6 -1
- package/merged-commands/development.md +263 -0
- package/merged-commands/devops-troubleshooter.md +3 -1
- package/merged-commands/discord-automation.md +192 -0
- package/merged-commands/discord-bot-architect.md +4 -0
- package/merged-commands/dispatching-parallel-agents.md +3 -1
- package/merged-commands/distributed-debugging-debug-trace.md +3 -1
- package/merged-commands/distributed-tracing.md +3 -1
- package/merged-commands/django-pro.md +3 -1
- package/merged-commands/doc-coauthoring.md +6 -1
- package/merged-commands/docker-expert.md +7 -2
- package/merged-commands/docs-architect.md +3 -1
- package/merged-commands/documentation-generation-doc-generate.md +3 -1
- package/merged-commands/documentation-templates.md +8 -3
- package/merged-commands/documentation.md +261 -0
- package/merged-commands/docusign-automation.md +213 -0
- package/merged-commands/docx-official.md +8 -3
- package/merged-commands/docx.md +69 -172
- package/merged-commands/domain-driven-design.md +73 -0
- package/merged-commands/dotnet-architect.md +3 -1
- package/merged-commands/dotnet-backend-patterns.md +3 -1
- package/merged-commands/dotnet-backend.md +266 -0
- package/merged-commands/dropbox-automation.md +235 -0
- package/merged-commands/dx-optimizer.md +3 -1
- package/merged-commands/e2e-testing-patterns.md +3 -1
- package/merged-commands/e2e-testing.md +166 -0
- package/merged-commands/elixir-pro.md +3 -1
- package/merged-commands/email-sequence.md +6 -1
- package/merged-commands/email-systems.md +5 -1
- package/merged-commands/embedding-strategies.md +3 -1
- package/merged-commands/employment-contract-templates.md +3 -1
- package/merged-commands/environment-setup-guide.md +2 -0
- package/merged-commands/error-debugging-error-analysis.md +2 -0
- package/merged-commands/error-debugging-error-trace.md +3 -1
- package/merged-commands/error-debugging-multi-agent-review.md +2 -0
- package/merged-commands/error-detective.md +3 -1
- package/merged-commands/error-diagnostics-error-analysis.md +2 -0
- package/merged-commands/error-diagnostics-error-trace.md +2 -0
- package/merged-commands/error-diagnostics-smart-debug.md +2 -0
- package/merged-commands/error-handling-patterns.md +3 -1
- package/merged-commands/ethical-hacking-methodology.md +7 -2
- package/merged-commands/evaluation.md +1 -1
- package/merged-commands/event-sourcing-architect.md +3 -1
- package/merged-commands/event-store-design.md +3 -1
- package/merged-commands/exa-search.md +3 -1
- package/merged-commands/executing-plans.md +6 -1
- package/merged-commands/expo-deployment.md +12 -62
- package/merged-commands/fastapi-pro.md +3 -1
- package/merged-commands/fastapi-router-py.md +57 -0
- package/merged-commands/fastapi-templates.md +3 -1
- package/merged-commands/figma-automation.md +186 -0
- package/merged-commands/file-organizer.md +252 -69
- package/merged-commands/file-path-traversal.md +7 -2
- package/merged-commands/file-uploads.md +5 -1
- package/merged-commands/find-skills.md +137 -0
- package/merged-commands/finishing-a-development-branch.md +6 -1
- package/merged-commands/firebase.md +5 -1
- package/merged-commands/firecrawl-scraper.md +3 -1
- package/merged-commands/firmware-analyst.md +3 -1
- package/merged-commands/flutter-expert.md +84 -196
- package/merged-commands/form-cro.md +6 -1
- package/merged-commands/foundry-iq-python.md +3 -0
- package/merged-commands/fp-ts-errors.md +1 -1
- package/merged-commands/fp-ts-pragmatic.md +1 -1
- package/merged-commands/fp-ts-react.md +1 -1
- package/merged-commands/framework-migration-code-migrate.md +2 -0
- package/merged-commands/framework-migration-deps-upgrade.md +2 -0
- package/merged-commands/framework-migration-legacy-modernize.md +2 -0
- package/merged-commands/free-tool-strategy.md +6 -1
- package/merged-commands/freshdesk-automation.md +224 -0
- package/merged-commands/freshservice-automation.md +218 -0
- package/merged-commands/frontend-design.md +26 -259
- package/merged-commands/frontend-dev-guidelines.md +6 -1
- package/merged-commands/frontend-developer.md +3 -1
- package/merged-commands/frontend-mobile-development-component-scaffold.md +2 -0
- package/merged-commands/frontend-mobile-security-xss-scan.md +2 -0
- package/merged-commands/frontend-security-coder.md +3 -1
- package/merged-commands/frontend-slides.md +4 -1
- package/merged-commands/frontend-ui-dark-ts.md +593 -0
- package/merged-commands/full-stack-orchestration-full-stack-feature.md +2 -0
- package/merged-commands/game-development.md +3 -1
- package/merged-commands/gcp-cloud-run.md +5 -1
- package/merged-commands/gdpr-data-handling.md +3 -1
- package/merged-commands/gemini-api-dev.md +132 -0
- package/merged-commands/geo-fundamentals.md +6 -1
- package/merged-commands/git-advanced-workflows.md +3 -1
- package/merged-commands/git-pr-workflows-git-workflow.md +2 -0
- package/merged-commands/git-pr-workflows-onboard.md +2 -0
- package/merged-commands/git-pr-workflows-pr-enhance.md +2 -0
- package/merged-commands/git-pushing.md +3 -1
- package/merged-commands/github-actions-templates.md +3 -1
- package/merged-commands/github-automation.md +232 -0
- package/merged-commands/github-issue-creator.md +142 -0
- package/merged-commands/github-workflow-automation.md +3 -1
- package/merged-commands/gitlab-automation.md +259 -0
- package/merged-commands/gitlab-ci-patterns.md +3 -1
- package/merged-commands/gitops-workflow.md +3 -1
- package/merged-commands/gmail-automation.md +275 -0
- package/merged-commands/go-concurrency-patterns.md +3 -1
- package/merged-commands/go-playwright.md +76 -0
- package/merged-commands/go-rod-master.md +544 -0
- package/merged-commands/godot-4-migration.md +126 -0
- package/merged-commands/godot-gdscript-patterns.md +3 -1
- package/merged-commands/golang-pro.md +91 -176
- package/merged-commands/google-analytics-automation.md +232 -0
- package/merged-commands/google-calendar-automation.md +181 -0
- package/merged-commands/google-drive-automation.md +198 -0
- package/merged-commands/googlesheets-automation.md +202 -0
- package/merged-commands/grafana-dashboards.md +3 -1
- package/merged-commands/graphql-architect.md +83 -168
- package/merged-commands/graphql.md +5 -1
- package/merged-commands/haskell-pro.md +2 -0
- package/merged-commands/helm-chart-scaffolding.md +3 -1
- package/merged-commands/helpdesk-automation.md +171 -0
- package/merged-commands/hig-components-content.md +91 -0
- package/merged-commands/hig-components-controls.md +93 -0
- package/merged-commands/hig-components-dialogs.md +81 -0
- package/merged-commands/hig-components-layout.md +104 -0
- package/merged-commands/hig-components-menus.md +86 -0
- package/merged-commands/hig-components-search.md +73 -0
- package/merged-commands/hig-components-status.md +91 -0
- package/merged-commands/hig-components-system.md +111 -0
- package/merged-commands/hig-foundations.md +103 -0
- package/merged-commands/hig-inputs.md +121 -0
- package/merged-commands/hig-patterns.md +109 -0
- package/merged-commands/hig-platforms.md +89 -0
- package/merged-commands/hig-project-context.md +138 -0
- package/merged-commands/hig-technologies.md +136 -0
- package/merged-commands/hosted-agents-v2-py.md +326 -0
- package/merged-commands/hr-pro.md +3 -1
- package/merged-commands/html-injection-testing.md +7 -2
- package/merged-commands/hubspot-automation.md +183 -0
- package/merged-commands/hubspot-integration.md +5 -1
- package/merged-commands/hugging-face-cli.md +3 -3
- package/merged-commands/hugging-face-jobs.md +1 -1
- package/merged-commands/hybrid-cloud-architect.md +3 -1
- package/merged-commands/hybrid-cloud-networking.md +3 -1
- package/merged-commands/hybrid-search-implementation.md +3 -1
- package/merged-commands/i18n-localization.md +1 -1
- package/merged-commands/idor-testing.md +7 -2
- package/merged-commands/imagen.md +1 -1
- package/merged-commands/incident-responder.md +3 -1
- package/merged-commands/incident-response-incident-response.md +2 -0
- package/merged-commands/incident-response-smart-fix.md +2 -0
- package/merged-commands/incident-runbook-templates.md +3 -1
- package/merged-commands/infinite-gratitude.md +2 -2
- package/merged-commands/inngest.md +5 -1
- package/merged-commands/instagram-automation.md +197 -0
- package/merged-commands/interactive-portfolio.md +5 -1
- package/merged-commands/intercom-automation.md +253 -0
- package/merged-commands/internal-comms-anthropic.md +4 -2
- package/merged-commands/internal-comms-community.md +4 -2
- package/merged-commands/ios-developer.md +3 -1
- package/merged-commands/istio-traffic-management.md +3 -1
- package/merged-commands/java-pro.md +3 -1
- package/merged-commands/javascript-mastery.md +3 -1
- package/merged-commands/javascript-pro.md +79 -41
- package/merged-commands/javascript-testing-patterns.md +3 -1
- package/merged-commands/javascript-typescript-typescript-scaffold.md +2 -0
- package/merged-commands/jira-automation.md +190 -0
- package/merged-commands/julia-pro.md +3 -1
- package/merged-commands/k8s-manifest-generator.md +3 -1
- package/merged-commands/k8s-security-policies.md +3 -1
- package/merged-commands/kaizen.md +3 -1
- package/merged-commands/klaviyo-automation.md +195 -0
- package/merged-commands/kotlin-coroutines-expert.md +100 -0
- package/merged-commands/kpi-dashboard-design.md +3 -1
- package/merged-commands/kubernetes-architect.md +3 -1
- package/merged-commands/kubernetes-deployment.md +167 -0
- package/merged-commands/langchain-architecture.md +3 -1
- package/merged-commands/langfuse.md +5 -1
- package/merged-commands/langgraph.md +5 -1
- package/merged-commands/laravel-expert.md +185 -0
- package/merged-commands/laravel-security-audit.md +223 -0
- package/merged-commands/last30days.md +6 -1
- package/merged-commands/launch-strategy.md +6 -1
- package/merged-commands/legacy-modernizer.md +79 -39
- package/merged-commands/legal-advisor.md +3 -1
- package/merged-commands/linear-automation.md +183 -0
- package/merged-commands/linear-claude-skill.md +14 -14
- package/merged-commands/linkedin-automation.md +180 -0
- package/merged-commands/linkerd-patterns.md +3 -1
- package/merged-commands/lint-and-validate.md +3 -3
- package/merged-commands/linux-privilege-escalation.md +7 -2
- package/merged-commands/linux-shell-scripting.md +7 -2
- package/merged-commands/linux-troubleshooting.md +221 -0
- package/merged-commands/llm-app-patterns.md +4 -2
- package/merged-commands/llm-application-dev-ai-assistant.md +2 -0
- package/merged-commands/llm-application-dev-langchain-agent.md +2 -0
- package/merged-commands/llm-application-dev-prompt-optimize.md +2 -0
- package/merged-commands/llm-evaluation.md +3 -1
- package/merged-commands/loki-mode.md +6 -1
- package/merged-commands/m365-agents-dotnet.md +295 -0
- package/merged-commands/m365-agents-py.md +346 -0
- package/merged-commands/m365-agents-ts.md +187 -0
- package/merged-commands/machine-learning-ops-ml-pipeline.md +2 -0
- package/merged-commands/mailchimp-automation.md +236 -0
- package/merged-commands/make-automation.md +206 -0
- package/merged-commands/malware-analyst.md +3 -1
- package/merged-commands/manifest.md +126 -0
- package/merged-commands/market-sizing-analysis.md +3 -1
- package/merged-commands/marketing-ideas.md +6 -1
- package/merged-commands/marketing-psychology.md +6 -1
- package/merged-commands/mcp-builder-ms.md +309 -0
- package/merged-commands/mcp-builder.md +184 -92
- package/merged-commands/memory-forensics.md +3 -1
- package/merged-commands/memory-safety-patterns.md +3 -1
- package/merged-commands/memory-systems.md +1 -1
- package/merged-commands/mermaid-expert.md +3 -1
- package/merged-commands/metasploit-framework.md +7 -2
- package/merged-commands/micro-saas-launcher.md +5 -1
- package/merged-commands/microservices-patterns.md +3 -1
- package/merged-commands/microsoft-azure-webjobs-extensions-authentication-events-dotnet.md +445 -0
- package/merged-commands/microsoft-teams-automation.md +216 -0
- package/merged-commands/minecraft-bukkit-pro.md +3 -1
- package/merged-commands/miro-automation.md +210 -0
- package/merged-commands/mixpanel-automation.md +229 -0
- package/merged-commands/ml-engineer.md +3 -1
- package/merged-commands/ml-pipeline-workflow.md +3 -1
- package/merged-commands/mlops-engineer.md +3 -1
- package/merged-commands/mobile-design.md +280 -170
- package/merged-commands/mobile-developer.md +3 -1
- package/merged-commands/mobile-security-coder.md +3 -1
- package/merged-commands/modern-javascript-patterns.md +3 -1
- package/merged-commands/monday-automation.md +238 -0
- package/merged-commands/monorepo-architect.md +2 -0
- package/merged-commands/monorepo-management.md +3 -1
- package/merged-commands/moodle-external-api-development.md +3 -1
- package/merged-commands/mtls-configuration.md +3 -1
- package/merged-commands/multi-agent-brainstorming.md +6 -1
- package/merged-commands/multi-agent-patterns.md +1 -1
- package/merged-commands/multi-cloud-architecture.md +3 -1
- package/merged-commands/multi-platform-apps-multi-platform.md +2 -0
- package/merged-commands/n8n-code-python.md +11 -11
- package/merged-commands/n8n-mcp-tools-expert.md +10 -10
- package/merged-commands/n8n-node-configuration.md +3 -3
- package/merged-commands/neon-postgres.md +5 -1
- package/merged-commands/nerdzao-elite-gemini-high.md +50 -0
- package/merged-commands/nerdzao-elite.md +31 -0
- package/merged-commands/nestjs-expert.md +7 -2
- package/merged-commands/network-101.md +7 -2
- package/merged-commands/network-engineer.md +3 -1
- package/merged-commands/nextjs-app-router-patterns.md +3 -1
- package/merged-commands/nextjs-best-practices.md +6 -1
- package/merged-commands/nextjs-supabase-auth.md +4 -0
- package/merged-commands/nft-standards.md +3 -1
- package/merged-commands/nodejs-backend-patterns.md +3 -1
- package/merged-commands/nodejs-best-practices.md +7 -1
- package/merged-commands/nosql-expert.md +2 -0
- package/merged-commands/notebooklm.md +3 -1
- package/merged-commands/notion-automation.md +220 -0
- package/merged-commands/notion-template-business.md +5 -1
- package/merged-commands/nx-workspace-patterns.md +3 -1
- package/merged-commands/observability-engineer.md +3 -1
- package/merged-commands/observability-monitoring-monitor-setup.md +2 -0
- package/merged-commands/observability-monitoring-slo-implement.md +3 -1
- package/merged-commands/observe-whatsapp.md +4 -4
- package/merged-commands/obsidian-clipper-template-creator.md +6 -1
- package/merged-commands/office-productivity.md +219 -0
- package/merged-commands/on-call-handoff-patterns.md +3 -1
- package/merged-commands/onboarding-cro.md +6 -1
- package/merged-commands/one-drive-automation.md +243 -0
- package/merged-commands/openapi-spec-generation.md +3 -1
- package/merged-commands/os-scripting.md +429 -0
- package/merged-commands/oss-hunter.md +75 -0
- package/merged-commands/outlook-automation.md +196 -0
- package/merged-commands/outlook-calendar-automation.md +241 -0
- package/merged-commands/page-cro.md +6 -1
- package/merged-commands/pagerduty-automation.md +250 -0
- package/merged-commands/paid-ads.md +6 -1
- package/merged-commands/parallel-agents.md +1 -1
- package/merged-commands/payment-integration.md +3 -1
- package/merged-commands/paypal-integration.md +3 -1
- package/merged-commands/paywall-upgrade-cro.md +6 -1
- package/merged-commands/pci-compliance.md +3 -1
- package/merged-commands/pdf-official.md +7 -2
- package/merged-commands/pdf.md +6 -196
- package/merged-commands/pentest-checklist.md +7 -2
- package/merged-commands/pentest-commands.md +7 -2
- package/merged-commands/performance-engineer.md +2 -0
- package/merged-commands/performance-profiling.md +1 -1
- package/merged-commands/performance-testing-review-ai-review.md +2 -0
- package/merged-commands/performance-testing-review-multi-agent-review.md +2 -0
- package/merged-commands/personal-tool-builder.md +5 -1
- package/merged-commands/php-pro.md +78 -46
- package/merged-commands/pipedrive-automation.md +229 -0
- package/merged-commands/plaid-fintech.md +5 -1
- package/merged-commands/plan-writing.md +1 -1
- package/merged-commands/planning-with-files.md +3 -1
- package/merged-commands/playwright-skill.md +6 -1
- package/merged-commands/podcast-generation.md +2 -0
- package/merged-commands/popup-cro.md +6 -1
- package/merged-commands/posix-shell-pro.md +3 -1
- package/merged-commands/postgres-best-practices.md +7 -2
- package/merged-commands/postgresql-optimization.md +175 -0
- package/merged-commands/postgresql.md +3 -1
- package/merged-commands/posthog-automation.md +229 -0
- package/merged-commands/postmark-automation.md +192 -0
- package/merged-commands/postmortem-writing.md +5 -3
- package/merged-commands/powershell-windows.md +6 -1
- package/merged-commands/pptx-official.md +8 -3
- package/merged-commands/pptx.md +86 -456
- package/merged-commands/pricing-strategy.md +6 -1
- package/merged-commands/prisma-expert.md +6 -1
- package/merged-commands/privilege-escalation-methods.md +7 -2
- package/merged-commands/product-manager-toolkit.md +15 -15
- package/merged-commands/production-code-audit.md +2 -0
- package/merged-commands/programmatic-seo.md +6 -1
- package/merged-commands/projection-patterns.md +3 -1
- package/merged-commands/prometheus-configuration.md +3 -1
- package/merged-commands/prompt-caching.md +5 -1
- package/merged-commands/prompt-engineer.md +76 -249
- package/merged-commands/prompt-engineering-patterns.md +3 -1
- package/merged-commands/prompt-engineering.md +6 -1
- package/merged-commands/prompt-library.md +3 -1
- package/merged-commands/protocol-reverse-engineering.md +3 -1
- package/merged-commands/pydantic-models-py.md +63 -0
- package/merged-commands/python-development-python-scaffold.md +2 -0
- package/merged-commands/python-fastapi-development.md +216 -0
- package/merged-commands/python-packaging.md +3 -1
- package/merged-commands/python-patterns.md +7 -1
- package/merged-commands/python-performance-optimization.md +3 -1
- package/merged-commands/python-pro.md +89 -155
- package/merged-commands/python-testing-patterns.md +3 -1
- package/merged-commands/quant-analyst.md +3 -1
- package/merged-commands/radix-ui-design-system.md +1 -1
- package/merged-commands/rag-engineer.md +5 -1
- package/merged-commands/rag-implementation.md +37 -395
- package/merged-commands/react-best-practices.md +17 -2
- package/merged-commands/react-flow-architect.md +618 -0
- package/merged-commands/react-flow-node-ts.md +71 -0
- package/merged-commands/react-modernization.md +3 -1
- package/merged-commands/react-native-architecture.md +3 -1
- package/merged-commands/react-nextjs-development.md +229 -0
- package/merged-commands/react-patterns.md +6 -1
- package/merged-commands/react-state-management.md +3 -1
- package/merged-commands/react-ui-patterns.md +6 -1
- package/merged-commands/readme.md +164 -97
- package/merged-commands/receiving-code-review.md +6 -1
- package/merged-commands/red-team-tactics.md +6 -1
- package/merged-commands/red-team-tools.md +7 -2
- package/merged-commands/reddit-automation.md +217 -0
- package/merged-commands/reference-builder.md +3 -1
- package/merged-commands/referral-program.md +6 -1
- package/merged-commands/remotion-best-practices.md +3 -1
- package/merged-commands/render-automation.md +186 -0
- package/merged-commands/requesting-code-review.md +6 -1
- package/merged-commands/research-engineer.md +6 -1
- package/merged-commands/reverse-engineer.md +3 -1
- package/merged-commands/risk-manager.md +3 -1
- package/merged-commands/risk-metrics-calculation.md +3 -1
- package/merged-commands/ruby-pro.md +3 -1
- package/merged-commands/rust-async-patterns.md +3 -1
- package/merged-commands/rust-pro.md +3 -1
- package/merged-commands/saga-orchestration.md +3 -1
- package/merged-commands/sales-automator.md +3 -1
- package/merged-commands/salesforce-automation.md +195 -0
- package/merged-commands/salesforce-development.md +5 -1
- package/merged-commands/sast-configuration.md +12 -10
- package/merged-commands/scala-pro.md +3 -1
- package/merged-commands/scanning-tools.md +7 -2
- package/merged-commands/schema-markup.md +6 -1
- package/merged-commands/screen-reader-testing.md +3 -1
- package/merged-commands/scroll-experience.md +5 -1
- package/merged-commands/search-specialist.md +2 -0
- package/merged-commands/secrets-management.md +3 -1
- package/merged-commands/security-audit.md +218 -0
- package/merged-commands/security-auditor.md +3 -1
- package/merged-commands/security-compliance-compliance-check.md +3 -1
- package/merged-commands/security-requirement-extraction.md +3 -1
- package/merged-commands/security-scanning-security-dependencies.md +3 -1
- package/merged-commands/security-scanning-security-hardening.md +2 -0
- package/merged-commands/security-scanning-security-sast.md +3 -1
- package/merged-commands/segment-automation.md +230 -0
- package/merged-commands/segment-cdp.md +5 -1
- package/merged-commands/sendgrid-automation.md +233 -0
- package/merged-commands/senior-architect.md +9 -9
- package/merged-commands/senior-fullstack.md +9 -9
- package/merged-commands/sentry-automation.md +237 -0
- package/merged-commands/seo-audit.md +6 -1
- package/merged-commands/seo-authority-builder.md +3 -1
- package/merged-commands/seo-cannibalization-detector.md +3 -1
- package/merged-commands/seo-content-auditor.md +3 -1
- package/merged-commands/seo-content-planner.md +3 -1
- package/merged-commands/seo-content-refresher.md +3 -1
- package/merged-commands/seo-content-writer.md +3 -1
- package/merged-commands/seo-fundamentals.md +78 -122
- package/merged-commands/seo-keyword-strategist.md +3 -1
- package/merged-commands/seo-meta-optimizer.md +3 -1
- package/merged-commands/seo-snippet-hunter.md +3 -1
- package/merged-commands/seo-structure-architect.md +3 -1
- package/merged-commands/server-management.md +6 -1
- package/merged-commands/service-mesh-expert.md +2 -0
- package/merged-commands/service-mesh-observability.md +3 -1
- package/merged-commands/shader-programming-glsl.md +121 -0
- package/merged-commands/shellcheck-configuration.md +3 -1
- package/merged-commands/shodan-reconnaissance.md +7 -2
- package/merged-commands/shopify-apps.md +5 -1
- package/merged-commands/shopify-automation.md +173 -0
- package/merged-commands/shopify-development.md +6 -1
- package/merged-commands/signup-flow-cro.md +6 -1
- package/merged-commands/similarity-search-patterns.md +3 -1
- package/merged-commands/skill-creator-ms.md +618 -0
- package/merged-commands/skill-creator.md +13 -160
- package/merged-commands/skill-developer.md +3 -1
- package/merged-commands/slack-automation.md +194 -0
- package/merged-commands/slack-bot-builder.md +5 -1
- package/merged-commands/slack-gif-creator.md +557 -165
- package/merged-commands/slo-implementation.md +3 -1
- package/merged-commands/smtp-penetration-testing.md +7 -2
- package/merged-commands/social-content.md +6 -1
- package/merged-commands/software-architecture.md +6 -1
- package/merged-commands/solidity-security.md +3 -1
- package/merged-commands/spark-optimization.md +3 -1
- package/merged-commands/sql-injection-testing.md +7 -2
- package/merged-commands/sql-optimization-patterns.md +3 -1
- package/merged-commands/sql-pro.md +94 -170
- package/merged-commands/sqlmap-database-pentesting.md +7 -2
- package/merged-commands/square-automation.md +181 -0
- package/merged-commands/ssh-penetration-testing.md +7 -2
- package/merged-commands/startup-analyst.md +3 -1
- package/merged-commands/startup-business-analyst-business-case.md +3 -1
- package/merged-commands/startup-business-analyst-financial-projections.md +3 -1
- package/merged-commands/startup-business-analyst-market-opportunity.md +3 -1
- package/merged-commands/startup-financial-modeling.md +3 -1
- package/merged-commands/startup-metrics-framework.md +3 -1
- package/merged-commands/stitch-ui-design.md +4 -1
- package/merged-commands/stride-analysis-patterns.md +3 -1
- package/merged-commands/stripe-automation.md +203 -0
- package/merged-commands/stripe-integration.md +44 -429
- package/merged-commands/subagent-driven-development.md +3 -1
- package/merged-commands/supabase-automation.md +241 -0
- package/merged-commands/swiftui-expert-skill.md +1 -1
- package/merged-commands/systematic-debugging.md +85 -272
- package/merged-commands/systems-programming-rust-project.md +2 -0
- package/merged-commands/tailwind-design-system.md +3 -1
- package/merged-commands/tailwind-patterns.md +7 -1
- package/merged-commands/tavily-web.md +3 -1
- package/merged-commands/tdd-orchestrator.md +3 -1
- package/merged-commands/tdd-workflow.md +6 -1
- package/merged-commands/tdd-workflows-tdd-cycle.md +2 -0
- package/merged-commands/tdd-workflows-tdd-green.md +3 -1
- package/merged-commands/tdd-workflows-tdd-red.md +3 -1
- package/merged-commands/tdd-workflows-tdd-refactor.md +2 -0
- package/merged-commands/team-collaboration-issue.md +2 -0
- package/merged-commands/team-collaboration-standup-notes.md +2 -0
- package/merged-commands/team-composition-analysis.md +3 -1
- package/merged-commands/telegram-automation.md +224 -0
- package/merged-commands/telegram-bot-builder.md +5 -1
- package/merged-commands/telegram-mini-app.md +5 -1
- package/merged-commands/temporal-python-pro.md +3 -1
- package/merged-commands/temporal-python-testing.md +3 -1
- package/merged-commands/terraform-infrastructure.md +164 -0
- package/merged-commands/terraform-module-library.md +3 -1
- package/merged-commands/terraform-skill.md +19 -19
- package/merged-commands/terraform-specialist.md +3 -1
- package/merged-commands/test-automator.md +3 -1
- package/merged-commands/test-driven-development.md +3 -1
- package/merged-commands/test-fixing.md +3 -1
- package/merged-commands/testing-patterns.md +125 -206
- package/merged-commands/testing-qa.md +231 -0
- package/merged-commands/theme-factory.md +6 -1
- package/merged-commands/threat-mitigation-mapping.md +3 -1
- package/merged-commands/threat-modeling-expert.md +3 -1
- package/merged-commands/threejs-skills.md +642 -10
- package/merged-commands/tiktok-automation.md +183 -0
- package/merged-commands/todoist-automation.md +236 -0
- package/merged-commands/tool-design.md +3 -3
- package/merged-commands/top-web-vulnerabilities.md +7 -2
- package/merged-commands/track-management.md +3 -1
- package/merged-commands/trello-automation.md +186 -0
- package/merged-commands/trigger-dev.md +5 -1
- package/merged-commands/turborepo-caching.md +3 -1
- package/merged-commands/tutorial-engineer.md +3 -1
- package/merged-commands/twilio-communications.md +5 -1
- package/merged-commands/twitter-automation.md +236 -0
- package/merged-commands/typescript-advanced-types.md +3 -1
- package/merged-commands/typescript-expert.md +6 -1
- package/merged-commands/typescript-pro.md +91 -52
- package/merged-commands/ui-ux-designer.md +3 -1
- package/merged-commands/ui-ux-pro-max.md +88 -74
- package/merged-commands/ui-visual-validator.md +3 -1
- package/merged-commands/unit-testing-test-generate.md +3 -1
- package/merged-commands/unity-developer.md +3 -1
- package/merged-commands/unity-ecs-patterns.md +3 -1
- package/merged-commands/unreal-engine-cpp-pro.md +1 -1
- package/merged-commands/upgrading-expo.md +12 -108
- package/merged-commands/upstash-qstash.md +5 -1
- package/merged-commands/using-git-worktrees.md +6 -1
- package/merged-commands/using-neon.md +1 -1
- package/merged-commands/using-superpowers.md +6 -1
- package/merged-commands/uv-package-manager.md +3 -1
- package/merged-commands/vector-database-engineer.md +2 -0
- package/merged-commands/vector-index-tuning.md +3 -1
- package/merged-commands/vercel-automation.md +231 -0
- package/merged-commands/vercel-deploy-claimable.md +4 -1
- package/merged-commands/verification-before-completion.md +6 -1
- package/merged-commands/viral-generator-builder.md +5 -1
- package/merged-commands/voice-agents.md +5 -1
- package/merged-commands/voice-ai-development.md +5 -1
- package/merged-commands/voice-ai-engine-development.md +2 -0
- package/merged-commands/vulnerability-scanner.md +1 -1
- package/merged-commands/wcag-audit-patterns.md +3 -1
- package/merged-commands/web-artifacts-builder.md +7 -2
- package/merged-commands/web-design-guidelines.md +4 -1
- package/merged-commands/web-performance-optimization.md +2 -0
- package/merged-commands/web-security-testing.md +184 -0
- package/merged-commands/web3-testing.md +3 -1
- package/merged-commands/webapp-testing.md +7 -2
- package/merged-commands/webflow-automation.md +241 -0
- package/merged-commands/whatsapp-automation.md +219 -0
- package/merged-commands/wiki-architect.md +65 -0
- package/merged-commands/wiki-changelog.md +32 -0
- package/merged-commands/wiki-onboarding.md +82 -0
- package/merged-commands/wiki-page-writer.md +70 -0
- package/merged-commands/wiki-qa.md +39 -0
- package/merged-commands/wiki-researcher.md +70 -0
- package/merged-commands/wiki-vitepress.md +153 -0
- package/merged-commands/windows-privilege-escalation.md +7 -2
- package/merged-commands/wireshark-analysis.md +7 -2
- package/merged-commands/wordpress-penetration-testing.md +7 -2
- package/merged-commands/wordpress-plugin-development.md +204 -0
- package/merged-commands/wordpress-theme-development.md +189 -0
- package/merged-commands/wordpress-woocommerce-development.md +188 -0
- package/merged-commands/wordpress.md +319 -0
- package/merged-commands/workflow-automation.md +5 -1
- package/merged-commands/workflow-orchestration-patterns.md +3 -1
- package/merged-commands/workflow-patterns.md +3 -1
- package/merged-commands/wrike-automation.md +238 -0
- package/merged-commands/writing-plans.md +6 -1
- package/merged-commands/writing-skills.md +614 -84
- package/merged-commands/xlsx-official.md +8 -3
- package/merged-commands/xlsx.md +28 -217
- package/merged-commands/xss-html-injection.md +7 -2
- package/merged-commands/youtube-automation.md +223 -0
- package/merged-commands/youtube-summarizer.md +412 -0
- package/merged-commands/zapier-make-patterns.md +5 -1
- package/merged-commands/zendesk-automation.md +220 -0
- package/merged-commands/zoho-crm-automation.md +211 -0
- package/merged-commands/zoom-automation.md +222 -0
- package/merged-commands/zustand-store-ts.md +73 -0
- package/package.json +1 -1
- package/rules-index.json +1 -1
- package/skills/3d-web-experience/SKILL.md +5 -1
- package/skills/ab-test-setup/SKILL.md +6 -1
- package/skills/accessibility-compliance-accessibility-audit/SKILL.md +2 -0
- package/skills/active-directory-attacks/SKILL.md +7 -2
- package/skills/activecampaign-automation/SKILL.md +214 -0
- package/skills/address-github-comments/SKILL.md +6 -1
- package/skills/agent-evaluation/SKILL.md +5 -1
- package/skills/agent-framework-azure-ai-py/SKILL.md +338 -0
- package/skills/agent-framework-azure-hosted-agents/SKILL.md +3 -0
- package/skills/agent-manager-skill/SKILL.md +3 -1
- package/skills/agent-memory-mcp/SKILL.md +6 -1
- package/skills/agent-memory-systems/SKILL.md +5 -1
- package/skills/agent-orchestration-improve-agent/SKILL.md +2 -0
- package/skills/agent-orchestration-multi-agent-optimize/SKILL.md +2 -0
- package/skills/agent-tool-builder/SKILL.md +5 -1
- package/skills/agents-v2-py/SKILL.md +326 -0
- package/skills/ai-agent-development/SKILL.md +174 -0
- package/skills/ai-agents-architect/SKILL.md +5 -1
- package/skills/ai-engineer/SKILL.md +3 -1
- package/skills/ai-ml/SKILL.md +253 -0
- package/skills/ai-product/SKILL.md +5 -1
- package/skills/ai-wrapper-product/SKILL.md +5 -1
- package/skills/airflow-dag-patterns/SKILL.md +3 -1
- package/skills/airtable-automation/SKILL.md +175 -0
- package/skills/algolia-search/SKILL.md +4 -0
- package/skills/algorithmic-art/SKILL.md +106 -375
- package/skills/amplitude-automation/SKILL.md +221 -0
- package/skills/analytics-tracking/SKILL.md +6 -1
- package/skills/android-jetpack-compose-expert/SKILL.md +152 -0
- package/skills/angular/README.md +40 -0
- package/skills/angular/SKILL.md +821 -0
- package/skills/angular/metadata.json +14 -0
- package/skills/angular-best-practices/README.md +58 -0
- package/skills/angular-best-practices/SKILL.md +562 -0
- package/skills/angular-best-practices/metadata.json +13 -0
- package/skills/angular-migration/SKILL.md +3 -1
- package/skills/angular-state-management/README.md +41 -0
- package/skills/angular-state-management/SKILL.md +634 -0
- package/skills/angular-state-management/metadata.json +13 -0
- package/skills/angular-ui-patterns/README.md +55 -0
- package/skills/angular-ui-patterns/SKILL.md +511 -0
- package/skills/angular-ui-patterns/metadata.json +12 -0
- package/skills/anti-reversing-techniques/SKILL.md +3 -1
- package/skills/antigravity-workflows/SKILL.md +80 -0
- package/skills/antigravity-workflows/resources/implementation-playbook.md +36 -0
- package/skills/api-design-principles/SKILL.md +3 -1
- package/skills/api-documentation/SKILL.md +164 -0
- package/skills/api-documentation-generator/SKILL.md +2 -0
- package/skills/api-documenter/SKILL.md +3 -1
- package/skills/api-fuzzing-bug-bounty/SKILL.md +7 -2
- package/skills/api-patterns/SKILL.md +1 -1
- package/skills/api-security-best-practices/SKILL.md +2 -0
- package/skills/api-security-testing/SKILL.md +172 -0
- package/skills/api-testing-observability-api-mock/SKILL.md +2 -0
- package/skills/app-builder/SKILL.md +6 -1
- package/skills/app-builder/templates/SKILL.md +6 -1
- package/skills/app-store-optimization/SKILL.md +6 -1
- package/skills/app-store-optimization/competitor_analyzer.py +1 -1
- package/skills/application-performance-performance-optimization/SKILL.md +2 -0
- package/skills/architect-review/SKILL.md +2 -0
- package/skills/architecture/SKILL.md +6 -1
- package/skills/architecture-decision-records/SKILL.md +7 -5
- package/skills/architecture-patterns/SKILL.md +3 -1
- package/skills/arm-cortex-expert/SKILL.md +3 -1
- package/skills/asana-automation/SKILL.md +176 -0
- package/skills/async-python-patterns/SKILL.md +3 -1
- package/skills/attack-tree-construction/SKILL.md +3 -1
- package/skills/audio-transcriber/CHANGELOG.md +137 -0
- package/skills/audio-transcriber/README.md +340 -0
- package/skills/audio-transcriber/SKILL.md +559 -0
- package/skills/audio-transcriber/examples/basic-transcription.sh +250 -0
- package/skills/audio-transcriber/references/tools-comparison.md +352 -0
- package/skills/audio-transcriber/scripts/install-requirements.sh +190 -0
- package/skills/audio-transcriber/scripts/transcribe.py +486 -0
- package/skills/auth-implementation-patterns/SKILL.md +3 -1
- package/skills/auth-implementation-patterns/resources/implementation-playbook.md +2 -17
- package/skills/automate-whatsapp/SKILL.md +10 -10
- package/skills/autonomous-agent-patterns/SKILL.md +3 -1
- package/skills/autonomous-agents/SKILL.md +5 -1
- package/skills/avalonia-layout-zafiro/SKILL.md +6 -1
- package/skills/avalonia-viewmodels-zafiro/SKILL.md +6 -1
- package/skills/avalonia-zafiro-development/SKILL.md +6 -1
- package/skills/aws-cost-cleanup/SKILL.md +309 -0
- package/skills/aws-cost-optimizer/SKILL.md +192 -0
- package/skills/aws-penetration-testing/SKILL.md +7 -2
- package/skills/aws-serverless/SKILL.md +5 -1
- package/skills/azd-deployment/SKILL.md +2 -0
- package/skills/azure-ai-agents-persistent-dotnet/SKILL.md +354 -0
- package/skills/azure-ai-agents-persistent-java/SKILL.md +142 -0
- package/skills/azure-ai-anomalydetector-java/SKILL.md +261 -0
- package/skills/azure-ai-contentsafety-java/SKILL.md +287 -0
- package/skills/azure-ai-contentsafety-py/SKILL.md +219 -0
- package/skills/azure-ai-contentsafety-ts/SKILL.md +305 -0
- package/skills/azure-ai-contentunderstanding-py/SKILL.md +278 -0
- package/skills/azure-ai-document-intelligence-dotnet/SKILL.md +342 -0
- package/skills/azure-ai-document-intelligence-ts/SKILL.md +328 -0
- package/skills/azure-ai-formrecognizer-java/SKILL.md +346 -0
- package/skills/azure-ai-ml-py/SKILL.md +276 -0
- package/skills/azure-ai-openai-dotnet/SKILL.md +460 -0
- package/skills/azure-ai-projects-dotnet/SKILL.md +353 -0
- package/skills/azure-ai-projects-java/SKILL.md +157 -0
- package/skills/azure-ai-projects-py/SKILL.md +300 -0
- package/skills/azure-ai-projects-ts/SKILL.md +294 -0
- package/skills/azure-ai-textanalytics-py/SKILL.md +232 -0
- package/skills/azure-ai-transcription-py/SKILL.md +74 -0
- package/skills/azure-ai-translation-document-py/SKILL.md +254 -0
- package/skills/azure-ai-translation-text-py/SKILL.md +279 -0
- package/skills/azure-ai-translation-ts/SKILL.md +291 -0
- package/skills/azure-ai-vision-imageanalysis-java/SKILL.md +294 -0
- package/skills/azure-ai-vision-imageanalysis-py/SKILL.md +265 -0
- package/skills/azure-ai-voicelive-dotnet/SKILL.md +270 -0
- package/skills/azure-ai-voicelive-java/SKILL.md +230 -0
- package/skills/azure-ai-voicelive-py/SKILL.md +314 -0
- package/skills/azure-ai-voicelive-ts/SKILL.md +470 -0
- package/skills/azure-appconfiguration-java/SKILL.md +475 -0
- package/skills/azure-appconfiguration-py/SKILL.md +254 -0
- package/skills/azure-appconfiguration-ts/SKILL.md +354 -0
- package/skills/azure-communication-callautomation-java/SKILL.md +259 -0
- package/skills/azure-communication-callingserver-java/SKILL.md +96 -0
- package/skills/azure-communication-chat-java/SKILL.md +315 -0
- package/skills/azure-communication-common-java/SKILL.md +309 -0
- package/skills/azure-communication-sms-java/SKILL.md +279 -0
- package/skills/azure-compute-batch-java/SKILL.md +384 -0
- package/skills/azure-containerregistry-py/SKILL.md +257 -0
- package/skills/azure-cosmos-db-py/SKILL.md +244 -0
- package/skills/azure-cosmos-java/SKILL.md +263 -0
- package/skills/azure-cosmos-py/SKILL.md +285 -0
- package/skills/azure-cosmos-rust/SKILL.md +140 -0
- package/skills/azure-cosmos-ts/SKILL.md +476 -0
- package/skills/azure-data-tables-java/SKILL.md +339 -0
- package/skills/azure-data-tables-py/SKILL.md +248 -0
- package/skills/azure-eventgrid-dotnet/SKILL.md +493 -0
- package/skills/azure-eventgrid-java/SKILL.md +310 -0
- package/skills/azure-eventgrid-py/SKILL.md +173 -0
- package/skills/azure-eventhub-dotnet/SKILL.md +367 -0
- package/skills/azure-eventhub-java/SKILL.md +361 -0
- package/skills/azure-eventhub-py/SKILL.md +245 -0
- package/skills/azure-eventhub-rust/SKILL.md +132 -0
- package/skills/azure-eventhub-ts/SKILL.md +273 -0
- package/skills/azure-functions/SKILL.md +5 -1
- package/skills/azure-identity-dotnet/SKILL.md +344 -0
- package/skills/azure-identity-java/SKILL.md +371 -0
- package/skills/azure-identity-py/SKILL.md +197 -0
- package/skills/azure-identity-rust/SKILL.md +120 -0
- package/skills/azure-identity-ts/SKILL.md +308 -0
- package/skills/azure-keyvault-certificates-rust/SKILL.md +182 -0
- package/skills/azure-keyvault-keys-rust/SKILL.md +172 -0
- package/skills/azure-keyvault-keys-ts/SKILL.md +274 -0
- package/skills/azure-keyvault-py/SKILL.md +252 -0
- package/skills/azure-keyvault-secrets-rust/SKILL.md +147 -0
- package/skills/azure-keyvault-secrets-ts/SKILL.md +274 -0
- package/skills/azure-maps-search-dotnet/SKILL.md +499 -0
- package/skills/azure-messaging-webpubsub-java/SKILL.md +307 -0
- package/skills/azure-messaging-webpubsubservice-py/SKILL.md +250 -0
- package/skills/azure-mgmt-apicenter-dotnet/SKILL.md +416 -0
- package/skills/azure-mgmt-apicenter-py/SKILL.md +247 -0
- package/skills/azure-mgmt-apimanagement-dotnet/SKILL.md +315 -0
- package/skills/azure-mgmt-apimanagement-py/SKILL.md +283 -0
- package/skills/azure-mgmt-applicationinsights-dotnet/SKILL.md +491 -0
- package/skills/azure-mgmt-arizeaiobservabilityeval-dotnet/SKILL.md +235 -0
- package/skills/azure-mgmt-botservice-dotnet/SKILL.md +339 -0
- package/skills/azure-mgmt-botservice-py/SKILL.md +325 -0
- package/skills/azure-mgmt-fabric-dotnet/SKILL.md +343 -0
- package/skills/azure-mgmt-fabric-py/SKILL.md +263 -0
- package/skills/azure-mgmt-mongodbatlas-dotnet/SKILL.md +359 -0
- package/skills/azure-mgmt-weightsandbiases-dotnet/SKILL.md +333 -0
- package/skills/azure-microsoft-playwright-testing-ts/SKILL.md +307 -0
- package/skills/azure-monitor-ingestion-java/SKILL.md +235 -0
- package/skills/azure-monitor-ingestion-py/SKILL.md +209 -0
- package/skills/azure-monitor-opentelemetry-exporter-java/SKILL.md +289 -0
- package/skills/azure-monitor-opentelemetry-exporter-py/SKILL.md +209 -0
- package/skills/azure-monitor-opentelemetry-py/SKILL.md +229 -0
- package/skills/azure-monitor-opentelemetry-ts/SKILL.md +324 -0
- package/skills/azure-monitor-query-java/SKILL.md +422 -0
- package/skills/azure-monitor-query-py/SKILL.md +257 -0
- package/skills/azure-postgres-ts/SKILL.md +482 -0
- package/skills/azure-resource-manager-cosmosdb-dotnet/SKILL.md +255 -0
- package/skills/azure-resource-manager-durabletask-dotnet/SKILL.md +382 -0
- package/skills/azure-resource-manager-mysql-dotnet/SKILL.md +397 -0
- package/skills/azure-resource-manager-playwright-dotnet/SKILL.md +302 -0
- package/skills/azure-resource-manager-postgresql-dotnet/SKILL.md +437 -0
- package/skills/azure-resource-manager-redis-dotnet/SKILL.md +361 -0
- package/skills/azure-resource-manager-sql-dotnet/SKILL.md +324 -0
- package/skills/azure-search-documents-dotnet/SKILL.md +344 -0
- package/skills/azure-search-documents-py/SKILL.md +533 -0
- package/skills/azure-search-documents-ts/SKILL.md +271 -0
- package/skills/azure-security-keyvault-keys-dotnet/SKILL.md +411 -0
- package/skills/azure-security-keyvault-keys-java/SKILL.md +367 -0
- package/skills/azure-security-keyvault-secrets-java/SKILL.md +361 -0
- package/skills/azure-servicebus-dotnet/SKILL.md +338 -0
- package/skills/azure-servicebus-py/SKILL.md +272 -0
- package/skills/azure-servicebus-ts/SKILL.md +238 -0
- package/skills/azure-speech-to-text-rest-py/SKILL.md +377 -0
- package/skills/azure-storage-blob-java/SKILL.md +393 -0
- package/skills/azure-storage-blob-py/SKILL.md +224 -0
- package/skills/azure-storage-blob-rust/SKILL.md +137 -0
- package/skills/azure-storage-blob-ts/SKILL.md +487 -0
- package/skills/azure-storage-file-datalake-py/SKILL.md +216 -0
- package/skills/azure-storage-file-share-py/SKILL.md +243 -0
- package/skills/azure-storage-file-share-ts/SKILL.md +498 -0
- package/skills/azure-storage-queue-py/SKILL.md +218 -0
- package/skills/azure-storage-queue-ts/SKILL.md +529 -0
- package/skills/azure-web-pubsub-ts/SKILL.md +315 -0
- package/skills/backend-architect/SKILL.md +3 -1
- package/skills/backend-dev-guidelines/SKILL.md +6 -1
- package/skills/backend-dev-guidelines/resources/architecture-overview.md +1 -1
- package/skills/backend-dev-guidelines/resources/async-and-errors.md +1 -1
- package/skills/backend-dev-guidelines/resources/complete-examples.md +1 -1
- package/skills/backend-dev-guidelines/resources/configuration.md +1 -1
- package/skills/backend-dev-guidelines/resources/database-patterns.md +1 -1
- package/skills/backend-dev-guidelines/resources/middleware-guide.md +1 -1
- package/skills/backend-dev-guidelines/resources/routing-and-controllers.md +1 -1
- package/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +1 -1
- package/skills/backend-dev-guidelines/resources/services-and-repositories.md +1 -1
- package/skills/backend-dev-guidelines/resources/testing-guide.md +1 -1
- package/skills/backend-dev-guidelines/resources/validation-patterns.md +1 -1
- package/skills/backend-development-feature-development/SKILL.md +2 -0
- package/skills/backend-security-coder/SKILL.md +3 -1
- package/skills/backtesting-frameworks/SKILL.md +3 -1
- package/skills/bamboohr-automation/SKILL.md +225 -0
- package/skills/basecamp-automation/SKILL.md +239 -0
- package/skills/bash-defensive-patterns/SKILL.md +3 -1
- package/skills/bash-linux/SKILL.md +6 -1
- package/skills/bash-pro/SKILL.md +3 -1
- package/skills/bash-scripting/SKILL.md +197 -0
- package/skills/bats-testing-patterns/SKILL.md +3 -1
- package/skills/bazel-build-optimization/SKILL.md +3 -1
- package/skills/behavioral-modes/SKILL.md +6 -1
- package/skills/bevy-ecs-expert/SKILL.md +133 -0
- package/skills/billing-automation/SKILL.md +3 -1
- package/skills/binary-analysis-patterns/SKILL.md +3 -1
- package/skills/bitbucket-automation/SKILL.md +229 -0
- package/skills/blockchain-developer/SKILL.md +3 -1
- package/skills/blockrun/SKILL.md +3 -1
- package/skills/box-automation/SKILL.md +238 -0
- package/skills/brainstorming/SKILL.md +37 -213
- package/skills/brand-guidelines-anthropic/SKILL.md +7 -2
- package/skills/brand-guidelines-community/SKILL.md +7 -2
- package/skills/brevo-automation/SKILL.md +202 -0
- package/skills/broken-authentication/SKILL.md +7 -2
- package/skills/browser-automation/SKILL.md +5 -1
- package/skills/browser-extension-builder/SKILL.md +5 -1
- package/skills/bullmq-specialist/SKILL.md +4 -0
- package/skills/bun-development/SKILL.md +3 -1
- package/skills/burp-suite-testing/SKILL.md +7 -2
- package/skills/business-analyst/SKILL.md +3 -1
- package/skills/busybox-on-windows/SKILL.md +6 -1
- package/skills/c-pro/SKILL.md +2 -0
- package/skills/c4-architecture-c4-architecture/SKILL.md +2 -0
- package/skills/c4-code/SKILL.md +3 -1
- package/skills/c4-component/SKILL.md +7 -5
- package/skills/c4-container/SKILL.md +4 -2
- package/skills/c4-context/SKILL.md +5 -3
- package/skills/cal-com-automation/SKILL.md +208 -0
- package/skills/calendly-automation/SKILL.md +216 -0
- package/skills/canva-automation/SKILL.md +222 -0
- package/skills/canvas-design/SKILL.md +7 -2
- package/skills/cc-skill-backend-patterns/SKILL.md +8 -3
- package/skills/cc-skill-clickhouse-io/SKILL.md +8 -3
- package/skills/cc-skill-coding-standards/SKILL.md +8 -3
- package/skills/cc-skill-continuous-learning/SKILL.md +6 -1
- package/skills/cc-skill-frontend-patterns/SKILL.md +8 -3
- package/skills/cc-skill-project-guidelines-example/SKILL.md +3 -1
- package/skills/cc-skill-security-review/SKILL.md +8 -3
- package/skills/cc-skill-strategic-compact/SKILL.md +6 -1
- package/skills/changelog-automation/SKILL.md +3 -1
- package/skills/cicd-automation-workflow-automate/SKILL.md +3 -1
- package/skills/circleci-automation/SKILL.md +182 -0
- package/skills/claude-code-guide/SKILL.md +7 -2
- package/skills/claude-d3js-skill/SKILL.md +4 -2
- package/skills/clean-code/SKILL.md +79 -77
- package/skills/clerk-auth/SKILL.md +4 -0
- package/skills/clickup-automation/SKILL.md +239 -0
- package/skills/close-automation/SKILL.md +217 -0
- package/skills/cloud-architect/SKILL.md +102 -131
- package/skills/cloud-devops/SKILL.md +236 -0
- package/skills/cloud-penetration-testing/SKILL.md +7 -2
- package/skills/coda-automation/SKILL.md +246 -0
- package/skills/code-documentation-code-explain/SKILL.md +3 -1
- package/skills/code-documentation-doc-generate/SKILL.md +3 -1
- package/skills/code-documentation-doc-generate/resources/implementation-playbook.md +1 -1
- package/skills/code-refactoring-context-restore/SKILL.md +2 -0
- package/skills/code-refactoring-refactor-clean/SKILL.md +3 -1
- package/skills/code-refactoring-tech-debt/SKILL.md +2 -0
- package/skills/code-review-ai-ai-review/SKILL.md +2 -0
- package/skills/code-review-checklist/SKILL.md +75 -410
- package/skills/code-review-excellence/SKILL.md +3 -1
- package/skills/code-reviewer/SKILL.md +205 -174
- package/skills/codebase-cleanup-deps-audit/SKILL.md +3 -1
- package/skills/codebase-cleanup-refactor-clean/SKILL.md +3 -1
- package/skills/codebase-cleanup-tech-debt/SKILL.md +2 -0
- package/skills/codex-review/SKILL.md +3 -1
- package/skills/commit/SKILL.md +1 -1
- package/skills/competitive-landscape/SKILL.md +3 -1
- package/skills/competitor-alternatives/SKILL.md +6 -1
- package/skills/comprehensive-review-full-review/SKILL.md +2 -0
- package/skills/comprehensive-review-pr-enhance/SKILL.md +3 -1
- package/skills/computer-use-agents/SKILL.md +5 -1
- package/skills/computer-vision-expert/SKILL.md +72 -0
- package/skills/concise-planning/SKILL.md +6 -1
- package/skills/conductor-implement/SKILL.md +3 -1
- package/skills/conductor-manage/SKILL.md +2 -0
- package/skills/conductor-manage/resources/implementation-playbook.md +1 -1
- package/skills/conductor-new-track/SKILL.md +8 -6
- package/skills/conductor-revert/SKILL.md +3 -1
- package/skills/conductor-setup/SKILL.md +8 -6
- package/skills/conductor-status/SKILL.md +3 -1
- package/skills/conductor-validator/SKILL.md +3 -1
- package/skills/confluence-automation/SKILL.md +213 -0
- package/skills/content-creator/SKILL.md +7 -1
- package/skills/content-marketer/SKILL.md +3 -1
- package/skills/context-compression/SKILL.md +5 -1
- package/skills/context-degradation/SKILL.md +1 -1
- package/skills/context-driven-development/SKILL.md +3 -1
- package/skills/context-fundamentals/SKILL.md +1 -1
- package/skills/context-management-context-restore/SKILL.md +2 -0
- package/skills/context-management-context-save/SKILL.md +2 -0
- package/skills/context-manager/SKILL.md +3 -1
- package/skills/context-optimization/SKILL.md +1 -1
- package/skills/context-window-management/SKILL.md +5 -1
- package/skills/context7-auto-research/SKILL.md +3 -1
- package/skills/conversation-memory/SKILL.md +4 -0
- package/skills/convertkit-automation/SKILL.md +200 -0
- package/skills/copilot-sdk/SKILL.md +515 -0
- package/skills/copy-editing/SKILL.md +3 -1
- package/skills/copywriting/SKILL.md +6 -1
- package/skills/core-components/SKILL.md +6 -1
- package/skills/cost-optimization/SKILL.md +3 -1
- package/skills/cpp-pro/SKILL.md +80 -42
- package/skills/cqrs-implementation/SKILL.md +3 -1
- package/skills/crewai/SKILL.md +5 -1
- package/skills/crypto-bd-agent/SKILL.md +248 -0
- package/skills/csharp-pro/SKILL.md +3 -1
- package/skills/customer-support/SKILL.md +3 -1
- package/skills/daily-news-report/SKILL.md +7 -2
- package/skills/data-engineer/SKILL.md +3 -1
- package/skills/data-engineering-data-driven-feature/SKILL.md +2 -0
- package/skills/data-engineering-data-pipeline/SKILL.md +2 -0
- package/skills/data-quality-frameworks/SKILL.md +3 -1
- package/skills/data-scientist/SKILL.md +3 -1
- package/skills/data-storytelling/SKILL.md +3 -1
- package/skills/data-structure-protocol/SKILL.md +198 -0
- package/skills/database/SKILL.md +213 -0
- package/skills/database-admin/SKILL.md +3 -1
- package/skills/database-architect/SKILL.md +3 -1
- package/skills/database-cloud-optimization-cost-optimize/SKILL.md +3 -1
- package/skills/database-design/SKILL.md +158 -33
- package/skills/database-migration/SKILL.md +3 -1
- package/skills/database-migrations-migration-observability/SKILL.md +3 -1
- package/skills/database-migrations-sql-migrations/SKILL.md +15 -20
- package/skills/database-optimizer/SKILL.md +91 -163
- package/skills/datadog-automation/SKILL.md +240 -0
- package/skills/dbos-golang/AGENTS.md +92 -0
- package/skills/dbos-golang/CLAUDE.md +1 -0
- package/skills/dbos-golang/SKILL.md +133 -0
- package/skills/dbos-golang/references/_sections.md +41 -0
- package/skills/dbos-golang/references/advanced-patching.md +86 -0
- package/skills/dbos-golang/references/advanced-versioning.md +58 -0
- package/skills/dbos-golang/references/client-enqueue.md +65 -0
- package/skills/dbos-golang/references/client-setup.md +65 -0
- package/skills/dbos-golang/references/comm-events.md +69 -0
- package/skills/dbos-golang/references/comm-messages.md +57 -0
- package/skills/dbos-golang/references/comm-streaming.md +75 -0
- package/skills/dbos-golang/references/lifecycle-config.md +70 -0
- package/skills/dbos-golang/references/pattern-debouncing.md +47 -0
- package/skills/dbos-golang/references/pattern-idempotency.md +63 -0
- package/skills/dbos-golang/references/pattern-scheduled.md +69 -0
- package/skills/dbos-golang/references/pattern-sleep.md +52 -0
- package/skills/dbos-golang/references/queue-basics.md +53 -0
- package/skills/dbos-golang/references/queue-concurrency.md +49 -0
- package/skills/dbos-golang/references/queue-deduplication.md +52 -0
- package/skills/dbos-golang/references/queue-listening.md +49 -0
- package/skills/dbos-golang/references/queue-partitioning.md +42 -0
- package/skills/dbos-golang/references/queue-priority.md +45 -0
- package/skills/dbos-golang/references/queue-rate-limiting.md +50 -0
- package/skills/dbos-golang/references/step-basics.md +81 -0
- package/skills/dbos-golang/references/step-concurrency.md +79 -0
- package/skills/dbos-golang/references/step-retries.md +66 -0
- package/skills/dbos-golang/references/test-setup.md +90 -0
- package/skills/dbos-golang/references/workflow-background.md +64 -0
- package/skills/dbos-golang/references/workflow-constraints.md +68 -0
- package/skills/dbos-golang/references/workflow-control.md +48 -0
- package/skills/dbos-golang/references/workflow-determinism.md +51 -0
- package/skills/dbos-golang/references/workflow-introspection.md +64 -0
- package/skills/dbos-golang/references/workflow-timeout.md +38 -0
- package/skills/dbos-python/AGENTS.md +95 -0
- package/skills/dbos-python/CLAUDE.md +1 -0
- package/skills/dbos-python/SKILL.md +102 -0
- package/skills/dbos-python/references/_sections.md +41 -0
- package/skills/dbos-python/references/advanced-async.md +101 -0
- package/skills/dbos-python/references/advanced-patching.md +68 -0
- package/skills/dbos-python/references/advanced-versioning.md +66 -0
- package/skills/dbos-python/references/client-enqueue.md +54 -0
- package/skills/dbos-python/references/client-setup.md +57 -0
- package/skills/dbos-python/references/comm-events.md +61 -0
- package/skills/dbos-python/references/comm-messages.md +56 -0
- package/skills/dbos-python/references/comm-streaming.md +57 -0
- package/skills/dbos-python/references/lifecycle-config.md +74 -0
- package/skills/dbos-python/references/lifecycle-fastapi.md +66 -0
- package/skills/dbos-python/references/pattern-classes.md +61 -0
- package/skills/dbos-python/references/pattern-debouncing.md +59 -0
- package/skills/dbos-python/references/pattern-idempotency.md +52 -0
- package/skills/dbos-python/references/pattern-scheduled.md +56 -0
- package/skills/dbos-python/references/pattern-sleep.md +58 -0
- package/skills/dbos-python/references/queue-basics.md +60 -0
- package/skills/dbos-python/references/queue-concurrency.md +57 -0
- package/skills/dbos-python/references/queue-deduplication.md +51 -0
- package/skills/dbos-python/references/queue-listening.md +64 -0
- package/skills/dbos-python/references/queue-partitioning.md +62 -0
- package/skills/dbos-python/references/queue-priority.md +62 -0
- package/skills/dbos-python/references/queue-rate-limiting.md +55 -0
- package/skills/dbos-python/references/step-basics.md +53 -0
- package/skills/dbos-python/references/step-retries.md +44 -0
- package/skills/dbos-python/references/step-transactions.md +58 -0
- package/skills/dbos-python/references/test-fixtures.md +63 -0
- package/skills/dbos-python/references/workflow-background.md +58 -0
- package/skills/dbos-python/references/workflow-constraints.md +70 -0
- package/skills/dbos-python/references/workflow-control.md +77 -0
- package/skills/dbos-python/references/workflow-determinism.md +53 -0
- package/skills/dbos-python/references/workflow-introspection.md +68 -0
- package/skills/dbos-python/references/workflow-timeout.md +59 -0
- package/skills/dbos-typescript/AGENTS.md +94 -0
- package/skills/dbos-typescript/CLAUDE.md +1 -0
- package/skills/dbos-typescript/SKILL.md +111 -0
- package/skills/dbos-typescript/references/_sections.md +41 -0
- package/skills/dbos-typescript/references/advanced-patching.md +72 -0
- package/skills/dbos-typescript/references/advanced-versioning.md +61 -0
- package/skills/dbos-typescript/references/client-enqueue.md +75 -0
- package/skills/dbos-typescript/references/client-setup.md +60 -0
- package/skills/dbos-typescript/references/comm-events.md +57 -0
- package/skills/dbos-typescript/references/comm-messages.md +55 -0
- package/skills/dbos-typescript/references/comm-streaming.md +53 -0
- package/skills/dbos-typescript/references/lifecycle-config.md +47 -0
- package/skills/dbos-typescript/references/lifecycle-express.md +61 -0
- package/skills/dbos-typescript/references/pattern-classes.md +67 -0
- package/skills/dbos-typescript/references/pattern-debouncing.md +56 -0
- package/skills/dbos-typescript/references/pattern-idempotency.md +53 -0
- package/skills/dbos-typescript/references/pattern-scheduled.md +69 -0
- package/skills/dbos-typescript/references/pattern-sleep.md +59 -0
- package/skills/dbos-typescript/references/queue-basics.md +59 -0
- package/skills/dbos-typescript/references/queue-concurrency.md +53 -0
- package/skills/dbos-typescript/references/queue-deduplication.md +51 -0
- package/skills/dbos-typescript/references/queue-listening.md +63 -0
- package/skills/dbos-typescript/references/queue-partitioning.md +63 -0
- package/skills/dbos-typescript/references/queue-priority.md +48 -0
- package/skills/dbos-typescript/references/queue-rate-limiting.md +44 -0
- package/skills/dbos-typescript/references/step-basics.md +63 -0
- package/skills/dbos-typescript/references/step-retries.md +67 -0
- package/skills/dbos-typescript/references/step-transactions.md +68 -0
- package/skills/dbos-typescript/references/test-setup.md +104 -0
- package/skills/dbos-typescript/references/workflow-background.md +54 -0
- package/skills/dbos-typescript/references/workflow-constraints.md +65 -0
- package/skills/dbos-typescript/references/workflow-control.md +57 -0
- package/skills/dbos-typescript/references/workflow-determinism.md +54 -0
- package/skills/dbos-typescript/references/workflow-introspection.md +70 -0
- package/skills/dbos-typescript/references/workflow-timeout.md +39 -0
- package/skills/dbt-transformation-patterns/SKILL.md +3 -1
- package/skills/ddd-context-mapping/SKILL.md +51 -0
- package/skills/ddd-context-mapping/references/context-map-patterns.md +25 -0
- package/skills/ddd-strategic-design/SKILL.md +51 -0
- package/skills/ddd-strategic-design/references/strategic-design-template.md +22 -0
- package/skills/ddd-tactical-patterns/SKILL.md +52 -0
- package/skills/ddd-tactical-patterns/references/tactical-checklist.md +25 -0
- package/skills/debugger/SKILL.md +3 -1
- package/skills/debugging-strategies/SKILL.md +3 -1
- package/skills/debugging-toolkit-smart-debug/SKILL.md +2 -0
- package/skills/deep-research/SKILL.md +1 -1
- package/skills/defi-protocol-templates/SKILL.md +3 -1
- package/skills/dependency-management-deps-audit/SKILL.md +3 -1
- package/skills/dependency-upgrade/SKILL.md +3 -1
- package/skills/deployment-engineer/SKILL.md +3 -1
- package/skills/deployment-pipeline-design/SKILL.md +3 -1
- package/skills/deployment-procedures/SKILL.md +6 -1
- package/skills/deployment-validation-config-validate/SKILL.md +2 -0
- package/skills/design-orchestration/SKILL.md +6 -1
- package/skills/development/SKILL.md +263 -0
- package/skills/devops-troubleshooter/SKILL.md +3 -1
- package/skills/discord-automation/SKILL.md +192 -0
- package/skills/discord-bot-architect/SKILL.md +4 -0
- package/skills/dispatching-parallel-agents/SKILL.md +3 -1
- package/skills/distributed-debugging-debug-trace/SKILL.md +3 -1
- package/skills/distributed-debugging-debug-trace/resources/implementation-playbook.md +1 -1
- package/skills/distributed-tracing/SKILL.md +3 -1
- package/skills/django-pro/SKILL.md +3 -1
- package/skills/doc-coauthoring/SKILL.md +6 -1
- package/skills/docker-expert/SKILL.md +7 -2
- package/skills/docs-architect/SKILL.md +3 -1
- package/skills/documentation/SKILL.md +261 -0
- package/skills/documentation-generation-doc-generate/SKILL.md +3 -1
- package/skills/documentation-generation-doc-generate/resources/implementation-playbook.md +1 -1
- package/skills/documentation-templates/SKILL.md +8 -3
- package/skills/docusign-automation/SKILL.md +213 -0
- package/skills/docx/SKILL.md +69 -172
- package/skills/docx-official/SKILL.md +8 -3
- package/skills/domain-driven-design/SKILL.md +73 -0
- package/skills/domain-driven-design/references/ddd-deliverables.md +24 -0
- package/skills/dotnet-architect/SKILL.md +3 -1
- package/skills/dotnet-backend/SKILL.md +266 -0
- package/skills/dotnet-backend-patterns/SKILL.md +3 -1
- package/skills/dropbox-automation/SKILL.md +235 -0
- package/skills/dx-optimizer/SKILL.md +3 -1
- package/skills/e2e-testing/SKILL.md +166 -0
- package/skills/e2e-testing-patterns/SKILL.md +3 -1
- package/skills/elixir-pro/SKILL.md +3 -1
- package/skills/email-sequence/SKILL.md +6 -1
- package/skills/email-systems/SKILL.md +5 -1
- package/skills/embedding-strategies/SKILL.md +3 -1
- package/skills/employment-contract-templates/SKILL.md +3 -1
- package/skills/environment-setup-guide/SKILL.md +2 -0
- package/skills/error-debugging-error-analysis/SKILL.md +2 -0
- package/skills/error-debugging-error-trace/SKILL.md +3 -1
- package/skills/error-debugging-multi-agent-review/SKILL.md +2 -0
- package/skills/error-detective/SKILL.md +3 -1
- package/skills/error-diagnostics-error-analysis/SKILL.md +2 -0
- package/skills/error-diagnostics-error-trace/SKILL.md +2 -0
- package/skills/error-diagnostics-smart-debug/SKILL.md +2 -0
- package/skills/error-handling-patterns/SKILL.md +3 -1
- package/skills/ethical-hacking-methodology/SKILL.md +7 -2
- package/skills/evaluation/SKILL.md +1 -1
- package/skills/event-sourcing-architect/SKILL.md +3 -1
- package/skills/event-store-design/SKILL.md +3 -1
- package/skills/event-store-design/resources/implementation-playbook.md +25 -0
- package/skills/exa-search/SKILL.md +3 -1
- package/skills/executing-plans/SKILL.md +6 -1
- package/skills/expo-deployment/SKILL.md +12 -62
- package/skills/fastapi-pro/SKILL.md +3 -1
- package/skills/fastapi-router-py/SKILL.md +57 -0
- package/skills/fastapi-templates/SKILL.md +3 -1
- package/skills/figma-automation/SKILL.md +186 -0
- package/skills/file-organizer/SKILL.md +252 -69
- package/skills/file-path-traversal/SKILL.md +7 -2
- package/skills/file-uploads/SKILL.md +5 -1
- package/skills/find-skills/SKILL.md +137 -0
- package/skills/finishing-a-development-branch/SKILL.md +6 -1
- package/skills/firebase/SKILL.md +5 -1
- package/skills/firecrawl-scraper/SKILL.md +3 -1
- package/skills/firmware-analyst/SKILL.md +3 -1
- package/skills/flutter-expert/SKILL.md +84 -196
- package/skills/form-cro/SKILL.md +6 -1
- package/skills/foundry-iq-python/SKILL.md +3 -0
- package/skills/fp-ts-errors/SKILL.md +1 -1
- package/skills/fp-ts-pragmatic/SKILL.md +1 -1
- package/skills/fp-ts-react/SKILL.md +1 -1
- package/skills/framework-migration-code-migrate/SKILL.md +2 -0
- package/skills/framework-migration-deps-upgrade/SKILL.md +2 -0
- package/skills/framework-migration-deps-upgrade/resources/implementation-playbook.md +3 -3
- package/skills/framework-migration-legacy-modernize/SKILL.md +2 -0
- package/skills/free-tool-strategy/SKILL.md +6 -1
- package/skills/freshdesk-automation/SKILL.md +224 -0
- package/skills/freshservice-automation/SKILL.md +218 -0
- package/skills/frontend-design/SKILL.md +26 -259
- package/skills/frontend-dev-guidelines/SKILL.md +6 -1
- package/skills/frontend-developer/SKILL.md +3 -1
- package/skills/frontend-mobile-development-component-scaffold/SKILL.md +2 -0
- package/skills/frontend-mobile-security-xss-scan/SKILL.md +2 -0
- package/skills/frontend-security-coder/SKILL.md +3 -1
- package/skills/frontend-slides/SKILL.md +4 -1
- package/skills/frontend-ui-dark-ts/SKILL.md +593 -0
- package/skills/full-stack-orchestration-full-stack-feature/SKILL.md +2 -0
- package/skills/game-development/2d-games/SKILL.md +6 -1
- package/skills/game-development/3d-games/SKILL.md +6 -1
- package/skills/game-development/SKILL.md +3 -1
- package/skills/game-development/game-art/SKILL.md +6 -1
- package/skills/game-development/game-audio/SKILL.md +6 -1
- package/skills/game-development/game-design/SKILL.md +6 -1
- package/skills/game-development/mobile-games/SKILL.md +6 -1
- package/skills/game-development/multiplayer/SKILL.md +6 -1
- package/skills/game-development/pc-games/SKILL.md +6 -1
- package/skills/game-development/vr-ar/SKILL.md +6 -1
- package/skills/game-development/web-games/SKILL.md +6 -1
- package/skills/gcp-cloud-run/SKILL.md +5 -1
- package/skills/gdpr-data-handling/SKILL.md +3 -1
- package/skills/gemini-api-dev/SKILL.md +132 -0
- package/skills/geo-fundamentals/SKILL.md +6 -1
- package/skills/git-advanced-workflows/SKILL.md +3 -1
- package/skills/git-pr-workflows-git-workflow/SKILL.md +2 -0
- package/skills/git-pr-workflows-onboard/SKILL.md +2 -0
- package/skills/git-pr-workflows-pr-enhance/SKILL.md +2 -0
- package/skills/git-pushing/SKILL.md +3 -1
- package/skills/github-actions-templates/SKILL.md +3 -1
- package/skills/github-automation/SKILL.md +232 -0
- package/skills/github-issue-creator/SKILL.md +142 -0
- package/skills/github-workflow-automation/SKILL.md +3 -1
- package/skills/gitlab-automation/SKILL.md +259 -0
- package/skills/gitlab-ci-patterns/SKILL.md +3 -1
- package/skills/gitops-workflow/SKILL.md +3 -1
- package/skills/gmail-automation/SKILL.md +275 -0
- package/skills/go-concurrency-patterns/SKILL.md +3 -1
- package/skills/go-playwright/SKILL.md +76 -0
- package/skills/go-playwright/resources/implementation-playbook.md +110 -0
- package/skills/go-rod-master/SKILL.md +544 -0
- package/skills/go-rod-master/examples/basic_scrape.go +41 -0
- package/skills/go-rod-master/examples/concurrent_pages.go +81 -0
- package/skills/go-rod-master/examples/request_hijacking.go +85 -0
- package/skills/go-rod-master/examples/stealth_page.go +91 -0
- package/skills/go-rod-master/references/api-reference.md +148 -0
- package/skills/godot-4-migration/SKILL.md +126 -0
- package/skills/godot-gdscript-patterns/SKILL.md +3 -1
- package/skills/golang-pro/SKILL.md +91 -176
- package/skills/google-analytics-automation/SKILL.md +232 -0
- package/skills/google-calendar-automation/SKILL.md +181 -0
- package/skills/google-drive-automation/SKILL.md +198 -0
- package/skills/googlesheets-automation/SKILL.md +202 -0
- package/skills/grafana-dashboards/SKILL.md +3 -1
- package/skills/graphql/SKILL.md +5 -1
- package/skills/graphql-architect/SKILL.md +83 -168
- package/skills/haskell-pro/SKILL.md +2 -0
- package/skills/helm-chart-scaffolding/SKILL.md +3 -1
- package/skills/helpdesk-automation/SKILL.md +171 -0
- package/skills/hig-components-content/SKILL.md +91 -0
- package/skills/hig-components-content/references/activity-views.md +79 -0
- package/skills/hig-components-content/references/charts.md +180 -0
- package/skills/hig-components-content/references/collections.md +48 -0
- package/skills/hig-components-content/references/color-wells.md +42 -0
- package/skills/hig-components-content/references/image-views.md +82 -0
- package/skills/hig-components-content/references/image-wells.md +34 -0
- package/skills/hig-components-content/references/lockups.md +78 -0
- package/skills/hig-components-content/references/web-views.md +36 -0
- package/skills/hig-components-controls/SKILL.md +93 -0
- package/skills/hig-components-controls/references/combo-boxes.md +40 -0
- package/skills/hig-components-controls/references/controls.md +112 -0
- package/skills/hig-components-controls/references/gauges.md +74 -0
- package/skills/hig-components-controls/references/labels.md +92 -0
- package/skills/hig-components-controls/references/pickers.md +128 -0
- package/skills/hig-components-controls/references/rating-indicators.md +38 -0
- package/skills/hig-components-controls/references/segmented-controls.md +94 -0
- package/skills/hig-components-controls/references/sliders.md +92 -0
- package/skills/hig-components-controls/references/steppers.md +40 -0
- package/skills/hig-components-controls/references/text-fields.md +88 -0
- package/skills/hig-components-controls/references/text-views.md +56 -0
- package/skills/hig-components-controls/references/toggles.md +127 -0
- package/skills/hig-components-controls/references/token-fields.md +48 -0
- package/skills/hig-components-controls/references/virtual-keyboards.md +156 -0
- package/skills/hig-components-dialogs/SKILL.md +81 -0
- package/skills/hig-components-dialogs/references/action-sheets.md +74 -0
- package/skills/hig-components-dialogs/references/alerts.md +158 -0
- package/skills/hig-components-dialogs/references/digit-entry-views.md +32 -0
- package/skills/hig-components-dialogs/references/popovers.md +81 -0
- package/skills/hig-components-dialogs/references/sheets.md +157 -0
- package/skills/hig-components-layout/SKILL.md +104 -0
- package/skills/hig-components-layout/references/boxes.md +48 -0
- package/skills/hig-components-layout/references/column-views.md +44 -0
- package/skills/hig-components-layout/references/lists-and-tables.md +99 -0
- package/skills/hig-components-layout/references/ornaments.md +56 -0
- package/skills/hig-components-layout/references/outline-views.md +64 -0
- package/skills/hig-components-layout/references/panels.md +75 -0
- package/skills/hig-components-layout/references/scroll-views.md +123 -0
- package/skills/hig-components-layout/references/sidebars.md +109 -0
- package/skills/hig-components-layout/references/split-views.md +110 -0
- package/skills/hig-components-layout/references/tab-bars.md +173 -0
- package/skills/hig-components-layout/references/tab-views.md +68 -0
- package/skills/hig-components-layout/references/windows.md +188 -0
- package/skills/hig-components-menus/SKILL.md +86 -0
- package/skills/hig-components-menus/references/action-button.md +61 -0
- package/skills/hig-components-menus/references/buttons.md +261 -0
- package/skills/hig-components-menus/references/context-menus.md +105 -0
- package/skills/hig-components-menus/references/disclosure-controls.md +84 -0
- package/skills/hig-components-menus/references/dock-menus.md +40 -0
- package/skills/hig-components-menus/references/edit-menus.md +88 -0
- package/skills/hig-components-menus/references/menus.md +171 -0
- package/skills/hig-components-menus/references/pop-up-buttons.md +70 -0
- package/skills/hig-components-menus/references/pull-down-buttons.md +77 -0
- package/skills/hig-components-menus/references/the-menu-bar.md +303 -0
- package/skills/hig-components-menus/references/toolbars.md +256 -0
- package/skills/hig-components-search/SKILL.md +73 -0
- package/skills/hig-components-search/references/page-controls.md +120 -0
- package/skills/hig-components-search/references/path-controls.md +40 -0
- package/skills/hig-components-search/references/search-fields.md +189 -0
- package/skills/hig-components-status/SKILL.md +91 -0
- package/skills/hig-components-status/references/activity-rings.md +105 -0
- package/skills/hig-components-status/references/progress-indicators.md +116 -0
- package/skills/hig-components-status/references/status-bars.md +38 -0
- package/skills/hig-components-system/SKILL.md +111 -0
- package/skills/hig-components-system/references/app-clips.md +387 -0
- package/skills/hig-components-system/references/app-shortcuts.md +114 -0
- package/skills/hig-components-system/references/complications.md +425 -0
- package/skills/hig-components-system/references/home-screen-quick-actions.md +42 -0
- package/skills/hig-components-system/references/live-activities.md +442 -0
- package/skills/hig-components-system/references/notifications.md +153 -0
- package/skills/hig-components-system/references/top-shelf.md +135 -0
- package/skills/hig-components-system/references/watch-faces.md +40 -0
- package/skills/hig-components-system/references/widgets.md +517 -0
- package/skills/hig-foundations/SKILL.md +103 -0
- package/skills/hig-foundations/references/accessibility.md +291 -0
- package/skills/hig-foundations/references/app-icons.md +210 -0
- package/skills/hig-foundations/references/branding.md +44 -0
- package/skills/hig-foundations/references/color.md +274 -0
- package/skills/hig-foundations/references/dark-mode.md +116 -0
- package/skills/hig-foundations/references/icons.md +263 -0
- package/skills/hig-foundations/references/images.md +176 -0
- package/skills/hig-foundations/references/immersive-experiences.md +174 -0
- package/skills/hig-foundations/references/inclusion.md +189 -0
- package/skills/hig-foundations/references/layout.md +425 -0
- package/skills/hig-foundations/references/materials.md +238 -0
- package/skills/hig-foundations/references/motion.md +103 -0
- package/skills/hig-foundations/references/privacy.md +231 -0
- package/skills/hig-foundations/references/right-to-left.md +206 -0
- package/skills/hig-foundations/references/sf-symbols.md +310 -0
- package/skills/hig-foundations/references/spatial-layout.md +142 -0
- package/skills/hig-foundations/references/typography.md +1146 -0
- package/skills/hig-foundations/references/writing.md +91 -0
- package/skills/hig-inputs/SKILL.md +121 -0
- package/skills/hig-inputs/references/apple-pencil-and-scribble.md +148 -0
- package/skills/hig-inputs/references/camera-control.md +107 -0
- package/skills/hig-inputs/references/digital-crown.md +83 -0
- package/skills/hig-inputs/references/eyes.md +120 -0
- package/skills/hig-inputs/references/focus-and-selection.md +120 -0
- package/skills/hig-inputs/references/game-controls.md +156 -0
- package/skills/hig-inputs/references/gestures.md +208 -0
- package/skills/hig-inputs/references/gyro-and-accelerometer.md +40 -0
- package/skills/hig-inputs/references/keyboards.md +234 -0
- package/skills/hig-inputs/references/nearby-interactions.md +70 -0
- package/skills/hig-inputs/references/pointing-devices.md +237 -0
- package/skills/hig-inputs/references/remotes.md +67 -0
- package/skills/hig-inputs/references/spatial-interactions.md +70 -0
- package/skills/hig-patterns/SKILL.md +109 -0
- package/skills/hig-patterns/references/charting-data.md +81 -0
- package/skills/hig-patterns/references/collaboration-and-sharing.md +86 -0
- package/skills/hig-patterns/references/drag-and-drop.md +134 -0
- package/skills/hig-patterns/references/entering-data.md +69 -0
- package/skills/hig-patterns/references/feedback.md +67 -0
- package/skills/hig-patterns/references/file-management.md +135 -0
- package/skills/hig-patterns/references/going-full-screen.md +79 -0
- package/skills/hig-patterns/references/launching.md +81 -0
- package/skills/hig-patterns/references/live-viewing-apps.md +79 -0
- package/skills/hig-patterns/references/loading.md +59 -0
- package/skills/hig-patterns/references/managing-accounts.md +107 -0
- package/skills/hig-patterns/references/managing-notifications.md +99 -0
- package/skills/hig-patterns/references/modality.md +82 -0
- package/skills/hig-patterns/references/multitasking.md +131 -0
- package/skills/hig-patterns/references/offering-help.md +117 -0
- package/skills/hig-patterns/references/onboarding.md +69 -0
- package/skills/hig-patterns/references/playing-audio.md +124 -0
- package/skills/hig-patterns/references/playing-haptics.md +280 -0
- package/skills/hig-patterns/references/playing-video.md +180 -0
- package/skills/hig-patterns/references/printing.md +50 -0
- package/skills/hig-patterns/references/ratings-and-reviews.md +48 -0
- package/skills/hig-patterns/references/searching.md +70 -0
- package/skills/hig-patterns/references/settings.md +84 -0
- package/skills/hig-patterns/references/undo-and-redo.md +58 -0
- package/skills/hig-patterns/references/workouts.md +76 -0
- package/skills/hig-platforms/SKILL.md +89 -0
- package/skills/hig-platforms/references/designing-for-games.md +159 -0
- package/skills/hig-platforms/references/designing-for-ios.md +66 -0
- package/skills/hig-platforms/references/designing-for-ipados.md +64 -0
- package/skills/hig-platforms/references/designing-for-macos.md +70 -0
- package/skills/hig-platforms/references/designing-for-tvos.md +68 -0
- package/skills/hig-platforms/references/designing-for-visionos.md +85 -0
- package/skills/hig-platforms/references/designing-for-watchos.md +74 -0
- package/skills/hig-project-context/SKILL.md +138 -0
- package/skills/hig-technologies/SKILL.md +136 -0
- package/skills/hig-technologies/references/airplay.md +125 -0
- package/skills/hig-technologies/references/always-on.md +62 -0
- package/skills/hig-technologies/references/apple-pay.md +441 -0
- package/skills/hig-technologies/references/augmented-reality.md +247 -0
- package/skills/hig-technologies/references/carekit.md +224 -0
- package/skills/hig-technologies/references/carplay.md +119 -0
- package/skills/hig-technologies/references/game-center.md +343 -0
- package/skills/hig-technologies/references/generative-ai.md +110 -0
- package/skills/hig-technologies/references/healthkit.md +120 -0
- package/skills/hig-technologies/references/homekit.md +343 -0
- package/skills/hig-technologies/references/icloud.md +52 -0
- package/skills/hig-technologies/references/id-verifier.md +73 -0
- package/skills/hig-technologies/references/imessage-apps-and-stickers.md +105 -0
- package/skills/hig-technologies/references/in-app-purchase.md +263 -0
- package/skills/hig-technologies/references/live-photos.md +54 -0
- package/skills/hig-technologies/references/mac-catalyst.md +216 -0
- package/skills/hig-technologies/references/machine-learning.md +394 -0
- package/skills/hig-technologies/references/maps.md +221 -0
- package/skills/hig-technologies/references/nfc.md +51 -0
- package/skills/hig-technologies/references/photo-editing.md +40 -0
- package/skills/hig-technologies/references/researchkit.md +134 -0
- package/skills/hig-technologies/references/shareplay.md +142 -0
- package/skills/hig-technologies/references/shazamkit.md +47 -0
- package/skills/hig-technologies/references/sign-in-with-apple.md +288 -0
- package/skills/hig-technologies/references/siri.md +523 -0
- package/skills/hig-technologies/references/tap-to-pay-on-iphone.md +208 -0
- package/skills/hig-technologies/references/voiceover.md +90 -0
- package/skills/hig-technologies/references/wallet.md +420 -0
- package/skills/hosted-agents-v2-py/SKILL.md +326 -0
- package/skills/hr-pro/SKILL.md +3 -1
- package/skills/html-injection-testing/SKILL.md +7 -2
- package/skills/hubspot-automation/SKILL.md +183 -0
- package/skills/hubspot-integration/SKILL.md +5 -1
- package/skills/hugging-face-cli/SKILL.md +3 -3
- package/skills/hugging-face-jobs/SKILL.md +1 -1
- package/skills/hybrid-cloud-architect/SKILL.md +3 -1
- package/skills/hybrid-cloud-networking/SKILL.md +3 -1
- package/skills/hybrid-search-implementation/SKILL.md +3 -1
- package/skills/i18n-localization/SKILL.md +1 -1
- package/skills/idor-testing/SKILL.md +7 -2
- package/skills/imagen/SKILL.md +1 -1
- package/skills/incident-responder/SKILL.md +3 -1
- package/skills/incident-response-incident-response/SKILL.md +2 -0
- package/skills/incident-response-smart-fix/SKILL.md +2 -0
- package/skills/incident-runbook-templates/SKILL.md +3 -1
- package/skills/infinite-gratitude/SKILL.md +2 -2
- package/skills/inngest/SKILL.md +5 -1
- package/skills/instagram-automation/SKILL.md +197 -0
- package/skills/interactive-portfolio/SKILL.md +5 -1
- package/skills/intercom-automation/SKILL.md +253 -0
- package/skills/internal-comms-anthropic/SKILL.md +4 -2
- package/skills/internal-comms-community/SKILL.md +4 -2
- package/skills/ios-developer/SKILL.md +3 -1
- package/skills/istio-traffic-management/SKILL.md +3 -1
- package/skills/java-pro/SKILL.md +3 -1
- package/skills/javascript-mastery/SKILL.md +3 -1
- package/skills/javascript-pro/SKILL.md +79 -41
- package/skills/javascript-testing-patterns/SKILL.md +3 -1
- package/skills/javascript-typescript-typescript-scaffold/SKILL.md +2 -0
- package/skills/jira-automation/SKILL.md +190 -0
- package/skills/julia-pro/SKILL.md +3 -1
- package/skills/k8s-manifest-generator/SKILL.md +3 -1
- package/skills/k8s-security-policies/SKILL.md +3 -1
- package/skills/kaizen/SKILL.md +3 -1
- package/skills/klaviyo-automation/SKILL.md +195 -0
- package/skills/kotlin-coroutines-expert/SKILL.md +100 -0
- package/skills/kpi-dashboard-design/SKILL.md +3 -1
- package/skills/kubernetes-architect/SKILL.md +3 -1
- package/skills/kubernetes-deployment/SKILL.md +167 -0
- package/skills/langchain-architecture/SKILL.md +3 -1
- package/skills/langfuse/SKILL.md +5 -1
- package/skills/langgraph/SKILL.md +5 -1
- package/skills/laravel-expert/SKILL.md +185 -0
- package/skills/laravel-security-audit/SKILL.md +223 -0
- package/skills/last30days/SKILL.md +6 -1
- package/skills/launch-strategy/SKILL.md +6 -1
- package/skills/legacy-modernizer/SKILL.md +79 -39
- package/skills/legal-advisor/SKILL.md +3 -1
- package/skills/libreoffice/base/SKILL.md +188 -0
- package/skills/libreoffice/calc/SKILL.md +201 -0
- package/skills/libreoffice/draw/SKILL.md +165 -0
- package/skills/libreoffice/impress/SKILL.md +174 -0
- package/skills/libreoffice/writer/SKILL.md +200 -0
- package/skills/linear-automation/SKILL.md +183 -0
- package/skills/linear-claude-skill/SKILL.md +14 -14
- package/skills/linkedin-automation/SKILL.md +180 -0
- package/skills/linkerd-patterns/SKILL.md +3 -1
- package/skills/lint-and-validate/SKILL.md +3 -3
- package/skills/linux-privilege-escalation/SKILL.md +7 -2
- package/skills/linux-shell-scripting/SKILL.md +7 -2
- package/skills/linux-troubleshooting/SKILL.md +221 -0
- package/skills/llm-app-patterns/SKILL.md +4 -2
- package/skills/llm-application-dev-ai-assistant/SKILL.md +2 -0
- package/skills/llm-application-dev-ai-assistant/resources/implementation-playbook.md +1 -1
- package/skills/llm-application-dev-langchain-agent/SKILL.md +2 -0
- package/skills/llm-application-dev-prompt-optimize/SKILL.md +2 -0
- package/skills/llm-evaluation/SKILL.md +3 -1
- package/skills/loki-mode/SKILL.md +6 -1
- package/skills/m365-agents-dotnet/SKILL.md +295 -0
- package/skills/m365-agents-py/SKILL.md +346 -0
- package/skills/m365-agents-ts/SKILL.md +187 -0
- package/skills/machine-learning-ops-ml-pipeline/SKILL.md +2 -0
- package/skills/mailchimp-automation/SKILL.md +236 -0
- package/skills/make-automation/SKILL.md +206 -0
- package/skills/malware-analyst/SKILL.md +3 -1
- package/skills/manifest/SKILL.md +126 -0
- package/skills/market-sizing-analysis/SKILL.md +3 -1
- package/skills/marketing-ideas/SKILL.md +6 -1
- package/skills/marketing-psychology/SKILL.md +6 -1
- package/skills/mcp-builder/SKILL.md +184 -92
- package/skills/mcp-builder/reference/mcp_best_practices.md +759 -93
- package/skills/mcp-builder/reference/node_mcp_server.md +70 -124
- package/skills/mcp-builder/reference/python_mcp_server.md +40 -7
- package/skills/mcp-builder-ms/SKILL.md +309 -0
- package/skills/memory-forensics/SKILL.md +3 -1
- package/skills/memory-safety-patterns/SKILL.md +3 -1
- package/skills/memory-systems/SKILL.md +1 -1
- package/skills/mermaid-expert/SKILL.md +3 -1
- package/skills/metasploit-framework/SKILL.md +7 -2
- package/skills/micro-saas-launcher/SKILL.md +5 -1
- package/skills/microservices-patterns/SKILL.md +3 -1
- package/skills/microsoft-azure-webjobs-extensions-authentication-events-dotnet/SKILL.md +445 -0
- package/skills/microsoft-teams-automation/SKILL.md +216 -0
- package/skills/minecraft-bukkit-pro/SKILL.md +3 -1
- package/skills/miro-automation/SKILL.md +210 -0
- package/skills/mixpanel-automation/SKILL.md +229 -0
- package/skills/ml-engineer/SKILL.md +3 -1
- package/skills/ml-pipeline-workflow/SKILL.md +3 -1
- package/skills/mlops-engineer/SKILL.md +3 -1
- package/skills/mobile-design/SKILL.md +280 -170
- package/skills/mobile-developer/SKILL.md +3 -1
- package/skills/mobile-security-coder/SKILL.md +3 -1
- package/skills/modern-javascript-patterns/SKILL.md +3 -1
- package/skills/monday-automation/SKILL.md +238 -0
- package/skills/monorepo-architect/SKILL.md +2 -0
- package/skills/monorepo-management/SKILL.md +3 -1
- package/skills/moodle-external-api-development/SKILL.md +3 -1
- package/skills/mtls-configuration/SKILL.md +3 -1
- package/skills/multi-agent-brainstorming/SKILL.md +6 -1
- package/skills/multi-agent-patterns/SKILL.md +1 -1
- package/skills/multi-cloud-architecture/SKILL.md +3 -1
- package/skills/multi-platform-apps-multi-platform/SKILL.md +2 -0
- package/skills/n8n-code-python/SKILL.md +11 -11
- package/skills/n8n-mcp-tools-expert/SKILL.md +10 -10
- package/skills/n8n-node-configuration/SKILL.md +3 -3
- package/skills/neon-postgres/SKILL.md +5 -1
- package/skills/nerdzao-elite/SKILL.md +31 -0
- package/skills/nerdzao-elite-gemini-high/SKILL.md +50 -0
- package/skills/nestjs-expert/SKILL.md +7 -2
- package/skills/network-101/SKILL.md +7 -2
- package/skills/network-engineer/SKILL.md +3 -1
- package/skills/nextjs-app-router-patterns/SKILL.md +3 -1
- package/skills/nextjs-best-practices/SKILL.md +6 -1
- package/skills/nextjs-supabase-auth/SKILL.md +4 -0
- package/skills/nft-standards/SKILL.md +3 -1
- package/skills/nodejs-backend-patterns/SKILL.md +3 -1
- package/skills/nodejs-best-practices/SKILL.md +7 -1
- package/skills/nosql-expert/SKILL.md +2 -0
- package/skills/notebooklm/SKILL.md +3 -1
- package/skills/notion-automation/SKILL.md +220 -0
- package/skills/notion-template-business/SKILL.md +5 -1
- package/skills/nx-workspace-patterns/SKILL.md +3 -1
- package/skills/observability-engineer/SKILL.md +3 -1
- package/skills/observability-monitoring-monitor-setup/SKILL.md +2 -0
- package/skills/observability-monitoring-slo-implement/SKILL.md +3 -1
- package/skills/observe-whatsapp/SKILL.md +4 -4
- package/skills/obsidian-clipper-template-creator/SKILL.md +6 -1
- package/skills/office-productivity/SKILL.md +219 -0
- package/skills/on-call-handoff-patterns/SKILL.md +3 -1
- package/skills/onboarding-cro/SKILL.md +6 -1
- package/skills/one-drive-automation/SKILL.md +243 -0
- package/skills/openapi-spec-generation/SKILL.md +3 -1
- package/skills/os-scripting/SKILL.md +429 -0
- package/skills/oss-hunter/SKILL.md +75 -0
- package/skills/oss-hunter/bin/hunter.py +56 -0
- package/skills/outlook-automation/SKILL.md +196 -0
- package/skills/outlook-calendar-automation/SKILL.md +241 -0
- package/skills/page-cro/SKILL.md +6 -1
- package/skills/pagerduty-automation/SKILL.md +250 -0
- package/skills/paid-ads/SKILL.md +6 -1
- package/skills/parallel-agents/SKILL.md +1 -1
- package/skills/payment-integration/SKILL.md +3 -1
- package/skills/paypal-integration/SKILL.md +3 -1
- package/skills/paywall-upgrade-cro/SKILL.md +6 -1
- package/skills/pci-compliance/SKILL.md +3 -1
- package/skills/pdf/SKILL.md +6 -196
- package/skills/pdf-official/SKILL.md +7 -2
- package/skills/pentest-checklist/SKILL.md +7 -2
- package/skills/pentest-commands/SKILL.md +7 -2
- package/skills/performance-engineer/SKILL.md +2 -0
- package/skills/performance-profiling/SKILL.md +1 -1
- package/skills/performance-testing-review-ai-review/SKILL.md +2 -0
- package/skills/performance-testing-review-multi-agent-review/SKILL.md +2 -0
- package/skills/personal-tool-builder/SKILL.md +5 -1
- package/skills/php-pro/SKILL.md +78 -46
- package/skills/pipedrive-automation/SKILL.md +229 -0
- package/skills/plaid-fintech/SKILL.md +5 -1
- package/skills/plan-writing/SKILL.md +1 -1
- package/skills/planning-with-files/SKILL.md +3 -1
- package/skills/playwright-skill/SKILL.md +6 -1
- package/skills/podcast-generation/SKILL.md +2 -0
- package/skills/popup-cro/SKILL.md +6 -1
- package/skills/posix-shell-pro/SKILL.md +3 -1
- package/skills/postgres-best-practices/SKILL.md +7 -2
- package/skills/postgresql/SKILL.md +3 -1
- package/skills/postgresql-optimization/SKILL.md +175 -0
- package/skills/posthog-automation/SKILL.md +229 -0
- package/skills/postmark-automation/SKILL.md +192 -0
- package/skills/postmortem-writing/SKILL.md +5 -3
- package/skills/powershell-windows/SKILL.md +6 -1
- package/skills/pptx/SKILL.md +86 -456
- package/skills/pptx-official/SKILL.md +8 -3
- package/skills/pricing-strategy/SKILL.md +6 -1
- package/skills/prisma-expert/SKILL.md +6 -1
- package/skills/privilege-escalation-methods/SKILL.md +7 -2
- package/skills/product-manager-toolkit/SKILL.md +15 -15
- package/skills/production-code-audit/SKILL.md +2 -0
- package/skills/programmatic-seo/SKILL.md +6 -1
- package/skills/projection-patterns/SKILL.md +3 -1
- package/skills/prometheus-configuration/SKILL.md +3 -1
- package/skills/prompt-caching/SKILL.md +5 -1
- package/skills/prompt-engineer/README.md +659 -0
- package/skills/prompt-engineer/SKILL.md +76 -249
- package/skills/prompt-engineer/references/evaluation-frameworks.md +781 -0
- package/skills/prompt-engineer/references/prompt-optimization.md +563 -0
- package/skills/prompt-engineer/references/prompt-patterns.md +509 -0
- package/skills/prompt-engineer/references/structured-outputs.md +723 -0
- package/skills/prompt-engineer/references/system-prompts.md +547 -0
- package/skills/prompt-engineering/SKILL.md +6 -1
- package/skills/prompt-engineering-patterns/SKILL.md +3 -1
- package/skills/prompt-library/SKILL.md +3 -1
- package/skills/protocol-reverse-engineering/SKILL.md +3 -1
- package/skills/pydantic-models-py/SKILL.md +63 -0
- package/skills/python-development-python-scaffold/SKILL.md +2 -0
- package/skills/python-fastapi-development/SKILL.md +216 -0
- package/skills/python-packaging/SKILL.md +3 -1
- package/skills/python-patterns/SKILL.md +7 -1
- package/skills/python-performance-optimization/SKILL.md +3 -1
- package/skills/python-pro/SKILL.md +89 -155
- package/skills/python-testing-patterns/SKILL.md +3 -1
- package/skills/quant-analyst/SKILL.md +3 -1
- package/skills/radix-ui-design-system/SKILL.md +1 -1
- package/skills/rag-engineer/SKILL.md +5 -1
- package/skills/rag-implementation/SKILL.md +37 -395
- package/skills/react-best-practices/AGENTS.md +776 -91
- package/skills/react-best-practices/README.md +2 -2
- package/skills/react-best-practices/SKILL.md +17 -2
- package/skills/react-best-practices/metadata.json +1 -1
- package/skills/react-best-practices/rules/advanced-event-handler-refs.md +4 -4
- package/skills/react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/react-best-practices/rules/advanced-use-latest.md +8 -18
- package/skills/react-best-practices/rules/async-dependencies.md +15 -0
- package/skills/react-best-practices/rules/bundle-conditional.md +2 -2
- package/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/react-best-practices/rules/js-batch-dom-css.md +53 -28
- package/skills/react-best-practices/rules/js-length-check-first.md +1 -1
- package/skills/react-best-practices/rules/js-min-max-loop.md +1 -1
- package/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/react-best-practices/rules/rerender-derived-state.md +2 -2
- package/skills/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/react-best-practices/rules/server-cache-react.md +50 -0
- package/skills/react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/react-best-practices/rules/server-parallel-fetching.md +12 -8
- package/skills/react-flow-architect/SKILL.md +618 -0
- package/skills/react-flow-node-ts/SKILL.md +71 -0
- package/skills/react-modernization/SKILL.md +3 -1
- package/skills/react-native-architecture/SKILL.md +3 -1
- package/skills/react-nextjs-development/SKILL.md +229 -0
- package/skills/react-patterns/SKILL.md +6 -1
- package/skills/react-state-management/SKILL.md +3 -1
- package/skills/react-ui-patterns/SKILL.md +6 -1
- package/skills/readme/SKILL.md +164 -97
- package/skills/receiving-code-review/SKILL.md +6 -1
- package/skills/red-team-tactics/SKILL.md +6 -1
- package/skills/red-team-tools/SKILL.md +7 -2
- package/skills/reddit-automation/SKILL.md +217 -0
- package/skills/reference-builder/SKILL.md +3 -1
- package/skills/referral-program/SKILL.md +6 -1
- package/skills/remotion-best-practices/SKILL.md +3 -1
- package/skills/remotion-best-practices/rules/charts.md +1 -1
- package/skills/render-automation/SKILL.md +186 -0
- package/skills/requesting-code-review/SKILL.md +6 -1
- package/skills/research-engineer/SKILL.md +6 -1
- package/skills/reverse-engineer/SKILL.md +3 -1
- package/skills/risk-manager/SKILL.md +3 -1
- package/skills/risk-metrics-calculation/SKILL.md +3 -1
- package/skills/ruby-pro/SKILL.md +3 -1
- package/skills/rust-async-patterns/SKILL.md +3 -1
- package/skills/rust-pro/SKILL.md +3 -1
- package/skills/saga-orchestration/SKILL.md +3 -1
- package/skills/saga-orchestration/resources/implementation-playbook.md +26 -0
- package/skills/sales-automator/SKILL.md +3 -1
- package/skills/salesforce-automation/SKILL.md +195 -0
- package/skills/salesforce-development/SKILL.md +5 -1
- package/skills/sast-configuration/SKILL.md +12 -10
- package/skills/scala-pro/SKILL.md +3 -1
- package/skills/scanning-tools/SKILL.md +7 -2
- package/skills/schema-markup/SKILL.md +6 -1
- package/skills/screen-reader-testing/SKILL.md +3 -1
- package/skills/scroll-experience/SKILL.md +5 -1
- package/skills/search-specialist/SKILL.md +2 -0
- package/skills/secrets-management/SKILL.md +3 -1
- package/skills/security/aws-compliance-checker/SKILL.md +516 -0
- package/skills/security/aws-iam-best-practices/SKILL.md +397 -0
- package/skills/security/aws-secrets-rotation/SKILL.md +465 -0
- package/skills/security/aws-security-audit/SKILL.md +369 -0
- package/skills/security-audit/SKILL.md +218 -0
- package/skills/security-auditor/SKILL.md +3 -1
- package/skills/security-compliance-compliance-check/SKILL.md +3 -1
- package/skills/security-requirement-extraction/SKILL.md +3 -1
- package/skills/security-scanning-security-dependencies/SKILL.md +3 -1
- package/skills/security-scanning-security-hardening/SKILL.md +2 -0
- package/skills/security-scanning-security-sast/SKILL.md +3 -1
- package/skills/segment-automation/SKILL.md +230 -0
- package/skills/segment-cdp/SKILL.md +5 -1
- package/skills/sendgrid-automation/SKILL.md +233 -0
- package/skills/senior-architect/SKILL.md +9 -9
- package/skills/senior-fullstack/SKILL.md +9 -9
- package/skills/sentry-automation/SKILL.md +237 -0
- package/skills/seo-audit/SKILL.md +6 -1
- package/skills/seo-authority-builder/SKILL.md +3 -1
- package/skills/seo-cannibalization-detector/SKILL.md +3 -1
- package/skills/seo-content-auditor/SKILL.md +3 -1
- package/skills/seo-content-planner/SKILL.md +3 -1
- package/skills/seo-content-refresher/SKILL.md +3 -1
- package/skills/seo-content-writer/SKILL.md +3 -1
- package/skills/seo-fundamentals/SKILL.md +78 -122
- package/skills/seo-keyword-strategist/SKILL.md +3 -1
- package/skills/seo-meta-optimizer/SKILL.md +3 -1
- package/skills/seo-snippet-hunter/SKILL.md +3 -1
- package/skills/seo-structure-architect/SKILL.md +3 -1
- package/skills/server-management/SKILL.md +6 -1
- package/skills/service-mesh-expert/SKILL.md +2 -0
- package/skills/service-mesh-observability/SKILL.md +3 -1
- package/skills/shader-programming-glsl/SKILL.md +121 -0
- package/skills/shellcheck-configuration/SKILL.md +3 -1
- package/skills/shodan-reconnaissance/SKILL.md +7 -2
- package/skills/shopify-apps/SKILL.md +5 -1
- package/skills/shopify-automation/SKILL.md +173 -0
- package/skills/shopify-development/SKILL.md +6 -1
- package/skills/signup-flow-cro/SKILL.md +6 -1
- package/skills/similarity-search-patterns/SKILL.md +3 -1
- package/skills/skill-creator/README.md +270 -0
- package/skills/skill-creator/SKILL.md +13 -160
- package/skills/skill-creator/scripts/package_skill.py +10 -10
- package/skills/skill-creator/scripts/quick_validate.py +15 -45
- package/skills/skill-creator-ms/SKILL.md +618 -0
- package/skills/skill-developer/SKILL.md +3 -1
- package/skills/slack-automation/SKILL.md +194 -0
- package/skills/slack-bot-builder/SKILL.md +5 -1
- package/skills/slack-gif-creator/SKILL.md +557 -165
- package/skills/slack-gif-creator/core/color_palettes.py +302 -0
- package/skills/slack-gif-creator/core/easing.py +32 -36
- package/skills/slack-gif-creator/core/frame_composer.py +335 -42
- package/skills/slack-gif-creator/core/gif_builder.py +40 -63
- package/skills/slack-gif-creator/core/typography.py +357 -0
- package/skills/slack-gif-creator/core/validators.py +204 -76
- package/skills/slack-gif-creator/core/visual_effects.py +494 -0
- package/skills/slack-gif-creator/templates/bounce.py +106 -0
- package/skills/slack-gif-creator/templates/explode.py +331 -0
- package/skills/slack-gif-creator/templates/fade.py +329 -0
- package/skills/slack-gif-creator/templates/flip.py +291 -0
- package/skills/slack-gif-creator/templates/kaleidoscope.py +211 -0
- package/skills/slack-gif-creator/templates/morph.py +329 -0
- package/skills/slack-gif-creator/templates/move.py +293 -0
- package/skills/slack-gif-creator/templates/pulse.py +268 -0
- package/skills/slack-gif-creator/templates/shake.py +127 -0
- package/skills/slack-gif-creator/templates/slide.py +291 -0
- package/skills/slack-gif-creator/templates/spin.py +269 -0
- package/skills/slack-gif-creator/templates/wiggle.py +300 -0
- package/skills/slack-gif-creator/templates/zoom.py +312 -0
- package/skills/slo-implementation/SKILL.md +3 -1
- package/skills/smtp-penetration-testing/SKILL.md +7 -2
- package/skills/social-content/SKILL.md +6 -1
- package/skills/software-architecture/SKILL.md +6 -1
- package/skills/solidity-security/SKILL.md +3 -1
- package/skills/spark-optimization/SKILL.md +3 -1
- package/skills/sql-injection-testing/SKILL.md +7 -2
- package/skills/sql-optimization-patterns/SKILL.md +3 -1
- package/skills/sql-pro/SKILL.md +94 -170
- package/skills/sqlmap-database-pentesting/SKILL.md +7 -2
- package/skills/square-automation/SKILL.md +181 -0
- package/skills/ssh-penetration-testing/SKILL.md +7 -2
- package/skills/startup-analyst/SKILL.md +3 -1
- package/skills/startup-business-analyst-business-case/SKILL.md +3 -1
- package/skills/startup-business-analyst-financial-projections/SKILL.md +3 -1
- package/skills/startup-business-analyst-market-opportunity/SKILL.md +3 -1
- package/skills/startup-financial-modeling/SKILL.md +3 -1
- package/skills/startup-metrics-framework/SKILL.md +3 -1
- package/skills/stitch-ui-design/SKILL.md +4 -1
- package/skills/stride-analysis-patterns/SKILL.md +3 -1
- package/skills/stripe-automation/SKILL.md +203 -0
- package/skills/stripe-integration/SKILL.md +44 -429
- package/skills/subagent-driven-development/SKILL.md +3 -1
- package/skills/supabase-automation/SKILL.md +241 -0
- package/skills/swiftui-expert-skill/SKILL.md +1 -1
- package/skills/systematic-debugging/SKILL.md +85 -272
- package/skills/systems-programming-rust-project/SKILL.md +2 -0
- package/skills/tailwind-design-system/SKILL.md +3 -1
- package/skills/tailwind-patterns/SKILL.md +7 -1
- package/skills/tavily-web/SKILL.md +3 -1
- package/skills/tdd-orchestrator/SKILL.md +3 -1
- package/skills/tdd-workflow/SKILL.md +6 -1
- package/skills/tdd-workflows-tdd-cycle/SKILL.md +2 -0
- package/skills/tdd-workflows-tdd-green/SKILL.md +3 -1
- package/skills/tdd-workflows-tdd-red/SKILL.md +3 -1
- package/skills/tdd-workflows-tdd-refactor/SKILL.md +2 -0
- package/skills/team-collaboration-issue/SKILL.md +2 -0
- package/skills/team-collaboration-standup-notes/SKILL.md +2 -0
- package/skills/team-collaboration-standup-notes/resources/implementation-playbook.md +3 -3
- package/skills/team-composition-analysis/SKILL.md +3 -1
- package/skills/telegram-automation/SKILL.md +224 -0
- package/skills/telegram-bot-builder/SKILL.md +5 -1
- package/skills/telegram-mini-app/SKILL.md +5 -1
- package/skills/temporal-python-pro/SKILL.md +3 -1
- package/skills/temporal-python-testing/SKILL.md +3 -1
- package/skills/terraform-infrastructure/SKILL.md +164 -0
- package/skills/terraform-module-library/SKILL.md +3 -1
- package/skills/terraform-skill/SKILL.md +19 -19
- package/skills/terraform-specialist/SKILL.md +3 -1
- package/skills/test-automator/SKILL.md +3 -1
- package/skills/test-driven-development/SKILL.md +3 -1
- package/skills/test-fixing/SKILL.md +3 -1
- package/skills/testing-patterns/SKILL.md +125 -206
- package/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/skills/testing-qa/SKILL.md +231 -0
- package/skills/theme-factory/SKILL.md +6 -1
- package/skills/threat-mitigation-mapping/SKILL.md +3 -1
- package/skills/threat-modeling-expert/SKILL.md +3 -1
- package/skills/threejs-skills/SKILL.md +642 -10
- package/skills/tiktok-automation/SKILL.md +183 -0
- package/skills/todoist-automation/SKILL.md +236 -0
- package/skills/tool-design/SKILL.md +3 -3
- package/skills/top-web-vulnerabilities/SKILL.md +7 -2
- package/skills/track-management/SKILL.md +3 -1
- package/skills/track-management/resources/implementation-playbook.md +4 -4
- package/skills/trello-automation/SKILL.md +186 -0
- package/skills/trigger-dev/SKILL.md +5 -1
- package/skills/turborepo-caching/SKILL.md +3 -1
- package/skills/tutorial-engineer/SKILL.md +3 -1
- package/skills/twilio-communications/SKILL.md +5 -1
- package/skills/twitter-automation/SKILL.md +236 -0
- package/skills/typescript-advanced-types/SKILL.md +3 -1
- package/skills/typescript-expert/SKILL.md +6 -1
- package/skills/typescript-pro/SKILL.md +91 -52
- package/skills/ui-ux-designer/SKILL.md +3 -1
- package/skills/ui-ux-pro-max/SKILL.md +88 -74
- package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills/ui-ux-pro-max/scripts/core.py +2 -1
- package/skills/ui-ux-pro-max/scripts/design_system.py +1 -1
- package/skills/ui-visual-validator/SKILL.md +3 -1
- package/skills/unit-testing-test-generate/SKILL.md +3 -1
- package/skills/unity-developer/SKILL.md +3 -1
- package/skills/unity-ecs-patterns/SKILL.md +3 -1
- package/skills/unreal-engine-cpp-pro/SKILL.md +1 -1
- package/skills/upgrading-expo/SKILL.md +12 -108
- package/skills/upstash-qstash/SKILL.md +5 -1
- package/skills/using-git-worktrees/SKILL.md +6 -1
- package/skills/using-neon/SKILL.md +1 -1
- package/skills/using-superpowers/SKILL.md +6 -1
- package/skills/uv-package-manager/SKILL.md +3 -1
- package/skills/vector-database-engineer/SKILL.md +2 -0
- package/skills/vector-index-tuning/SKILL.md +3 -1
- package/skills/vercel-automation/SKILL.md +231 -0
- package/skills/vercel-deploy-claimable/SKILL.md +4 -1
- package/skills/verification-before-completion/SKILL.md +6 -1
- package/skills/viral-generator-builder/SKILL.md +5 -1
- package/skills/voice-agents/SKILL.md +5 -1
- package/skills/voice-ai-development/SKILL.md +5 -1
- package/skills/voice-ai-engine-development/SKILL.md +2 -0
- package/skills/vulnerability-scanner/SKILL.md +1 -1
- package/skills/wcag-audit-patterns/SKILL.md +3 -1
- package/skills/web-artifacts-builder/SKILL.md +7 -2
- package/skills/web-design-guidelines/SKILL.md +4 -1
- package/skills/web-performance-optimization/SKILL.md +2 -0
- package/skills/web-security-testing/SKILL.md +184 -0
- package/skills/web3-testing/SKILL.md +3 -1
- package/skills/webapp-testing/SKILL.md +7 -2
- package/skills/webflow-automation/SKILL.md +241 -0
- package/skills/whatsapp-automation/SKILL.md +219 -0
- package/skills/wiki-architect/SKILL.md +65 -0
- package/skills/wiki-changelog/SKILL.md +32 -0
- package/skills/wiki-onboarding/SKILL.md +82 -0
- package/skills/wiki-page-writer/SKILL.md +70 -0
- package/skills/wiki-qa/SKILL.md +39 -0
- package/skills/wiki-researcher/SKILL.md +70 -0
- package/skills/wiki-vitepress/SKILL.md +153 -0
- package/skills/windows-privilege-escalation/SKILL.md +7 -2
- package/skills/wireshark-analysis/SKILL.md +7 -2
- package/skills/wordpress/SKILL.md +319 -0
- package/skills/wordpress-penetration-testing/SKILL.md +7 -2
- package/skills/wordpress-plugin-development/SKILL.md +204 -0
- package/skills/wordpress-theme-development/SKILL.md +189 -0
- package/skills/wordpress-woocommerce-development/SKILL.md +188 -0
- package/skills/workflow-automation/SKILL.md +5 -1
- package/skills/workflow-orchestration-patterns/SKILL.md +3 -1
- package/skills/workflow-patterns/SKILL.md +3 -1
- package/skills/wrike-automation/SKILL.md +238 -0
- package/skills/writing-plans/SKILL.md +6 -1
- package/skills/writing-skills/SKILL.md +614 -84
- package/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/skills/writing-skills/examples.md +1 -1
- package/skills/writing-skills/gotchas.md +1 -1
- package/skills/writing-skills/references/standards/README.md +2 -2
- package/skills/writing-skills/references/templates/reference.md +2 -2
- package/skills/xlsx/SKILL.md +28 -217
- package/skills/xlsx-official/SKILL.md +8 -3
- package/skills/xss-html-injection/SKILL.md +7 -2
- package/skills/youtube-automation/SKILL.md +223 -0
- package/skills/youtube-summarizer/CHANGELOG.md +66 -0
- package/skills/youtube-summarizer/README.md +365 -0
- package/skills/youtube-summarizer/SKILL.md +412 -0
- package/skills/youtube-summarizer/scripts/extract-transcript.py +65 -0
- package/skills/youtube-summarizer/scripts/install-dependencies.sh +28 -0
- package/skills/zapier-make-patterns/SKILL.md +5 -1
- package/skills/zendesk-automation/SKILL.md +220 -0
- package/skills/zoho-crm-automation/SKILL.md +211 -0
- package/skills/zoom-automation/SKILL.md +222 -0
- package/skills/zustand-store-ts/SKILL.md +73 -0
- package/skills-index.json +1784 -329
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# React Best Practices
|
|
2
2
|
|
|
3
|
-
**Version
|
|
3
|
+
**Version 1.0.0**
|
|
4
4
|
Vercel Engineering
|
|
5
5
|
January 2026
|
|
6
6
|
|
|
@@ -33,32 +33,43 @@ Comprehensive performance optimization guide for React and Next.js applications,
|
|
|
33
33
|
- 2.4 [Dynamic Imports for Heavy Components](#24-dynamic-imports-for-heavy-components)
|
|
34
34
|
- 2.5 [Preload Based on User Intent](#25-preload-based-on-user-intent)
|
|
35
35
|
3. [Server-Side Performance](#3-server-side-performance) — **HIGH**
|
|
36
|
-
- 3.1 [
|
|
37
|
-
- 3.2 [
|
|
38
|
-
- 3.3 [
|
|
39
|
-
- 3.4 [
|
|
40
|
-
- 3.5 [
|
|
36
|
+
- 3.1 [Authenticate Server Actions Like API Routes](#31-authenticate-server-actions-like-api-routes)
|
|
37
|
+
- 3.2 [Avoid Duplicate Serialization in RSC Props](#32-avoid-duplicate-serialization-in-rsc-props)
|
|
38
|
+
- 3.3 [Cross-Request LRU Caching](#33-cross-request-lru-caching)
|
|
39
|
+
- 3.4 [Minimize Serialization at RSC Boundaries](#34-minimize-serialization-at-rsc-boundaries)
|
|
40
|
+
- 3.5 [Parallel Data Fetching with Component Composition](#35-parallel-data-fetching-with-component-composition)
|
|
41
|
+
- 3.6 [Per-Request Deduplication with React.cache()](#36-per-request-deduplication-with-reactcache)
|
|
42
|
+
- 3.7 [Use after() for Non-Blocking Operations](#37-use-after-for-non-blocking-operations)
|
|
41
43
|
4. [Client-Side Data Fetching](#4-client-side-data-fetching) — **MEDIUM-HIGH**
|
|
42
44
|
- 4.1 [Deduplicate Global Event Listeners](#41-deduplicate-global-event-listeners)
|
|
43
|
-
- 4.2 [Use
|
|
45
|
+
- 4.2 [Use Passive Event Listeners for Scrolling Performance](#42-use-passive-event-listeners-for-scrolling-performance)
|
|
46
|
+
- 4.3 [Use SWR for Automatic Deduplication](#43-use-swr-for-automatic-deduplication)
|
|
47
|
+
- 4.4 [Version and Minimize localStorage Data](#44-version-and-minimize-localstorage-data)
|
|
44
48
|
5. [Re-render Optimization](#5-re-render-optimization) — **MEDIUM**
|
|
45
|
-
- 5.1 [
|
|
46
|
-
- 5.2 [
|
|
47
|
-
- 5.3 [
|
|
48
|
-
- 5.4 [
|
|
49
|
-
- 5.5 [
|
|
50
|
-
- 5.6 [
|
|
51
|
-
- 5.7 [
|
|
49
|
+
- 5.1 [Calculate Derived State During Rendering](#51-calculate-derived-state-during-rendering)
|
|
50
|
+
- 5.2 [Defer State Reads to Usage Point](#52-defer-state-reads-to-usage-point)
|
|
51
|
+
- 5.3 [Do not wrap a simple expression with a primitive result type in useMemo](#53-do-not-wrap-a-simple-expression-with-a-primitive-result-type-in-usememo)
|
|
52
|
+
- 5.4 [Extract Default Non-primitive Parameter Value from Memoized Component to Constant](#54-extract-default-non-primitive-parameter-value-from-memoized-component-to-constant)
|
|
53
|
+
- 5.5 [Extract to Memoized Components](#55-extract-to-memoized-components)
|
|
54
|
+
- 5.6 [Narrow Effect Dependencies](#56-narrow-effect-dependencies)
|
|
55
|
+
- 5.7 [Put Interaction Logic in Event Handlers](#57-put-interaction-logic-in-event-handlers)
|
|
56
|
+
- 5.8 [Subscribe to Derived State](#58-subscribe-to-derived-state)
|
|
57
|
+
- 5.9 [Use Functional setState Updates](#59-use-functional-setstate-updates)
|
|
58
|
+
- 5.10 [Use Lazy State Initialization](#510-use-lazy-state-initialization)
|
|
59
|
+
- 5.11 [Use Transitions for Non-Urgent Updates](#511-use-transitions-for-non-urgent-updates)
|
|
60
|
+
- 5.12 [Use useRef for Transient Values](#512-use-useref-for-transient-values)
|
|
52
61
|
6. [Rendering Performance](#6-rendering-performance) — **MEDIUM**
|
|
53
62
|
- 6.1 [Animate SVG Wrapper Instead of SVG Element](#61-animate-svg-wrapper-instead-of-svg-element)
|
|
54
63
|
- 6.2 [CSS content-visibility for Long Lists](#62-css-content-visibility-for-long-lists)
|
|
55
64
|
- 6.3 [Hoist Static JSX Elements](#63-hoist-static-jsx-elements)
|
|
56
65
|
- 6.4 [Optimize SVG Precision](#64-optimize-svg-precision)
|
|
57
66
|
- 6.5 [Prevent Hydration Mismatch Without Flickering](#65-prevent-hydration-mismatch-without-flickering)
|
|
58
|
-
- 6.6 [
|
|
59
|
-
- 6.7 [Use
|
|
67
|
+
- 6.6 [Suppress Expected Hydration Mismatches](#66-suppress-expected-hydration-mismatches)
|
|
68
|
+
- 6.7 [Use Activity Component for Show/Hide](#67-use-activity-component-for-showhide)
|
|
69
|
+
- 6.8 [Use Explicit Conditional Rendering](#68-use-explicit-conditional-rendering)
|
|
70
|
+
- 6.9 [Use useTransition Over Manual Loading States](#69-use-usetransition-over-manual-loading-states)
|
|
60
71
|
7. [JavaScript Performance](#7-javascript-performance) — **LOW-MEDIUM**
|
|
61
|
-
- 7.1 [
|
|
72
|
+
- 7.1 [Avoid Layout Thrashing](#71-avoid-layout-thrashing)
|
|
62
73
|
- 7.2 [Build Index Maps for Repeated Lookups](#72-build-index-maps-for-repeated-lookups)
|
|
63
74
|
- 7.3 [Cache Property Access in Loops](#73-cache-property-access-in-loops)
|
|
64
75
|
- 7.4 [Cache Repeated Function Calls](#74-cache-repeated-function-calls)
|
|
@@ -71,8 +82,9 @@ Comprehensive performance optimization guide for React and Next.js applications,
|
|
|
71
82
|
- 7.11 [Use Set/Map for O(1) Lookups](#711-use-setmap-for-o1-lookups)
|
|
72
83
|
- 7.12 [Use toSorted() Instead of sort() for Immutability](#712-use-tosorted-instead-of-sort-for-immutability)
|
|
73
84
|
8. [Advanced Patterns](#8-advanced-patterns) — **LOW**
|
|
74
|
-
- 8.1 [
|
|
75
|
-
- 8.2 [
|
|
85
|
+
- 8.1 [Initialize App Once, Not Per Mount](#81-initialize-app-once-not-per-mount)
|
|
86
|
+
- 8.2 [Store Event Handlers in Refs](#82-store-event-handlers-in-refs)
|
|
87
|
+
- 8.3 [useEffectEvent for Stable Callback Refs](#83-useeffectevent-for-stable-callback-refs)
|
|
76
88
|
|
|
77
89
|
---
|
|
78
90
|
|
|
@@ -188,6 +200,21 @@ const { user, config, profile } = await all({
|
|
|
188
200
|
})
|
|
189
201
|
```
|
|
190
202
|
|
|
203
|
+
**Alternative without extra dependencies:**
|
|
204
|
+
|
|
205
|
+
```typescript
|
|
206
|
+
const userPromise = fetchUser()
|
|
207
|
+
const profilePromise = userPromise.then(user => fetchProfile(user.id))
|
|
208
|
+
|
|
209
|
+
const [user, config, profile] = await Promise.all([
|
|
210
|
+
userPromise,
|
|
211
|
+
fetchConfig(),
|
|
212
|
+
profilePromise
|
|
213
|
+
])
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
We can also create all the promises first, and do `Promise.all()` at the end.
|
|
217
|
+
|
|
191
218
|
Reference: [https://github.com/shuding/better-all](https://github.com/shuding/better-all)
|
|
192
219
|
|
|
193
220
|
### 1.3 Prevent Waterfall Chains in API Routes
|
|
@@ -418,7 +445,7 @@ Load large data or modules only when a feature is activated.
|
|
|
418
445
|
**Example: lazy-load animation frames**
|
|
419
446
|
|
|
420
447
|
```tsx
|
|
421
|
-
function AnimationPlayer({ enabled }: { enabled: boolean }) {
|
|
448
|
+
function AnimationPlayer({ enabled, setEnabled }: { enabled: boolean; setEnabled: React.Dispatch<React.SetStateAction<boolean>> }) {
|
|
422
449
|
const [frames, setFrames] = useState<Frame[] | null>(null)
|
|
423
450
|
|
|
424
451
|
useEffect(() => {
|
|
@@ -427,7 +454,7 @@ function AnimationPlayer({ enabled }: { enabled: boolean }) {
|
|
|
427
454
|
.then(mod => setFrames(mod.frames))
|
|
428
455
|
.catch(() => setEnabled(false))
|
|
429
456
|
}
|
|
430
|
-
}, [enabled, frames])
|
|
457
|
+
}, [enabled, frames, setEnabled])
|
|
431
458
|
|
|
432
459
|
if (!frames) return <Skeleton />
|
|
433
460
|
return <Canvas frames={frames} />
|
|
@@ -566,7 +593,158 @@ The `typeof window !== 'undefined'` check prevents bundling preloaded modules fo
|
|
|
566
593
|
|
|
567
594
|
Optimizing server-side rendering and data fetching eliminates server-side waterfalls and reduces response times.
|
|
568
595
|
|
|
569
|
-
### 3.1
|
|
596
|
+
### 3.1 Authenticate Server Actions Like API Routes
|
|
597
|
+
|
|
598
|
+
**Impact: CRITICAL (prevents unauthorized access to server mutations)**
|
|
599
|
+
|
|
600
|
+
Server Actions (functions with `"use server"`) are exposed as public endpoints, just like API routes. Always verify authentication and authorization **inside** each Server Action—do not rely solely on middleware, layout guards, or page-level checks, as Server Actions can be invoked directly.
|
|
601
|
+
|
|
602
|
+
Next.js documentation explicitly states: "Treat Server Actions with the same security considerations as public-facing API endpoints, and verify if the user is allowed to perform a mutation."
|
|
603
|
+
|
|
604
|
+
**Incorrect: no authentication check**
|
|
605
|
+
|
|
606
|
+
```typescript
|
|
607
|
+
'use server'
|
|
608
|
+
|
|
609
|
+
export async function deleteUser(userId: string) {
|
|
610
|
+
// Anyone can call this! No auth check
|
|
611
|
+
await db.user.delete({ where: { id: userId } })
|
|
612
|
+
return { success: true }
|
|
613
|
+
}
|
|
614
|
+
```
|
|
615
|
+
|
|
616
|
+
**Correct: authentication inside the action**
|
|
617
|
+
|
|
618
|
+
```typescript
|
|
619
|
+
'use server'
|
|
620
|
+
|
|
621
|
+
import { verifySession } from '@/lib/auth'
|
|
622
|
+
import { unauthorized } from '@/lib/errors'
|
|
623
|
+
|
|
624
|
+
export async function deleteUser(userId: string) {
|
|
625
|
+
// Always check auth inside the action
|
|
626
|
+
const session = await verifySession()
|
|
627
|
+
|
|
628
|
+
if (!session) {
|
|
629
|
+
throw unauthorized('Must be logged in')
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
// Check authorization too
|
|
633
|
+
if (session.user.role !== 'admin' && session.user.id !== userId) {
|
|
634
|
+
throw unauthorized('Cannot delete other users')
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
await db.user.delete({ where: { id: userId } })
|
|
638
|
+
return { success: true }
|
|
639
|
+
}
|
|
640
|
+
```
|
|
641
|
+
|
|
642
|
+
**With input validation:**
|
|
643
|
+
|
|
644
|
+
```typescript
|
|
645
|
+
'use server'
|
|
646
|
+
|
|
647
|
+
import { verifySession } from '@/lib/auth'
|
|
648
|
+
import { z } from 'zod'
|
|
649
|
+
|
|
650
|
+
const updateProfileSchema = z.object({
|
|
651
|
+
userId: z.string().uuid(),
|
|
652
|
+
name: z.string().min(1).max(100),
|
|
653
|
+
email: z.string().email()
|
|
654
|
+
})
|
|
655
|
+
|
|
656
|
+
export async function updateProfile(data: unknown) {
|
|
657
|
+
// Validate input first
|
|
658
|
+
const validated = updateProfileSchema.parse(data)
|
|
659
|
+
|
|
660
|
+
// Then authenticate
|
|
661
|
+
const session = await verifySession()
|
|
662
|
+
if (!session) {
|
|
663
|
+
throw new Error('Unauthorized')
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
// Then authorize
|
|
667
|
+
if (session.user.id !== validated.userId) {
|
|
668
|
+
throw new Error('Can only update own profile')
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
// Finally perform the mutation
|
|
672
|
+
await db.user.update({
|
|
673
|
+
where: { id: validated.userId },
|
|
674
|
+
data: {
|
|
675
|
+
name: validated.name,
|
|
676
|
+
email: validated.email
|
|
677
|
+
}
|
|
678
|
+
})
|
|
679
|
+
|
|
680
|
+
return { success: true }
|
|
681
|
+
}
|
|
682
|
+
```
|
|
683
|
+
|
|
684
|
+
Reference: [https://nextjs.org/docs/app/guides/authentication](https://nextjs.org/docs/app/guides/authentication)
|
|
685
|
+
|
|
686
|
+
### 3.2 Avoid Duplicate Serialization in RSC Props
|
|
687
|
+
|
|
688
|
+
**Impact: LOW (reduces network payload by avoiding duplicate serialization)**
|
|
689
|
+
|
|
690
|
+
RSC→client serialization deduplicates by object reference, not value. Same reference = serialized once; new reference = serialized again. Do transformations (`.toSorted()`, `.filter()`, `.map()`) in client, not server.
|
|
691
|
+
|
|
692
|
+
**Incorrect: duplicates array**
|
|
693
|
+
|
|
694
|
+
```tsx
|
|
695
|
+
// RSC: sends 6 strings (2 arrays × 3 items)
|
|
696
|
+
<ClientList usernames={usernames} usernamesOrdered={usernames.toSorted()} />
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
**Correct: sends 3 strings**
|
|
700
|
+
|
|
701
|
+
```tsx
|
|
702
|
+
// RSC: send once
|
|
703
|
+
<ClientList usernames={usernames} />
|
|
704
|
+
|
|
705
|
+
// Client: transform there
|
|
706
|
+
'use client'
|
|
707
|
+
const sorted = useMemo(() => [...usernames].sort(), [usernames])
|
|
708
|
+
```
|
|
709
|
+
|
|
710
|
+
**Nested deduplication behavior:**
|
|
711
|
+
|
|
712
|
+
```tsx
|
|
713
|
+
// string[] - duplicates everything
|
|
714
|
+
usernames={['a','b']} sorted={usernames.toSorted()} // sends 4 strings
|
|
715
|
+
|
|
716
|
+
// object[] - duplicates array structure only
|
|
717
|
+
users={[{id:1},{id:2}]} sorted={users.toSorted()} // sends 2 arrays + 2 unique objects (not 4)
|
|
718
|
+
```
|
|
719
|
+
|
|
720
|
+
Deduplication works recursively. Impact varies by data type:
|
|
721
|
+
|
|
722
|
+
- `string[]`, `number[]`, `boolean[]`: **HIGH impact** - array + all primitives fully duplicated
|
|
723
|
+
|
|
724
|
+
- `object[]`: **LOW impact** - array duplicated, but nested objects deduplicated by reference
|
|
725
|
+
|
|
726
|
+
**Operations breaking deduplication: create new references**
|
|
727
|
+
|
|
728
|
+
- Arrays: `.toSorted()`, `.filter()`, `.map()`, `.slice()`, `[...arr]`
|
|
729
|
+
|
|
730
|
+
- Objects: `{...obj}`, `Object.assign()`, `structuredClone()`, `JSON.parse(JSON.stringify())`
|
|
731
|
+
|
|
732
|
+
**More examples:**
|
|
733
|
+
|
|
734
|
+
```tsx
|
|
735
|
+
// ❌ Bad
|
|
736
|
+
<C users={users} active={users.filter(u => u.active)} />
|
|
737
|
+
<C product={product} productName={product.name} />
|
|
738
|
+
|
|
739
|
+
// ✅ Good
|
|
740
|
+
<C users={users} />
|
|
741
|
+
<C product={product} />
|
|
742
|
+
// Do filtering/destructuring in client
|
|
743
|
+
```
|
|
744
|
+
|
|
745
|
+
**Exception:** Pass derived data when transformation is expensive or client doesn't need original.
|
|
746
|
+
|
|
747
|
+
### 3.3 Cross-Request LRU Caching
|
|
570
748
|
|
|
571
749
|
**Impact: HIGH (caches across requests)**
|
|
572
750
|
|
|
@@ -603,7 +781,7 @@ Use when sequential user actions hit multiple endpoints needing the same data wi
|
|
|
603
781
|
|
|
604
782
|
Reference: [https://github.com/isaacs/node-lru-cache](https://github.com/isaacs/node-lru-cache)
|
|
605
783
|
|
|
606
|
-
### 3.
|
|
784
|
+
### 3.4 Minimize Serialization at RSC Boundaries
|
|
607
785
|
|
|
608
786
|
**Impact: HIGH (reduces data transfer size)**
|
|
609
787
|
|
|
@@ -637,7 +815,7 @@ function Profile({ name }: { name: string }) {
|
|
|
637
815
|
}
|
|
638
816
|
```
|
|
639
817
|
|
|
640
|
-
### 3.
|
|
818
|
+
### 3.5 Parallel Data Fetching with Component Composition
|
|
641
819
|
|
|
642
820
|
**Impact: CRITICAL (eliminates server-side waterfalls)**
|
|
643
821
|
|
|
@@ -688,14 +866,9 @@ export default function Page() {
|
|
|
688
866
|
**Alternative with children prop:**
|
|
689
867
|
|
|
690
868
|
```tsx
|
|
691
|
-
async function
|
|
692
|
-
const
|
|
693
|
-
return
|
|
694
|
-
<div>
|
|
695
|
-
<div>{header}</div>
|
|
696
|
-
{children}
|
|
697
|
-
</div>
|
|
698
|
-
)
|
|
869
|
+
async function Header() {
|
|
870
|
+
const data = await fetchHeader()
|
|
871
|
+
return <div>{data}</div>
|
|
699
872
|
}
|
|
700
873
|
|
|
701
874
|
async function Sidebar() {
|
|
@@ -703,6 +876,15 @@ async function Sidebar() {
|
|
|
703
876
|
return <nav>{items.map(renderItem)}</nav>
|
|
704
877
|
}
|
|
705
878
|
|
|
879
|
+
function Layout({ children }: { children: ReactNode }) {
|
|
880
|
+
return (
|
|
881
|
+
<div>
|
|
882
|
+
<Header />
|
|
883
|
+
{children}
|
|
884
|
+
</div>
|
|
885
|
+
)
|
|
886
|
+
}
|
|
887
|
+
|
|
706
888
|
export default function Page() {
|
|
707
889
|
return (
|
|
708
890
|
<Layout>
|
|
@@ -712,7 +894,7 @@ export default function Page() {
|
|
|
712
894
|
}
|
|
713
895
|
```
|
|
714
896
|
|
|
715
|
-
### 3.
|
|
897
|
+
### 3.6 Per-Request Deduplication with React.cache()
|
|
716
898
|
|
|
717
899
|
**Impact: MEDIUM (deduplicates within request)**
|
|
718
900
|
|
|
@@ -734,7 +916,51 @@ export const getCurrentUser = cache(async () => {
|
|
|
734
916
|
|
|
735
917
|
Within a single request, multiple calls to `getCurrentUser()` execute the query only once.
|
|
736
918
|
|
|
737
|
-
|
|
919
|
+
**Avoid inline objects as arguments:**
|
|
920
|
+
|
|
921
|
+
`React.cache()` uses shallow equality (`Object.is`) to determine cache hits. Inline objects create new references each call, preventing cache hits.
|
|
922
|
+
|
|
923
|
+
**Incorrect: always cache miss**
|
|
924
|
+
|
|
925
|
+
```typescript
|
|
926
|
+
const getUser = cache(async (params: { uid: number }) => {
|
|
927
|
+
return await db.user.findUnique({ where: { id: params.uid } })
|
|
928
|
+
})
|
|
929
|
+
|
|
930
|
+
// Each call creates new object, never hits cache
|
|
931
|
+
getUser({ uid: 1 })
|
|
932
|
+
getUser({ uid: 1 }) // Cache miss, runs query again
|
|
933
|
+
```
|
|
934
|
+
|
|
935
|
+
**Correct: cache hit**
|
|
936
|
+
|
|
937
|
+
```typescript
|
|
938
|
+
const params = { uid: 1 }
|
|
939
|
+
getUser(params) // Query runs
|
|
940
|
+
getUser(params) // Cache hit (same reference)
|
|
941
|
+
```
|
|
942
|
+
|
|
943
|
+
If you must pass objects, pass the same reference:
|
|
944
|
+
|
|
945
|
+
**Next.js-Specific Note:**
|
|
946
|
+
|
|
947
|
+
In Next.js, the `fetch` API is automatically extended with request memoization. Requests with the same URL and options are automatically deduplicated within a single request, so you don't need `React.cache()` for `fetch` calls. However, `React.cache()` is still essential for other async tasks:
|
|
948
|
+
|
|
949
|
+
- Database queries (Prisma, Drizzle, etc.)
|
|
950
|
+
|
|
951
|
+
- Heavy computations
|
|
952
|
+
|
|
953
|
+
- Authentication checks
|
|
954
|
+
|
|
955
|
+
- File system operations
|
|
956
|
+
|
|
957
|
+
- Any non-fetch async work
|
|
958
|
+
|
|
959
|
+
Use `React.cache()` to deduplicate these operations across your component tree.
|
|
960
|
+
|
|
961
|
+
Reference: [https://react.dev/reference/react/cache](https://react.dev/reference/react/cache)
|
|
962
|
+
|
|
963
|
+
### 3.7 Use after() for Non-Blocking Operations
|
|
738
964
|
|
|
739
965
|
**Impact: MEDIUM (faster response times)**
|
|
740
966
|
|
|
@@ -886,7 +1112,51 @@ function Profile() {
|
|
|
886
1112
|
}
|
|
887
1113
|
```
|
|
888
1114
|
|
|
889
|
-
### 4.2 Use
|
|
1115
|
+
### 4.2 Use Passive Event Listeners for Scrolling Performance
|
|
1116
|
+
|
|
1117
|
+
**Impact: MEDIUM (eliminates scroll delay caused by event listeners)**
|
|
1118
|
+
|
|
1119
|
+
Add `{ passive: true }` to touch and wheel event listeners to enable immediate scrolling. Browsers normally wait for listeners to finish to check if `preventDefault()` is called, causing scroll delay.
|
|
1120
|
+
|
|
1121
|
+
**Incorrect:**
|
|
1122
|
+
|
|
1123
|
+
```typescript
|
|
1124
|
+
useEffect(() => {
|
|
1125
|
+
const handleTouch = (e: TouchEvent) => console.log(e.touches[0].clientX)
|
|
1126
|
+
const handleWheel = (e: WheelEvent) => console.log(e.deltaY)
|
|
1127
|
+
|
|
1128
|
+
document.addEventListener('touchstart', handleTouch)
|
|
1129
|
+
document.addEventListener('wheel', handleWheel)
|
|
1130
|
+
|
|
1131
|
+
return () => {
|
|
1132
|
+
document.removeEventListener('touchstart', handleTouch)
|
|
1133
|
+
document.removeEventListener('wheel', handleWheel)
|
|
1134
|
+
}
|
|
1135
|
+
}, [])
|
|
1136
|
+
```
|
|
1137
|
+
|
|
1138
|
+
**Correct:**
|
|
1139
|
+
|
|
1140
|
+
```typescript
|
|
1141
|
+
useEffect(() => {
|
|
1142
|
+
const handleTouch = (e: TouchEvent) => console.log(e.touches[0].clientX)
|
|
1143
|
+
const handleWheel = (e: WheelEvent) => console.log(e.deltaY)
|
|
1144
|
+
|
|
1145
|
+
document.addEventListener('touchstart', handleTouch, { passive: true })
|
|
1146
|
+
document.addEventListener('wheel', handleWheel, { passive: true })
|
|
1147
|
+
|
|
1148
|
+
return () => {
|
|
1149
|
+
document.removeEventListener('touchstart', handleTouch)
|
|
1150
|
+
document.removeEventListener('wheel', handleWheel)
|
|
1151
|
+
}
|
|
1152
|
+
}, [])
|
|
1153
|
+
```
|
|
1154
|
+
|
|
1155
|
+
**Use passive when:** tracking/analytics, logging, any listener that doesn't call `preventDefault()`.
|
|
1156
|
+
|
|
1157
|
+
**Don't use passive when:** implementing custom swipe gestures, custom zoom controls, or any listener that needs `preventDefault()`.
|
|
1158
|
+
|
|
1159
|
+
### 4.3 Use SWR for Automatic Deduplication
|
|
890
1160
|
|
|
891
1161
|
**Impact: MEDIUM-HIGH (automatic deduplication)**
|
|
892
1162
|
|
|
@@ -938,6 +1208,73 @@ function UpdateButton() {
|
|
|
938
1208
|
|
|
939
1209
|
Reference: [https://swr.vercel.app](https://swr.vercel.app)
|
|
940
1210
|
|
|
1211
|
+
### 4.4 Version and Minimize localStorage Data
|
|
1212
|
+
|
|
1213
|
+
**Impact: MEDIUM (prevents schema conflicts, reduces storage size)**
|
|
1214
|
+
|
|
1215
|
+
Add version prefix to keys and store only needed fields. Prevents schema conflicts and accidental storage of sensitive data.
|
|
1216
|
+
|
|
1217
|
+
**Incorrect:**
|
|
1218
|
+
|
|
1219
|
+
```typescript
|
|
1220
|
+
// No version, stores everything, no error handling
|
|
1221
|
+
localStorage.setItem('userConfig', JSON.stringify(fullUserObject))
|
|
1222
|
+
const data = localStorage.getItem('userConfig')
|
|
1223
|
+
```
|
|
1224
|
+
|
|
1225
|
+
**Correct:**
|
|
1226
|
+
|
|
1227
|
+
```typescript
|
|
1228
|
+
const VERSION = 'v2'
|
|
1229
|
+
|
|
1230
|
+
function saveConfig(config: { theme: string; language: string }) {
|
|
1231
|
+
try {
|
|
1232
|
+
localStorage.setItem(`userConfig:${VERSION}`, JSON.stringify(config))
|
|
1233
|
+
} catch {
|
|
1234
|
+
// Throws in incognito/private browsing, quota exceeded, or disabled
|
|
1235
|
+
}
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1238
|
+
function loadConfig() {
|
|
1239
|
+
try {
|
|
1240
|
+
const data = localStorage.getItem(`userConfig:${VERSION}`)
|
|
1241
|
+
return data ? JSON.parse(data) : null
|
|
1242
|
+
} catch {
|
|
1243
|
+
return null
|
|
1244
|
+
}
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1247
|
+
// Migration from v1 to v2
|
|
1248
|
+
function migrate() {
|
|
1249
|
+
try {
|
|
1250
|
+
const v1 = localStorage.getItem('userConfig:v1')
|
|
1251
|
+
if (v1) {
|
|
1252
|
+
const old = JSON.parse(v1)
|
|
1253
|
+
saveConfig({ theme: old.darkMode ? 'dark' : 'light', language: old.lang })
|
|
1254
|
+
localStorage.removeItem('userConfig:v1')
|
|
1255
|
+
}
|
|
1256
|
+
} catch {}
|
|
1257
|
+
}
|
|
1258
|
+
```
|
|
1259
|
+
|
|
1260
|
+
**Store minimal fields from server responses:**
|
|
1261
|
+
|
|
1262
|
+
```typescript
|
|
1263
|
+
// User object has 20+ fields, only store what UI needs
|
|
1264
|
+
function cachePrefs(user: FullUser) {
|
|
1265
|
+
try {
|
|
1266
|
+
localStorage.setItem('prefs:v1', JSON.stringify({
|
|
1267
|
+
theme: user.preferences.theme,
|
|
1268
|
+
notifications: user.preferences.notifications
|
|
1269
|
+
}))
|
|
1270
|
+
} catch {}
|
|
1271
|
+
}
|
|
1272
|
+
```
|
|
1273
|
+
|
|
1274
|
+
**Always wrap in try-catch:** `getItem()` and `setItem()` throw in incognito/private browsing (Safari, Firefox), when quota exceeded, or when disabled.
|
|
1275
|
+
|
|
1276
|
+
**Benefits:** Schema evolution via versioning, reduced storage size, prevents storing tokens/PII/internal flags.
|
|
1277
|
+
|
|
941
1278
|
---
|
|
942
1279
|
|
|
943
1280
|
## 5. Re-render Optimization
|
|
@@ -946,7 +1283,43 @@ Reference: [https://swr.vercel.app](https://swr.vercel.app)
|
|
|
946
1283
|
|
|
947
1284
|
Reducing unnecessary re-renders minimizes wasted computation and improves UI responsiveness.
|
|
948
1285
|
|
|
949
|
-
### 5.1
|
|
1286
|
+
### 5.1 Calculate Derived State During Rendering
|
|
1287
|
+
|
|
1288
|
+
**Impact: MEDIUM (avoids redundant renders and state drift)**
|
|
1289
|
+
|
|
1290
|
+
If a value can be computed from current props/state, do not store it in state or update it in an effect. Derive it during render to avoid extra renders and state drift. Do not set state in effects solely in response to prop changes; prefer derived values or keyed resets instead.
|
|
1291
|
+
|
|
1292
|
+
**Incorrect: redundant state and effect**
|
|
1293
|
+
|
|
1294
|
+
```tsx
|
|
1295
|
+
function Form() {
|
|
1296
|
+
const [firstName, setFirstName] = useState('First')
|
|
1297
|
+
const [lastName, setLastName] = useState('Last')
|
|
1298
|
+
const [fullName, setFullName] = useState('')
|
|
1299
|
+
|
|
1300
|
+
useEffect(() => {
|
|
1301
|
+
setFullName(firstName + ' ' + lastName)
|
|
1302
|
+
}, [firstName, lastName])
|
|
1303
|
+
|
|
1304
|
+
return <p>{fullName}</p>
|
|
1305
|
+
}
|
|
1306
|
+
```
|
|
1307
|
+
|
|
1308
|
+
**Correct: derive during render**
|
|
1309
|
+
|
|
1310
|
+
```tsx
|
|
1311
|
+
function Form() {
|
|
1312
|
+
const [firstName, setFirstName] = useState('First')
|
|
1313
|
+
const [lastName, setLastName] = useState('Last')
|
|
1314
|
+
const fullName = firstName + ' ' + lastName
|
|
1315
|
+
|
|
1316
|
+
return <p>{fullName}</p>
|
|
1317
|
+
}
|
|
1318
|
+
```
|
|
1319
|
+
|
|
1320
|
+
Reference: [https://react.dev/learn/you-might-not-need-an-effect](https://react.dev/learn/you-might-not-need-an-effect)
|
|
1321
|
+
|
|
1322
|
+
### 5.2 Defer State Reads to Usage Point
|
|
950
1323
|
|
|
951
1324
|
**Impact: MEDIUM (avoids unnecessary subscriptions)**
|
|
952
1325
|
|
|
@@ -981,7 +1354,71 @@ function ShareButton({ chatId }: { chatId: string }) {
|
|
|
981
1354
|
}
|
|
982
1355
|
```
|
|
983
1356
|
|
|
984
|
-
### 5.
|
|
1357
|
+
### 5.3 Do not wrap a simple expression with a primitive result type in useMemo
|
|
1358
|
+
|
|
1359
|
+
**Impact: LOW-MEDIUM (wasted computation on every render)**
|
|
1360
|
+
|
|
1361
|
+
When an expression is simple (few logical or arithmetical operators) and has a primitive result type (boolean, number, string), do not wrap it in `useMemo`.
|
|
1362
|
+
|
|
1363
|
+
Calling `useMemo` and comparing hook dependencies may consume more resources than the expression itself.
|
|
1364
|
+
|
|
1365
|
+
**Incorrect:**
|
|
1366
|
+
|
|
1367
|
+
```tsx
|
|
1368
|
+
function Header({ user, notifications }: Props) {
|
|
1369
|
+
const isLoading = useMemo(() => {
|
|
1370
|
+
return user.isLoading || notifications.isLoading
|
|
1371
|
+
}, [user.isLoading, notifications.isLoading])
|
|
1372
|
+
|
|
1373
|
+
if (isLoading) return <Skeleton />
|
|
1374
|
+
// return some markup
|
|
1375
|
+
}
|
|
1376
|
+
```
|
|
1377
|
+
|
|
1378
|
+
**Correct:**
|
|
1379
|
+
|
|
1380
|
+
```tsx
|
|
1381
|
+
function Header({ user, notifications }: Props) {
|
|
1382
|
+
const isLoading = user.isLoading || notifications.isLoading
|
|
1383
|
+
|
|
1384
|
+
if (isLoading) return <Skeleton />
|
|
1385
|
+
// return some markup
|
|
1386
|
+
}
|
|
1387
|
+
```
|
|
1388
|
+
|
|
1389
|
+
### 5.4 Extract Default Non-primitive Parameter Value from Memoized Component to Constant
|
|
1390
|
+
|
|
1391
|
+
**Impact: MEDIUM (restores memoization by using a constant for default value)**
|
|
1392
|
+
|
|
1393
|
+
When memoized component has a default value for some non-primitive optional parameter, such as an array, function, or object, calling the component without that parameter results in broken memoization. This is because new value instances are created on every rerender, and they do not pass strict equality comparison in `memo()`.
|
|
1394
|
+
|
|
1395
|
+
To address this issue, extract the default value into a constant.
|
|
1396
|
+
|
|
1397
|
+
**Incorrect: `onClick` has different values on every rerender**
|
|
1398
|
+
|
|
1399
|
+
```tsx
|
|
1400
|
+
const UserAvatar = memo(function UserAvatar({ onClick = () => {} }: { onClick?: () => void }) {
|
|
1401
|
+
// ...
|
|
1402
|
+
})
|
|
1403
|
+
|
|
1404
|
+
// Used without optional onClick
|
|
1405
|
+
<UserAvatar />
|
|
1406
|
+
```
|
|
1407
|
+
|
|
1408
|
+
**Correct: stable default value**
|
|
1409
|
+
|
|
1410
|
+
```tsx
|
|
1411
|
+
const NOOP = () => {};
|
|
1412
|
+
|
|
1413
|
+
const UserAvatar = memo(function UserAvatar({ onClick = NOOP }: { onClick?: () => void }) {
|
|
1414
|
+
// ...
|
|
1415
|
+
})
|
|
1416
|
+
|
|
1417
|
+
// Used without optional onClick
|
|
1418
|
+
<UserAvatar />
|
|
1419
|
+
```
|
|
1420
|
+
|
|
1421
|
+
### 5.5 Extract to Memoized Components
|
|
985
1422
|
|
|
986
1423
|
**Impact: MEDIUM (enables early returns)**
|
|
987
1424
|
|
|
@@ -1021,7 +1458,7 @@ function Profile({ user, loading }: Props) {
|
|
|
1021
1458
|
|
|
1022
1459
|
**Note:** If your project has [React Compiler](https://react.dev/learn/react-compiler) enabled, manual memoization with `memo()` and `useMemo()` is not necessary. The compiler automatically optimizes re-renders.
|
|
1023
1460
|
|
|
1024
|
-
### 5.
|
|
1461
|
+
### 5.6 Narrow Effect Dependencies
|
|
1025
1462
|
|
|
1026
1463
|
**Impact: LOW (minimizes effect re-runs)**
|
|
1027
1464
|
|
|
@@ -1062,7 +1499,48 @@ useEffect(() => {
|
|
|
1062
1499
|
}, [isMobile])
|
|
1063
1500
|
```
|
|
1064
1501
|
|
|
1065
|
-
### 5.
|
|
1502
|
+
### 5.7 Put Interaction Logic in Event Handlers
|
|
1503
|
+
|
|
1504
|
+
**Impact: MEDIUM (avoids effect re-runs and duplicate side effects)**
|
|
1505
|
+
|
|
1506
|
+
If a side effect is triggered by a specific user action (submit, click, drag), run it in that event handler. Do not model the action as state + effect; it makes effects re-run on unrelated changes and can duplicate the action.
|
|
1507
|
+
|
|
1508
|
+
**Incorrect: event modeled as state + effect**
|
|
1509
|
+
|
|
1510
|
+
```tsx
|
|
1511
|
+
function Form() {
|
|
1512
|
+
const [submitted, setSubmitted] = useState(false)
|
|
1513
|
+
const theme = useContext(ThemeContext)
|
|
1514
|
+
|
|
1515
|
+
useEffect(() => {
|
|
1516
|
+
if (submitted) {
|
|
1517
|
+
post('/api/register')
|
|
1518
|
+
showToast('Registered', theme)
|
|
1519
|
+
}
|
|
1520
|
+
}, [submitted, theme])
|
|
1521
|
+
|
|
1522
|
+
return <button onClick={() => setSubmitted(true)}>Submit</button>
|
|
1523
|
+
}
|
|
1524
|
+
```
|
|
1525
|
+
|
|
1526
|
+
**Correct: do it in the handler**
|
|
1527
|
+
|
|
1528
|
+
```tsx
|
|
1529
|
+
function Form() {
|
|
1530
|
+
const theme = useContext(ThemeContext)
|
|
1531
|
+
|
|
1532
|
+
function handleSubmit() {
|
|
1533
|
+
post('/api/register')
|
|
1534
|
+
showToast('Registered', theme)
|
|
1535
|
+
}
|
|
1536
|
+
|
|
1537
|
+
return <button onClick={handleSubmit}>Submit</button>
|
|
1538
|
+
}
|
|
1539
|
+
```
|
|
1540
|
+
|
|
1541
|
+
Reference: [https://react.dev/learn/removing-effect-dependencies#should-this-code-move-to-an-event-handler](https://react.dev/learn/removing-effect-dependencies#should-this-code-move-to-an-event-handler)
|
|
1542
|
+
|
|
1543
|
+
### 5.8 Subscribe to Derived State
|
|
1066
1544
|
|
|
1067
1545
|
**Impact: MEDIUM (reduces re-render frequency)**
|
|
1068
1546
|
|
|
@@ -1074,7 +1552,7 @@ Subscribe to derived boolean state instead of continuous values to reduce re-ren
|
|
|
1074
1552
|
function Sidebar() {
|
|
1075
1553
|
const width = useWindowWidth() // updates continuously
|
|
1076
1554
|
const isMobile = width < 768
|
|
1077
|
-
return <nav className={isMobile ? 'mobile' : 'desktop'}
|
|
1555
|
+
return <nav className={isMobile ? 'mobile' : 'desktop'} />
|
|
1078
1556
|
}
|
|
1079
1557
|
```
|
|
1080
1558
|
|
|
@@ -1083,11 +1561,11 @@ function Sidebar() {
|
|
|
1083
1561
|
```tsx
|
|
1084
1562
|
function Sidebar() {
|
|
1085
1563
|
const isMobile = useMediaQuery('(max-width: 767px)')
|
|
1086
|
-
return <nav className={isMobile ? 'mobile' : 'desktop'}
|
|
1564
|
+
return <nav className={isMobile ? 'mobile' : 'desktop'} />
|
|
1087
1565
|
}
|
|
1088
1566
|
```
|
|
1089
1567
|
|
|
1090
|
-
### 5.
|
|
1568
|
+
### 5.9 Use Functional setState Updates
|
|
1091
1569
|
|
|
1092
1570
|
**Impact: MEDIUM (prevents stale closures and unnecessary callback recreations)**
|
|
1093
1571
|
|
|
@@ -1165,7 +1643,7 @@ function TodoList() {
|
|
|
1165
1643
|
|
|
1166
1644
|
**Note:** If your project has [React Compiler](https://react.dev/learn/react-compiler) enabled, the compiler can automatically optimize some cases, but functional updates are still recommended for correctness and to prevent stale closure bugs.
|
|
1167
1645
|
|
|
1168
|
-
### 5.
|
|
1646
|
+
### 5.10 Use Lazy State Initialization
|
|
1169
1647
|
|
|
1170
1648
|
**Impact: MEDIUM (wasted computation on every render)**
|
|
1171
1649
|
|
|
@@ -1219,7 +1697,7 @@ Use lazy initialization when computing initial values from localStorage/sessionS
|
|
|
1219
1697
|
|
|
1220
1698
|
For simple primitives (`useState(0)`), direct references (`useState(props.value)`), or cheap literals (`useState({})`), the function form is unnecessary.
|
|
1221
1699
|
|
|
1222
|
-
### 5.
|
|
1700
|
+
### 5.11 Use Transitions for Non-Urgent Updates
|
|
1223
1701
|
|
|
1224
1702
|
**Impact: MEDIUM (maintains UI responsiveness)**
|
|
1225
1703
|
|
|
@@ -1255,6 +1733,75 @@ function ScrollTracker() {
|
|
|
1255
1733
|
}
|
|
1256
1734
|
```
|
|
1257
1735
|
|
|
1736
|
+
### 5.12 Use useRef for Transient Values
|
|
1737
|
+
|
|
1738
|
+
**Impact: MEDIUM (avoids unnecessary re-renders on frequent updates)**
|
|
1739
|
+
|
|
1740
|
+
When a value changes frequently and you don't want a re-render on every update (e.g., mouse trackers, intervals, transient flags), store it in `useRef` instead of `useState`. Keep component state for UI; use refs for temporary DOM-adjacent values. Updating a ref does not trigger a re-render.
|
|
1741
|
+
|
|
1742
|
+
**Incorrect: renders every update**
|
|
1743
|
+
|
|
1744
|
+
```tsx
|
|
1745
|
+
function Tracker() {
|
|
1746
|
+
const [lastX, setLastX] = useState(0)
|
|
1747
|
+
|
|
1748
|
+
useEffect(() => {
|
|
1749
|
+
const onMove = (e: MouseEvent) => setLastX(e.clientX)
|
|
1750
|
+
window.addEventListener('mousemove', onMove)
|
|
1751
|
+
return () => window.removeEventListener('mousemove', onMove)
|
|
1752
|
+
}, [])
|
|
1753
|
+
|
|
1754
|
+
return (
|
|
1755
|
+
<div
|
|
1756
|
+
style={{
|
|
1757
|
+
position: 'fixed',
|
|
1758
|
+
top: 0,
|
|
1759
|
+
left: lastX,
|
|
1760
|
+
width: 8,
|
|
1761
|
+
height: 8,
|
|
1762
|
+
background: 'black',
|
|
1763
|
+
}}
|
|
1764
|
+
/>
|
|
1765
|
+
)
|
|
1766
|
+
}
|
|
1767
|
+
```
|
|
1768
|
+
|
|
1769
|
+
**Correct: no re-render for tracking**
|
|
1770
|
+
|
|
1771
|
+
```tsx
|
|
1772
|
+
function Tracker() {
|
|
1773
|
+
const lastXRef = useRef(0)
|
|
1774
|
+
const dotRef = useRef<HTMLDivElement>(null)
|
|
1775
|
+
|
|
1776
|
+
useEffect(() => {
|
|
1777
|
+
const onMove = (e: MouseEvent) => {
|
|
1778
|
+
lastXRef.current = e.clientX
|
|
1779
|
+
const node = dotRef.current
|
|
1780
|
+
if (node) {
|
|
1781
|
+
node.style.transform = `translateX(${e.clientX}px)`
|
|
1782
|
+
}
|
|
1783
|
+
}
|
|
1784
|
+
window.addEventListener('mousemove', onMove)
|
|
1785
|
+
return () => window.removeEventListener('mousemove', onMove)
|
|
1786
|
+
}, [])
|
|
1787
|
+
|
|
1788
|
+
return (
|
|
1789
|
+
<div
|
|
1790
|
+
ref={dotRef}
|
|
1791
|
+
style={{
|
|
1792
|
+
position: 'fixed',
|
|
1793
|
+
top: 0,
|
|
1794
|
+
left: 0,
|
|
1795
|
+
width: 8,
|
|
1796
|
+
height: 8,
|
|
1797
|
+
background: 'black',
|
|
1798
|
+
transform: 'translateX(0px)',
|
|
1799
|
+
}}
|
|
1800
|
+
/>
|
|
1801
|
+
)
|
|
1802
|
+
}
|
|
1803
|
+
```
|
|
1804
|
+
|
|
1258
1805
|
---
|
|
1259
1806
|
|
|
1260
1807
|
## 6. Rendering Performance
|
|
@@ -1484,7 +2031,33 @@ The inline script executes synchronously before showing the element, ensuring th
|
|
|
1484
2031
|
|
|
1485
2032
|
This pattern is especially useful for theme toggles, user preferences, authentication states, and any client-only data that should render immediately without flashing default values.
|
|
1486
2033
|
|
|
1487
|
-
### 6.6
|
|
2034
|
+
### 6.6 Suppress Expected Hydration Mismatches
|
|
2035
|
+
|
|
2036
|
+
**Impact: LOW-MEDIUM (avoids noisy hydration warnings for known differences)**
|
|
2037
|
+
|
|
2038
|
+
In SSR frameworks (e.g., Next.js), some values are intentionally different on server vs client (random IDs, dates, locale/timezone formatting). For these *expected* mismatches, wrap the dynamic text in an element with `suppressHydrationWarning` to prevent noisy warnings. Do not use this to hide real bugs. Don’t overuse it.
|
|
2039
|
+
|
|
2040
|
+
**Incorrect: known mismatch warnings**
|
|
2041
|
+
|
|
2042
|
+
```tsx
|
|
2043
|
+
function Timestamp() {
|
|
2044
|
+
return <span>{new Date().toLocaleString()}</span>
|
|
2045
|
+
}
|
|
2046
|
+
```
|
|
2047
|
+
|
|
2048
|
+
**Correct: suppress expected mismatch only**
|
|
2049
|
+
|
|
2050
|
+
```tsx
|
|
2051
|
+
function Timestamp() {
|
|
2052
|
+
return (
|
|
2053
|
+
<span suppressHydrationWarning>
|
|
2054
|
+
{new Date().toLocaleString()}
|
|
2055
|
+
</span>
|
|
2056
|
+
)
|
|
2057
|
+
}
|
|
2058
|
+
```
|
|
2059
|
+
|
|
2060
|
+
### 6.7 Use Activity Component for Show/Hide
|
|
1488
2061
|
|
|
1489
2062
|
**Impact: MEDIUM (preserves state/DOM)**
|
|
1490
2063
|
|
|
@@ -1506,7 +2079,7 @@ function Dropdown({ isOpen }: Props) {
|
|
|
1506
2079
|
|
|
1507
2080
|
Avoids expensive re-renders and state loss.
|
|
1508
2081
|
|
|
1509
|
-
### 6.
|
|
2082
|
+
### 6.8 Use Explicit Conditional Rendering
|
|
1510
2083
|
|
|
1511
2084
|
**Impact: LOW (prevents rendering 0 or NaN)**
|
|
1512
2085
|
|
|
@@ -1542,6 +2115,80 @@ function Badge({ count }: { count: number }) {
|
|
|
1542
2115
|
// When count = 5, renders: <div><span class="badge">5</span></div>
|
|
1543
2116
|
```
|
|
1544
2117
|
|
|
2118
|
+
### 6.9 Use useTransition Over Manual Loading States
|
|
2119
|
+
|
|
2120
|
+
**Impact: LOW (reduces re-renders and improves code clarity)**
|
|
2121
|
+
|
|
2122
|
+
Use `useTransition` instead of manual `useState` for loading states. This provides built-in `isPending` state and automatically manages transitions.
|
|
2123
|
+
|
|
2124
|
+
**Incorrect: manual loading state**
|
|
2125
|
+
|
|
2126
|
+
```tsx
|
|
2127
|
+
function SearchResults() {
|
|
2128
|
+
const [query, setQuery] = useState('')
|
|
2129
|
+
const [results, setResults] = useState([])
|
|
2130
|
+
const [isLoading, setIsLoading] = useState(false)
|
|
2131
|
+
|
|
2132
|
+
const handleSearch = async (value: string) => {
|
|
2133
|
+
setIsLoading(true)
|
|
2134
|
+
setQuery(value)
|
|
2135
|
+
const data = await fetchResults(value)
|
|
2136
|
+
setResults(data)
|
|
2137
|
+
setIsLoading(false)
|
|
2138
|
+
}
|
|
2139
|
+
|
|
2140
|
+
return (
|
|
2141
|
+
<>
|
|
2142
|
+
<input onChange={(e) => handleSearch(e.target.value)} />
|
|
2143
|
+
{isLoading && <Spinner />}
|
|
2144
|
+
<ResultsList results={results} />
|
|
2145
|
+
</>
|
|
2146
|
+
)
|
|
2147
|
+
}
|
|
2148
|
+
```
|
|
2149
|
+
|
|
2150
|
+
**Correct: useTransition with built-in pending state**
|
|
2151
|
+
|
|
2152
|
+
```tsx
|
|
2153
|
+
import { useTransition, useState } from 'react'
|
|
2154
|
+
|
|
2155
|
+
function SearchResults() {
|
|
2156
|
+
const [query, setQuery] = useState('')
|
|
2157
|
+
const [results, setResults] = useState([])
|
|
2158
|
+
const [isPending, startTransition] = useTransition()
|
|
2159
|
+
|
|
2160
|
+
const handleSearch = (value: string) => {
|
|
2161
|
+
setQuery(value) // Update input immediately
|
|
2162
|
+
|
|
2163
|
+
startTransition(async () => {
|
|
2164
|
+
// Fetch and update results
|
|
2165
|
+
const data = await fetchResults(value)
|
|
2166
|
+
setResults(data)
|
|
2167
|
+
})
|
|
2168
|
+
}
|
|
2169
|
+
|
|
2170
|
+
return (
|
|
2171
|
+
<>
|
|
2172
|
+
<input onChange={(e) => handleSearch(e.target.value)} />
|
|
2173
|
+
{isPending && <Spinner />}
|
|
2174
|
+
<ResultsList results={results} />
|
|
2175
|
+
</>
|
|
2176
|
+
)
|
|
2177
|
+
}
|
|
2178
|
+
```
|
|
2179
|
+
|
|
2180
|
+
**Benefits:**
|
|
2181
|
+
|
|
2182
|
+
- **Automatic pending state**: No need to manually manage `setIsLoading(true/false)`
|
|
2183
|
+
|
|
2184
|
+
- **Error resilience**: Pending state correctly resets even if the transition throws
|
|
2185
|
+
|
|
2186
|
+
- **Better responsiveness**: Keeps the UI responsive during updates
|
|
2187
|
+
|
|
2188
|
+
- **Interrupt handling**: New transitions automatically cancel pending ones
|
|
2189
|
+
|
|
2190
|
+
Reference: [https://react.dev/reference/react/useTransition](https://react.dev/reference/react/useTransition)
|
|
2191
|
+
|
|
1545
2192
|
---
|
|
1546
2193
|
|
|
1547
2194
|
## 7. JavaScript Performance
|
|
@@ -1550,17 +2197,17 @@ function Badge({ count }: { count: number }) {
|
|
|
1550
2197
|
|
|
1551
2198
|
Micro-optimizations for hot paths can add up to meaningful improvements.
|
|
1552
2199
|
|
|
1553
|
-
### 7.1
|
|
2200
|
+
### 7.1 Avoid Layout Thrashing
|
|
1554
2201
|
|
|
1555
|
-
**Impact: MEDIUM (reduces
|
|
2202
|
+
**Impact: MEDIUM (prevents forced synchronous layouts and reduces performance bottlenecks)**
|
|
1556
2203
|
|
|
1557
|
-
Avoid
|
|
2204
|
+
Avoid interleaving style writes with layout reads. When you read a layout property (like `offsetWidth`, `getBoundingClientRect()`, or `getComputedStyle()`) between style changes, the browser is forced to trigger a synchronous reflow.
|
|
1558
2205
|
|
|
1559
|
-
**
|
|
2206
|
+
**This is OK: browser batches style changes**
|
|
1560
2207
|
|
|
1561
2208
|
```typescript
|
|
1562
2209
|
function updateElementStyles(element: HTMLElement) {
|
|
1563
|
-
// Each line
|
|
2210
|
+
// Each line invalidates style, but browser batches the recalculation
|
|
1564
2211
|
element.style.width = '100px'
|
|
1565
2212
|
element.style.height = '200px'
|
|
1566
2213
|
element.style.backgroundColor = 'blue'
|
|
@@ -1568,48 +2215,56 @@ function updateElementStyles(element: HTMLElement) {
|
|
|
1568
2215
|
}
|
|
1569
2216
|
```
|
|
1570
2217
|
|
|
1571
|
-
**
|
|
2218
|
+
**Incorrect: interleaved reads and writes force reflows**
|
|
1572
2219
|
|
|
1573
2220
|
```typescript
|
|
1574
|
-
|
|
1575
|
-
.
|
|
1576
|
-
width
|
|
1577
|
-
height
|
|
1578
|
-
|
|
1579
|
-
border: 1px solid black;
|
|
2221
|
+
function layoutThrashing(element: HTMLElement) {
|
|
2222
|
+
element.style.width = '100px'
|
|
2223
|
+
const width = element.offsetWidth // Forces reflow
|
|
2224
|
+
element.style.height = '200px'
|
|
2225
|
+
const height = element.offsetHeight // Forces another reflow
|
|
1580
2226
|
}
|
|
2227
|
+
```
|
|
2228
|
+
|
|
2229
|
+
**Correct: batch writes, then read once**
|
|
1581
2230
|
|
|
1582
|
-
|
|
2231
|
+
```typescript
|
|
1583
2232
|
function updateElementStyles(element: HTMLElement) {
|
|
1584
|
-
|
|
2233
|
+
// Batch all writes together
|
|
2234
|
+
element.style.width = '100px'
|
|
2235
|
+
element.style.height = '200px'
|
|
2236
|
+
element.style.backgroundColor = 'blue'
|
|
2237
|
+
element.style.border = '1px solid black'
|
|
2238
|
+
|
|
2239
|
+
// Read after all writes are done (single reflow)
|
|
2240
|
+
const { width, height } = element.getBoundingClientRect()
|
|
1585
2241
|
}
|
|
1586
2242
|
```
|
|
1587
2243
|
|
|
1588
|
-
**Correct:
|
|
2244
|
+
**Correct: batch reads, then writes**
|
|
1589
2245
|
|
|
1590
2246
|
```typescript
|
|
1591
2247
|
function updateElementStyles(element: HTMLElement) {
|
|
1592
|
-
element.
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
background-color: blue;
|
|
1596
|
-
border: 1px solid black;
|
|
1597
|
-
`
|
|
2248
|
+
element.classList.add('highlighted-box')
|
|
2249
|
+
|
|
2250
|
+
const { width, height } = element.getBoundingClientRect()
|
|
1598
2251
|
}
|
|
1599
2252
|
```
|
|
1600
2253
|
|
|
2254
|
+
**Better: use CSS classes**
|
|
2255
|
+
|
|
1601
2256
|
**React example:**
|
|
1602
2257
|
|
|
1603
2258
|
```tsx
|
|
1604
|
-
// Incorrect:
|
|
2259
|
+
// Incorrect: interleaving style changes with layout queries
|
|
1605
2260
|
function Box({ isHighlighted }: { isHighlighted: boolean }) {
|
|
1606
2261
|
const ref = useRef<HTMLDivElement>(null)
|
|
1607
2262
|
|
|
1608
2263
|
useEffect(() => {
|
|
1609
2264
|
if (ref.current && isHighlighted) {
|
|
1610
2265
|
ref.current.style.width = '100px'
|
|
2266
|
+
const width = ref.current.offsetWidth // Forces layout
|
|
1611
2267
|
ref.current.style.height = '200px'
|
|
1612
|
-
ref.current.style.backgroundColor = 'blue'
|
|
1613
2268
|
}
|
|
1614
2269
|
}, [isHighlighted])
|
|
1615
2270
|
|
|
@@ -1626,7 +2281,9 @@ function Box({ isHighlighted }: { isHighlighted: boolean }) {
|
|
|
1626
2281
|
}
|
|
1627
2282
|
```
|
|
1628
2283
|
|
|
1629
|
-
Prefer CSS classes over inline styles when possible.
|
|
2284
|
+
Prefer CSS classes over inline styles when possible. CSS files are cached by the browser, and classes provide better separation of concerns and are easier to maintain.
|
|
2285
|
+
|
|
2286
|
+
See [this gist](https://gist.github.com/paulirish/5d52fb081b3570c81e3a) and [CSS Triggers](https://csstriggers.com/) for more information on layout-forcing operations.
|
|
1630
2287
|
|
|
1631
2288
|
### 7.2 Build Index Maps for Repeated Lookups
|
|
1632
2289
|
|
|
@@ -1883,7 +2540,7 @@ function hasChanges(current: string[], original: string[]) {
|
|
|
1883
2540
|
if (current.length !== original.length) {
|
|
1884
2541
|
return true
|
|
1885
2542
|
}
|
|
1886
|
-
// Only sort
|
|
2543
|
+
// Only sort when lengths match
|
|
1887
2544
|
const currentSorted = current.toSorted()
|
|
1888
2545
|
const originalSorted = original.toSorted()
|
|
1889
2546
|
for (let i = 0; i < currentSorted.length; i++) {
|
|
@@ -2068,7 +2725,7 @@ const min = Math.min(...numbers)
|
|
|
2068
2725
|
const max = Math.max(...numbers)
|
|
2069
2726
|
```
|
|
2070
2727
|
|
|
2071
|
-
This works for small arrays but can be slower for very large arrays due to spread operator limitations. Use the loop approach for reliability.
|
|
2728
|
+
This works for small arrays, but can be slower or just throw an error for very large arrays due to spread operator limitations. Maximal array length is approximately 124000 in Chrome 143 and 638000 in Safari 18; exact numbers may vary - see [the fiddle](https://jsfiddle.net/qw1jabsx/4/). Use the loop approach for reliability.
|
|
2072
2729
|
|
|
2073
2730
|
### 7.11 Use Set/Map for O(1) Lookups
|
|
2074
2731
|
|
|
@@ -2155,7 +2812,45 @@ const sorted = [...items].sort((a, b) => a.value - b.value)
|
|
|
2155
2812
|
|
|
2156
2813
|
Advanced patterns for specific cases that require careful implementation.
|
|
2157
2814
|
|
|
2158
|
-
### 8.1
|
|
2815
|
+
### 8.1 Initialize App Once, Not Per Mount
|
|
2816
|
+
|
|
2817
|
+
**Impact: LOW-MEDIUM (avoids duplicate init in development)**
|
|
2818
|
+
|
|
2819
|
+
Do not put app-wide initialization that must run once per app load inside `useEffect([])` of a component. Components can remount and effects will re-run. Use a module-level guard or top-level init in the entry module instead.
|
|
2820
|
+
|
|
2821
|
+
**Incorrect: runs twice in dev, re-runs on remount**
|
|
2822
|
+
|
|
2823
|
+
```tsx
|
|
2824
|
+
function Comp() {
|
|
2825
|
+
useEffect(() => {
|
|
2826
|
+
loadFromStorage()
|
|
2827
|
+
checkAuthToken()
|
|
2828
|
+
}, [])
|
|
2829
|
+
|
|
2830
|
+
// ...
|
|
2831
|
+
}
|
|
2832
|
+
```
|
|
2833
|
+
|
|
2834
|
+
**Correct: once per app load**
|
|
2835
|
+
|
|
2836
|
+
```tsx
|
|
2837
|
+
let didInit = false
|
|
2838
|
+
|
|
2839
|
+
function Comp() {
|
|
2840
|
+
useEffect(() => {
|
|
2841
|
+
if (didInit) return
|
|
2842
|
+
didInit = true
|
|
2843
|
+
loadFromStorage()
|
|
2844
|
+
checkAuthToken()
|
|
2845
|
+
}, [])
|
|
2846
|
+
|
|
2847
|
+
// ...
|
|
2848
|
+
}
|
|
2849
|
+
```
|
|
2850
|
+
|
|
2851
|
+
Reference: [https://react.dev/learn/you-might-not-need-an-effect#initializing-the-application](https://react.dev/learn/you-might-not-need-an-effect#initializing-the-application)
|
|
2852
|
+
|
|
2853
|
+
### 8.2 Store Event Handlers in Refs
|
|
2159
2854
|
|
|
2160
2855
|
**Impact: LOW (stable subscriptions)**
|
|
2161
2856
|
|
|
@@ -2164,7 +2859,7 @@ Store callbacks in refs when used in effects that shouldn't re-subscribe on call
|
|
|
2164
2859
|
**Incorrect: re-subscribes on every render**
|
|
2165
2860
|
|
|
2166
2861
|
```tsx
|
|
2167
|
-
function useWindowEvent(event: string, handler: () => void) {
|
|
2862
|
+
function useWindowEvent(event: string, handler: (e) => void) {
|
|
2168
2863
|
useEffect(() => {
|
|
2169
2864
|
window.addEventListener(event, handler)
|
|
2170
2865
|
return () => window.removeEventListener(event, handler)
|
|
@@ -2177,7 +2872,7 @@ function useWindowEvent(event: string, handler: () => void) {
|
|
|
2177
2872
|
```tsx
|
|
2178
2873
|
import { useEffectEvent } from 'react'
|
|
2179
2874
|
|
|
2180
|
-
function useWindowEvent(event: string, handler: () => void) {
|
|
2875
|
+
function useWindowEvent(event: string, handler: (e) => void) {
|
|
2181
2876
|
const onEvent = useEffectEvent(handler)
|
|
2182
2877
|
|
|
2183
2878
|
useEffect(() => {
|
|
@@ -2191,24 +2886,12 @@ function useWindowEvent(event: string, handler: () => void) {
|
|
|
2191
2886
|
|
|
2192
2887
|
`useEffectEvent` provides a cleaner API for the same pattern: it creates a stable function reference that always calls the latest version of the handler.
|
|
2193
2888
|
|
|
2194
|
-
### 8.
|
|
2889
|
+
### 8.3 useEffectEvent for Stable Callback Refs
|
|
2195
2890
|
|
|
2196
2891
|
**Impact: LOW (prevents effect re-runs)**
|
|
2197
2892
|
|
|
2198
2893
|
Access latest values in callbacks without adding them to dependency arrays. Prevents effect re-runs while avoiding stale closures.
|
|
2199
2894
|
|
|
2200
|
-
**Implementation:**
|
|
2201
|
-
|
|
2202
|
-
```typescript
|
|
2203
|
-
function useLatest<T>(value: T) {
|
|
2204
|
-
const ref = useRef(value)
|
|
2205
|
-
useEffect(() => {
|
|
2206
|
-
ref.current = value
|
|
2207
|
-
}, [value])
|
|
2208
|
-
return ref
|
|
2209
|
-
}
|
|
2210
|
-
```
|
|
2211
|
-
|
|
2212
2895
|
**Incorrect: effect re-runs on every callback change**
|
|
2213
2896
|
|
|
2214
2897
|
```tsx
|
|
@@ -2222,15 +2905,17 @@ function SearchInput({ onSearch }: { onSearch: (q: string) => void }) {
|
|
|
2222
2905
|
}
|
|
2223
2906
|
```
|
|
2224
2907
|
|
|
2225
|
-
**Correct:
|
|
2908
|
+
**Correct: using React's useEffectEvent**
|
|
2226
2909
|
|
|
2227
2910
|
```tsx
|
|
2911
|
+
import { useEffectEvent } from 'react';
|
|
2912
|
+
|
|
2228
2913
|
function SearchInput({ onSearch }: { onSearch: (q: string) => void }) {
|
|
2229
2914
|
const [query, setQuery] = useState('')
|
|
2230
|
-
const
|
|
2915
|
+
const onSearchEvent = useEffectEvent(onSearch)
|
|
2231
2916
|
|
|
2232
2917
|
useEffect(() => {
|
|
2233
|
-
const timeout = setTimeout(() =>
|
|
2918
|
+
const timeout = setTimeout(() => onSearchEvent(query), 300)
|
|
2234
2919
|
return () => clearTimeout(timeout)
|
|
2235
2920
|
}, [query])
|
|
2236
2921
|
}
|