blockmine 1.21.0 → 1.22.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/.claude/agents/README.md +469 -0
- package/.claude/agents/auth-route-debugger.md +118 -0
- package/.claude/agents/auth-route-tester.md +93 -0
- package/.claude/agents/auto-error-resolver.md +97 -0
- package/.claude/agents/build-optimizer.md +236 -0
- package/.claude/agents/code-architecture-reviewer.md +83 -0
- package/.claude/agents/code-refactor-master.md +94 -0
- package/.claude/agents/cost-optimizer.md +134 -0
- package/.claude/agents/deployment-orchestrator.md +113 -0
- package/.claude/agents/documentation-architect.md +82 -0
- package/.claude/agents/frontend-error-fixer.md +77 -0
- package/.claude/agents/iac-code-generator.md +71 -0
- package/.claude/agents/incident-responder.md +346 -0
- package/.claude/agents/infrastructure-architect.md +31 -0
- package/.claude/agents/kubernetes-specialist.md +56 -0
- package/.claude/agents/migration-planner.md +181 -0
- package/.claude/agents/network-architect.md +196 -0
- package/.claude/agents/plan-reviewer.md +52 -0
- package/.claude/agents/refactor-planner.md +63 -0
- package/.claude/agents/security-scanner.md +102 -0
- package/.claude/agents/web-research-specialist.md +78 -0
- package/.claude/commands/cost-analysis.md +315 -0
- package/.claude/commands/dev-docs-update.md +55 -0
- package/.claude/commands/dev-docs.md +51 -0
- package/.claude/commands/incident-debug.md +247 -0
- package/.claude/commands/infra-plan.md +81 -0
- package/.claude/commands/migration-plan.md +478 -0
- package/.claude/commands/route-research-for-testing.md +37 -0
- package/.claude/commands/security-review.md +66 -0
- package/.claude/hooks/CONFIG.md +448 -0
- package/.claude/hooks/README.md +163 -0
- package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +226 -0
- package/.claude/hooks/WINDOWS_HOOKS_README.md +151 -0
- package/.claude/hooks/add-skill-activation-banners.ts +132 -0
- package/.claude/hooks/comprehensive-skill-test.ts +1315 -0
- package/.claude/hooks/error-handling-reminder.sh +12 -0
- package/.claude/hooks/error-handling-reminder.ts +222 -0
- package/.claude/hooks/k8s-manifest-validator.sh +56 -0
- package/.claude/hooks/package-lock.json +556 -0
- package/.claude/hooks/package.json +16 -0
- package/.claude/hooks/post-tool-use-tracker.ps1 +174 -0
- package/.claude/hooks/post-tool-use-tracker.sh +183 -0
- package/.claude/hooks/security-policy-check.sh +247 -0
- package/.claude/hooks/skill-activation-prompt.ps1 +10 -0
- package/.claude/hooks/skill-activation-prompt.sh +10 -0
- package/.claude/hooks/skill-activation-prompt.ts +141 -0
- package/.claude/hooks/stop-build-check-enhanced.sh +130 -0
- package/.claude/hooks/terraform-validator.sh +53 -0
- package/.claude/hooks/test-input.json +7 -0
- package/.claude/hooks/test-skill-activation.ts +427 -0
- package/.claude/hooks/trigger-build-resolver.sh +79 -0
- package/.claude/hooks/tsc-check.sh +173 -0
- package/.claude/hooks/tsconfig.json +19 -0
- package/.claude/settings.json +55 -0
- package/.claude/settings.local.json +27 -14
- package/.claude/skills/README.md +507 -0
- package/.claude/skills/api-engineering/SKILL.md +63 -0
- package/.claude/skills/api-engineering/resources/api-versioning.md +88 -0
- package/.claude/skills/api-engineering/resources/graphql-patterns.md +106 -0
- package/.claude/skills/api-engineering/resources/rate-limiting.md +118 -0
- package/.claude/skills/api-engineering/resources/rest-api-design.md +105 -0
- package/.claude/skills/backend-dev-guidelines/SKILL.md +306 -0
- package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +451 -0
- package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +307 -0
- package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +638 -0
- package/.claude/skills/backend-dev-guidelines/resources/configuration.md +275 -0
- package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +224 -0
- package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +213 -0
- package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +756 -0
- package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +336 -0
- package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +789 -0
- package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +235 -0
- package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +754 -0
- package/.claude/skills/budget-and-cost-management/SKILL.md +850 -0
- package/.claude/skills/build-engineering/SKILL.md +431 -0
- package/.claude/skills/build-engineering/resources/artifact-repositories.md +72 -0
- package/.claude/skills/build-engineering/resources/build-caching.md +96 -0
- package/.claude/skills/build-engineering/resources/build-pipelines.md +105 -0
- package/.claude/skills/build-engineering/resources/build-security.md +95 -0
- package/.claude/skills/build-engineering/resources/build-systems.md +389 -0
- package/.claude/skills/build-engineering/resources/compilation-optimization.md +201 -0
- package/.claude/skills/build-engineering/resources/dependency-management.md +73 -0
- package/.claude/skills/build-engineering/resources/monorepo-builds.md +110 -0
- package/.claude/skills/build-engineering/resources/performance-optimization.md +113 -0
- package/.claude/skills/build-engineering/resources/reproducible-builds.md +82 -0
- package/.claude/skills/cloud-engineering/SKILL.md +675 -0
- package/.claude/skills/cloud-engineering/resources/aws-patterns.md +742 -0
- package/.claude/skills/cloud-engineering/resources/azure-patterns.md +714 -0
- package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +987 -0
- package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +757 -0
- package/.claude/skills/cloud-engineering/resources/cloud-networking.md +1058 -0
- package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +1530 -0
- package/.claude/skills/cloud-engineering/resources/cloud-security.md +990 -0
- package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +758 -0
- package/.claude/skills/cloud-engineering/resources/migration-strategies.md +820 -0
- package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +670 -0
- package/.claude/skills/cloud-engineering/resources/oci-patterns.md +1198 -0
- package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +795 -0
- package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +966 -0
- package/.claude/skills/cybersecurity/SKILL.md +409 -0
- package/.claude/skills/cybersecurity/resources/security-architecture.md +266 -0
- package/.claude/skills/database-engineering/SKILL.md +61 -0
- package/.claude/skills/database-engineering/resources/backup-and-recovery.md +72 -0
- package/.claude/skills/database-engineering/resources/database-replication.md +63 -0
- package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +70 -0
- package/.claude/skills/database-engineering/resources/query-optimization.md +68 -0
- package/.claude/skills/devsecops/SKILL.md +374 -0
- package/.claude/skills/devsecops/resources/ci-cd-security.md +204 -0
- package/.claude/skills/devsecops/resources/compliance-automation.md +530 -0
- package/.claude/skills/devsecops/resources/compliance-frameworks.md +2322 -0
- package/.claude/skills/devsecops/resources/container-security.md +915 -0
- package/.claude/skills/devsecops/resources/cspm-integration.md +1440 -0
- package/.claude/skills/devsecops/resources/policy-enforcement.md +619 -0
- package/.claude/skills/devsecops/resources/secrets-management.md +755 -0
- package/.claude/skills/devsecops/resources/security-monitoring.md +146 -0
- package/.claude/skills/devsecops/resources/security-scanning.md +887 -0
- package/.claude/skills/devsecops/resources/security-testing.md +203 -0
- package/.claude/skills/devsecops/resources/supply-chain-security.md +518 -0
- package/.claude/skills/devsecops/resources/vulnerability-management.md +481 -0
- package/.claude/skills/devsecops/resources/zero-trust-architecture.md +177 -0
- package/.claude/skills/documentation-as-code/SKILL.md +323 -0
- package/.claude/skills/documentation-as-code/resources/api-documentation.md +90 -0
- package/.claude/skills/documentation-as-code/resources/changelog-management.md +79 -0
- package/.claude/skills/documentation-as-code/resources/diagram-generation.md +44 -0
- package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +99 -0
- package/.claude/skills/documentation-as-code/resources/documentation-automation.md +68 -0
- package/.claude/skills/documentation-as-code/resources/documentation-sites.md +79 -0
- package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +162 -0
- package/.claude/skills/documentation-as-code/resources/openapi-specification.md +77 -0
- package/.claude/skills/documentation-as-code/resources/readme-engineering.md +60 -0
- package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +202 -0
- package/.claude/skills/engineering-management/SKILL.md +356 -0
- package/.claude/skills/engineering-management/resources/career-ladders.md +609 -0
- package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +555 -0
- package/.claude/skills/engineering-management/resources/one-on-one-guides.md +609 -0
- package/.claude/skills/engineering-management/resources/resource-planning.md +557 -0
- package/.claude/skills/engineering-management/resources/team-organization-patterns.md +491 -0
- package/.claude/skills/engineering-management/resources/technical-interviews.md +474 -0
- package/.claude/skills/engineering-operations-management/SKILL.md +817 -0
- package/.claude/skills/error-tracking/SKILL.md +379 -0
- package/.claude/skills/frontend-dev-guidelines/SKILL.md +403 -0
- package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +331 -0
- package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +872 -0
- package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +502 -0
- package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +767 -0
- package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +502 -0
- package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +501 -0
- package/.claude/skills/frontend-dev-guidelines/resources/performance.md +406 -0
- package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +364 -0
- package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +428 -0
- package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +418 -0
- package/.claude/skills/general-it-engineering/SKILL.md +393 -0
- package/.claude/skills/general-it-engineering/resources/asset-management.md +712 -0
- package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +817 -0
- package/.claude/skills/general-it-engineering/resources/business-continuity.md +786 -0
- package/.claude/skills/general-it-engineering/resources/change-management.md +715 -0
- package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +729 -0
- package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +738 -0
- package/.claude/skills/general-it-engineering/resources/incident-service-management.md +834 -0
- package/.claude/skills/general-it-engineering/resources/it-governance.md +753 -0
- package/.claude/skills/general-it-engineering/resources/itil-framework.md +503 -0
- package/.claude/skills/general-it-engineering/resources/service-management.md +669 -0
- package/.claude/skills/infrastructure-architecture/SKILL.md +328 -0
- package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +505 -0
- package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +528 -0
- package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +453 -0
- package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +773 -0
- package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +499 -0
- package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +501 -0
- package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +535 -0
- package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +512 -0
- package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +608 -0
- package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +562 -0
- package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +538 -0
- package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +489 -0
- package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +1000 -0
- package/.claude/skills/infrastructure-strategy/SKILL.md +924 -0
- package/.claude/skills/network-engineering/SKILL.md +385 -0
- package/.claude/skills/network-engineering/resources/dns-management.md +738 -0
- package/.claude/skills/network-engineering/resources/load-balancing.md +820 -0
- package/.claude/skills/network-engineering/resources/network-architecture.md +546 -0
- package/.claude/skills/network-engineering/resources/network-security.md +921 -0
- package/.claude/skills/network-engineering/resources/network-troubleshooting.md +749 -0
- package/.claude/skills/network-engineering/resources/routing-switching.md +373 -0
- package/.claude/skills/network-engineering/resources/sdn-networking.md +695 -0
- package/.claude/skills/network-engineering/resources/service-mesh-networking.md +777 -0
- package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +444 -0
- package/.claude/skills/network-engineering/resources/vpn-connectivity.md +672 -0
- package/.claude/skills/observability-engineering/SKILL.md +101 -0
- package/.claude/skills/observability-engineering/resources/apm-tools.md +97 -0
- package/.claude/skills/observability-engineering/resources/correlation-strategies.md +87 -0
- package/.claude/skills/observability-engineering/resources/distributed-tracing.md +98 -0
- package/.claude/skills/observability-engineering/resources/logs-aggregation.md +118 -0
- package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +141 -0
- package/.claude/skills/observability-engineering/resources/opentelemetry.md +110 -0
- package/.claude/skills/platform-engineering/SKILL.md +555 -0
- package/.claude/skills/platform-engineering/resources/architecture-overview.md +600 -0
- package/.claude/skills/platform-engineering/resources/container-orchestration.md +916 -0
- package/.claude/skills/platform-engineering/resources/cost-optimization.md +634 -0
- package/.claude/skills/platform-engineering/resources/developer-platforms.md +670 -0
- package/.claude/skills/platform-engineering/resources/gitops-automation.md +650 -0
- package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +778 -0
- package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +708 -0
- package/.claude/skills/platform-engineering/resources/multi-tenancy.md +602 -0
- package/.claude/skills/platform-engineering/resources/platform-security.md +711 -0
- package/.claude/skills/platform-engineering/resources/resource-management.md +592 -0
- package/.claude/skills/platform-engineering/resources/service-mesh.md +628 -0
- package/.claude/skills/release-engineering/SKILL.md +393 -0
- package/.claude/skills/release-engineering/resources/artifact-management.md +108 -0
- package/.claude/skills/release-engineering/resources/build-optimization.md +84 -0
- package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +411 -0
- package/.claude/skills/release-engineering/resources/deployment-strategies.md +197 -0
- package/.claude/skills/release-engineering/resources/pipeline-security.md +62 -0
- package/.claude/skills/release-engineering/resources/progressive-delivery.md +83 -0
- package/.claude/skills/release-engineering/resources/release-automation.md +68 -0
- package/.claude/skills/release-engineering/resources/release-orchestration.md +77 -0
- package/.claude/skills/release-engineering/resources/rollback-strategies.md +66 -0
- package/.claude/skills/release-engineering/resources/versioning-strategies.md +59 -0
- package/.claude/skills/route-tester/SKILL.md +392 -0
- package/.claude/skills/skill-developer/ADVANCED.md +197 -0
- package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +306 -0
- package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +152 -0
- package/.claude/skills/skill-developer/SKILL.md +430 -0
- package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +315 -0
- package/.claude/skills/skill-developer/TRIGGER_TYPES.md +305 -0
- package/.claude/skills/skill-developer/TROUBLESHOOTING.md +514 -0
- package/.claude/skills/skill-rules.json +2940 -0
- package/.claude/skills/sre/SKILL.md +464 -0
- package/.claude/skills/sre/resources/alerting-best-practices.md +282 -0
- package/.claude/skills/sre/resources/capacity-planning.md +226 -0
- package/.claude/skills/sre/resources/chaos-engineering.md +193 -0
- package/.claude/skills/sre/resources/disaster-recovery.md +232 -0
- package/.claude/skills/sre/resources/incident-management.md +436 -0
- package/.claude/skills/sre/resources/observability-stack.md +240 -0
- package/.claude/skills/sre/resources/on-call-runbooks.md +167 -0
- package/.claude/skills/sre/resources/performance-optimization.md +108 -0
- package/.claude/skills/sre/resources/reliability-patterns.md +183 -0
- package/.claude/skills/sre/resources/slo-sli-sla.md +464 -0
- package/.claude/skills/sre/resources/toil-reduction.md +145 -0
- package/.claude/skills/systems-engineering/SKILL.md +648 -0
- package/.claude/skills/systems-engineering/resources/automation-patterns.md +771 -0
- package/.claude/skills/systems-engineering/resources/configuration-management.md +998 -0
- package/.claude/skills/systems-engineering/resources/linux-administration.md +672 -0
- package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +982 -0
- package/.claude/skills/systems-engineering/resources/performance-tuning.md +871 -0
- package/.claude/skills/systems-engineering/resources/powershell-scripting.md +482 -0
- package/.claude/skills/systems-engineering/resources/security-hardening.md +739 -0
- package/.claude/skills/systems-engineering/resources/shell-scripting.md +915 -0
- package/.claude/skills/systems-engineering/resources/storage-management.md +628 -0
- package/.claude/skills/systems-engineering/resources/system-monitoring.md +787 -0
- package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +753 -0
- package/.claude/skills/systems-engineering/resources/windows-administration.md +738 -0
- package/.claude/skills/technical-leadership/SKILL.md +728 -0
- package/CHANGELOG.md +90 -54
- package/README.md +94 -0
- package/backend/docs/SECRETS_DOCUMENTATION.md +327 -0
- package/backend/jest.config.js +59 -0
- package/backend/package-lock.json +6129 -0
- package/backend/package.json +16 -4
- package/backend/prisma/migrations/20251026104609_add_websocket_api/migration.sql +33 -0
- package/backend/prisma/schema.prisma +33 -0
- package/backend/src/__tests__/core/DependencyService.test.js +336 -0
- package/backend/src/__tests__/core/UserService.test.js +875 -0
- package/backend/src/__tests__/repositories/BaseRepository.test.js +146 -0
- package/backend/src/__tests__/repositories/BotRepository.test.js +118 -0
- package/backend/src/__tests__/repositories/CommandRepository.test.js +132 -0
- package/backend/src/__tests__/repositories/EventGraphRepository.test.js +93 -0
- package/backend/src/__tests__/repositories/GroupRepository.test.js +155 -0
- package/backend/src/__tests__/repositories/PermissionRepository.test.js +130 -0
- package/backend/src/__tests__/repositories/PluginRepository.test.js +107 -0
- package/backend/src/__tests__/repositories/ServerRepository.test.js +80 -0
- package/backend/src/__tests__/repositories/UserRepository.test.js +128 -0
- package/backend/src/__tests__/secretsFilter.test.js +425 -0
- package/backend/src/__tests__/services/BotLifecycleService.test.js +411 -0
- package/backend/src/__tests__/services/BotProcessManager.test.js +285 -0
- package/backend/src/__tests__/services/CacheManager.test.js +125 -0
- package/backend/src/__tests__/services/CommandExecutionService.test.js +460 -0
- package/backend/src/__tests__/services/ResourceMonitorService.test.js +207 -0
- package/backend/src/__tests__/services/TelemetryService.test.js +291 -0
- package/backend/src/__tests__/setup.js +25 -0
- package/backend/src/api/routes/apiKeys.js +181 -0
- package/backend/src/api/routes/bots.js +49 -7
- package/backend/src/api/routes/plugins.js +2 -1
- package/backend/src/api/routes/system.js +174 -0
- package/backend/src/container.js +82 -0
- package/backend/src/core/BotManager.js +142 -871
- package/backend/src/core/BotManager.old.js +1093 -0
- package/backend/src/core/BotProcess.js +1092 -858
- package/backend/src/core/EventGraphManager.js +280 -198
- package/backend/src/core/GraphExecutionEngine.js +321 -325
- package/backend/src/core/MessageQueue.js +27 -6
- package/backend/src/core/NodeRegistry.js +37 -1134
- package/backend/src/core/PluginManager.js +62 -12
- package/backend/src/core/PrismaService.js +32 -0
- package/backend/src/core/UserService.js +3 -3
- package/backend/src/core/__tests__/PrismaService.test.js +24 -0
- package/backend/src/core/commands/README.md +305 -0
- package/backend/src/core/commands/dev.js +13 -7
- package/backend/src/core/commands/ping.js +10 -4
- package/backend/src/core/commands/whois.js +63 -0
- package/backend/src/core/config/validation.js +27 -0
- package/backend/src/core/constants/graphTypes.js +21 -0
- package/backend/src/core/node-registries/actions.js +132 -0
- package/backend/src/core/node-registries/arrays.js +137 -0
- package/backend/src/core/node-registries/bot.js +23 -0
- package/backend/src/core/node-registries/data.js +290 -0
- package/backend/src/core/node-registries/debug.js +26 -0
- package/backend/src/core/node-registries/events.js +187 -0
- package/backend/src/core/node-registries/flow.js +139 -0
- package/backend/src/core/node-registries/logic.js +45 -0
- package/backend/src/core/node-registries/math.js +42 -0
- package/backend/src/core/node-registries/objects.js +98 -0
- package/backend/src/core/node-registries/strings.js +153 -0
- package/backend/src/core/node-registries/time.js +113 -0
- package/backend/src/core/node-registries/users.js +79 -0
- package/backend/src/core/nodes/{action_bot_look_at.js → actions/bot_look_at.js} +36 -36
- package/backend/src/core/nodes/{action_bot_set_variable.js → actions/bot_set_variable.js} +32 -32
- package/backend/src/core/nodes/{action_send_log.js → actions/send_log.js} +28 -23
- package/backend/src/core/nodes/{action_send_message.js → actions/send_message.js} +32 -32
- package/backend/src/core/nodes/actions/send_websocket_response.js +33 -0
- package/backend/src/core/nodes/arrays/get_next.js +35 -0
- package/backend/src/core/nodes/{data_cast.js → data/cast.js} +8 -0
- package/backend/src/core/nodes/data/datetime_literal.js +27 -0
- package/backend/src/core/nodes/data/entity_info.js +69 -0
- package/backend/src/core/nodes/data/get_nearby_entities.js +32 -0
- package/backend/src/core/nodes/data/get_nearby_players.js +64 -0
- package/backend/src/core/nodes/{data_get_user_field.js → data/get_user_field.js} +1 -1
- package/backend/src/core/nodes/data/type_check.js +53 -0
- package/backend/src/core/nodes/{debug_log.js → debug/log.js} +16 -16
- package/backend/src/core/nodes/{flow_branch.js → flow/branch.js} +15 -15
- package/backend/src/core/nodes/{flow_break.js → flow/break.js} +14 -14
- package/backend/src/core/nodes/flow/delay.js +43 -0
- package/backend/src/core/nodes/{flow_for_each.js → flow/for_each.js} +39 -39
- package/backend/src/core/nodes/{flow_sequence.js → flow/sequence.js} +16 -16
- package/backend/src/core/nodes/{flow_switch.js → flow/switch.js} +47 -47
- package/backend/src/core/nodes/{flow_while.js → flow/while.js} +1 -1
- package/backend/src/core/nodes/logic/__tests__/compare.test.js +83 -0
- package/backend/src/core/nodes/math/__tests__/operation.test.js +65 -0
- package/backend/src/core/nodes/strings/__tests__/concat.test.js +89 -0
- package/backend/src/core/nodes/time/__tests__/now.test.js +24 -0
- package/backend/src/core/nodes/time/add.js +33 -0
- package/backend/src/core/nodes/time/compare.js +35 -0
- package/backend/src/core/nodes/time/diff.js +29 -0
- package/backend/src/core/nodes/time/format.js +32 -0
- package/backend/src/core/nodes/time/now.js +18 -0
- package/backend/src/core/nodes/{user_check_blacklist.js → users/check_blacklist.js} +37 -37
- package/backend/src/core/nodes/{user_get_groups.js → users/get_groups.js} +36 -36
- package/backend/src/core/nodes/{user_get_permissions.js → users/get_permissions.js} +36 -36
- package/backend/src/core/nodes/{user_set_blacklist.js → users/set_blacklist.js} +37 -37
- package/backend/src/core/services/BotLifecycleService.js +596 -0
- package/backend/src/core/services/BotProcessManager.js +163 -0
- package/backend/src/core/services/CacheManager.js +111 -0
- package/backend/src/core/services/CommandExecutionService.js +351 -0
- package/backend/src/core/services/ResourceMonitorService.js +90 -0
- package/backend/src/core/services/TelemetryService.js +124 -0
- package/backend/src/core/services/ValidationService.js +132 -0
- package/backend/src/core/services/__tests__/ValidationService.test.js +148 -0
- package/backend/src/core/services.js +20 -5
- package/backend/src/core/system/CommandContext.js +84 -0
- package/backend/src/core/system/Transport.js +78 -0
- package/backend/src/core/utils/__tests__/jsonParser.test.js +44 -0
- package/backend/src/core/utils/jsonParser.js +18 -0
- package/backend/src/core/utils/secretsFilter.js +262 -0
- package/backend/src/core/utils/variableParser.js +89 -0
- package/backend/src/core/validation/__tests__/nodeSchemas.test.js +175 -0
- package/backend/src/core/validation/nodeSchemas.js +112 -0
- package/backend/src/lib/prisma.js +2 -4
- package/backend/src/real-time/botApi/handlers/commandHandlers.js +28 -0
- package/backend/src/real-time/botApi/handlers/graphHandlers.js +99 -0
- package/backend/src/real-time/botApi/handlers/graphWebSocketHandlers.js +147 -0
- package/backend/src/real-time/botApi/handlers/index.js +43 -0
- package/backend/src/real-time/botApi/handlers/messageHandlers.js +66 -0
- package/backend/src/real-time/botApi/handlers/statusHandlers.js +17 -0
- package/backend/src/real-time/botApi/handlers/userHandlers.js +141 -0
- package/backend/src/real-time/botApi/index.js +40 -0
- package/backend/src/real-time/botApi/middleware.js +79 -0
- package/backend/src/real-time/botApi/utils.js +54 -0
- package/backend/src/real-time/socketHandler.js +6 -2
- package/backend/src/repositories/BaseRepository.js +43 -0
- package/backend/src/repositories/BotRepository.js +42 -0
- package/backend/src/repositories/CommandRepository.js +53 -0
- package/backend/src/repositories/EventGraphRepository.js +40 -0
- package/backend/src/repositories/GroupRepository.js +69 -0
- package/backend/src/repositories/PermissionRepository.js +48 -0
- package/backend/src/repositories/PluginRepository.js +42 -0
- package/backend/src/repositories/ServerRepository.js +27 -0
- package/backend/src/repositories/UserRepository.js +48 -0
- package/backend/src/server.js +3 -0
- package/backend/src/test-refactor.js +85 -0
- package/frontend/dist/assets/index-CfTo92bP.css +1 -0
- package/frontend/dist/assets/index-CiFD5X9Z.js +8344 -0
- package/frontend/dist/index.html +2 -2
- package/frontend/package.json +0 -5
- package/package.json +2 -1
- package/frontend/dist/assets/index-B9GedHEa.js +0 -8352
- package/frontend/dist/assets/index-zLiy9MDx.css +0 -1
- package/nul +0 -0
- /package/backend/src/core/nodes/{action_http_request.js → actions/http_request.js} +0 -0
- /package/backend/src/core/nodes/{array_add_element.js → arrays/add_element.js} +0 -0
- /package/backend/src/core/nodes/{array_contains.js → arrays/contains.js} +0 -0
- /package/backend/src/core/nodes/{array_find_index.js → arrays/find_index.js} +0 -0
- /package/backend/src/core/nodes/{array_get_by_index.js → arrays/get_by_index.js} +0 -0
- /package/backend/src/core/nodes/{array_get_random_element.js → arrays/get_random_element.js} +0 -0
- /package/backend/src/core/nodes/{array_remove_by_index.js → arrays/remove_by_index.js} +0 -0
- /package/backend/src/core/nodes/{bot_get_position.js → bot/get_position.js} +0 -0
- /package/backend/src/core/nodes/{data_array_literal.js → data/array_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_boolean_literal.js → data/boolean_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_get_argument.js → data/get_argument.js} +0 -0
- /package/backend/src/core/nodes/{data_get_bot_look.js → data/get_bot_look.js} +0 -0
- /package/backend/src/core/nodes/{data_get_entity_field.js → data/get_entity_field.js} +0 -0
- /package/backend/src/core/nodes/{data_get_server_players.js → data/get_server_players.js} +0 -0
- /package/backend/src/core/nodes/{data_get_variable.js → data/get_variable.js} +0 -0
- /package/backend/src/core/nodes/{data_length.js → data/length.js} +0 -0
- /package/backend/src/core/nodes/{data_make_object.js → data/make_object.js} +0 -0
- /package/backend/src/core/nodes/{data_number_literal.js → data/number_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_string_literal.js → data/string_literal.js} +0 -0
- /package/backend/src/core/nodes/{logic_compare.js → logic/compare.js} +0 -0
- /package/backend/src/core/nodes/{logic_operation.js → logic/operation.js} +0 -0
- /package/backend/src/core/nodes/{math_operation.js → math/operation.js} +0 -0
- /package/backend/src/core/nodes/{math_random_number.js → math/random_number.js} +0 -0
- /package/backend/src/core/nodes/{object_create.js → objects/create.js} +0 -0
- /package/backend/src/core/nodes/{object_delete.js → objects/delete.js} +0 -0
- /package/backend/src/core/nodes/{object_get.js → objects/get.js} +0 -0
- /package/backend/src/core/nodes/{object_has_key.js → objects/has_key.js} +0 -0
- /package/backend/src/core/nodes/{object_set.js → objects/set.js} +0 -0
- /package/backend/src/core/nodes/{string_concat.js → strings/concat.js} +0 -0
- /package/backend/src/core/nodes/{string_contains.js → strings/contains.js} +0 -0
- /package/backend/src/core/nodes/{string_ends_with.js → strings/ends_with.js} +0 -0
- /package/backend/src/core/nodes/{string_equals.js → strings/equals.js} +0 -0
- /package/backend/src/core/nodes/{string_length.js → strings/length.js} +0 -0
- /package/backend/src/core/nodes/{string_matches.js → strings/matches.js} +0 -0
- /package/backend/src/core/nodes/{string_split.js → strings/split.js} +0 -0
- /package/backend/src/core/nodes/{string_starts_with.js → strings/starts_with.js} +0 -0
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
# Hooks Configuration Guide
|
|
2
|
+
|
|
3
|
+
This guide explains how to configure and customize the hooks system for your project.
|
|
4
|
+
|
|
5
|
+
## Quick Start Configuration
|
|
6
|
+
|
|
7
|
+
### 1. Register Hooks in .claude/settings.json
|
|
8
|
+
|
|
9
|
+
Create or update `.claude/settings.json` in your project root:
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"hooks": {
|
|
14
|
+
"UserPromptSubmit": [
|
|
15
|
+
{
|
|
16
|
+
"hooks": [
|
|
17
|
+
{
|
|
18
|
+
"type": "command",
|
|
19
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/skill-activation-prompt.sh"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"PostToolUse": [
|
|
25
|
+
{
|
|
26
|
+
"matcher": "Edit|MultiEdit|Write",
|
|
27
|
+
"hooks": [
|
|
28
|
+
{
|
|
29
|
+
"type": "command",
|
|
30
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/post-tool-use-tracker.sh"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"Stop": [
|
|
36
|
+
{
|
|
37
|
+
"hooks": [
|
|
38
|
+
{
|
|
39
|
+
"type": "command",
|
|
40
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/stop-prettier-formatter.sh"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "command",
|
|
44
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/stop-build-check-enhanced.sh"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "command",
|
|
48
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/error-handling-reminder.sh"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 2. Install Dependencies
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
cd .claude/hooks
|
|
61
|
+
npm install
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 3. Set Execute Permissions
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
chmod +x .claude/hooks/*.sh
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Customization Options
|
|
71
|
+
|
|
72
|
+
### Project Structure Detection
|
|
73
|
+
|
|
74
|
+
By default, hooks detect these directory patterns:
|
|
75
|
+
|
|
76
|
+
**Frontend:** `frontend/`, `client/`, `web/`, `app/`, `ui/`
|
|
77
|
+
**Backend:** `backend/`, `server/`, `api/`, `src/`, `services/`
|
|
78
|
+
**Database:** `database/`, `prisma/`, `migrations/`
|
|
79
|
+
**Monorepo:** `packages/*`, `examples/*`
|
|
80
|
+
|
|
81
|
+
#### Adding Custom Directory Patterns
|
|
82
|
+
|
|
83
|
+
Edit `.claude/hooks/post-tool-use-tracker.sh`, function `detect_repo()`:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
case "$repo" in
|
|
87
|
+
# Add your custom directories here
|
|
88
|
+
my-custom-service)
|
|
89
|
+
echo "$repo"
|
|
90
|
+
;;
|
|
91
|
+
admin-panel)
|
|
92
|
+
echo "$repo"
|
|
93
|
+
;;
|
|
94
|
+
# ... existing patterns
|
|
95
|
+
esac
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Build Command Detection
|
|
99
|
+
|
|
100
|
+
The hooks auto-detect build commands based on:
|
|
101
|
+
1. Presence of `package.json` with "build" script
|
|
102
|
+
2. Package manager (pnpm > npm > yarn)
|
|
103
|
+
3. Special cases (Prisma schemas)
|
|
104
|
+
|
|
105
|
+
#### Customizing Build Commands
|
|
106
|
+
|
|
107
|
+
Edit `.claude/hooks/post-tool-use-tracker.sh`, function `get_build_command()`:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Add custom build logic
|
|
111
|
+
if [[ "$repo" == "my-service" ]]; then
|
|
112
|
+
echo "cd $repo_path && make build"
|
|
113
|
+
return
|
|
114
|
+
fi
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### TypeScript Configuration
|
|
118
|
+
|
|
119
|
+
Hooks automatically detect:
|
|
120
|
+
- `tsconfig.json` for standard TypeScript projects
|
|
121
|
+
- `tsconfig.app.json` for Vite/React projects
|
|
122
|
+
|
|
123
|
+
#### Custom TypeScript Configs
|
|
124
|
+
|
|
125
|
+
Edit `.claude/hooks/post-tool-use-tracker.sh`, function `get_tsc_command()`:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
if [[ "$repo" == "my-service" ]]; then
|
|
129
|
+
echo "cd $repo_path && npx tsc --project tsconfig.build.json --noEmit"
|
|
130
|
+
return
|
|
131
|
+
fi
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Prettier Configuration
|
|
135
|
+
|
|
136
|
+
The prettier hook searches for configs in this order:
|
|
137
|
+
1. Current file directory (walking upward)
|
|
138
|
+
2. Project root
|
|
139
|
+
3. Falls back to Prettier defaults
|
|
140
|
+
|
|
141
|
+
#### Custom Prettier Config Search
|
|
142
|
+
|
|
143
|
+
Edit `.claude/hooks/stop-prettier-formatter.sh`, function `get_prettier_config()`:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
# Add custom config locations
|
|
147
|
+
if [[ -f "$project_root/config/.prettierrc" ]]; then
|
|
148
|
+
echo "$project_root/config/.prettierrc"
|
|
149
|
+
return
|
|
150
|
+
fi
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Error Handling Reminders
|
|
154
|
+
|
|
155
|
+
Configure file category detection in `.claude/hooks/error-handling-reminder.ts`:
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
function getFileCategory(filePath: string): 'backend' | 'frontend' | 'database' | 'other' {
|
|
159
|
+
// Add custom patterns
|
|
160
|
+
if (filePath.includes('/my-custom-dir/')) return 'backend';
|
|
161
|
+
// ... existing patterns
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Error Threshold Configuration
|
|
166
|
+
|
|
167
|
+
Change when to recommend the auto-error-resolver agent.
|
|
168
|
+
|
|
169
|
+
Edit `.claude/hooks/stop-build-check-enhanced.sh`:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# Default is 5 errors - change to your preference
|
|
173
|
+
if [[ $total_errors -ge 10 ]]; then # Now requires 10+ errors
|
|
174
|
+
# Recommend agent
|
|
175
|
+
fi
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Environment Variables
|
|
179
|
+
|
|
180
|
+
### Global Environment Variables
|
|
181
|
+
|
|
182
|
+
Set in your shell profile (`.bashrc`, `.zshrc`, etc.):
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# Disable error handling reminders
|
|
186
|
+
export SKIP_ERROR_REMINDER=1
|
|
187
|
+
|
|
188
|
+
# Custom project directory (if not using default)
|
|
189
|
+
export CLAUDE_PROJECT_DIR=/path/to/your/project
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Per-Session Environment Variables
|
|
193
|
+
|
|
194
|
+
Set before starting Claude Code:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
SKIP_ERROR_REMINDER=1 claude-code
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Hook Execution Order
|
|
201
|
+
|
|
202
|
+
Stop hooks run in the order specified in `settings.json`:
|
|
203
|
+
|
|
204
|
+
```json
|
|
205
|
+
"Stop": [
|
|
206
|
+
{
|
|
207
|
+
"hooks": [
|
|
208
|
+
{ "command": "...formatter.sh" }, // Runs FIRST
|
|
209
|
+
{ "command": "...build-check.sh" }, // Runs SECOND
|
|
210
|
+
{ "command": "...reminder.sh" } // Runs THIRD
|
|
211
|
+
]
|
|
212
|
+
}
|
|
213
|
+
]
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
**Why this order matters:**
|
|
217
|
+
1. Format files first (clean code)
|
|
218
|
+
2. Then check for errors
|
|
219
|
+
3. Finally show reminders
|
|
220
|
+
|
|
221
|
+
## Selective Hook Enabling
|
|
222
|
+
|
|
223
|
+
You don't need all hooks. Choose what works for your project:
|
|
224
|
+
|
|
225
|
+
### Minimal Setup (Skill Activation Only)
|
|
226
|
+
|
|
227
|
+
```json
|
|
228
|
+
{
|
|
229
|
+
"hooks": {
|
|
230
|
+
"UserPromptSubmit": [
|
|
231
|
+
{
|
|
232
|
+
"hooks": [
|
|
233
|
+
{
|
|
234
|
+
"type": "command",
|
|
235
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/skill-activation-prompt.sh"
|
|
236
|
+
}
|
|
237
|
+
]
|
|
238
|
+
}
|
|
239
|
+
]
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Build Checking Only (No Formatting)
|
|
245
|
+
|
|
246
|
+
```json
|
|
247
|
+
{
|
|
248
|
+
"hooks": {
|
|
249
|
+
"PostToolUse": [
|
|
250
|
+
{
|
|
251
|
+
"matcher": "Edit|MultiEdit|Write",
|
|
252
|
+
"hooks": [
|
|
253
|
+
{
|
|
254
|
+
"type": "command",
|
|
255
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/post-tool-use-tracker.sh"
|
|
256
|
+
}
|
|
257
|
+
]
|
|
258
|
+
}
|
|
259
|
+
],
|
|
260
|
+
"Stop": [
|
|
261
|
+
{
|
|
262
|
+
"hooks": [
|
|
263
|
+
{
|
|
264
|
+
"type": "command",
|
|
265
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/stop-build-check-enhanced.sh"
|
|
266
|
+
}
|
|
267
|
+
]
|
|
268
|
+
}
|
|
269
|
+
]
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Formatting Only (No Build Checking)
|
|
275
|
+
|
|
276
|
+
```json
|
|
277
|
+
{
|
|
278
|
+
"hooks": {
|
|
279
|
+
"PostToolUse": [
|
|
280
|
+
{
|
|
281
|
+
"matcher": "Edit|MultiEdit|Write",
|
|
282
|
+
"hooks": [
|
|
283
|
+
{
|
|
284
|
+
"type": "command",
|
|
285
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/post-tool-use-tracker.sh"
|
|
286
|
+
}
|
|
287
|
+
]
|
|
288
|
+
}
|
|
289
|
+
],
|
|
290
|
+
"Stop": [
|
|
291
|
+
{
|
|
292
|
+
"hooks": [
|
|
293
|
+
{
|
|
294
|
+
"type": "command",
|
|
295
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/stop-prettier-formatter.sh"
|
|
296
|
+
}
|
|
297
|
+
]
|
|
298
|
+
}
|
|
299
|
+
]
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
## Cache Management
|
|
305
|
+
|
|
306
|
+
### Cache Location
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
$CLAUDE_PROJECT_DIR/.claude/tsc-cache/[session_id]/
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### Manual Cache Cleanup
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
# Remove all cached data
|
|
316
|
+
rm -rf $CLAUDE_PROJECT_DIR/.claude/tsc-cache/*
|
|
317
|
+
|
|
318
|
+
# Remove specific session
|
|
319
|
+
rm -rf $CLAUDE_PROJECT_DIR/.claude/tsc-cache/[session-id]
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Automatic Cleanup
|
|
323
|
+
|
|
324
|
+
The build-check hook automatically cleans up session cache on successful builds.
|
|
325
|
+
|
|
326
|
+
## Troubleshooting Configuration
|
|
327
|
+
|
|
328
|
+
### Hook Not Executing
|
|
329
|
+
|
|
330
|
+
1. **Check registration:** Verify hook is in `.claude/settings.json`
|
|
331
|
+
2. **Check permissions:** Run `chmod +x .claude/hooks/*.sh`
|
|
332
|
+
3. **Check path:** Ensure `$CLAUDE_PROJECT_DIR` is set correctly
|
|
333
|
+
4. **Check TypeScript:** Run `cd .claude/hooks && npx tsc` to check for errors
|
|
334
|
+
|
|
335
|
+
### False Positive Detections
|
|
336
|
+
|
|
337
|
+
**Issue:** Hook triggers for files it shouldn't
|
|
338
|
+
|
|
339
|
+
**Solution:** Add skip conditions in the relevant hook:
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
# In post-tool-use-tracker.sh
|
|
343
|
+
if [[ "$file_path" =~ /generated/ ]]; then
|
|
344
|
+
exit 0 # Skip generated files
|
|
345
|
+
fi
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### Performance Issues
|
|
349
|
+
|
|
350
|
+
**Issue:** Hooks are slow
|
|
351
|
+
|
|
352
|
+
**Solutions:**
|
|
353
|
+
1. Limit TypeScript checks to changed files only
|
|
354
|
+
2. Use faster package managers (pnpm > npm)
|
|
355
|
+
3. Add more skip conditions
|
|
356
|
+
4. Disable Prettier for large files
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
# Skip large files in stop-prettier-formatter.sh
|
|
360
|
+
file_size=$(wc -c < "$file" 2>/dev/null || echo 0)
|
|
361
|
+
if [[ $file_size -gt 100000 ]]; then # Skip files > 100KB
|
|
362
|
+
continue
|
|
363
|
+
fi
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### Debugging Hooks
|
|
367
|
+
|
|
368
|
+
Add debug output to any hook:
|
|
369
|
+
|
|
370
|
+
```bash
|
|
371
|
+
# At the top of the hook script
|
|
372
|
+
set -x # Enable debug mode
|
|
373
|
+
|
|
374
|
+
# Or add specific debug lines
|
|
375
|
+
echo "DEBUG: file_path=$file_path" >&2
|
|
376
|
+
echo "DEBUG: repo=$repo" >&2
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
View hook execution in Claude Code's logs.
|
|
380
|
+
|
|
381
|
+
## Advanced Configuration
|
|
382
|
+
|
|
383
|
+
### Custom Hook Event Handlers
|
|
384
|
+
|
|
385
|
+
You can create your own hooks for other events:
|
|
386
|
+
|
|
387
|
+
```json
|
|
388
|
+
{
|
|
389
|
+
"hooks": {
|
|
390
|
+
"PreToolUse": [
|
|
391
|
+
{
|
|
392
|
+
"matcher": "Bash",
|
|
393
|
+
"hooks": [
|
|
394
|
+
{
|
|
395
|
+
"type": "command",
|
|
396
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/my-custom-bash-guard.sh"
|
|
397
|
+
}
|
|
398
|
+
]
|
|
399
|
+
}
|
|
400
|
+
]
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
### Monorepo Configuration
|
|
406
|
+
|
|
407
|
+
For monorepos with multiple packages:
|
|
408
|
+
|
|
409
|
+
```bash
|
|
410
|
+
# In post-tool-use-tracker.sh, detect_repo()
|
|
411
|
+
case "$repo" in
|
|
412
|
+
packages)
|
|
413
|
+
# Get the package name
|
|
414
|
+
local package=$(echo "$relative_path" | cut -d'/' -f2)
|
|
415
|
+
if [[ -n "$package" ]]; then
|
|
416
|
+
echo "packages/$package"
|
|
417
|
+
else
|
|
418
|
+
echo "$repo"
|
|
419
|
+
fi
|
|
420
|
+
;;
|
|
421
|
+
esac
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
### Docker/Container Projects
|
|
425
|
+
|
|
426
|
+
If your build commands need to run in containers:
|
|
427
|
+
|
|
428
|
+
```bash
|
|
429
|
+
# In post-tool-use-tracker.sh, get_build_command()
|
|
430
|
+
if [[ "$repo" == "api" ]]; then
|
|
431
|
+
echo "docker-compose exec api npm run build"
|
|
432
|
+
return
|
|
433
|
+
fi
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
## Best Practices
|
|
437
|
+
|
|
438
|
+
1. **Start minimal** - Enable hooks one at a time
|
|
439
|
+
2. **Test thoroughly** - Make changes and verify hooks work
|
|
440
|
+
3. **Document customizations** - Add comments to explain custom logic
|
|
441
|
+
4. **Version control** - Commit `.claude/` directory to git
|
|
442
|
+
5. **Team consistency** - Share configuration across team
|
|
443
|
+
|
|
444
|
+
## See Also
|
|
445
|
+
|
|
446
|
+
- [README.md](./README.md) - Hooks overview
|
|
447
|
+
- [../../docs/HOOKS_SYSTEM.md](../../docs/HOOKS_SYSTEM.md) - Complete hooks reference
|
|
448
|
+
- [../../docs/SKILLS_SYSTEM.md](../../docs/SKILLS_SYSTEM.md) - Skills integration
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Hooks
|
|
2
|
+
|
|
3
|
+
Claude Code hooks that enable skill auto-activation, file tracking, and validation.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## What Are Hooks?
|
|
8
|
+
|
|
9
|
+
Hooks are scripts that run at specific points in Claude's workflow:
|
|
10
|
+
- **UserPromptSubmit**: When user submits a prompt
|
|
11
|
+
- **PreToolUse**: Before a tool executes
|
|
12
|
+
- **PostToolUse**: After a tool completes
|
|
13
|
+
- **Stop**: When user requests to stop
|
|
14
|
+
|
|
15
|
+
**Key insight:** Hooks can modify prompts, block actions, and track state - enabling features Claude can't do alone.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Essential Hooks (Start Here)
|
|
20
|
+
|
|
21
|
+
### skill-activation-prompt (UserPromptSubmit)
|
|
22
|
+
|
|
23
|
+
**Purpose:** Automatically suggests relevant skills based on user prompts and file context
|
|
24
|
+
|
|
25
|
+
**How it works:**
|
|
26
|
+
1. Reads `skill-rules.json`
|
|
27
|
+
2. Matches user prompt against trigger patterns
|
|
28
|
+
3. Checks which files user is working with
|
|
29
|
+
4. Injects skill suggestions into Claude's context
|
|
30
|
+
|
|
31
|
+
**Why it's essential:** This is THE hook that makes skills auto-activate.
|
|
32
|
+
|
|
33
|
+
**Integration:**
|
|
34
|
+
```bash
|
|
35
|
+
# Copy both files
|
|
36
|
+
cp skill-activation-prompt.sh your-project/.claude/hooks/
|
|
37
|
+
cp skill-activation-prompt.ts your-project/.claude/hooks/
|
|
38
|
+
|
|
39
|
+
# Make executable
|
|
40
|
+
chmod +x your-project/.claude/hooks/skill-activation-prompt.sh
|
|
41
|
+
|
|
42
|
+
# Install dependencies
|
|
43
|
+
cd your-project/.claude/hooks
|
|
44
|
+
npm install
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Add to settings.json:**
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"hooks": {
|
|
51
|
+
"UserPromptSubmit": [
|
|
52
|
+
{
|
|
53
|
+
"hooks": [
|
|
54
|
+
{
|
|
55
|
+
"type": "command",
|
|
56
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/skill-activation-prompt.sh"
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Customization:** ✅ None needed - reads skill-rules.json automatically
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
### post-tool-use-tracker (PostToolUse)
|
|
70
|
+
|
|
71
|
+
**Purpose:** Tracks file changes to maintain context across sessions
|
|
72
|
+
|
|
73
|
+
**How it works:**
|
|
74
|
+
1. Monitors Edit/Write/MultiEdit tool calls
|
|
75
|
+
2. Records which files were modified
|
|
76
|
+
3. Creates cache for context management
|
|
77
|
+
4. Auto-detects project structure (frontend, backend, packages, etc.)
|
|
78
|
+
|
|
79
|
+
**Why it's essential:** Helps Claude understand what parts of your codebase are active.
|
|
80
|
+
|
|
81
|
+
**Integration:**
|
|
82
|
+
```bash
|
|
83
|
+
# Copy file
|
|
84
|
+
cp post-tool-use-tracker.sh your-project/.claude/hooks/
|
|
85
|
+
|
|
86
|
+
# Make executable
|
|
87
|
+
chmod +x your-project/.claude/hooks/post-tool-use-tracker.sh
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Add to settings.json:**
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"hooks": {
|
|
94
|
+
"PostToolUse": [
|
|
95
|
+
{
|
|
96
|
+
"matcher": "Edit|MultiEdit|Write",
|
|
97
|
+
"hooks": [
|
|
98
|
+
{
|
|
99
|
+
"type": "command",
|
|
100
|
+
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/post-tool-use-tracker.sh"
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Customization:** ✅ None needed - auto-detects structure
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Optional Hooks (Require Customization)
|
|
114
|
+
|
|
115
|
+
### tsc-check (Stop)
|
|
116
|
+
|
|
117
|
+
**Purpose:** TypeScript compilation check when user stops
|
|
118
|
+
|
|
119
|
+
**⚠️ WARNING:** Configured for multi-service monorepo structure
|
|
120
|
+
|
|
121
|
+
**Integration:**
|
|
122
|
+
|
|
123
|
+
**First, determine if this is right for you:**
|
|
124
|
+
- ✅ Use if: Multi-service TypeScript monorepo
|
|
125
|
+
- ❌ Skip if: Single-service project or different build setup
|
|
126
|
+
|
|
127
|
+
**If using:**
|
|
128
|
+
1. Copy tsc-check.sh
|
|
129
|
+
2. **EDIT the service detection (line ~28):**
|
|
130
|
+
```bash
|
|
131
|
+
# Replace example services with YOUR services:
|
|
132
|
+
case "$repo" in
|
|
133
|
+
api|web|auth|payments|...) # ← Your actual services
|
|
134
|
+
```
|
|
135
|
+
3. Test manually before adding to settings.json
|
|
136
|
+
|
|
137
|
+
**Customization:** ⚠️⚠️⚠️ Heavy
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
### trigger-build-resolver (Stop)
|
|
142
|
+
|
|
143
|
+
**Purpose:** Auto-launches build-error-resolver agent when compilation fails
|
|
144
|
+
|
|
145
|
+
**Depends on:** tsc-check hook working correctly
|
|
146
|
+
|
|
147
|
+
**Customization:** ✅ None (but tsc-check must work first)
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## For Claude Code
|
|
152
|
+
|
|
153
|
+
**When setting up hooks for a user:**
|
|
154
|
+
|
|
155
|
+
1. **Read [CLAUDE_INTEGRATION_GUIDE.md](../../CLAUDE_INTEGRATION_GUIDE.md)** first
|
|
156
|
+
2. **Always start with the two essential hooks**
|
|
157
|
+
3. **Ask before adding Stop hooks** - they can block if misconfigured
|
|
158
|
+
4. **Verify after setup:**
|
|
159
|
+
```bash
|
|
160
|
+
ls -la .claude/hooks/*.sh | grep rwx
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Questions?** See [CLAUDE_INTEGRATION_GUIDE.md](../../CLAUDE_INTEGRATION_GUIDE.md)
|