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,71 @@
|
|
|
1
|
+
# Base System Prompt
|
|
2
|
+
|
|
3
|
+
> Prompt base para cualquier AI CLI en este proyecto
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Contexto del Proyecto
|
|
8
|
+
|
|
9
|
+
- **Nombre:** [NOMBRE_PROYECTO]
|
|
10
|
+
- **Stack:** [STACK]
|
|
11
|
+
- **Metodología:** [VibeKanban/Kanban/Scrum/Libre]
|
|
12
|
+
|
|
13
|
+
## Reglas Críticas
|
|
14
|
+
|
|
15
|
+
### NO hacer nunca
|
|
16
|
+
|
|
17
|
+
1. **NO agregar atribuciones a IA** en código, commits, PRs o docs
|
|
18
|
+
- Nunca: `Co-authored-by: Claude/GPT/AI`
|
|
19
|
+
- Nunca: `Made by AI`, `Generated by Claude`
|
|
20
|
+
- Nunca: `@anthropic.com`, `@openai.com`
|
|
21
|
+
|
|
22
|
+
2. **NO ejecutar comandos destructivos** sin confirmación
|
|
23
|
+
- Nunca: `rm -rf`, `drop database`, `truncate`
|
|
24
|
+
- Siempre pedir confirmación para operaciones irreversibles
|
|
25
|
+
|
|
26
|
+
3. **NO commitear archivos sensibles**
|
|
27
|
+
- Nunca: `.env`, credenciales, secrets
|
|
28
|
+
- Verificar `.gitignore` antes de commit
|
|
29
|
+
|
|
30
|
+
### SIEMPRE hacer
|
|
31
|
+
|
|
32
|
+
1. **Leer antes de modificar**
|
|
33
|
+
- Siempre leer archivos antes de editarlos
|
|
34
|
+
- Entender contexto antes de cambiar
|
|
35
|
+
|
|
36
|
+
2. **Validar antes de push**
|
|
37
|
+
- Ejecutar CI-Local: `./.ci-local/ci-local.sh quick`
|
|
38
|
+
- Verificar que tests pasen
|
|
39
|
+
|
|
40
|
+
3. **Seguir convenciones del proyecto**
|
|
41
|
+
- Conventional commits: `feat(scope): message`
|
|
42
|
+
- Branching: `feature/t-xxx-description`
|
|
43
|
+
|
|
44
|
+
## Workflow
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
1. Leer contexto del proyecto (si existe .project/Memory/)
|
|
48
|
+
2. Trabajar en tarea
|
|
49
|
+
3. Validar con CI-Local
|
|
50
|
+
4. Commit + Push
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Archivos de Referencia
|
|
54
|
+
|
|
55
|
+
| Archivo | Propósito |
|
|
56
|
+
|---------|-----------|
|
|
57
|
+
| `CLAUDE.md` | Instrucciones especificas |
|
|
58
|
+
| `.project/Memory/CONTEXT.md` | Estado del proyecto (si VibeKanban) |
|
|
59
|
+
| `.project/Memory/DECISIONS.md` | ADRs (si VibeKanban) |
|
|
60
|
+
| `.project/Memory/WAVES.md` | Oleadas de trabajo (si VibeKanban) |
|
|
61
|
+
|
|
62
|
+
## Comandos Frecuentes
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# CI Local
|
|
66
|
+
./.ci-local/ci-local.sh quick # Validacion rapida
|
|
67
|
+
./.ci-local/ci-local.sh full # CI completo
|
|
68
|
+
|
|
69
|
+
# Git
|
|
70
|
+
git checkout feature/descripcion # Cambiar a feature branch
|
|
71
|
+
```
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Debug Mode
|
|
2
|
+
|
|
3
|
+
> Activar con: "modo debug" o "estoy debugueando un bug"
|
|
4
|
+
|
|
5
|
+
Estás diagnosticando y corrigiendo un bug. Sé sistemático y metódico.
|
|
6
|
+
|
|
7
|
+
## Enfoque
|
|
8
|
+
- Reproduce el problema primero. Confirma que podés triggerear el bug consistentemente.
|
|
9
|
+
- Recopila información: mensajes de error, stack traces, logs, datos de request/response.
|
|
10
|
+
- Formula una hipótesis antes de cambiar código. Identifica la causa raíz más probable.
|
|
11
|
+
- Verifica la hipótesis con logging, breakpoints o tests dirigidos.
|
|
12
|
+
- Corrige la causa raíz, no el síntoma. Evitá parches provisorios.
|
|
13
|
+
|
|
14
|
+
## Pasos de Diagnóstico
|
|
15
|
+
1. Lee el mensaje de error y stack trace cuidadosamente. Identifica la línea que falla.
|
|
16
|
+
2. Revisá cambios recientes: `git log --oneline -10` y `git diff HEAD~3`.
|
|
17
|
+
3. Buscá la lógica relacionada en el codebase con grep.
|
|
18
|
+
4. Agregá logging puntual en los límites (input, output, paths de error).
|
|
19
|
+
5. Simplificá el caso de reproducción al mínimo que lo dispara.
|
|
20
|
+
6. Verificá dependencias externas: estado de base de datos, respuestas de API, valores de config.
|
|
21
|
+
|
|
22
|
+
## Validación del Fix
|
|
23
|
+
- Escribí un test que reproduzca el bug ANTES de escribir el fix.
|
|
24
|
+
- Verificá que el fix resuelve el caso de reproducción original.
|
|
25
|
+
- Corré el suite completo de tests para detectar regresiones.
|
|
26
|
+
- Revisá paths de código relacionados por la misma clase de bug.
|
|
27
|
+
- Documentá la causa raíz en el mensaje de commit.
|
|
28
|
+
|
|
29
|
+
## Evitar
|
|
30
|
+
- No cambiar múltiples cosas a la vez. Aislá variables.
|
|
31
|
+
- No agregar workarounds sin entender la causa raíz.
|
|
32
|
+
- No remover error handling para que pasen los tests.
|
|
33
|
+
- No asumir que el bug está en una dependencia sin evidencia.
|
|
34
|
+
- No omitir el test de regresión para el bug corregido.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Deploy Mode
|
|
2
|
+
|
|
3
|
+
> Activar con: "voy a deployar" o "modo deploy"
|
|
4
|
+
|
|
5
|
+
Estás preparando o ejecutando un deployment. Priorizá seguridad y reversibilidad.
|
|
6
|
+
|
|
7
|
+
## Checklist Pre-Deploy
|
|
8
|
+
- Todos los checks de CI pasan en el branch de deployment.
|
|
9
|
+
- Las migraciones de base de datos son backward-compatible con la versión en producción.
|
|
10
|
+
- Las variables de entorno están configuradas en el ambiente destino antes del deploy.
|
|
11
|
+
- Los feature flags están configurados para features parcialmente lanzados.
|
|
12
|
+
- El changelog o release notes están actualizados.
|
|
13
|
+
- Hay un plan de rollback documentado y listo.
|
|
14
|
+
|
|
15
|
+
## Pasos de Deployment
|
|
16
|
+
1. Verificá que el artefacto de build corresponde al commit testeado (SHA o tag).
|
|
17
|
+
2. Corré migraciones de base de datos ANTES de deployar la nueva versión de la app.
|
|
18
|
+
3. Deploy a staging primero. Smoke test de los paths críticos.
|
|
19
|
+
4. Deploy a producción con estrategia rolling o blue-green.
|
|
20
|
+
5. Monitoreá error rates, latencia y health checks por 15 minutos post-deploy.
|
|
21
|
+
6. Confirmá éxito en el canal del equipo. Taggea el release en git.
|
|
22
|
+
|
|
23
|
+
## Criterios de Rollback
|
|
24
|
+
- Error rate supera 2x el baseline pre-deploy.
|
|
25
|
+
- Latencia P99 supera 3x el baseline pre-deploy.
|
|
26
|
+
- Health check failures en más de una instancia.
|
|
27
|
+
- Cualquier corrupción o violación de integridad de datos.
|
|
28
|
+
- Issues críticos reportados por usuarios dentro de la ventana de deploy.
|
|
29
|
+
|
|
30
|
+
## Post-Deploy
|
|
31
|
+
- Cerrar issues relacionados y actualizar el project board.
|
|
32
|
+
- Monitorear Sentry y dashboards de logging para nuevos patrones de error.
|
|
33
|
+
- Notificar a stakeholders del deployment completado.
|
|
34
|
+
- Programar post-mortem si el deploy tuvo problemas.
|
|
35
|
+
|
|
36
|
+
## Evitar
|
|
37
|
+
- No deployar los viernes ni antes de feriados sin aprobación explícita.
|
|
38
|
+
- No saltear staging para "cambios pequeños". Todo pasa por staging.
|
|
39
|
+
- No correr migraciones destructivas durante horario pico.
|
|
40
|
+
- No deployar múltiples cambios no relacionados en un solo release.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Research Mode
|
|
2
|
+
|
|
3
|
+
> Activar con: "investigá opciones para" o "modo research"
|
|
4
|
+
|
|
5
|
+
Estás explorando opciones, evaluando herramientas o investigando preguntas técnicas.
|
|
6
|
+
|
|
7
|
+
## Enfoque
|
|
8
|
+
- Definí claramente la pregunta o decisión antes de investigar.
|
|
9
|
+
- Recopilá información de múltiples fuentes: docs, código fuente, benchmarks, posts de la comunidad.
|
|
10
|
+
- Compará al menos dos alternativas para cualquier decisión de herramienta o librería.
|
|
11
|
+
- Documentá hallazgos con pros, contras y una recomendación.
|
|
12
|
+
- Acotá el tiempo de investigación para evitar parálisis de análisis.
|
|
13
|
+
|
|
14
|
+
## Criterios de Evaluación
|
|
15
|
+
- Estado de mantenimiento: último commit, cadencia de releases, issues abiertos vs cerrados.
|
|
16
|
+
- Adopción de la comunidad: descargas, GitHub stars, presencia en Stack Overflow.
|
|
17
|
+
- Calidad de documentación: guía de inicio, referencia de API, ejemplos.
|
|
18
|
+
- Performance: benchmarks, uso de memoria, tiempo de startup si es relevante.
|
|
19
|
+
- Compatibilidad: funciona con el stack existente, compatibilidad de licencia.
|
|
20
|
+
- Path de migración: esfuerzo para adoptar, esfuerzo para migrar si es necesario.
|
|
21
|
+
|
|
22
|
+
## Formato de Output
|
|
23
|
+
- Resumí hallazgos en una tabla de comparación estructurada.
|
|
24
|
+
- Declarar suposiciones y restricciones que influyeron en la evaluación.
|
|
25
|
+
- Proveer una recomendación clara con fundamento.
|
|
26
|
+
- Incluir links a fuentes para referencia futura.
|
|
27
|
+
|
|
28
|
+
## Evitar
|
|
29
|
+
- No recomendar una herramienta solo por popularidad.
|
|
30
|
+
- No pasar más de 30 minutos en una pregunta de investigación sin hacer check-in.
|
|
31
|
+
- No tomar decisiones irreversibles basadas en investigación incompleta.
|
|
32
|
+
- No introducir herramientas nuevas cuando las existentes resuelven el problema adecuadamente.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Code Review Mode
|
|
2
|
+
|
|
3
|
+
> Activar con: "revisá este código" o "modo review"
|
|
4
|
+
|
|
5
|
+
Estás revisando código por correctitud, seguridad y mantenibilidad.
|
|
6
|
+
|
|
7
|
+
## Enfoque
|
|
8
|
+
- Leé la descripción del PR y el issue vinculado primero para entender la intención.
|
|
9
|
+
- Revisá el diff completo antes de comentar. Entendé el cambio en su conjunto.
|
|
10
|
+
- Enfocate en correctitud lógica, edge cases y seguridad antes que estilo.
|
|
11
|
+
- Verificá que los tests cubren el comportamiento cambiado, no solo el happy path.
|
|
12
|
+
- Verificá el error handling: ¿qué pasa cuando los inputs son inválidos o los servicios fallan?
|
|
13
|
+
|
|
14
|
+
## Qué Verificar
|
|
15
|
+
- Validación de input en los límites del sistema (endpoints de API, form handlers).
|
|
16
|
+
- SQL injection, XSS y otras vulnerabilidades de inyección.
|
|
17
|
+
- Queries N+1, índices faltantes, result sets no acotados.
|
|
18
|
+
- Race conditions en código concurrente o async.
|
|
19
|
+
- Uso correcto de transacciones para mutaciones multi-paso.
|
|
20
|
+
- Secrets o credenciales incluidos accidentalmente en el diff.
|
|
21
|
+
- Breaking changes en APIs públicas o interfaces compartidas.
|
|
22
|
+
|
|
23
|
+
## Estilo de Comentarios
|
|
24
|
+
- Prefijá con intención: `blocker:`, `suggestion:`, `question:`, `nit:`.
|
|
25
|
+
- Solo comentarios `blocker:` deben impedir la aprobación.
|
|
26
|
+
- Sugerí alternativas concretas, no solo "esto podría ser mejor".
|
|
27
|
+
- Reconocé buenos patrones e implementaciones limpias.
|
|
28
|
+
|
|
29
|
+
## Evitar
|
|
30
|
+
- No bikeshedear sobre formateo si hay un auto-formatter configurado.
|
|
31
|
+
- No pedir cambios fuera del scope del PR.
|
|
32
|
+
- No bloquear PRs por preferencias de estilo que no están en las reglas del proyecto.
|
|
33
|
+
- No aprobar sin leer el diff completo.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Code Review Policy
|
|
2
|
+
|
|
3
|
+
Guidelines for AI agents conducting code reviews. Apply these consistently across all PRs.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Naming Conventions
|
|
8
|
+
|
|
9
|
+
- Use clear, descriptive names that reveal intent — no abbreviations unless universally known (`url`, `id`, `db` are fine; `mgr`, `tmp`, `cb` are not).
|
|
10
|
+
- Booleans: prefer `is`, `has`, `can`, `should` prefixes (`isLoading`, `hasPermission`).
|
|
11
|
+
- Functions: use verbs (`fetchUser`, `calculateTotal`); avoid nouns (`userData`, `total`).
|
|
12
|
+
- Follow language conventions: `camelCase` for JS/TS/Go, `snake_case` for Python/Rust, `PascalCase` for types/classes everywhere.
|
|
13
|
+
- Constants: `UPPER_SNAKE_CASE` for true constants; regular naming for `const` variables that aren't fixed values.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Error Handling
|
|
18
|
+
|
|
19
|
+
- Every error must be explicitly handled — no silent `catch` blocks, no empty `except`.
|
|
20
|
+
- Log errors with enough context to reproduce: include IDs, input values, stack traces.
|
|
21
|
+
- User-facing error messages must be clear and actionable; never expose internal stack traces or system paths.
|
|
22
|
+
- Distinguish between recoverable errors (return/log) and fatal errors (fail fast).
|
|
23
|
+
- For async code: handle rejected promises; never swallow errors with bare `catch () {}`.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Security
|
|
28
|
+
|
|
29
|
+
- No hardcoded secrets, tokens, passwords, or API keys — use environment variables.
|
|
30
|
+
- Validate and sanitize all external inputs (API params, form fields, file uploads).
|
|
31
|
+
- Check for injection vulnerabilities: SQL injection, XSS, command injection.
|
|
32
|
+
- Apply least privilege: services, DB users, and IAM roles should have only what they need.
|
|
33
|
+
- Avoid exposing sensitive data in logs, error messages, or API responses.
|
|
34
|
+
- Verify authentication/authorization checks on every protected endpoint.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Performance
|
|
39
|
+
|
|
40
|
+
- Avoid N+1 queries — use batch fetches, joins, or `include`/`preload` where appropriate.
|
|
41
|
+
- Avoid unnecessary loops inside loops; prefer set operations or indexed lookups.
|
|
42
|
+
- Prefer lazy loading for heavy resources not needed at startup.
|
|
43
|
+
- Cache expensive operations with a clear invalidation strategy.
|
|
44
|
+
- Flag unbounded queries — always paginate or limit result sets from the database.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Test Coverage
|
|
49
|
+
|
|
50
|
+
- New features must include unit tests covering happy path and key edge cases.
|
|
51
|
+
- Bug fixes must include a regression test that would have caught the original bug.
|
|
52
|
+
- Target ≥ 80% line coverage; don't game it with trivial tests.
|
|
53
|
+
- Tests must be deterministic — no flaky tests, no `sleep` for timing, no hardcoded dates.
|
|
54
|
+
- Test the behavior, not the implementation — avoid over-mocking internal details.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Code Smells
|
|
59
|
+
|
|
60
|
+
Flag the following (don't block unless egregious, but note them):
|
|
61
|
+
|
|
62
|
+
| Smell | Threshold |
|
|
63
|
+
|-------|-----------|
|
|
64
|
+
| Duplicate code (DRY violation) | 3+ repeated lines without extraction |
|
|
65
|
+
| Long functions | > 50 lines |
|
|
66
|
+
| Deep nesting | > 3 levels of indentation |
|
|
67
|
+
| Magic numbers | Unexplained literals (except 0, 1, -1) |
|
|
68
|
+
| God class / god function | Does too many unrelated things |
|
|
69
|
+
| Dead code | Unreachable branches, unused imports, commented-out blocks |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## PR Conventions
|
|
74
|
+
|
|
75
|
+
- Title must follow Conventional Commits: `type(scope): description` (e.g., `fix(auth): handle expired token refresh`).
|
|
76
|
+
- Description must explain **WHY** the change was made, not just what changed — that's what the diff is for.
|
|
77
|
+
- Link related issues with `Closes #123` or `Refs #456`.
|
|
78
|
+
- Each PR should be a single logical change — split unrelated fixes into separate PRs.
|
|
79
|
+
- Breaking changes must be flagged with `BREAKING CHANGE:` in the commit footer and explained in the PR description.
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
---
|
|
2
|
+
# =============================================================================
|
|
3
|
+
# SKILL TEMPLATE (Gentleman-Skills Compatible)
|
|
4
|
+
# =============================================================================
|
|
5
|
+
# Formato compatible con: https://github.com/Gentleman-Programming/Gentleman-Skills
|
|
6
|
+
#
|
|
7
|
+
# ESTRUCTURA DE CARPETA:
|
|
8
|
+
# .ai-config/skills/{category}/{skill-name}/
|
|
9
|
+
# └── SKILL.md ← este archivo
|
|
10
|
+
# └── assets/ ← opcional: templates, schemas, ejemplos
|
|
11
|
+
# └── references/ ← opcional: links a docs locales
|
|
12
|
+
# =============================================================================
|
|
13
|
+
|
|
14
|
+
name: mi-skill
|
|
15
|
+
description: >
|
|
16
|
+
Descripción breve del skill.
|
|
17
|
+
Trigger: Contexto que activa este skill (ej: "trabajando con React")
|
|
18
|
+
|
|
19
|
+
metadata:
|
|
20
|
+
author: tu-usuario-github
|
|
21
|
+
version: "1.0"
|
|
22
|
+
tags: [frontend, backend, testing]
|
|
23
|
+
language: typescript # typescript | python | go | rust | java
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# [Nombre del Skill]
|
|
27
|
+
|
|
28
|
+
> [Descripción de una línea de lo que hace este skill]
|
|
29
|
+
|
|
30
|
+
## When to Use
|
|
31
|
+
|
|
32
|
+
Usar este skill cuando:
|
|
33
|
+
|
|
34
|
+
- [ ] Condición 1 (ej: "Editando archivos .tsx")
|
|
35
|
+
- [ ] Condición 2 (ej: "Creando componentes React")
|
|
36
|
+
- [ ] Condición 3 (ej: "Implementando estado con hooks")
|
|
37
|
+
|
|
38
|
+
## Critical Patterns
|
|
39
|
+
|
|
40
|
+
### Pattern 1: [Nombre del patrón]
|
|
41
|
+
|
|
42
|
+
**Por qué:** [Explicación de por qué este patrón es importante]
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
// ✅ Correcto
|
|
46
|
+
[código ejemplo correcto]
|
|
47
|
+
|
|
48
|
+
// ❌ Incorrecto
|
|
49
|
+
[código ejemplo incorrecto]
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Pattern 2: [Nombre del patrón]
|
|
53
|
+
|
|
54
|
+
**Por qué:** [Explicación]
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
// ✅ Correcto
|
|
58
|
+
[código]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Pattern 3: [Nombre del patrón]
|
|
62
|
+
|
|
63
|
+
**Por qué:** [Explicación]
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
// ✅ Correcto
|
|
67
|
+
[código]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Code Examples
|
|
71
|
+
|
|
72
|
+
### Example 1: [Título descriptivo]
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
// Ejemplo completo y funcional
|
|
76
|
+
// Con comentarios explicativos
|
|
77
|
+
|
|
78
|
+
[código completo]
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Example 2: [Título descriptivo]
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
[código completo]
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Example 3: [Título descriptivo]
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
[código completo]
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Anti-Patterns
|
|
94
|
+
|
|
95
|
+
### ❌ Anti-Pattern 1: [Nombre]
|
|
96
|
+
|
|
97
|
+
**Problema:** [Por qué es malo]
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
// ❌ No hacer esto
|
|
101
|
+
[código malo]
|
|
102
|
+
|
|
103
|
+
// ✅ Hacer esto en su lugar
|
|
104
|
+
[código bueno]
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### ❌ Anti-Pattern 2: [Nombre]
|
|
108
|
+
|
|
109
|
+
**Problema:** [Por qué es malo]
|
|
110
|
+
|
|
111
|
+
```typescript
|
|
112
|
+
// ❌ Evitar
|
|
113
|
+
[código malo]
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Quick Reference
|
|
117
|
+
|
|
118
|
+
| Tarea | Snippet |
|
|
119
|
+
|-------|---------|
|
|
120
|
+
| [Tarea 1] | `[código corto]` |
|
|
121
|
+
| [Tarea 2] | `[código corto]` |
|
|
122
|
+
| [Tarea 3] | `[código corto]` |
|
|
123
|
+
|
|
124
|
+
## Resources
|
|
125
|
+
|
|
126
|
+
- [Documentación Oficial](URL)
|
|
127
|
+
- [Guía de Mejores Prácticas](URL)
|
|
128
|
+
- [Repositorio de Ejemplos](URL)
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Related Skills
|
|
133
|
+
|
|
134
|
+
- `related-skill-1`: Descripción breve de cuándo usar
|
|
135
|
+
- `related-skill-2`: Descripción breve de cuándo usar
|
|
136
|
+
- `related-skill-3`: Descripción breve de cuándo usar
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Changelog
|
|
141
|
+
|
|
142
|
+
- **1.0** - Versión inicial
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Progressive Disclosure Pattern (Optional)
|
|
147
|
+
|
|
148
|
+
For complex skills, split content into references/:
|
|
149
|
+
```
|
|
150
|
+
skills/my-skill/
|
|
151
|
+
├── SKILL.md # Core logic only (~150 lines max)
|
|
152
|
+
└── references/
|
|
153
|
+
├── examples.md # Concrete examples (loaded on demand)
|
|
154
|
+
└── patterns.md # Advanced patterns (loaded on demand)
|
|
155
|
+
```
|
|
156
|
+
In SKILL.md, reference them with:
|
|
157
|
+
> For examples, see [references/examples.md](references/examples.md)
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: api-gateway
|
|
3
|
+
description: >
|
|
4
|
+
API Gateway concepts. Routing, rate limiting, authentication, load balancing.
|
|
5
|
+
Trigger: API Gateway, routing, load balancing, reverse proxy, edge service
|
|
6
|
+
tools:
|
|
7
|
+
- Read
|
|
8
|
+
- Write
|
|
9
|
+
- Edit
|
|
10
|
+
- Grep
|
|
11
|
+
metadata:
|
|
12
|
+
author: apigen-team
|
|
13
|
+
version: "1.0"
|
|
14
|
+
tags: [gateway, routing, microservices, edge]
|
|
15
|
+
scope: ["**/gateway/**"]
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# API Gateway Concepts
|
|
19
|
+
|
|
20
|
+
## What is an API Gateway?
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
Single entry point for all client requests
|
|
24
|
+
|
|
25
|
+
┌─────────────────┐
|
|
26
|
+
│ Clients │
|
|
27
|
+
│ (Web, Mobile) │
|
|
28
|
+
└────────┬────────┘
|
|
29
|
+
│
|
|
30
|
+
┌────────▼────────┐
|
|
31
|
+
│ API Gateway │
|
|
32
|
+
│ (routing, │
|
|
33
|
+
│ auth, rate │
|
|
34
|
+
│ limiting) │
|
|
35
|
+
└────────┬────────┘
|
|
36
|
+
│
|
|
37
|
+
┌─────────────┼─────────────┐
|
|
38
|
+
│ │ │
|
|
39
|
+
┌───▼───┐ ┌───▼───┐ ┌───▼───┐
|
|
40
|
+
│User │ │Order │ │Product│
|
|
41
|
+
│Service│ │Service│ │Service│
|
|
42
|
+
└───────┘ └───────┘ └───────┘
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Core Responsibilities
|
|
46
|
+
|
|
47
|
+
### Routing
|
|
48
|
+
```
|
|
49
|
+
Route requests to appropriate backend services:
|
|
50
|
+
|
|
51
|
+
/api/users/* → User Service
|
|
52
|
+
/api/orders/* → Order Service
|
|
53
|
+
/api/products/* → Product Service
|
|
54
|
+
|
|
55
|
+
Path rewriting:
|
|
56
|
+
/api/users/123 → /users/123 (strip prefix)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Authentication/Authorization
|
|
60
|
+
```
|
|
61
|
+
Centralized auth at edge:
|
|
62
|
+
1. Validate JWT token
|
|
63
|
+
2. Extract user context
|
|
64
|
+
3. Forward user info to services
|
|
65
|
+
4. Return 401/403 if invalid
|
|
66
|
+
|
|
67
|
+
Benefits:
|
|
68
|
+
- Services don't need auth logic
|
|
69
|
+
- Consistent auth across services
|
|
70
|
+
- Token validation cached
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Rate Limiting
|
|
74
|
+
```
|
|
75
|
+
Protect services from overload:
|
|
76
|
+
|
|
77
|
+
Per client:
|
|
78
|
+
Anonymous: 60 req/min
|
|
79
|
+
Authenticated: 1000 req/min
|
|
80
|
+
Premium: 10000 req/min
|
|
81
|
+
|
|
82
|
+
Per endpoint:
|
|
83
|
+
/api/search: 30 req/min
|
|
84
|
+
/api/login: 5 req/min
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Load Balancing
|
|
88
|
+
```
|
|
89
|
+
Distribute traffic across instances:
|
|
90
|
+
|
|
91
|
+
Strategies:
|
|
92
|
+
- Round Robin
|
|
93
|
+
- Least Connections
|
|
94
|
+
- Weighted
|
|
95
|
+
- IP Hash (sticky sessions)
|
|
96
|
+
|
|
97
|
+
Health checks:
|
|
98
|
+
- Remove unhealthy instances
|
|
99
|
+
- Automatic failover
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Additional Features
|
|
103
|
+
|
|
104
|
+
### Request/Response Transformation
|
|
105
|
+
```
|
|
106
|
+
Transform requests:
|
|
107
|
+
- Add headers (correlation ID, auth)
|
|
108
|
+
- Modify body
|
|
109
|
+
- Change content type
|
|
110
|
+
|
|
111
|
+
Transform responses:
|
|
112
|
+
- Remove internal headers
|
|
113
|
+
- Standardize error format
|
|
114
|
+
- Add CORS headers
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Caching
|
|
118
|
+
```
|
|
119
|
+
Cache responses at edge:
|
|
120
|
+
|
|
121
|
+
Benefits:
|
|
122
|
+
- Reduce backend load
|
|
123
|
+
- Faster response times
|
|
124
|
+
- Resilience (serve cached on failure)
|
|
125
|
+
|
|
126
|
+
Strategies:
|
|
127
|
+
- Cache by URL + headers
|
|
128
|
+
- Cache invalidation
|
|
129
|
+
- Vary by user/tenant
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Circuit Breaking
|
|
133
|
+
```
|
|
134
|
+
Prevent cascade failures:
|
|
135
|
+
|
|
136
|
+
States:
|
|
137
|
+
- Closed: Normal operation
|
|
138
|
+
- Open: Fail fast (service down)
|
|
139
|
+
- Half-Open: Test recovery
|
|
140
|
+
|
|
141
|
+
Configuration:
|
|
142
|
+
- Failure threshold
|
|
143
|
+
- Timeout
|
|
144
|
+
- Recovery window
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Logging & Monitoring
|
|
148
|
+
```
|
|
149
|
+
Centralized observability:
|
|
150
|
+
|
|
151
|
+
Metrics:
|
|
152
|
+
- Request rate
|
|
153
|
+
- Error rate
|
|
154
|
+
- Latency (P50, P95, P99)
|
|
155
|
+
- Active connections
|
|
156
|
+
|
|
157
|
+
Logging:
|
|
158
|
+
- Access logs
|
|
159
|
+
- Request/response bodies (debug)
|
|
160
|
+
- Correlation IDs
|
|
161
|
+
|
|
162
|
+
Tracing:
|
|
163
|
+
- Distributed trace propagation
|
|
164
|
+
- Span timing
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Gateway Patterns
|
|
168
|
+
|
|
169
|
+
### Backend for Frontend (BFF)
|
|
170
|
+
```
|
|
171
|
+
Separate gateways per client type:
|
|
172
|
+
|
|
173
|
+
Web BFF Gateway → Web-specific routes
|
|
174
|
+
Mobile BFF Gateway → Mobile-optimized APIs
|
|
175
|
+
Partner Gateway → B2B API contracts
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### API Composition
|
|
179
|
+
```
|
|
180
|
+
Aggregate multiple services:
|
|
181
|
+
|
|
182
|
+
GET /api/dashboard
|
|
183
|
+
→ GET /users/me
|
|
184
|
+
→ GET /orders/recent
|
|
185
|
+
→ GET /notifications/unread
|
|
186
|
+
→ Combined response
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Canary Releases
|
|
190
|
+
```
|
|
191
|
+
Route % of traffic to new version:
|
|
192
|
+
|
|
193
|
+
v1 (stable): 95%
|
|
194
|
+
v2 (canary): 5%
|
|
195
|
+
|
|
196
|
+
Progressive rollout:
|
|
197
|
+
Day 1: 5%
|
|
198
|
+
Day 2: 25%
|
|
199
|
+
Day 3: 50%
|
|
200
|
+
Day 4: 100%
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Gateway Solutions
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
| Solution | Type | Best For |
|
|
207
|
+
|----------|------|----------|
|
|
208
|
+
| Kong | Open source | Feature-rich, plugins |
|
|
209
|
+
| AWS API Gateway | Managed | AWS ecosystem |
|
|
210
|
+
| Apigee | Enterprise | API management |
|
|
211
|
+
| NGINX | OSS | Performance |
|
|
212
|
+
| Spring Cloud Gateway | Framework | Java/Spring |
|
|
213
|
+
| Envoy | Proxy | Service mesh |
|
|
214
|
+
| Traefik | Cloud-native | Kubernetes |
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## Security Considerations
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
✅ TLS termination at gateway
|
|
221
|
+
✅ Request validation (size, content-type)
|
|
222
|
+
✅ SQL injection / XSS prevention
|
|
223
|
+
✅ DDoS protection
|
|
224
|
+
✅ IP allowlisting/blocklisting
|
|
225
|
+
✅ Bot detection
|
|
226
|
+
✅ API key rotation
|
|
227
|
+
✅ Secrets management
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## Best Practices
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
Performance:
|
|
234
|
+
✅ Connection pooling
|
|
235
|
+
✅ Async I/O
|
|
236
|
+
✅ Response streaming
|
|
237
|
+
✅ Compression
|
|
238
|
+
|
|
239
|
+
Reliability:
|
|
240
|
+
✅ Health checks
|
|
241
|
+
✅ Graceful degradation
|
|
242
|
+
✅ Retry with backoff
|
|
243
|
+
✅ Timeout configuration
|
|
244
|
+
|
|
245
|
+
Operations:
|
|
246
|
+
✅ Blue-green deployment
|
|
247
|
+
✅ Configuration as code
|
|
248
|
+
✅ Centralized logging
|
|
249
|
+
✅ Alerting on error spikes
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## Related Skills
|
|
253
|
+
|
|
254
|
+
- `gateway-spring`: Spring Cloud Gateway implementation
|