claude-autopm 2.8.2 → 2.8.4
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/README.md +399 -637
- package/install/install.js +15 -5
- package/package.json +2 -1
- package/packages/plugin-ai/LICENSE +21 -0
- package/packages/plugin-ai/README.md +316 -0
- package/packages/plugin-ai/agents/anthropic-claude-expert.md +579 -0
- package/packages/plugin-ai/agents/azure-openai-expert.md +1411 -0
- package/packages/plugin-ai/agents/gemini-api-expert.md +880 -0
- package/packages/plugin-ai/agents/google-a2a-expert.md +1445 -0
- package/packages/plugin-ai/agents/huggingface-expert.md +2131 -0
- package/packages/plugin-ai/agents/langchain-expert.md +1427 -0
- package/packages/plugin-ai/agents/langgraph-workflow-expert.md +520 -0
- package/packages/plugin-ai/agents/openai-python-expert.md +1087 -0
- package/packages/plugin-ai/commands/a2a-setup.md +886 -0
- package/packages/plugin-ai/commands/ai-model-deployment.md +481 -0
- package/packages/plugin-ai/commands/anthropic-optimize.md +793 -0
- package/packages/plugin-ai/commands/huggingface-deploy.md +789 -0
- package/packages/plugin-ai/commands/langchain-optimize.md +807 -0
- package/packages/plugin-ai/commands/llm-optimize.md +348 -0
- package/packages/plugin-ai/commands/openai-optimize.md +863 -0
- package/packages/plugin-ai/commands/rag-optimize.md +841 -0
- package/packages/plugin-ai/commands/rag-setup-scaffold.md +382 -0
- package/packages/plugin-ai/package.json +66 -0
- package/packages/plugin-ai/plugin.json +519 -0
- package/packages/plugin-ai/rules/ai-model-standards.md +449 -0
- package/packages/plugin-ai/rules/prompt-engineering-standards.md +509 -0
- package/packages/plugin-ai/scripts/examples/huggingface-inference-example.py +145 -0
- package/packages/plugin-ai/scripts/examples/langchain-rag-example.py +366 -0
- package/packages/plugin-ai/scripts/examples/mlflow-tracking-example.py +224 -0
- package/packages/plugin-ai/scripts/examples/openai-chat-example.py +425 -0
- package/packages/plugin-cloud/README.md +268 -0
- package/packages/plugin-cloud/agents/README.md +55 -0
- package/packages/plugin-cloud/agents/aws-cloud-architect.md +521 -0
- package/packages/plugin-cloud/agents/azure-cloud-architect.md +436 -0
- package/packages/plugin-cloud/agents/gcp-cloud-architect.md +385 -0
- package/packages/plugin-cloud/agents/gcp-cloud-functions-engineer.md +306 -0
- package/packages/plugin-cloud/agents/gemini-api-expert.md +880 -0
- package/packages/plugin-cloud/agents/kubernetes-orchestrator.md +566 -0
- package/packages/plugin-cloud/agents/openai-python-expert.md +1087 -0
- package/packages/plugin-cloud/agents/terraform-infrastructure-expert.md +454 -0
- package/packages/plugin-cloud/commands/cloud-cost-optimize.md +243 -0
- package/packages/plugin-cloud/commands/cloud-validate.md +196 -0
- package/packages/plugin-cloud/commands/infra-deploy.md +38 -0
- package/packages/plugin-cloud/commands/k8s-deploy.md +37 -0
- package/packages/plugin-cloud/commands/ssh-security.md +65 -0
- package/packages/plugin-cloud/commands/traefik-setup.md +65 -0
- package/packages/plugin-cloud/hooks/pre-cloud-deploy.js +456 -0
- package/packages/plugin-cloud/package.json +64 -0
- package/packages/plugin-cloud/plugin.json +338 -0
- package/packages/plugin-cloud/rules/cloud-security-compliance.md +313 -0
- package/packages/plugin-cloud/rules/infrastructure-pipeline.md +128 -0
- package/packages/plugin-cloud/scripts/examples/aws-validate.sh +30 -0
- package/packages/plugin-cloud/scripts/examples/azure-setup.sh +33 -0
- package/packages/plugin-cloud/scripts/examples/gcp-setup.sh +39 -0
- package/packages/plugin-cloud/scripts/examples/k8s-validate.sh +40 -0
- package/packages/plugin-cloud/scripts/examples/terraform-init.sh +26 -0
- package/packages/plugin-core/README.md +274 -0
- package/packages/plugin-core/agents/core/agent-manager.md +296 -0
- package/packages/plugin-core/agents/core/code-analyzer.md +131 -0
- package/packages/plugin-core/agents/core/file-analyzer.md +162 -0
- package/packages/plugin-core/agents/core/test-runner.md +200 -0
- package/packages/plugin-core/commands/code-rabbit.md +128 -0
- package/packages/plugin-core/commands/prompt.md +9 -0
- package/packages/plugin-core/commands/re-init.md +9 -0
- package/packages/plugin-core/hooks/context7-reminder.md +29 -0
- package/packages/plugin-core/hooks/enforce-agents.js +125 -0
- package/packages/plugin-core/hooks/enforce-agents.sh +35 -0
- package/packages/plugin-core/hooks/pre-agent-context7.js +224 -0
- package/packages/plugin-core/hooks/pre-command-context7.js +229 -0
- package/packages/plugin-core/hooks/strict-enforce-agents.sh +39 -0
- package/packages/plugin-core/hooks/test-hook.sh +21 -0
- package/packages/plugin-core/hooks/unified-context7-enforcement.sh +38 -0
- package/packages/plugin-core/package.json +45 -0
- package/packages/plugin-core/plugin.json +387 -0
- package/packages/plugin-core/rules/agent-coordination.md +549 -0
- package/packages/plugin-core/rules/agent-mandatory.md +170 -0
- package/packages/plugin-core/rules/ai-integration-patterns.md +219 -0
- package/packages/plugin-core/rules/command-pipelines.md +208 -0
- package/packages/plugin-core/rules/context-optimization.md +176 -0
- package/packages/plugin-core/rules/context7-enforcement.md +327 -0
- package/packages/plugin-core/rules/datetime.md +122 -0
- package/packages/plugin-core/rules/definition-of-done.md +272 -0
- package/packages/plugin-core/rules/development-environments.md +19 -0
- package/packages/plugin-core/rules/development-workflow.md +198 -0
- package/packages/plugin-core/rules/framework-path-rules.md +180 -0
- package/packages/plugin-core/rules/frontmatter-operations.md +64 -0
- package/packages/plugin-core/rules/git-strategy.md +237 -0
- package/packages/plugin-core/rules/golden-rules.md +181 -0
- package/packages/plugin-core/rules/naming-conventions.md +111 -0
- package/packages/plugin-core/rules/no-pr-workflow.md +183 -0
- package/packages/plugin-core/rules/performance-guidelines.md +403 -0
- package/packages/plugin-core/rules/pipeline-mandatory.md +109 -0
- package/packages/plugin-core/rules/security-checklist.md +318 -0
- package/packages/plugin-core/rules/standard-patterns.md +197 -0
- package/packages/plugin-core/rules/strip-frontmatter.md +85 -0
- package/packages/plugin-core/rules/tdd.enforcement.md +103 -0
- package/packages/plugin-core/rules/use-ast-grep.md +113 -0
- package/packages/plugin-core/scripts/lib/datetime-utils.sh +254 -0
- package/packages/plugin-core/scripts/lib/frontmatter-utils.sh +294 -0
- package/packages/plugin-core/scripts/lib/github-utils.sh +221 -0
- package/packages/plugin-core/scripts/lib/logging-utils.sh +199 -0
- package/packages/plugin-core/scripts/lib/validation-utils.sh +339 -0
- package/packages/plugin-core/scripts/mcp/add.sh +7 -0
- package/packages/plugin-core/scripts/mcp/disable.sh +12 -0
- package/packages/plugin-core/scripts/mcp/enable.sh +12 -0
- package/packages/plugin-core/scripts/mcp/list.sh +7 -0
- package/packages/plugin-core/scripts/mcp/sync.sh +8 -0
- package/packages/plugin-data/README.md +315 -0
- package/packages/plugin-data/agents/airflow-orchestration-expert.md +158 -0
- package/packages/plugin-data/agents/kedro-pipeline-expert.md +304 -0
- package/packages/plugin-data/agents/langgraph-workflow-expert.md +530 -0
- package/packages/plugin-data/commands/airflow-dag-scaffold.md +413 -0
- package/packages/plugin-data/commands/kafka-pipeline-scaffold.md +503 -0
- package/packages/plugin-data/package.json +66 -0
- package/packages/plugin-data/plugin.json +294 -0
- package/packages/plugin-data/rules/data-quality-standards.md +373 -0
- package/packages/plugin-data/rules/etl-pipeline-standards.md +255 -0
- package/packages/plugin-data/scripts/examples/airflow-dag-example.py +245 -0
- package/packages/plugin-data/scripts/examples/dbt-transform-example.sql +238 -0
- package/packages/plugin-data/scripts/examples/kafka-streaming-example.py +257 -0
- package/packages/plugin-data/scripts/examples/pandas-etl-example.py +332 -0
- package/packages/plugin-databases/README.md +330 -0
- package/packages/plugin-databases/agents/README.md +50 -0
- package/packages/plugin-databases/agents/bigquery-expert.md +401 -0
- package/packages/plugin-databases/agents/cosmosdb-expert.md +375 -0
- package/packages/plugin-databases/agents/mongodb-expert.md +407 -0
- package/packages/plugin-databases/agents/postgresql-expert.md +329 -0
- package/packages/plugin-databases/agents/redis-expert.md +74 -0
- package/packages/plugin-databases/commands/db-optimize.md +612 -0
- package/packages/plugin-databases/package.json +60 -0
- package/packages/plugin-databases/plugin.json +237 -0
- package/packages/plugin-databases/rules/database-management-strategy.md +146 -0
- package/packages/plugin-databases/rules/database-pipeline.md +316 -0
- package/packages/plugin-databases/scripts/examples/bigquery-cost-analyze.sh +160 -0
- package/packages/plugin-databases/scripts/examples/cosmosdb-ru-optimize.sh +163 -0
- package/packages/plugin-databases/scripts/examples/mongodb-shard-check.sh +120 -0
- package/packages/plugin-databases/scripts/examples/postgres-index-analyze.sh +95 -0
- package/packages/plugin-databases/scripts/examples/redis-cache-stats.sh +121 -0
- package/packages/plugin-devops/README.md +367 -0
- package/packages/plugin-devops/agents/README.md +52 -0
- package/packages/plugin-devops/agents/azure-devops-specialist.md +308 -0
- package/packages/plugin-devops/agents/docker-containerization-expert.md +298 -0
- package/packages/plugin-devops/agents/github-operations-specialist.md +335 -0
- package/packages/plugin-devops/agents/mcp-context-manager.md +319 -0
- package/packages/plugin-devops/agents/observability-engineer.md +574 -0
- package/packages/plugin-devops/agents/ssh-operations-expert.md +1093 -0
- package/packages/plugin-devops/agents/traefik-proxy-expert.md +444 -0
- package/packages/plugin-devops/commands/ci-pipeline-create.md +581 -0
- package/packages/plugin-devops/commands/docker-optimize.md +493 -0
- package/packages/plugin-devops/commands/workflow-create.md +42 -0
- package/packages/plugin-devops/hooks/pre-docker-build.js +472 -0
- package/packages/plugin-devops/package.json +61 -0
- package/packages/plugin-devops/plugin.json +302 -0
- package/packages/plugin-devops/rules/ci-cd-kubernetes-strategy.md +25 -0
- package/packages/plugin-devops/rules/devops-troubleshooting-playbook.md +450 -0
- package/packages/plugin-devops/rules/docker-first-development.md +404 -0
- package/packages/plugin-devops/rules/github-operations.md +92 -0
- package/packages/plugin-devops/scripts/examples/docker-build-multistage.sh +43 -0
- package/packages/plugin-devops/scripts/examples/docker-compose-validate.sh +74 -0
- package/packages/plugin-devops/scripts/examples/github-workflow-validate.sh +48 -0
- package/packages/plugin-devops/scripts/examples/prometheus-health-check.sh +58 -0
- package/packages/plugin-devops/scripts/examples/ssh-key-setup.sh +74 -0
- package/packages/plugin-frameworks/README.md +309 -0
- package/packages/plugin-frameworks/agents/README.md +64 -0
- package/packages/plugin-frameworks/agents/e2e-test-engineer.md +579 -0
- package/packages/plugin-frameworks/agents/nats-messaging-expert.md +254 -0
- package/packages/plugin-frameworks/agents/react-frontend-engineer.md +393 -0
- package/packages/plugin-frameworks/agents/react-ui-expert.md +226 -0
- package/packages/plugin-frameworks/agents/tailwindcss-expert.md +1021 -0
- package/packages/plugin-frameworks/agents/ux-design-expert.md +244 -0
- package/packages/plugin-frameworks/commands/app-scaffold.md +50 -0
- package/packages/plugin-frameworks/commands/nextjs-optimize.md +692 -0
- package/packages/plugin-frameworks/commands/react-optimize.md +583 -0
- package/packages/plugin-frameworks/commands/tailwind-system.md +64 -0
- package/packages/plugin-frameworks/package.json +59 -0
- package/packages/plugin-frameworks/plugin.json +224 -0
- package/packages/plugin-frameworks/rules/performance-guidelines.md +403 -0
- package/packages/plugin-frameworks/rules/ui-development-standards.md +281 -0
- package/packages/plugin-frameworks/rules/ui-framework-rules.md +151 -0
- package/packages/plugin-frameworks/scripts/examples/react-component-perf.sh +34 -0
- package/packages/plugin-frameworks/scripts/examples/tailwind-optimize.sh +44 -0
- package/packages/plugin-frameworks/scripts/examples/vue-composition-check.sh +41 -0
- package/packages/plugin-languages/README.md +333 -0
- package/packages/plugin-languages/agents/README.md +50 -0
- package/packages/plugin-languages/agents/bash-scripting-expert.md +541 -0
- package/packages/plugin-languages/agents/javascript-frontend-engineer.md +197 -0
- package/packages/plugin-languages/agents/nodejs-backend-engineer.md +226 -0
- package/packages/plugin-languages/agents/python-backend-engineer.md +214 -0
- package/packages/plugin-languages/agents/python-backend-expert.md +289 -0
- package/packages/plugin-languages/commands/javascript-optimize.md +636 -0
- package/packages/plugin-languages/commands/nodejs-api-scaffold.md +341 -0
- package/packages/plugin-languages/commands/nodejs-optimize.md +689 -0
- package/packages/plugin-languages/commands/python-api-scaffold.md +261 -0
- package/packages/plugin-languages/commands/python-optimize.md +593 -0
- package/packages/plugin-languages/package.json +65 -0
- package/packages/plugin-languages/plugin.json +265 -0
- package/packages/plugin-languages/rules/code-quality-standards.md +496 -0
- package/packages/plugin-languages/rules/testing-standards.md +768 -0
- package/packages/plugin-languages/scripts/examples/bash-production-script.sh +520 -0
- package/packages/plugin-languages/scripts/examples/javascript-es6-patterns.js +291 -0
- package/packages/plugin-languages/scripts/examples/nodejs-async-iteration.js +360 -0
- package/packages/plugin-languages/scripts/examples/python-async-patterns.py +289 -0
- package/packages/plugin-languages/scripts/examples/typescript-patterns.ts +432 -0
- package/packages/plugin-ml/README.md +430 -0
- package/packages/plugin-ml/agents/automl-expert.md +326 -0
- package/packages/plugin-ml/agents/computer-vision-expert.md +550 -0
- package/packages/plugin-ml/agents/gradient-boosting-expert.md +455 -0
- package/packages/plugin-ml/agents/neural-network-architect.md +1228 -0
- package/packages/plugin-ml/agents/nlp-transformer-expert.md +584 -0
- package/packages/plugin-ml/agents/pytorch-expert.md +412 -0
- package/packages/plugin-ml/agents/reinforcement-learning-expert.md +2088 -0
- package/packages/plugin-ml/agents/scikit-learn-expert.md +228 -0
- package/packages/plugin-ml/agents/tensorflow-keras-expert.md +509 -0
- package/packages/plugin-ml/agents/time-series-expert.md +303 -0
- package/packages/plugin-ml/commands/ml-automl.md +572 -0
- package/packages/plugin-ml/commands/ml-train-optimize.md +657 -0
- package/packages/plugin-ml/package.json +52 -0
- package/packages/plugin-ml/plugin.json +338 -0
- package/packages/plugin-pm/README.md +368 -0
- package/packages/plugin-pm/claudeautopm-plugin-pm-2.0.0.tgz +0 -0
- package/packages/plugin-pm/commands/azure/COMMANDS.md +107 -0
- package/packages/plugin-pm/commands/azure/COMMAND_MAPPING.md +252 -0
- package/packages/plugin-pm/commands/azure/INTEGRATION_FIX.md +103 -0
- package/packages/plugin-pm/commands/azure/README.md +246 -0
- package/packages/plugin-pm/commands/azure/active-work.md +198 -0
- package/packages/plugin-pm/commands/azure/aliases.md +143 -0
- package/packages/plugin-pm/commands/azure/blocked-items.md +287 -0
- package/packages/plugin-pm/commands/azure/clean.md +93 -0
- package/packages/plugin-pm/commands/azure/docs-query.md +48 -0
- package/packages/plugin-pm/commands/azure/feature-decompose.md +380 -0
- package/packages/plugin-pm/commands/azure/feature-list.md +61 -0
- package/packages/plugin-pm/commands/azure/feature-new.md +115 -0
- package/packages/plugin-pm/commands/azure/feature-show.md +205 -0
- package/packages/plugin-pm/commands/azure/feature-start.md +130 -0
- package/packages/plugin-pm/commands/azure/fix-integration-example.md +93 -0
- package/packages/plugin-pm/commands/azure/help.md +150 -0
- package/packages/plugin-pm/commands/azure/import-us.md +269 -0
- package/packages/plugin-pm/commands/azure/init.md +211 -0
- package/packages/plugin-pm/commands/azure/next-task.md +262 -0
- package/packages/plugin-pm/commands/azure/search.md +160 -0
- package/packages/plugin-pm/commands/azure/sprint-status.md +235 -0
- package/packages/plugin-pm/commands/azure/standup.md +260 -0
- package/packages/plugin-pm/commands/azure/sync-all.md +99 -0
- package/packages/plugin-pm/commands/azure/task-analyze.md +186 -0
- package/packages/plugin-pm/commands/azure/task-close.md +329 -0
- package/packages/plugin-pm/commands/azure/task-edit.md +145 -0
- package/packages/plugin-pm/commands/azure/task-list.md +263 -0
- package/packages/plugin-pm/commands/azure/task-new.md +84 -0
- package/packages/plugin-pm/commands/azure/task-reopen.md +79 -0
- package/packages/plugin-pm/commands/azure/task-show.md +126 -0
- package/packages/plugin-pm/commands/azure/task-start.md +301 -0
- package/packages/plugin-pm/commands/azure/task-status.md +65 -0
- package/packages/plugin-pm/commands/azure/task-sync.md +67 -0
- package/packages/plugin-pm/commands/azure/us-edit.md +164 -0
- package/packages/plugin-pm/commands/azure/us-list.md +202 -0
- package/packages/plugin-pm/commands/azure/us-new.md +265 -0
- package/packages/plugin-pm/commands/azure/us-parse.md +253 -0
- package/packages/plugin-pm/commands/azure/us-show.md +188 -0
- package/packages/plugin-pm/commands/azure/us-status.md +320 -0
- package/packages/plugin-pm/commands/azure/validate.md +86 -0
- package/packages/plugin-pm/commands/azure/work-item-sync.md +47 -0
- package/packages/plugin-pm/commands/blocked.md +28 -0
- package/packages/plugin-pm/commands/clean.md +119 -0
- package/packages/plugin-pm/commands/context-create.md +136 -0
- package/packages/plugin-pm/commands/context-prime.md +170 -0
- package/packages/plugin-pm/commands/context-update.md +292 -0
- package/packages/plugin-pm/commands/context.md +28 -0
- package/packages/plugin-pm/commands/epic-close.md +86 -0
- package/packages/plugin-pm/commands/epic-decompose.md +370 -0
- package/packages/plugin-pm/commands/epic-edit.md +83 -0
- package/packages/plugin-pm/commands/epic-list.md +30 -0
- package/packages/plugin-pm/commands/epic-merge.md +222 -0
- package/packages/plugin-pm/commands/epic-oneshot.md +119 -0
- package/packages/plugin-pm/commands/epic-refresh.md +119 -0
- package/packages/plugin-pm/commands/epic-show.md +28 -0
- package/packages/plugin-pm/commands/epic-split.md +120 -0
- package/packages/plugin-pm/commands/epic-start.md +195 -0
- package/packages/plugin-pm/commands/epic-status.md +28 -0
- package/packages/plugin-pm/commands/epic-sync-modular.md +338 -0
- package/packages/plugin-pm/commands/epic-sync-original.md +473 -0
- package/packages/plugin-pm/commands/epic-sync.md +486 -0
- package/packages/plugin-pm/commands/github/workflow-create.md +42 -0
- package/packages/plugin-pm/commands/help.md +28 -0
- package/packages/plugin-pm/commands/import.md +115 -0
- package/packages/plugin-pm/commands/in-progress.md +28 -0
- package/packages/plugin-pm/commands/init.md +28 -0
- package/packages/plugin-pm/commands/issue-analyze.md +202 -0
- package/packages/plugin-pm/commands/issue-close.md +119 -0
- package/packages/plugin-pm/commands/issue-edit.md +93 -0
- package/packages/plugin-pm/commands/issue-reopen.md +87 -0
- package/packages/plugin-pm/commands/issue-show.md +41 -0
- package/packages/plugin-pm/commands/issue-start.md +234 -0
- package/packages/plugin-pm/commands/issue-status.md +95 -0
- package/packages/plugin-pm/commands/issue-sync.md +411 -0
- package/packages/plugin-pm/commands/next.md +28 -0
- package/packages/plugin-pm/commands/prd-edit.md +82 -0
- package/packages/plugin-pm/commands/prd-list.md +28 -0
- package/packages/plugin-pm/commands/prd-new.md +55 -0
- package/packages/plugin-pm/commands/prd-parse.md +42 -0
- package/packages/plugin-pm/commands/prd-status.md +28 -0
- package/packages/plugin-pm/commands/search.md +28 -0
- package/packages/plugin-pm/commands/standup.md +28 -0
- package/packages/plugin-pm/commands/status.md +28 -0
- package/packages/plugin-pm/commands/sync.md +99 -0
- package/packages/plugin-pm/commands/test-reference-update.md +151 -0
- package/packages/plugin-pm/commands/validate.md +28 -0
- package/packages/plugin-pm/commands/what-next.md +28 -0
- package/packages/plugin-pm/package.json +57 -0
- package/packages/plugin-pm/plugin.json +503 -0
- package/packages/plugin-pm/scripts/pm/analytics.js +425 -0
- package/packages/plugin-pm/scripts/pm/blocked.js +164 -0
- package/packages/plugin-pm/scripts/pm/blocked.sh +78 -0
- package/packages/plugin-pm/scripts/pm/clean.js +464 -0
- package/packages/plugin-pm/scripts/pm/context-create.js +216 -0
- package/packages/plugin-pm/scripts/pm/context-prime.js +335 -0
- package/packages/plugin-pm/scripts/pm/context-update.js +344 -0
- package/packages/plugin-pm/scripts/pm/context.js +338 -0
- package/packages/plugin-pm/scripts/pm/epic-close.js +347 -0
- package/packages/plugin-pm/scripts/pm/epic-edit.js +382 -0
- package/packages/plugin-pm/scripts/pm/epic-list.js +273 -0
- package/packages/plugin-pm/scripts/pm/epic-list.sh +109 -0
- package/packages/plugin-pm/scripts/pm/epic-show.js +291 -0
- package/packages/plugin-pm/scripts/pm/epic-show.sh +105 -0
- package/packages/plugin-pm/scripts/pm/epic-split.js +522 -0
- package/packages/plugin-pm/scripts/pm/epic-start/epic-start.js +183 -0
- package/packages/plugin-pm/scripts/pm/epic-start/epic-start.sh +94 -0
- package/packages/plugin-pm/scripts/pm/epic-status.js +291 -0
- package/packages/plugin-pm/scripts/pm/epic-status.sh +104 -0
- package/packages/plugin-pm/scripts/pm/epic-sync/README.md +208 -0
- package/packages/plugin-pm/scripts/pm/epic-sync/create-epic-issue.sh +77 -0
- package/packages/plugin-pm/scripts/pm/epic-sync/create-task-issues.sh +86 -0
- package/packages/plugin-pm/scripts/pm/epic-sync/update-epic-file.sh +79 -0
- package/packages/plugin-pm/scripts/pm/epic-sync/update-references.sh +89 -0
- package/packages/plugin-pm/scripts/pm/epic-sync.sh +137 -0
- package/packages/plugin-pm/scripts/pm/help.js +92 -0
- package/packages/plugin-pm/scripts/pm/help.sh +90 -0
- package/packages/plugin-pm/scripts/pm/in-progress.js +178 -0
- package/packages/plugin-pm/scripts/pm/in-progress.sh +93 -0
- package/packages/plugin-pm/scripts/pm/init.js +321 -0
- package/packages/plugin-pm/scripts/pm/init.sh +178 -0
- package/packages/plugin-pm/scripts/pm/issue-close.js +232 -0
- package/packages/plugin-pm/scripts/pm/issue-edit.js +310 -0
- package/packages/plugin-pm/scripts/pm/issue-show.js +272 -0
- package/packages/plugin-pm/scripts/pm/issue-start.js +181 -0
- package/packages/plugin-pm/scripts/pm/issue-sync/format-comment.sh +468 -0
- package/packages/plugin-pm/scripts/pm/issue-sync/gather-updates.sh +460 -0
- package/packages/plugin-pm/scripts/pm/issue-sync/post-comment.sh +330 -0
- package/packages/plugin-pm/scripts/pm/issue-sync/preflight-validation.sh +348 -0
- package/packages/plugin-pm/scripts/pm/issue-sync/update-frontmatter.sh +387 -0
- package/packages/plugin-pm/scripts/pm/lib/README.md +85 -0
- package/packages/plugin-pm/scripts/pm/lib/epic-discovery.js +119 -0
- package/packages/plugin-pm/scripts/pm/lib/logger.js +78 -0
- package/packages/plugin-pm/scripts/pm/next.js +189 -0
- package/packages/plugin-pm/scripts/pm/next.sh +72 -0
- package/packages/plugin-pm/scripts/pm/optimize.js +407 -0
- package/packages/plugin-pm/scripts/pm/pr-create.js +337 -0
- package/packages/plugin-pm/scripts/pm/pr-list.js +257 -0
- package/packages/plugin-pm/scripts/pm/prd-list.js +242 -0
- package/packages/plugin-pm/scripts/pm/prd-list.sh +103 -0
- package/packages/plugin-pm/scripts/pm/prd-new.js +684 -0
- package/packages/plugin-pm/scripts/pm/prd-parse.js +547 -0
- package/packages/plugin-pm/scripts/pm/prd-status.js +152 -0
- package/packages/plugin-pm/scripts/pm/prd-status.sh +63 -0
- package/packages/plugin-pm/scripts/pm/release.js +460 -0
- package/packages/plugin-pm/scripts/pm/search.js +192 -0
- package/packages/plugin-pm/scripts/pm/search.sh +89 -0
- package/packages/plugin-pm/scripts/pm/standup.js +362 -0
- package/packages/plugin-pm/scripts/pm/standup.sh +95 -0
- package/packages/plugin-pm/scripts/pm/status.js +148 -0
- package/packages/plugin-pm/scripts/pm/status.sh +59 -0
- package/packages/plugin-pm/scripts/pm/sync-batch.js +337 -0
- package/packages/plugin-pm/scripts/pm/sync.js +343 -0
- package/packages/plugin-pm/scripts/pm/template-list.js +141 -0
- package/packages/plugin-pm/scripts/pm/template-new.js +366 -0
- package/packages/plugin-pm/scripts/pm/validate.js +274 -0
- package/packages/plugin-pm/scripts/pm/validate.sh +106 -0
- package/packages/plugin-pm/scripts/pm/what-next.js +660 -0
- package/packages/plugin-testing/README.md +401 -0
- package/packages/plugin-testing/agents/frontend-testing-engineer.md +768 -0
- package/packages/plugin-testing/commands/jest-optimize.md +800 -0
- package/packages/plugin-testing/commands/playwright-optimize.md +887 -0
- package/packages/plugin-testing/commands/test-coverage.md +512 -0
- package/packages/plugin-testing/commands/test-performance.md +1041 -0
- package/packages/plugin-testing/commands/test-setup.md +414 -0
- package/packages/plugin-testing/package.json +40 -0
- package/packages/plugin-testing/plugin.json +197 -0
- package/packages/plugin-testing/rules/test-coverage-requirements.md +581 -0
- package/packages/plugin-testing/rules/testing-standards.md +529 -0
- package/packages/plugin-testing/scripts/examples/react-testing-example.test.jsx +460 -0
- package/packages/plugin-testing/scripts/examples/vitest-config-example.js +352 -0
- package/packages/plugin-testing/scripts/examples/vue-testing-example.test.js +586 -0
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
# react:optimize
|
|
2
|
+
|
|
3
|
+
Optimize React application performance with Context7-verified patterns for hooks, memoization, and rendering optimization.
|
|
4
|
+
|
|
5
|
+
## Description
|
|
6
|
+
|
|
7
|
+
Analyzes and optimizes React applications following official React best practices:
|
|
8
|
+
- Component memoization (React.memo, useMemo, useCallback)
|
|
9
|
+
- Render optimization and unnecessary re-renders
|
|
10
|
+
- Hook dependency optimization
|
|
11
|
+
- Context value optimization
|
|
12
|
+
- List rendering performance
|
|
13
|
+
- Code splitting and lazy loading
|
|
14
|
+
|
|
15
|
+
## Required Documentation Access
|
|
16
|
+
|
|
17
|
+
**MANDATORY:** Before optimization, query Context7 for React best practices:
|
|
18
|
+
|
|
19
|
+
**Documentation Queries:**
|
|
20
|
+
- `mcp://context7/react/performance` - React performance optimization
|
|
21
|
+
- `mcp://context7/react/hooks` - useMemo, useCallback, memo patterns
|
|
22
|
+
- `mcp://context7/react/rendering` - Rendering optimization strategies
|
|
23
|
+
- `mcp://context7/react/profiling` - React Profiler and performance analysis
|
|
24
|
+
|
|
25
|
+
**Why This is Required:**
|
|
26
|
+
- Ensures optimization follows official React documentation
|
|
27
|
+
- Applies latest performance patterns from React team
|
|
28
|
+
- Validates hook usage and dependency arrays
|
|
29
|
+
- Prevents anti-patterns and common mistakes
|
|
30
|
+
|
|
31
|
+
## Usage
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
/react:optimize [options]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Options
|
|
38
|
+
|
|
39
|
+
- `--path <directory>` - Path to React components (default: ./src)
|
|
40
|
+
- `--analyze-only` - Analyze without applying changes
|
|
41
|
+
- `--output <file>` - Write optimization report
|
|
42
|
+
- `--focus <area>` - Focus area: hooks, rendering, context, lists
|
|
43
|
+
- `--aggressive` - Apply aggressive optimizations (requires review)
|
|
44
|
+
|
|
45
|
+
## Examples
|
|
46
|
+
|
|
47
|
+
### Analyze Component Performance
|
|
48
|
+
```bash
|
|
49
|
+
/react:optimize --analyze-only --output perf-report.md
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Optimize Hooks and Memoization
|
|
53
|
+
```bash
|
|
54
|
+
/react:optimize --focus hooks
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Optimize Context Usage
|
|
58
|
+
```bash
|
|
59
|
+
/react:optimize --focus context
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Full Optimization with Report
|
|
63
|
+
```bash
|
|
64
|
+
/react:optimize --output optimizations.md
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Optimization Patterns
|
|
68
|
+
|
|
69
|
+
### 1. useMemo for Expensive Calculations
|
|
70
|
+
|
|
71
|
+
**Pattern from Context7 (/reactjs/react.dev):**
|
|
72
|
+
|
|
73
|
+
```javascript
|
|
74
|
+
// BEFORE: Expensive calculation runs on every render
|
|
75
|
+
function TodoList({ todos, tab, theme }) {
|
|
76
|
+
const visibleTodos = filterTodos(todos, tab); // ❌ Runs every render
|
|
77
|
+
|
|
78
|
+
return (
|
|
79
|
+
<div className={theme}>
|
|
80
|
+
<List items={visibleTodos} />
|
|
81
|
+
</div>
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// AFTER: useMemo caches the result
|
|
86
|
+
import { useMemo } from 'react';
|
|
87
|
+
|
|
88
|
+
function TodoList({ todos, tab, theme }) {
|
|
89
|
+
const visibleTodos = useMemo(
|
|
90
|
+
() => filterTodos(todos, tab),
|
|
91
|
+
[todos, tab] // ✅ Only recalculates when dependencies change
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
return (
|
|
95
|
+
<div className={theme}>
|
|
96
|
+
<List items={visibleTodos} />
|
|
97
|
+
</div>
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Benefits:**
|
|
103
|
+
- Skips expensive calculations when dependencies unchanged
|
|
104
|
+
- Prevents unnecessary child component re-renders
|
|
105
|
+
- Improves overall application responsiveness
|
|
106
|
+
|
|
107
|
+
**When to Use:**
|
|
108
|
+
- Expensive filtering/transformation operations
|
|
109
|
+
- Complex calculations derived from props/state
|
|
110
|
+
- Values passed to memoized child components
|
|
111
|
+
|
|
112
|
+
### 2. React.memo for Component Optimization
|
|
113
|
+
|
|
114
|
+
**Pattern from Context7:**
|
|
115
|
+
|
|
116
|
+
```javascript
|
|
117
|
+
// BEFORE: Component re-renders on every parent render
|
|
118
|
+
function List({ items }) {
|
|
119
|
+
return (
|
|
120
|
+
<ul>
|
|
121
|
+
{items.map(item => (
|
|
122
|
+
<li key={item.id}>{item.text}</li>
|
|
123
|
+
))}
|
|
124
|
+
</ul>
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// AFTER: React.memo prevents unnecessary re-renders
|
|
129
|
+
import { memo } from 'react';
|
|
130
|
+
|
|
131
|
+
const List = memo(function List({ items }) {
|
|
132
|
+
return (
|
|
133
|
+
<ul>
|
|
134
|
+
{items.map(item => (
|
|
135
|
+
<li key={item.id}>{item.text}</li>
|
|
136
|
+
))}
|
|
137
|
+
</ul>
|
|
138
|
+
);
|
|
139
|
+
});
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**When to Use:**
|
|
143
|
+
- Component renders expensive UI
|
|
144
|
+
- Props change infrequently
|
|
145
|
+
- Component receives same props repeatedly
|
|
146
|
+
|
|
147
|
+
### 3. useCallback for Function Stability
|
|
148
|
+
|
|
149
|
+
**Pattern from Context7:**
|
|
150
|
+
|
|
151
|
+
```javascript
|
|
152
|
+
// BEFORE: Function recreated on every render
|
|
153
|
+
function ProductPage({ productId, referrer }) {
|
|
154
|
+
const handleSubmit = (orderDetails) => {
|
|
155
|
+
post('/product/' + productId + '/buy', {
|
|
156
|
+
referrer,
|
|
157
|
+
orderDetails
|
|
158
|
+
});
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
return <Form onSubmit={handleSubmit} />; // ❌ New function every render
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// AFTER: useCallback memoizes function
|
|
165
|
+
import { useCallback } from 'react';
|
|
166
|
+
|
|
167
|
+
function ProductPage({ productId, referrer }) {
|
|
168
|
+
const handleSubmit = useCallback((orderDetails) => {
|
|
169
|
+
post('/product/' + productId + '/buy', {
|
|
170
|
+
referrer,
|
|
171
|
+
orderDetails
|
|
172
|
+
});
|
|
173
|
+
}, [productId, referrer]); // ✅ Stable function reference
|
|
174
|
+
|
|
175
|
+
return <Form onSubmit={handleSubmit} />;
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**Benefits:**
|
|
180
|
+
- Prevents memoized child components from re-rendering
|
|
181
|
+
- Stable function references for useEffect dependencies
|
|
182
|
+
- Essential for custom hooks returning functions
|
|
183
|
+
|
|
184
|
+
### 4. Optimize Context Value
|
|
185
|
+
|
|
186
|
+
**Pattern from Context7:**
|
|
187
|
+
|
|
188
|
+
```javascript
|
|
189
|
+
// BEFORE: Context value object recreated every render
|
|
190
|
+
function MyApp() {
|
|
191
|
+
const [currentUser, setCurrentUser] = useState(null);
|
|
192
|
+
|
|
193
|
+
const login = (response) => {
|
|
194
|
+
storeCredentials(response.credentials);
|
|
195
|
+
setCurrentUser(response.user);
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
// ❌ New object on every render = all consumers re-render
|
|
199
|
+
return (
|
|
200
|
+
<AuthContext.Provider value={{ currentUser, login }}>
|
|
201
|
+
<Page />
|
|
202
|
+
</AuthContext.Provider>
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// AFTER: Memoize context value
|
|
207
|
+
import { useCallback, useMemo } from 'react';
|
|
208
|
+
|
|
209
|
+
function MyApp() {
|
|
210
|
+
const [currentUser, setCurrentUser] = useState(null);
|
|
211
|
+
|
|
212
|
+
const login = useCallback((response) => {
|
|
213
|
+
storeCredentials(response.credentials);
|
|
214
|
+
setCurrentUser(response.user);
|
|
215
|
+
}, []); // ✅ Stable function
|
|
216
|
+
|
|
217
|
+
const contextValue = useMemo(() => ({
|
|
218
|
+
currentUser,
|
|
219
|
+
login
|
|
220
|
+
}), [currentUser, login]); // ✅ Stable object
|
|
221
|
+
|
|
222
|
+
return (
|
|
223
|
+
<AuthContext.Provider value={contextValue}>
|
|
224
|
+
<Page />
|
|
225
|
+
</AuthContext.Provider>
|
|
226
|
+
);
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Benefits:**
|
|
231
|
+
- Prevents unnecessary re-renders of all context consumers
|
|
232
|
+
- Critical for frequently updated contexts
|
|
233
|
+
- Improves app-wide performance
|
|
234
|
+
|
|
235
|
+
### 5. Optimize useEffect Dependencies
|
|
236
|
+
|
|
237
|
+
**Pattern from Context7:**
|
|
238
|
+
|
|
239
|
+
```javascript
|
|
240
|
+
// BEFORE: useEffect runs on every render due to object dependency
|
|
241
|
+
function ChatRoom({ roomId }) {
|
|
242
|
+
const [message, setMessage] = useState('');
|
|
243
|
+
|
|
244
|
+
const options = {
|
|
245
|
+
serverUrl: 'https://localhost:1234',
|
|
246
|
+
roomId: roomId
|
|
247
|
+
}; // ❌ New object every render
|
|
248
|
+
|
|
249
|
+
useEffect(() => {
|
|
250
|
+
const connection = createConnection(options);
|
|
251
|
+
connection.connect();
|
|
252
|
+
return () => connection.disconnect();
|
|
253
|
+
}, [options]); // ❌ options changes every render
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
// AFTER: Memoize object dependency
|
|
257
|
+
import { useMemo } from 'react';
|
|
258
|
+
|
|
259
|
+
function ChatRoom({ roomId }) {
|
|
260
|
+
const [message, setMessage] = useState('');
|
|
261
|
+
|
|
262
|
+
const options = useMemo(() => ({
|
|
263
|
+
serverUrl: 'https://localhost:1234',
|
|
264
|
+
roomId: roomId
|
|
265
|
+
}), [roomId]); // ✅ Only changes when roomId changes
|
|
266
|
+
|
|
267
|
+
useEffect(() => {
|
|
268
|
+
const connection = createConnection(options);
|
|
269
|
+
connection.connect();
|
|
270
|
+
return () => connection.disconnect();
|
|
271
|
+
}, [options]); // ✅ Stable reference
|
|
272
|
+
}
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### 6. Memoize JSX for Complex Children
|
|
276
|
+
|
|
277
|
+
**Pattern from Context7:**
|
|
278
|
+
|
|
279
|
+
```javascript
|
|
280
|
+
// BEFORE: Child component re-renders unnecessarily
|
|
281
|
+
export default function TodoList({ todos, tab, theme }) {
|
|
282
|
+
const visibleTodos = useMemo(() => filterTodos(todos, tab), [todos, tab]);
|
|
283
|
+
|
|
284
|
+
return (
|
|
285
|
+
<div className={theme}>
|
|
286
|
+
<List items={visibleTodos} /> {/* ❌ Re-renders when theme changes */}
|
|
287
|
+
</div>
|
|
288
|
+
);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// AFTER: Memoize JSX node
|
|
292
|
+
export default function TodoList({ todos, tab, theme }) {
|
|
293
|
+
const visibleTodos = useMemo(() => filterTodos(todos, tab), [todos, tab]);
|
|
294
|
+
|
|
295
|
+
const children = useMemo(
|
|
296
|
+
() => <List items={visibleTodos} />,
|
|
297
|
+
[visibleTodos]
|
|
298
|
+
); // ✅ List only re-renders when visibleTodos changes
|
|
299
|
+
|
|
300
|
+
return (
|
|
301
|
+
<div className={theme}>
|
|
302
|
+
{children}
|
|
303
|
+
</div>
|
|
304
|
+
);
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### 7. Optimize State Updater Functions
|
|
309
|
+
|
|
310
|
+
**Pattern from Context7:**
|
|
311
|
+
|
|
312
|
+
```javascript
|
|
313
|
+
// BEFORE: todos dependency causes unnecessary callback recreation
|
|
314
|
+
function TodoList() {
|
|
315
|
+
const [todos, setTodos] = useState([]);
|
|
316
|
+
|
|
317
|
+
const handleAddTodo = useCallback((text) => {
|
|
318
|
+
const newTodo = { id: nextId++, text };
|
|
319
|
+
setTodos([...todos, newTodo]); // ❌ Depends on todos
|
|
320
|
+
}, [todos]); // ❌ Callback recreated when todos changes
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
// AFTER: Use updater function
|
|
324
|
+
function TodoList() {
|
|
325
|
+
const [todos, setTodos] = useState([]);
|
|
326
|
+
|
|
327
|
+
const handleAddTodo = useCallback((text) => {
|
|
328
|
+
const newTodo = { id: nextId++, text };
|
|
329
|
+
setTodos(todos => [...todos, newTodo]); // ✅ No todos dependency
|
|
330
|
+
}, []); // ✅ Stable callback
|
|
331
|
+
}
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### 8. Optimize List Rendering
|
|
335
|
+
|
|
336
|
+
**Pattern from Context7:**
|
|
337
|
+
|
|
338
|
+
```javascript
|
|
339
|
+
// BEFORE: List items re-render on every parent change
|
|
340
|
+
function ReportList({ items }) {
|
|
341
|
+
return (
|
|
342
|
+
<div>
|
|
343
|
+
{items.map(item => (
|
|
344
|
+
<Report key={item.id} item={item} />
|
|
345
|
+
))}
|
|
346
|
+
</div>
|
|
347
|
+
);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
function Report({ item }) {
|
|
351
|
+
function handleClick() {
|
|
352
|
+
sendReport(item);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
return (
|
|
356
|
+
<figure>
|
|
357
|
+
<Chart onClick={handleClick} />
|
|
358
|
+
</figure>
|
|
359
|
+
);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
// AFTER: Memoize list items
|
|
363
|
+
import { memo } from 'react';
|
|
364
|
+
|
|
365
|
+
function ReportList({ items }) {
|
|
366
|
+
return (
|
|
367
|
+
<div>
|
|
368
|
+
{items.map(item => (
|
|
369
|
+
<Report key={item.id} item={item} />
|
|
370
|
+
))}
|
|
371
|
+
</div>
|
|
372
|
+
);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
const Report = memo(function Report({ item }) {
|
|
376
|
+
function handleClick() {
|
|
377
|
+
sendReport(item);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
return (
|
|
381
|
+
<figure>
|
|
382
|
+
<Chart onClick={handleClick} />
|
|
383
|
+
</figure>
|
|
384
|
+
);
|
|
385
|
+
});
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
## Common Anti-Patterns
|
|
389
|
+
|
|
390
|
+
### 1. Missing useMemo Return Value
|
|
391
|
+
|
|
392
|
+
```javascript
|
|
393
|
+
// ❌ INCORRECT: No return value
|
|
394
|
+
function Component({ data }) {
|
|
395
|
+
const processed = useMemo(() => {
|
|
396
|
+
data.forEach(item => console.log(item));
|
|
397
|
+
// Missing return!
|
|
398
|
+
}, [data]);
|
|
399
|
+
|
|
400
|
+
return <div>{processed}</div>; // Always undefined
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
// ✅ CORRECT: Explicit return
|
|
404
|
+
function Component({ data }) {
|
|
405
|
+
const processed = useMemo(() => {
|
|
406
|
+
return data.map(item => item.value);
|
|
407
|
+
}, [data]);
|
|
408
|
+
|
|
409
|
+
return <div>{processed.join(', ')}</div>;
|
|
410
|
+
}
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
### 2. Incomplete Dependencies
|
|
414
|
+
|
|
415
|
+
```javascript
|
|
416
|
+
// ❌ INCORRECT: Missing dependencies
|
|
417
|
+
function Component({ data, filter }) {
|
|
418
|
+
const filtered = useMemo(
|
|
419
|
+
() => data.filter(filter),
|
|
420
|
+
[data] // Missing 'filter' dependency
|
|
421
|
+
);
|
|
422
|
+
|
|
423
|
+
return <List items={filtered} />;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
// ✅ CORRECT: Complete dependencies
|
|
427
|
+
function Component({ data, filter }) {
|
|
428
|
+
const filtered = useMemo(
|
|
429
|
+
() => data.filter(filter),
|
|
430
|
+
[data, filter] // All dependencies included
|
|
431
|
+
);
|
|
432
|
+
|
|
433
|
+
return <List items={filtered} />;
|
|
434
|
+
}
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
### 3. Over-Memoization
|
|
438
|
+
|
|
439
|
+
```javascript
|
|
440
|
+
// ❌ UNNECESSARY: Memoizing primitive values
|
|
441
|
+
function Component({ count }) {
|
|
442
|
+
const doubled = useMemo(() => count * 2, [count]); // Overkill
|
|
443
|
+
return <div>{doubled}</div>;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
// ✅ BETTER: Simple calculation
|
|
447
|
+
function Component({ count }) {
|
|
448
|
+
const doubled = count * 2; // Fast enough
|
|
449
|
+
return <div>{doubled}</div>;
|
|
450
|
+
}
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
## Optimization Output
|
|
454
|
+
|
|
455
|
+
```
|
|
456
|
+
⚛️ React Performance Optimization Analysis
|
|
457
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
458
|
+
|
|
459
|
+
Components Analyzed: 45
|
|
460
|
+
Optimization Opportunities: 12
|
|
461
|
+
|
|
462
|
+
🎯 Hook Optimization
|
|
463
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
464
|
+
|
|
465
|
+
⚠️ TodoList.jsx (line 23)
|
|
466
|
+
Missing useMemo for expensive filterTodos call
|
|
467
|
+
💡 Recommendation: Wrap filterTodos in useMemo
|
|
468
|
+
⚡ Impact: Prevents 15 re-calculations per second
|
|
469
|
+
|
|
470
|
+
⚠️ ProductPage.jsx (line 45)
|
|
471
|
+
handleSubmit function recreated on every render
|
|
472
|
+
💡 Recommendation: Wrap in useCallback
|
|
473
|
+
⚡ Impact: Prevents Form re-render (150ms saved)
|
|
474
|
+
|
|
475
|
+
🔄 Rendering Optimization
|
|
476
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
477
|
+
|
|
478
|
+
⚠️ List.jsx
|
|
479
|
+
Component re-renders with same props
|
|
480
|
+
💡 Recommendation: Wrap with React.memo
|
|
481
|
+
⚡ Impact: 70% fewer renders (3000 → 900/min)
|
|
482
|
+
|
|
483
|
+
⚠️ Report.jsx
|
|
484
|
+
List items re-render unnecessarily
|
|
485
|
+
💡 Recommendation: Memoize Report component
|
|
486
|
+
⚡ Impact: Improves list scrolling performance
|
|
487
|
+
|
|
488
|
+
📦 Context Optimization
|
|
489
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
490
|
+
|
|
491
|
+
❌ AuthContext.Provider (App.jsx line 12)
|
|
492
|
+
Context value object recreated every render
|
|
493
|
+
💡 Recommendation: Memoize with useMemo
|
|
494
|
+
⚡ Impact: Critical - all 23 consumers re-render
|
|
495
|
+
|
|
496
|
+
⚠️ ThemeContext.Provider (App.jsx line 28)
|
|
497
|
+
login function not memoized
|
|
498
|
+
💡 Recommendation: Wrap with useCallback
|
|
499
|
+
⚡ Impact: Prevents theme consumers from re-rendering
|
|
500
|
+
|
|
501
|
+
🔗 Dependency Issues
|
|
502
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
503
|
+
|
|
504
|
+
❌ ChatRoom.jsx (line 34)
|
|
505
|
+
useEffect depends on object that changes every render
|
|
506
|
+
💡 Recommendation: Memoize options object
|
|
507
|
+
⚡ Impact: Prevents connection reconnects
|
|
508
|
+
|
|
509
|
+
⚠️ DataFetcher.jsx (line 67)
|
|
510
|
+
Missing filter dependency in useMemo
|
|
511
|
+
💡 Recommendation: Add filter to dependency array
|
|
512
|
+
⚡ Impact: Prevents stale data bugs
|
|
513
|
+
|
|
514
|
+
Summary
|
|
515
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
516
|
+
|
|
517
|
+
Total Optimizations: 12
|
|
518
|
+
|
|
519
|
+
🔴 Critical: 2 (fix immediately)
|
|
520
|
+
🟡 High Impact: 5 (recommended)
|
|
521
|
+
🟢 Low Impact: 5 (optional)
|
|
522
|
+
|
|
523
|
+
Estimated Performance Improvement: 40-60%
|
|
524
|
+
Estimated Render Reduction: 70%
|
|
525
|
+
|
|
526
|
+
Run with --aggressive to apply all optimizations
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
## Implementation
|
|
530
|
+
|
|
531
|
+
This command uses the **@react-frontend-engineer** agent:
|
|
532
|
+
|
|
533
|
+
1. Query Context7 for React performance patterns
|
|
534
|
+
2. Analyze component tree and render patterns
|
|
535
|
+
3. Detect expensive calculations and re-renders
|
|
536
|
+
4. Identify missing memoization opportunities
|
|
537
|
+
5. Validate hook dependencies
|
|
538
|
+
6. Generate optimization recommendations
|
|
539
|
+
7. Optionally apply automated fixes
|
|
540
|
+
|
|
541
|
+
## Best Practices Applied
|
|
542
|
+
|
|
543
|
+
Based on Context7 documentation from `/reactjs/react.dev`:
|
|
544
|
+
|
|
545
|
+
1. **useMemo** - Cache expensive calculations
|
|
546
|
+
2. **useCallback** - Stable function references
|
|
547
|
+
3. **React.memo** - Prevent component re-renders
|
|
548
|
+
4. **Context Optimization** - Memoize context values
|
|
549
|
+
5. **Dependency Management** - Complete dependency arrays
|
|
550
|
+
6. **JSX Memoization** - Cache complex JSX trees
|
|
551
|
+
7. **Updater Functions** - Reduce callback dependencies
|
|
552
|
+
8. **List Optimization** - Memoize list item components
|
|
553
|
+
|
|
554
|
+
## Related Commands
|
|
555
|
+
|
|
556
|
+
- `/nextjs:optimize` - Next.js specific optimizations
|
|
557
|
+
- `/perf:analyze` - Deep performance profiling
|
|
558
|
+
- `/bundle:optimize` - Bundle size optimization
|
|
559
|
+
- `/lighthouse:audit` - Lighthouse performance audit
|
|
560
|
+
|
|
561
|
+
## Troubleshooting
|
|
562
|
+
|
|
563
|
+
### useMemo Not Working
|
|
564
|
+
- Verify dependencies are complete
|
|
565
|
+
- Check if calculation is actually expensive
|
|
566
|
+
- Ensure return value is provided
|
|
567
|
+
|
|
568
|
+
### useCallback Causing Issues
|
|
569
|
+
- Verify all used variables are in dependencies
|
|
570
|
+
- Check if memoization is necessary
|
|
571
|
+
- Consider using updater functions
|
|
572
|
+
|
|
573
|
+
### React.memo Not Preventing Re-renders
|
|
574
|
+
- Verify props are stable (use useMemo/useCallback)
|
|
575
|
+
- Check if component uses context (context updates bypass memo)
|
|
576
|
+
- Consider custom comparison function
|
|
577
|
+
|
|
578
|
+
## Version History
|
|
579
|
+
|
|
580
|
+
- v2.0.0 - Initial Schema v2.0 release with Context7 integration
|
|
581
|
+
- React hooks optimization patterns
|
|
582
|
+
- Context value memoization
|
|
583
|
+
- Dependency array validation
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tailwindcss-design-system
|
|
3
|
+
type: task-management
|
|
4
|
+
category: ui
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# TailwindCSS Design System Command
|
|
8
|
+
|
|
9
|
+
Create a custom design system using TailwindCSS with utility classes and component patterns.
|
|
10
|
+
|
|
11
|
+
## Command
|
|
12
|
+
```
|
|
13
|
+
/ui:tailwind-system
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Purpose
|
|
17
|
+
Use the tailwindcss-expert agent to create a complete TailwindCSS design system with custom utilities, components, and theme configuration.
|
|
18
|
+
|
|
19
|
+
## Parameters
|
|
20
|
+
- `theme`: Color scheme (modern, minimal, vibrant, corporate)
|
|
21
|
+
- `utilities`: Custom utilities to generate (spacing, gradients, animations)
|
|
22
|
+
- `components`: Component patterns to create (buttons, cards, forms, layouts)
|
|
23
|
+
- `plugins`: TailwindCSS plugins to include (@tailwindcss/forms, @tailwindcss/typography)
|
|
24
|
+
|
|
25
|
+
## Agent Usage
|
|
26
|
+
```
|
|
27
|
+
Use the tailwindcss-expert agent to create a comprehensive TailwindCSS design system.
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Expected Outcome
|
|
31
|
+
- Custom tailwind.config.js with design tokens
|
|
32
|
+
- Component library with utility combinations
|
|
33
|
+
- Custom plugin for project-specific utilities
|
|
34
|
+
- Production-optimized build configuration
|
|
35
|
+
- Dark mode implementation
|
|
36
|
+
- Responsive design patterns
|
|
37
|
+
|
|
38
|
+
## Example Usage
|
|
39
|
+
```
|
|
40
|
+
## Required Documentation Access
|
|
41
|
+
|
|
42
|
+
**MANDATORY:** Before UI framework setup, query Context7 for best practices:
|
|
43
|
+
|
|
44
|
+
**Documentation Queries:**
|
|
45
|
+
- `mcp://context7/ui/bootstrap` - bootstrap best practices
|
|
46
|
+
- `mcp://context7/ui/tailwind` - tailwind best practices
|
|
47
|
+
- `mcp://context7/frontend/design-systems` - design systems best practices
|
|
48
|
+
- `mcp://context7/css/frameworks` - frameworks best practices
|
|
49
|
+
|
|
50
|
+
**Why This is Required:**
|
|
51
|
+
- Ensures adherence to current industry standards and best practices
|
|
52
|
+
- Prevents outdated or incorrect implementation patterns
|
|
53
|
+
- Provides access to latest framework/tool documentation
|
|
54
|
+
- Reduces errors from stale knowledge or assumptions
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
Task: Create TailwindCSS design system with custom color palette, typography scale, and component library
|
|
58
|
+
Agent: tailwindcss-expert
|
|
59
|
+
Parameters: theme=modern, utilities=custom-spacing,gradients,animations, components=buttons,cards,forms, plugins=forms,typography
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Related Agents
|
|
63
|
+
- react-ui-expert: For component-based alternative
|
|
64
|
+
- react-frontend-engineer: For React + Tailwind integration
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@claudeautopm/plugin-frameworks",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Complete frontend frameworks plugin with React, Vue, Tailwind CSS agents, UI commands, performance rules, and optimization scripts for ClaudeAutoPM",
|
|
5
|
+
"main": "plugin.json",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"files": [
|
|
8
|
+
"agents/",
|
|
9
|
+
"commands/",
|
|
10
|
+
"rules/",
|
|
11
|
+
"scripts/",
|
|
12
|
+
"plugin.json",
|
|
13
|
+
"README.md",
|
|
14
|
+
"LICENSE"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
18
|
+
"validate": "node -e \"require('./plugin.json')\" && echo 'plugin.json is valid'"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"claudeautopm",
|
|
22
|
+
"plugin",
|
|
23
|
+
"frameworks",
|
|
24
|
+
"react",
|
|
25
|
+
"vue",
|
|
26
|
+
"tailwind",
|
|
27
|
+
"tailwindcss",
|
|
28
|
+
"frontend",
|
|
29
|
+
"ui",
|
|
30
|
+
"components",
|
|
31
|
+
"hooks",
|
|
32
|
+
"performance"
|
|
33
|
+
],
|
|
34
|
+
"author": {
|
|
35
|
+
"name": "ClaudeAutoPM Team",
|
|
36
|
+
"email": "autopm@example.com"
|
|
37
|
+
},
|
|
38
|
+
"license": "MIT",
|
|
39
|
+
"repository": {
|
|
40
|
+
"type": "git",
|
|
41
|
+
"url": "git+https://github.com/rafeekpro/ClaudeAutoPM.git",
|
|
42
|
+
"directory": "packages/plugin-frameworks"
|
|
43
|
+
},
|
|
44
|
+
"homepage": "https://github.com/rafeekpro/ClaudeAutoPM/tree/main/packages/plugin-frameworks#readme",
|
|
45
|
+
"bugs": {
|
|
46
|
+
"url": "https://github.com/rafeekpro/ClaudeAutoPM/issues"
|
|
47
|
+
},
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">=16.0.0",
|
|
50
|
+
"npm": ">=8.0.0"
|
|
51
|
+
},
|
|
52
|
+
"peerDependencies": {
|
|
53
|
+
"@claudeautopm/plugin-core": "^2.0.0"
|
|
54
|
+
},
|
|
55
|
+
"publishConfig": {
|
|
56
|
+
"access": "public",
|
|
57
|
+
"registry": "https://registry.npmjs.org/"
|
|
58
|
+
}
|
|
59
|
+
}
|