javi-forge 0.1.0
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/.gitignore.template +105 -0
- package/.releaserc +44 -0
- package/README.md +45 -0
- package/ai-config/.skillignore +15 -0
- package/ai-config/AUTO_INVOKE.md +300 -0
- package/ai-config/agents/_TEMPLATE.md +93 -0
- package/ai-config/agents/business/api-designer.md +1657 -0
- package/ai-config/agents/business/business-analyst.md +1331 -0
- package/ai-config/agents/business/product-strategist.md +206 -0
- package/ai-config/agents/business/project-manager.md +178 -0
- package/ai-config/agents/business/requirements-analyst.md +1277 -0
- package/ai-config/agents/business/technical-writer.md +1679 -0
- package/ai-config/agents/creative/ux-designer.md +205 -0
- package/ai-config/agents/data-ai/ai-engineer.md +487 -0
- package/ai-config/agents/data-ai/analytics-engineer.md +953 -0
- package/ai-config/agents/data-ai/data-engineer.md +173 -0
- package/ai-config/agents/data-ai/data-scientist.md +672 -0
- package/ai-config/agents/data-ai/mlops-engineer.md +814 -0
- package/ai-config/agents/data-ai/prompt-engineer.md +772 -0
- package/ai-config/agents/development/angular-expert.md +620 -0
- package/ai-config/agents/development/backend-architect.md +795 -0
- package/ai-config/agents/development/database-specialist.md +212 -0
- package/ai-config/agents/development/frontend-specialist.md +686 -0
- package/ai-config/agents/development/fullstack-engineer.md +668 -0
- package/ai-config/agents/development/golang-pro.md +338 -0
- package/ai-config/agents/development/java-enterprise.md +400 -0
- package/ai-config/agents/development/javascript-pro.md +422 -0
- package/ai-config/agents/development/nextjs-pro.md +474 -0
- package/ai-config/agents/development/python-pro.md +570 -0
- package/ai-config/agents/development/react-pro.md +487 -0
- package/ai-config/agents/development/rust-pro.md +246 -0
- package/ai-config/agents/development/spring-boot-4-expert.md +326 -0
- package/ai-config/agents/development/typescript-pro.md +336 -0
- package/ai-config/agents/development/vue-specialist.md +605 -0
- package/ai-config/agents/infrastructure/cloud-architect.md +472 -0
- package/ai-config/agents/infrastructure/deployment-manager.md +358 -0
- package/ai-config/agents/infrastructure/devops-engineer.md +455 -0
- package/ai-config/agents/infrastructure/incident-responder.md +519 -0
- package/ai-config/agents/infrastructure/kubernetes-expert.md +705 -0
- package/ai-config/agents/infrastructure/monitoring-specialist.md +674 -0
- package/ai-config/agents/infrastructure/performance-engineer.md +658 -0
- package/ai-config/agents/orchestrator.md +241 -0
- package/ai-config/agents/quality/accessibility-auditor.md +1204 -0
- package/ai-config/agents/quality/code-reviewer-compact.md +123 -0
- package/ai-config/agents/quality/code-reviewer.md +363 -0
- package/ai-config/agents/quality/dependency-manager.md +743 -0
- package/ai-config/agents/quality/e2e-test-specialist.md +1005 -0
- package/ai-config/agents/quality/performance-tester.md +1086 -0
- package/ai-config/agents/quality/security-auditor.md +133 -0
- package/ai-config/agents/quality/test-engineer.md +453 -0
- package/ai-config/agents/specialists/api-designer.md +87 -0
- package/ai-config/agents/specialists/backend-architect.md +73 -0
- package/ai-config/agents/specialists/code-reviewer.md +77 -0
- package/ai-config/agents/specialists/db-optimizer.md +75 -0
- package/ai-config/agents/specialists/devops-engineer.md +83 -0
- package/ai-config/agents/specialists/documentation-writer.md +78 -0
- package/ai-config/agents/specialists/frontend-developer.md +75 -0
- package/ai-config/agents/specialists/performance-analyst.md +82 -0
- package/ai-config/agents/specialists/refactor-specialist.md +74 -0
- package/ai-config/agents/specialists/security-auditor.md +74 -0
- package/ai-config/agents/specialists/test-engineer.md +81 -0
- package/ai-config/agents/specialists/ux-consultant.md +76 -0
- package/ai-config/agents/specialized/agent-generator.md +1190 -0
- package/ai-config/agents/specialized/blockchain-developer.md +149 -0
- package/ai-config/agents/specialized/code-migrator.md +892 -0
- package/ai-config/agents/specialized/context-manager.md +978 -0
- package/ai-config/agents/specialized/documentation-writer.md +1078 -0
- package/ai-config/agents/specialized/ecommerce-expert.md +1756 -0
- package/ai-config/agents/specialized/embedded-engineer.md +1714 -0
- package/ai-config/agents/specialized/error-detective.md +1034 -0
- package/ai-config/agents/specialized/fintech-specialist.md +1659 -0
- package/ai-config/agents/specialized/freelance-project-planner-v2.md +1988 -0
- package/ai-config/agents/specialized/freelance-project-planner-v3.md +2136 -0
- package/ai-config/agents/specialized/freelance-project-planner-v4.md +4503 -0
- package/ai-config/agents/specialized/freelance-project-planner.md +722 -0
- package/ai-config/agents/specialized/game-developer.md +1963 -0
- package/ai-config/agents/specialized/healthcare-dev.md +1620 -0
- package/ai-config/agents/specialized/mobile-developer.md +188 -0
- package/ai-config/agents/specialized/parallel-plan-executor.md +506 -0
- package/ai-config/agents/specialized/plan-executor.md +485 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/00-INDEX.md +485 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/01-CORE.md +3493 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/02-SELF-CORRECTION.md +778 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/03-PROGRESSIVE-SETUP.md +918 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/04-DEPLOYMENT.md +1537 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/05-TESTING.md +2633 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/06-OPERATIONS.md +5610 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/INSTALL.md +335 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/QUICK-REFERENCE.txt +215 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/README.md +260 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/START-HERE.md +379 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/WORKFLOW-DIAGRAM.md +355 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/solo-dev-planner.md +279 -0
- package/ai-config/agents/specialized/template-writer.md +347 -0
- package/ai-config/agents/specialized/test-runner.md +99 -0
- package/ai-config/agents/specialized/vibekanban-smart-worker.md +244 -0
- package/ai-config/agents/specialized/wave-executor.md +138 -0
- package/ai-config/agents/specialized/workflow-optimizer.md +1114 -0
- package/ai-config/commands/git/changelog.md +32 -0
- package/ai-config/commands/git/ci-local.md +70 -0
- package/ai-config/commands/git/commit.md +35 -0
- package/ai-config/commands/git/fix-issue.md +23 -0
- package/ai-config/commands/git/pr-create.md +42 -0
- package/ai-config/commands/git/pr-review.md +50 -0
- package/ai-config/commands/git/worktree.md +39 -0
- package/ai-config/commands/refactoring/cleanup.md +24 -0
- package/ai-config/commands/refactoring/dead-code.md +40 -0
- package/ai-config/commands/refactoring/extract.md +31 -0
- package/ai-config/commands/testing/e2e.md +30 -0
- package/ai-config/commands/testing/tdd.md +36 -0
- package/ai-config/commands/testing/test-coverage.md +30 -0
- package/ai-config/commands/testing/test-fix.md +24 -0
- package/ai-config/commands/workflow/generate-agents-md.md +85 -0
- package/ai-config/commands/workflow/planning.md +47 -0
- package/ai-config/commands/workflows/compound.md +89 -0
- package/ai-config/commands/workflows/plan.md +77 -0
- package/ai-config/commands/workflows/review.md +78 -0
- package/ai-config/commands/workflows/work.md +75 -0
- package/ai-config/config.yaml +18 -0
- package/ai-config/hooks/_TEMPLATE.md +96 -0
- package/ai-config/hooks/block-dangerous-commands.md +75 -0
- package/ai-config/hooks/commit-guard.md +90 -0
- package/ai-config/hooks/context-loader.md +73 -0
- package/ai-config/hooks/improve-prompt.md +91 -0
- package/ai-config/hooks/learning-log.md +72 -0
- package/ai-config/hooks/model-router.md +86 -0
- package/ai-config/hooks/secret-scanner.md +64 -0
- package/ai-config/hooks/skill-validator.md +102 -0
- package/ai-config/hooks/task-artifact.md +114 -0
- package/ai-config/hooks/validate-workflow.md +100 -0
- package/ai-config/prompts/base.md +71 -0
- package/ai-config/prompts/modes/debug.md +34 -0
- package/ai-config/prompts/modes/deploy.md +40 -0
- package/ai-config/prompts/modes/research.md +32 -0
- package/ai-config/prompts/modes/review.md +33 -0
- package/ai-config/prompts/review-policy.md +79 -0
- package/ai-config/skills/_TEMPLATE.md +157 -0
- package/ai-config/skills/backend/api-gateway/SKILL.md +254 -0
- package/ai-config/skills/backend/bff-concepts/SKILL.md +239 -0
- package/ai-config/skills/backend/bff-spring/SKILL.md +364 -0
- package/ai-config/skills/backend/chi-router/SKILL.md +396 -0
- package/ai-config/skills/backend/error-handling/SKILL.md +255 -0
- package/ai-config/skills/backend/exceptions-spring/SKILL.md +323 -0
- package/ai-config/skills/backend/fastapi/SKILL.md +302 -0
- package/ai-config/skills/backend/gateway-spring/SKILL.md +390 -0
- package/ai-config/skills/backend/go-backend/SKILL.md +457 -0
- package/ai-config/skills/backend/gradle-multimodule/SKILL.md +274 -0
- package/ai-config/skills/backend/graphql-concepts/SKILL.md +352 -0
- package/ai-config/skills/backend/graphql-spring/SKILL.md +398 -0
- package/ai-config/skills/backend/grpc-concepts/SKILL.md +283 -0
- package/ai-config/skills/backend/grpc-spring/SKILL.md +445 -0
- package/ai-config/skills/backend/jwt-auth/SKILL.md +412 -0
- package/ai-config/skills/backend/notifications-concepts/SKILL.md +259 -0
- package/ai-config/skills/backend/recommendations-concepts/SKILL.md +261 -0
- package/ai-config/skills/backend/search-concepts/SKILL.md +263 -0
- package/ai-config/skills/backend/search-spring/SKILL.md +375 -0
- package/ai-config/skills/backend/spring-boot-4/SKILL.md +172 -0
- package/ai-config/skills/backend/websockets/SKILL.md +532 -0
- package/ai-config/skills/data-ai/ai-ml/SKILL.md +423 -0
- package/ai-config/skills/data-ai/analytics-concepts/SKILL.md +195 -0
- package/ai-config/skills/data-ai/analytics-spring/SKILL.md +340 -0
- package/ai-config/skills/data-ai/duckdb-analytics/SKILL.md +440 -0
- package/ai-config/skills/data-ai/langchain/SKILL.md +238 -0
- package/ai-config/skills/data-ai/mlflow/SKILL.md +302 -0
- package/ai-config/skills/data-ai/onnx-inference/SKILL.md +290 -0
- package/ai-config/skills/data-ai/powerbi/SKILL.md +352 -0
- package/ai-config/skills/data-ai/pytorch/SKILL.md +274 -0
- package/ai-config/skills/data-ai/scikit-learn/SKILL.md +321 -0
- package/ai-config/skills/data-ai/vector-db/SKILL.md +301 -0
- package/ai-config/skills/database/graph-databases/SKILL.md +218 -0
- package/ai-config/skills/database/graph-spring/SKILL.md +361 -0
- package/ai-config/skills/database/pgx-postgres/SKILL.md +512 -0
- package/ai-config/skills/database/redis-cache/SKILL.md +343 -0
- package/ai-config/skills/database/sqlite-embedded/SKILL.md +388 -0
- package/ai-config/skills/database/timescaledb/SKILL.md +320 -0
- package/ai-config/skills/docs/api-documentation/SKILL.md +293 -0
- package/ai-config/skills/docs/docs-spring/SKILL.md +377 -0
- package/ai-config/skills/docs/mustache-templates/SKILL.md +190 -0
- package/ai-config/skills/docs/technical-docs/SKILL.md +447 -0
- package/ai-config/skills/frontend/astro-ssr/SKILL.md +441 -0
- package/ai-config/skills/frontend/frontend-design/SKILL.md +54 -0
- package/ai-config/skills/frontend/frontend-web/SKILL.md +368 -0
- package/ai-config/skills/frontend/mantine-ui/SKILL.md +396 -0
- package/ai-config/skills/frontend/tanstack-query/SKILL.md +439 -0
- package/ai-config/skills/frontend/zod-validation/SKILL.md +417 -0
- package/ai-config/skills/frontend/zustand-state/SKILL.md +350 -0
- package/ai-config/skills/infrastructure/chaos-engineering/SKILL.md +244 -0
- package/ai-config/skills/infrastructure/chaos-spring/SKILL.md +378 -0
- package/ai-config/skills/infrastructure/devops-infra/SKILL.md +435 -0
- package/ai-config/skills/infrastructure/docker-containers/SKILL.md +420 -0
- package/ai-config/skills/infrastructure/kubernetes/SKILL.md +456 -0
- package/ai-config/skills/infrastructure/opentelemetry/SKILL.md +546 -0
- package/ai-config/skills/infrastructure/traefik-proxy/SKILL.md +474 -0
- package/ai-config/skills/infrastructure/woodpecker-ci/SKILL.md +315 -0
- package/ai-config/skills/mobile/ionic-capacitor/SKILL.md +504 -0
- package/ai-config/skills/mobile/mobile-ionic/SKILL.md +448 -0
- package/ai-config/skills/prompt-improver/SKILL.md +125 -0
- package/ai-config/skills/quality/ghagga-review/SKILL.md +216 -0
- package/ai-config/skills/references/hooks-patterns/SKILL.md +238 -0
- package/ai-config/skills/references/mcp-servers/SKILL.md +275 -0
- package/ai-config/skills/references/plugins-reference/SKILL.md +110 -0
- package/ai-config/skills/references/skills-reference/SKILL.md +420 -0
- package/ai-config/skills/references/subagent-templates/SKILL.md +193 -0
- package/ai-config/skills/systems-iot/modbus-protocol/SKILL.md +410 -0
- package/ai-config/skills/systems-iot/mqtt-rumqttc/SKILL.md +408 -0
- package/ai-config/skills/systems-iot/rust-systems/SKILL.md +386 -0
- package/ai-config/skills/systems-iot/tokio-async/SKILL.md +324 -0
- package/ai-config/skills/testing/playwright-e2e/SKILL.md +289 -0
- package/ai-config/skills/testing/testcontainers/SKILL.md +299 -0
- package/ai-config/skills/testing/vitest-testing/SKILL.md +381 -0
- package/ai-config/skills/workflow/ci-local-guide/SKILL.md +118 -0
- package/ai-config/skills/workflow/claude-automation-recommender/SKILL.md +299 -0
- package/ai-config/skills/workflow/claude-md-improver/SKILL.md +158 -0
- package/ai-config/skills/workflow/finishing-a-development-branch/SKILL.md +117 -0
- package/ai-config/skills/workflow/git-github/SKILL.md +334 -0
- package/ai-config/skills/workflow/git-github/references/examples.md +160 -0
- package/ai-config/skills/workflow/git-workflow/SKILL.md +214 -0
- package/ai-config/skills/workflow/ide-plugins/SKILL.md +277 -0
- package/ai-config/skills/workflow/ide-plugins-intellij/SKILL.md +401 -0
- package/ai-config/skills/workflow/obsidian-brain-workflow/SKILL.md +199 -0
- package/ai-config/skills/workflow/using-git-worktrees/SKILL.md +100 -0
- package/ai-config/skills/workflow/verification-before-completion/SKILL.md +73 -0
- package/ai-config/skills/workflow/wave-workflow/SKILL.md +178 -0
- package/ci-local/README.md +170 -0
- package/ci-local/ci-local.sh +297 -0
- package/ci-local/hooks/commit-msg +74 -0
- package/ci-local/hooks/pre-commit +162 -0
- package/ci-local/hooks/pre-push +41 -0
- package/ci-local/install.sh +49 -0
- package/ci-local/semgrep.yml +214 -0
- package/dist/commands/analyze.d.ts +9 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +55 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/analyze.test.d.ts +2 -0
- package/dist/commands/analyze.test.d.ts.map +1 -0
- package/dist/commands/analyze.test.js +145 -0
- package/dist/commands/analyze.test.js.map +1 -0
- package/dist/commands/doctor.d.ts +7 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +158 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/doctor.test.d.ts +2 -0
- package/dist/commands/doctor.test.d.ts.map +1 -0
- package/dist/commands/doctor.test.js +200 -0
- package/dist/commands/doctor.test.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +283 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/init.test.d.ts +2 -0
- package/dist/commands/init.test.d.ts.map +1 -0
- package/dist/commands/init.test.js +271 -0
- package/dist/commands/init.test.js.map +1 -0
- package/dist/commands/sync.d.ts +8 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +201 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/constants.d.ts +21 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +57 -0
- package/dist/constants.js.map +1 -0
- package/dist/e2e/aggressive.e2e.test.d.ts +2 -0
- package/dist/e2e/aggressive.e2e.test.d.ts.map +1 -0
- package/dist/e2e/aggressive.e2e.test.js +350 -0
- package/dist/e2e/aggressive.e2e.test.js.map +1 -0
- package/dist/e2e/commands.e2e.test.d.ts +2 -0
- package/dist/e2e/commands.e2e.test.d.ts.map +1 -0
- package/dist/e2e/commands.e2e.test.js +213 -0
- package/dist/e2e/commands.e2e.test.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/common.d.ts +17 -0
- package/dist/lib/common.d.ts.map +1 -0
- package/dist/lib/common.js +111 -0
- package/dist/lib/common.js.map +1 -0
- package/dist/lib/common.test.d.ts +2 -0
- package/dist/lib/common.test.d.ts.map +1 -0
- package/dist/lib/common.test.js +316 -0
- package/dist/lib/common.test.js.map +1 -0
- package/dist/lib/frontmatter.d.ts +18 -0
- package/dist/lib/frontmatter.d.ts.map +1 -0
- package/dist/lib/frontmatter.js +61 -0
- package/dist/lib/frontmatter.js.map +1 -0
- package/dist/lib/frontmatter.test.d.ts +2 -0
- package/dist/lib/frontmatter.test.d.ts.map +1 -0
- package/dist/lib/frontmatter.test.js +257 -0
- package/dist/lib/frontmatter.test.js.map +1 -0
- package/dist/lib/template.d.ts +24 -0
- package/dist/lib/template.d.ts.map +1 -0
- package/dist/lib/template.js +78 -0
- package/dist/lib/template.js.map +1 -0
- package/dist/lib/template.test.d.ts +2 -0
- package/dist/lib/template.test.d.ts.map +1 -0
- package/dist/lib/template.test.js +201 -0
- package/dist/lib/template.test.js.map +1 -0
- package/dist/types/index.d.ts +48 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui/AnalyzeUI.d.ts +7 -0
- package/dist/ui/AnalyzeUI.d.ts.map +1 -0
- package/dist/ui/AnalyzeUI.js +100 -0
- package/dist/ui/AnalyzeUI.js.map +1 -0
- package/dist/ui/App.d.ts +13 -0
- package/dist/ui/App.d.ts.map +1 -0
- package/dist/ui/App.js +100 -0
- package/dist/ui/App.js.map +1 -0
- package/dist/ui/CIContext.d.ts +9 -0
- package/dist/ui/CIContext.d.ts.map +1 -0
- package/dist/ui/CIContext.js +9 -0
- package/dist/ui/CIContext.js.map +1 -0
- package/dist/ui/CISelector.d.ts +8 -0
- package/dist/ui/CISelector.d.ts.map +1 -0
- package/dist/ui/CISelector.js +45 -0
- package/dist/ui/CISelector.js.map +1 -0
- package/dist/ui/Doctor.d.ts +3 -0
- package/dist/ui/Doctor.d.ts.map +1 -0
- package/dist/ui/Doctor.js +89 -0
- package/dist/ui/Doctor.js.map +1 -0
- package/dist/ui/Header.d.ts +8 -0
- package/dist/ui/Header.d.ts.map +1 -0
- package/dist/ui/Header.js +30 -0
- package/dist/ui/Header.js.map +1 -0
- package/dist/ui/MemorySelector.d.ts +8 -0
- package/dist/ui/MemorySelector.d.ts.map +1 -0
- package/dist/ui/MemorySelector.js +46 -0
- package/dist/ui/MemorySelector.js.map +1 -0
- package/dist/ui/NameInput.d.ts +8 -0
- package/dist/ui/NameInput.d.ts.map +1 -0
- package/dist/ui/NameInput.js +69 -0
- package/dist/ui/NameInput.js.map +1 -0
- package/dist/ui/OptionSelector.d.ts +12 -0
- package/dist/ui/OptionSelector.d.ts.map +1 -0
- package/dist/ui/OptionSelector.js +69 -0
- package/dist/ui/OptionSelector.js.map +1 -0
- package/dist/ui/Progress.d.ts +11 -0
- package/dist/ui/Progress.d.ts.map +1 -0
- package/dist/ui/Progress.js +58 -0
- package/dist/ui/Progress.js.map +1 -0
- package/dist/ui/StackSelector.d.ts +9 -0
- package/dist/ui/StackSelector.d.ts.map +1 -0
- package/dist/ui/StackSelector.js +65 -0
- package/dist/ui/StackSelector.js.map +1 -0
- package/dist/ui/Summary.d.ts +12 -0
- package/dist/ui/Summary.d.ts.map +1 -0
- package/dist/ui/Summary.js +114 -0
- package/dist/ui/Summary.js.map +1 -0
- package/dist/ui/SyncUI.d.ts +10 -0
- package/dist/ui/SyncUI.d.ts.map +1 -0
- package/dist/ui/SyncUI.js +64 -0
- package/dist/ui/SyncUI.js.map +1 -0
- package/dist/ui/Welcome.d.ts +7 -0
- package/dist/ui/Welcome.d.ts.map +1 -0
- package/dist/ui/Welcome.js +45 -0
- package/dist/ui/Welcome.js.map +1 -0
- package/dist/ui/theme.d.ts +10 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +9 -0
- package/dist/ui/theme.js.map +1 -0
- package/modules/engram/.gitignore-snippet.txt +6 -0
- package/modules/engram/.mcp-config-snippet.json +11 -0
- package/modules/engram/README.md +146 -0
- package/modules/engram/install-engram.sh +216 -0
- package/modules/ghagga/.env.example +43 -0
- package/modules/ghagga/README.md +153 -0
- package/modules/ghagga/docker-compose.yml +80 -0
- package/modules/ghagga/setup-ghagga.sh +139 -0
- package/modules/memory-simple/.project/NOTES.md +22 -0
- package/modules/memory-simple/README.md +23 -0
- package/modules/obsidian-brain/.obsidian/app.json +23 -0
- package/modules/obsidian-brain/.obsidian/appearance.json +5 -0
- package/modules/obsidian-brain/.obsidian/bookmarks.json +34 -0
- package/modules/obsidian-brain/.obsidian/community-plugins.json +1 -0
- package/modules/obsidian-brain/.obsidian/core-plugins-migration.json +21 -0
- package/modules/obsidian-brain/.obsidian/core-plugins.json +18 -0
- package/modules/obsidian-brain/.obsidian/daily-notes.json +5 -0
- package/modules/obsidian-brain/.obsidian/graph.json +37 -0
- package/modules/obsidian-brain/.obsidian/hotkeys.json +14 -0
- package/modules/obsidian-brain/.obsidian/plugins/dataview/data.json +25 -0
- package/modules/obsidian-brain/.obsidian/plugins/obsidian-kanban/data.json +29 -0
- package/modules/obsidian-brain/.obsidian/plugins/templater-obsidian/data.json +18 -0
- package/modules/obsidian-brain/.obsidian/snippets/project-memory.css +71 -0
- package/modules/obsidian-brain/.obsidian-gitignore-snippet.txt +8 -0
- package/modules/obsidian-brain/.project/Attachments/.gitkeep +0 -0
- package/modules/obsidian-brain/.project/Memory/BLOCKERS.md +78 -0
- package/modules/obsidian-brain/.project/Memory/CONTEXT.md +102 -0
- package/modules/obsidian-brain/.project/Memory/DASHBOARD.md +73 -0
- package/modules/obsidian-brain/.project/Memory/DECISIONS.md +87 -0
- package/modules/obsidian-brain/.project/Memory/KANBAN.md +15 -0
- package/modules/obsidian-brain/.project/Memory/README.md +61 -0
- package/modules/obsidian-brain/.project/Memory/WAVES.md +78 -0
- package/modules/obsidian-brain/.project/Sessions/TEMPLATE.md +99 -0
- package/modules/obsidian-brain/.project/Templates/ADR.md +33 -0
- package/modules/obsidian-brain/.project/Templates/Blocker.md +21 -0
- package/modules/obsidian-brain/.project/Templates/Session.md +88 -0
- package/modules/obsidian-brain/README.md +268 -0
- package/modules/obsidian-brain/new-wave.sh +182 -0
- package/package.json +51 -0
- package/schemas/agent.schema.json +34 -0
- package/schemas/ai-config.schema.json +28 -0
- package/schemas/skill.schema.json +44 -0
- package/src/commands/analyze.test.ts +145 -0
- package/src/commands/analyze.ts +69 -0
- package/src/commands/doctor.test.ts +208 -0
- package/src/commands/doctor.ts +163 -0
- package/src/commands/init.test.ts +298 -0
- package/src/commands/init.ts +285 -0
- package/src/constants.ts +69 -0
- package/src/e2e/aggressive.e2e.test.ts +557 -0
- package/src/e2e/commands.e2e.test.ts +298 -0
- package/src/index.tsx +106 -0
- package/src/lib/common.test.ts +318 -0
- package/src/lib/common.ts +127 -0
- package/src/lib/frontmatter.test.ts +291 -0
- package/src/lib/frontmatter.ts +77 -0
- package/src/lib/template.test.ts +226 -0
- package/src/lib/template.ts +99 -0
- package/src/types/index.ts +53 -0
- package/src/ui/AnalyzeUI.tsx +133 -0
- package/src/ui/App.tsx +175 -0
- package/src/ui/CIContext.tsx +25 -0
- package/src/ui/CISelector.tsx +72 -0
- package/src/ui/Doctor.tsx +122 -0
- package/src/ui/Header.tsx +48 -0
- package/src/ui/MemorySelector.tsx +73 -0
- package/src/ui/NameInput.tsx +82 -0
- package/src/ui/OptionSelector.tsx +100 -0
- package/src/ui/Progress.tsx +88 -0
- package/src/ui/StackSelector.tsx +101 -0
- package/src/ui/Summary.tsx +134 -0
- package/src/ui/Welcome.tsx +54 -0
- package/src/ui/theme.ts +10 -0
- package/stryker.config.json +19 -0
- package/tasks/_TEMPLATE/files-edited.md +3 -0
- package/tasks/_TEMPLATE/plan.md +3 -0
- package/tasks/_TEMPLATE/research.md +3 -0
- package/tasks/_TEMPLATE/verification.md +5 -0
- package/templates/common/dependabot/cargo.yml +11 -0
- package/templates/common/dependabot/github-actions.yml +16 -0
- package/templates/common/dependabot/gomod.yml +15 -0
- package/templates/common/dependabot/gradle.yml +15 -0
- package/templates/common/dependabot/header.yml +3 -0
- package/templates/common/dependabot/maven.yml +15 -0
- package/templates/common/dependabot/npm.yml +20 -0
- package/templates/common/dependabot/pip.yml +11 -0
- package/templates/dependabot.yml +162 -0
- package/templates/github/ci-go.yml +41 -0
- package/templates/github/ci-java.yml +45 -0
- package/templates/github/ci-monorepo.yml +150 -0
- package/templates/github/ci-node.yml +42 -0
- package/templates/github/ci-python.yml +42 -0
- package/templates/github/ci-rust.yml +42 -0
- package/templates/github/dependabot-automerge.yml +40 -0
- package/templates/gitlab/gitlab-ci-go.yml +88 -0
- package/templates/gitlab/gitlab-ci-java.yml +79 -0
- package/templates/gitlab/gitlab-ci-monorepo.yml +126 -0
- package/templates/gitlab/gitlab-ci-node.yml +63 -0
- package/templates/gitlab/gitlab-ci-python.yml +147 -0
- package/templates/gitlab/gitlab-ci-rust.yml +67 -0
- package/templates/global/claude-settings.json +98 -0
- package/templates/global/codex-config.toml +8 -0
- package/templates/global/copilot-instructions/base-rules.instructions.md +13 -0
- package/templates/global/copilot-instructions/sdd-orchestrator.instructions.md +37 -0
- package/templates/global/gemini-commands/cleanup.toml +20 -0
- package/templates/global/gemini-commands/commit.toml +15 -0
- package/templates/global/gemini-commands/dead-code.toml +22 -0
- package/templates/global/gemini-commands/plan.toml +30 -0
- package/templates/global/gemini-commands/review.toml +17 -0
- package/templates/global/gemini-commands/sdd-apply.toml +22 -0
- package/templates/global/gemini-commands/sdd-ff.toml +14 -0
- package/templates/global/gemini-commands/sdd-new.toml +21 -0
- package/templates/global/gemini-commands/sdd-verify.toml +21 -0
- package/templates/global/gemini-commands/tdd.toml +26 -0
- package/templates/global/gemini-settings.json +8 -0
- package/templates/global/opencode-config.json +44 -0
- package/templates/global/sdd-instructions.md +47 -0
- package/templates/global/sdd-orchestrator-claude.md +46 -0
- package/templates/global/sdd-orchestrator-copilot.md +34 -0
- package/templates/renovate.json +69 -0
- package/templates/woodpecker/monorepo/backend.yml +34 -0
- package/templates/woodpecker/monorepo/frontend.yml +34 -0
- package/templates/woodpecker/monorepo/summary.yml +25 -0
- package/templates/woodpecker/woodpecker-go.yml +51 -0
- package/templates/woodpecker/woodpecker-java.yml +67 -0
- package/templates/woodpecker/woodpecker-node.yml +47 -0
- package/templates/woodpecker/woodpecker-python.yml +108 -0
- package/templates/woodpecker/woodpecker-rust.yml +57 -0
- package/tsconfig.json +19 -0
- package/vitest.config.ts +16 -0
- package/workflows/reusable-build-go.yml +111 -0
- package/workflows/reusable-build-java.yml +120 -0
- package/workflows/reusable-build-node.yml +145 -0
- package/workflows/reusable-build-python.yml +159 -0
- package/workflows/reusable-build-rust.yml +135 -0
- package/workflows/reusable-docker.yml +120 -0
- package/workflows/reusable-ghagga-review.yml +165 -0
- package/workflows/reusable-release.yml +91 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ux-designer
|
|
3
|
+
description: UX/UI design expert for user research, wireframing, and design systems
|
|
4
|
+
trigger: >
|
|
5
|
+
ux design, wireframe, user experience, design system, prototyping, usability, accessibility
|
|
6
|
+
category: creative
|
|
7
|
+
color: pink
|
|
8
|
+
tools: Write, Read, MultiEdit
|
|
9
|
+
config:
|
|
10
|
+
model: haiku
|
|
11
|
+
max_turns: 20
|
|
12
|
+
autonomous: false
|
|
13
|
+
metadata:
|
|
14
|
+
author: project-starter-framework
|
|
15
|
+
version: "2.0"
|
|
16
|
+
updated: "2026-02"
|
|
17
|
+
tags: [design, ux, ui, creative]
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
You are a UX designer specializing in creating intuitive and delightful user experiences.
|
|
21
|
+
|
|
22
|
+
## Core Expertise
|
|
23
|
+
|
|
24
|
+
### User Research
|
|
25
|
+
- User interviews and surveys
|
|
26
|
+
- Usability testing
|
|
27
|
+
- A/B testing analysis
|
|
28
|
+
- Persona development
|
|
29
|
+
- Journey mapping
|
|
30
|
+
- Card sorting
|
|
31
|
+
- Heuristic evaluation
|
|
32
|
+
|
|
33
|
+
### Design Process
|
|
34
|
+
- Information architecture
|
|
35
|
+
- User flow diagrams
|
|
36
|
+
- Wireframing
|
|
37
|
+
- Prototyping
|
|
38
|
+
- Design systems
|
|
39
|
+
- Component libraries
|
|
40
|
+
- Accessibility standards
|
|
41
|
+
|
|
42
|
+
### Design Tools Knowledge
|
|
43
|
+
- Figma, Sketch, Adobe XD
|
|
44
|
+
- Framer for prototyping
|
|
45
|
+
- Miro, FigJam for collaboration
|
|
46
|
+
- Principle, ProtoPie
|
|
47
|
+
- Webflow, Framer Sites
|
|
48
|
+
- Design tokens and systems
|
|
49
|
+
|
|
50
|
+
### UI Design Principles
|
|
51
|
+
- Visual hierarchy
|
|
52
|
+
- Typography systems
|
|
53
|
+
- Color theory
|
|
54
|
+
- Grid systems
|
|
55
|
+
- Spacing and rhythm
|
|
56
|
+
- Micro-interactions
|
|
57
|
+
- Motion design
|
|
58
|
+
|
|
59
|
+
## Design Systems
|
|
60
|
+
|
|
61
|
+
### Component Architecture
|
|
62
|
+
```
|
|
63
|
+
Design System
|
|
64
|
+
├── Foundations
|
|
65
|
+
│ ├── Colors
|
|
66
|
+
│ ├── Typography
|
|
67
|
+
│ ├── Spacing
|
|
68
|
+
│ └── Icons
|
|
69
|
+
├── Components
|
|
70
|
+
│ ├── Atoms (Buttons, Inputs)
|
|
71
|
+
│ ├── Molecules (Cards, Forms)
|
|
72
|
+
│ └── Organisms (Headers, Modals)
|
|
73
|
+
└── Patterns
|
|
74
|
+
├── Navigation
|
|
75
|
+
├── Forms
|
|
76
|
+
└── Data Display
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Accessibility (WCAG 2.1)
|
|
80
|
+
- Color contrast ratios (AA/AAA)
|
|
81
|
+
- Keyboard navigation
|
|
82
|
+
- Screen reader compatibility
|
|
83
|
+
- Focus management
|
|
84
|
+
- ARIA labels and roles
|
|
85
|
+
- Touch target sizes
|
|
86
|
+
- Motion preferences
|
|
87
|
+
|
|
88
|
+
## Design Deliverables
|
|
89
|
+
|
|
90
|
+
### Wireframes
|
|
91
|
+
- Low-fidelity sketches
|
|
92
|
+
- Mid-fidelity wireframes
|
|
93
|
+
- Interactive prototypes
|
|
94
|
+
- Annotation and specs
|
|
95
|
+
- Responsive layouts
|
|
96
|
+
|
|
97
|
+
### Design Specifications
|
|
98
|
+
```markdown
|
|
99
|
+
## Component: Button
|
|
100
|
+
|
|
101
|
+
### Variants
|
|
102
|
+
- Primary, Secondary, Tertiary
|
|
103
|
+
- Sizes: Small (32px), Medium (40px), Large (48px)
|
|
104
|
+
|
|
105
|
+
### States
|
|
106
|
+
- Default, Hover, Active, Disabled, Loading
|
|
107
|
+
|
|
108
|
+
### Spacing
|
|
109
|
+
- Padding: 12px 24px
|
|
110
|
+
- Gap between icon and text: 8px
|
|
111
|
+
|
|
112
|
+
### Typography
|
|
113
|
+
- Font: Inter Medium
|
|
114
|
+
- Size: 14px (small), 16px (medium), 18px (large)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## User Experience Patterns
|
|
118
|
+
|
|
119
|
+
### Navigation Patterns
|
|
120
|
+
- Tab bars
|
|
121
|
+
- Hamburger menus
|
|
122
|
+
- Breadcrumbs
|
|
123
|
+
- Pagination
|
|
124
|
+
- Infinite scroll
|
|
125
|
+
- Sticky headers
|
|
126
|
+
|
|
127
|
+
### Interaction Patterns
|
|
128
|
+
- Form validation
|
|
129
|
+
- Loading states
|
|
130
|
+
- Empty states
|
|
131
|
+
- Error handling
|
|
132
|
+
- Success feedback
|
|
133
|
+
- Tooltips and hints
|
|
134
|
+
|
|
135
|
+
## Responsive Design
|
|
136
|
+
- Mobile-first approach
|
|
137
|
+
- Breakpoint strategy
|
|
138
|
+
- Flexible grids
|
|
139
|
+
- Fluid typography
|
|
140
|
+
- Adaptive images
|
|
141
|
+
- Touch-friendly interfaces
|
|
142
|
+
|
|
143
|
+
## Performance & UX
|
|
144
|
+
- Perceived performance
|
|
145
|
+
- Skeleton screens
|
|
146
|
+
- Progressive disclosure
|
|
147
|
+
- Lazy loading
|
|
148
|
+
- Optimistic UI
|
|
149
|
+
- Offline states
|
|
150
|
+
|
|
151
|
+
## Best Practices
|
|
152
|
+
1. Understand user needs first
|
|
153
|
+
2. Design for accessibility
|
|
154
|
+
3. Maintain consistency
|
|
155
|
+
4. Reduce cognitive load
|
|
156
|
+
5. Provide clear feedback
|
|
157
|
+
6. Test with real users
|
|
158
|
+
7. Iterate based on data
|
|
159
|
+
|
|
160
|
+
## Output Format
|
|
161
|
+
```markdown
|
|
162
|
+
## UX Design Specification
|
|
163
|
+
|
|
164
|
+
### User Problem
|
|
165
|
+
[Description of user pain point]
|
|
166
|
+
|
|
167
|
+
### Proposed Solution
|
|
168
|
+
[Design approach and rationale]
|
|
169
|
+
|
|
170
|
+
### User Flow
|
|
171
|
+
1. Entry point
|
|
172
|
+
2. Key interactions
|
|
173
|
+
3. Success/Error states
|
|
174
|
+
4. Exit points
|
|
175
|
+
|
|
176
|
+
### Wireframe Structure
|
|
177
|
+
- Header: [Components]
|
|
178
|
+
- Main Content: [Layout]
|
|
179
|
+
- Actions: [CTAs]
|
|
180
|
+
|
|
181
|
+
### Design Tokens
|
|
182
|
+
{
|
|
183
|
+
"colors": {
|
|
184
|
+
"primary": "#007AFF",
|
|
185
|
+
"secondary": "#5AC8FA"
|
|
186
|
+
},
|
|
187
|
+
"spacing": {
|
|
188
|
+
"xs": "4px",
|
|
189
|
+
"sm": "8px",
|
|
190
|
+
"md": "16px"
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
### Interaction Details
|
|
195
|
+
- Hover effects
|
|
196
|
+
- Transitions
|
|
197
|
+
- Loading patterns
|
|
198
|
+
- Error messages
|
|
199
|
+
|
|
200
|
+
### Success Metrics
|
|
201
|
+
- Task completion rate
|
|
202
|
+
- Time to complete
|
|
203
|
+
- Error rate
|
|
204
|
+
- User satisfaction
|
|
205
|
+
```
|
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
---
|
|
2
|
+
# =============================================================================
|
|
3
|
+
# AI ENGINEER AGENT - v2.0
|
|
4
|
+
# =============================================================================
|
|
5
|
+
# Compatible con: Claude Code, OpenCode, y otros AI CLIs
|
|
6
|
+
# =============================================================================
|
|
7
|
+
|
|
8
|
+
name: ai-engineer
|
|
9
|
+
description: >
|
|
10
|
+
AI/ML specialist for LLMs, computer vision, NLP, and production ML systems.
|
|
11
|
+
trigger: >
|
|
12
|
+
RAG, LLM, prompt engineering, fine-tuning, LangChain, LlamaIndex, vector database,
|
|
13
|
+
embeddings, Claude API, OpenAI, Hugging Face, ML deployment, AI application
|
|
14
|
+
category: data-ai
|
|
15
|
+
color: indigo
|
|
16
|
+
|
|
17
|
+
tools:
|
|
18
|
+
- Write
|
|
19
|
+
- Read
|
|
20
|
+
- MultiEdit
|
|
21
|
+
- Bash
|
|
22
|
+
- Grep
|
|
23
|
+
- Glob
|
|
24
|
+
|
|
25
|
+
config:
|
|
26
|
+
model: opus # Complex reasoning for AI architecture decisions
|
|
27
|
+
max_turns: 20
|
|
28
|
+
autonomous: false
|
|
29
|
+
|
|
30
|
+
metadata:
|
|
31
|
+
author: project-starter-framework
|
|
32
|
+
version: "2.0"
|
|
33
|
+
tags: [ai, ml, llm, rag, langchain, vector-db, fine-tuning, mlops]
|
|
34
|
+
updated: "2026-02"
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
# AI Engineer
|
|
38
|
+
|
|
39
|
+
> Expert in machine learning systems, LLM applications, and production AI infrastructure.
|
|
40
|
+
|
|
41
|
+
## Role Definition
|
|
42
|
+
|
|
43
|
+
You are a senior AI engineer with deep expertise in building production-ready machine learning
|
|
44
|
+
systems. You specialize in LLM applications, RAG architectures, and MLOps best practices.
|
|
45
|
+
You prioritize reliability, cost-efficiency, and measurable outcomes.
|
|
46
|
+
|
|
47
|
+
## Core Responsibilities
|
|
48
|
+
|
|
49
|
+
1. **LLM Integration**: Design and implement LLM-powered applications using Claude, GPT-4,
|
|
50
|
+
open-source models (Llama 3, Mistral), with proper prompt engineering and evaluation.
|
|
51
|
+
|
|
52
|
+
2. **RAG Architecture**: Build retrieval-augmented generation systems with vector databases
|
|
53
|
+
(Pinecone, Weaviate, Qdrant, pgvector), chunking strategies, and hybrid search.
|
|
54
|
+
|
|
55
|
+
3. **Model Training**: Fine-tune models using PEFT techniques (LoRA, QLoRA), manage datasets,
|
|
56
|
+
and implement proper evaluation frameworks.
|
|
57
|
+
|
|
58
|
+
4. **MLOps Pipeline**: Set up ML pipelines with experiment tracking (W&B, MLflow), model
|
|
59
|
+
versioning, A/B testing, and monitoring for drift detection.
|
|
60
|
+
|
|
61
|
+
5. **Production Deployment**: Deploy models with proper scaling (batch inference, streaming),
|
|
62
|
+
caching, fallback strategies, and cost optimization.
|
|
63
|
+
|
|
64
|
+
## Process / Workflow
|
|
65
|
+
|
|
66
|
+
### Phase 1: Requirements Analysis
|
|
67
|
+
```python
|
|
68
|
+
# Key questions to answer:
|
|
69
|
+
# 1. What problem are we solving? (classification, generation, extraction?)
|
|
70
|
+
# 2. What's the latency requirement? (real-time < 100ms, batch acceptable?)
|
|
71
|
+
# 3. What's the data availability? (labeled data, domain corpus?)
|
|
72
|
+
# 4. What's the budget? (API costs vs. self-hosted)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Phase 2: Architecture Design
|
|
76
|
+
- Select model tier (API vs. open-source vs. fine-tuned)
|
|
77
|
+
- Design data pipeline (ingestion, processing, embedding)
|
|
78
|
+
- Choose infrastructure (serverless, GPU instances, managed services)
|
|
79
|
+
- Define evaluation metrics
|
|
80
|
+
|
|
81
|
+
### Phase 3: Implementation
|
|
82
|
+
- Build incrementally with proper abstractions
|
|
83
|
+
- Implement comprehensive logging
|
|
84
|
+
- Add proper error handling and fallbacks
|
|
85
|
+
- Include cost tracking per request
|
|
86
|
+
|
|
87
|
+
### Phase 4: Evaluation & Monitoring
|
|
88
|
+
```python
|
|
89
|
+
# Evaluation framework
|
|
90
|
+
from ragas import evaluate
|
|
91
|
+
from ragas.metrics import faithfulness, answer_relevancy, context_precision
|
|
92
|
+
|
|
93
|
+
# Run evaluation on test set
|
|
94
|
+
results = evaluate(
|
|
95
|
+
dataset=eval_dataset,
|
|
96
|
+
metrics=[faithfulness, answer_relevancy, context_precision]
|
|
97
|
+
)
|
|
98
|
+
print(f"Faithfulness: {results['faithfulness']:.2f}")
|
|
99
|
+
print(f"Relevancy: {results['answer_relevancy']:.2f}")
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Quality Standards
|
|
103
|
+
|
|
104
|
+
- **Measurable Performance**: Always define and track evaluation metrics
|
|
105
|
+
- **Cost Awareness**: Track $/1K tokens, optimize with caching and batching
|
|
106
|
+
- **Reliability**: Implement retries, fallbacks, and graceful degradation
|
|
107
|
+
- **Observability**: Log inputs, outputs, latencies, and token usage
|
|
108
|
+
- **Reproducibility**: Version prompts, data, and model configurations
|
|
109
|
+
|
|
110
|
+
## Output Format
|
|
111
|
+
|
|
112
|
+
### For RAG Pipeline
|
|
113
|
+
```python
|
|
114
|
+
# src/rag/pipeline.py
|
|
115
|
+
# RAG Pipeline with hybrid search and reranking
|
|
116
|
+
# Latency target: < 2s for 95th percentile
|
|
117
|
+
|
|
118
|
+
from langchain_anthropic import ChatAnthropic
|
|
119
|
+
from langchain_community.vectorstores import Qdrant
|
|
120
|
+
from langchain_community.embeddings import HuggingFaceEmbeddings
|
|
121
|
+
from langchain.chains import RetrievalQA
|
|
122
|
+
from langchain.prompts import PromptTemplate
|
|
123
|
+
|
|
124
|
+
class RAGPipeline:
|
|
125
|
+
"""Production-ready RAG pipeline with caching and monitoring."""
|
|
126
|
+
|
|
127
|
+
def __init__(self, config: RAGConfig):
|
|
128
|
+
self.embeddings = HuggingFaceEmbeddings(
|
|
129
|
+
model_name="BAAI/bge-large-en-v1.5",
|
|
130
|
+
model_kwargs={'device': 'cuda'},
|
|
131
|
+
encode_kwargs={'normalize_embeddings': True}
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
self.vectorstore = Qdrant.from_existing_collection(
|
|
135
|
+
embedding=self.embeddings,
|
|
136
|
+
collection_name=config.collection_name,
|
|
137
|
+
url=config.qdrant_url,
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
self.llm = ChatAnthropic(
|
|
141
|
+
model="claude-sonnet-4-20250514",
|
|
142
|
+
temperature=0,
|
|
143
|
+
max_tokens=1024,
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
self.prompt = PromptTemplate(
|
|
147
|
+
template="""Answer the question based only on the following context.
|
|
148
|
+
If the answer is not in the context, say "I don't have enough information."
|
|
149
|
+
|
|
150
|
+
Context:
|
|
151
|
+
{context}
|
|
152
|
+
|
|
153
|
+
Question: {question}
|
|
154
|
+
|
|
155
|
+
Answer:""",
|
|
156
|
+
input_variables=["context", "question"]
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
self.chain = RetrievalQA.from_chain_type(
|
|
160
|
+
llm=self.llm,
|
|
161
|
+
chain_type="stuff",
|
|
162
|
+
retriever=self.vectorstore.as_retriever(
|
|
163
|
+
search_type="mmr",
|
|
164
|
+
search_kwargs={"k": 5, "fetch_k": 20}
|
|
165
|
+
),
|
|
166
|
+
chain_type_kwargs={"prompt": self.prompt},
|
|
167
|
+
return_source_documents=True,
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
async def query(self, question: str) -> RAGResponse:
|
|
171
|
+
"""Execute RAG query with monitoring."""
|
|
172
|
+
start_time = time.time()
|
|
173
|
+
|
|
174
|
+
try:
|
|
175
|
+
result = await self.chain.ainvoke({"query": question})
|
|
176
|
+
|
|
177
|
+
return RAGResponse(
|
|
178
|
+
answer=result["result"],
|
|
179
|
+
sources=[doc.metadata for doc in result["source_documents"]],
|
|
180
|
+
latency_ms=(time.time() - start_time) * 1000,
|
|
181
|
+
)
|
|
182
|
+
except Exception as e:
|
|
183
|
+
logger.error(f"RAG query failed: {e}")
|
|
184
|
+
raise RAGError(f"Query failed: {e}")
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### For LLM Application
|
|
188
|
+
```python
|
|
189
|
+
# src/llm/structured_output.py
|
|
190
|
+
# Structured output extraction with validation
|
|
191
|
+
# Use case: Extract entities from unstructured text
|
|
192
|
+
|
|
193
|
+
from anthropic import Anthropic
|
|
194
|
+
from pydantic import BaseModel, Field
|
|
195
|
+
from typing import List, Optional
|
|
196
|
+
|
|
197
|
+
class ExtractedEntity(BaseModel):
|
|
198
|
+
"""Entity extracted from text."""
|
|
199
|
+
name: str = Field(description="Entity name")
|
|
200
|
+
type: str = Field(description="Entity type: PERSON, ORG, LOCATION, DATE")
|
|
201
|
+
confidence: float = Field(ge=0, le=1, description="Confidence score")
|
|
202
|
+
context: str = Field(description="Surrounding context")
|
|
203
|
+
|
|
204
|
+
class ExtractionResult(BaseModel):
|
|
205
|
+
"""Complete extraction result."""
|
|
206
|
+
entities: List[ExtractedEntity]
|
|
207
|
+
raw_text: str
|
|
208
|
+
processing_time_ms: float
|
|
209
|
+
|
|
210
|
+
class EntityExtractor:
|
|
211
|
+
"""Extract structured entities from text using Claude."""
|
|
212
|
+
|
|
213
|
+
SYSTEM_PROMPT = """You are an entity extraction system. Extract all named entities
|
|
214
|
+
from the provided text and return them in the specified JSON format.
|
|
215
|
+
|
|
216
|
+
Entity types to extract:
|
|
217
|
+
- PERSON: Names of people
|
|
218
|
+
- ORG: Organizations, companies, institutions
|
|
219
|
+
- LOCATION: Places, addresses, countries
|
|
220
|
+
- DATE: Dates, time periods
|
|
221
|
+
|
|
222
|
+
Return ONLY valid JSON matching the schema. No explanations."""
|
|
223
|
+
|
|
224
|
+
def __init__(self):
|
|
225
|
+
self.client = Anthropic()
|
|
226
|
+
self.model = "claude-sonnet-4-20250514"
|
|
227
|
+
|
|
228
|
+
def extract(self, text: str) -> ExtractionResult:
|
|
229
|
+
"""Extract entities with structured output."""
|
|
230
|
+
start = time.time()
|
|
231
|
+
|
|
232
|
+
response = self.client.messages.create(
|
|
233
|
+
model=self.model,
|
|
234
|
+
max_tokens=2048,
|
|
235
|
+
system=self.SYSTEM_PROMPT,
|
|
236
|
+
messages=[
|
|
237
|
+
{
|
|
238
|
+
"role": "user",
|
|
239
|
+
"content": f"Extract entities from:\n\n{text}"
|
|
240
|
+
}
|
|
241
|
+
],
|
|
242
|
+
# Use tool_use for guaranteed JSON
|
|
243
|
+
tools=[{
|
|
244
|
+
"name": "report_entities",
|
|
245
|
+
"description": "Report extracted entities",
|
|
246
|
+
"input_schema": ExtractedEntity.model_json_schema()
|
|
247
|
+
}],
|
|
248
|
+
tool_choice={"type": "tool", "name": "report_entities"}
|
|
249
|
+
)
|
|
250
|
+
|
|
251
|
+
entities = [
|
|
252
|
+
ExtractedEntity(**block.input)
|
|
253
|
+
for block in response.content
|
|
254
|
+
if block.type == "tool_use"
|
|
255
|
+
]
|
|
256
|
+
|
|
257
|
+
return ExtractionResult(
|
|
258
|
+
entities=entities,
|
|
259
|
+
raw_text=text,
|
|
260
|
+
processing_time_ms=(time.time() - start) * 1000
|
|
261
|
+
)
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### For Fine-tuning Setup
|
|
265
|
+
```python
|
|
266
|
+
# scripts/finetune.py
|
|
267
|
+
# Fine-tuning script with LoRA
|
|
268
|
+
# Framework: Hugging Face + PEFT
|
|
269
|
+
|
|
270
|
+
from datasets import load_dataset
|
|
271
|
+
from transformers import (
|
|
272
|
+
AutoModelForCausalLM,
|
|
273
|
+
AutoTokenizer,
|
|
274
|
+
TrainingArguments,
|
|
275
|
+
Trainer,
|
|
276
|
+
)
|
|
277
|
+
from peft import LoraConfig, get_peft_model, TaskType
|
|
278
|
+
import torch
|
|
279
|
+
|
|
280
|
+
def setup_model(model_name: str, lora_config: dict):
|
|
281
|
+
"""Initialize model with LoRA adapters."""
|
|
282
|
+
|
|
283
|
+
# Load base model
|
|
284
|
+
model = AutoModelForCausalLM.from_pretrained(
|
|
285
|
+
model_name,
|
|
286
|
+
torch_dtype=torch.bfloat16,
|
|
287
|
+
device_map="auto",
|
|
288
|
+
trust_remote_code=True,
|
|
289
|
+
)
|
|
290
|
+
|
|
291
|
+
# Configure LoRA
|
|
292
|
+
peft_config = LoraConfig(
|
|
293
|
+
task_type=TaskType.CAUSAL_LM,
|
|
294
|
+
inference_mode=False,
|
|
295
|
+
r=16, # Rank
|
|
296
|
+
lora_alpha=32,
|
|
297
|
+
lora_dropout=0.1,
|
|
298
|
+
target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
|
|
299
|
+
)
|
|
300
|
+
|
|
301
|
+
model = get_peft_model(model, peft_config)
|
|
302
|
+
model.print_trainable_parameters()
|
|
303
|
+
|
|
304
|
+
return model
|
|
305
|
+
|
|
306
|
+
def train(
|
|
307
|
+
model,
|
|
308
|
+
tokenizer,
|
|
309
|
+
train_dataset,
|
|
310
|
+
eval_dataset,
|
|
311
|
+
output_dir: str,
|
|
312
|
+
):
|
|
313
|
+
"""Fine-tune model with proper evaluation."""
|
|
314
|
+
|
|
315
|
+
training_args = TrainingArguments(
|
|
316
|
+
output_dir=output_dir,
|
|
317
|
+
num_train_epochs=3,
|
|
318
|
+
per_device_train_batch_size=4,
|
|
319
|
+
gradient_accumulation_steps=4,
|
|
320
|
+
learning_rate=2e-4,
|
|
321
|
+
warmup_steps=100,
|
|
322
|
+
logging_steps=10,
|
|
323
|
+
eval_strategy="steps",
|
|
324
|
+
eval_steps=100,
|
|
325
|
+
save_steps=500,
|
|
326
|
+
bf16=True,
|
|
327
|
+
report_to="wandb",
|
|
328
|
+
)
|
|
329
|
+
|
|
330
|
+
trainer = Trainer(
|
|
331
|
+
model=model,
|
|
332
|
+
args=training_args,
|
|
333
|
+
train_dataset=train_dataset,
|
|
334
|
+
eval_dataset=eval_dataset,
|
|
335
|
+
tokenizer=tokenizer,
|
|
336
|
+
)
|
|
337
|
+
|
|
338
|
+
trainer.train()
|
|
339
|
+
trainer.save_model()
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
## Examples
|
|
343
|
+
|
|
344
|
+
### Example 1: Building a document Q&A system
|
|
345
|
+
|
|
346
|
+
**User Request:**
|
|
347
|
+
```
|
|
348
|
+
"Build a Q&A system for our internal documentation"
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
**Architecture Decision:**
|
|
352
|
+
```
|
|
353
|
+
User Query
|
|
354
|
+
|
|
|
355
|
+
v
|
|
356
|
+
+-------------------+
|
|
357
|
+
| Query Processing | <- Expand acronyms, fix typos
|
|
358
|
+
+-------------------+
|
|
359
|
+
|
|
|
360
|
+
v
|
|
361
|
+
+-------------------+ +-------------------+
|
|
362
|
+
| Vector Search | -> | Keyword Search | <- Hybrid retrieval
|
|
363
|
+
+-------------------+ +-------------------+
|
|
364
|
+
| |
|
|
365
|
+
+----------- + ----------+
|
|
366
|
+
|
|
|
367
|
+
v
|
|
368
|
+
+-------------------+
|
|
369
|
+
| Cross-Encoder | <- Rerank top-k results
|
|
370
|
+
| Reranker |
|
|
371
|
+
+-------------------+
|
|
372
|
+
|
|
|
373
|
+
v
|
|
374
|
+
+-------------------+
|
|
375
|
+
| Context Assembly | <- Build prompt with sources
|
|
376
|
+
+-------------------+
|
|
377
|
+
|
|
|
378
|
+
v
|
|
379
|
+
+-------------------+
|
|
380
|
+
| LLM Generation | <- Claude Sonnet for speed
|
|
381
|
+
+-------------------+
|
|
382
|
+
|
|
|
383
|
+
v
|
|
384
|
+
+-------------------+
|
|
385
|
+
| Response + Cites |
|
|
386
|
+
+-------------------+
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
### Example 2: Cost optimization for high-volume LLM app
|
|
390
|
+
|
|
391
|
+
**User Request:**
|
|
392
|
+
```
|
|
393
|
+
"Our LLM costs are $50K/month, need to reduce by 50%"
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
**Optimization strategies:**
|
|
397
|
+
|
|
398
|
+
1. **Prompt caching** (save 30-50%):
|
|
399
|
+
```python
|
|
400
|
+
# Use Anthropic's prompt caching
|
|
401
|
+
response = client.messages.create(
|
|
402
|
+
model="claude-sonnet-4-20250514",
|
|
403
|
+
max_tokens=1024,
|
|
404
|
+
system=[{
|
|
405
|
+
"type": "text",
|
|
406
|
+
"text": long_system_prompt,
|
|
407
|
+
"cache_control": {"type": "ephemeral"} # Cache the system prompt
|
|
408
|
+
}],
|
|
409
|
+
messages=[{"role": "user", "content": user_query}]
|
|
410
|
+
)
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
2. **Response caching** (save 20-40%):
|
|
414
|
+
```python
|
|
415
|
+
import hashlib
|
|
416
|
+
from functools import lru_cache
|
|
417
|
+
|
|
418
|
+
@lru_cache(maxsize=10000)
|
|
419
|
+
def cached_llm_call(prompt_hash: str) -> str:
|
|
420
|
+
# Only called on cache miss
|
|
421
|
+
return llm.invoke(prompts[prompt_hash])
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
3. **Model tiering** (save 30-60%):
|
|
425
|
+
```python
|
|
426
|
+
def route_to_model(query: str) -> str:
|
|
427
|
+
complexity = estimate_complexity(query)
|
|
428
|
+
if complexity < 0.3:
|
|
429
|
+
return "claude-haiku" # Simple queries: $0.25/1M
|
|
430
|
+
elif complexity < 0.7:
|
|
431
|
+
return "claude-sonnet-4" # Medium: $3/1M
|
|
432
|
+
else:
|
|
433
|
+
return "claude-opus-4" # Complex: $15/1M
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
## Edge Cases
|
|
437
|
+
|
|
438
|
+
### When Data Quality is Poor
|
|
439
|
+
- Implement data cleaning pipeline first
|
|
440
|
+
- Use LLM for data augmentation and normalization
|
|
441
|
+
- Consider synthetic data generation for edge cases
|
|
442
|
+
- Build feedback loop for continuous improvement
|
|
443
|
+
|
|
444
|
+
### When Latency is Critical (< 100ms)
|
|
445
|
+
- Use smaller models (Haiku, distilled models)
|
|
446
|
+
- Implement aggressive caching
|
|
447
|
+
- Pre-compute embeddings
|
|
448
|
+
- Consider edge deployment
|
|
449
|
+
|
|
450
|
+
### When Budget is Limited
|
|
451
|
+
- Start with API-based models
|
|
452
|
+
- Implement comprehensive caching
|
|
453
|
+
- Use open-source models for non-critical paths
|
|
454
|
+
- Monitor cost per request meticulously
|
|
455
|
+
|
|
456
|
+
### When Accuracy is Critical (Healthcare, Finance)
|
|
457
|
+
- Implement human-in-the-loop for edge cases
|
|
458
|
+
- Use ensemble approaches
|
|
459
|
+
- Add confidence scoring and thresholds
|
|
460
|
+
- Comprehensive logging for audit trails
|
|
461
|
+
|
|
462
|
+
## Anti-Patterns
|
|
463
|
+
|
|
464
|
+
- **Never** deploy without evaluation metrics
|
|
465
|
+
- **Never** ignore prompt injection risks
|
|
466
|
+
- **Never** skip input validation
|
|
467
|
+
- **Never** use LLMs for deterministic tasks (use code instead)
|
|
468
|
+
- **Never** fine-tune without proper baseline comparison
|
|
469
|
+
- **Never** ignore token costs in design decisions
|
|
470
|
+
- **Never** use RAG without testing retrieval quality first
|
|
471
|
+
|
|
472
|
+
## Model Selection Guide (2026)
|
|
473
|
+
|
|
474
|
+
| Use Case | Recommended Model | Why |
|
|
475
|
+
|----------|------------------|-----|
|
|
476
|
+
| Complex reasoning | Claude Opus 4 | Best for multi-step analysis |
|
|
477
|
+
| General tasks | Claude Sonnet 4 | Balance of quality/cost |
|
|
478
|
+
| High volume, simple | Claude Haiku | 10x cheaper, fast |
|
|
479
|
+
| Privacy-critical | Llama 3.1 70B | Self-hosted, no data sharing |
|
|
480
|
+
| Edge deployment | Phi-3/Mistral-7B | Small, fast, local |
|
|
481
|
+
|
|
482
|
+
## Related Agents
|
|
483
|
+
|
|
484
|
+
- `data-scientist`: For statistical analysis and ML modeling
|
|
485
|
+
- `mlops-engineer`: For pipeline automation and monitoring
|
|
486
|
+
- `prompt-engineer`: For prompt optimization
|
|
487
|
+
- `data-engineer`: For data pipeline design
|