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,32 @@
|
|
|
1
|
+
Generá un CHANGELOG desde los commits recientes siguiendo Keep a Changelog.
|
|
2
|
+
|
|
3
|
+
## Pasos
|
|
4
|
+
|
|
5
|
+
1. Corré `git log --oneline --no-merges $(git describe --tags --abbrev=0)..HEAD` para commits desde último tag.
|
|
6
|
+
2. Si no hay tag: `git log --oneline --no-merges -30`
|
|
7
|
+
3. Agrupá los commits por tipo (feat, fix, refactor, etc.)
|
|
8
|
+
4. Generá la entrada de CHANGELOG en formato Keep a Changelog.
|
|
9
|
+
|
|
10
|
+
## Formato
|
|
11
|
+
|
|
12
|
+
```markdown
|
|
13
|
+
## [Unreleased] — YYYY-MM-DD
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- Nueva funcionalidad X (feat commits)
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- Corrección de Y (fix commits)
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
- Cambio en Z (refactor commits)
|
|
23
|
+
|
|
24
|
+
### Security
|
|
25
|
+
- Parche de seguridad W (fix(security) commits)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Reglas
|
|
29
|
+
|
|
30
|
+
- Solo incluir commits visibles para usuarios (no `chore`, `style`, `ci` internos)
|
|
31
|
+
- Agrupar múltiples commits relacionados en una sola entrada si tienen el mismo scope
|
|
32
|
+
- Linkear issues cuando el commit los menciona (#123)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ci-local
|
|
3
|
+
description: Run CI pipeline locally before pushing
|
|
4
|
+
category: git
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /ci-local
|
|
8
|
+
|
|
9
|
+
Run your GitHub Actions CI pipeline locally before pushing, using `act` or `wrkflw`. Catches failures fast without burning CI minutes.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
`/ci-local [workflow-file]`
|
|
14
|
+
|
|
15
|
+
- No argument: detects and runs the default push workflow
|
|
16
|
+
- With file: runs the specified workflow (e.g., `/ci-local ci.yml`)
|
|
17
|
+
|
|
18
|
+
## Steps
|
|
19
|
+
|
|
20
|
+
1. **List available workflows**
|
|
21
|
+
```bash
|
|
22
|
+
ls .github/workflows/
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
2. **Check for local CI tools**
|
|
26
|
+
```bash
|
|
27
|
+
which act 2>/dev/null && echo "act found" || echo "act not found"
|
|
28
|
+
which wrkflw 2>/dev/null && echo "wrkflw found" || echo "wrkflw not found"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
3. **Run with `act`** (if installed)
|
|
32
|
+
```bash
|
|
33
|
+
act push --container-architecture linux/amd64
|
|
34
|
+
# or for a specific workflow:
|
|
35
|
+
act push -W .github/workflows/ci.yml --container-architecture linux/amd64
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
4. **Run with `wrkflw`** (if installed)
|
|
39
|
+
```bash
|
|
40
|
+
wrkflw run
|
|
41
|
+
# or for a specific workflow:
|
|
42
|
+
wrkflw run .github/workflows/ci.yml
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
5. **If neither is installed** — install `act`:
|
|
46
|
+
|
|
47
|
+
**macOS (Homebrew)**
|
|
48
|
+
```bash
|
|
49
|
+
brew install act
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Linux (apt / snap)**
|
|
53
|
+
```bash
|
|
54
|
+
snap install act
|
|
55
|
+
# or via script:
|
|
56
|
+
curl https://raw.githubusercontent.com/nektos/act/master/install.sh | sudo bash
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
See: https://github.com/nektos/act
|
|
60
|
+
|
|
61
|
+
6. **Show pass/fail summary**
|
|
62
|
+
- ✅ All jobs green → safe to push
|
|
63
|
+
- ❌ Any job red → fix before pushing (`git push --no-verify` only in emergencies)
|
|
64
|
+
|
|
65
|
+
## Notes
|
|
66
|
+
|
|
67
|
+
- `act` requires Docker to be running
|
|
68
|
+
- Use `--container-architecture linux/amd64` on Apple Silicon to avoid platform mismatches
|
|
69
|
+
- First run downloads Docker images — subsequent runs are faster
|
|
70
|
+
- Secrets: create `.secrets` file at repo root (`KEY=value`) and pass with `act --secret-file .secrets`
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Analizá los cambios staged (`git diff --cached`) y generá un mensaje de commit siguiendo Conventional Commits.
|
|
2
|
+
|
|
3
|
+
## Pasos
|
|
4
|
+
|
|
5
|
+
1. Corré `git diff --cached --stat` para ver qué archivos cambiaron.
|
|
6
|
+
2. Corré `git diff --cached` para leer los cambios reales.
|
|
7
|
+
3. Determiná el tipo de commit:
|
|
8
|
+
- `feat` - nueva funcionalidad
|
|
9
|
+
- `fix` - corrección de bug
|
|
10
|
+
- `refactor` - reestructuración sin cambio de comportamiento
|
|
11
|
+
- `docs` - solo documentación
|
|
12
|
+
- `test` - agregar o actualizar tests
|
|
13
|
+
- `chore` - build, CI, dependencias
|
|
14
|
+
- `perf` - mejora de performance
|
|
15
|
+
- `style` - formateo, espacios
|
|
16
|
+
4. Identificá el scope del módulo/directorio más afectado.
|
|
17
|
+
5. Escribí una línea de subject concisa en imperativo (máx 72 chars).
|
|
18
|
+
6. Si el cambio no es trivial, agregá un cuerpo explicando **por qué** se hizo el cambio.
|
|
19
|
+
7. Presentá el mensaje de commit para aprobación antes de ejecutar.
|
|
20
|
+
|
|
21
|
+
## Formato
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
type(scope): línea de subject en modo imperativo
|
|
25
|
+
|
|
26
|
+
Cuerpo opcional explicando motivación y contexto.
|
|
27
|
+
BREAKING CHANGE: descripción si aplica.
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Reglas
|
|
31
|
+
|
|
32
|
+
- Subject: modo imperativo, sin punto final, máx 72 caracteres.
|
|
33
|
+
- Cuerpo: wrap a 80 chars, línea en blanco entre subject y cuerpo.
|
|
34
|
+
- Si hay múltiples cambios lógicos staged, sugerí dividir en commits separados.
|
|
35
|
+
- Nunca incluir archivos generados, lock files o artefactos de build sin intención explícita.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
Implementá el fix para un issue específico siguiendo el flujo completo.
|
|
2
|
+
|
|
3
|
+
## Pasos
|
|
4
|
+
|
|
5
|
+
1. **Entender**: Leé el issue completamente. Reproducí el problema si es posible.
|
|
6
|
+
2. **Branch**: Creá branch con convención `fix/t-{issue-number}-descripcion-corta`
|
|
7
|
+
```bash
|
|
8
|
+
git checkout -b fix/t-42-null-pointer-in-auth
|
|
9
|
+
```
|
|
10
|
+
3. **Escribí el test**: Creá un test que falla reproduciendo el bug.
|
|
11
|
+
4. **Implementá el fix**: Hacé el cambio mínimo necesario para pasar el test.
|
|
12
|
+
5. **Verificá**: Corré todos los tests. Confirmá que no hay regresiones.
|
|
13
|
+
6. **Commit**: Usá el formato `fix(scope): descripción concisa — closes #N`
|
|
14
|
+
7. **PR**: Creá el PR linkeando el issue.
|
|
15
|
+
|
|
16
|
+
## Checklist
|
|
17
|
+
|
|
18
|
+
- [ ] Reproduje el bug localmente
|
|
19
|
+
- [ ] Escribí test de regresión que falla antes del fix
|
|
20
|
+
- [ ] El fix es el cambio mínimo necesario
|
|
21
|
+
- [ ] Todos los tests pasan
|
|
22
|
+
- [ ] El mensaje de commit linkea el issue
|
|
23
|
+
- [ ] El PR describe la causa raíz del bug
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
Creá un Pull Request para el branch actual con descripción completa.
|
|
2
|
+
|
|
3
|
+
## Pasos
|
|
4
|
+
|
|
5
|
+
1. Verificá que todos los cambios estén committed: `git status`
|
|
6
|
+
2. Determiná el branch base (normalmente `main` o `develop`)
|
|
7
|
+
3. Corré `git log origin/main..HEAD --oneline` para ver los commits del PR
|
|
8
|
+
4. Corré `git diff origin/main...HEAD --stat` para el resumen de cambios
|
|
9
|
+
5. Generá la descripción usando el template
|
|
10
|
+
|
|
11
|
+
## Template de PR
|
|
12
|
+
|
|
13
|
+
```markdown
|
|
14
|
+
## ¿Qué hace este PR?
|
|
15
|
+
|
|
16
|
+
[Descripción concisa del cambio y su propósito]
|
|
17
|
+
|
|
18
|
+
## ¿Por qué?
|
|
19
|
+
|
|
20
|
+
[Contexto y motivación. Linkear el issue si existe: Closes #123]
|
|
21
|
+
|
|
22
|
+
## Cambios principales
|
|
23
|
+
|
|
24
|
+
- [ ] Cambio 1
|
|
25
|
+
- [ ] Cambio 2
|
|
26
|
+
|
|
27
|
+
## Testing
|
|
28
|
+
|
|
29
|
+
- [ ] Tests unitarios pasan
|
|
30
|
+
- [ ] Tests de integración pasan
|
|
31
|
+
- [ ] Testeo manual completado
|
|
32
|
+
|
|
33
|
+
## Screenshots / evidencia
|
|
34
|
+
|
|
35
|
+
[Si aplica]
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Comando gh
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
gh pr create --title "type(scope): descripción" --body "$(cat pr-body.md)" --base main
|
|
42
|
+
```
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
Revisá el PR actual con foco en correctitud, seguridad y mantenibilidad.
|
|
2
|
+
|
|
3
|
+
## Pasos
|
|
4
|
+
|
|
5
|
+
1. Corré `git diff main...HEAD` o `git diff origin/main...HEAD` para ver todos los cambios.
|
|
6
|
+
2. Revisá el diff completo antes de comentar.
|
|
7
|
+
3. Verificá cada uno de los checkpoints de la lista.
|
|
8
|
+
4. Generá un reporte estructurado con hallazgos.
|
|
9
|
+
|
|
10
|
+
## Checkpoints
|
|
11
|
+
|
|
12
|
+
### Correctitud
|
|
13
|
+
- [ ] La lógica es correcta para el caso happy path
|
|
14
|
+
- [ ] Los edge cases están manejados (null, empty, overflow)
|
|
15
|
+
- [ ] El error handling es apropiado y no silencia errores
|
|
16
|
+
- [ ] Las condiciones de race condition están consideradas
|
|
17
|
+
|
|
18
|
+
### Seguridad
|
|
19
|
+
- [ ] No hay SQL injection posible
|
|
20
|
+
- [ ] Input validation en límites del sistema
|
|
21
|
+
- [ ] No hay secrets en el diff
|
|
22
|
+
- [ ] Autenticación/autorización correcta
|
|
23
|
+
|
|
24
|
+
### Tests
|
|
25
|
+
- [ ] Los tests cubren el comportamiento cambiado
|
|
26
|
+
- [ ] Hay tests para edge cases críticos
|
|
27
|
+
- [ ] Los tests no son frágiles (no dependen de orden o timing)
|
|
28
|
+
|
|
29
|
+
### Mantenibilidad
|
|
30
|
+
- [ ] El código es legible sin comentarios explicativos
|
|
31
|
+
- [ ] No hay duplicación innecesaria
|
|
32
|
+
- [ ] Los nombres son descriptivos
|
|
33
|
+
|
|
34
|
+
## Formato de Reporte
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
## Code Review
|
|
38
|
+
|
|
39
|
+
### Blockers
|
|
40
|
+
- [archivo:línea] descripción del problema
|
|
41
|
+
|
|
42
|
+
### Suggestions
|
|
43
|
+
- [archivo:línea] mejora sugerida
|
|
44
|
+
|
|
45
|
+
### Questions
|
|
46
|
+
- [archivo:línea] pregunta de clarificación
|
|
47
|
+
|
|
48
|
+
### Positivos
|
|
49
|
+
- Buen patrón en X
|
|
50
|
+
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
Gestioná Git worktrees para trabajar en múltiples branches en paralelo.
|
|
2
|
+
|
|
3
|
+
## ¿Cuándo usar worktrees?
|
|
4
|
+
|
|
5
|
+
- Necesitás hacer un hotfix urgente mientras trabajás en una feature
|
|
6
|
+
- Querés revisar otro branch sin perder tu trabajo en progreso
|
|
7
|
+
- Correr tests de dos versiones en paralelo
|
|
8
|
+
|
|
9
|
+
## Comandos Principales
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Listar worktrees existentes
|
|
13
|
+
git worktree list
|
|
14
|
+
|
|
15
|
+
# Crear nuevo worktree para un branch existente
|
|
16
|
+
git worktree add ../proyecto-hotfix hotfix/critical-bug
|
|
17
|
+
|
|
18
|
+
# Crear nuevo worktree con nuevo branch
|
|
19
|
+
git worktree add -b feature/nueva-feature ../proyecto-nueva main
|
|
20
|
+
|
|
21
|
+
# Eliminar worktree cuando ya no se necesita
|
|
22
|
+
git worktree remove ../proyecto-hotfix
|
|
23
|
+
|
|
24
|
+
# Limpiar referencias de worktrees eliminados manualmente
|
|
25
|
+
git worktree prune
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Flujo Recomendado
|
|
29
|
+
|
|
30
|
+
1. Creá el worktree en un directorio hermano al proyecto principal
|
|
31
|
+
2. Abrí el worktree en una terminal separada (o tab)
|
|
32
|
+
3. Trabajá independientemente en cada directorio
|
|
33
|
+
4. Al terminar: `git worktree remove` + merge/PR normal
|
|
34
|
+
|
|
35
|
+
## Precauciones
|
|
36
|
+
|
|
37
|
+
- No editéis el mismo archivo en dos worktrees simultáneamente
|
|
38
|
+
- Cada worktree comparte el historial git pero tiene su propio working tree
|
|
39
|
+
- Los stashes son compartidos entre worktrees del mismo repo
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
Limpiá el código del archivo o módulo actual sin cambiar su comportamiento.
|
|
2
|
+
|
|
3
|
+
## Qué Limpiar
|
|
4
|
+
|
|
5
|
+
1. **Código comentado**: Eliminar código comentado que no se usa (está en git history)
|
|
6
|
+
2. **Console.log / print debug**: Remover logging de debug temporal
|
|
7
|
+
3. **Variables no usadas**: Identificar con linter e eliminar
|
|
8
|
+
4. **Imports no usados**: Limpiar imports innecesarios
|
|
9
|
+
5. **Lógica duplicada**: Extraer a función/método compartido
|
|
10
|
+
6. **Magic numbers**: Reemplazar con constantes con nombre descriptivo
|
|
11
|
+
7. **Comentarios obvios**: Eliminar comentarios que repiten lo que hace el código
|
|
12
|
+
|
|
13
|
+
## Proceso
|
|
14
|
+
|
|
15
|
+
1. Corré el linter para identificar issues automáticamente
|
|
16
|
+
2. Revisá el archivo buscando los items de la lista
|
|
17
|
+
3. Hacé los cambios en pequeños commits agrupados por tipo
|
|
18
|
+
4. Corré los tests después de cada grupo de cambios
|
|
19
|
+
5. Commit: `refactor(scope): clean up X`
|
|
20
|
+
|
|
21
|
+
## Regla de Oro
|
|
22
|
+
|
|
23
|
+
**Si el comportamiento cambia, no es cleanup — es un bug o una feature.**
|
|
24
|
+
Corré los tests antes y después. Si fallan, revertí.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
Identificá y eliminá código muerto (código que nunca se ejecuta o no se usa).
|
|
2
|
+
|
|
3
|
+
## Tipos de Código Muerto
|
|
4
|
+
|
|
5
|
+
- Funciones/métodos nunca llamados
|
|
6
|
+
- Variables declaradas pero nunca leídas
|
|
7
|
+
- Branches de condicionales que nunca se ejecutan (unreachable code)
|
|
8
|
+
- Imports que no se usan
|
|
9
|
+
- Features flags siempre false/true
|
|
10
|
+
- Código después de `return` / `throw`
|
|
11
|
+
|
|
12
|
+
## Detección
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# TypeScript/JavaScript
|
|
16
|
+
npx ts-prune # funciones no usadas
|
|
17
|
+
npx knip # exports no usados
|
|
18
|
+
|
|
19
|
+
# Go
|
|
20
|
+
go vet ./...
|
|
21
|
+
|
|
22
|
+
# Python
|
|
23
|
+
vulture . --min-confidence 80
|
|
24
|
+
|
|
25
|
+
# General: buscar con grep
|
|
26
|
+
grep -r "function\|def\|func " --include="*.ts" | grep -v test
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Proceso Seguro
|
|
30
|
+
|
|
31
|
+
1. Identificá el código candidato a eliminar
|
|
32
|
+
2. Buscá todos los usos en el codebase (grep exhaustivo)
|
|
33
|
+
3. Verificá que no se usa vía reflection, dynamic imports o configuración externa
|
|
34
|
+
4. Eliminá el código
|
|
35
|
+
5. Corré el suite completo de tests
|
|
36
|
+
6. Si pasan: commit `refactor: remove dead code in X`
|
|
37
|
+
|
|
38
|
+
## Precaución
|
|
39
|
+
|
|
40
|
+
Algunos "dead code" es intencional: hooks de lifecycle, handlers registrados dinámicamente, código de compatibility. Verificá antes de eliminar.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
Extraé lógica duplicada o compleja a funciones/módulos separados.
|
|
2
|
+
|
|
3
|
+
## Cuándo Extraer
|
|
4
|
+
|
|
5
|
+
- La misma lógica aparece en 2+ lugares (DRY)
|
|
6
|
+
- Una función hace más de una cosa (SRP)
|
|
7
|
+
- Una función supera ~30-40 líneas
|
|
8
|
+
- Un bloque de código necesita un comentario para explicar qué hace
|
|
9
|
+
|
|
10
|
+
## Proceso
|
|
11
|
+
|
|
12
|
+
1. Identificá el bloque a extraer
|
|
13
|
+
2. Determiná el nombre descriptivo (verbo + sustantivo: `calculateTotal`, `validateEmail`)
|
|
14
|
+
3. Identificá los inputs (parámetros) y el output (valor de retorno)
|
|
15
|
+
4. Creá la función en el lugar apropiado (mismo archivo, módulo utilitario, o clase)
|
|
16
|
+
5. Reemplazá el bloque original con la llamada a la nueva función
|
|
17
|
+
6. Corré los tests
|
|
18
|
+
7. Repetí para cada ocurrencia duplicada
|
|
19
|
+
|
|
20
|
+
## Nombres de Funciones
|
|
21
|
+
|
|
22
|
+
- Debe describir QUÉ hace, no CÓMO lo hace
|
|
23
|
+
- Verbo en imperativo: `get`, `calculate`, `validate`, `transform`, `parse`
|
|
24
|
+
- Específico: `getUserById` > `getUser` > `get`
|
|
25
|
+
- Sin abreviaturas oscuras
|
|
26
|
+
|
|
27
|
+
## Commit
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
refactor(scope): extract X logic into Y function
|
|
31
|
+
```
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
Escribí o corré tests end-to-end para verificar flujos completos del sistema.
|
|
2
|
+
|
|
3
|
+
## Cuándo Usar E2E
|
|
4
|
+
|
|
5
|
+
- Flujos críticos de negocio (checkout, login, registro)
|
|
6
|
+
- Integraciones entre múltiples servicios
|
|
7
|
+
- Regresiones de bugs reportados por usuarios
|
|
8
|
+
- Smoke tests post-deploy
|
|
9
|
+
|
|
10
|
+
## Pasos para Escribir E2E
|
|
11
|
+
|
|
12
|
+
1. Identificá el flujo de usuario completo (inicio → fin)
|
|
13
|
+
2. Listá los pasos exactos del usuario
|
|
14
|
+
3. Definí los assertions en cada paso crítico
|
|
15
|
+
4. Usá selectores robustos (data-testid preferido sobre CSS classes)
|
|
16
|
+
5. Manejá estados asíncronos correctamente (waitFor, expect.poll)
|
|
17
|
+
|
|
18
|
+
## Principios
|
|
19
|
+
|
|
20
|
+
- **Independencia**: Cada test debe poder correr solo
|
|
21
|
+
- **Idempotencia**: Limpiar estado antes/después del test
|
|
22
|
+
- **Realismo**: Testear como el usuario real lo haría
|
|
23
|
+
- **Determinismo**: Evitar flakiness con waits explícitos
|
|
24
|
+
|
|
25
|
+
## Stack por Proyecto
|
|
26
|
+
|
|
27
|
+
- **Web**: Playwright o Cypress
|
|
28
|
+
- **Mobile**: Detox o Appium
|
|
29
|
+
- **API**: Supertest o Rest Assured
|
|
30
|
+
- **CLI**: expect o subprocess testing
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Implementá una feature usando Test-Driven Development (TDD).
|
|
2
|
+
|
|
3
|
+
## Ciclo Red-Green-Refactor
|
|
4
|
+
|
|
5
|
+
1. **RED**: Escribí un test que falla para el comportamiento deseado
|
|
6
|
+
2. **GREEN**: Escribí el código mínimo para que el test pase
|
|
7
|
+
3. **REFACTOR**: Mejorá el código sin romper los tests
|
|
8
|
+
|
|
9
|
+
## Pasos
|
|
10
|
+
|
|
11
|
+
1. Definí el comportamiento esperado en lenguaje natural
|
|
12
|
+
2. Escribí el test primero (debe fallar — confirmá que falla)
|
|
13
|
+
3. Implementá solo lo necesario para pasar el test
|
|
14
|
+
4. Corré el test (debe pasar)
|
|
15
|
+
5. Refactorizá si hay duplicación u oportunidades de mejora
|
|
16
|
+
6. Repetí para el siguiente comportamiento
|
|
17
|
+
|
|
18
|
+
## Reglas TDD
|
|
19
|
+
|
|
20
|
+
- **Un test a la vez**: Focus en un comportamiento específico
|
|
21
|
+
- **Test mínimo**: El test más simple que falla
|
|
22
|
+
- **Código mínimo**: Solo lo necesario para pasar, nada más
|
|
23
|
+
- **No adelantarse**: No implementar funcionalidad sin test previo
|
|
24
|
+
- **Refactor only on green**: Solo refactorizá cuando todos los tests pasan
|
|
25
|
+
|
|
26
|
+
## Estructura de Tests
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
describe("Componente/Función", () => {
|
|
30
|
+
it("debe hacer X cuando Y", () => {
|
|
31
|
+
// Arrange
|
|
32
|
+
// Act
|
|
33
|
+
// Assert
|
|
34
|
+
})
|
|
35
|
+
})
|
|
36
|
+
```
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
Analizá la cobertura de tests e identificá gaps críticos.
|
|
2
|
+
|
|
3
|
+
## Pasos
|
|
4
|
+
|
|
5
|
+
1. Corré el coverage report del proyecto:
|
|
6
|
+
- Go: `go test ./... -coverprofile=coverage.out && go tool cover -html=coverage.out`
|
|
7
|
+
- Node/TS: `npm run test:coverage` o `vitest --coverage`
|
|
8
|
+
- Python: `pytest --cov=src --cov-report=html`
|
|
9
|
+
2. Identificá archivos con cobertura < 70%
|
|
10
|
+
3. Revisá paths de código no cubiertos — enfocate en:
|
|
11
|
+
- Manejo de errores
|
|
12
|
+
- Edge cases (nil, empty, boundary values)
|
|
13
|
+
- Paths de autenticación/autorización
|
|
14
|
+
4. Priorizá tests para código crítico primero
|
|
15
|
+
|
|
16
|
+
## Métricas Objetivo
|
|
17
|
+
|
|
18
|
+
| Tipo | Mínimo | Objetivo |
|
|
19
|
+
|------|--------|----------|
|
|
20
|
+
| Statements | 70% | 85% |
|
|
21
|
+
| Branches | 60% | 80% |
|
|
22
|
+
| Functions | 75% | 90% |
|
|
23
|
+
| Lines | 70% | 85% |
|
|
24
|
+
|
|
25
|
+
## Lo Que NO Necesita Tests
|
|
26
|
+
|
|
27
|
+
- Getters/setters triviales sin lógica
|
|
28
|
+
- Código generado automáticamente
|
|
29
|
+
- Configuración estática (constantes)
|
|
30
|
+
- Código de terceros
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
Corregí tests que fallan sin romper la lógica de negocio.
|
|
2
|
+
|
|
3
|
+
## Pasos
|
|
4
|
+
|
|
5
|
+
1. Identificá todos los tests que fallan: `npm test 2>&1 | grep FAIL`
|
|
6
|
+
2. Para cada test fallando:
|
|
7
|
+
a. Leé el mensaje de error completo
|
|
8
|
+
b. Determiná si falla por: bug en código, test desactualizado, o flakiness
|
|
9
|
+
3. **Si es bug en código**: Seguí el flujo de fix-issue
|
|
10
|
+
4. **Si el test está desactualizado**: Actualizá el test para reflejar el comportamiento correcto
|
|
11
|
+
5. **Si es flakiness**: Identificá la causa (timing, orden, estado compartido) y eliminala
|
|
12
|
+
|
|
13
|
+
## Nunca
|
|
14
|
+
|
|
15
|
+
- No borres tests que fallan sin entender por qué fallan
|
|
16
|
+
- No cambies assertions para que siempre pasen sin verificar que el comportamiento es correcto
|
|
17
|
+
- No agregues `skip` o `xtest` sin documentar por qué y crear un issue
|
|
18
|
+
|
|
19
|
+
## Diagnóstico de Flakiness
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Correr el test N veces para confirmar flakiness
|
|
23
|
+
for i in {1..10}; do npm test -- --testNamePattern="nombre del test" 2>&1 | tail -1; done
|
|
24
|
+
```
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: generate-agents-md
|
|
3
|
+
description: Inspect project and auto-generate a cross-agent compatible AGENTS.md
|
|
4
|
+
category: workflow
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /generate-agents-md
|
|
8
|
+
|
|
9
|
+
Inspects the current project and generates a well-structured `AGENTS.md` compatible with all major AI coding agents (Claude Code, Codex, Gemini CLI, Copilot, OpenCode).
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/generate-agents-md
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Steps
|
|
18
|
+
|
|
19
|
+
### 1. Detect Project Stack
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Package manager
|
|
23
|
+
ls package.json pyproject.toml Cargo.toml go.mod pom.xml build.gradle 2>/dev/null
|
|
24
|
+
|
|
25
|
+
# Test runner
|
|
26
|
+
cat package.json | grep -E '"test"|"jest"|"vitest"' 2>/dev/null
|
|
27
|
+
ls pytest.ini setup.cfg .pytest.ini 2>/dev/null
|
|
28
|
+
|
|
29
|
+
# CI workflows
|
|
30
|
+
ls .github/workflows/*.yml 2>/dev/null | head -5
|
|
31
|
+
|
|
32
|
+
# PR title pattern from recent commits
|
|
33
|
+
git log --oneline -10 2>/dev/null
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 2. Generate AGENTS.md Structure
|
|
37
|
+
|
|
38
|
+
Output a file with these sections:
|
|
39
|
+
|
|
40
|
+
```markdown
|
|
41
|
+
# AGENTS.md
|
|
42
|
+
|
|
43
|
+
> Cross-agent configuration for AI coding assistants.
|
|
44
|
+
> Compatible with: Claude Code, OpenCode, Codex CLI, Gemini CLI, GitHub Copilot.
|
|
45
|
+
|
|
46
|
+
## Dev Environment
|
|
47
|
+
|
|
48
|
+
- **Language:** <detected>
|
|
49
|
+
- **Package manager:** <detected>
|
|
50
|
+
- **Node/Python/Go version:** <from .nvmrc / .python-version / go.mod>
|
|
51
|
+
|
|
52
|
+
## Setup
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
<install command: npm install / pip install -r requirements.txt / go mod tidy>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Testing
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
<test command: npm test / pytest / go test ./...>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Key Conventions
|
|
65
|
+
|
|
66
|
+
- <PR title format from git log, e.g., Conventional Commits>
|
|
67
|
+
- <branch naming from git branch -r>
|
|
68
|
+
- <code style: eslint/prettier/black/gofmt if config files found>
|
|
69
|
+
|
|
70
|
+
## Important Files
|
|
71
|
+
|
|
72
|
+
- `<main config file>` — <brief description>
|
|
73
|
+
- `<main entry point>` — <brief description>
|
|
74
|
+
|
|
75
|
+
## AI Agent Notes
|
|
76
|
+
|
|
77
|
+
- Always run tests before marking a task complete
|
|
78
|
+
- Never commit directly to main — use feature branches
|
|
79
|
+
- Follow existing code style; check linter config before writing new code
|
|
80
|
+
- For large changes, create a plan first with /workflows:plan
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 3. Save and Confirm
|
|
84
|
+
|
|
85
|
+
Save to project root as `AGENTS.md` and report what was detected vs. what defaulted to assumptions.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
Creá un plan estructurado antes de implementar una feature o cambio complejo.
|
|
2
|
+
|
|
3
|
+
## Cuándo Planificar Primero
|
|
4
|
+
|
|
5
|
+
- Feature nueva que toca múltiples archivos o servicios
|
|
6
|
+
- Cambio que requiere migración de datos
|
|
7
|
+
- Refactoring de componente crítico
|
|
8
|
+
- Cualquier tarea > 2 horas estimadas
|
|
9
|
+
|
|
10
|
+
## Template de Plan
|
|
11
|
+
|
|
12
|
+
```markdown
|
|
13
|
+
## Feature: [nombre]
|
|
14
|
+
|
|
15
|
+
### Problema
|
|
16
|
+
[Qué problema resuelve]
|
|
17
|
+
|
|
18
|
+
### Solución Propuesta
|
|
19
|
+
[Descripción técnica de la solución]
|
|
20
|
+
|
|
21
|
+
### Archivos Afectados
|
|
22
|
+
- `src/x.go` — añadir función Y
|
|
23
|
+
- `tests/x_test.go` — tests para Y
|
|
24
|
+
- `api/routes.go` — registrar nuevo endpoint
|
|
25
|
+
|
|
26
|
+
### Orden de Implementación
|
|
27
|
+
1. Paso 1 (independiente)
|
|
28
|
+
2. Paso 2 (depende de 1)
|
|
29
|
+
3. Paso 3
|
|
30
|
+
|
|
31
|
+
### Riesgos
|
|
32
|
+
- Riesgo A → Mitigación A
|
|
33
|
+
- Riesgo B → Mitigación B
|
|
34
|
+
|
|
35
|
+
### Criterios de Done
|
|
36
|
+
- [ ] Feature funciona para casos normales
|
|
37
|
+
- [ ] Edge cases cubiertos
|
|
38
|
+
- [ ] Tests pasan
|
|
39
|
+
- [ ] Documentación actualizada
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Principios
|
|
43
|
+
|
|
44
|
+
- Planificá a nivel de archivos y funciones, no de líneas
|
|
45
|
+
- Identificá dependencias entre pasos
|
|
46
|
+
- Empezá por lo más incierto o riesgoso
|
|
47
|
+
- Un plan es una guía, no un contrato — actualizarlo está bien
|