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,473 @@
|
|
|
1
|
+
---
|
|
2
|
+
allowed-tools: Bash, Read, Write, LS, Task
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Epic Sync
|
|
6
|
+
|
|
7
|
+
Push epic and tasks to GitHub as issues.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
```
|
|
11
|
+
/pm:epic-sync <feature_name>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Required Documentation Access
|
|
15
|
+
|
|
16
|
+
**MANDATORY:** Before project management workflows, query Context7 for best practices:
|
|
17
|
+
|
|
18
|
+
**Documentation Queries:**
|
|
19
|
+
- `mcp://context7/agile/epic-management` - epic management best practices
|
|
20
|
+
- `mcp://context7/project-management/issue-tracking` - issue tracking best practices
|
|
21
|
+
- `mcp://context7/agile/task-breakdown` - task breakdown best practices
|
|
22
|
+
- `mcp://context7/project-management/workflow` - workflow best practices
|
|
23
|
+
|
|
24
|
+
**Why This is Required:**
|
|
25
|
+
- Ensures adherence to current industry standards and best practices
|
|
26
|
+
- Prevents outdated or incorrect implementation patterns
|
|
27
|
+
- Provides access to latest framework/tool documentation
|
|
28
|
+
- Reduces errors from stale knowledge or assumptions
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
## Quick Check
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Verify epic exists
|
|
35
|
+
test -f .claude/epics/$ARGUMENTS/epic.md || echo "❌ Epic not found. Run: /pm:prd-parse $ARGUMENTS"
|
|
36
|
+
|
|
37
|
+
# Count task files
|
|
38
|
+
ls .claude/epics/$ARGUMENTS/*.md 2>/dev/null | grep -v epic.md | wc -l
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
If no tasks found: "❌ No tasks to sync. Run: /pm:epic-decompose $ARGUMENTS"
|
|
42
|
+
|
|
43
|
+
## Instructions
|
|
44
|
+
|
|
45
|
+
### 0. Check Remote Repository
|
|
46
|
+
|
|
47
|
+
Follow `/rules/github-operations.md` to ensure we're not syncing to the AutoPM template:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# Check if remote origin is the AutoPM template repository
|
|
51
|
+
remote_url=$(git remote get-url origin 2>/dev/null || echo "")
|
|
52
|
+
if [[ "$remote_url" == *"rlagowski/autopm"* ]] || [[ "$remote_url" == *"rlagowski/autopm.git"* ]]; then
|
|
53
|
+
echo "❌ ERROR: You're trying to sync with the AutoPM template repository!"
|
|
54
|
+
echo ""
|
|
55
|
+
echo "This repository (rlagowski/autopm) is a template for others to use."
|
|
56
|
+
echo "You should NOT create issues or PRs here."
|
|
57
|
+
echo ""
|
|
58
|
+
echo "To fix this:"
|
|
59
|
+
echo "1. Fork this repository to your own GitHub account"
|
|
60
|
+
echo "2. Update your remote origin:"
|
|
61
|
+
echo " git remote set-url origin https://github.com/YOUR_USERNAME/YOUR_REPO.git"
|
|
62
|
+
echo ""
|
|
63
|
+
echo "Or if this is a new project:"
|
|
64
|
+
echo "1. Create a new repository on GitHub"
|
|
65
|
+
echo "2. Update your remote origin:"
|
|
66
|
+
echo " git remote set-url origin https://github.com/YOUR_USERNAME/YOUR_REPO.git"
|
|
67
|
+
echo ""
|
|
68
|
+
echo "Current remote: $remote_url"
|
|
69
|
+
exit 1
|
|
70
|
+
fi
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 1. Create Epic Issue
|
|
74
|
+
|
|
75
|
+
Strip frontmatter and prepare GitHub issue body:
|
|
76
|
+
```bash
|
|
77
|
+
# Extract content without frontmatter
|
|
78
|
+
sed '1,/^---$/d; 1,/^---$/d' .claude/epics/$ARGUMENTS/epic.md > /tmp/epic-body-raw.md
|
|
79
|
+
|
|
80
|
+
# Remove "## Tasks Created" section and replace with Stats
|
|
81
|
+
awk '
|
|
82
|
+
/^## Tasks Created/ {
|
|
83
|
+
in_tasks=1
|
|
84
|
+
next
|
|
85
|
+
}
|
|
86
|
+
/^## / && in_tasks {
|
|
87
|
+
in_tasks=0
|
|
88
|
+
# When we hit the next section after Tasks Created, add Stats
|
|
89
|
+
if (total_tasks) {
|
|
90
|
+
print "## Stats\n"
|
|
91
|
+
print "Total tasks: " total_tasks
|
|
92
|
+
print "Parallel tasks: " parallel_tasks " (can be worked on simultaneously)"
|
|
93
|
+
print "Sequential tasks: " sequential_tasks " (have dependencies)"
|
|
94
|
+
if (total_effort) print "Estimated total effort: " total_effort " hours"
|
|
95
|
+
print ""
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/^Total tasks:/ && in_tasks { total_tasks = $3; next }
|
|
99
|
+
/^Parallel tasks:/ && in_tasks { parallel_tasks = $3; next }
|
|
100
|
+
/^Sequential tasks:/ && in_tasks { sequential_tasks = $3; next }
|
|
101
|
+
/^Estimated total effort:/ && in_tasks {
|
|
102
|
+
gsub(/^Estimated total effort: /, "")
|
|
103
|
+
total_effort = $0
|
|
104
|
+
next
|
|
105
|
+
}
|
|
106
|
+
!in_tasks { print }
|
|
107
|
+
END {
|
|
108
|
+
# If we were still in tasks section at EOF, add stats
|
|
109
|
+
if (in_tasks && total_tasks) {
|
|
110
|
+
print "## Stats\n"
|
|
111
|
+
print "Total tasks: " total_tasks
|
|
112
|
+
print "Parallel tasks: " parallel_tasks " (can be worked on simultaneously)"
|
|
113
|
+
print "Sequential tasks: " sequential_tasks " (have dependencies)"
|
|
114
|
+
if (total_effort) print "Estimated total effort: " total_effort
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
' /tmp/epic-body-raw.md > /tmp/epic-body.md
|
|
118
|
+
|
|
119
|
+
# Determine epic type (feature vs bug) from content
|
|
120
|
+
if grep -qi "bug\|fix\|issue\|problem\|error" /tmp/epic-body.md; then
|
|
121
|
+
epic_type="bug"
|
|
122
|
+
else
|
|
123
|
+
epic_type="feature"
|
|
124
|
+
fi
|
|
125
|
+
|
|
126
|
+
# Create epic issue with labels
|
|
127
|
+
epic_number=$(gh issue create \
|
|
128
|
+
--title "Epic: $ARGUMENTS" \
|
|
129
|
+
--body-file /tmp/epic-body.md \
|
|
130
|
+
--label "epic,epic:$ARGUMENTS,$epic_type" \
|
|
131
|
+
--json number -q .number)
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Store the returned issue number for epic frontmatter update.
|
|
135
|
+
|
|
136
|
+
### 2. Create Task Sub-Issues
|
|
137
|
+
|
|
138
|
+
Check if gh-sub-issue is available:
|
|
139
|
+
```bash
|
|
140
|
+
if gh extension list | grep -q "yahsan2/gh-sub-issue"; then
|
|
141
|
+
use_subissues=true
|
|
142
|
+
else
|
|
143
|
+
use_subissues=false
|
|
144
|
+
echo "⚠️ gh-sub-issue not installed. Using fallback mode."
|
|
145
|
+
fi
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Count task files to determine strategy:
|
|
149
|
+
```bash
|
|
150
|
+
task_count=$(ls .claude/epics/$ARGUMENTS/[0-9][0-9][0-9].md 2>/dev/null | wc -l)
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### For Small Batches (< 5 tasks): Sequential Creation
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
if [ "$task_count" -lt 5 ]; then
|
|
157
|
+
# Create sequentially for small batches
|
|
158
|
+
for task_file in .claude/epics/$ARGUMENTS/[0-9][0-9][0-9].md; do
|
|
159
|
+
[ -f "$task_file" ] || continue
|
|
160
|
+
|
|
161
|
+
# Extract task name from frontmatter
|
|
162
|
+
task_name=$(grep '^name:' "$task_file" | sed 's/^name: *//')
|
|
163
|
+
|
|
164
|
+
# Strip frontmatter from task content
|
|
165
|
+
sed '1,/^---$/d; 1,/^---$/d' "$task_file" > /tmp/task-body.md
|
|
166
|
+
|
|
167
|
+
# Create sub-issue with labels
|
|
168
|
+
if [ "$use_subissues" = true ]; then
|
|
169
|
+
task_number=$(gh sub-issue create \
|
|
170
|
+
--parent "$epic_number" \
|
|
171
|
+
--title "$task_name" \
|
|
172
|
+
--body-file /tmp/task-body.md \
|
|
173
|
+
--label "task,epic:$ARGUMENTS" \
|
|
174
|
+
--json number -q .number)
|
|
175
|
+
else
|
|
176
|
+
task_number=$(gh issue create \
|
|
177
|
+
--title "$task_name" \
|
|
178
|
+
--body-file /tmp/task-body.md \
|
|
179
|
+
--label "task,epic:$ARGUMENTS" \
|
|
180
|
+
--json number -q .number)
|
|
181
|
+
fi
|
|
182
|
+
|
|
183
|
+
# Record mapping for renaming
|
|
184
|
+
echo "$task_file:$task_number" >> /tmp/task-mapping.txt
|
|
185
|
+
done
|
|
186
|
+
|
|
187
|
+
# After creating all issues, update references and rename files
|
|
188
|
+
# This follows the same process as step 3 below
|
|
189
|
+
fi
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### For Larger Batches: Parallel Creation
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
if [ "$task_count" -ge 5 ]; then
|
|
196
|
+
echo "Creating $task_count sub-issues in parallel..."
|
|
197
|
+
|
|
198
|
+
# Check if gh-sub-issue is available for parallel agents
|
|
199
|
+
if gh extension list | grep -q "yahsan2/gh-sub-issue"; then
|
|
200
|
+
subissue_cmd="gh sub-issue create --parent $epic_number"
|
|
201
|
+
else
|
|
202
|
+
subissue_cmd="gh issue create"
|
|
203
|
+
fi
|
|
204
|
+
|
|
205
|
+
# Batch tasks for parallel processing
|
|
206
|
+
# Spawn agents to create sub-issues in parallel with proper labels
|
|
207
|
+
# Each agent must use: --label "task,epic:$ARGUMENTS"
|
|
208
|
+
fi
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Use Task tool for parallel creation:
|
|
212
|
+
```yaml
|
|
213
|
+
Task:
|
|
214
|
+
description: "Create GitHub sub-issues batch {X}"
|
|
215
|
+
subagent_type: "general-purpose"
|
|
216
|
+
prompt: |
|
|
217
|
+
Create GitHub sub-issues for tasks in epic $ARGUMENTS
|
|
218
|
+
Parent epic issue: #$epic_number
|
|
219
|
+
|
|
220
|
+
Tasks to process:
|
|
221
|
+
- {list of 3-4 task files}
|
|
222
|
+
|
|
223
|
+
For each task file:
|
|
224
|
+
1. Extract task name from frontmatter
|
|
225
|
+
2. Strip frontmatter using: sed '1,/^---$/d; 1,/^---$/d'
|
|
226
|
+
3. Create sub-issue using:
|
|
227
|
+
- If gh-sub-issue available:
|
|
228
|
+
gh sub-issue create --parent $epic_number --title "$task_name" \
|
|
229
|
+
--body-file /tmp/task-body.md --label "task,epic:$ARGUMENTS"
|
|
230
|
+
- Otherwise:
|
|
231
|
+
gh issue create --title "$task_name" --body-file /tmp/task-body.md \
|
|
232
|
+
--label "task,epic:$ARGUMENTS"
|
|
233
|
+
4. Record: task_file:issue_number
|
|
234
|
+
|
|
235
|
+
IMPORTANT: Always include --label parameter with "task,epic:$ARGUMENTS"
|
|
236
|
+
|
|
237
|
+
Return mapping of files to issue numbers.
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Consolidate results from parallel agents:
|
|
241
|
+
```bash
|
|
242
|
+
# Collect all mappings from agents
|
|
243
|
+
cat /tmp/batch-*/mapping.txt >> /tmp/task-mapping.txt
|
|
244
|
+
|
|
245
|
+
# IMPORTANT: After consolidation, follow step 3 to:
|
|
246
|
+
# 1. Build old->new ID mapping
|
|
247
|
+
# 2. Update all task references (depends_on, conflicts_with)
|
|
248
|
+
# 3. Rename files with proper frontmatter updates
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### 3. Rename Task Files and Update References
|
|
252
|
+
|
|
253
|
+
First, build a mapping of old numbers to new issue IDs:
|
|
254
|
+
```bash
|
|
255
|
+
# Create mapping from old task numbers (001, 002, etc.) to new issue IDs
|
|
256
|
+
> /tmp/id-mapping.txt
|
|
257
|
+
while IFS=: read -r task_file task_number; do
|
|
258
|
+
# Extract old number from filename (e.g., 001 from 001.md)
|
|
259
|
+
old_num=$(basename "$task_file" .md)
|
|
260
|
+
echo "$old_num:$task_number" >> /tmp/id-mapping.txt
|
|
261
|
+
done < /tmp/task-mapping.txt
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Then rename files and update all references:
|
|
265
|
+
```bash
|
|
266
|
+
# Process each task file
|
|
267
|
+
while IFS=: read -r task_file task_number; do
|
|
268
|
+
new_name="$(dirname "$task_file")/${task_number}.md"
|
|
269
|
+
|
|
270
|
+
# Read the file content
|
|
271
|
+
content=$(cat "$task_file")
|
|
272
|
+
|
|
273
|
+
# Update depends_on and conflicts_with references
|
|
274
|
+
while IFS=: read -r old_num new_num; do
|
|
275
|
+
# Update arrays like [001, 002] to use new issue numbers
|
|
276
|
+
content=$(echo "$content" | sed "s/\b$old_num\b/$new_num/g")
|
|
277
|
+
done < /tmp/id-mapping.txt
|
|
278
|
+
|
|
279
|
+
# Write updated content to new file
|
|
280
|
+
echo "$content" > "$new_name"
|
|
281
|
+
|
|
282
|
+
# Remove old file if different from new
|
|
283
|
+
[ "$task_file" != "$new_name" ] && rm "$task_file"
|
|
284
|
+
|
|
285
|
+
# Update github field in frontmatter
|
|
286
|
+
# Add the GitHub URL to the frontmatter
|
|
287
|
+
repo=$(gh repo view --json nameWithOwner -q .nameWithOwner)
|
|
288
|
+
github_url="https://github.com/$repo/issues/$task_number"
|
|
289
|
+
|
|
290
|
+
# Update frontmatter with GitHub URL and current timestamp
|
|
291
|
+
current_date=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
292
|
+
|
|
293
|
+
# Use sed to update the github and updated fields
|
|
294
|
+
sed -i.bak "/^github:/c\github: $github_url" "$new_name"
|
|
295
|
+
sed -i.bak "/^updated:/c\updated: $current_date" "$new_name"
|
|
296
|
+
rm "${new_name}.bak"
|
|
297
|
+
done < /tmp/task-mapping.txt
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### 4. Update Epic with Task List (Fallback Only)
|
|
301
|
+
|
|
302
|
+
If NOT using gh-sub-issue, add task list to epic:
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
if [ "$use_subissues" = false ]; then
|
|
306
|
+
# Get current epic body
|
|
307
|
+
gh issue view {epic_number} --json body -q .body > /tmp/epic-body.md
|
|
308
|
+
|
|
309
|
+
# Append task list
|
|
310
|
+
cat >> /tmp/epic-body.md << 'EOF'
|
|
311
|
+
|
|
312
|
+
## Tasks
|
|
313
|
+
- [ ] #{task1_number} {task1_name}
|
|
314
|
+
- [ ] #{task2_number} {task2_name}
|
|
315
|
+
- [ ] #{task3_number} {task3_name}
|
|
316
|
+
EOF
|
|
317
|
+
|
|
318
|
+
# Update epic issue
|
|
319
|
+
gh issue edit {epic_number} --body-file /tmp/epic-body.md
|
|
320
|
+
fi
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
With gh-sub-issue, this is automatic!
|
|
324
|
+
|
|
325
|
+
### 5. Update Epic File
|
|
326
|
+
|
|
327
|
+
Update the epic file with GitHub URL, timestamp, and real task IDs:
|
|
328
|
+
|
|
329
|
+
#### 5a. Update Frontmatter
|
|
330
|
+
```bash
|
|
331
|
+
# Get repo info
|
|
332
|
+
repo=$(gh repo view --json nameWithOwner -q .nameWithOwner)
|
|
333
|
+
epic_url="https://github.com/$repo/issues/$epic_number"
|
|
334
|
+
current_date=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
335
|
+
|
|
336
|
+
# Update epic frontmatter
|
|
337
|
+
sed -i.bak "/^github:/c\github: $epic_url" .claude/epics/$ARGUMENTS/epic.md
|
|
338
|
+
sed -i.bak "/^updated:/c\updated: $current_date" .claude/epics/$ARGUMENTS/epic.md
|
|
339
|
+
rm .claude/epics/$ARGUMENTS/epic.md.bak
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
#### 5b. Update Tasks Created Section
|
|
343
|
+
```bash
|
|
344
|
+
# Create a temporary file with the updated Tasks Created section
|
|
345
|
+
cat > /tmp/tasks-section.md << 'EOF'
|
|
346
|
+
## Tasks Created
|
|
347
|
+
EOF
|
|
348
|
+
|
|
349
|
+
# Add each task with its real issue number
|
|
350
|
+
for task_file in .claude/epics/$ARGUMENTS/[0-9]*.md; do
|
|
351
|
+
[ -f "$task_file" ] || continue
|
|
352
|
+
|
|
353
|
+
# Get issue number (filename without .md)
|
|
354
|
+
issue_num=$(basename "$task_file" .md)
|
|
355
|
+
|
|
356
|
+
# Get task name from frontmatter
|
|
357
|
+
task_name=$(grep '^name:' "$task_file" | sed 's/^name: *//')
|
|
358
|
+
|
|
359
|
+
# Get parallel status
|
|
360
|
+
parallel=$(grep '^parallel:' "$task_file" | sed 's/^parallel: *//')
|
|
361
|
+
|
|
362
|
+
# Add to tasks section
|
|
363
|
+
echo "- [ ] #${issue_num} - ${task_name} (parallel: ${parallel})" >> /tmp/tasks-section.md
|
|
364
|
+
done
|
|
365
|
+
|
|
366
|
+
# Add summary statistics
|
|
367
|
+
total_count=$(ls .claude/epics/$ARGUMENTS/[0-9]*.md 2>/dev/null | wc -l)
|
|
368
|
+
parallel_count=$(grep -l '^parallel: true' .claude/epics/$ARGUMENTS/[0-9]*.md 2>/dev/null | wc -l)
|
|
369
|
+
sequential_count=$((total_count - parallel_count))
|
|
370
|
+
|
|
371
|
+
cat >> /tmp/tasks-section.md << EOF
|
|
372
|
+
|
|
373
|
+
Total tasks: ${total_count}
|
|
374
|
+
Parallel tasks: ${parallel_count}
|
|
375
|
+
Sequential tasks: ${sequential_count}
|
|
376
|
+
EOF
|
|
377
|
+
|
|
378
|
+
# Replace the Tasks Created section in epic.md
|
|
379
|
+
# First, create a backup
|
|
380
|
+
cp .claude/epics/$ARGUMENTS/epic.md .claude/epics/$ARGUMENTS/epic.md.backup
|
|
381
|
+
|
|
382
|
+
# Use awk to replace the section
|
|
383
|
+
awk '
|
|
384
|
+
/^## Tasks Created/ {
|
|
385
|
+
skip=1
|
|
386
|
+
while ((getline line < "/tmp/tasks-section.md") > 0) print line
|
|
387
|
+
close("/tmp/tasks-section.md")
|
|
388
|
+
}
|
|
389
|
+
/^## / && !/^## Tasks Created/ { skip=0 }
|
|
390
|
+
!skip && !/^## Tasks Created/ { print }
|
|
391
|
+
' .claude/epics/$ARGUMENTS/epic.md.backup > .claude/epics/$ARGUMENTS/epic.md
|
|
392
|
+
|
|
393
|
+
# Clean up
|
|
394
|
+
rm .claude/epics/$ARGUMENTS/epic.md.backup
|
|
395
|
+
rm /tmp/tasks-section.md
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
### 6. Create Mapping File
|
|
399
|
+
|
|
400
|
+
Create `.claude/epics/$ARGUMENTS/github-mapping.md`:
|
|
401
|
+
```bash
|
|
402
|
+
# Create mapping file
|
|
403
|
+
cat > .claude/epics/$ARGUMENTS/github-mapping.md << EOF
|
|
404
|
+
# GitHub Issue Mapping
|
|
405
|
+
|
|
406
|
+
Epic: #${epic_number} - https://github.com/${repo}/issues/${epic_number}
|
|
407
|
+
|
|
408
|
+
Tasks:
|
|
409
|
+
EOF
|
|
410
|
+
|
|
411
|
+
# Add each task mapping
|
|
412
|
+
for task_file in .claude/epics/$ARGUMENTS/[0-9]*.md; do
|
|
413
|
+
[ -f "$task_file" ] || continue
|
|
414
|
+
|
|
415
|
+
issue_num=$(basename "$task_file" .md)
|
|
416
|
+
task_name=$(grep '^name:' "$task_file" | sed 's/^name: *//')
|
|
417
|
+
|
|
418
|
+
echo "- #${issue_num}: ${task_name} - https://github.com/${repo}/issues/${issue_num}" >> .claude/epics/$ARGUMENTS/github-mapping.md
|
|
419
|
+
done
|
|
420
|
+
|
|
421
|
+
# Add sync timestamp
|
|
422
|
+
echo "" >> .claude/epics/$ARGUMENTS/github-mapping.md
|
|
423
|
+
echo "Synced: $(date -u +"%Y-%m-%dT%H:%M:%SZ")" >> .claude/epics/$ARGUMENTS/github-mapping.md
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
### 7. Create Branch
|
|
427
|
+
|
|
428
|
+
Follow `/rules/git-strategy.md` to create development branch:
|
|
429
|
+
|
|
430
|
+
```bash
|
|
431
|
+
# Ensure main is current
|
|
432
|
+
git checkout main
|
|
433
|
+
git pull origin main
|
|
434
|
+
|
|
435
|
+
# Create branch for epic
|
|
436
|
+
git checkout -b epic/$ARGUMENTS
|
|
437
|
+
git push -u origin epic/$ARGUMENTS
|
|
438
|
+
|
|
439
|
+
echo "✅ Created branch: epic/$ARGUMENTS"
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
### 8. Output
|
|
443
|
+
|
|
444
|
+
```
|
|
445
|
+
✅ Synced to GitHub
|
|
446
|
+
- Epic: #{epic_number} - {epic_title}
|
|
447
|
+
- Tasks: {count} sub-issues created
|
|
448
|
+
- Labels applied: epic, task, epic:{name}
|
|
449
|
+
- Files renamed: 001.md → {issue_id}.md
|
|
450
|
+
- References updated: depends_on/conflicts_with now use issue IDs
|
|
451
|
+
- Branch: epic/$ARGUMENTS
|
|
452
|
+
|
|
453
|
+
Next steps:
|
|
454
|
+
- Start parallel execution: /pm:epic-start $ARGUMENTS
|
|
455
|
+
- Or work on single issue: /pm:issue-start {issue_number}
|
|
456
|
+
- View epic: https://github.com/{owner}/{repo}/issues/{epic_number}
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
## Error Handling
|
|
460
|
+
|
|
461
|
+
Follow `/rules/github-operations.md` for GitHub CLI errors.
|
|
462
|
+
|
|
463
|
+
If any issue creation fails:
|
|
464
|
+
- Report what succeeded
|
|
465
|
+
- Note what failed
|
|
466
|
+
- Don't attempt rollback (partial sync is fine)
|
|
467
|
+
|
|
468
|
+
## Important Notes
|
|
469
|
+
|
|
470
|
+
- Trust GitHub CLI authentication
|
|
471
|
+
- Don't pre-check for duplicates
|
|
472
|
+
- Update frontmatter only after successful creation
|
|
473
|
+
- Keep operations simple and atomic
|