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,216 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ghagga-review
|
|
3
|
+
description: >
|
|
4
|
+
AI code review patterns with GHAGGA multi-agent review system.
|
|
5
|
+
Trigger: code review, PR review, GHAGGA, review automatico, consensus review
|
|
6
|
+
|
|
7
|
+
metadata:
|
|
8
|
+
author: project-starter-framework
|
|
9
|
+
version: "1.0"
|
|
10
|
+
tags: [code-review, ai, github, quality]
|
|
11
|
+
language: typescript
|
|
12
|
+
scope: [.github/, supabase/, dashboard/]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# GHAGGA AI Code Review
|
|
16
|
+
|
|
17
|
+
> Patrones para trabajar con GHAGGA, sistema de code review multi-agente.
|
|
18
|
+
|
|
19
|
+
## When to Use
|
|
20
|
+
|
|
21
|
+
Usar este skill cuando:
|
|
22
|
+
|
|
23
|
+
- [ ] Configurando GHAGGA para un proyecto
|
|
24
|
+
- [ ] Creando reglas de review personalizadas
|
|
25
|
+
- [ ] Trabajando con Edge Functions de review
|
|
26
|
+
- [ ] Integrando GHAGGA en CI/CD pipeline
|
|
27
|
+
- [ ] Debuggeando reviews fallidas
|
|
28
|
+
|
|
29
|
+
## Critical Patterns
|
|
30
|
+
|
|
31
|
+
### Pattern 1: Reusable Workflow Integration
|
|
32
|
+
|
|
33
|
+
**Por que:** Integrar GHAGGA como paso de CI evita configuracion manual por repo.
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
# .github/workflows/ci.yml
|
|
37
|
+
jobs:
|
|
38
|
+
# ... build jobs ...
|
|
39
|
+
|
|
40
|
+
review:
|
|
41
|
+
needs: build
|
|
42
|
+
if: github.event_name == 'pull_request'
|
|
43
|
+
uses: JNZader/project-starter-framework/.github/workflows/reusable-ghagga-review.yml@main
|
|
44
|
+
with:
|
|
45
|
+
ghagga-url: ${{ vars.GHAGGA_URL }}
|
|
46
|
+
review-mode: simple
|
|
47
|
+
secrets:
|
|
48
|
+
ghagga-token: ${{ secrets.GHAGGA_TOKEN }}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Pattern 2: Review Mode Selection
|
|
52
|
+
|
|
53
|
+
**Por que:** Cada modo tiene diferente profundidad y costo.
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
// Simple: 1 LLM, rapido, bajo costo
|
|
57
|
+
{ review_mode: "simple" }
|
|
58
|
+
|
|
59
|
+
// Workflow: multi-paso secuencial, analisis profundo
|
|
60
|
+
{ review_mode: "workflow" }
|
|
61
|
+
|
|
62
|
+
// Consensus: multiples LLMs votan, maxima confiabilidad
|
|
63
|
+
{ review_mode: "consensus" }
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Criterio de seleccion:**
|
|
67
|
+
- PRs chicos (< 100 lineas): `simple`
|
|
68
|
+
- PRs medianos o con logica compleja: `workflow`
|
|
69
|
+
- PRs criticos (auth, payments, infra): `consensus`
|
|
70
|
+
|
|
71
|
+
### Pattern 3: Custom Review Rules via Dashboard
|
|
72
|
+
|
|
73
|
+
**Por que:** Reglas custom evitan falsos positivos recurrentes.
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
// Configurar en dashboard (http://localhost:5173/ghagga/)
|
|
77
|
+
// Settings > Review Rules > Add Rule
|
|
78
|
+
|
|
79
|
+
// Ejemplo: ignorar cambios en archivos generados
|
|
80
|
+
{
|
|
81
|
+
"name": "skip-generated",
|
|
82
|
+
"pattern": "**/*.generated.*",
|
|
83
|
+
"action": "skip"
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Ejemplo: review estricto en archivos de seguridad
|
|
87
|
+
{
|
|
88
|
+
"name": "strict-security",
|
|
89
|
+
"pattern": "**/auth/**",
|
|
90
|
+
"action": "consensus",
|
|
91
|
+
"severity": "high"
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Code Examples
|
|
96
|
+
|
|
97
|
+
### Example 1: Trigger review via API
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
// Desde una Edge Function o script
|
|
101
|
+
const response = await fetch(`${GHAGGA_URL}/functions/v1/review`, {
|
|
102
|
+
method: "POST",
|
|
103
|
+
headers: {
|
|
104
|
+
"Authorization": `Bearer ${GHAGGA_TOKEN}`,
|
|
105
|
+
"Content-Type": "application/json",
|
|
106
|
+
},
|
|
107
|
+
body: JSON.stringify({
|
|
108
|
+
repository: "owner/repo",
|
|
109
|
+
pull_request_number: 42,
|
|
110
|
+
head_sha: "abc123",
|
|
111
|
+
review_mode: "workflow",
|
|
112
|
+
}),
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
const result = await response.json();
|
|
116
|
+
// { status: "completed", summary: "...", findings: [...] }
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Example 2: Configurar providers en Supabase
|
|
120
|
+
|
|
121
|
+
```sql
|
|
122
|
+
-- En Supabase SQL Editor o migracion
|
|
123
|
+
INSERT INTO review_providers (name, model, api_key_env, priority)
|
|
124
|
+
VALUES
|
|
125
|
+
('anthropic', 'claude-sonnet-4-20250514', 'ANTHROPIC_API_KEY', 1),
|
|
126
|
+
('openai', 'gpt-4o', 'OPENAI_API_KEY', 2),
|
|
127
|
+
('google', 'gemini-2.0-flash', 'GOOGLE_API_KEY', 3);
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Example 3: Webhook handler pattern
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
// supabase/functions/webhook/index.ts
|
|
134
|
+
import { serve } from "https://deno.land/std/http/server.ts";
|
|
135
|
+
|
|
136
|
+
serve(async (req) => {
|
|
137
|
+
const event = req.headers.get("x-github-event");
|
|
138
|
+
const payload = await req.json();
|
|
139
|
+
|
|
140
|
+
if (event === "pull_request" && ["opened", "synchronize"].includes(payload.action)) {
|
|
141
|
+
// Trigger review
|
|
142
|
+
await triggerReview({
|
|
143
|
+
repo: payload.repository.full_name,
|
|
144
|
+
pr: payload.pull_request.number,
|
|
145
|
+
sha: payload.pull_request.head.sha,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return new Response("ok", { status: 200 });
|
|
150
|
+
});
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Anti-Patterns
|
|
154
|
+
|
|
155
|
+
### Anti-Pattern 1: Review en cada commit
|
|
156
|
+
|
|
157
|
+
**Problema:** Consume API tokens innecesariamente, genera ruido.
|
|
158
|
+
|
|
159
|
+
```yaml
|
|
160
|
+
# NO: trigger en cada push
|
|
161
|
+
on:
|
|
162
|
+
push:
|
|
163
|
+
branches: ['**']
|
|
164
|
+
|
|
165
|
+
# SI: solo PRs a branches principales
|
|
166
|
+
on:
|
|
167
|
+
pull_request:
|
|
168
|
+
branches: [main, develop]
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Anti-Pattern 2: Consensus mode para todo
|
|
172
|
+
|
|
173
|
+
**Problema:** Costo x3, tiempo x3, para cambios triviales.
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
// NO: consensus para todo
|
|
177
|
+
{ review_mode: "consensus" }
|
|
178
|
+
|
|
179
|
+
// SI: escalar segun criticidad
|
|
180
|
+
const mode = isCriticalPath(files)
|
|
181
|
+
? "consensus"
|
|
182
|
+
: changedLines > 100
|
|
183
|
+
? "workflow"
|
|
184
|
+
: "simple";
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Quick Reference
|
|
188
|
+
|
|
189
|
+
| Tarea | Como |
|
|
190
|
+
|-------|------|
|
|
191
|
+
| Setup basico | `./optional/ghagga/setup-ghagga.sh --workflow` |
|
|
192
|
+
| Deploy local | `docker compose -f docker-compose.ghagga.yml up -d` |
|
|
193
|
+
| Dashboard | `http://localhost:5173/ghagga/` |
|
|
194
|
+
| Ver logs | `supabase functions logs review` |
|
|
195
|
+
| Test webhook | `curl -X POST localhost:54321/functions/v1/webhook` |
|
|
196
|
+
|
|
197
|
+
## Resources
|
|
198
|
+
|
|
199
|
+
- [GHAGGA Repository](https://github.com/JNZader/ghagga/)
|
|
200
|
+
- [Installation Guide](https://github.com/JNZader/ghagga/blob/main/docs/INSTALLATION.md)
|
|
201
|
+
- [API Documentation](https://github.com/JNZader/ghagga/blob/main/docs/API.md)
|
|
202
|
+
- [GitHub App Setup](https://github.com/JNZader/ghagga/blob/main/docs/GITHUB_APP_SETUP.md)
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Related Skills
|
|
207
|
+
|
|
208
|
+
- `devops-infra`: CI/CD y GitHub Actions workflows
|
|
209
|
+
- `git-github`: GitHub API y CLI
|
|
210
|
+
- `playwright-e2e`: Testing E2E (complemento a AI review)
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Changelog
|
|
215
|
+
|
|
216
|
+
- **1.0** - Version inicial con patrones de integracion
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hooks-patterns
|
|
3
|
+
description: >
|
|
4
|
+
Hooks Recommendations for Claude Code automation: auto-formatting, type checking, protection, and test runner hooks.
|
|
5
|
+
Trigger: hooks, automation, PostToolUse, PreToolUse, auto-format, hook recommendations
|
|
6
|
+
metadata:
|
|
7
|
+
author: project-starter-framework
|
|
8
|
+
version: "2.0"
|
|
9
|
+
tags: [hooks, automation, claude-code, formatting, protection]
|
|
10
|
+
updated: "2026-02"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Hooks Recommendations
|
|
14
|
+
|
|
15
|
+
Hooks automatically run commands in response to Claude Code events. They're ideal for enforcement and automation that should happen consistently.
|
|
16
|
+
|
|
17
|
+
**Note**: These are common patterns. Use web search to find hooks for tools/frameworks not listed here to recommend the best hooks for the user.
|
|
18
|
+
|
|
19
|
+
## Auto-Formatting Hooks
|
|
20
|
+
|
|
21
|
+
### Prettier (JavaScript/TypeScript)
|
|
22
|
+
| Detection | File Exists |
|
|
23
|
+
|-----------|-------------|
|
|
24
|
+
| `.prettierrc`, `.prettierrc.json`, `prettier.config.js` | ✓ |
|
|
25
|
+
|
|
26
|
+
**Recommend**: PostToolUse hook on Edit/Write to auto-format
|
|
27
|
+
**Value**: Code stays formatted without thinking about it
|
|
28
|
+
|
|
29
|
+
### ESLint (JavaScript/TypeScript)
|
|
30
|
+
| Detection | File Exists |
|
|
31
|
+
|-----------|-------------|
|
|
32
|
+
| `.eslintrc`, `.eslintrc.json`, `eslint.config.js` | ✓ |
|
|
33
|
+
|
|
34
|
+
**Recommend**: PostToolUse hook on Edit/Write to auto-fix
|
|
35
|
+
**Value**: Lint errors fixed automatically
|
|
36
|
+
|
|
37
|
+
### Black/isort (Python)
|
|
38
|
+
| Detection | File Exists |
|
|
39
|
+
|-----------|-------------|
|
|
40
|
+
| `pyproject.toml` with black/isort, `.black`, `setup.cfg` | ✓ |
|
|
41
|
+
|
|
42
|
+
**Recommend**: PostToolUse hook to format Python files
|
|
43
|
+
**Value**: Consistent Python formatting
|
|
44
|
+
|
|
45
|
+
### Ruff (Python - Modern)
|
|
46
|
+
| Detection | File Exists |
|
|
47
|
+
|-----------|-------------|
|
|
48
|
+
| `ruff.toml`, `pyproject.toml` with `[tool.ruff]` | ✓ |
|
|
49
|
+
|
|
50
|
+
**Recommend**: PostToolUse hook for lint + format
|
|
51
|
+
**Value**: Fast, comprehensive Python linting
|
|
52
|
+
|
|
53
|
+
### gofmt (Go)
|
|
54
|
+
| Detection | File Exists |
|
|
55
|
+
|-----------|-------------|
|
|
56
|
+
| `go.mod` | ✓ |
|
|
57
|
+
|
|
58
|
+
**Recommend**: PostToolUse hook to run gofmt
|
|
59
|
+
**Value**: Standard Go formatting
|
|
60
|
+
|
|
61
|
+
### rustfmt (Rust)
|
|
62
|
+
| Detection | File Exists |
|
|
63
|
+
|-----------|-------------|
|
|
64
|
+
| `Cargo.toml` | ✓ |
|
|
65
|
+
|
|
66
|
+
**Recommend**: PostToolUse hook to run rustfmt
|
|
67
|
+
**Value**: Standard Rust formatting
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Type Checking Hooks
|
|
72
|
+
|
|
73
|
+
### TypeScript
|
|
74
|
+
| Detection | File Exists |
|
|
75
|
+
|-----------|-------------|
|
|
76
|
+
| `tsconfig.json` | ✓ |
|
|
77
|
+
|
|
78
|
+
**Recommend**: PostToolUse hook to run tsc --noEmit
|
|
79
|
+
**Value**: Catch type errors immediately
|
|
80
|
+
|
|
81
|
+
### mypy/pyright (Python)
|
|
82
|
+
| Detection | File Exists |
|
|
83
|
+
|-----------|-------------|
|
|
84
|
+
| `mypy.ini`, `pyrightconfig.json`, pyproject.toml with mypy | ✓ |
|
|
85
|
+
|
|
86
|
+
**Recommend**: PostToolUse hook for type checking
|
|
87
|
+
**Value**: Catch type errors in Python
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Protection Hooks
|
|
92
|
+
|
|
93
|
+
### Block Sensitive File Edits
|
|
94
|
+
| Detection | Presence Of |
|
|
95
|
+
|-----------|-------------|
|
|
96
|
+
| `.env`, `.env.local`, `.env.production` | Environment files |
|
|
97
|
+
| `credentials.json`, `secrets.yaml` | Secret files |
|
|
98
|
+
| `.git/` directory | Git internals |
|
|
99
|
+
|
|
100
|
+
**Recommend**: PreToolUse hook that blocks Edit/Write to these paths
|
|
101
|
+
**Value**: Prevent accidental secret exposure or git corruption
|
|
102
|
+
|
|
103
|
+
### Block Lock File Edits
|
|
104
|
+
| Detection | Presence Of |
|
|
105
|
+
|-----------|-------------|
|
|
106
|
+
| `package-lock.json`, `yarn.lock`, `pnpm-lock.yaml` | JS lock files |
|
|
107
|
+
| `Cargo.lock`, `poetry.lock`, `Pipfile.lock` | Other lock files |
|
|
108
|
+
|
|
109
|
+
**Recommend**: PreToolUse hook that blocks direct edits
|
|
110
|
+
**Value**: Lock files should only change via package manager
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Test Runner Hooks
|
|
115
|
+
|
|
116
|
+
### Jest (JavaScript/TypeScript)
|
|
117
|
+
| Detection | Presence Of |
|
|
118
|
+
|-----------|-------------|
|
|
119
|
+
| `jest.config.js`, `jest` in package.json | Jest configured |
|
|
120
|
+
| `__tests__/`, `*.test.ts`, `*.spec.ts` | Test files exist |
|
|
121
|
+
|
|
122
|
+
**Recommend**: PostToolUse hook to run related tests after edit
|
|
123
|
+
**Value**: Immediate test feedback on changes
|
|
124
|
+
|
|
125
|
+
### pytest (Python)
|
|
126
|
+
| Detection | Presence Of |
|
|
127
|
+
|-----------|-------------|
|
|
128
|
+
| `pytest.ini`, `pyproject.toml` with pytest | pytest configured |
|
|
129
|
+
| `tests/`, `test_*.py` | Test files exist |
|
|
130
|
+
|
|
131
|
+
**Recommend**: PostToolUse hook to run pytest on changed files
|
|
132
|
+
**Value**: Immediate test feedback
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Quick Reference: Detection → Recommendation
|
|
137
|
+
|
|
138
|
+
| If You See | Recommend This Hook |
|
|
139
|
+
|------------|-------------------|
|
|
140
|
+
| Prettier config | Auto-format on Edit/Write |
|
|
141
|
+
| ESLint config | Auto-lint on Edit/Write |
|
|
142
|
+
| Ruff/Black config | Auto-format Python |
|
|
143
|
+
| tsconfig.json | Type-check on Edit |
|
|
144
|
+
| Test directory | Run related tests on Edit |
|
|
145
|
+
| .env files | Block .env edits |
|
|
146
|
+
| Lock files | Block lock file edits |
|
|
147
|
+
| Go project | gofmt on Edit |
|
|
148
|
+
| Rust project | rustfmt on Edit |
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Notification Hooks
|
|
153
|
+
|
|
154
|
+
Notification hooks run when Claude Code sends notifications. Use matchers to filter by notification type.
|
|
155
|
+
|
|
156
|
+
### Permission Alerts
|
|
157
|
+
| Matcher | Use Case |
|
|
158
|
+
|---------|----------|
|
|
159
|
+
| `permission_prompt` | Alert when Claude requests permissions |
|
|
160
|
+
|
|
161
|
+
**Recommend**: Play sound, send desktop notification, or log permission requests
|
|
162
|
+
**Value**: Never miss permission prompts when multitasking
|
|
163
|
+
|
|
164
|
+
### Idle Notifications
|
|
165
|
+
| Matcher | Use Case |
|
|
166
|
+
|---------|----------|
|
|
167
|
+
| `idle_prompt` | Alert when Claude is waiting for input (60+ seconds idle) |
|
|
168
|
+
|
|
169
|
+
**Recommend**: Play sound or send notification when Claude needs attention
|
|
170
|
+
**Value**: Know when Claude is ready for your input
|
|
171
|
+
|
|
172
|
+
### Example Configuration
|
|
173
|
+
|
|
174
|
+
```json
|
|
175
|
+
{
|
|
176
|
+
"hooks": {
|
|
177
|
+
"Notification": [
|
|
178
|
+
{
|
|
179
|
+
"matcher": "permission_prompt",
|
|
180
|
+
"hooks": [
|
|
181
|
+
{
|
|
182
|
+
"type": "command",
|
|
183
|
+
"command": "afplay /System/Library/Sounds/Ping.aiff"
|
|
184
|
+
}
|
|
185
|
+
]
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"matcher": "idle_prompt",
|
|
189
|
+
"hooks": [
|
|
190
|
+
{
|
|
191
|
+
"type": "command",
|
|
192
|
+
"command": "osascript -e 'display notification \"Claude is waiting\" with title \"Claude Code\"'"
|
|
193
|
+
}
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
]
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Available Matchers
|
|
202
|
+
|
|
203
|
+
| Matcher | Triggers When |
|
|
204
|
+
|---------|---------------|
|
|
205
|
+
| `permission_prompt` | Claude needs permission for a tool |
|
|
206
|
+
| `idle_prompt` | Claude waiting for input (60+ seconds) |
|
|
207
|
+
| `auth_success` | Authentication succeeds |
|
|
208
|
+
| `elicitation_dialog` | MCP tool needs input |
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Quick Reference: Detection → Recommendation
|
|
213
|
+
|
|
214
|
+
| If You See | Recommend This Hook |
|
|
215
|
+
|------------|-------------------|
|
|
216
|
+
| Prettier config | Auto-format on Edit/Write |
|
|
217
|
+
| ESLint config | Auto-lint on Edit/Write |
|
|
218
|
+
| Ruff/Black config | Auto-format Python |
|
|
219
|
+
| tsconfig.json | Type-check on Edit |
|
|
220
|
+
| Test directory | Run related tests on Edit |
|
|
221
|
+
| .env files | Block .env edits |
|
|
222
|
+
| Lock files | Block lock file edits |
|
|
223
|
+
| Go project | gofmt on Edit |
|
|
224
|
+
| Rust project | rustfmt on Edit |
|
|
225
|
+
| Multitasking workflow | Notification hooks for alerts |
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Hook Placement
|
|
230
|
+
|
|
231
|
+
Hooks go in `.claude/settings.json`:
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
.claude/
|
|
235
|
+
└── settings.json ← Hook configurations here
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Recommend creating the `.claude/` directory if it doesn't exist.
|