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,199 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: obsidian-brain-workflow
|
|
3
|
+
description: >
|
|
4
|
+
Guide for working with Obsidian Brain project memory: Kanban board, Dataview inline fields,
|
|
5
|
+
Templater templates, and wave integration.
|
|
6
|
+
Trigger: obsidian brain, kanban board, project memory, dataview, session tracking
|
|
7
|
+
tools:
|
|
8
|
+
- Read
|
|
9
|
+
- Write
|
|
10
|
+
- Bash
|
|
11
|
+
- Grep
|
|
12
|
+
metadata:
|
|
13
|
+
author: project-starter-framework
|
|
14
|
+
version: "1.0"
|
|
15
|
+
tags: [workflow, obsidian, kanban, dataview, memory, sessions]
|
|
16
|
+
updated: "2026-02"
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Obsidian Brain Workflow
|
|
20
|
+
|
|
21
|
+
Manage project memory using Obsidian-compatible markdown with Kanban, Dataview, and Templater.
|
|
22
|
+
|
|
23
|
+
## Session Start Checklist
|
|
24
|
+
|
|
25
|
+
At the beginning of every session:
|
|
26
|
+
|
|
27
|
+
1. **Read CONTEXT.md** - Current project state
|
|
28
|
+
```bash
|
|
29
|
+
cat .project/Memory/CONTEXT.md
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
2. **Check KANBAN.md** - Active tasks and their lanes
|
|
33
|
+
```bash
|
|
34
|
+
cat .project/Memory/KANBAN.md
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
3. **Review BLOCKERS.md** - Any open blockers
|
|
38
|
+
```bash
|
|
39
|
+
grep "status:: open" .project/Memory/BLOCKERS.md
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
4. **Create session file** - Copy template or use Templater
|
|
43
|
+
```bash
|
|
44
|
+
cp .project/Sessions/TEMPLATE.md .project/Sessions/$(date +%Y-%m-%d).md
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## KANBAN.md Format
|
|
48
|
+
|
|
49
|
+
The Kanban board uses Obsidian Kanban plugin format. Each lane is an H2 heading, each task is a checkbox item.
|
|
50
|
+
|
|
51
|
+
```markdown
|
|
52
|
+
---
|
|
53
|
+
kanban-plugin: board
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Backlog
|
|
57
|
+
- [ ] T-001 Setup monorepo #wave
|
|
58
|
+
- [ ] T-005 Add monitoring
|
|
59
|
+
|
|
60
|
+
## En Progreso
|
|
61
|
+
- [ ] T-002 Configure CI #wave
|
|
62
|
+
|
|
63
|
+
## Review
|
|
64
|
+
- [ ] T-003 Add linters #wave
|
|
65
|
+
|
|
66
|
+
## Completado
|
|
67
|
+
- [x] T-000 Init project
|
|
68
|
+
|
|
69
|
+
**Complete**
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Moving Tasks Between Lanes
|
|
73
|
+
|
|
74
|
+
**Without Obsidian (AI CLI or manual edit):**
|
|
75
|
+
- Cut the `- [ ]` line from one H2 section
|
|
76
|
+
- Paste it under the target H2 section
|
|
77
|
+
- When completing: change `- [ ]` to `- [x]`
|
|
78
|
+
|
|
79
|
+
**With Obsidian:**
|
|
80
|
+
- Drag and drop cards between lanes
|
|
81
|
+
|
|
82
|
+
### Tags
|
|
83
|
+
|
|
84
|
+
- `#wave` - Part of current wave
|
|
85
|
+
- `#blocker` - Has an associated blocker
|
|
86
|
+
- `#review` - Needs review
|
|
87
|
+
|
|
88
|
+
## Dataview Inline Fields
|
|
89
|
+
|
|
90
|
+
Memory files use Dataview inline fields for automatic queries. Format: `key:: value`
|
|
91
|
+
|
|
92
|
+
### Required Fields Reference
|
|
93
|
+
|
|
94
|
+
| File | Required Fields | Notes |
|
|
95
|
+
|------|----------------|-------|
|
|
96
|
+
| DECISIONS.md (ADRs) | `type:: adr`, `status::`, `date::` | Without these, DASHBOARD queries return empty |
|
|
97
|
+
| BLOCKERS.md | `type:: blocker`, `status::`, `impact::`, `date::` | `impact` values: `alto`, `medio`, `bajo` |
|
|
98
|
+
| Sessions/*.md | frontmatter `type: session`, `date`, `phase`, `wave` | Use YAML frontmatter, not inline fields |
|
|
99
|
+
|
|
100
|
+
### ADR Fields (DECISIONS.md)
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
## ADR-002: Use PostgreSQL
|
|
104
|
+
|
|
105
|
+
type:: adr
|
|
106
|
+
status:: aceptada
|
|
107
|
+
date:: 2026-01-15
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Blocker Fields (BLOCKERS.md)
|
|
111
|
+
|
|
112
|
+
```markdown
|
|
113
|
+
### BLOCKER-003: Docker build fails
|
|
114
|
+
|
|
115
|
+
type:: blocker
|
|
116
|
+
status:: open
|
|
117
|
+
impact:: alto
|
|
118
|
+
date:: 2026-01-20
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Valid Status Values
|
|
122
|
+
|
|
123
|
+
| File | Valid Statuses |
|
|
124
|
+
|------|---------------|
|
|
125
|
+
| ADRs | `pendiente`, `aceptada`, `rechazada`, `deprecada` |
|
|
126
|
+
| Blockers | `open`, `investigating`, `resolved`, `workaround` |
|
|
127
|
+
|
|
128
|
+
### Resolving a Blocker
|
|
129
|
+
|
|
130
|
+
When resolving, update both the inline field and the content:
|
|
131
|
+
|
|
132
|
+
```markdown
|
|
133
|
+
### BLOCKER-003: Docker build fails
|
|
134
|
+
|
|
135
|
+
type:: blocker
|
|
136
|
+
status:: resolved
|
|
137
|
+
impact:: alto
|
|
138
|
+
date:: 2026-01-20
|
|
139
|
+
|
|
140
|
+
**Solucion:**
|
|
141
|
+
Changed base image from alpine to debian-slim.
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Wave + Kanban Integration
|
|
145
|
+
|
|
146
|
+
KANBAN.md is for day-to-day task tracking. WAVES.md is the historical record.
|
|
147
|
+
|
|
148
|
+
### Creating a Wave
|
|
149
|
+
|
|
150
|
+
1. Add tasks to KANBAN.md Backlog with `#wave` tag
|
|
151
|
+
2. Run `./scripts/new-wave.sh "T-001 T-002 T-003"`
|
|
152
|
+
3. Move tagged tasks to "En Progreso" in KANBAN.md
|
|
153
|
+
|
|
154
|
+
### Completing a Wave
|
|
155
|
+
|
|
156
|
+
1. Move all wave tasks to "Completado" in KANBAN.md
|
|
157
|
+
2. Run `./scripts/new-wave.sh --complete`
|
|
158
|
+
3. Remove `#wave` tags from completed tasks
|
|
159
|
+
|
|
160
|
+
## Templates
|
|
161
|
+
|
|
162
|
+
### Manual (without Templater)
|
|
163
|
+
|
|
164
|
+
Copy the template file and fill in placeholders:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
# New session
|
|
168
|
+
cp .project/Sessions/TEMPLATE.md .project/Sessions/2026-01-15.md
|
|
169
|
+
|
|
170
|
+
# New ADR - append to DECISIONS.md using the template at the bottom
|
|
171
|
+
# New Blocker - append to BLOCKERS.md using the template at the bottom
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### With Templater (Obsidian)
|
|
175
|
+
|
|
176
|
+
Use Ctrl+T (or Cmd+T) to insert templates that auto-fill dates and prompt for values:
|
|
177
|
+
|
|
178
|
+
- `Session.md` - Creates session with current date, prompts for phase/wave/branch
|
|
179
|
+
- `ADR.md` - Creates ADR entry, prompts for number/title/context/decision
|
|
180
|
+
- `Blocker.md` - Creates blocker entry, prompts for number/title/impact
|
|
181
|
+
|
|
182
|
+
## Session End Checklist
|
|
183
|
+
|
|
184
|
+
At the end of every session:
|
|
185
|
+
|
|
186
|
+
1. **Update CONTEXT.md** - Reflect current state
|
|
187
|
+
2. **Update KANBAN.md** - Move tasks to correct lanes
|
|
188
|
+
3. **Complete session file** - Fill summary section
|
|
189
|
+
4. **Record blockers** - If any new ones appeared
|
|
190
|
+
5. **Record decisions** - If any ADRs were made
|
|
191
|
+
|
|
192
|
+
## Dashboard
|
|
193
|
+
|
|
194
|
+
DASHBOARD.md contains Dataview queries that auto-update in Obsidian:
|
|
195
|
+
- Recent decisions
|
|
196
|
+
- Active blockers
|
|
197
|
+
- Recent sessions
|
|
198
|
+
|
|
199
|
+
Without Obsidian, it shows as code blocks (read-only reference).
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: using-git-worktrees
|
|
3
|
+
description: >
|
|
4
|
+
Gestiona múltiples branches en paralelo con Git worktrees para mantener contextos separados.
|
|
5
|
+
Trigger: worktree, trabajo en paralelo, hotfix mientras desarrollás, múltiples branches simultáneos
|
|
6
|
+
tools:
|
|
7
|
+
- Bash
|
|
8
|
+
- Read
|
|
9
|
+
metadata:
|
|
10
|
+
author: project-starter-framework
|
|
11
|
+
version: "1.0"
|
|
12
|
+
tags: [git, workflow, branches, parallel]
|
|
13
|
+
updated: "2026-02"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Git Worktrees Skill
|
|
17
|
+
|
|
18
|
+
## ¿Qué son los Worktrees?
|
|
19
|
+
|
|
20
|
+
Git worktrees permiten tener múltiples branches del mismo repositorio checked out simultáneamente en directorios separados. Ideal para:
|
|
21
|
+
|
|
22
|
+
- Hacer un hotfix urgente sin perder el trabajo en progreso
|
|
23
|
+
- Revisar otro branch sin stashing
|
|
24
|
+
- Correr tests de dos versiones en paralelo
|
|
25
|
+
|
|
26
|
+
## Comandos Esenciales
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Ver worktrees actuales
|
|
30
|
+
git worktree list
|
|
31
|
+
|
|
32
|
+
# Crear worktree para branch existente
|
|
33
|
+
git worktree add ../proyecto-hotfix hotfix/critical-bug
|
|
34
|
+
|
|
35
|
+
# Crear worktree con nuevo branch desde main
|
|
36
|
+
git worktree add -b feature/nueva ../proyecto-nueva main
|
|
37
|
+
|
|
38
|
+
# Eliminar worktree
|
|
39
|
+
git worktree remove ../proyecto-hotfix
|
|
40
|
+
|
|
41
|
+
# Limpiar referencias huérfanas
|
|
42
|
+
git worktree prune
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Flujo de Trabajo
|
|
46
|
+
|
|
47
|
+
### Hotfix Urgente Durante Feature Development
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# Situación: trabajando en feature/dashboard, llega bug urgente
|
|
51
|
+
|
|
52
|
+
# 1. Crear worktree para el hotfix (sin afectar tu trabajo)
|
|
53
|
+
git worktree add ../mi-proyecto-hotfix -b hotfix/login-crash main
|
|
54
|
+
|
|
55
|
+
# 2. Ir al worktree del hotfix
|
|
56
|
+
cd ../mi-proyecto-hotfix
|
|
57
|
+
|
|
58
|
+
# 3. Hacer el fix, testear, commitear
|
|
59
|
+
git commit -m "fix(auth): prevent crash on empty session"
|
|
60
|
+
git push origin hotfix/login-crash
|
|
61
|
+
|
|
62
|
+
# 4. Volver a tu feature
|
|
63
|
+
cd ../mi-proyecto
|
|
64
|
+
|
|
65
|
+
# 5. Limpiar después del merge
|
|
66
|
+
git worktree remove ../mi-proyecto-hotfix
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Comparar Implementaciones
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Tener la versión actual y la refactorizada corriendo en paralelo
|
|
73
|
+
git worktree add ../proyecto-v2 refactor/new-arch
|
|
74
|
+
|
|
75
|
+
# Terminal 1: cd ../mi-proyecto && go run . -port 8080
|
|
76
|
+
# Terminal 2: cd ../proyecto-v2 && go run . -port 8081
|
|
77
|
+
# Comparar comportamiento
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Convenciones de Naming
|
|
81
|
+
|
|
82
|
+
Usar directorios hermanos al repo principal:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
~/projects/
|
|
86
|
+
mi-proyecto/ # repo principal
|
|
87
|
+
mi-proyecto-hotfix/ # worktree hotfix
|
|
88
|
+
mi-proyecto-review/ # worktree para revisar PR
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Limitaciones
|
|
92
|
+
|
|
93
|
+
- No podés hacer checkout del mismo branch en dos worktrees
|
|
94
|
+
- Los stashes son compartidos (cuidado al usar `git stash`)
|
|
95
|
+
- Algunos IDEs no detectan múltiples worktrees automáticamente
|
|
96
|
+
|
|
97
|
+
## Related Skills
|
|
98
|
+
|
|
99
|
+
- git-github
|
|
100
|
+
- git-workflow
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verification-before-completion
|
|
3
|
+
description: >
|
|
4
|
+
Ejecuta un checklist de verificación estándar antes de marcar una tarea como completa.
|
|
5
|
+
Trigger: antes de terminar, marcar como done, cerrar tarea, completar feature, verification checklist
|
|
6
|
+
tools:
|
|
7
|
+
- Bash
|
|
8
|
+
- Read
|
|
9
|
+
metadata:
|
|
10
|
+
author: project-starter-framework
|
|
11
|
+
version: "1.0"
|
|
12
|
+
tags: [workflow, quality, checklist, done]
|
|
13
|
+
updated: "2026-02"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Verification Before Completion Skill
|
|
17
|
+
|
|
18
|
+
## Propósito
|
|
19
|
+
|
|
20
|
+
Antes de declarar una tarea como completa, ejecutar un checklist sistemático para garantizar calidad y evitar regresiones.
|
|
21
|
+
|
|
22
|
+
## Checklist Universal
|
|
23
|
+
|
|
24
|
+
### 1. Tests
|
|
25
|
+
- [ ] Los tests unitarios pasan: `npm test` / `go test ./...` / `pytest`
|
|
26
|
+
- [ ] Los tests de integración pasan (si existen)
|
|
27
|
+
- [ ] No hay tests nuevos saltados o deshabilitados sin justificación
|
|
28
|
+
- [ ] La cobertura no decreció significativamente
|
|
29
|
+
|
|
30
|
+
### 2. Código
|
|
31
|
+
- [ ] El linter no reporta errores nuevos
|
|
32
|
+
- [ ] No hay `console.log`, `print()` o `fmt.Println` de debug sin remover
|
|
33
|
+
- [ ] No hay código comentado innecesario (está en git history)
|
|
34
|
+
- [ ] No hay TODOs sin resolver relacionados a esta tarea
|
|
35
|
+
|
|
36
|
+
### 3. Git
|
|
37
|
+
- [ ] Los cambios están en el branch correcto
|
|
38
|
+
- [ ] El branch está actualizado con el base branch (`git pull --rebase origin main`)
|
|
39
|
+
- [ ] No hay archivos staged innecesarios (`.env`, archivos generados)
|
|
40
|
+
- [ ] Los mensajes de commit siguen Conventional Commits
|
|
41
|
+
|
|
42
|
+
### 4. Funcionalidad
|
|
43
|
+
- [ ] La feature funciona en el happy path
|
|
44
|
+
- [ ] Los edge cases identificados están manejados
|
|
45
|
+
- [ ] El error handling es apropiado
|
|
46
|
+
- [ ] El comportamiento es consistent con los requerimientos
|
|
47
|
+
|
|
48
|
+
### 5. Documentación
|
|
49
|
+
- [ ] El README está actualizado si cambiaron instrucciones de setup
|
|
50
|
+
- [ ] Los cambios de API están documentados
|
|
51
|
+
- [ ] Los comentarios en código son correctos y útiles
|
|
52
|
+
|
|
53
|
+
## Comandos de Verificación Rápida
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Verificación completa en un solo bloque
|
|
57
|
+
git status && \
|
|
58
|
+
git diff --stat origin/main...HEAD && \
|
|
59
|
+
go test ./... 2>&1 | tail -5 && \
|
|
60
|
+
echo "=== VERIFICATION COMPLETE ==="
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Cuándo NO completar
|
|
64
|
+
|
|
65
|
+
- Si algún item del checklist falla → resolverlo primero
|
|
66
|
+
- Si hay dudas sobre el comportamiento → consultar antes de marcar done
|
|
67
|
+
- Si hay deuda técnica significativa introducida → crear issue para tracking
|
|
68
|
+
|
|
69
|
+
## Related Skills
|
|
70
|
+
|
|
71
|
+
- git-github
|
|
72
|
+
- git-workflow
|
|
73
|
+
- finishing-a-development-branch
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wave-workflow
|
|
3
|
+
description: >
|
|
4
|
+
Guide for executing parallel task waves using VibeKanban integration.
|
|
5
|
+
Trigger: parallel execution, task waves, oleadas, multiple tasks, wave planning
|
|
6
|
+
tools:
|
|
7
|
+
- Read
|
|
8
|
+
- Write
|
|
9
|
+
- Bash
|
|
10
|
+
- Grep
|
|
11
|
+
metadata:
|
|
12
|
+
author: project-starter-framework
|
|
13
|
+
version: "2.0"
|
|
14
|
+
tags: [workflow, parallel, vibekanban, tasks, oleadas]
|
|
15
|
+
updated: "2026-02"
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Wave Workflow (Oleadas)
|
|
19
|
+
|
|
20
|
+
Execute tasks in parallel waves based on dependency analysis.
|
|
21
|
+
|
|
22
|
+
## Concept
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
Oleada 1: [T-001] [T-002] [T-003] ← No dependencies, run in parallel
|
|
26
|
+
↓ merge all → develop
|
|
27
|
+
Oleada 2: [T-004] [T-005] ← Depend on Oleada 1
|
|
28
|
+
↓ merge all → develop
|
|
29
|
+
Release: develop → main
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Quick Commands
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# View current wave status
|
|
36
|
+
./scripts/new-wave.sh --list
|
|
37
|
+
|
|
38
|
+
# Create new wave with tasks
|
|
39
|
+
./scripts/new-wave.sh "T-001 T-002 T-003"
|
|
40
|
+
|
|
41
|
+
# Create branches for all tasks
|
|
42
|
+
./scripts/new-wave.sh --create-branches
|
|
43
|
+
|
|
44
|
+
# Mark wave as complete
|
|
45
|
+
./scripts/new-wave.sh --complete
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Workflow Steps
|
|
49
|
+
|
|
50
|
+
### 1. Analyze Dependencies
|
|
51
|
+
Before creating a wave, identify which tasks can run in parallel:
|
|
52
|
+
- Tasks with NO dependencies on each other → Same wave
|
|
53
|
+
- Tasks that depend on others → Next wave
|
|
54
|
+
|
|
55
|
+
### 2. Create Wave
|
|
56
|
+
```bash
|
|
57
|
+
./scripts/new-wave.sh "T-001 T-002 T-003"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
This:
|
|
61
|
+
- Creates entry in `.project/Memory/WAVES.md`
|
|
62
|
+
- Records start timestamp
|
|
63
|
+
- Sets wave status to "in-progress"
|
|
64
|
+
|
|
65
|
+
### 3. Create Branches
|
|
66
|
+
```bash
|
|
67
|
+
./scripts/new-wave.sh --create-branches
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Creates:
|
|
71
|
+
- `feature/t-001-description`
|
|
72
|
+
- `feature/t-002-description`
|
|
73
|
+
- `feature/t-003-description`
|
|
74
|
+
|
|
75
|
+
### 4. Work on Tasks (Parallel)
|
|
76
|
+
Each task can be worked on independently:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Terminal 1
|
|
80
|
+
git checkout feature/t-001
|
|
81
|
+
# ... work ...
|
|
82
|
+
git commit -m "feat(scope): implement T-001"
|
|
83
|
+
git push
|
|
84
|
+
|
|
85
|
+
# Terminal 2
|
|
86
|
+
git checkout feature/t-002
|
|
87
|
+
# ... work ...
|
|
88
|
+
git commit -m "feat(scope): implement T-002"
|
|
89
|
+
git push
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 5. Create PRs
|
|
93
|
+
For each task, create PR to `develop`:
|
|
94
|
+
```bash
|
|
95
|
+
gh pr create --base develop --title "feat: T-001 description"
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 6. Merge Wave
|
|
99
|
+
Once ALL tasks in wave are complete and PRs approved:
|
|
100
|
+
```bash
|
|
101
|
+
# Merge all PRs to develop
|
|
102
|
+
gh pr merge <pr-number> --merge
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 7. Complete Wave
|
|
106
|
+
```bash
|
|
107
|
+
./scripts/new-wave.sh --complete
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
This:
|
|
111
|
+
- Updates `.project/Memory/WAVES.md`
|
|
112
|
+
- Records completion timestamp
|
|
113
|
+
- Deletes merged branches (optional)
|
|
114
|
+
|
|
115
|
+
### 8. Next Wave
|
|
116
|
+
Repeat for the next wave of tasks.
|
|
117
|
+
|
|
118
|
+
## Best Practices
|
|
119
|
+
|
|
120
|
+
### Dependency Analysis
|
|
121
|
+
- Draw a simple dependency graph
|
|
122
|
+
- Group independent tasks
|
|
123
|
+
- Never exceed ~15 parallel tasks (cognitive limit)
|
|
124
|
+
|
|
125
|
+
### Branch Naming
|
|
126
|
+
- `feature/t-xxx-short-description`
|
|
127
|
+
- `fix/t-xxx-bug-description`
|
|
128
|
+
- Keep descriptions short (max 3-4 words)
|
|
129
|
+
|
|
130
|
+
### PR Strategy
|
|
131
|
+
- One PR per task
|
|
132
|
+
- Base all PRs on `develop`
|
|
133
|
+
- Review in batches when possible
|
|
134
|
+
|
|
135
|
+
### Merge Order
|
|
136
|
+
- Merge in any order if truly independent
|
|
137
|
+
- If hidden dependencies found, pause and re-analyze
|
|
138
|
+
|
|
139
|
+
## Integration with VibeKanban
|
|
140
|
+
|
|
141
|
+
Tasks come from VibeKanban:
|
|
142
|
+
1. List tasks: `mcp__vibe_kanban__list_tasks`
|
|
143
|
+
2. Get details: `mcp__vibe_kanban__get_task`
|
|
144
|
+
3. Update status: `mcp__vibe_kanban__update_task`
|
|
145
|
+
|
|
146
|
+
### Sync Workflow
|
|
147
|
+
```
|
|
148
|
+
VibeKanban (todo) → Wave created → Work → PR merged → VibeKanban (done)
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Example Session
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# Morning: Analyze and plan
|
|
155
|
+
./scripts/new-wave.sh --list
|
|
156
|
+
|
|
157
|
+
# Create Oleada 3
|
|
158
|
+
./scripts/new-wave.sh "T-010 T-011 T-012 T-013"
|
|
159
|
+
|
|
160
|
+
# Create branches
|
|
161
|
+
./scripts/new-wave.sh --create-branches
|
|
162
|
+
|
|
163
|
+
# Work through the day...
|
|
164
|
+
# Each dev takes 1-2 tasks
|
|
165
|
+
|
|
166
|
+
# End of day: All merged
|
|
167
|
+
./scripts/new-wave.sh --complete
|
|
168
|
+
|
|
169
|
+
# Check what's next
|
|
170
|
+
./scripts/new-wave.sh --list
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Memory Files
|
|
174
|
+
|
|
175
|
+
Wave progress is tracked in:
|
|
176
|
+
- `.project/Memory/WAVES.md` - All waves history
|
|
177
|
+
- `.project/Memory/CONTEXT.md` - Current state summary
|
|
178
|
+
- `.project/Memory/KANBAN.md` - Visual task board (Obsidian Brain)
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# CI-Local: Universal CI Simulation
|
|
2
|
+
|
|
3
|
+
Reproduce tu CI/CD localmente antes de push. Si pasa local → pasa en GitHub Actions/GitLab CI.
|
|
4
|
+
|
|
5
|
+
## Stack Soportados (auto-detectados)
|
|
6
|
+
|
|
7
|
+
| Stack | Build Tool | Lint | Test |
|
|
8
|
+
|-------|------------|------|------|
|
|
9
|
+
| Java | Gradle | spotlessCheck | ./gradlew test |
|
|
10
|
+
| Java | Maven | spotless:check | ./mvnw test |
|
|
11
|
+
| Node.js | npm/yarn/pnpm | lint | test |
|
|
12
|
+
| Python | pip/poetry | ruff/pylint | pytest |
|
|
13
|
+
| Go | go | golangci-lint | go test |
|
|
14
|
+
| Rust | cargo | clippy | cargo test |
|
|
15
|
+
|
|
16
|
+
## Instalación (30 segundos)
|
|
17
|
+
|
|
18
|
+
### Copiar a un proyecto nuevo
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Copiar CI-Local y su dependencia lib/
|
|
22
|
+
cp -r .ci-local /path/to/new-project/
|
|
23
|
+
cp -r lib /path/to/new-project/
|
|
24
|
+
|
|
25
|
+
# En el nuevo proyecto
|
|
26
|
+
cd /path/to/new-project
|
|
27
|
+
./.ci-local/install.sh # Linux/Mac
|
|
28
|
+
# o
|
|
29
|
+
.\.ci-local\install.ps1 # Windows
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
> **Importante:** CI-Local depende de `lib/common.sh` (funciones compartidas). Copiar siempre ambos directorios.
|
|
33
|
+
|
|
34
|
+
### Dependencias opcionales
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Semgrep (análisis de seguridad, muy recomendado)
|
|
38
|
+
# Si Semgrep no está instalado localmente, CI-Local hace fallback automático
|
|
39
|
+
# a una imagen Docker de Semgrep cuando Docker está disponible.
|
|
40
|
+
pip install semgrep
|
|
41
|
+
|
|
42
|
+
# Docker (requerido para CI simulation y fallback de Semgrep)
|
|
43
|
+
# Instalar Docker Desktop
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Uso
|
|
47
|
+
|
|
48
|
+
### Automático (hooks)
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
git commit -m "..." # → pre-commit: AI check + lint + security (~30s)
|
|
52
|
+
# → commit-msg: valida mensaje sin AI attribution
|
|
53
|
+
git push # → pre-push: CI completo en Docker (~3min)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### AI Attribution Blocker
|
|
57
|
+
|
|
58
|
+
Los hooks bloquean automáticamente:
|
|
59
|
+
- `Co-authored-by: Claude`, `Co-authored-by: GPT`, etc.
|
|
60
|
+
- `Made by Claude`, `Generated by AI`, `Written by GPT`
|
|
61
|
+
- Referencias a `@anthropic.com`, `@openai.com`
|
|
62
|
+
- Nombres de modelos: `claude opus`, `gpt-4`, `chatgpt`, etc.
|
|
63
|
+
|
|
64
|
+
**Tú eres el único autor de tu código.**
|
|
65
|
+
|
|
66
|
+
### Manual
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Windows
|
|
70
|
+
.\.ci-local\ci-local.ps1 quick # Lint + compile
|
|
71
|
+
.\.ci-local\ci-local.ps1 full # CI completo
|
|
72
|
+
.\.ci-local\ci-local.ps1 shell # Shell en entorno CI
|
|
73
|
+
.\.ci-local\ci-local.ps1 detect # Ver stack detectado
|
|
74
|
+
|
|
75
|
+
# Linux/Mac
|
|
76
|
+
./.ci-local/ci-local.sh quick
|
|
77
|
+
./.ci-local/ci-local.sh full
|
|
78
|
+
./.ci-local/ci-local.sh shell
|
|
79
|
+
./.ci-local/ci-local.sh detect
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Skipear hooks (emergencia)
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
git commit --no-verify
|
|
86
|
+
git push --no-verify
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Como Funciona
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
Developer workflow:
|
|
93
|
+
|
|
94
|
+
1. Editar codigo
|
|
95
|
+
2. git add .
|
|
96
|
+
3. git commit -m "feat: add feature"
|
|
97
|
+
|
|
|
98
|
+
pre-commit hook:
|
|
99
|
+
- [1/3] Verificar atribucion AI (BLOQUEADO si encuentra)
|
|
100
|
+
- [2/3] Scan de seguridad Semgrep (reglas locales)
|
|
101
|
+
- [3/3] Compile check rapido
|
|
102
|
+
|
|
|
103
|
+
commit-msg hook:
|
|
104
|
+
- Validar formato conventional commit
|
|
105
|
+
|
|
|
106
|
+
4. git push
|
|
107
|
+
|
|
|
108
|
+
pre-push hook:
|
|
109
|
+
- Detectar stack (Java/Node/Python/Go/Rust)
|
|
110
|
+
- Generar Dockerfile para el stack
|
|
111
|
+
- Construir imagen Docker (con cache de hash)
|
|
112
|
+
- Ejecutar test suite completo en contenedor
|
|
113
|
+
|
|
|
114
|
+
5. Push exitoso → CI remoto pasara
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Estructura
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
.ci-local/
|
|
121
|
+
├── ci-local.ps1 # Script principal (Windows)
|
|
122
|
+
├── ci-local.sh # Script principal (Linux/Mac)
|
|
123
|
+
├── install.ps1 # Instalador Windows
|
|
124
|
+
├── install.sh # Instalador Linux/Mac
|
|
125
|
+
├── semgrep.yml # Reglas de seguridad
|
|
126
|
+
├── README.md # Esta guía
|
|
127
|
+
├── hooks/
|
|
128
|
+
│ ├── pre-commit # AI check + lint + security
|
|
129
|
+
│ ├── commit-msg # Valida mensaje sin AI attribution
|
|
130
|
+
│ └── pre-push # CI simulation en Docker
|
|
131
|
+
└── docker/
|
|
132
|
+
└── *.Dockerfile # Se generan automáticamente
|
|
133
|
+
|
|
134
|
+
lib/ # Dependencia requerida (copiar junto con .ci-local/)
|
|
135
|
+
├── common.sh # Funciones compartidas (Bash)
|
|
136
|
+
└── Common.psm1 # Funciones compartidas (PowerShell)
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Personalización
|
|
140
|
+
|
|
141
|
+
### Agregar reglas Semgrep específicas
|
|
142
|
+
|
|
143
|
+
Editar `.ci-local/semgrep.yml` o crear `.semgrep.yml` en la raíz.
|
|
144
|
+
|
|
145
|
+
### Cambiar comandos de lint/test
|
|
146
|
+
|
|
147
|
+
Editar `lib/common.sh` (detección de stack) o `setup_ci_commands()` en `ci-local.sh` (comandos CI).
|
|
148
|
+
|
|
149
|
+
### Docker image custom
|
|
150
|
+
|
|
151
|
+
Editar los Dockerfiles en `.ci-local/docker/` después de la primera ejecución.
|
|
152
|
+
|
|
153
|
+
## FAQ
|
|
154
|
+
|
|
155
|
+
**¿Por qué falla en CI pero no en ci-local?**
|
|
156
|
+
- Verifica que Docker esté corriendo con la misma imagen
|
|
157
|
+
- Usa `ci-local.sh shell` para debug interactivo
|
|
158
|
+
|
|
159
|
+
**¿Cómo acelerar el pre-push?**
|
|
160
|
+
- Usa Docker image cache para evitar rebuilds innecesarios
|
|
161
|
+
- Usa `--no-verify` si estás seguro (no recomendado)
|
|
162
|
+
|
|
163
|
+
**¿Funciona sin Docker?**
|
|
164
|
+
- Los hooks de pre-commit funcionan sin Docker
|
|
165
|
+
- El pre-push requiere Docker para simular CI real
|
|
166
|
+
|
|
167
|
+
**¿Qué pasa si Semgrep no está instalado?**
|
|
168
|
+
- CI-Local detecta si Semgrep está disponible localmente
|
|
169
|
+
- Si no está instalado pero Docker está corriendo, usa la imagen `semgrep/semgrep` como fallback automático
|
|
170
|
+
- Si ni Semgrep ni Docker están disponibles, el scan de seguridad se omite con advertencia
|