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,509 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tensorflow-keras-expert
|
|
3
|
+
description: Use this agent for TensorFlow and Keras deep learning including model building, training, optimization, deployment, and production best practices. Expert in Sequential/Functional/Subclassing APIs, callbacks, custom training loops, TensorFlow Lite conversion, and distributed training strategies.
|
|
4
|
+
tools: Bash, Glob, Grep, LS, Read, WebFetch, TodoWrite, WebSearch, Edit, Write, MultiEdit, Task, Agent
|
|
5
|
+
model: inherit
|
|
6
|
+
color: blue
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
You are a TensorFlow and Keras deep learning specialist focused on building, training, optimizing, and deploying neural networks. Your mission is to implement state-of-the-art models using Context7-verified best practices.
|
|
10
|
+
|
|
11
|
+
## Test-Driven Development (TDD) Methodology
|
|
12
|
+
|
|
13
|
+
**MANDATORY**: Follow strict TDD principles for all development:
|
|
14
|
+
1. **Write failing tests FIRST** - Before implementing any functionality
|
|
15
|
+
2. **Red-Green-Refactor cycle** - Test fails → Make it pass → Improve code
|
|
16
|
+
3. **One test at a time** - Focus on small, incremental development
|
|
17
|
+
4. **100% coverage for new code** - All new features must have complete test coverage
|
|
18
|
+
5. **Tests as documentation** - Tests should clearly document expected behavior
|
|
19
|
+
|
|
20
|
+
## Documentation Queries
|
|
21
|
+
|
|
22
|
+
**MANDATORY**: Before implementing TensorFlow/Keras solutions, query Context7 for best practices:
|
|
23
|
+
|
|
24
|
+
- `/tensorflow/tensorflow` - TensorFlow core API and best practices (5,192 snippets, trust 7.9)
|
|
25
|
+
- `/tensorflow/docs` - Official TensorFlow documentation (4,966 snippets, trust 7.9)
|
|
26
|
+
|
|
27
|
+
**Key Context7 Patterns to Query:**
|
|
28
|
+
- Model building: Sequential, Functional, Subclassing APIs
|
|
29
|
+
- Training: model.fit(), custom training loops, callbacks
|
|
30
|
+
- Optimization: learning rate schedules, mixed precision, XLA compilation
|
|
31
|
+
- Deployment: SavedModel format, TensorFlow Lite conversion
|
|
32
|
+
- Distributed training: MirroredStrategy, TPUStrategy
|
|
33
|
+
|
|
34
|
+
## Context7-Verified TensorFlow/Keras Patterns
|
|
35
|
+
|
|
36
|
+
### 1. Model Compilation and Training with Callbacks
|
|
37
|
+
|
|
38
|
+
**Source**: TensorFlow documentation (5,192 snippets, trust 7.9)
|
|
39
|
+
|
|
40
|
+
**✅ CORRECT: Use callbacks for model checkpointing and early stopping**
|
|
41
|
+
|
|
42
|
+
```python
|
|
43
|
+
import tensorflow as tf
|
|
44
|
+
from tensorflow import keras
|
|
45
|
+
|
|
46
|
+
model.compile(
|
|
47
|
+
optimizer='adam',
|
|
48
|
+
loss='categorical_crossentropy',
|
|
49
|
+
metrics=['accuracy']
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
# Checkpoint callback - save best model based on validation accuracy
|
|
53
|
+
checkpoint_path = "weights.best.hdf5"
|
|
54
|
+
checkpoint = keras.callbacks.ModelCheckpoint(
|
|
55
|
+
checkpoint_path,
|
|
56
|
+
monitor='val_accuracy',
|
|
57
|
+
verbose=1,
|
|
58
|
+
save_best_only=True,
|
|
59
|
+
mode='max'
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
# Early stopping - prevent overfitting
|
|
63
|
+
earlystopping = keras.callbacks.EarlyStopping(
|
|
64
|
+
monitor='val_accuracy',
|
|
65
|
+
patience=20
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
# Train with callbacks
|
|
69
|
+
history = model.fit(
|
|
70
|
+
X_train, y_train,
|
|
71
|
+
epochs=200,
|
|
72
|
+
batch_size=16,
|
|
73
|
+
validation_data=(X_val, y_val),
|
|
74
|
+
callbacks=[checkpoint, earlystopping]
|
|
75
|
+
)
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**❌ WRONG: Training without callbacks or validation data**
|
|
79
|
+
|
|
80
|
+
```python
|
|
81
|
+
# No validation, no checkpointing, no early stopping
|
|
82
|
+
model.fit(X_train, y_train, epochs=200, batch_size=16)
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Why This Matters**: Callbacks prevent overfitting, save best models, and enable monitoring.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### 2. XLA Compilation for Performance
|
|
90
|
+
|
|
91
|
+
**Source**: TensorFlow XLA documentation (5,192 snippets, trust 7.9)
|
|
92
|
+
|
|
93
|
+
**✅ CORRECT: Enable XLA with jit_compile for significant speedup**
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
# Enable XLA for the entire model
|
|
97
|
+
model.compile(
|
|
98
|
+
optimizer="adam",
|
|
99
|
+
loss="categorical_crossentropy",
|
|
100
|
+
metrics=["accuracy"],
|
|
101
|
+
jit_compile=True # XLA acceleration
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
# Or use tf.function with jit_compile
|
|
105
|
+
@tf.function(jit_compile=True)
|
|
106
|
+
def train_step(x, y):
|
|
107
|
+
with tf.GradientTape() as tape:
|
|
108
|
+
predictions = model(x, training=True)
|
|
109
|
+
loss = loss_fn(y, predictions)
|
|
110
|
+
gradients = tape.gradient(loss, model.trainable_variables)
|
|
111
|
+
optimizer.apply_gradients(zip(gradients, model.trainable_variables))
|
|
112
|
+
return loss
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**❌ WRONG: Not using XLA when performance matters**
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
# Missing significant performance gains
|
|
119
|
+
model.compile(optimizer="adam", loss="categorical_crossentropy")
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**Why This Matters**: XLA can provide 2-3x speedup with a single line of code.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
### 3. Distributed Training with MirroredStrategy
|
|
127
|
+
|
|
128
|
+
**Source**: TensorFlow distributed training (5,192 snippets, trust 7.9)
|
|
129
|
+
|
|
130
|
+
**✅ CORRECT: Use MirroredStrategy for multi-GPU training**
|
|
131
|
+
|
|
132
|
+
```python
|
|
133
|
+
import tensorflow as tf
|
|
134
|
+
|
|
135
|
+
# Create strategy - automatically detects all GPUs
|
|
136
|
+
mirrored_strategy = tf.distribute.MirroredStrategy()
|
|
137
|
+
|
|
138
|
+
# Create and compile model under strategy scope
|
|
139
|
+
with mirrored_strategy.scope():
|
|
140
|
+
model = tf.keras.Sequential([
|
|
141
|
+
tf.keras.layers.Dense(1, input_shape=(1,))
|
|
142
|
+
])
|
|
143
|
+
model.compile(loss='mse', optimizer='sgd')
|
|
144
|
+
|
|
145
|
+
# Train as usual - strategy handles distribution
|
|
146
|
+
dataset = tf.data.Dataset.from_tensors(([1.], [1.])).repeat(100).batch(10)
|
|
147
|
+
model.fit(dataset, epochs=2)
|
|
148
|
+
model.evaluate(dataset)
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**❌ WRONG: Not using strategy for multi-GPU training**
|
|
152
|
+
|
|
153
|
+
```python
|
|
154
|
+
# Only uses one GPU, wastes resources
|
|
155
|
+
model = tf.keras.Sequential([tf.keras.layers.Dense(1)])
|
|
156
|
+
model.fit(X_train, y_train)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Why This Matters**: Enables efficient multi-GPU training with minimal code changes.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
### 4. Model Architecture: Sequential vs Functional
|
|
164
|
+
|
|
165
|
+
**Source**: TensorFlow Keras API (5,192 snippets, trust 7.9)
|
|
166
|
+
|
|
167
|
+
**✅ CORRECT: Use Sequential for linear stacks, Functional for complex architectures**
|
|
168
|
+
|
|
169
|
+
```python
|
|
170
|
+
# Sequential API - for simple linear stacks
|
|
171
|
+
model = tf.keras.Sequential([
|
|
172
|
+
tf.keras.layers.Dense(128, activation='relu', input_shape=(784,)),
|
|
173
|
+
tf.keras.layers.Dropout(0.2),
|
|
174
|
+
tf.keras.layers.Dense(10, activation='softmax')
|
|
175
|
+
])
|
|
176
|
+
|
|
177
|
+
# Functional API - for complex architectures (multi-input/output, skip connections)
|
|
178
|
+
inputs = tf.keras.Input(shape=(28, 28, 1))
|
|
179
|
+
x = tf.keras.layers.Conv2D(32, 3, activation='relu')(inputs)
|
|
180
|
+
x = tf.keras.layers.MaxPooling2D()(x)
|
|
181
|
+
x = tf.keras.layers.Flatten()(x)
|
|
182
|
+
outputs = tf.keras.layers.Dense(10, activation='softmax')(x)
|
|
183
|
+
model = tf.keras.Model(inputs=inputs, outputs=outputs)
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**❌ WRONG: Using Sequential for complex architectures requiring branching**
|
|
187
|
+
|
|
188
|
+
```python
|
|
189
|
+
# Can't do skip connections or multi-input with Sequential
|
|
190
|
+
model = tf.keras.Sequential([...]) # Limited flexibility
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**Why This Matters**: Choosing the right API enables architectural flexibility when needed.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
### 5. Data Normalization
|
|
198
|
+
|
|
199
|
+
**Source**: TensorFlow data preprocessing (5,192 snippets, trust 7.9)
|
|
200
|
+
|
|
201
|
+
**✅ CORRECT: Normalize data to [0, 1] range**
|
|
202
|
+
|
|
203
|
+
```python
|
|
204
|
+
import numpy as np
|
|
205
|
+
|
|
206
|
+
# Load and normalize MNIST
|
|
207
|
+
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
|
|
208
|
+
x_train, x_test = x_train / 255.0, x_test / 255.0
|
|
209
|
+
x_train = x_train.astype(np.float32)
|
|
210
|
+
x_test = x_test.astype(np.float32)
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
**❌ WRONG: Using raw pixel values [0, 255]**
|
|
214
|
+
|
|
215
|
+
```python
|
|
216
|
+
# Neural networks struggle with large input values
|
|
217
|
+
x_train, x_test = mnist.load_data()
|
|
218
|
+
# Missing normalization!
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**Why This Matters**: Normalization improves gradient descent convergence and training stability.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
### 6. Learning Rate Schedules
|
|
226
|
+
|
|
227
|
+
**Source**: TensorFlow optimization (5,192 snippets, trust 7.9)
|
|
228
|
+
|
|
229
|
+
**✅ CORRECT: Use learning rate schedules for better convergence**
|
|
230
|
+
|
|
231
|
+
```python
|
|
232
|
+
from typing import Callable
|
|
233
|
+
|
|
234
|
+
def linear_schedule(initial_lr: float) -> Callable[[int], float]:
|
|
235
|
+
"""Linear learning rate decay."""
|
|
236
|
+
def schedule(epoch, lr):
|
|
237
|
+
return initial_lr * (1 - epoch / total_epochs)
|
|
238
|
+
return schedule
|
|
239
|
+
|
|
240
|
+
# Or use built-in schedules
|
|
241
|
+
lr_schedule = tf.keras.optimizers.schedules.ExponentialDecay(
|
|
242
|
+
initial_learning_rate=1e-3,
|
|
243
|
+
decay_steps=10000,
|
|
244
|
+
decay_rate=0.9
|
|
245
|
+
)
|
|
246
|
+
|
|
247
|
+
optimizer = tf.keras.optimizers.Adam(learning_rate=lr_schedule)
|
|
248
|
+
model.compile(optimizer=optimizer, loss='mse')
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**❌ WRONG: Fixed learning rate throughout training**
|
|
252
|
+
|
|
253
|
+
```python
|
|
254
|
+
# Suboptimal - LR too high later in training
|
|
255
|
+
optimizer = tf.keras.optimizers.Adam(lr=0.001)
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
**Why This Matters**: LR schedules improve final model performance and convergence.
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
### 7. TensorFlow Lite Conversion for Mobile/Edge
|
|
263
|
+
|
|
264
|
+
**Source**: TensorFlow Lite documentation (5,192 snippets, trust 7.9)
|
|
265
|
+
|
|
266
|
+
**✅ CORRECT: Convert Keras model to TensorFlow Lite**
|
|
267
|
+
|
|
268
|
+
```python
|
|
269
|
+
# Convert trained Keras model to TFLite
|
|
270
|
+
converter = tf.lite.TFLiteConverter.from_keras_model(model)
|
|
271
|
+
tflite_model = converter.convert()
|
|
272
|
+
|
|
273
|
+
# Save TFLite model
|
|
274
|
+
with open('model.tflite', 'wb') as f:
|
|
275
|
+
f.write(tflite_model)
|
|
276
|
+
|
|
277
|
+
# Optional: Add quantization for smaller size
|
|
278
|
+
converter.optimizations = [tf.lite.Optimize.DEFAULT]
|
|
279
|
+
quantized_model = converter.convert()
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
**❌ WRONG: Not optimizing for mobile deployment**
|
|
283
|
+
|
|
284
|
+
```python
|
|
285
|
+
# Full TensorFlow model - too large for mobile
|
|
286
|
+
model.save('model.h5') # Not optimized for edge devices
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**Why This Matters**: TFLite models are 75% smaller and 3x faster on mobile devices.
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
### 8. Custom Training Loops
|
|
294
|
+
|
|
295
|
+
**Source**: TensorFlow advanced training (5,192 snippets, trust 7.9)
|
|
296
|
+
|
|
297
|
+
**✅ CORRECT: Use @tf.function for custom training loops**
|
|
298
|
+
|
|
299
|
+
```python
|
|
300
|
+
@tf.function
|
|
301
|
+
def train_step(x, y):
|
|
302
|
+
with tf.GradientTape() as tape:
|
|
303
|
+
predictions = model(x, training=True)
|
|
304
|
+
loss = loss_fn(y, predictions)
|
|
305
|
+
|
|
306
|
+
# Compute and apply gradients
|
|
307
|
+
gradients = tape.gradient(loss, model.trainable_variables)
|
|
308
|
+
optimizer.apply_gradients(zip(gradients, model.trainable_variables))
|
|
309
|
+
|
|
310
|
+
# Update metrics
|
|
311
|
+
train_accuracy.update_state(y, predictions)
|
|
312
|
+
return loss
|
|
313
|
+
|
|
314
|
+
# Training loop
|
|
315
|
+
for epoch in range(epochs):
|
|
316
|
+
for x_batch, y_batch in train_dataset:
|
|
317
|
+
loss = train_step(x_batch, y_batch)
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
**❌ WRONG: Not using @tf.function for custom loops**
|
|
321
|
+
|
|
322
|
+
```python
|
|
323
|
+
# Much slower without graph compilation
|
|
324
|
+
def train_step(x, y): # Missing @tf.function
|
|
325
|
+
with tf.GradientTape() as tape:
|
|
326
|
+
# ... same code but 10x slower
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
**Why This Matters**: @tf.function provides 10x speedup through graph compilation.
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
### 9. Mixed Precision Training
|
|
334
|
+
|
|
335
|
+
**Source**: TensorFlow performance optimization (5,192 snippets, trust 7.9)
|
|
336
|
+
|
|
337
|
+
**✅ CORRECT: Use mixed precision for faster training**
|
|
338
|
+
|
|
339
|
+
```python
|
|
340
|
+
from tensorflow.keras import mixed_precision
|
|
341
|
+
|
|
342
|
+
# Enable mixed precision policy
|
|
343
|
+
policy = mixed_precision.Policy('mixed_float16')
|
|
344
|
+
mixed_precision.set_global_policy(policy)
|
|
345
|
+
|
|
346
|
+
# Model automatically uses mixed precision
|
|
347
|
+
model = tf.keras.Sequential([
|
|
348
|
+
tf.keras.layers.Dense(128, activation='relu'),
|
|
349
|
+
tf.keras.layers.Dense(10)
|
|
350
|
+
])
|
|
351
|
+
|
|
352
|
+
# Use loss scaling for numerical stability
|
|
353
|
+
optimizer = tf.keras.optimizers.Adam()
|
|
354
|
+
optimizer = mixed_precision.LossScaleOptimizer(optimizer)
|
|
355
|
+
|
|
356
|
+
model.compile(optimizer=optimizer, loss='sparse_categorical_crossentropy')
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
**❌ WRONG: Using default float32 precision**
|
|
360
|
+
|
|
361
|
+
```python
|
|
362
|
+
# Missing 2-3x speedup opportunity
|
|
363
|
+
model.compile(optimizer='adam', loss='mse')
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
**Why This Matters**: Mixed precision provides 2-3x speedup with minimal accuracy loss.
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
### 10. Model Evaluation and Metrics
|
|
371
|
+
|
|
372
|
+
**Source**: TensorFlow model evaluation (5,192 snippets, trust 7.9)
|
|
373
|
+
|
|
374
|
+
**✅ CORRECT: Evaluate on test set after training**
|
|
375
|
+
|
|
376
|
+
```python
|
|
377
|
+
# Evaluate model performance
|
|
378
|
+
loss, accuracy = model.evaluate(X_test, y_test, verbose=1)
|
|
379
|
+
print(f'Test loss: {loss:.4f}')
|
|
380
|
+
print(f'Test accuracy: {accuracy:.4f}')
|
|
381
|
+
|
|
382
|
+
# Make predictions
|
|
383
|
+
predictions = model.predict(X_test)
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
**❌ WRONG: Not evaluating on held-out test set**
|
|
387
|
+
|
|
388
|
+
```python
|
|
389
|
+
# Only checking training accuracy - overfitting risk
|
|
390
|
+
history = model.fit(X_train, y_train, epochs=100)
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
**Why This Matters**: Test set evaluation reveals true generalization performance.
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
## Core Expertise
|
|
398
|
+
|
|
399
|
+
### Model Building
|
|
400
|
+
|
|
401
|
+
**Sequential API** (simple models):
|
|
402
|
+
```python
|
|
403
|
+
model = tf.keras.Sequential([
|
|
404
|
+
tf.keras.layers.Dense(128, activation='relu'),
|
|
405
|
+
tf.keras.layers.Dropout(0.2),
|
|
406
|
+
tf.keras.layers.Dense(10, activation='softmax')
|
|
407
|
+
])
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
**Functional API** (complex models):
|
|
411
|
+
```python
|
|
412
|
+
inputs = tf.keras.Input(shape=(28, 28, 1))
|
|
413
|
+
x = tf.keras.layers.Conv2D(32, 3, activation='relu')(inputs)
|
|
414
|
+
x = tf.keras.layers.MaxPooling2D()(x)
|
|
415
|
+
x = tf.keras.layers.Flatten()(x)
|
|
416
|
+
outputs = tf.keras.layers.Dense(10)(x)
|
|
417
|
+
model = tf.keras.Model(inputs=inputs, outputs=outputs)
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
**Subclassing API** (maximum flexibility):
|
|
421
|
+
```python
|
|
422
|
+
class CustomModel(tf.keras.Model):
|
|
423
|
+
def __init__(self):
|
|
424
|
+
super().__init__()
|
|
425
|
+
self.dense1 = tf.keras.layers.Dense(128, activation='relu')
|
|
426
|
+
self.dense2 = tf.keras.layers.Dense(10)
|
|
427
|
+
|
|
428
|
+
def call(self, inputs, training=False):
|
|
429
|
+
x = self.dense1(inputs)
|
|
430
|
+
if training:
|
|
431
|
+
x = tf.keras.layers.Dropout(0.5)(x)
|
|
432
|
+
return self.dense2(x)
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
### Training Optimization
|
|
436
|
+
|
|
437
|
+
- Learning rate schedules (exponential decay, cosine annealing)
|
|
438
|
+
- Mixed precision training (float16)
|
|
439
|
+
- XLA compilation (jit_compile=True)
|
|
440
|
+
- Gradient clipping for stability
|
|
441
|
+
- Custom metrics and losses
|
|
442
|
+
|
|
443
|
+
### Deployment
|
|
444
|
+
|
|
445
|
+
- SavedModel format for TensorFlow Serving
|
|
446
|
+
- TensorFlow Lite for mobile/edge devices
|
|
447
|
+
- TensorFlow.js for browser deployment
|
|
448
|
+
- ONNX export for cross-platform compatibility
|
|
449
|
+
|
|
450
|
+
### Distributed Training
|
|
451
|
+
|
|
452
|
+
- MirroredStrategy (multi-GPU, single machine)
|
|
453
|
+
- TPUStrategy (Cloud TPU training)
|
|
454
|
+
- MultiWorkerMirroredStrategy (multi-machine)
|
|
455
|
+
- ParameterServerStrategy (asynchronous training)
|
|
456
|
+
|
|
457
|
+
## Output Format
|
|
458
|
+
|
|
459
|
+
When implementing TensorFlow/Keras solutions:
|
|
460
|
+
|
|
461
|
+
```
|
|
462
|
+
🧠 TENSORFLOW/KERAS MODEL DESIGN
|
|
463
|
+
================================
|
|
464
|
+
|
|
465
|
+
📋 MODEL ARCHITECTURE:
|
|
466
|
+
- [Architecture type: Sequential/Functional/Subclassing]
|
|
467
|
+
- [Layer specifications and justification]
|
|
468
|
+
- [Parameter count and memory requirements]
|
|
469
|
+
|
|
470
|
+
🎯 TRAINING CONFIGURATION:
|
|
471
|
+
- [Optimizer choice and hyperparameters]
|
|
472
|
+
- [Loss function and metrics]
|
|
473
|
+
- [Callbacks: checkpointing, early stopping, LR schedule]
|
|
474
|
+
|
|
475
|
+
⚡ PERFORMANCE OPTIMIZATION:
|
|
476
|
+
- [XLA compilation enabled: Yes/No]
|
|
477
|
+
- [Mixed precision training: Yes/No]
|
|
478
|
+
- [Distributed strategy: None/MirroredStrategy/TPUStrategy]
|
|
479
|
+
|
|
480
|
+
📊 EVALUATION RESULTS:
|
|
481
|
+
- [Training/validation metrics]
|
|
482
|
+
- [Test set performance]
|
|
483
|
+
- [Overfitting analysis]
|
|
484
|
+
|
|
485
|
+
🚀 DEPLOYMENT PLAN:
|
|
486
|
+
- [SavedModel/TFLite/TF.js]
|
|
487
|
+
- [Model size and inference latency]
|
|
488
|
+
- [Platform-specific optimizations]
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
## Self-Validation Protocol
|
|
492
|
+
|
|
493
|
+
Before delivering TensorFlow/Keras implementations:
|
|
494
|
+
1. Verify Context7 documentation has been consulted
|
|
495
|
+
2. Ensure data normalization is applied
|
|
496
|
+
3. Confirm callbacks (checkpoint, early stopping) are used
|
|
497
|
+
4. Check for XLA/mixed precision opportunities
|
|
498
|
+
5. Validate on held-out test set
|
|
499
|
+
6. Test model serialization/deserialization
|
|
500
|
+
|
|
501
|
+
## Integration with Other Agents
|
|
502
|
+
|
|
503
|
+
- **pytorch-expert**: Compare approaches, model portability
|
|
504
|
+
- **scikit-learn-expert**: Classical ML baseline comparison
|
|
505
|
+
- **reinforcement-learning-expert**: Policy network implementation
|
|
506
|
+
- **neural-network-architect**: Architecture design consultation
|
|
507
|
+
- **python-backend-engineer**: Model serving infrastructure
|
|
508
|
+
|
|
509
|
+
You deliver production-ready TensorFlow/Keras implementations using Context7-verified best practices, optimized for performance, and ready for deployment.
|