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,77 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Create Epic Issue
|
|
3
|
+
# Creates the main GitHub issue for an epic with proper labels and stats
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
+
EPIC_NAME="${1:-}"
|
|
9
|
+
|
|
10
|
+
if [[ -z "$EPIC_NAME" ]]; then
|
|
11
|
+
echo "❌ Error: Epic name required"
|
|
12
|
+
echo "Usage: $0 <epic_name>"
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
# Source utilities if they exist
|
|
17
|
+
if [[ -f "$SCRIPT_DIR/../../lib/github-utils.sh" ]]; then
|
|
18
|
+
source "$SCRIPT_DIR/../../lib/github-utils.sh"
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
EPIC_FILE=".claude/epics/$EPIC_NAME/epic.md"
|
|
22
|
+
|
|
23
|
+
if [[ ! -f "$EPIC_FILE" ]]; then
|
|
24
|
+
echo "❌ Error: Epic file not found: $EPIC_FILE"
|
|
25
|
+
exit 1
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# Check GitHub CLI
|
|
29
|
+
if ! command -v gh &> /dev/null; then
|
|
30
|
+
echo "❌ Error: GitHub CLI (gh) not installed"
|
|
31
|
+
exit 1
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
# Check authentication
|
|
35
|
+
if ! gh auth status &> /dev/null; then
|
|
36
|
+
echo "❌ Error: GitHub CLI not authenticated. Run: gh auth login"
|
|
37
|
+
exit 1
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
# Strip frontmatter and get content
|
|
41
|
+
epic_content=$(awk 'BEGIN{p=0} /^---$/{p++; next} p==2{print}' "$EPIC_FILE")
|
|
42
|
+
|
|
43
|
+
# Count tasks
|
|
44
|
+
task_count=$(find ".claude/epics/$EPIC_NAME" -name "[0-9]*.md" -type f 2>/dev/null | wc -l)
|
|
45
|
+
|
|
46
|
+
# Detect epic type (bug vs feature)
|
|
47
|
+
if echo "$epic_content" | grep -qi "bug\|fix\|error\|issue"; then
|
|
48
|
+
labels="epic,bug"
|
|
49
|
+
else
|
|
50
|
+
labels="epic,feature"
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
# Create issue
|
|
54
|
+
echo "📝 Creating epic issue for: $EPIC_NAME"
|
|
55
|
+
echo " Tasks: $task_count"
|
|
56
|
+
echo " Labels: $labels"
|
|
57
|
+
|
|
58
|
+
# Create the issue
|
|
59
|
+
epic_number=$(gh issue create \
|
|
60
|
+
--title "Epic: $EPIC_NAME" \
|
|
61
|
+
--body "$epic_content
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
**Epic Statistics:**
|
|
65
|
+
- Tasks: $task_count
|
|
66
|
+
- Status: Planning
|
|
67
|
+
- Created: $(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
68
|
+
" \
|
|
69
|
+
--label "$labels" \
|
|
70
|
+
2>&1 | grep -oP '(?<=#)[0-9]+' | head -1)
|
|
71
|
+
|
|
72
|
+
if [[ -z "$epic_number" ]]; then
|
|
73
|
+
echo "❌ Error: Failed to create epic issue"
|
|
74
|
+
exit 1
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
echo "$epic_number"
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Create Task Issues
|
|
3
|
+
# Creates GitHub issues for all tasks and generates mapping file
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
+
EPIC_NAME="${1:-}"
|
|
9
|
+
EPIC_NUMBER="${2:-}"
|
|
10
|
+
|
|
11
|
+
if [[ -z "$EPIC_NAME" ]] || [[ -z "$EPIC_NUMBER" ]]; then
|
|
12
|
+
echo "❌ Error: Epic name and epic number required"
|
|
13
|
+
echo "Usage: $0 <epic_name> <epic_number>"
|
|
14
|
+
exit 1
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
EPIC_DIR=".claude/epics/$EPIC_NAME"
|
|
18
|
+
|
|
19
|
+
if [[ ! -d "$EPIC_DIR" ]]; then
|
|
20
|
+
echo "❌ Error: Epic directory not found: $EPIC_DIR"
|
|
21
|
+
exit 1
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
# Mapping file - PERSISTENT location (not in /tmp)
|
|
25
|
+
MAPPING_FILE="$EPIC_DIR/.task-mapping.txt"
|
|
26
|
+
> "$MAPPING_FILE" # Clear/create file
|
|
27
|
+
|
|
28
|
+
echo "📋 Creating task issues for epic #$EPIC_NUMBER"
|
|
29
|
+
|
|
30
|
+
# Find all task files (sequential numbered files)
|
|
31
|
+
task_files=$(find "$EPIC_DIR" -name "[0-9]*.md" -type f | sort)
|
|
32
|
+
|
|
33
|
+
if [[ -z "$task_files" ]]; then
|
|
34
|
+
echo "❌ Error: No task files found in $EPIC_DIR"
|
|
35
|
+
exit 1
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
task_count=$(echo "$task_files" | wc -l)
|
|
39
|
+
echo " Found $task_count tasks to create"
|
|
40
|
+
|
|
41
|
+
current=0
|
|
42
|
+
|
|
43
|
+
# Create issues for each task
|
|
44
|
+
for task_file in $task_files; do
|
|
45
|
+
((current++))
|
|
46
|
+
|
|
47
|
+
task_basename=$(basename "$task_file" .md)
|
|
48
|
+
|
|
49
|
+
# Strip frontmatter and get content
|
|
50
|
+
task_content=$(awk 'BEGIN{p=0} /^---$/{p++; next} p==2{print}' "$task_file")
|
|
51
|
+
|
|
52
|
+
# Extract title from first heading or use basename
|
|
53
|
+
task_title=$(echo "$task_content" | grep -m1 "^#" | sed 's/^# *//' || echo "Task $task_basename")
|
|
54
|
+
|
|
55
|
+
echo -n " [$current/$task_count] Creating issue for task $task_basename... "
|
|
56
|
+
|
|
57
|
+
# Create task issue
|
|
58
|
+
issue_number=$(gh issue create \
|
|
59
|
+
--title "$task_title" \
|
|
60
|
+
--body "$task_content
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
**Task Information:**
|
|
64
|
+
- Epic: #$EPIC_NUMBER
|
|
65
|
+
- Original ID: $task_basename
|
|
66
|
+
- Created: $(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
67
|
+
" \
|
|
68
|
+
--label "task,epic:$EPIC_NAME" \
|
|
69
|
+
2>&1 | grep -oP '(?<=#)[0-9]+' | head -1)
|
|
70
|
+
|
|
71
|
+
if [[ -n "$issue_number" ]]; then
|
|
72
|
+
echo "#$issue_number ✓"
|
|
73
|
+
# Save mapping: old_name -> new_number
|
|
74
|
+
echo "$task_basename $issue_number" >> "$MAPPING_FILE"
|
|
75
|
+
else
|
|
76
|
+
echo "FAILED"
|
|
77
|
+
echo "⚠️ Failed to create issue for $task_basename"
|
|
78
|
+
fi
|
|
79
|
+
done
|
|
80
|
+
|
|
81
|
+
echo ""
|
|
82
|
+
echo "✅ Created $current task issues"
|
|
83
|
+
echo " Mapping saved to: $MAPPING_FILE"
|
|
84
|
+
|
|
85
|
+
# Output the mapping file path for next script
|
|
86
|
+
echo "$MAPPING_FILE"
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Update Epic File
|
|
3
|
+
# Updates epic.md with GitHub URL and real task issue numbers
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
+
EPIC_NAME="${1:-}"
|
|
9
|
+
EPIC_NUMBER="${2:-}"
|
|
10
|
+
|
|
11
|
+
if [[ -z "$EPIC_NAME" ]] || [[ -z "$EPIC_NUMBER" ]]; then
|
|
12
|
+
echo "❌ Error: Epic name and epic number required"
|
|
13
|
+
echo "Usage: $0 <epic_name> <epic_number>"
|
|
14
|
+
exit 1
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
EPIC_DIR=".claude/epics/$EPIC_NAME"
|
|
18
|
+
EPIC_FILE="$EPIC_DIR/epic.md"
|
|
19
|
+
MAPPING_FILE="$EPIC_DIR/.task-mapping.txt"
|
|
20
|
+
|
|
21
|
+
if [[ ! -f "$EPIC_FILE" ]]; then
|
|
22
|
+
echo "❌ Error: Epic file not found: $EPIC_FILE"
|
|
23
|
+
exit 1
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# Get repository info
|
|
27
|
+
REPO=$(gh repo view --json nameWithOwner -q .nameWithOwner 2>/dev/null || echo "unknown/repo")
|
|
28
|
+
EPIC_URL="https://github.com/$REPO/issues/$EPIC_NUMBER"
|
|
29
|
+
|
|
30
|
+
echo "📄 Updating epic file: $EPIC_FILE"
|
|
31
|
+
|
|
32
|
+
# Create backup
|
|
33
|
+
cp "$EPIC_FILE" "$EPIC_FILE.backup"
|
|
34
|
+
|
|
35
|
+
# Update frontmatter
|
|
36
|
+
timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
37
|
+
|
|
38
|
+
awk -v url="$EPIC_URL" -v ts="$timestamp" '
|
|
39
|
+
BEGIN { in_front=0; front_done=0 }
|
|
40
|
+
/^---$/ {
|
|
41
|
+
if (!front_done) {
|
|
42
|
+
in_front = !in_front
|
|
43
|
+
if (!in_front) front_done=1
|
|
44
|
+
}
|
|
45
|
+
print
|
|
46
|
+
next
|
|
47
|
+
}
|
|
48
|
+
in_front && /^github:/ {
|
|
49
|
+
print "github: " url
|
|
50
|
+
next
|
|
51
|
+
}
|
|
52
|
+
in_front && /^updated:/ {
|
|
53
|
+
print "updated: " ts
|
|
54
|
+
next
|
|
55
|
+
}
|
|
56
|
+
{ print }
|
|
57
|
+
' "$EPIC_FILE.backup" > "$EPIC_FILE.tmp"
|
|
58
|
+
|
|
59
|
+
# If mapping file exists, update task references in the body
|
|
60
|
+
if [[ -f "$MAPPING_FILE" ]]; then
|
|
61
|
+
echo " Updating task references with real issue numbers..."
|
|
62
|
+
|
|
63
|
+
# Read mapping and update task references
|
|
64
|
+
while read -r old_name new_number; do
|
|
65
|
+
# Update checkbox items like "- [ ] 001" to "- [ ] #2"
|
|
66
|
+
sed -i "s/- \[ \] $old_name\b/- [ ] #$new_number/g" "$EPIC_FILE.tmp"
|
|
67
|
+
sed -i "s/- \[x\] $old_name\b/- [x] #$new_number/g" "$EPIC_FILE.tmp"
|
|
68
|
+
|
|
69
|
+
# Update task links
|
|
70
|
+
sed -i "s/Task $old_name\b/Task #$new_number/g" "$EPIC_FILE.tmp"
|
|
71
|
+
done < "$MAPPING_FILE"
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
# Finalize
|
|
75
|
+
mv "$EPIC_FILE.tmp" "$EPIC_FILE"
|
|
76
|
+
rm "$EPIC_FILE.backup"
|
|
77
|
+
|
|
78
|
+
echo "✅ Epic file updated"
|
|
79
|
+
echo " GitHub: $EPIC_URL"
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Update Task References
|
|
3
|
+
# Renames task files to GitHub issue numbers and updates frontmatter
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
+
EPIC_NAME="${1:-}"
|
|
9
|
+
MAPPING_FILE="${2:-}"
|
|
10
|
+
|
|
11
|
+
if [[ -z "$EPIC_NAME" ]] || [[ -z "$MAPPING_FILE" ]]; then
|
|
12
|
+
echo "❌ Error: Epic name and mapping file required"
|
|
13
|
+
echo "Usage: $0 <epic_name> <mapping_file>"
|
|
14
|
+
exit 1
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
if [[ ! -f "$MAPPING_FILE" ]]; then
|
|
18
|
+
echo "❌ Error: Mapping file not found: $MAPPING_FILE"
|
|
19
|
+
exit 1
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
EPIC_DIR=".claude/epics/$EPIC_NAME"
|
|
23
|
+
|
|
24
|
+
if [[ ! -d "$EPIC_DIR" ]]; then
|
|
25
|
+
echo "❌ Error: Epic directory not found: $EPIC_DIR"
|
|
26
|
+
exit 1
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
# Get repository info
|
|
30
|
+
REPO=$(gh repo view --json nameWithOwner -q .nameWithOwner 2>/dev/null || echo "unknown/repo")
|
|
31
|
+
|
|
32
|
+
echo "🔗 Updating task references and renaming files"
|
|
33
|
+
|
|
34
|
+
# Read mapping file and rename files
|
|
35
|
+
while read -r old_name new_number; do
|
|
36
|
+
old_file="$EPIC_DIR/$old_name.md"
|
|
37
|
+
new_file="$EPIC_DIR/$new_number.md"
|
|
38
|
+
|
|
39
|
+
if [[ ! -f "$old_file" ]]; then
|
|
40
|
+
echo "⚠️ File not found: $old_file (skipping)"
|
|
41
|
+
continue
|
|
42
|
+
fi
|
|
43
|
+
|
|
44
|
+
echo -n " Renaming $old_name.md → $new_number.md... "
|
|
45
|
+
|
|
46
|
+
# Create backup
|
|
47
|
+
cp "$old_file" "$old_file.backup"
|
|
48
|
+
|
|
49
|
+
# Update frontmatter with GitHub URL and timestamp
|
|
50
|
+
github_url="https://github.com/$REPO/issues/$new_number"
|
|
51
|
+
timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
52
|
+
|
|
53
|
+
# Update frontmatter
|
|
54
|
+
awk -v url="$github_url" -v ts="$timestamp" '
|
|
55
|
+
BEGIN { in_front=0; front_done=0 }
|
|
56
|
+
/^---$/ {
|
|
57
|
+
if (!front_done) {
|
|
58
|
+
in_front = !in_front
|
|
59
|
+
if (!in_front) front_done=1
|
|
60
|
+
}
|
|
61
|
+
print
|
|
62
|
+
next
|
|
63
|
+
}
|
|
64
|
+
in_front && /^github:/ {
|
|
65
|
+
print "github: " url
|
|
66
|
+
next
|
|
67
|
+
}
|
|
68
|
+
in_front && /^updated:/ {
|
|
69
|
+
print "updated: " ts
|
|
70
|
+
next
|
|
71
|
+
}
|
|
72
|
+
{ print }
|
|
73
|
+
' "$old_file" > "$new_file"
|
|
74
|
+
|
|
75
|
+
# Remove old file if new file was created successfully
|
|
76
|
+
if [[ -f "$new_file" ]]; then
|
|
77
|
+
rm "$old_file"
|
|
78
|
+
rm "$old_file.backup"
|
|
79
|
+
echo "✓"
|
|
80
|
+
else
|
|
81
|
+
# Restore from backup if something went wrong
|
|
82
|
+
mv "$old_file.backup" "$old_file"
|
|
83
|
+
echo "FAILED"
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
done < "$MAPPING_FILE"
|
|
87
|
+
|
|
88
|
+
echo ""
|
|
89
|
+
echo "✅ Task files renamed and frontmatter updated"
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Epic Sync - Complete Orchestration
|
|
3
|
+
# Orchestrates the full epic sync workflow with all 4 modular scripts
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
+
EPIC_NAME="${1:-}"
|
|
9
|
+
|
|
10
|
+
if [[ -z "$EPIC_NAME" ]]; then
|
|
11
|
+
echo ""
|
|
12
|
+
echo "❌ Error: Epic name required"
|
|
13
|
+
echo ""
|
|
14
|
+
echo "Usage: $0 <epic_name>"
|
|
15
|
+
echo ""
|
|
16
|
+
echo "Example:"
|
|
17
|
+
echo " $0 postgresql-connection-module"
|
|
18
|
+
echo ""
|
|
19
|
+
exit 1
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
EPIC_DIR=".claude/epics/$EPIC_NAME"
|
|
23
|
+
|
|
24
|
+
# Validate epic exists
|
|
25
|
+
if [[ ! -d "$EPIC_DIR" ]]; then
|
|
26
|
+
echo "❌ Error: Epic directory not found: $EPIC_DIR"
|
|
27
|
+
echo ""
|
|
28
|
+
echo "Create an epic first:"
|
|
29
|
+
echo " /pm:prd-new $EPIC_NAME"
|
|
30
|
+
echo " /pm:prd-parse $EPIC_NAME"
|
|
31
|
+
echo " /pm:epic-decompose $EPIC_NAME"
|
|
32
|
+
exit 1
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
if [[ ! -f "$EPIC_DIR/epic.md" ]]; then
|
|
36
|
+
echo "❌ Error: Epic file not found: $EPIC_DIR/epic.md"
|
|
37
|
+
exit 1
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
# Check for tasks
|
|
41
|
+
task_count=$(find "$EPIC_DIR" -name "[0-9]*.md" -type f 2>/dev/null | wc -l)
|
|
42
|
+
if [[ $task_count -eq 0 ]]; then
|
|
43
|
+
echo "❌ Error: No tasks found in $EPIC_DIR"
|
|
44
|
+
echo ""
|
|
45
|
+
echo "Create tasks first:"
|
|
46
|
+
echo " /pm:epic-decompose $EPIC_NAME"
|
|
47
|
+
exit 1
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
echo ""
|
|
51
|
+
echo "🚀 Starting Epic Sync"
|
|
52
|
+
echo "═══════════════════════════════════════════"
|
|
53
|
+
echo " Epic: $EPIC_NAME"
|
|
54
|
+
echo " Tasks: $task_count"
|
|
55
|
+
echo "═══════════════════════════════════════════"
|
|
56
|
+
echo ""
|
|
57
|
+
|
|
58
|
+
# Step 1: Create epic issue
|
|
59
|
+
echo "📝 Step 1/4: Creating Epic Issue"
|
|
60
|
+
echo "─────────────────────────────────────────"
|
|
61
|
+
|
|
62
|
+
epic_number=$(bash "$SCRIPT_DIR/epic-sync/create-epic-issue.sh" "$EPIC_NAME")
|
|
63
|
+
|
|
64
|
+
if [[ -z "$epic_number" ]]; then
|
|
65
|
+
echo ""
|
|
66
|
+
echo "❌ Failed to create epic issue"
|
|
67
|
+
exit 1
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
echo ""
|
|
71
|
+
echo "✅ Epic issue created: #$epic_number"
|
|
72
|
+
echo ""
|
|
73
|
+
|
|
74
|
+
# Step 2: Create task issues
|
|
75
|
+
echo "📋 Step 2/4: Creating Task Issues"
|
|
76
|
+
echo "─────────────────────────────────────────"
|
|
77
|
+
|
|
78
|
+
task_mapping_file=$(bash "$SCRIPT_DIR/epic-sync/create-task-issues.sh" "$EPIC_NAME" "$epic_number")
|
|
79
|
+
|
|
80
|
+
if [[ ! -f "$task_mapping_file" ]]; then
|
|
81
|
+
echo ""
|
|
82
|
+
echo "❌ Failed to create task issues or mapping file"
|
|
83
|
+
exit 1
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
echo ""
|
|
87
|
+
echo "✅ Task issues created"
|
|
88
|
+
echo " Mapping: $task_mapping_file"
|
|
89
|
+
echo ""
|
|
90
|
+
|
|
91
|
+
# Step 3: Update references and rename files
|
|
92
|
+
echo "🔗 Step 3/4: Updating References & Renaming Files"
|
|
93
|
+
echo "─────────────────────────────────────────"
|
|
94
|
+
|
|
95
|
+
bash "$SCRIPT_DIR/epic-sync/update-references.sh" "$EPIC_NAME" "$task_mapping_file"
|
|
96
|
+
|
|
97
|
+
echo ""
|
|
98
|
+
echo "✅ Files renamed and references updated"
|
|
99
|
+
echo ""
|
|
100
|
+
|
|
101
|
+
# Step 4: Update epic file
|
|
102
|
+
echo "📄 Step 4/4: Updating Epic File"
|
|
103
|
+
echo "─────────────────────────────────────────"
|
|
104
|
+
|
|
105
|
+
bash "$SCRIPT_DIR/epic-sync/update-epic-file.sh" "$EPIC_NAME" "$epic_number"
|
|
106
|
+
|
|
107
|
+
echo ""
|
|
108
|
+
|
|
109
|
+
# Get repository info for final output
|
|
110
|
+
REPO=$(gh repo view --json nameWithOwner -q .nameWithOwner 2>/dev/null || echo "unknown/repo")
|
|
111
|
+
|
|
112
|
+
# Final summary
|
|
113
|
+
echo ""
|
|
114
|
+
echo "✨ Epic Sync Complete!"
|
|
115
|
+
echo "═══════════════════════════════════════════"
|
|
116
|
+
echo ""
|
|
117
|
+
echo "📊 Summary:"
|
|
118
|
+
echo " Epic: #$epic_number - $EPIC_NAME"
|
|
119
|
+
echo " Tasks: $task_count issues created"
|
|
120
|
+
echo " Files: Renamed to GitHub issue numbers"
|
|
121
|
+
echo ""
|
|
122
|
+
echo "🔗 Links:"
|
|
123
|
+
echo " Epic: https://github.com/$REPO/issues/$epic_number"
|
|
124
|
+
echo " Tasks: View in GitHub project board"
|
|
125
|
+
echo ""
|
|
126
|
+
echo "📁 Local Files:"
|
|
127
|
+
echo " Epic: $EPIC_DIR/epic.md"
|
|
128
|
+
echo " Tasks: $EPIC_DIR/<issue_number>.md"
|
|
129
|
+
echo " Mapping: $EPIC_DIR/.task-mapping.txt"
|
|
130
|
+
echo ""
|
|
131
|
+
echo "📋 Next Steps:"
|
|
132
|
+
echo " 1. Review epic and tasks on GitHub"
|
|
133
|
+
echo " 2. Start working on a task:"
|
|
134
|
+
echo " /pm:issue-start <issue_number>"
|
|
135
|
+
echo " 3. Or start the full epic in parallel:"
|
|
136
|
+
echo " /pm:epic-start $EPIC_NAME"
|
|
137
|
+
echo ""
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* PM Help Script - Node.js Implementation
|
|
5
|
+
*
|
|
6
|
+
* Migrated from help.sh to provide help information for PM commands
|
|
7
|
+
* Maintains full compatibility with the original bash implementation
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
function displayHelp() {
|
|
11
|
+
const helpContent = `
|
|
12
|
+
|
|
13
|
+
📚 Claude Code PM - Project Management System
|
|
14
|
+
=============================================
|
|
15
|
+
|
|
16
|
+
🎯 Quick Start Workflow
|
|
17
|
+
1. /pm:prd-new <name> - Create a new PRD
|
|
18
|
+
2. /pm:prd-parse <name> - Convert PRD to epic
|
|
19
|
+
3. /pm:epic-decompose <name> - Break into tasks
|
|
20
|
+
4. /pm:epic-sync <name> - Push to GitHub
|
|
21
|
+
5. /pm:epic-start <name> - Start parallel execution
|
|
22
|
+
|
|
23
|
+
📄 PRD Commands
|
|
24
|
+
/pm:prd-new <name> - Launch brainstorming for new product requirement
|
|
25
|
+
/pm:prd-parse <name> - Convert PRD to implementation epic
|
|
26
|
+
/pm:prd-list - List all PRDs
|
|
27
|
+
/pm:prd-edit <name> - Edit existing PRD
|
|
28
|
+
/pm:prd-status - Show PRD implementation status
|
|
29
|
+
|
|
30
|
+
📚 Epic Commands
|
|
31
|
+
/pm:epic-decompose <name> - Break epic into task files
|
|
32
|
+
/pm:epic-sync <name> - Push epic and tasks to GitHub
|
|
33
|
+
/pm:epic-oneshot <name> - Decompose and sync in one command
|
|
34
|
+
/pm:epic-list - List all epics
|
|
35
|
+
/pm:epic-show <name> - Display epic and its tasks
|
|
36
|
+
/pm:epic-status [name] - Show epic progress
|
|
37
|
+
/pm:epic-close <name> - Mark epic as complete
|
|
38
|
+
/pm:epic-edit <name> - Edit epic details
|
|
39
|
+
/pm:epic-refresh <name> - Update epic progress from tasks
|
|
40
|
+
/pm:epic-start <name> - Launch parallel agent execution
|
|
41
|
+
|
|
42
|
+
📝 Issue Commands
|
|
43
|
+
/pm:issue-show <num> - Display issue and sub-issues
|
|
44
|
+
/pm:issue-status <num> - Check issue status
|
|
45
|
+
/pm:issue-start <num> - Begin work with specialized agent
|
|
46
|
+
/pm:issue-sync <num> - Push updates to GitHub
|
|
47
|
+
/pm:issue-close <num> - Mark issue as complete
|
|
48
|
+
/pm:issue-reopen <num> - Reopen closed issue
|
|
49
|
+
/pm:issue-edit <num> - Edit issue details
|
|
50
|
+
/pm:issue-analyze <num> - Analyze for parallel work streams
|
|
51
|
+
|
|
52
|
+
🔄 Workflow Commands
|
|
53
|
+
/pm:next - Show next priority tasks
|
|
54
|
+
/pm:status - Overall project dashboard
|
|
55
|
+
/pm:standup - Daily standup report
|
|
56
|
+
/pm:blocked - Show blocked tasks
|
|
57
|
+
/pm:in-progress - List work in progress
|
|
58
|
+
|
|
59
|
+
🔗 Sync Commands
|
|
60
|
+
/pm:sync - Full bidirectional sync with GitHub
|
|
61
|
+
/pm:import <issue> - Import existing GitHub issues
|
|
62
|
+
|
|
63
|
+
🔧 Maintenance Commands
|
|
64
|
+
/pm:validate - Check system integrity
|
|
65
|
+
/pm:clean - Archive completed work
|
|
66
|
+
/pm:search <query> - Search across all content
|
|
67
|
+
|
|
68
|
+
⚙️ Setup Commands
|
|
69
|
+
/pm:init - Install dependencies and configure GitHub
|
|
70
|
+
/pm:help - Show this help message
|
|
71
|
+
|
|
72
|
+
💡 Tips
|
|
73
|
+
• Use /pm:next to find available work
|
|
74
|
+
• Run /pm:status for quick overview
|
|
75
|
+
• Epic workflow: prd-new → prd-parse → epic-decompose → epic-sync
|
|
76
|
+
• View README.md for complete documentation
|
|
77
|
+
`;
|
|
78
|
+
|
|
79
|
+
return helpContent;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// CommonJS export for testing
|
|
83
|
+
module.exports = displayHelp;
|
|
84
|
+
|
|
85
|
+
// CLI execution
|
|
86
|
+
if (require.main === module) {
|
|
87
|
+
console.log('Helping...');
|
|
88
|
+
console.log('');
|
|
89
|
+
console.log('');
|
|
90
|
+
console.log(displayHelp());
|
|
91
|
+
process.exit(0);
|
|
92
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# PM Help Script - Wrapper for Node.js implementation
|
|
4
|
+
# This wrapper maintains backward compatibility while delegating to the Node.js version
|
|
5
|
+
|
|
6
|
+
# Get the directory of this script
|
|
7
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
+
|
|
9
|
+
# Check if Node.js is available
|
|
10
|
+
if command -v node >/dev/null 2>&1; then
|
|
11
|
+
# Use the Node.js implementation
|
|
12
|
+
node "$SCRIPT_DIR/help.js"
|
|
13
|
+
exit $?
|
|
14
|
+
else
|
|
15
|
+
# Fallback to the original bash implementation if Node.js is not available
|
|
16
|
+
echo "⚠️ Node.js not found, falling back to bash implementation"
|
|
17
|
+
echo ""
|
|
18
|
+
|
|
19
|
+
# Original bash implementation (preserved for fallback)
|
|
20
|
+
echo "Helping..."
|
|
21
|
+
echo ""
|
|
22
|
+
echo ""
|
|
23
|
+
|
|
24
|
+
echo "📚 Claude Code PM - Project Management System"
|
|
25
|
+
echo "============================================="
|
|
26
|
+
echo ""
|
|
27
|
+
echo "🎯 Quick Start Workflow"
|
|
28
|
+
echo " 1. /pm:prd-new <name> - Create a new PRD"
|
|
29
|
+
echo " 2. /pm:prd-parse <name> - Convert PRD to epic"
|
|
30
|
+
echo " 3. /pm:epic-decompose <name> - Break into tasks"
|
|
31
|
+
echo " 4. /pm:epic-sync <name> - Push to GitHub"
|
|
32
|
+
echo " 5. /pm:epic-start <name> - Start parallel execution"
|
|
33
|
+
echo ""
|
|
34
|
+
echo "📄 PRD Commands"
|
|
35
|
+
echo " /pm:prd-new <name> - Launch brainstorming for new product requirement"
|
|
36
|
+
echo " /pm:prd-parse <name> - Convert PRD to implementation epic"
|
|
37
|
+
echo " /pm:prd-list - List all PRDs"
|
|
38
|
+
echo " /pm:prd-edit <name> - Edit existing PRD"
|
|
39
|
+
echo " /pm:prd-status - Show PRD implementation status"
|
|
40
|
+
echo ""
|
|
41
|
+
echo "📚 Epic Commands"
|
|
42
|
+
echo " /pm:epic-decompose <name> - Break epic into task files"
|
|
43
|
+
echo " /pm:epic-sync <name> - Push epic and tasks to GitHub"
|
|
44
|
+
echo " /pm:epic-oneshot <name> - Decompose and sync in one command"
|
|
45
|
+
echo " /pm:epic-list - List all epics"
|
|
46
|
+
echo " /pm:epic-show <name> - Display epic and its tasks"
|
|
47
|
+
echo " /pm:epic-status [name] - Show epic progress"
|
|
48
|
+
echo " /pm:epic-close <name> - Mark epic as complete"
|
|
49
|
+
echo " /pm:epic-edit <name> - Edit epic details"
|
|
50
|
+
echo " /pm:epic-refresh <name> - Update epic progress from tasks"
|
|
51
|
+
echo " /pm:epic-start <name> - Launch parallel agent execution"
|
|
52
|
+
echo ""
|
|
53
|
+
echo "📝 Issue Commands"
|
|
54
|
+
echo " /pm:issue-show <num> - Display issue and sub-issues"
|
|
55
|
+
echo " /pm:issue-status <num> - Check issue status"
|
|
56
|
+
echo " /pm:issue-start <num> - Begin work with specialized agent"
|
|
57
|
+
echo " /pm:issue-sync <num> - Push updates to GitHub"
|
|
58
|
+
echo " /pm:issue-close <num> - Mark issue as complete"
|
|
59
|
+
echo " /pm:issue-reopen <num> - Reopen closed issue"
|
|
60
|
+
echo " /pm:issue-edit <num> - Edit issue details"
|
|
61
|
+
echo " /pm:issue-analyze <num> - Analyze for parallel work streams"
|
|
62
|
+
echo ""
|
|
63
|
+
echo "🔄 Workflow Commands"
|
|
64
|
+
echo " /pm:next - Show next priority tasks"
|
|
65
|
+
echo " /pm:status - Overall project dashboard"
|
|
66
|
+
echo " /pm:standup - Daily standup report"
|
|
67
|
+
echo " /pm:blocked - Show blocked tasks"
|
|
68
|
+
echo " /pm:in-progress - List work in progress"
|
|
69
|
+
echo ""
|
|
70
|
+
echo "🔗 Sync Commands"
|
|
71
|
+
echo " /pm:sync - Full bidirectional sync with GitHub"
|
|
72
|
+
echo " /pm:import <issue> - Import existing GitHub issues"
|
|
73
|
+
echo ""
|
|
74
|
+
echo "🔧 Maintenance Commands"
|
|
75
|
+
echo " /pm:validate - Check system integrity"
|
|
76
|
+
echo " /pm:clean - Archive completed work"
|
|
77
|
+
echo " /pm:search <query> - Search across all content"
|
|
78
|
+
echo ""
|
|
79
|
+
echo "⚙️ Setup Commands"
|
|
80
|
+
echo " /pm:init - Install dependencies and configure GitHub"
|
|
81
|
+
echo " /pm:help - Show this help message"
|
|
82
|
+
echo ""
|
|
83
|
+
echo "💡 Tips"
|
|
84
|
+
echo " • Use /pm:next to find available work"
|
|
85
|
+
echo " • Run /pm:status for quick overview"
|
|
86
|
+
echo " • Epic workflow: prd-new → prd-parse → epic-decompose → epic-sync"
|
|
87
|
+
echo " • View README.md for complete documentation"
|
|
88
|
+
|
|
89
|
+
exit 0
|
|
90
|
+
fi
|