claude-autopm 2.8.2 → 2.8.3
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/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,460 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Gather Updates Script for Issue Sync
|
|
3
|
+
# Collects all local development updates for GitHub synchronization
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
# Load libraries
|
|
8
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
9
|
+
source "${SCRIPT_DIR}/../../lib/logging-utils.sh"
|
|
10
|
+
source "${SCRIPT_DIR}/../../lib/frontmatter-utils.sh"
|
|
11
|
+
source "${SCRIPT_DIR}/../../lib/validation-utils.sh"
|
|
12
|
+
source "${SCRIPT_DIR}/../../lib/datetime-utils.sh"
|
|
13
|
+
|
|
14
|
+
# Script configuration
|
|
15
|
+
readonly ISSUE_NUMBER="${1:-}"
|
|
16
|
+
readonly UPDATES_DIR="${2:-}"
|
|
17
|
+
readonly LAST_SYNC="${3:-}"
|
|
18
|
+
|
|
19
|
+
# Global variables
|
|
20
|
+
declare -g temp_dir=""
|
|
21
|
+
declare -g gathered_updates=""
|
|
22
|
+
|
|
23
|
+
# Main function
|
|
24
|
+
main() {
|
|
25
|
+
print_banner "Issue Updates Gatherer" "1.0.0"
|
|
26
|
+
|
|
27
|
+
# Validate inputs
|
|
28
|
+
log_info "Gathering updates for issue #$ISSUE_NUMBER"
|
|
29
|
+
validate_inputs || exit 1
|
|
30
|
+
|
|
31
|
+
# Setup workspace
|
|
32
|
+
setup_workspace
|
|
33
|
+
|
|
34
|
+
# Gather all types of updates
|
|
35
|
+
with_error_handling "Gather progress updates" \
|
|
36
|
+
gather_progress_updates
|
|
37
|
+
|
|
38
|
+
with_error_handling "Gather technical notes" \
|
|
39
|
+
gather_technical_notes
|
|
40
|
+
|
|
41
|
+
with_error_handling "Gather commit references" \
|
|
42
|
+
gather_commit_references
|
|
43
|
+
|
|
44
|
+
with_error_handling "Gather acceptance criteria updates" \
|
|
45
|
+
gather_acceptance_criteria
|
|
46
|
+
|
|
47
|
+
with_error_handling "Gather next steps and blockers" \
|
|
48
|
+
gather_next_steps_and_blockers
|
|
49
|
+
|
|
50
|
+
# Consolidate all updates
|
|
51
|
+
with_error_handling "Consolidate updates" \
|
|
52
|
+
consolidate_updates
|
|
53
|
+
|
|
54
|
+
# Output results
|
|
55
|
+
display_results
|
|
56
|
+
|
|
57
|
+
# Return path to consolidated updates file
|
|
58
|
+
echo "$gathered_updates"
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
# Validate script inputs
|
|
62
|
+
validate_inputs() {
|
|
63
|
+
log_function_entry "validate_inputs"
|
|
64
|
+
|
|
65
|
+
validate_issue_number "$ISSUE_NUMBER" || return 1
|
|
66
|
+
validate_directory_exists "$UPDATES_DIR" "Updates directory" || return 1
|
|
67
|
+
|
|
68
|
+
log_function_exit "validate_inputs"
|
|
69
|
+
return 0
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
# Setup temporary workspace
|
|
73
|
+
setup_workspace() {
|
|
74
|
+
log_function_entry "setup_workspace"
|
|
75
|
+
|
|
76
|
+
temp_dir="/tmp/gather-updates-$$"
|
|
77
|
+
gathered_updates="$temp_dir/consolidated-updates.md"
|
|
78
|
+
|
|
79
|
+
log_info "Creating workspace: $temp_dir"
|
|
80
|
+
mkdir -p "$temp_dir"
|
|
81
|
+
|
|
82
|
+
# Cleanup on exit
|
|
83
|
+
trap "cleanup_workspace" EXIT
|
|
84
|
+
|
|
85
|
+
log_function_exit "setup_workspace"
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
# Cleanup workspace
|
|
89
|
+
cleanup_workspace() {
|
|
90
|
+
if [[ -n "$temp_dir" ]] && [[ -d "$temp_dir" ]]; then
|
|
91
|
+
log_debug "Cleaning up workspace: $temp_dir"
|
|
92
|
+
# Don't remove - calling script needs the results
|
|
93
|
+
# rm -rf "$temp_dir"
|
|
94
|
+
fi
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
# Gather progress updates from progress.md
|
|
98
|
+
gather_progress_updates() {
|
|
99
|
+
log_function_entry "gather_progress_updates"
|
|
100
|
+
|
|
101
|
+
local progress_file="$UPDATES_DIR/progress.md"
|
|
102
|
+
local progress_output="$temp_dir/progress-updates.md"
|
|
103
|
+
|
|
104
|
+
if [[ ! -f "$progress_file" ]]; then
|
|
105
|
+
log_warning "Progress file not found: $progress_file"
|
|
106
|
+
echo "No progress updates available" > "$progress_output"
|
|
107
|
+
log_function_exit "gather_progress_updates"
|
|
108
|
+
return 0
|
|
109
|
+
fi
|
|
110
|
+
|
|
111
|
+
log_info "Processing progress file: $progress_file"
|
|
112
|
+
|
|
113
|
+
# Extract content since last sync
|
|
114
|
+
if [[ -n "$LAST_SYNC" ]]; then
|
|
115
|
+
extract_content_since_sync "$progress_file" "$progress_output" "$LAST_SYNC"
|
|
116
|
+
else
|
|
117
|
+
# No previous sync - get all content except frontmatter
|
|
118
|
+
strip_frontmatter "$progress_file" "$progress_output"
|
|
119
|
+
fi
|
|
120
|
+
|
|
121
|
+
# Get completion percentage
|
|
122
|
+
local completion
|
|
123
|
+
completion=$(get_frontmatter_field "$progress_file" "completion" 2>/dev/null || echo "0%")
|
|
124
|
+
|
|
125
|
+
# Add completion info to progress updates
|
|
126
|
+
cat >> "$progress_output" << EOF
|
|
127
|
+
|
|
128
|
+
**Current Progress:** $completion
|
|
129
|
+
EOF
|
|
130
|
+
|
|
131
|
+
log_success "Progress updates gathered"
|
|
132
|
+
log_function_exit "gather_progress_updates"
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
# Gather technical notes
|
|
136
|
+
gather_technical_notes() {
|
|
137
|
+
log_function_entry "gather_technical_notes"
|
|
138
|
+
|
|
139
|
+
local notes_file="$UPDATES_DIR/notes.md"
|
|
140
|
+
local notes_output="$temp_dir/technical-notes.md"
|
|
141
|
+
|
|
142
|
+
if [[ ! -f "$notes_file" ]]; then
|
|
143
|
+
log_debug "Notes file not found: $notes_file"
|
|
144
|
+
echo "No technical notes available" > "$notes_output"
|
|
145
|
+
log_function_exit "gather_technical_notes"
|
|
146
|
+
return 0
|
|
147
|
+
fi
|
|
148
|
+
|
|
149
|
+
log_info "Processing notes file: $notes_file"
|
|
150
|
+
|
|
151
|
+
# Extract content since last sync
|
|
152
|
+
if [[ -n "$LAST_SYNC" ]]; then
|
|
153
|
+
extract_content_since_sync "$notes_file" "$notes_output" "$LAST_SYNC"
|
|
154
|
+
else
|
|
155
|
+
strip_frontmatter "$notes_file" "$notes_output"
|
|
156
|
+
fi
|
|
157
|
+
|
|
158
|
+
log_success "Technical notes gathered"
|
|
159
|
+
log_function_exit "gather_technical_notes"
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
# Gather commit references
|
|
163
|
+
gather_commit_references() {
|
|
164
|
+
log_function_entry "gather_commit_references"
|
|
165
|
+
|
|
166
|
+
local commits_file="$UPDATES_DIR/commits.md"
|
|
167
|
+
local commits_output="$temp_dir/commit-references.md"
|
|
168
|
+
|
|
169
|
+
if [[ ! -f "$commits_file" ]]; then
|
|
170
|
+
log_debug "Commits file not found: $commits_file"
|
|
171
|
+
|
|
172
|
+
# Try to gather recent commits automatically
|
|
173
|
+
gather_recent_commits_automatically "$commits_output"
|
|
174
|
+
else
|
|
175
|
+
log_info "Processing commits file: $commits_file"
|
|
176
|
+
|
|
177
|
+
# Extract content since last sync
|
|
178
|
+
if [[ -n "$LAST_SYNC" ]]; then
|
|
179
|
+
extract_content_since_sync "$commits_file" "$commits_output" "$LAST_SYNC"
|
|
180
|
+
else
|
|
181
|
+
strip_frontmatter "$commits_file" "$commits_output"
|
|
182
|
+
fi
|
|
183
|
+
fi
|
|
184
|
+
|
|
185
|
+
log_success "Commit references gathered"
|
|
186
|
+
log_function_exit "gather_commit_references"
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
# Automatically gather recent commits
|
|
190
|
+
gather_recent_commits_automatically() {
|
|
191
|
+
local output_file="$1"
|
|
192
|
+
|
|
193
|
+
log_function_entry "gather_recent_commits_automatically"
|
|
194
|
+
|
|
195
|
+
# Get recent commits (last 24 hours or since last sync)
|
|
196
|
+
local since_date
|
|
197
|
+
if [[ -n "$LAST_SYNC" ]]; then
|
|
198
|
+
since_date="$LAST_SYNC"
|
|
199
|
+
else
|
|
200
|
+
since_date=$(date -u -d "24 hours ago" +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null ||
|
|
201
|
+
date -u -v-24H +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null ||
|
|
202
|
+
echo "")
|
|
203
|
+
fi
|
|
204
|
+
|
|
205
|
+
local commits_found=false
|
|
206
|
+
|
|
207
|
+
if [[ -n "$since_date" ]] && command -v git >/dev/null 2>&1; then
|
|
208
|
+
log_debug "Looking for commits since: $since_date"
|
|
209
|
+
|
|
210
|
+
local commit_list
|
|
211
|
+
if commit_list=$(git log --since="$since_date" --oneline --no-merges 2>/dev/null); then
|
|
212
|
+
if [[ -n "$commit_list" ]]; then
|
|
213
|
+
echo "**Recent Commits:**" > "$output_file"
|
|
214
|
+
echo "$commit_list" | while read -r commit; do
|
|
215
|
+
echo "- $commit"
|
|
216
|
+
done >> "$output_file"
|
|
217
|
+
commits_found=true
|
|
218
|
+
log_debug "Found recent commits automatically"
|
|
219
|
+
fi
|
|
220
|
+
fi
|
|
221
|
+
fi
|
|
222
|
+
|
|
223
|
+
if [[ "$commits_found" != "true" ]]; then
|
|
224
|
+
echo "No recent commits found" > "$output_file"
|
|
225
|
+
log_debug "No recent commits found"
|
|
226
|
+
fi
|
|
227
|
+
|
|
228
|
+
log_function_exit "gather_recent_commits_automatically"
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
# Gather acceptance criteria updates
|
|
232
|
+
gather_acceptance_criteria() {
|
|
233
|
+
log_function_entry "gather_acceptance_criteria"
|
|
234
|
+
|
|
235
|
+
local criteria_file="$UPDATES_DIR/acceptance-criteria.md"
|
|
236
|
+
local criteria_output="$temp_dir/acceptance-criteria.md"
|
|
237
|
+
|
|
238
|
+
if [[ ! -f "$criteria_file" ]]; then
|
|
239
|
+
log_debug "Acceptance criteria file not found: $criteria_file"
|
|
240
|
+
echo "No acceptance criteria updates available" > "$criteria_output"
|
|
241
|
+
log_function_exit "gather_acceptance_criteria"
|
|
242
|
+
return 0
|
|
243
|
+
fi
|
|
244
|
+
|
|
245
|
+
log_info "Processing acceptance criteria file: $criteria_file"
|
|
246
|
+
|
|
247
|
+
# Extract content since last sync
|
|
248
|
+
if [[ -n "$LAST_SYNC" ]]; then
|
|
249
|
+
extract_content_since_sync "$criteria_file" "$criteria_output" "$LAST_SYNC"
|
|
250
|
+
else
|
|
251
|
+
strip_frontmatter "$criteria_file" "$criteria_output"
|
|
252
|
+
fi
|
|
253
|
+
|
|
254
|
+
log_success "Acceptance criteria gathered"
|
|
255
|
+
log_function_exit "gather_acceptance_criteria"
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
# Gather next steps and blockers
|
|
259
|
+
gather_next_steps_and_blockers() {
|
|
260
|
+
log_function_entry "gather_next_steps_and_blockers"
|
|
261
|
+
|
|
262
|
+
local next_steps_output="$temp_dir/next-steps.md"
|
|
263
|
+
local blockers_output="$temp_dir/blockers.md"
|
|
264
|
+
|
|
265
|
+
# Check for dedicated files
|
|
266
|
+
local next_steps_file="$UPDATES_DIR/next-steps.md"
|
|
267
|
+
local blockers_file="$UPDATES_DIR/blockers.md"
|
|
268
|
+
|
|
269
|
+
# Gather next steps
|
|
270
|
+
if [[ -f "$next_steps_file" ]]; then
|
|
271
|
+
log_info "Processing next steps file: $next_steps_file"
|
|
272
|
+
if [[ -n "$LAST_SYNC" ]]; then
|
|
273
|
+
extract_content_since_sync "$next_steps_file" "$next_steps_output" "$LAST_SYNC"
|
|
274
|
+
else
|
|
275
|
+
strip_frontmatter "$next_steps_file" "$next_steps_output"
|
|
276
|
+
fi
|
|
277
|
+
else
|
|
278
|
+
echo "No specific next steps documented" > "$next_steps_output"
|
|
279
|
+
fi
|
|
280
|
+
|
|
281
|
+
# Gather blockers
|
|
282
|
+
if [[ -f "$blockers_file" ]]; then
|
|
283
|
+
log_info "Processing blockers file: $blockers_file"
|
|
284
|
+
if [[ -n "$LAST_SYNC" ]]; then
|
|
285
|
+
extract_content_since_sync "$blockers_file" "$blockers_output" "$LAST_SYNC"
|
|
286
|
+
else
|
|
287
|
+
strip_frontmatter "$blockers_file" "$blockers_output"
|
|
288
|
+
fi
|
|
289
|
+
else
|
|
290
|
+
echo "No current blockers reported" > "$blockers_output"
|
|
291
|
+
fi
|
|
292
|
+
|
|
293
|
+
log_success "Next steps and blockers gathered"
|
|
294
|
+
log_function_exit "gather_next_steps_and_blockers"
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
# Extract content from file since last sync timestamp
|
|
298
|
+
extract_content_since_sync() {
|
|
299
|
+
local input_file="$1"
|
|
300
|
+
local output_file="$2"
|
|
301
|
+
local last_sync="$3"
|
|
302
|
+
|
|
303
|
+
log_function_entry "extract_content_since_sync" "$(basename "$input_file")" "$last_sync"
|
|
304
|
+
|
|
305
|
+
# For now, extract all content (incremental extraction is complex)
|
|
306
|
+
# TODO: Implement proper incremental extraction with sync markers
|
|
307
|
+
strip_frontmatter "$input_file" "$output_file"
|
|
308
|
+
|
|
309
|
+
# Add note about sync timing
|
|
310
|
+
if [[ -s "$output_file" ]]; then
|
|
311
|
+
echo "" >> "$output_file"
|
|
312
|
+
echo "*Updates since last sync at $last_sync*" >> "$output_file"
|
|
313
|
+
else
|
|
314
|
+
echo "No updates since last sync at $last_sync" > "$output_file"
|
|
315
|
+
fi
|
|
316
|
+
|
|
317
|
+
log_function_exit "extract_content_since_sync"
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
# Consolidate all gathered updates into single file
|
|
321
|
+
consolidate_updates() {
|
|
322
|
+
log_function_entry "consolidate_updates"
|
|
323
|
+
|
|
324
|
+
log_info "Consolidating all gathered updates"
|
|
325
|
+
|
|
326
|
+
cat > "$gathered_updates" << EOF
|
|
327
|
+
# Consolidated Updates for Issue #${ISSUE_NUMBER}
|
|
328
|
+
|
|
329
|
+
*Gathered at: $(get_current_datetime)*
|
|
330
|
+
|
|
331
|
+
EOF
|
|
332
|
+
|
|
333
|
+
# Add each section if it has meaningful content
|
|
334
|
+
add_section_if_content "Progress Updates" "$temp_dir/progress-updates.md"
|
|
335
|
+
add_section_if_content "Technical Notes" "$temp_dir/technical-notes.md"
|
|
336
|
+
add_section_if_content "Recent Commits" "$temp_dir/commit-references.md"
|
|
337
|
+
add_section_if_content "Acceptance Criteria" "$temp_dir/acceptance-criteria.md"
|
|
338
|
+
add_section_if_content "Next Steps" "$temp_dir/next-steps.md"
|
|
339
|
+
add_section_if_content "Blockers" "$temp_dir/blockers.md"
|
|
340
|
+
|
|
341
|
+
# Add any additional update files found in the directory
|
|
342
|
+
for update_file in "$UPDATES_DIR"/*.md; do
|
|
343
|
+
[[ -f "$update_file" ]] || continue
|
|
344
|
+
|
|
345
|
+
local basename_file
|
|
346
|
+
basename_file=$(basename "$update_file" .md)
|
|
347
|
+
|
|
348
|
+
# Skip already processed files
|
|
349
|
+
case "$basename_file" in
|
|
350
|
+
progress|notes|commits|acceptance-criteria|next-steps|blockers)
|
|
351
|
+
continue
|
|
352
|
+
;;
|
|
353
|
+
*)
|
|
354
|
+
log_debug "Found additional update file: $basename_file"
|
|
355
|
+
add_section_if_content "$(echo "$basename_file" | tr '-' ' ' | sed 's/\b\w/\u&/g')" "$update_file"
|
|
356
|
+
;;
|
|
357
|
+
esac
|
|
358
|
+
done
|
|
359
|
+
|
|
360
|
+
log_success "Updates consolidated into: $gathered_updates"
|
|
361
|
+
log_function_exit "consolidate_updates"
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
# Add section to consolidated file if it has meaningful content
|
|
365
|
+
add_section_if_content() {
|
|
366
|
+
local section_title="$1"
|
|
367
|
+
local section_file="$2"
|
|
368
|
+
|
|
369
|
+
if [[ ! -f "$section_file" ]]; then
|
|
370
|
+
return 0
|
|
371
|
+
fi
|
|
372
|
+
|
|
373
|
+
# Check if file has meaningful content (more than just "No ... available")
|
|
374
|
+
local content
|
|
375
|
+
content=$(cat "$section_file")
|
|
376
|
+
|
|
377
|
+
if [[ -n "$content" ]] && [[ ! "$content" =~ ^[[:space:]]*No.*available[[:space:]]*$ ]]; then
|
|
378
|
+
cat >> "$gathered_updates" << EOF
|
|
379
|
+
|
|
380
|
+
## $section_title
|
|
381
|
+
|
|
382
|
+
$content
|
|
383
|
+
|
|
384
|
+
EOF
|
|
385
|
+
log_debug "Added section: $section_title"
|
|
386
|
+
else
|
|
387
|
+
log_debug "Skipped empty section: $section_title"
|
|
388
|
+
fi
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
# Display gathering results
|
|
392
|
+
display_results() {
|
|
393
|
+
print_section "✅ Updates Gathering Results"
|
|
394
|
+
|
|
395
|
+
echo "Issue: #$ISSUE_NUMBER"
|
|
396
|
+
echo "Updates Directory: $UPDATES_DIR"
|
|
397
|
+
echo "Last Sync: ${LAST_SYNC:-Never}"
|
|
398
|
+
|
|
399
|
+
# Show gathered file size
|
|
400
|
+
local file_size
|
|
401
|
+
if [[ -f "$gathered_updates" ]]; then
|
|
402
|
+
file_size=$(wc -c < "$gathered_updates")
|
|
403
|
+
echo "Consolidated Updates: $file_size characters"
|
|
404
|
+
fi
|
|
405
|
+
|
|
406
|
+
# Show sections found
|
|
407
|
+
echo ""
|
|
408
|
+
echo "Sections gathered:"
|
|
409
|
+
if [[ -f "$gathered_updates" ]]; then
|
|
410
|
+
grep "^## " "$gathered_updates" | sed 's/^## / - /' || echo " - No sections found"
|
|
411
|
+
fi
|
|
412
|
+
|
|
413
|
+
echo ""
|
|
414
|
+
echo "✅ All updates gathered successfully"
|
|
415
|
+
echo "📄 Consolidated file: $gathered_updates"
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
# Error handling
|
|
419
|
+
handle_error() {
|
|
420
|
+
local exit_code=$?
|
|
421
|
+
log_error "Updates gathering failed with exit code: $exit_code"
|
|
422
|
+
log_error "Failed to gather updates for issue: #$ISSUE_NUMBER"
|
|
423
|
+
exit "$exit_code"
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
# Set up error handling
|
|
427
|
+
trap handle_error ERR
|
|
428
|
+
|
|
429
|
+
# Validate arguments
|
|
430
|
+
if [[ $# -lt 2 ]]; then
|
|
431
|
+
echo "Usage: $0 <issue_number> <updates_directory> [last_sync_timestamp]"
|
|
432
|
+
echo ""
|
|
433
|
+
echo "Gathers all local development updates for GitHub synchronization."
|
|
434
|
+
echo ""
|
|
435
|
+
echo "Arguments:"
|
|
436
|
+
echo " issue_number GitHub issue number"
|
|
437
|
+
echo " updates_directory Path to local updates directory"
|
|
438
|
+
echo " last_sync_timestamp Optional timestamp of last sync (ISO 8601)"
|
|
439
|
+
echo ""
|
|
440
|
+
echo "The script will gather updates from:"
|
|
441
|
+
echo " - progress.md Development progress and completion status"
|
|
442
|
+
echo " - notes.md Technical notes and decisions"
|
|
443
|
+
echo " - commits.md Commit references (or auto-gather recent commits)"
|
|
444
|
+
echo " - acceptance-criteria.md Acceptance criteria updates"
|
|
445
|
+
echo " - next-steps.md Planned next actions"
|
|
446
|
+
echo " - blockers.md Current blockers and impediments"
|
|
447
|
+
echo " - *.md Any other markdown files in updates directory"
|
|
448
|
+
echo ""
|
|
449
|
+
echo "Examples:"
|
|
450
|
+
echo " $0 123 .claude/epics/auth/updates/123"
|
|
451
|
+
echo " $0 456 .claude/epics/dashboard/updates/456 2024-01-15T10:30:00Z"
|
|
452
|
+
echo ""
|
|
453
|
+
echo "Output:"
|
|
454
|
+
echo " Prints path to consolidated updates file on stdout"
|
|
455
|
+
echo ""
|
|
456
|
+
exit 1
|
|
457
|
+
fi
|
|
458
|
+
|
|
459
|
+
# Run main function
|
|
460
|
+
main "$@"
|