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,692 @@
|
|
|
1
|
+
# nextjs:optimize
|
|
2
|
+
|
|
3
|
+
Optimize Next.js application for production with Context7-verified patterns for images, fonts, builds, and performance.
|
|
4
|
+
|
|
5
|
+
## Description
|
|
6
|
+
|
|
7
|
+
Comprehensive Next.js optimization following official Vercel best practices:
|
|
8
|
+
- Image optimization (next/image component)
|
|
9
|
+
- Font optimization (next/font)
|
|
10
|
+
- Build optimization and bundle analysis
|
|
11
|
+
- Production configuration
|
|
12
|
+
- Caching strategies
|
|
13
|
+
- Core Web Vitals improvement
|
|
14
|
+
|
|
15
|
+
## Required Documentation Access
|
|
16
|
+
|
|
17
|
+
**MANDATORY:** Before optimization, query Context7 for Next.js best practices:
|
|
18
|
+
|
|
19
|
+
**Documentation Queries:**
|
|
20
|
+
- `mcp://context7/nextjs/image-optimization` - Image component and optimization
|
|
21
|
+
- `mcp://context7/nextjs/font-optimization` - Font loading and optimization
|
|
22
|
+
- `mcp://context7/nextjs/performance` - Performance best practices
|
|
23
|
+
- `mcp://context7/nextjs/production` - Production configuration
|
|
24
|
+
- `mcp://context7/nextjs/app-router` - App Router optimization patterns
|
|
25
|
+
|
|
26
|
+
**Why This is Required:**
|
|
27
|
+
- Ensures optimization follows official Next.js documentation
|
|
28
|
+
- Applies latest performance patterns from Vercel
|
|
29
|
+
- Validates configuration and production setup
|
|
30
|
+
- Prevents anti-patterns and common mistakes
|
|
31
|
+
|
|
32
|
+
## Usage
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
/nextjs:optimize [options]
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Options
|
|
39
|
+
|
|
40
|
+
- `--scope <images|fonts|build|all>` - Optimization scope (default: all)
|
|
41
|
+
- `--analyze-only` - Analyze without applying changes
|
|
42
|
+
- `--output <file>` - Write optimization report
|
|
43
|
+
- `--app-router` - Optimize for App Router
|
|
44
|
+
- `--pages-router` - Optimize for Pages Router
|
|
45
|
+
- `--aggressive` - Apply aggressive optimizations
|
|
46
|
+
|
|
47
|
+
## Examples
|
|
48
|
+
|
|
49
|
+
### Full Application Optimization
|
|
50
|
+
```bash
|
|
51
|
+
/nextjs:optimize
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Image Optimization Only
|
|
55
|
+
```bash
|
|
56
|
+
/nextjs:optimize --scope images --output image-report.md
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Font Optimization
|
|
60
|
+
```bash
|
|
61
|
+
/nextjs:optimize --scope fonts
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Build Analysis
|
|
65
|
+
```bash
|
|
66
|
+
/nextjs:optimize --scope build --analyze-only
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Optimization Categories
|
|
70
|
+
|
|
71
|
+
### 1. Image Optimization with next/image
|
|
72
|
+
|
|
73
|
+
**Pattern from Context7 (/vercel/next.js):**
|
|
74
|
+
|
|
75
|
+
#### Remote Images
|
|
76
|
+
|
|
77
|
+
```tsx
|
|
78
|
+
// BEFORE: Standard img tag (no optimization)
|
|
79
|
+
<img
|
|
80
|
+
src="https://s3.amazonaws.com/my-bucket/profile.png"
|
|
81
|
+
alt="Picture of the author"
|
|
82
|
+
width={500}
|
|
83
|
+
height={500}
|
|
84
|
+
/>
|
|
85
|
+
|
|
86
|
+
// AFTER: Next.js Image component (optimized)
|
|
87
|
+
import Image from 'next/image'
|
|
88
|
+
|
|
89
|
+
export default function Page() {
|
|
90
|
+
return (
|
|
91
|
+
<Image
|
|
92
|
+
src="https://s3.amazonaws.com/my-bucket/profile.png"
|
|
93
|
+
alt="Picture of the author"
|
|
94
|
+
width={500}
|
|
95
|
+
height={500}
|
|
96
|
+
priority // For LCP images
|
|
97
|
+
sizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw"
|
|
98
|
+
/>
|
|
99
|
+
)
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Configuration in next.config.js:**
|
|
104
|
+
|
|
105
|
+
```js
|
|
106
|
+
module.exports = {
|
|
107
|
+
images: {
|
|
108
|
+
remotePatterns: [
|
|
109
|
+
{
|
|
110
|
+
protocol: 'https',
|
|
111
|
+
hostname: 's3.amazonaws.com',
|
|
112
|
+
port: '',
|
|
113
|
+
pathname: '/my-bucket/**',
|
|
114
|
+
search: '',
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Benefits:**
|
|
122
|
+
- Automatic image optimization (WebP/AVIF)
|
|
123
|
+
- Lazy loading by default
|
|
124
|
+
- Responsive image sizes
|
|
125
|
+
- Prevents layout shift (CLS)
|
|
126
|
+
- 40-60% smaller file sizes
|
|
127
|
+
|
|
128
|
+
#### Responsive Images with sizes
|
|
129
|
+
|
|
130
|
+
```javascript
|
|
131
|
+
import Image from 'next/image'
|
|
132
|
+
|
|
133
|
+
const Example = () => (
|
|
134
|
+
<div className="grid-element">
|
|
135
|
+
<Image
|
|
136
|
+
src="/example.png"
|
|
137
|
+
layout="fill"
|
|
138
|
+
sizes="(max-width: 768px) 100vw,
|
|
139
|
+
(max-width: 1200px) 50vw,
|
|
140
|
+
33vw"
|
|
141
|
+
priority={false} // Lazy load non-critical images
|
|
142
|
+
quality={75} // Default quality (1-100)
|
|
143
|
+
/>
|
|
144
|
+
</div>
|
|
145
|
+
)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Why sizes matters:**
|
|
149
|
+
- Prevents downloading oversized images
|
|
150
|
+
- Improves mobile performance significantly
|
|
151
|
+
- Reduces bandwidth usage by 50-70%
|
|
152
|
+
|
|
153
|
+
#### Background Images with getImageProps
|
|
154
|
+
|
|
155
|
+
```tsx
|
|
156
|
+
import { getImageProps } from 'next/image'
|
|
157
|
+
|
|
158
|
+
function getBackgroundImage(srcSet = '') {
|
|
159
|
+
const imageSet = srcSet
|
|
160
|
+
.split(', ')
|
|
161
|
+
.map((str) => {
|
|
162
|
+
const [url, dpi] = str.split(' ')
|
|
163
|
+
return `url("${url}") ${dpi}`
|
|
164
|
+
})
|
|
165
|
+
.join(', ')
|
|
166
|
+
return `image-set(${imageSet})`
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export default function Home() {
|
|
170
|
+
const {
|
|
171
|
+
props: { srcSet },
|
|
172
|
+
} = getImageProps({
|
|
173
|
+
alt: '',
|
|
174
|
+
width: 128,
|
|
175
|
+
height: 128,
|
|
176
|
+
src: '/img.png',
|
|
177
|
+
})
|
|
178
|
+
|
|
179
|
+
const backgroundImage = getBackgroundImage(srcSet)
|
|
180
|
+
const style = {
|
|
181
|
+
height: '100vh',
|
|
182
|
+
width: '100vw',
|
|
183
|
+
backgroundImage,
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
return (
|
|
187
|
+
<main style={style}>
|
|
188
|
+
<h1>Hello World</h1>
|
|
189
|
+
</main>
|
|
190
|
+
)
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
#### SVG Images
|
|
195
|
+
|
|
196
|
+
```jsx
|
|
197
|
+
// Enable SVG optimization (use with caution)
|
|
198
|
+
// next.config.js
|
|
199
|
+
module.exports = {
|
|
200
|
+
images: {
|
|
201
|
+
dangerouslyAllowSVG: true,
|
|
202
|
+
contentDispositionType: 'attachment',
|
|
203
|
+
contentSecurityPolicy: "default-src 'self'; script-src 'none'; sandbox;",
|
|
204
|
+
},
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// Component
|
|
208
|
+
<Image src="/my-image.svg" unoptimized />
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### 2. Font Optimization with next/font
|
|
212
|
+
|
|
213
|
+
**Pattern from Context7:**
|
|
214
|
+
|
|
215
|
+
#### Google Fonts
|
|
216
|
+
|
|
217
|
+
```typescript
|
|
218
|
+
// BEFORE: External font loading (layout shift)
|
|
219
|
+
import Head from 'next/head'
|
|
220
|
+
|
|
221
|
+
export default function Page() {
|
|
222
|
+
return (
|
|
223
|
+
<Head>
|
|
224
|
+
<link
|
|
225
|
+
href="https://fonts.googleapis.com/css2?family=Inter&display=swap"
|
|
226
|
+
rel="stylesheet"
|
|
227
|
+
/>
|
|
228
|
+
</Head>
|
|
229
|
+
)
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// AFTER: next/font (self-hosted, zero layout shift)
|
|
233
|
+
import { Inter } from 'next/font/google'
|
|
234
|
+
|
|
235
|
+
const inter = Inter({
|
|
236
|
+
subsets: ['latin'],
|
|
237
|
+
display: 'swap',
|
|
238
|
+
preload: true,
|
|
239
|
+
})
|
|
240
|
+
|
|
241
|
+
export default function RootLayout({ children }) {
|
|
242
|
+
return (
|
|
243
|
+
<html lang="en" className={inter.className}>
|
|
244
|
+
<body>{children}</body>
|
|
245
|
+
</html>
|
|
246
|
+
)
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
**Benefits:**
|
|
251
|
+
- Self-hosted fonts (no external requests)
|
|
252
|
+
- Zero layout shift (CLS = 0)
|
|
253
|
+
- Automatic font subsetting
|
|
254
|
+
- Optimal loading strategy
|
|
255
|
+
|
|
256
|
+
#### Variable Fonts
|
|
257
|
+
|
|
258
|
+
```typescript
|
|
259
|
+
// Variable font (recommended)
|
|
260
|
+
import { Inter } from 'next/font/google'
|
|
261
|
+
|
|
262
|
+
const inter = Inter({
|
|
263
|
+
subsets: ['latin'],
|
|
264
|
+
variable: '--font-inter',
|
|
265
|
+
})
|
|
266
|
+
|
|
267
|
+
export default function RootLayout({ children }) {
|
|
268
|
+
return (
|
|
269
|
+
<html lang="en" className={inter.variable}>
|
|
270
|
+
<body>{children}</body>
|
|
271
|
+
</html>
|
|
272
|
+
)
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
```css
|
|
277
|
+
/* Use CSS variable */
|
|
278
|
+
.text {
|
|
279
|
+
font-family: var(--font-inter);
|
|
280
|
+
font-weight: 200;
|
|
281
|
+
font-style: italic;
|
|
282
|
+
}
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
#### Non-Variable Fonts (e.g., Roboto)
|
|
286
|
+
|
|
287
|
+
```typescript
|
|
288
|
+
import { Roboto } from 'next/font/google'
|
|
289
|
+
|
|
290
|
+
const roboto = Roboto({
|
|
291
|
+
weight: ['400', '700'], // Multiple weights
|
|
292
|
+
subsets: ['latin'],
|
|
293
|
+
display: 'swap',
|
|
294
|
+
})
|
|
295
|
+
|
|
296
|
+
export default function RootLayout({ children }) {
|
|
297
|
+
return (
|
|
298
|
+
<html lang="en" className={roboto.className}>
|
|
299
|
+
<body>{children}</body>
|
|
300
|
+
</html>
|
|
301
|
+
)
|
|
302
|
+
}
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
#### Local Fonts
|
|
306
|
+
|
|
307
|
+
```typescript
|
|
308
|
+
// Single font file
|
|
309
|
+
import localFont from 'next/font/local'
|
|
310
|
+
|
|
311
|
+
const myFont = localFont({
|
|
312
|
+
src: './my-font.woff2',
|
|
313
|
+
display: 'swap',
|
|
314
|
+
})
|
|
315
|
+
|
|
316
|
+
// Multiple font files (font family)
|
|
317
|
+
const roboto = localFont({
|
|
318
|
+
src: [
|
|
319
|
+
{
|
|
320
|
+
path: './Roboto-Regular.woff2',
|
|
321
|
+
weight: '400',
|
|
322
|
+
style: 'normal',
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
path: './Roboto-Italic.woff2',
|
|
326
|
+
weight: '400',
|
|
327
|
+
style: 'italic',
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
path: './Roboto-Bold.woff2',
|
|
331
|
+
weight: '700',
|
|
332
|
+
style: 'normal',
|
|
333
|
+
},
|
|
334
|
+
],
|
|
335
|
+
})
|
|
336
|
+
|
|
337
|
+
export default function RootLayout({ children }) {
|
|
338
|
+
return (
|
|
339
|
+
<html lang="en" className={roboto.className}>
|
|
340
|
+
<body>{children}</body>
|
|
341
|
+
</html>
|
|
342
|
+
)
|
|
343
|
+
}
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### 3. Build Optimization
|
|
347
|
+
|
|
348
|
+
**next.config.js Configuration:**
|
|
349
|
+
|
|
350
|
+
```js
|
|
351
|
+
/** @type {import('next').NextConfig} */
|
|
352
|
+
const nextConfig = {
|
|
353
|
+
// Production optimizations
|
|
354
|
+
compress: true, // Enable gzip compression
|
|
355
|
+
poweredByHeader: false, // Remove X-Powered-By header
|
|
356
|
+
|
|
357
|
+
// Image optimization
|
|
358
|
+
images: {
|
|
359
|
+
formats: ['image/avif', 'image/webp'], // Modern formats
|
|
360
|
+
deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
|
|
361
|
+
imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
|
|
362
|
+
minimumCacheTTL: 60,
|
|
363
|
+
dangerouslyAllowSVG: false, // Security
|
|
364
|
+
contentDispositionType: 'attachment',
|
|
365
|
+
},
|
|
366
|
+
|
|
367
|
+
// Compiler optimizations
|
|
368
|
+
compiler: {
|
|
369
|
+
removeConsole: process.env.NODE_ENV === 'production',
|
|
370
|
+
},
|
|
371
|
+
|
|
372
|
+
// Experimental features
|
|
373
|
+
experimental: {
|
|
374
|
+
optimizePackageImports: ['@mui/material', '@chakra-ui/react'],
|
|
375
|
+
},
|
|
376
|
+
|
|
377
|
+
// Bundle analyzer
|
|
378
|
+
webpack: (config, { isServer }) => {
|
|
379
|
+
if (!isServer) {
|
|
380
|
+
// Client-side only optimizations
|
|
381
|
+
config.optimization.splitChunks = {
|
|
382
|
+
chunks: 'all',
|
|
383
|
+
cacheGroups: {
|
|
384
|
+
default: false,
|
|
385
|
+
vendors: false,
|
|
386
|
+
commons: {
|
|
387
|
+
name: 'commons',
|
|
388
|
+
chunks: 'all',
|
|
389
|
+
minChunks: 2,
|
|
390
|
+
},
|
|
391
|
+
},
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
return config
|
|
395
|
+
},
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
module.exports = nextConfig
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
### 4. Production Configuration
|
|
402
|
+
|
|
403
|
+
**Environment Variables:**
|
|
404
|
+
|
|
405
|
+
```bash
|
|
406
|
+
# .env.production
|
|
407
|
+
NEXT_PUBLIC_API_URL=https://api.production.com
|
|
408
|
+
NODE_ENV=production
|
|
409
|
+
|
|
410
|
+
# Performance
|
|
411
|
+
NEXT_TELEMETRY_DISABLED=1
|
|
412
|
+
|
|
413
|
+
# Build optimizations
|
|
414
|
+
NEXT_PRIVATE_STANDALONE=true
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
**Package.json Scripts:**
|
|
418
|
+
|
|
419
|
+
```json
|
|
420
|
+
{
|
|
421
|
+
"scripts": {
|
|
422
|
+
"dev": "next dev",
|
|
423
|
+
"build": "next build",
|
|
424
|
+
"start": "next start",
|
|
425
|
+
"analyze": "ANALYZE=true next build",
|
|
426
|
+
"lint": "next lint",
|
|
427
|
+
"type-check": "tsc --noEmit"
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### 5. Caching Strategies
|
|
433
|
+
|
|
434
|
+
**App Router Caching:**
|
|
435
|
+
|
|
436
|
+
```typescript
|
|
437
|
+
// Static page (cached indefinitely)
|
|
438
|
+
export const revalidate = false
|
|
439
|
+
|
|
440
|
+
// ISR (revalidate every hour)
|
|
441
|
+
export const revalidate = 3600
|
|
442
|
+
|
|
443
|
+
// Dynamic page (no cache)
|
|
444
|
+
export const dynamic = 'force-dynamic'
|
|
445
|
+
|
|
446
|
+
// Fetch with custom cache
|
|
447
|
+
async function getData() {
|
|
448
|
+
const res = await fetch('https://api.example.com/data', {
|
|
449
|
+
next: { revalidate: 3600 },
|
|
450
|
+
})
|
|
451
|
+
return res.json()
|
|
452
|
+
}
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
**Pages Router Caching:**
|
|
456
|
+
|
|
457
|
+
```typescript
|
|
458
|
+
// Static generation with revalidation
|
|
459
|
+
export async function getStaticProps() {
|
|
460
|
+
const data = await fetchData()
|
|
461
|
+
|
|
462
|
+
return {
|
|
463
|
+
props: { data },
|
|
464
|
+
revalidate: 3600, // ISR every hour
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
// Server-side rendering (no cache)
|
|
469
|
+
export async function getServerSideProps() {
|
|
470
|
+
const data = await fetchData()
|
|
471
|
+
|
|
472
|
+
return {
|
|
473
|
+
props: { data },
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
### 6. Core Web Vitals Optimization
|
|
479
|
+
|
|
480
|
+
**Largest Contentful Paint (LCP):**
|
|
481
|
+
|
|
482
|
+
```tsx
|
|
483
|
+
// Prioritize above-the-fold images
|
|
484
|
+
<Image
|
|
485
|
+
src="/hero.jpg"
|
|
486
|
+
priority // Preload this image
|
|
487
|
+
alt="Hero"
|
|
488
|
+
width={1920}
|
|
489
|
+
height={1080}
|
|
490
|
+
/>
|
|
491
|
+
|
|
492
|
+
// Preload critical resources
|
|
493
|
+
import Head from 'next/head'
|
|
494
|
+
|
|
495
|
+
<Head>
|
|
496
|
+
<link
|
|
497
|
+
rel="preload"
|
|
498
|
+
href="/fonts/inter-var.woff2"
|
|
499
|
+
as="font"
|
|
500
|
+
type="font/woff2"
|
|
501
|
+
crossOrigin="anonymous"
|
|
502
|
+
/>
|
|
503
|
+
</Head>
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
**Cumulative Layout Shift (CLS):**
|
|
507
|
+
|
|
508
|
+
```tsx
|
|
509
|
+
// Always specify image dimensions
|
|
510
|
+
<Image
|
|
511
|
+
src="/profile.jpg"
|
|
512
|
+
width={400}
|
|
513
|
+
height={400}
|
|
514
|
+
alt="Profile"
|
|
515
|
+
/>
|
|
516
|
+
|
|
517
|
+
// Use font display strategies
|
|
518
|
+
const inter = Inter({
|
|
519
|
+
subsets: ['latin'],
|
|
520
|
+
display: 'swap', // or 'optional' for best CLS
|
|
521
|
+
})
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
**First Input Delay (FID):**
|
|
525
|
+
|
|
526
|
+
```tsx
|
|
527
|
+
// Code splitting for heavy components
|
|
528
|
+
import dynamic from 'next/dynamic'
|
|
529
|
+
|
|
530
|
+
const HeavyComponent = dynamic(() => import('./HeavyComponent'), {
|
|
531
|
+
loading: () => <p>Loading...</p>,
|
|
532
|
+
ssr: false, // Client-side only
|
|
533
|
+
})
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
## Optimization Output
|
|
537
|
+
|
|
538
|
+
```
|
|
539
|
+
🚀 Next.js Optimization Analysis
|
|
540
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
541
|
+
|
|
542
|
+
Project: Next.js 15.1.8 (App Router)
|
|
543
|
+
Pages Analyzed: 23
|
|
544
|
+
Components Analyzed: 156
|
|
545
|
+
|
|
546
|
+
📸 Image Optimization
|
|
547
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
548
|
+
|
|
549
|
+
⚠️ Found 15 <img> tags (should use next/image)
|
|
550
|
+
Files: /app/profile/page.tsx, /app/gallery/page.tsx
|
|
551
|
+
💡 Recommendation: Replace with Image component
|
|
552
|
+
⚡ Impact: 50-70% size reduction, lazy loading
|
|
553
|
+
|
|
554
|
+
⚠️ Missing sizes prop on 8 images
|
|
555
|
+
💡 Recommendation: Add responsive sizes
|
|
556
|
+
⚡ Impact: Prevent oversized image downloads
|
|
557
|
+
|
|
558
|
+
❌ Hero image not prioritized (/app/page.tsx)
|
|
559
|
+
💡 Recommendation: Add priority prop
|
|
560
|
+
⚡ Impact: Improve LCP by 1.2s
|
|
561
|
+
|
|
562
|
+
⚠️ Remote images not configured
|
|
563
|
+
💡 Recommendation: Add remotePatterns to next.config.js
|
|
564
|
+
⚡ Impact: Enable optimization for external images
|
|
565
|
+
|
|
566
|
+
🔤 Font Optimization
|
|
567
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
568
|
+
|
|
569
|
+
❌ Using Google Fonts CDN (layout/page.tsx)
|
|
570
|
+
💡 Recommendation: Use next/font/google
|
|
571
|
+
⚡ Impact: Eliminate layout shift (CLS), self-host fonts
|
|
572
|
+
|
|
573
|
+
✅ Inter font properly configured (app/layout.tsx)
|
|
574
|
+
✅ Using variable fonts for optimal loading
|
|
575
|
+
|
|
576
|
+
📦 Build Optimization
|
|
577
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
578
|
+
|
|
579
|
+
Current Bundle Size: 342 KB (first load JS)
|
|
580
|
+
Target: < 200 KB
|
|
581
|
+
|
|
582
|
+
⚠️ Large bundle detected
|
|
583
|
+
Top contributors:
|
|
584
|
+
- @mui/material: 128 KB
|
|
585
|
+
- lodash: 45 KB
|
|
586
|
+
- moment: 38 KB
|
|
587
|
+
|
|
588
|
+
💡 Recommendations:
|
|
589
|
+
1. Enable optimizePackageImports for @mui
|
|
590
|
+
2. Replace lodash with lodash-es (tree-shakeable)
|
|
591
|
+
3. Replace moment with date-fns (92% smaller)
|
|
592
|
+
⚡ Impact: Reduce bundle by 180 KB (53%)
|
|
593
|
+
|
|
594
|
+
⚠️ No code splitting detected
|
|
595
|
+
💡 Recommendation: Use dynamic imports
|
|
596
|
+
⚡ Impact: Faster initial load
|
|
597
|
+
|
|
598
|
+
⚡ Performance Metrics
|
|
599
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
600
|
+
|
|
601
|
+
Current Core Web Vitals:
|
|
602
|
+
- LCP: 3.2s (❌ needs improvement, target: < 2.5s)
|
|
603
|
+
- FID: 80ms (✅ good, target: < 100ms)
|
|
604
|
+
- CLS: 0.18 (⚠️ needs improvement, target: < 0.1)
|
|
605
|
+
|
|
606
|
+
Optimization Impact:
|
|
607
|
+
- LCP: 3.2s → 1.8s (1.4s improvement)
|
|
608
|
+
- CLS: 0.18 → 0.02 (0.16 improvement)
|
|
609
|
+
|
|
610
|
+
🔧 Configuration
|
|
611
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
612
|
+
|
|
613
|
+
⚠️ Missing production optimizations
|
|
614
|
+
💡 Recommendations:
|
|
615
|
+
1. Enable compress: true
|
|
616
|
+
2. Set poweredByHeader: false
|
|
617
|
+
3. Configure removeConsole in production
|
|
618
|
+
4. Add cache headers
|
|
619
|
+
|
|
620
|
+
Summary
|
|
621
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
622
|
+
|
|
623
|
+
Total Optimizations: 18
|
|
624
|
+
|
|
625
|
+
🔴 Critical: 3 (fix immediately)
|
|
626
|
+
🟡 High Impact: 8 (recommended)
|
|
627
|
+
🟢 Low Impact: 7 (optional)
|
|
628
|
+
|
|
629
|
+
Estimated Performance Improvement:
|
|
630
|
+
- Bundle size: -53% (342 KB → 161 KB)
|
|
631
|
+
- LCP: -44% (3.2s → 1.8s)
|
|
632
|
+
- CLS: -89% (0.18 → 0.02)
|
|
633
|
+
- Image bandwidth: -60%
|
|
634
|
+
|
|
635
|
+
Run with --aggressive to apply all optimizations
|
|
636
|
+
```
|
|
637
|
+
|
|
638
|
+
## Implementation
|
|
639
|
+
|
|
640
|
+
This command uses the **@react-frontend-engineer** agent with Next.js expertise:
|
|
641
|
+
|
|
642
|
+
1. Query Context7 for Next.js optimization patterns
|
|
643
|
+
2. Analyze next.config.js configuration
|
|
644
|
+
3. Scan for image and font usage
|
|
645
|
+
4. Analyze bundle size and composition
|
|
646
|
+
5. Check Core Web Vitals metrics
|
|
647
|
+
6. Generate optimization recommendations
|
|
648
|
+
7. Optionally apply automated fixes
|
|
649
|
+
|
|
650
|
+
## Best Practices Applied
|
|
651
|
+
|
|
652
|
+
Based on Context7 documentation from `/vercel/next.js`:
|
|
653
|
+
|
|
654
|
+
1. **next/image** - Automatic image optimization
|
|
655
|
+
2. **next/font** - Self-hosted font optimization
|
|
656
|
+
3. **Build Configuration** - Production-ready settings
|
|
657
|
+
4. **Caching Strategies** - ISR and static generation
|
|
658
|
+
5. **Code Splitting** - Dynamic imports
|
|
659
|
+
6. **Core Web Vitals** - LCP, FID, CLS optimization
|
|
660
|
+
7. **Bundle Analysis** - Size reduction techniques
|
|
661
|
+
8. **Security** - Header configuration
|
|
662
|
+
|
|
663
|
+
## Related Commands
|
|
664
|
+
|
|
665
|
+
- `/react:optimize` - React component optimization
|
|
666
|
+
- `/bundle:analyze` - Deep bundle analysis
|
|
667
|
+
- `/lighthouse:audit` - Lighthouse performance audit
|
|
668
|
+
- `/vercel:deploy` - Vercel deployment optimization
|
|
669
|
+
|
|
670
|
+
## Troubleshooting
|
|
671
|
+
|
|
672
|
+
### Images Not Optimizing
|
|
673
|
+
- Check remotePatterns in next.config.js
|
|
674
|
+
- Verify Image component props (width, height)
|
|
675
|
+
- Ensure src is accessible
|
|
676
|
+
|
|
677
|
+
### Fonts Causing Layout Shift
|
|
678
|
+
- Use display: 'swap' or 'optional'
|
|
679
|
+
- Apply font to html element
|
|
680
|
+
- Preload critical fonts
|
|
681
|
+
|
|
682
|
+
### Large Bundle Size
|
|
683
|
+
- Enable optimizePackageImports
|
|
684
|
+
- Use dynamic imports
|
|
685
|
+
- Replace heavy dependencies
|
|
686
|
+
|
|
687
|
+
## Version History
|
|
688
|
+
|
|
689
|
+
- v2.0.0 - Initial Schema v2.0 release with Context7 integration
|
|
690
|
+
- Next.js 15+ App Router support
|
|
691
|
+
- Image and font optimization patterns
|
|
692
|
+
- Core Web Vitals focus
|