claude-autopm 2.8.1 → 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 -529
- package/bin/autopm.js +2 -0
- package/bin/commands/plugin.js +395 -0
- package/bin/commands/team.js +184 -10
- package/install/install.js +223 -4
- package/lib/plugins/PluginManager.js +1328 -0
- package/lib/plugins/PluginManager.old.js +400 -0
- package/package.json +5 -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/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/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/gemini-api-expert.md +880 -0
- package/packages/plugin-cloud/agents/openai-python-expert.md +1087 -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/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/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/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/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/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/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/bigquery-expert.md +24 -15
- package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/cosmosdb-expert.md +22 -15
- package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/mongodb-expert.md +24 -15
- package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/postgresql-expert.md +23 -15
- package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/redis-expert.md +29 -7
- 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/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/github-operations-specialist.md +1 -1
- 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/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/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/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/e2e-test-engineer.md +219 -0
- package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/react-frontend-engineer.md +176 -0
- package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/tailwindcss-expert.md +251 -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/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/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/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/github/workflow-create.md +42 -0
- package/packages/plugin-pm/package.json +57 -0
- package/packages/plugin-pm/plugin.json +503 -0
- package/packages/plugin-testing/README.md +401 -0
- package/{autopm/.claude/agents/testing → packages/plugin-testing/agents}/frontend-testing-engineer.md +373 -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
- package/scripts/publish-plugins.sh +166 -0
- package/autopm/.claude/agents/data/airflow-orchestration-expert.md +0 -52
- package/autopm/.claude/agents/data/kedro-pipeline-expert.md +0 -50
- package/autopm/.claude/agents/integration/message-queue-engineer.md +0 -794
- package/autopm/.claude/commands/ai/langgraph-workflow.md +0 -65
- package/autopm/.claude/commands/ai/openai-chat.md +0 -65
- package/autopm/.claude/commands/playwright/test-scaffold.md +0 -38
- package/autopm/.claude/commands/python/api-scaffold.md +0 -50
- package/autopm/.claude/commands/python/docs-query.md +0 -48
- package/autopm/.claude/commands/testing/prime.md +0 -314
- package/autopm/.claude/commands/testing/run.md +0 -125
- package/autopm/.claude/commands/ui/bootstrap-scaffold.md +0 -65
- package/autopm/.claude/rules/database-management-strategy.md +0 -17
- package/autopm/.claude/rules/database-pipeline.md +0 -94
- package/autopm/.claude/rules/ux-design-rules.md +0 -209
- package/autopm/.claude/rules/visual-testing.md +0 -223
- package/autopm/.claude/scripts/azure/README.md +0 -192
- package/autopm/.claude/scripts/azure/active-work.js +0 -524
- package/autopm/.claude/scripts/azure/active-work.sh +0 -20
- package/autopm/.claude/scripts/azure/blocked.js +0 -520
- package/autopm/.claude/scripts/azure/blocked.sh +0 -20
- package/autopm/.claude/scripts/azure/daily.js +0 -533
- package/autopm/.claude/scripts/azure/daily.sh +0 -20
- package/autopm/.claude/scripts/azure/dashboard.js +0 -970
- package/autopm/.claude/scripts/azure/dashboard.sh +0 -20
- package/autopm/.claude/scripts/azure/feature-list.js +0 -254
- package/autopm/.claude/scripts/azure/feature-list.sh +0 -20
- package/autopm/.claude/scripts/azure/feature-show.js +0 -7
- package/autopm/.claude/scripts/azure/feature-show.sh +0 -20
- package/autopm/.claude/scripts/azure/feature-status.js +0 -604
- package/autopm/.claude/scripts/azure/feature-status.sh +0 -20
- package/autopm/.claude/scripts/azure/help.js +0 -342
- package/autopm/.claude/scripts/azure/help.sh +0 -20
- package/autopm/.claude/scripts/azure/next-task.js +0 -508
- package/autopm/.claude/scripts/azure/next-task.sh +0 -20
- package/autopm/.claude/scripts/azure/search.js +0 -469
- package/autopm/.claude/scripts/azure/search.sh +0 -20
- package/autopm/.claude/scripts/azure/setup.js +0 -745
- package/autopm/.claude/scripts/azure/setup.sh +0 -20
- package/autopm/.claude/scripts/azure/sprint-report.js +0 -1012
- package/autopm/.claude/scripts/azure/sprint-report.sh +0 -20
- package/autopm/.claude/scripts/azure/sync.js +0 -563
- package/autopm/.claude/scripts/azure/sync.sh +0 -20
- package/autopm/.claude/scripts/azure/us-list.js +0 -210
- package/autopm/.claude/scripts/azure/us-list.sh +0 -20
- package/autopm/.claude/scripts/azure/us-status.js +0 -238
- package/autopm/.claude/scripts/azure/us-status.sh +0 -20
- package/autopm/.claude/scripts/azure/validate.js +0 -626
- package/autopm/.claude/scripts/azure/validate.sh +0 -20
- package/autopm/.claude/scripts/azure/wrapper-template.sh +0 -20
- package/autopm/.claude/scripts/github/dependency-tracker.js +0 -554
- package/autopm/.claude/scripts/github/dependency-validator.js +0 -545
- package/autopm/.claude/scripts/github/dependency-visualizer.js +0 -477
- package/bin/node/azure-feature-show.js +0 -7
- /package/{autopm/.claude/agents/cloud → packages/plugin-ai/agents}/gemini-api-expert.md +0 -0
- /package/{autopm/.claude/agents/data → packages/plugin-ai/agents}/langgraph-workflow-expert.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-ai/agents}/openai-python-expert.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/README.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/aws-cloud-architect.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/azure-cloud-architect.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/gcp-cloud-architect.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/gcp-cloud-functions-engineer.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/kubernetes-orchestrator.md +0 -0
- /package/{autopm/.claude/agents/cloud → packages/plugin-cloud/agents}/terraform-infrastructure-expert.md +0 -0
- /package/{autopm/.claude/commands/cloud → packages/plugin-cloud/commands}/infra-deploy.md +0 -0
- /package/{autopm/.claude/commands/kubernetes/deploy.md → packages/plugin-cloud/commands/k8s-deploy.md} +0 -0
- /package/{autopm/.claude/commands/infrastructure → packages/plugin-cloud/commands}/ssh-security.md +0 -0
- /package/{autopm/.claude/commands/infrastructure → packages/plugin-cloud/commands}/traefik-setup.md +0 -0
- /package/{autopm/.claude → packages/plugin-cloud}/rules/infrastructure-pipeline.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/agents/core/agent-manager.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/agents/core/code-analyzer.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/agents/core/file-analyzer.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/agents/core/test-runner.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/rules/ai-integration-patterns.md +0 -0
- /package/{autopm/.claude → packages/plugin-core}/rules/performance-guidelines.md +0 -0
- /package/{autopm/.claude/agents/databases → packages/plugin-databases/agents}/README.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/README.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/azure-devops-specialist.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/docker-containerization-expert.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/mcp-context-manager.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/observability-engineer.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/ssh-operations-expert.md +0 -0
- /package/{autopm/.claude/agents/devops → packages/plugin-devops/agents}/traefik-proxy-expert.md +0 -0
- /package/{autopm/.claude/commands/github → packages/plugin-devops/commands}/workflow-create.md +0 -0
- /package/{autopm/.claude → packages/plugin-devops}/rules/ci-cd-kubernetes-strategy.md +0 -0
- /package/{autopm/.claude → packages/plugin-devops}/rules/devops-troubleshooting-playbook.md +0 -0
- /package/{autopm/.claude → packages/plugin-devops}/rules/docker-first-development.md +0 -0
- /package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/README.md +0 -0
- /package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/nats-messaging-expert.md +0 -0
- /package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/react-ui-expert.md +0 -0
- /package/{autopm/.claude/agents/frameworks → packages/plugin-frameworks/agents}/ux-design-expert.md +0 -0
- /package/{autopm/.claude/commands/react → packages/plugin-frameworks/commands}/app-scaffold.md +0 -0
- /package/{autopm/.claude/commands/ui → packages/plugin-frameworks/commands}/tailwind-system.md +0 -0
- /package/{autopm/.claude → packages/plugin-frameworks}/rules/ui-development-standards.md +0 -0
- /package/{autopm/.claude → packages/plugin-frameworks}/rules/ui-framework-rules.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/README.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/bash-scripting-expert.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/javascript-frontend-engineer.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/nodejs-backend-engineer.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/python-backend-engineer.md +0 -0
- /package/{autopm/.claude/agents/languages → packages/plugin-languages/agents}/python-backend-expert.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/COMMANDS.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/COMMAND_MAPPING.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/INTEGRATION_FIX.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/README.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/active-work.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/aliases.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/blocked-items.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/clean.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/docs-query.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-decompose.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-list.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-new.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-show.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/feature-start.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/fix-integration-example.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/help.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/import-us.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/init.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/next-task.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/search.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/sprint-status.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/standup.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/sync-all.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-analyze.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-close.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-edit.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-list.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-new.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-reopen.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-show.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-start.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-status.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/task-sync.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-edit.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-list.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-new.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-parse.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-show.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/us-status.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/validate.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/commands/azure/work-item-sync.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/blocked.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/clean.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/context-create.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/context-prime.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/context-update.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/context.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-close.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-decompose.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-edit.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-list.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-merge.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-oneshot.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-refresh.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-show.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-split.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-start.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-status.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-sync-modular.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-sync-original.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/epic-sync.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/help.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/import.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/in-progress.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/init.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-analyze.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-close.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-edit.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-reopen.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-show.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-start.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-status.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/issue-sync.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/next.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-edit.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-list.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-new.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-parse.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/prd-status.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/search.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/standup.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/status.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/sync.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/test-reference-update.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/validate.md +0 -0
- /package/{autopm/.claude/commands/pm → packages/plugin-pm/commands}/what-next.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/analytics.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/blocked.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/blocked.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/clean.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/context-create.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/context-prime.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/context-update.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/context.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-close.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-edit.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-list.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-list.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-show.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-show.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-split.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-start/epic-start.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-start/epic-start.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-status.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-status.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/README.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/create-epic-issue.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/create-task-issues.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/update-epic-file.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync/update-references.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/epic-sync.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/help.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/help.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/in-progress.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/in-progress.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/init.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/init.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-close.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-edit.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-show.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-start.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/format-comment.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/gather-updates.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/post-comment.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/preflight-validation.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/issue-sync/update-frontmatter.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/lib/README.md +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/lib/epic-discovery.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/lib/logger.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/next.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/next.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/optimize.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/pr-create.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/pr-list.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-list.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-list.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-new.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-parse.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-status.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/prd-status.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/release.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/search.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/search.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/standup.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/standup.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/status.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/status.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/sync-batch.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/sync.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/template-list.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/template-new.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/validate.js +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/validate.sh +0 -0
- /package/{autopm/.claude → packages/plugin-pm}/scripts/pm/what-next.js +0 -0
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
# RAG Setup Scaffold Command
|
|
2
|
+
|
|
3
|
+
## Required Documentation Access
|
|
4
|
+
|
|
5
|
+
**MANDATORY:** Before scaffolding RAG system, query Context7 for best practices:
|
|
6
|
+
|
|
7
|
+
**Documentation Queries:**
|
|
8
|
+
- `mcp://context7/langchain/rag` - Retrieval-Augmented Generation patterns
|
|
9
|
+
- `mcp://context7/langchain/retrievers` - Vector store retrievers and search
|
|
10
|
+
- `mcp://context7/langchain/embeddings` - Embedding models and optimization
|
|
11
|
+
- `mcp://context7/langchain/vector-stores` - Vector database integration
|
|
12
|
+
- `mcp://context7/openai/embeddings` - OpenAI embeddings API
|
|
13
|
+
|
|
14
|
+
**Why This is Required:**
|
|
15
|
+
- Ensures RAG implementation follows current LangChain best practices
|
|
16
|
+
- Prevents anti-patterns like naive context concatenation
|
|
17
|
+
- Applies Context7-verified retrieval strategies
|
|
18
|
+
- Uses optimized embedding and chunking techniques
|
|
19
|
+
- Implements proper vector store selection and configuration
|
|
20
|
+
|
|
21
|
+
## Command Description
|
|
22
|
+
|
|
23
|
+
Generate production-ready Retrieval-Augmented Generation (RAG) system with Context7-verified patterns:
|
|
24
|
+
- Document ingestion and chunking
|
|
25
|
+
- Vector store setup (Chroma, FAISS, Pinecone)
|
|
26
|
+
- Embedding configuration (OpenAI, HuggingFace)
|
|
27
|
+
- Retrieval strategies (similarity, MMR, contextual compression)
|
|
28
|
+
- RAG chain assembly with RunnablePassthrough
|
|
29
|
+
- Error handling and monitoring
|
|
30
|
+
|
|
31
|
+
## Usage
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
/ai:rag-setup <project-name>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Options
|
|
38
|
+
|
|
39
|
+
- `--vector-store` - Vector database (chroma, faiss, pinecone, weaviate) [default: chroma]
|
|
40
|
+
- `--embedding-model` - Embedding provider (openai, huggingface, cohere) [default: openai]
|
|
41
|
+
- `--chunk-size` - Document chunk size in tokens [default: 512]
|
|
42
|
+
- `--chunk-overlap` - Overlap between chunks [default: 50]
|
|
43
|
+
- `--retrieval-strategy` - Retrieval method (similarity, mmr, compression) [default: mmr]
|
|
44
|
+
- `--top-k` - Number of documents to retrieve [default: 4]
|
|
45
|
+
|
|
46
|
+
## Implementation Steps
|
|
47
|
+
|
|
48
|
+
1. **Query Context7 Documentation**
|
|
49
|
+
```python
|
|
50
|
+
# MANDATORY: Query these Context7 resources before scaffolding
|
|
51
|
+
- /langchain-ai/langchain RAG patterns
|
|
52
|
+
- /langchain-ai/langchain vector stores
|
|
53
|
+
- /langchain-ai/langchain retrievers
|
|
54
|
+
- /openai/openai-python embeddings API
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
2. **Create Project Structure**
|
|
58
|
+
```
|
|
59
|
+
<project-name>/
|
|
60
|
+
├── data/
|
|
61
|
+
│ └── documents/ # Raw documents
|
|
62
|
+
├── vector_stores/
|
|
63
|
+
│ └── chroma_db/ # Persisted embeddings
|
|
64
|
+
├── src/
|
|
65
|
+
│ ├── ingest.py # Document ingestion
|
|
66
|
+
│ ├── retriever.py # Retrieval logic
|
|
67
|
+
│ ├── rag_chain.py # RAG chain assembly
|
|
68
|
+
│ └── config.py # Configuration
|
|
69
|
+
├── tests/
|
|
70
|
+
│ ├── test_ingest.py
|
|
71
|
+
│ ├── test_retriever.py
|
|
72
|
+
│ └── test_rag_chain.py
|
|
73
|
+
├── .env.example
|
|
74
|
+
├── requirements.txt
|
|
75
|
+
└── README.md
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
3. **Generate Document Ingestion (Context7 Pattern)**
|
|
79
|
+
```python
|
|
80
|
+
# src/ingest.py - Context7 best practices
|
|
81
|
+
from langchain_community.document_loaders import DirectoryLoader, TextLoader
|
|
82
|
+
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
|
83
|
+
from langchain_openai import OpenAIEmbeddings
|
|
84
|
+
from langchain_community.vectorstores import Chroma
|
|
85
|
+
|
|
86
|
+
def ingest_documents(data_dir: str, chunk_size: int = 512, chunk_overlap: int = 50):
|
|
87
|
+
"""
|
|
88
|
+
Ingest documents with Context7 best practices.
|
|
89
|
+
|
|
90
|
+
Context7 Pattern: RecursiveCharacterTextSplitter with optimal chunk size
|
|
91
|
+
"""
|
|
92
|
+
# Load documents
|
|
93
|
+
loader = DirectoryLoader(data_dir, glob="**/*.txt", loader_cls=TextLoader)
|
|
94
|
+
documents = loader.load()
|
|
95
|
+
|
|
96
|
+
# Split with Context7-recommended parameters
|
|
97
|
+
text_splitter = RecursiveCharacterTextSplitter(
|
|
98
|
+
chunk_size=chunk_size,
|
|
99
|
+
chunk_overlap=chunk_overlap,
|
|
100
|
+
length_function=len,
|
|
101
|
+
separators=["\n\n", "\n", " ", ""] # Hierarchical splitting
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
chunks = text_splitter.split_documents(documents)
|
|
105
|
+
|
|
106
|
+
# Create embeddings
|
|
107
|
+
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
|
|
108
|
+
|
|
109
|
+
# Store in vector database
|
|
110
|
+
vectorstore = Chroma.from_documents(
|
|
111
|
+
documents=chunks,
|
|
112
|
+
embedding=embeddings,
|
|
113
|
+
persist_directory="./vector_stores/chroma_db"
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
vectorstore.persist()
|
|
117
|
+
return vectorstore
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
4. **Generate Retriever Configuration (Context7 Pattern)**
|
|
121
|
+
```python
|
|
122
|
+
# src/retriever.py - Context7 best practices
|
|
123
|
+
from langchain_community.vectorstores import Chroma
|
|
124
|
+
from langchain_openai import OpenAIEmbeddings
|
|
125
|
+
from langchain.retrievers import ContextualCompressionRetriever
|
|
126
|
+
from langchain.retrievers.document_compressors import LLMChainExtractor
|
|
127
|
+
from langchain_openai import ChatOpenAI
|
|
128
|
+
|
|
129
|
+
def create_retriever(vector_store_path: str, strategy: str = "mmr", top_k: int = 4):
|
|
130
|
+
"""
|
|
131
|
+
Create retriever with Context7 best practices.
|
|
132
|
+
|
|
133
|
+
Context7 Pattern: MMR (Maximal Marginal Relevance) for diversity
|
|
134
|
+
"""
|
|
135
|
+
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
|
|
136
|
+
|
|
137
|
+
vectorstore = Chroma(
|
|
138
|
+
persist_directory=vector_store_path,
|
|
139
|
+
embedding_function=embeddings
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
if strategy == "mmr":
|
|
143
|
+
# Context7 recommended: MMR for diverse results
|
|
144
|
+
retriever = vectorstore.as_retriever(
|
|
145
|
+
search_type="mmr",
|
|
146
|
+
search_kwargs={
|
|
147
|
+
"k": top_k,
|
|
148
|
+
"fetch_k": top_k * 2, # Fetch more, filter to k
|
|
149
|
+
"lambda_mult": 0.7 # Diversity vs relevance tradeoff
|
|
150
|
+
}
|
|
151
|
+
)
|
|
152
|
+
elif strategy == "similarity":
|
|
153
|
+
retriever = vectorstore.as_retriever(
|
|
154
|
+
search_type="similarity",
|
|
155
|
+
search_kwargs={"k": top_k}
|
|
156
|
+
)
|
|
157
|
+
elif strategy == "compression":
|
|
158
|
+
# Context7 pattern: Contextual compression
|
|
159
|
+
base_retriever = vectorstore.as_retriever(search_kwargs={"k": top_k * 2})
|
|
160
|
+
|
|
161
|
+
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
|
|
162
|
+
compressor = LLMChainExtractor.from_llm(llm)
|
|
163
|
+
|
|
164
|
+
retriever = ContextualCompressionRetriever(
|
|
165
|
+
base_compressor=compressor,
|
|
166
|
+
base_retriever=base_retriever
|
|
167
|
+
)
|
|
168
|
+
else:
|
|
169
|
+
raise ValueError(f"Unknown strategy: {strategy}")
|
|
170
|
+
|
|
171
|
+
return retriever
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
5. **Generate RAG Chain (Context7 Pattern)**
|
|
175
|
+
```python
|
|
176
|
+
# src/rag_chain.py - Context7 best practices
|
|
177
|
+
from langchain_core.runnables import RunnablePassthrough, RunnableParallel
|
|
178
|
+
from langchain_core.output_parsers import StrOutputParser
|
|
179
|
+
from langchain_core.prompts import ChatPromptTemplate
|
|
180
|
+
from langchain_openai import ChatOpenAI
|
|
181
|
+
from operator import itemgetter
|
|
182
|
+
|
|
183
|
+
def create_rag_chain(retriever):
|
|
184
|
+
"""
|
|
185
|
+
Create RAG chain with Context7 best practices.
|
|
186
|
+
|
|
187
|
+
Context7 Pattern: RunnablePassthrough.assign() for context injection
|
|
188
|
+
"""
|
|
189
|
+
# Context7 recommended prompt template
|
|
190
|
+
template = \"\"\"Answer the question based only on the following context:
|
|
191
|
+
|
|
192
|
+
{context}
|
|
193
|
+
|
|
194
|
+
Question: {question}
|
|
195
|
+
|
|
196
|
+
Answer the question based on the context above. If you cannot answer the
|
|
197
|
+
question based on the context, say "I don't have enough information to answer."
|
|
198
|
+
\"\"\"
|
|
199
|
+
|
|
200
|
+
prompt = ChatPromptTemplate.from_template(template)
|
|
201
|
+
llm = ChatOpenAI(model="gpt-4", temperature=0)
|
|
202
|
+
|
|
203
|
+
# Context7 pattern: RunnablePassthrough.assign() for elegant context handling
|
|
204
|
+
rag_chain = (
|
|
205
|
+
RunnablePassthrough.assign(
|
|
206
|
+
context=itemgetter("question")
|
|
207
|
+
| retriever
|
|
208
|
+
| (lambda docs: "\n\n".join(doc.page_content for doc in docs))
|
|
209
|
+
)
|
|
210
|
+
| prompt
|
|
211
|
+
| llm
|
|
212
|
+
| StrOutputParser()
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
return rag_chain
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
6. **Generate Configuration**
|
|
219
|
+
```python
|
|
220
|
+
# src/config.py
|
|
221
|
+
from pydantic import BaseModel, Field
|
|
222
|
+
from typing import Literal
|
|
223
|
+
import os
|
|
224
|
+
|
|
225
|
+
class RAGConfig(BaseModel):
|
|
226
|
+
# Embedding configuration
|
|
227
|
+
embedding_model: str = Field(default="text-embedding-3-small")
|
|
228
|
+
embedding_provider: Literal["openai", "huggingface"] = "openai"
|
|
229
|
+
|
|
230
|
+
# Chunking configuration
|
|
231
|
+
chunk_size: int = Field(default=512, ge=100, le=2000)
|
|
232
|
+
chunk_overlap: int = Field(default=50, ge=0, le=500)
|
|
233
|
+
|
|
234
|
+
# Retrieval configuration
|
|
235
|
+
retrieval_strategy: Literal["similarity", "mmr", "compression"] = "mmr"
|
|
236
|
+
top_k: int = Field(default=4, ge=1, le=20)
|
|
237
|
+
|
|
238
|
+
# Vector store configuration
|
|
239
|
+
vector_store: Literal["chroma", "faiss", "pinecone"] = "chroma"
|
|
240
|
+
vector_store_path: str = "./vector_stores/chroma_db"
|
|
241
|
+
|
|
242
|
+
# LLM configuration
|
|
243
|
+
llm_model: str = "gpt-4"
|
|
244
|
+
llm_temperature: float = Field(default=0.0, ge=0.0, le=1.0)
|
|
245
|
+
|
|
246
|
+
# API keys (from environment)
|
|
247
|
+
openai_api_key: str = Field(default_factory=lambda: os.getenv("OPENAI_API_KEY"))
|
|
248
|
+
|
|
249
|
+
class Config:
|
|
250
|
+
env_file = ".env"
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
7. **Generate Tests**
|
|
254
|
+
```python
|
|
255
|
+
# tests/test_rag_chain.py
|
|
256
|
+
import pytest
|
|
257
|
+
from src.rag_chain import create_rag_chain
|
|
258
|
+
from src.retriever import create_retriever
|
|
259
|
+
|
|
260
|
+
def test_rag_chain_response():
|
|
261
|
+
"""Test RAG chain returns relevant answers"""
|
|
262
|
+
retriever = create_retriever("./vector_stores/test_db")
|
|
263
|
+
rag_chain = create_rag_chain(retriever)
|
|
264
|
+
|
|
265
|
+
response = rag_chain.invoke({"question": "What is Python?"})
|
|
266
|
+
|
|
267
|
+
assert response is not None
|
|
268
|
+
assert len(response) > 0
|
|
269
|
+
assert "don't have enough information" not in response.lower()
|
|
270
|
+
|
|
271
|
+
def test_rag_chain_handles_unknown():
|
|
272
|
+
"""Test RAG chain handles questions without context"""
|
|
273
|
+
retriever = create_retriever("./vector_stores/test_db")
|
|
274
|
+
rag_chain = create_rag_chain(retriever)
|
|
275
|
+
|
|
276
|
+
response = rag_chain.invoke({"question": "What is quantum computing?"})
|
|
277
|
+
|
|
278
|
+
# Should indicate lack of information
|
|
279
|
+
assert "don't have enough information" in response.lower() or \
|
|
280
|
+
"cannot answer" in response.lower()
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
8. **Generate README with Context7 References**
|
|
284
|
+
```markdown
|
|
285
|
+
# RAG System - Context7 Best Practices
|
|
286
|
+
|
|
287
|
+
Production-ready RAG system following Context7-verified patterns.
|
|
288
|
+
|
|
289
|
+
## Features
|
|
290
|
+
|
|
291
|
+
- ✅ Hierarchical text splitting (RecursiveCharacterTextSplitter)
|
|
292
|
+
- ✅ MMR retrieval for diverse results
|
|
293
|
+
- ✅ RunnablePassthrough.assign() for clean chain composition
|
|
294
|
+
- ✅ Contextual compression for improved relevance
|
|
295
|
+
- ✅ Production-ready error handling
|
|
296
|
+
|
|
297
|
+
## Context7 Patterns Used
|
|
298
|
+
|
|
299
|
+
This implementation follows patterns from:
|
|
300
|
+
- `/langchain-ai/langchain` (150 snippets, trust 9.2)
|
|
301
|
+
- `/openai/openai-python` (277 snippets, trust 9.1)
|
|
302
|
+
|
|
303
|
+
## Quick Start
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
# Install dependencies
|
|
307
|
+
pip install -r requirements.txt
|
|
308
|
+
|
|
309
|
+
# Set up environment
|
|
310
|
+
cp .env.example .env
|
|
311
|
+
# Add your OPENAI_API_KEY to .env
|
|
312
|
+
|
|
313
|
+
# Ingest documents
|
|
314
|
+
python -m src.ingest
|
|
315
|
+
|
|
316
|
+
# Query RAG system
|
|
317
|
+
python -c "
|
|
318
|
+
from src.retriever import create_retriever
|
|
319
|
+
from src.rag_chain import create_rag_chain
|
|
320
|
+
|
|
321
|
+
retriever = create_retriever('./vector_stores/chroma_db')
|
|
322
|
+
rag_chain = create_rag_chain(retriever)
|
|
323
|
+
|
|
324
|
+
response = rag_chain.invoke({'question': 'Your question here'})
|
|
325
|
+
print(response)
|
|
326
|
+
"
|
|
327
|
+
```
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
9. **Generate requirements.txt**
|
|
331
|
+
```
|
|
332
|
+
langchain>=0.1.0
|
|
333
|
+
langchain-community>=0.0.20
|
|
334
|
+
langchain-openai>=0.0.5
|
|
335
|
+
langchain-core>=0.1.23
|
|
336
|
+
chromadb>=0.4.22
|
|
337
|
+
openai>=1.12.0
|
|
338
|
+
python-dotenv>=1.0.0
|
|
339
|
+
pydantic>=2.0.0
|
|
340
|
+
pytest>=7.4.0
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
## Context7-Verified Best Practices Applied
|
|
344
|
+
|
|
345
|
+
1. **Document Chunking** (from `/langchain-ai/langchain`):
|
|
346
|
+
- RecursiveCharacterTextSplitter for hierarchical splitting
|
|
347
|
+
- Optimal chunk_size=512 with overlap=50
|
|
348
|
+
- Maintains context integrity across chunks
|
|
349
|
+
|
|
350
|
+
2. **Retrieval Strategy** (from `/langchain-ai/langchain`):
|
|
351
|
+
- MMR (Maximal Marginal Relevance) for diversity
|
|
352
|
+
- fetch_k = 2 * k for better result pool
|
|
353
|
+
- lambda_mult=0.7 balances relevance vs diversity
|
|
354
|
+
|
|
355
|
+
3. **RAG Chain Composition** (from `/langchain-ai/langchain`):
|
|
356
|
+
- RunnablePassthrough.assign() for clean context injection
|
|
357
|
+
- itemgetter for explicit data flow
|
|
358
|
+
- StrOutputParser for clean output
|
|
359
|
+
|
|
360
|
+
4. **Embeddings** (from `/openai/openai-python`):
|
|
361
|
+
- text-embedding-3-small for cost-efficiency
|
|
362
|
+
- Persistent vector stores for production use
|
|
363
|
+
|
|
364
|
+
## Testing
|
|
365
|
+
|
|
366
|
+
The generated scaffold includes:
|
|
367
|
+
- Unit tests for ingestion pipeline
|
|
368
|
+
- Integration tests for retrieval
|
|
369
|
+
- End-to-end tests for RAG chain
|
|
370
|
+
- Edge case handling (unknown questions)
|
|
371
|
+
|
|
372
|
+
## Production Considerations
|
|
373
|
+
|
|
374
|
+
- Error handling for API rate limits
|
|
375
|
+
- Monitoring for retrieval quality
|
|
376
|
+
- Cost tracking for embedding/LLM calls
|
|
377
|
+
- Vector store backup strategies
|
|
378
|
+
|
|
379
|
+
## References
|
|
380
|
+
|
|
381
|
+
- Context7: `/langchain-ai/langchain` - RAG patterns
|
|
382
|
+
- Context7: `/openai/openai-python` - Embeddings API
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@claudeautopm/plugin-ai",
|
|
3
|
+
"version": "2.1.0",
|
|
4
|
+
"description": "Complete AI/ML plugin with OpenAI, Gemini, LangChain agents, RAG systems, model deployment, prompt engineering, and MLOps patterns for ClaudeAutoPM",
|
|
5
|
+
"main": "plugin.json",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"claudeautopm",
|
|
9
|
+
"plugin",
|
|
10
|
+
"ai",
|
|
11
|
+
"ml",
|
|
12
|
+
"machine-learning",
|
|
13
|
+
"openai",
|
|
14
|
+
"gemini",
|
|
15
|
+
"langchain",
|
|
16
|
+
"langgraph",
|
|
17
|
+
"huggingface",
|
|
18
|
+
"mlflow",
|
|
19
|
+
"rag",
|
|
20
|
+
"llm",
|
|
21
|
+
"gpt",
|
|
22
|
+
"embeddings",
|
|
23
|
+
"prompt-engineering",
|
|
24
|
+
"mlops"
|
|
25
|
+
],
|
|
26
|
+
"scripts": {
|
|
27
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
28
|
+
"validate": "node -e \"require('./plugin.json')\" && echo 'plugin.json is valid'",
|
|
29
|
+
"lint:python": "find scripts/examples -name '*.py' -exec python3 -m py_compile {} \\;",
|
|
30
|
+
"lint:all": "npm run lint:python"
|
|
31
|
+
},
|
|
32
|
+
"author": {
|
|
33
|
+
"name": "ClaudeAutoPM Team",
|
|
34
|
+
"email": "autopm@example.com"
|
|
35
|
+
},
|
|
36
|
+
"license": "MIT",
|
|
37
|
+
"repository": {
|
|
38
|
+
"type": "git",
|
|
39
|
+
"url": "git+https://github.com/rafeekpro/ClaudeAutoPM.git",
|
|
40
|
+
"directory": "packages/plugin-ai"
|
|
41
|
+
},
|
|
42
|
+
"homepage": "https://github.com/rafeekpro/ClaudeAutoPM/tree/main/packages/plugin-ai#readme",
|
|
43
|
+
"bugs": {
|
|
44
|
+
"url": "https://github.com/rafeekpro/ClaudeAutoPM/issues"
|
|
45
|
+
},
|
|
46
|
+
"engines": {
|
|
47
|
+
"node": ">=16.0.0",
|
|
48
|
+
"npm": ">=8.0.0"
|
|
49
|
+
},
|
|
50
|
+
"publishConfig": {
|
|
51
|
+
"access": "public",
|
|
52
|
+
"registry": "https://registry.npmjs.org/"
|
|
53
|
+
},
|
|
54
|
+
"files": [
|
|
55
|
+
"agents/",
|
|
56
|
+
"commands/",
|
|
57
|
+
"rules/",
|
|
58
|
+
"scripts/",
|
|
59
|
+
"plugin.json",
|
|
60
|
+
"README.md",
|
|
61
|
+
"LICENSE"
|
|
62
|
+
],
|
|
63
|
+
"peerDependencies": {
|
|
64
|
+
"@claudeautopm/plugin-core": "^2.0.0"
|
|
65
|
+
}
|
|
66
|
+
}
|