blockmine 1.24.0 → 1.25.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/CHANGELOG.md +32 -0
- package/README.en.md +427 -0
- package/README.md +40 -0
- package/backend/cli.js +1 -1
- package/backend/src/ai/plugin-assistant-system-prompt.md +664 -5
- package/backend/src/api/routes/bots.js +13 -0
- package/backend/src/api/routes/servers.js +14 -2
- package/backend/src/core/BotProcess.js +98 -2
- package/backend/src/core/PluginLoader.js +83 -3
- package/backend/src/core/PluginManager.js +75 -5
- package/backend/src/core/services/BotLifecycleService.js +186 -2
- package/backend/src/server.js +11 -1
- package/frontend/dist/assets/browser-ponyfill-DN7pwmHT.js +2 -0
- package/frontend/dist/assets/index-LSy71uwm.js +11261 -0
- package/frontend/dist/assets/index-SfhKxI4-.css +32 -0
- package/frontend/dist/flags/en.svg +32 -0
- package/frontend/dist/flags/ru.svg +5 -0
- package/frontend/dist/index.html +2 -2
- package/frontend/dist/locales/en/admin.json +100 -0
- package/frontend/dist/locales/en/api-keys.json +58 -0
- package/frontend/dist/locales/en/bots.json +110 -0
- package/frontend/dist/locales/en/common.json +47 -0
- package/frontend/dist/locales/en/configuration.json +22 -0
- package/frontend/dist/locales/en/console.json +10 -0
- package/frontend/dist/locales/en/dashboard.json +85 -0
- package/frontend/dist/locales/en/dialogs.json +70 -0
- package/frontend/dist/locales/en/event-graphs.json +50 -0
- package/frontend/dist/locales/en/graph-store.json +70 -0
- package/frontend/dist/locales/en/login.json +34 -0
- package/frontend/dist/locales/en/management.json +114 -0
- package/frontend/dist/locales/en/minecraft-viewer.json +27 -0
- package/frontend/dist/locales/en/nodes.json +1077 -0
- package/frontend/dist/locales/en/permissions.json +50 -0
- package/frontend/dist/locales/en/plugin-detail.json +49 -0
- package/frontend/dist/locales/en/plugins.json +110 -0
- package/frontend/dist/locales/en/proxies.json +81 -0
- package/frontend/dist/locales/en/servers.json +39 -0
- package/frontend/dist/locales/en/setup.json +17 -0
- package/frontend/dist/locales/en/sidebar.json +27 -0
- package/frontend/dist/locales/en/tasks.json +62 -0
- package/frontend/dist/locales/en/visual-editor.json +219 -0
- package/frontend/dist/locales/en/websocket.json +86 -0
- package/frontend/dist/locales/ru/admin.json +100 -0
- package/frontend/dist/locales/ru/api-keys.json +58 -0
- package/frontend/dist/locales/ru/bots.json +110 -0
- package/frontend/dist/locales/ru/common.json +49 -0
- package/frontend/dist/locales/ru/configuration.json +22 -0
- package/frontend/dist/locales/ru/console.json +10 -0
- package/frontend/dist/locales/ru/dashboard.json +85 -0
- package/frontend/dist/locales/ru/dialogs.json +70 -0
- package/frontend/dist/locales/ru/event-graphs.json +50 -0
- package/frontend/dist/locales/ru/graph-store.json +70 -0
- package/frontend/dist/locales/ru/login.json +34 -0
- package/frontend/dist/locales/ru/management.json +114 -0
- package/frontend/dist/locales/ru/minecraft-viewer.json +27 -0
- package/frontend/dist/locales/ru/nodes.json +1077 -0
- package/frontend/dist/locales/ru/permissions.json +50 -0
- package/frontend/dist/locales/ru/plugin-detail.json +49 -0
- package/frontend/dist/locales/ru/plugins.json +110 -0
- package/frontend/dist/locales/ru/proxies.json +81 -0
- package/frontend/dist/locales/ru/servers.json +39 -0
- package/frontend/dist/locales/ru/setup.json +17 -0
- package/frontend/dist/locales/ru/sidebar.json +27 -0
- package/frontend/dist/locales/ru/tasks.json +62 -0
- package/frontend/dist/locales/ru/visual-editor.json +221 -0
- package/frontend/dist/locales/ru/websocket.json +86 -0
- package/frontend/dist/monacoeditorwork/css.worker.bundle.js +7 -7
- package/frontend/dist/monacoeditorwork/html.worker.bundle.js +7 -7
- package/frontend/dist/monacoeditorwork/json.worker.bundle.js +7 -7
- package/frontend/dist/monacoeditorwork/ts.worker.bundle.js +3 -3
- package/frontend/package.json +4 -0
- package/package.json +1 -1
- package/screen/3dviewer.png +0 -0
- package/screen/console.png +0 -0
- package/screen/dashboard.png +0 -0
- package/screen/graph_collabe.png +0 -0
- package/screen/graph_live_debug.png +0 -0
- package/screen/language_selector.png +0 -0
- package/screen/management_command.png +0 -0
- package/screen/node_debug_trace.png +0 -0
- package/screen/plugin_/320/276/320/261/320/267/320/276/321/200.png +0 -0
- package/screen/websocket.png +0 -0
- package/screen//320/275/320/260/321/201/321/202/321/200/320/276/320/271/320/272/320/270_/320/276/321/202/320/264/320/265/320/273/321/214/320/275/321/213/321/205_/320/272/320/276/320/274/320/260/320/275/320/264_/320/272/320/260/320/266/320/264/321/203_/320/272/320/276/320/274/320/260/320/275/320/273/320/264/321/203_/320/274/320/276/320/266/320/275/320/276_/320/275/320/260/321/201/321/202/321/200/320/260/320/270/320/262/320/260/321/202/321/214.png +0 -0
- package/screen//320/277/320/273/320/260/320/275/320/270/321/200/320/276/320/262/321/211/320/270/320/272_/320/274/320/276/320/266/320/275/320/276_/320/267/320/260/320/264/320/260/320/262/320/260/321/202/321/214_/320/264/320/265/320/271/321/201/321/202/320/262/320/270/321/217_/320/277/320/276_/320/262/321/200/320/265/320/274/320/265/320/275/320/270.png +0 -0
- package/.claude/agents/README.md +0 -469
- package/.claude/agents/auth-route-debugger.md +0 -118
- package/.claude/agents/auth-route-tester.md +0 -93
- package/.claude/agents/auto-error-resolver.md +0 -97
- package/.claude/agents/build-optimizer.md +0 -236
- package/.claude/agents/code-architect.md +0 -34
- package/.claude/agents/code-architecture-reviewer.md +0 -83
- package/.claude/agents/code-explorer.md +0 -51
- package/.claude/agents/code-refactor-master.md +0 -94
- package/.claude/agents/code-reviewer.md +0 -46
- package/.claude/agents/cost-optimizer.md +0 -134
- package/.claude/agents/deployment-orchestrator.md +0 -113
- package/.claude/agents/documentation-architect.md +0 -82
- package/.claude/agents/frontend-error-fixer.md +0 -77
- package/.claude/agents/iac-code-generator.md +0 -71
- package/.claude/agents/incident-responder.md +0 -346
- package/.claude/agents/infrastructure-architect.md +0 -31
- package/.claude/agents/kubernetes-specialist.md +0 -56
- package/.claude/agents/migration-planner.md +0 -181
- package/.claude/agents/network-architect.md +0 -196
- package/.claude/agents/plan-reviewer.md +0 -52
- package/.claude/agents/refactor-planner.md +0 -63
- package/.claude/agents/security-scanner.md +0 -102
- package/.claude/agents/web-research-specialist.md +0 -78
- package/.claude/commands/cost-analysis.md +0 -315
- package/.claude/commands/dev-docs-update.md +0 -55
- package/.claude/commands/dev-docs.md +0 -51
- package/.claude/commands/feature-dev.md +0 -125
- package/.claude/commands/incident-debug.md +0 -247
- package/.claude/commands/infra-plan.md +0 -81
- package/.claude/commands/migration-plan.md +0 -478
- package/.claude/commands/route-research-for-testing.md +0 -37
- package/.claude/commands/security-review.md +0 -66
- package/.claude/hooks/CONFIG.md +0 -448
- package/.claude/hooks/README.md +0 -163
- package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +0 -226
- package/.claude/hooks/WINDOWS_HOOKS_README.md +0 -151
- package/.claude/hooks/add-skill-activation-banners.ts +0 -132
- package/.claude/hooks/comprehensive-skill-test.ts +0 -1315
- package/.claude/hooks/error-handling-reminder.sh +0 -12
- package/.claude/hooks/error-handling-reminder.ts +0 -222
- package/.claude/hooks/k8s-manifest-validator.sh +0 -56
- package/.claude/hooks/package-lock.json +0 -556
- package/.claude/hooks/package.json +0 -16
- package/.claude/hooks/post-tool-use-tracker.ps1 +0 -174
- package/.claude/hooks/post-tool-use-tracker.sh +0 -183
- package/.claude/hooks/security-policy-check.sh +0 -247
- package/.claude/hooks/skill-activation-prompt.ps1 +0 -10
- package/.claude/hooks/skill-activation-prompt.sh +0 -10
- package/.claude/hooks/skill-activation-prompt.ts +0 -141
- package/.claude/hooks/stop-build-check-enhanced.sh +0 -130
- package/.claude/hooks/terraform-validator.sh +0 -53
- package/.claude/hooks/test-input.json +0 -7
- package/.claude/hooks/test-skill-activation.ts +0 -427
- package/.claude/hooks/trigger-build-resolver.sh +0 -79
- package/.claude/hooks/tsc-check.sh +0 -173
- package/.claude/hooks/tsconfig.json +0 -19
- package/.claude/settings.json +0 -59
- package/.claude/settings.local.json +0 -67
- package/.claude/skills/README.md +0 -507
- package/.claude/skills/api-engineering/SKILL.md +0 -63
- package/.claude/skills/api-engineering/resources/api-versioning.md +0 -88
- package/.claude/skills/api-engineering/resources/graphql-patterns.md +0 -106
- package/.claude/skills/api-engineering/resources/rate-limiting.md +0 -118
- package/.claude/skills/api-engineering/resources/rest-api-design.md +0 -105
- package/.claude/skills/backend-dev-guidelines/SKILL.md +0 -306
- package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +0 -451
- package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +0 -307
- package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +0 -638
- package/.claude/skills/backend-dev-guidelines/resources/configuration.md +0 -275
- package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +0 -224
- package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +0 -213
- package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +0 -756
- package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +0 -336
- package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +0 -789
- package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +0 -235
- package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +0 -754
- package/.claude/skills/budget-and-cost-management/SKILL.md +0 -850
- package/.claude/skills/build-engineering/SKILL.md +0 -431
- package/.claude/skills/build-engineering/resources/artifact-repositories.md +0 -72
- package/.claude/skills/build-engineering/resources/build-caching.md +0 -96
- package/.claude/skills/build-engineering/resources/build-pipelines.md +0 -105
- package/.claude/skills/build-engineering/resources/build-security.md +0 -95
- package/.claude/skills/build-engineering/resources/build-systems.md +0 -389
- package/.claude/skills/build-engineering/resources/compilation-optimization.md +0 -201
- package/.claude/skills/build-engineering/resources/dependency-management.md +0 -73
- package/.claude/skills/build-engineering/resources/monorepo-builds.md +0 -110
- package/.claude/skills/build-engineering/resources/performance-optimization.md +0 -113
- package/.claude/skills/build-engineering/resources/reproducible-builds.md +0 -82
- package/.claude/skills/cloud-engineering/SKILL.md +0 -675
- package/.claude/skills/cloud-engineering/resources/aws-patterns.md +0 -742
- package/.claude/skills/cloud-engineering/resources/azure-patterns.md +0 -714
- package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +0 -987
- package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +0 -757
- package/.claude/skills/cloud-engineering/resources/cloud-networking.md +0 -1058
- package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +0 -1530
- package/.claude/skills/cloud-engineering/resources/cloud-security.md +0 -990
- package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +0 -758
- package/.claude/skills/cloud-engineering/resources/migration-strategies.md +0 -820
- package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +0 -670
- package/.claude/skills/cloud-engineering/resources/oci-patterns.md +0 -1198
- package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +0 -795
- package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +0 -966
- package/.claude/skills/cybersecurity/SKILL.md +0 -409
- package/.claude/skills/cybersecurity/resources/security-architecture.md +0 -266
- package/.claude/skills/database-engineering/SKILL.md +0 -61
- package/.claude/skills/database-engineering/resources/backup-and-recovery.md +0 -72
- package/.claude/skills/database-engineering/resources/database-replication.md +0 -63
- package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +0 -70
- package/.claude/skills/database-engineering/resources/query-optimization.md +0 -68
- package/.claude/skills/devsecops/SKILL.md +0 -374
- package/.claude/skills/devsecops/resources/ci-cd-security.md +0 -204
- package/.claude/skills/devsecops/resources/compliance-automation.md +0 -530
- package/.claude/skills/devsecops/resources/compliance-frameworks.md +0 -2322
- package/.claude/skills/devsecops/resources/container-security.md +0 -915
- package/.claude/skills/devsecops/resources/cspm-integration.md +0 -1440
- package/.claude/skills/devsecops/resources/policy-enforcement.md +0 -619
- package/.claude/skills/devsecops/resources/secrets-management.md +0 -755
- package/.claude/skills/devsecops/resources/security-monitoring.md +0 -146
- package/.claude/skills/devsecops/resources/security-scanning.md +0 -887
- package/.claude/skills/devsecops/resources/security-testing.md +0 -203
- package/.claude/skills/devsecops/resources/supply-chain-security.md +0 -518
- package/.claude/skills/devsecops/resources/vulnerability-management.md +0 -481
- package/.claude/skills/devsecops/resources/zero-trust-architecture.md +0 -177
- package/.claude/skills/documentation-as-code/SKILL.md +0 -323
- package/.claude/skills/documentation-as-code/resources/api-documentation.md +0 -90
- package/.claude/skills/documentation-as-code/resources/changelog-management.md +0 -79
- package/.claude/skills/documentation-as-code/resources/diagram-generation.md +0 -44
- package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +0 -99
- package/.claude/skills/documentation-as-code/resources/documentation-automation.md +0 -68
- package/.claude/skills/documentation-as-code/resources/documentation-sites.md +0 -79
- package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +0 -162
- package/.claude/skills/documentation-as-code/resources/openapi-specification.md +0 -77
- package/.claude/skills/documentation-as-code/resources/readme-engineering.md +0 -60
- package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +0 -202
- package/.claude/skills/engineering-management/SKILL.md +0 -356
- package/.claude/skills/engineering-management/resources/career-ladders.md +0 -609
- package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +0 -555
- package/.claude/skills/engineering-management/resources/one-on-one-guides.md +0 -609
- package/.claude/skills/engineering-management/resources/resource-planning.md +0 -557
- package/.claude/skills/engineering-management/resources/team-organization-patterns.md +0 -491
- package/.claude/skills/engineering-management/resources/technical-interviews.md +0 -474
- package/.claude/skills/engineering-operations-management/SKILL.md +0 -817
- package/.claude/skills/error-tracking/SKILL.md +0 -379
- package/.claude/skills/frontend-design/SKILL.md +0 -42
- package/.claude/skills/frontend-dev-guidelines/SKILL.md +0 -403
- package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +0 -331
- package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +0 -872
- package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +0 -502
- package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +0 -767
- package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +0 -502
- package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +0 -501
- package/.claude/skills/frontend-dev-guidelines/resources/performance.md +0 -406
- package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +0 -364
- package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +0 -428
- package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +0 -418
- package/.claude/skills/general-it-engineering/SKILL.md +0 -393
- package/.claude/skills/general-it-engineering/resources/asset-management.md +0 -712
- package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +0 -817
- package/.claude/skills/general-it-engineering/resources/business-continuity.md +0 -786
- package/.claude/skills/general-it-engineering/resources/change-management.md +0 -715
- package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +0 -729
- package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +0 -738
- package/.claude/skills/general-it-engineering/resources/incident-service-management.md +0 -834
- package/.claude/skills/general-it-engineering/resources/it-governance.md +0 -753
- package/.claude/skills/general-it-engineering/resources/itil-framework.md +0 -503
- package/.claude/skills/general-it-engineering/resources/service-management.md +0 -669
- package/.claude/skills/infrastructure-architecture/SKILL.md +0 -328
- package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +0 -505
- package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +0 -528
- package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +0 -453
- package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +0 -773
- package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +0 -499
- package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +0 -501
- package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +0 -535
- package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +0 -512
- package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +0 -608
- package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +0 -562
- package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +0 -538
- package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +0 -489
- package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +0 -1000
- package/.claude/skills/infrastructure-strategy/SKILL.md +0 -924
- package/.claude/skills/network-engineering/SKILL.md +0 -385
- package/.claude/skills/network-engineering/resources/dns-management.md +0 -738
- package/.claude/skills/network-engineering/resources/load-balancing.md +0 -820
- package/.claude/skills/network-engineering/resources/network-architecture.md +0 -546
- package/.claude/skills/network-engineering/resources/network-security.md +0 -921
- package/.claude/skills/network-engineering/resources/network-troubleshooting.md +0 -749
- package/.claude/skills/network-engineering/resources/routing-switching.md +0 -373
- package/.claude/skills/network-engineering/resources/sdn-networking.md +0 -695
- package/.claude/skills/network-engineering/resources/service-mesh-networking.md +0 -777
- package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +0 -444
- package/.claude/skills/network-engineering/resources/vpn-connectivity.md +0 -672
- package/.claude/skills/node-development/SKILL.md +0 -317
- package/.claude/skills/observability-engineering/SKILL.md +0 -101
- package/.claude/skills/observability-engineering/resources/apm-tools.md +0 -97
- package/.claude/skills/observability-engineering/resources/correlation-strategies.md +0 -87
- package/.claude/skills/observability-engineering/resources/distributed-tracing.md +0 -98
- package/.claude/skills/observability-engineering/resources/logs-aggregation.md +0 -118
- package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +0 -141
- package/.claude/skills/observability-engineering/resources/opentelemetry.md +0 -110
- package/.claude/skills/platform-engineering/SKILL.md +0 -555
- package/.claude/skills/platform-engineering/resources/architecture-overview.md +0 -600
- package/.claude/skills/platform-engineering/resources/container-orchestration.md +0 -916
- package/.claude/skills/platform-engineering/resources/cost-optimization.md +0 -634
- package/.claude/skills/platform-engineering/resources/developer-platforms.md +0 -670
- package/.claude/skills/platform-engineering/resources/gitops-automation.md +0 -650
- package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +0 -778
- package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +0 -708
- package/.claude/skills/platform-engineering/resources/multi-tenancy.md +0 -602
- package/.claude/skills/platform-engineering/resources/platform-security.md +0 -711
- package/.claude/skills/platform-engineering/resources/resource-management.md +0 -592
- package/.claude/skills/platform-engineering/resources/service-mesh.md +0 -628
- package/.claude/skills/release-engineering/SKILL.md +0 -393
- package/.claude/skills/release-engineering/resources/artifact-management.md +0 -108
- package/.claude/skills/release-engineering/resources/build-optimization.md +0 -84
- package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +0 -411
- package/.claude/skills/release-engineering/resources/deployment-strategies.md +0 -197
- package/.claude/skills/release-engineering/resources/pipeline-security.md +0 -62
- package/.claude/skills/release-engineering/resources/progressive-delivery.md +0 -83
- package/.claude/skills/release-engineering/resources/release-automation.md +0 -68
- package/.claude/skills/release-engineering/resources/release-orchestration.md +0 -77
- package/.claude/skills/release-engineering/resources/rollback-strategies.md +0 -66
- package/.claude/skills/release-engineering/resources/versioning-strategies.md +0 -59
- package/.claude/skills/route-tester/SKILL.md +0 -392
- package/.claude/skills/skill-developer/ADVANCED.md +0 -197
- package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +0 -306
- package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +0 -152
- package/.claude/skills/skill-developer/SKILL.md +0 -430
- package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +0 -315
- package/.claude/skills/skill-developer/TRIGGER_TYPES.md +0 -305
- package/.claude/skills/skill-developer/TROUBLESHOOTING.md +0 -514
- package/.claude/skills/skill-rules.json +0 -2989
- package/.claude/skills/sre/SKILL.md +0 -464
- package/.claude/skills/sre/resources/alerting-best-practices.md +0 -282
- package/.claude/skills/sre/resources/capacity-planning.md +0 -226
- package/.claude/skills/sre/resources/chaos-engineering.md +0 -193
- package/.claude/skills/sre/resources/disaster-recovery.md +0 -232
- package/.claude/skills/sre/resources/incident-management.md +0 -436
- package/.claude/skills/sre/resources/observability-stack.md +0 -240
- package/.claude/skills/sre/resources/on-call-runbooks.md +0 -167
- package/.claude/skills/sre/resources/performance-optimization.md +0 -108
- package/.claude/skills/sre/resources/reliability-patterns.md +0 -183
- package/.claude/skills/sre/resources/slo-sli-sla.md +0 -464
- package/.claude/skills/sre/resources/toil-reduction.md +0 -145
- package/.claude/skills/systems-engineering/SKILL.md +0 -648
- package/.claude/skills/systems-engineering/resources/automation-patterns.md +0 -771
- package/.claude/skills/systems-engineering/resources/configuration-management.md +0 -998
- package/.claude/skills/systems-engineering/resources/linux-administration.md +0 -672
- package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +0 -982
- package/.claude/skills/systems-engineering/resources/performance-tuning.md +0 -871
- package/.claude/skills/systems-engineering/resources/powershell-scripting.md +0 -482
- package/.claude/skills/systems-engineering/resources/security-hardening.md +0 -739
- package/.claude/skills/systems-engineering/resources/shell-scripting.md +0 -915
- package/.claude/skills/systems-engineering/resources/storage-management.md +0 -628
- package/.claude/skills/systems-engineering/resources/system-monitoring.md +0 -787
- package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +0 -753
- package/.claude/skills/systems-engineering/resources/windows-administration.md +0 -738
- package/.claude/skills/technical-leadership/SKILL.md +0 -728
- package/backend/docs/SECRETS_DOCUMENTATION.md +0 -327
- package/frontend/dist/assets/index-BC-NbKXi.css +0 -32
- package/frontend/dist/assets/index-DqJXZMHY.js +0 -11266
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
# PowerShell Post-tool-use hook that tracks edited files and their repos
|
|
2
|
-
# Windows users: Use this instead of post-tool-use-tracker.sh
|
|
3
|
-
|
|
4
|
-
$ErrorActionPreference = "Stop"
|
|
5
|
-
|
|
6
|
-
# Read tool information from stdin
|
|
7
|
-
$toolInfo = $input | ConvertFrom-Json
|
|
8
|
-
|
|
9
|
-
# Extract relevant data
|
|
10
|
-
$toolName = $toolInfo.tool_name
|
|
11
|
-
$filePath = $toolInfo.tool_input.file_path
|
|
12
|
-
$sessionId = if ($toolInfo.session_id) { $toolInfo.session_id } else { "default" }
|
|
13
|
-
|
|
14
|
-
# Skip if not an edit tool or no file path
|
|
15
|
-
if ($toolName -notmatch '^(Edit|MultiEdit|Write)$' -or [string]::IsNullOrEmpty($filePath)) {
|
|
16
|
-
exit 0
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
# Skip markdown files
|
|
20
|
-
if ($filePath -match '\.(md|markdown)$') {
|
|
21
|
-
exit 0
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
# Create cache directory in project
|
|
25
|
-
$cacheDir = Join-Path $env:CLAUDE_PROJECT_DIR ".claude\tsc-cache\$sessionId"
|
|
26
|
-
New-Item -ItemType Directory -Force -Path $cacheDir | Out-Null
|
|
27
|
-
|
|
28
|
-
# Function to detect repo from file path
|
|
29
|
-
function Detect-Repo {
|
|
30
|
-
param([string]$file)
|
|
31
|
-
|
|
32
|
-
$projectRoot = $env:CLAUDE_PROJECT_DIR
|
|
33
|
-
$relativePath = $file.Replace("$projectRoot\", "").Replace("$projectRoot/", "")
|
|
34
|
-
|
|
35
|
-
# Extract first directory component
|
|
36
|
-
$firstDir = $relativePath.Split('\')[0].Split('/')[0]
|
|
37
|
-
|
|
38
|
-
switch -Regex ($firstDir) {
|
|
39
|
-
# Frontend variations
|
|
40
|
-
'^(frontend|client|web|app|ui)$' { return $firstDir }
|
|
41
|
-
|
|
42
|
-
# Backend variations
|
|
43
|
-
'^(backend|server|api|src|services)$' { return $firstDir }
|
|
44
|
-
|
|
45
|
-
# Database
|
|
46
|
-
'^(database|prisma|migrations)$' { return $firstDir }
|
|
47
|
-
|
|
48
|
-
# Package/monorepo structure
|
|
49
|
-
'^packages$' {
|
|
50
|
-
$parts = $relativePath.Split('\')[0..1]
|
|
51
|
-
if ($parts.Length -ge 2) {
|
|
52
|
-
return "packages\$($parts[1])"
|
|
53
|
-
}
|
|
54
|
-
return $firstDir
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
# Examples directory
|
|
58
|
-
'^examples$' {
|
|
59
|
-
$parts = $relativePath.Split('\')[0..1]
|
|
60
|
-
if ($parts.Length -ge 2) {
|
|
61
|
-
return "examples\$($parts[1])"
|
|
62
|
-
}
|
|
63
|
-
return $firstDir
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
default {
|
|
67
|
-
# Check if it's a source file in root
|
|
68
|
-
if ($relativePath -notmatch '[\\/]') {
|
|
69
|
-
return "root"
|
|
70
|
-
}
|
|
71
|
-
return "unknown"
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
# Function to get build command for repo
|
|
77
|
-
function Get-BuildCommand {
|
|
78
|
-
param([string]$repo)
|
|
79
|
-
|
|
80
|
-
$projectRoot = $env:CLAUDE_PROJECT_DIR
|
|
81
|
-
$repoPath = Join-Path $projectRoot $repo
|
|
82
|
-
$packageJson = Join-Path $repoPath "package.json"
|
|
83
|
-
|
|
84
|
-
# Check if package.json exists and has a build script
|
|
85
|
-
if (Test-Path $packageJson) {
|
|
86
|
-
$packageContent = Get-Content $packageJson -Raw
|
|
87
|
-
if ($packageContent -match '"build"') {
|
|
88
|
-
# Detect package manager (prefer pnpm, then npm, then yarn)
|
|
89
|
-
if (Test-Path (Join-Path $repoPath "pnpm-lock.yaml")) {
|
|
90
|
-
return "cd $repoPath && pnpm build"
|
|
91
|
-
} elseif (Test-Path (Join-Path $repoPath "package-lock.json")) {
|
|
92
|
-
return "cd $repoPath && npm run build"
|
|
93
|
-
} elseif (Test-Path (Join-Path $repoPath "yarn.lock")) {
|
|
94
|
-
return "cd $repoPath && yarn build"
|
|
95
|
-
} else {
|
|
96
|
-
return "cd $repoPath && npm run build"
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
# Special case for database with Prisma
|
|
102
|
-
if ($repo -match '^(database|.*prisma.*)$') {
|
|
103
|
-
if ((Test-Path (Join-Path $repoPath "schema.prisma")) -or
|
|
104
|
-
(Test-Path (Join-Path $repoPath "prisma\schema.prisma"))) {
|
|
105
|
-
return "cd $repoPath && npx prisma generate"
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
return ""
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
# Function to get TSC command for repo
|
|
113
|
-
function Get-TscCommand {
|
|
114
|
-
param([string]$repo)
|
|
115
|
-
|
|
116
|
-
$projectRoot = $env:CLAUDE_PROJECT_DIR
|
|
117
|
-
$repoPath = Join-Path $projectRoot $repo
|
|
118
|
-
$tsconfig = Join-Path $repoPath "tsconfig.json"
|
|
119
|
-
|
|
120
|
-
# Check if tsconfig.json exists
|
|
121
|
-
if (Test-Path $tsconfig) {
|
|
122
|
-
# Check for Vite/React-specific tsconfig
|
|
123
|
-
$tsconfigApp = Join-Path $repoPath "tsconfig.app.json"
|
|
124
|
-
if (Test-Path $tsconfigApp) {
|
|
125
|
-
return "cd $repoPath && npx tsc --project tsconfig.app.json --noEmit"
|
|
126
|
-
} else {
|
|
127
|
-
return "cd $repoPath && npx tsc --noEmit"
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return ""
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
# Detect repo
|
|
135
|
-
$repo = Detect-Repo $filePath
|
|
136
|
-
|
|
137
|
-
# Skip if unknown repo
|
|
138
|
-
if ($repo -eq "unknown" -or [string]::IsNullOrEmpty($repo)) {
|
|
139
|
-
exit 0
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
# Log edited file
|
|
143
|
-
$timestamp = [DateTimeOffset]::UtcNow.ToUnixTimeSeconds()
|
|
144
|
-
Add-Content -Path (Join-Path $cacheDir "edited-files.log") -Value "${timestamp}:${filePath}:${repo}"
|
|
145
|
-
|
|
146
|
-
# Update affected repos list
|
|
147
|
-
$affectedReposFile = Join-Path $cacheDir "affected-repos.txt"
|
|
148
|
-
$existingRepos = if (Test-Path $affectedReposFile) { Get-Content $affectedReposFile } else { @() }
|
|
149
|
-
if ($existingRepos -notcontains $repo) {
|
|
150
|
-
Add-Content -Path $affectedReposFile -Value $repo
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
# Store build commands
|
|
154
|
-
$commandsTmp = Join-Path $cacheDir "commands.txt.tmp"
|
|
155
|
-
$buildCmd = Get-BuildCommand $repo
|
|
156
|
-
$tscCmd = Get-TscCommand $repo
|
|
157
|
-
|
|
158
|
-
if (![string]::IsNullOrEmpty($buildCmd)) {
|
|
159
|
-
Add-Content -Path $commandsTmp -Value "${repo}:build:${buildCmd}"
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
if (![string]::IsNullOrEmpty($tscCmd)) {
|
|
163
|
-
Add-Content -Path $commandsTmp -Value "${repo}:tsc:${tscCmd}"
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
# Remove duplicates from commands
|
|
167
|
-
$commandsFile = Join-Path $cacheDir "commands.txt"
|
|
168
|
-
if (Test-Path $commandsTmp) {
|
|
169
|
-
Get-Content $commandsTmp | Sort-Object -Unique | Set-Content $commandsFile
|
|
170
|
-
Remove-Item $commandsTmp -Force
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
# Exit cleanly
|
|
174
|
-
exit 0
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
set -e
|
|
3
|
-
|
|
4
|
-
# Set default CLAUDE_PROJECT_DIR if not set
|
|
5
|
-
if [ -z "$CLAUDE_PROJECT_DIR" ]; then
|
|
6
|
-
export CLAUDE_PROJECT_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
7
|
-
fi
|
|
8
|
-
|
|
9
|
-
# Post-tool-use hook that tracks edited files and their repos
|
|
10
|
-
# This runs after Edit, MultiEdit, or Write tools complete successfully
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
# Read tool information from stdin
|
|
14
|
-
tool_info=$(cat)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
# Extract relevant data
|
|
18
|
-
tool_name=$(echo "$tool_info" | jq -r '.tool_name // empty')
|
|
19
|
-
file_path=$(echo "$tool_info" | jq -r '.tool_input.file_path // empty')
|
|
20
|
-
session_id=$(echo "$tool_info" | jq -r '.session_id // empty')
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
# Skip if not an edit tool or no file path
|
|
24
|
-
if [[ ! "$tool_name" =~ ^(Edit|MultiEdit|Write)$ ]] || [[ -z "$file_path" ]]; then
|
|
25
|
-
exit 0 # Exit 0 for skip conditions
|
|
26
|
-
fi
|
|
27
|
-
|
|
28
|
-
# Skip markdown files
|
|
29
|
-
if [[ "$file_path" =~ \.(md|markdown)$ ]]; then
|
|
30
|
-
exit 0 # Exit 0 for skip conditions
|
|
31
|
-
fi
|
|
32
|
-
|
|
33
|
-
# Create cache directory in project
|
|
34
|
-
cache_dir="$CLAUDE_PROJECT_DIR/.claude/tsc-cache/${session_id:-default}"
|
|
35
|
-
mkdir -p "$cache_dir"
|
|
36
|
-
|
|
37
|
-
# Function to detect repo from file path
|
|
38
|
-
detect_repo() {
|
|
39
|
-
local file="$1"
|
|
40
|
-
local project_root="$CLAUDE_PROJECT_DIR"
|
|
41
|
-
|
|
42
|
-
# Remove project root from path
|
|
43
|
-
local relative_path="${file#$project_root/}"
|
|
44
|
-
|
|
45
|
-
# Extract first directory component
|
|
46
|
-
local repo=$(echo "$relative_path" | cut -d'/' -f1)
|
|
47
|
-
|
|
48
|
-
# Common project directory patterns
|
|
49
|
-
case "$repo" in
|
|
50
|
-
# Frontend variations
|
|
51
|
-
frontend|client|web|app|ui)
|
|
52
|
-
echo "$repo"
|
|
53
|
-
;;
|
|
54
|
-
# Backend variations
|
|
55
|
-
backend|server|api|src|services)
|
|
56
|
-
echo "$repo"
|
|
57
|
-
;;
|
|
58
|
-
# Database
|
|
59
|
-
database|prisma|migrations)
|
|
60
|
-
echo "$repo"
|
|
61
|
-
;;
|
|
62
|
-
# Package/monorepo structure
|
|
63
|
-
packages)
|
|
64
|
-
# For monorepos, get the package name
|
|
65
|
-
local package=$(echo "$relative_path" | cut -d'/' -f2)
|
|
66
|
-
if [[ -n "$package" ]]; then
|
|
67
|
-
echo "packages/$package"
|
|
68
|
-
else
|
|
69
|
-
echo "$repo"
|
|
70
|
-
fi
|
|
71
|
-
;;
|
|
72
|
-
# Examples directory
|
|
73
|
-
examples)
|
|
74
|
-
local example=$(echo "$relative_path" | cut -d'/' -f2)
|
|
75
|
-
if [[ -n "$example" ]]; then
|
|
76
|
-
echo "examples/$example"
|
|
77
|
-
else
|
|
78
|
-
echo "$repo"
|
|
79
|
-
fi
|
|
80
|
-
;;
|
|
81
|
-
*)
|
|
82
|
-
# Check if it's a source file in root
|
|
83
|
-
if [[ ! "$relative_path" =~ / ]]; then
|
|
84
|
-
echo "root"
|
|
85
|
-
else
|
|
86
|
-
echo "unknown"
|
|
87
|
-
fi
|
|
88
|
-
;;
|
|
89
|
-
esac
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
# Function to get build command for repo
|
|
93
|
-
get_build_command() {
|
|
94
|
-
local repo="$1"
|
|
95
|
-
local project_root="$CLAUDE_PROJECT_DIR"
|
|
96
|
-
local repo_path="$project_root/$repo"
|
|
97
|
-
|
|
98
|
-
# Check if package.json exists and has a build script
|
|
99
|
-
if [[ -f "$repo_path/package.json" ]]; then
|
|
100
|
-
if grep -q '"build"' "$repo_path/package.json" 2>/dev/null; then
|
|
101
|
-
# Detect package manager (prefer pnpm, then npm, then yarn)
|
|
102
|
-
if [[ -f "$repo_path/pnpm-lock.yaml" ]]; then
|
|
103
|
-
echo "cd $repo_path && pnpm build"
|
|
104
|
-
elif [[ -f "$repo_path/package-lock.json" ]]; then
|
|
105
|
-
echo "cd $repo_path && npm run build"
|
|
106
|
-
elif [[ -f "$repo_path/yarn.lock" ]]; then
|
|
107
|
-
echo "cd $repo_path && yarn build"
|
|
108
|
-
else
|
|
109
|
-
echo "cd $repo_path && npm run build"
|
|
110
|
-
fi
|
|
111
|
-
return
|
|
112
|
-
fi
|
|
113
|
-
fi
|
|
114
|
-
|
|
115
|
-
# Special case for database with Prisma
|
|
116
|
-
if [[ "$repo" == "database" ]] || [[ "$repo" =~ prisma ]]; then
|
|
117
|
-
if [[ -f "$repo_path/schema.prisma" ]] || [[ -f "$repo_path/prisma/schema.prisma" ]]; then
|
|
118
|
-
echo "cd $repo_path && npx prisma generate"
|
|
119
|
-
return
|
|
120
|
-
fi
|
|
121
|
-
fi
|
|
122
|
-
|
|
123
|
-
# No build command found
|
|
124
|
-
echo ""
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
# Function to get TSC command for repo
|
|
128
|
-
get_tsc_command() {
|
|
129
|
-
local repo="$1"
|
|
130
|
-
local project_root="$CLAUDE_PROJECT_DIR"
|
|
131
|
-
local repo_path="$project_root/$repo"
|
|
132
|
-
|
|
133
|
-
# Check if tsconfig.json exists
|
|
134
|
-
if [[ -f "$repo_path/tsconfig.json" ]]; then
|
|
135
|
-
# Check for Vite/React-specific tsconfig
|
|
136
|
-
if [[ -f "$repo_path/tsconfig.app.json" ]]; then
|
|
137
|
-
echo "cd $repo_path && npx tsc --project tsconfig.app.json --noEmit"
|
|
138
|
-
else
|
|
139
|
-
echo "cd $repo_path && npx tsc --noEmit"
|
|
140
|
-
fi
|
|
141
|
-
return
|
|
142
|
-
fi
|
|
143
|
-
|
|
144
|
-
# No TypeScript config found
|
|
145
|
-
echo ""
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
# Detect repo
|
|
149
|
-
repo=$(detect_repo "$file_path")
|
|
150
|
-
|
|
151
|
-
# Skip if unknown repo
|
|
152
|
-
if [[ "$repo" == "unknown" ]] || [[ -z "$repo" ]]; then
|
|
153
|
-
exit 0 # Exit 0 for skip conditions
|
|
154
|
-
fi
|
|
155
|
-
|
|
156
|
-
# Log edited file
|
|
157
|
-
echo "$(date +%s):$file_path:$repo" >> "$cache_dir/edited-files.log"
|
|
158
|
-
|
|
159
|
-
# Update affected repos list
|
|
160
|
-
if ! grep -q "^$repo$" "$cache_dir/affected-repos.txt" 2>/dev/null; then
|
|
161
|
-
echo "$repo" >> "$cache_dir/affected-repos.txt"
|
|
162
|
-
fi
|
|
163
|
-
|
|
164
|
-
# Store build commands
|
|
165
|
-
build_cmd=$(get_build_command "$repo")
|
|
166
|
-
tsc_cmd=$(get_tsc_command "$repo")
|
|
167
|
-
|
|
168
|
-
if [[ -n "$build_cmd" ]]; then
|
|
169
|
-
echo "$repo:build:$build_cmd" >> "$cache_dir/commands.txt.tmp"
|
|
170
|
-
fi
|
|
171
|
-
|
|
172
|
-
if [[ -n "$tsc_cmd" ]]; then
|
|
173
|
-
echo "$repo:tsc:$tsc_cmd" >> "$cache_dir/commands.txt.tmp"
|
|
174
|
-
fi
|
|
175
|
-
|
|
176
|
-
# Remove duplicates from commands
|
|
177
|
-
if [[ -f "$cache_dir/commands.txt.tmp" ]]; then
|
|
178
|
-
sort -u "$cache_dir/commands.txt.tmp" > "$cache_dir/commands.txt"
|
|
179
|
-
rm -f "$cache_dir/commands.txt.tmp"
|
|
180
|
-
fi
|
|
181
|
-
|
|
182
|
-
# Exit cleanly
|
|
183
|
-
exit 0
|
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
#
|
|
3
|
-
# Security Policy Check Hook
|
|
4
|
-
# Checks for hardcoded secrets, insecure configurations, and security violations
|
|
5
|
-
# Hook: Stop (runs before tool execution)
|
|
6
|
-
#
|
|
7
|
-
|
|
8
|
-
set -e
|
|
9
|
-
|
|
10
|
-
# Get the directory of this script
|
|
11
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
12
|
-
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
13
|
-
|
|
14
|
-
# Colors for output
|
|
15
|
-
RED='\033[0;31m'
|
|
16
|
-
YELLOW='\033[1;33m'
|
|
17
|
-
GREEN='\033[0;32m'
|
|
18
|
-
NC='\033[0m' # No Color
|
|
19
|
-
|
|
20
|
-
# Exit codes
|
|
21
|
-
EXIT_SUCCESS=0
|
|
22
|
-
EXIT_WARNING=1
|
|
23
|
-
EXIT_ERROR=2
|
|
24
|
-
|
|
25
|
-
# Counters
|
|
26
|
-
CRITICAL_ISSUES=0
|
|
27
|
-
WARNING_ISSUES=0
|
|
28
|
-
|
|
29
|
-
echo "🔒 Running security policy checks..."
|
|
30
|
-
|
|
31
|
-
# Function to check for secrets in files
|
|
32
|
-
check_secrets() {
|
|
33
|
-
local file="$1"
|
|
34
|
-
local issues=0
|
|
35
|
-
|
|
36
|
-
# Skip binary files and known safe files
|
|
37
|
-
if file "$file" | grep -q "text"; then
|
|
38
|
-
# Check for AWS keys
|
|
39
|
-
if grep -qE "AKIA[0-9A-Z]{16}" "$file"; then
|
|
40
|
-
echo -e "${RED}❌ CRITICAL: AWS Access Key found in $file${NC}"
|
|
41
|
-
((CRITICAL_ISSUES++))
|
|
42
|
-
((issues++))
|
|
43
|
-
fi
|
|
44
|
-
|
|
45
|
-
# Check for private keys
|
|
46
|
-
if grep -qE "BEGIN.*PRIVATE KEY" "$file"; then
|
|
47
|
-
echo -e "${RED}❌ CRITICAL: Private key found in $file${NC}"
|
|
48
|
-
((CRITICAL_ISSUES++))
|
|
49
|
-
((issues++))
|
|
50
|
-
fi
|
|
51
|
-
|
|
52
|
-
# Check for password patterns
|
|
53
|
-
if grep -qiE "(password|passwd|pwd)\s*=\s*['\"][^'\"]{3,}" "$file"; then
|
|
54
|
-
echo -e "${RED}❌ CRITICAL: Hardcoded password found in $file${NC}"
|
|
55
|
-
((CRITICAL_ISSUES++))
|
|
56
|
-
((issues++))
|
|
57
|
-
fi
|
|
58
|
-
|
|
59
|
-
# Check for API keys/tokens
|
|
60
|
-
if grep -qiE "(api[_-]?key|api[_-]?token|auth[_-]?token)\s*=\s*['\"][^'\"]{10,}" "$file"; then
|
|
61
|
-
echo -e "${YELLOW}⚠️ WARNING: Possible API key/token in $file${NC}"
|
|
62
|
-
((WARNING_ISSUES++))
|
|
63
|
-
((issues++))
|
|
64
|
-
fi
|
|
65
|
-
|
|
66
|
-
# Check for database connection strings
|
|
67
|
-
if grep -qiE "(mysql|postgresql|mongodb)://[^@]+:[^@]+@" "$file"; then
|
|
68
|
-
echo -e "${RED}❌ CRITICAL: Database connection string with credentials in $file${NC}"
|
|
69
|
-
((CRITICAL_ISSUES++))
|
|
70
|
-
((issues++))
|
|
71
|
-
fi
|
|
72
|
-
|
|
73
|
-
# Check for JWT tokens
|
|
74
|
-
if grep -qE "eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9._-]{10,}" "$file"; then
|
|
75
|
-
echo -e "${YELLOW}⚠️ WARNING: Possible JWT token in $file${NC}"
|
|
76
|
-
((WARNING_ISSUES++))
|
|
77
|
-
((issues++))
|
|
78
|
-
fi
|
|
79
|
-
fi
|
|
80
|
-
|
|
81
|
-
return $issues
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
# Function to check infrastructure files for insecure configurations
|
|
85
|
-
check_infrastructure() {
|
|
86
|
-
local file="$1"
|
|
87
|
-
local issues=0
|
|
88
|
-
|
|
89
|
-
# Terraform files
|
|
90
|
-
if [[ "$file" == *.tf ]]; then
|
|
91
|
-
# Check for public S3 buckets
|
|
92
|
-
if grep -q "acl.*=.*\"public" "$file"; then
|
|
93
|
-
echo -e "${YELLOW}⚠️ WARNING: Public S3 bucket ACL in $file${NC}"
|
|
94
|
-
((WARNING_ISSUES++))
|
|
95
|
-
((issues++))
|
|
96
|
-
fi
|
|
97
|
-
|
|
98
|
-
# Check for open security groups (0.0.0.0/0)
|
|
99
|
-
if grep -q "0.0.0.0/0" "$file" && grep -q "ingress" "$file"; then
|
|
100
|
-
echo -e "${YELLOW}⚠️ WARNING: Security group allows ingress from 0.0.0.0/0 in $file${NC}"
|
|
101
|
-
((WARNING_ISSUES++))
|
|
102
|
-
((issues++))
|
|
103
|
-
fi
|
|
104
|
-
|
|
105
|
-
# Check for disabled encryption
|
|
106
|
-
if grep -qiE "encrypt.*=.*false" "$file"; then
|
|
107
|
-
echo -e "${YELLOW}⚠️ WARNING: Encryption disabled in $file${NC}"
|
|
108
|
-
((WARNING_ISSUES++))
|
|
109
|
-
((issues++))
|
|
110
|
-
fi
|
|
111
|
-
fi
|
|
112
|
-
|
|
113
|
-
# Kubernetes manifests
|
|
114
|
-
if [[ "$file" == *.yaml ]] || [[ "$file" == *.yml ]]; then
|
|
115
|
-
# Check for privileged containers
|
|
116
|
-
if grep -q "privileged: true" "$file"; then
|
|
117
|
-
echo -e "${RED}❌ CRITICAL: Privileged container in $file${NC}"
|
|
118
|
-
((CRITICAL_ISSUES++))
|
|
119
|
-
((issues++))
|
|
120
|
-
fi
|
|
121
|
-
|
|
122
|
-
# Check for hostPath volumes
|
|
123
|
-
if grep -q "hostPath:" "$file"; then
|
|
124
|
-
echo -e "${YELLOW}⚠️ WARNING: hostPath volume in $file${NC}"
|
|
125
|
-
((WARNING_ISSUES++))
|
|
126
|
-
((issues++))
|
|
127
|
-
fi
|
|
128
|
-
|
|
129
|
-
# Check for containers running as root
|
|
130
|
-
if grep -q "runAsUser: 0" "$file"; then
|
|
131
|
-
echo -e "${YELLOW}⚠️ WARNING: Container running as root (UID 0) in $file${NC}"
|
|
132
|
-
((WARNING_ISSUES++))
|
|
133
|
-
((issues++))
|
|
134
|
-
fi
|
|
135
|
-
|
|
136
|
-
# Check for missing resource limits
|
|
137
|
-
if grep -q "kind: Deployment" "$file" && ! grep -q "resources:" "$file"; then
|
|
138
|
-
echo -e "${YELLOW}⚠️ WARNING: Missing resource limits in $file${NC}"
|
|
139
|
-
((WARNING_ISSUES++))
|
|
140
|
-
((issues++))
|
|
141
|
-
fi
|
|
142
|
-
fi
|
|
143
|
-
|
|
144
|
-
# Docker files
|
|
145
|
-
if [[ "$file" == *Dockerfile* ]]; then
|
|
146
|
-
# Check for running as root
|
|
147
|
-
if ! grep -q "USER" "$file"; then
|
|
148
|
-
echo -e "${YELLOW}⚠️ WARNING: Dockerfile doesn't specify USER (will run as root) in $file${NC}"
|
|
149
|
-
((WARNING_ISSUES++))
|
|
150
|
-
((issues++))
|
|
151
|
-
fi
|
|
152
|
-
|
|
153
|
-
# Check for latest tag
|
|
154
|
-
if grep -qE "FROM.*:latest" "$file"; then
|
|
155
|
-
echo -e "${YELLOW}⚠️ WARNING: Using :latest tag in $file${NC}"
|
|
156
|
-
((WARNING_ISSUES++))
|
|
157
|
-
((issues++))
|
|
158
|
-
fi
|
|
159
|
-
fi
|
|
160
|
-
|
|
161
|
-
return $issues
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
# Function to check environment files
|
|
165
|
-
check_env_files() {
|
|
166
|
-
local file="$1"
|
|
167
|
-
|
|
168
|
-
if [[ "$file" == *.env* ]] || [[ "$file" == *credentials* ]]; then
|
|
169
|
-
echo -e "${RED}❌ CRITICAL: Environment/credentials file should not be committed: $file${NC}"
|
|
170
|
-
((CRITICAL_ISSUES++))
|
|
171
|
-
return 1
|
|
172
|
-
fi
|
|
173
|
-
|
|
174
|
-
return 0
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
# Get list of changed files (if in git repo)
|
|
178
|
-
if git rev-parse --git-dir > /dev/null 2>&1; then
|
|
179
|
-
# Check staged files
|
|
180
|
-
CHANGED_FILES=$(git diff --cached --name-only --diff-filter=ACM 2>/dev/null || echo "")
|
|
181
|
-
|
|
182
|
-
if [ -z "$CHANGED_FILES" ]; then
|
|
183
|
-
# If no staged files, check modified files
|
|
184
|
-
CHANGED_FILES=$(git diff --name-only --diff-filter=ACM 2>/dev/null || echo "")
|
|
185
|
-
fi
|
|
186
|
-
|
|
187
|
-
# Check files
|
|
188
|
-
while IFS= read -r file; do
|
|
189
|
-
if [ -f "$file" ]; then
|
|
190
|
-
# Skip certain directories
|
|
191
|
-
if [[ "$file" == *node_modules* ]] || [[ "$file" == *vendor* ]] || [[ "$file" == *.git* ]]; then
|
|
192
|
-
continue
|
|
193
|
-
fi
|
|
194
|
-
|
|
195
|
-
# Run checks
|
|
196
|
-
check_env_files "$file" || true
|
|
197
|
-
check_secrets "$file" || true
|
|
198
|
-
check_infrastructure "$file" || true
|
|
199
|
-
fi
|
|
200
|
-
done <<< "$CHANGED_FILES"
|
|
201
|
-
else
|
|
202
|
-
echo "⚠️ Not a git repository, skipping file checks"
|
|
203
|
-
fi
|
|
204
|
-
|
|
205
|
-
# Report results
|
|
206
|
-
echo ""
|
|
207
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
208
|
-
echo "Security Policy Check Results:"
|
|
209
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
210
|
-
echo -e "Critical Issues: ${RED}$CRITICAL_ISSUES${NC}"
|
|
211
|
-
echo -e "Warnings: ${YELLOW}$WARNING_ISSUES${NC}"
|
|
212
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
213
|
-
|
|
214
|
-
# Exit with appropriate code
|
|
215
|
-
if [ $CRITICAL_ISSUES -gt 0 ]; then
|
|
216
|
-
echo ""
|
|
217
|
-
echo -e "${RED}❌ BLOCKED: Critical security issues found!${NC}"
|
|
218
|
-
echo ""
|
|
219
|
-
echo "Please fix the critical issues before proceeding:"
|
|
220
|
-
echo " • Remove hardcoded secrets (use environment variables or secret managers)"
|
|
221
|
-
echo " • Do not commit .env or credentials files"
|
|
222
|
-
echo " • Do not commit private keys or certificates"
|
|
223
|
-
echo " • Use secure configurations for infrastructure"
|
|
224
|
-
echo ""
|
|
225
|
-
echo "If you believe this is a false positive, you can:"
|
|
226
|
-
echo " 1. Add '# security: ignore' comment on the line"
|
|
227
|
-
echo " 2. Add file to .securityignore"
|
|
228
|
-
echo " 3. Disable this hook temporarily (not recommended)"
|
|
229
|
-
echo ""
|
|
230
|
-
exit $EXIT_ERROR
|
|
231
|
-
elif [ $WARNING_ISSUES -gt 0 ]; then
|
|
232
|
-
echo ""
|
|
233
|
-
echo -e "${YELLOW}⚠️ Security warnings found. Please review.${NC}"
|
|
234
|
-
echo ""
|
|
235
|
-
echo "Consider fixing warnings:"
|
|
236
|
-
echo " • Avoid overly permissive security groups"
|
|
237
|
-
echo " • Enable encryption where applicable"
|
|
238
|
-
echo " • Avoid privileged containers"
|
|
239
|
-
echo " • Run containers as non-root user"
|
|
240
|
-
echo " • Specify resource limits"
|
|
241
|
-
echo ""
|
|
242
|
-
# Allow to proceed with warnings
|
|
243
|
-
exit $EXIT_SUCCESS
|
|
244
|
-
else
|
|
245
|
-
echo -e "${GREEN}✅ No security issues found!${NC}"
|
|
246
|
-
exit $EXIT_SUCCESS
|
|
247
|
-
fi
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# PowerShell wrapper for skill-activation-prompt hook
|
|
2
|
-
# Windows users: Use this instead of skill-activation-prompt.sh
|
|
3
|
-
|
|
4
|
-
$ErrorActionPreference = "Stop"
|
|
5
|
-
|
|
6
|
-
# Change to hooks directory
|
|
7
|
-
Set-Location "$env:CLAUDE_PROJECT_DIR\.claude\hooks"
|
|
8
|
-
|
|
9
|
-
# Pipe stdin to npx tsx
|
|
10
|
-
$input | npx tsx skill-activation-prompt.ts
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
set -e
|
|
3
|
-
|
|
4
|
-
# Set default CLAUDE_PROJECT_DIR if not set
|
|
5
|
-
if [ -z "$CLAUDE_PROJECT_DIR" ]; then
|
|
6
|
-
export CLAUDE_PROJECT_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
7
|
-
fi
|
|
8
|
-
|
|
9
|
-
cd "$CLAUDE_PROJECT_DIR/.claude/hooks"
|
|
10
|
-
cat | npx tsx skill-activation-prompt.ts
|