@jaguilar87/gaia 5.0.0-rc1
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-plugin/marketplace.json +33 -0
- package/.claude-plugin/plugin.json +26 -0
- package/ARCHITECTURE.md +335 -0
- package/CHANGELOG.md +1212 -0
- package/CODE_OF_CONDUCT.md +11 -0
- package/CONTRIBUTING.md +146 -0
- package/INSTALL.md +436 -0
- package/LICENSE +21 -0
- package/README.md +222 -0
- package/SECURITY.md +47 -0
- package/agents/README.md +78 -0
- package/agents/cloud-troubleshooter.md +73 -0
- package/agents/developer.md +65 -0
- package/agents/gaia-operator.md +64 -0
- package/agents/gaia-orchestrator.md +237 -0
- package/agents/gaia-planner.md +53 -0
- package/agents/gaia-system.md +70 -0
- package/agents/gitops-operator.md +61 -0
- package/agents/terraform-architect.md +63 -0
- package/bin/README.md +106 -0
- package/bin/cli/__init__.py +1 -0
- package/bin/cli/approvals.py +740 -0
- package/bin/cli/cleanup.py +562 -0
- package/bin/cli/context.py +283 -0
- package/bin/cli/doctor.py +628 -0
- package/bin/cli/history.py +305 -0
- package/bin/cli/memory.py +464 -0
- package/bin/cli/metrics.py +1068 -0
- package/bin/cli/plans.py +515 -0
- package/bin/cli/status.py +302 -0
- package/bin/cli/update.py +382 -0
- package/bin/gaia +112 -0
- package/bin/gaia-cleanup.js +531 -0
- package/bin/gaia-doctor.js +635 -0
- package/bin/gaia-evidence +126 -0
- package/bin/gaia-history.js +251 -0
- package/bin/gaia-metrics.js +1278 -0
- package/bin/gaia-review.js +269 -0
- package/bin/gaia-scan +44 -0
- package/bin/gaia-scan.py +589 -0
- package/bin/gaia-skills-diagnose.js +929 -0
- package/bin/gaia-status.js +278 -0
- package/bin/gaia-uninstall.js +111 -0
- package/bin/gaia-update.js +816 -0
- package/bin/pre-publish-validate.js +610 -0
- package/bin/python-detect.js +60 -0
- package/commands/README.md +64 -0
- package/commands/gaia.md +37 -0
- package/commands/scan-project.md +67 -0
- package/config/README.md +71 -0
- package/config/cloud/aws.json +134 -0
- package/config/cloud/gcp.json +139 -0
- package/config/context-contracts.json +158 -0
- package/config/crons-schema.md +81 -0
- package/config/git_standards.json +72 -0
- package/config/surface-routing.json +421 -0
- package/config/universal-rules.json +102 -0
- package/dist/gaia-ops/.claude-plugin/plugin.json +24 -0
- package/dist/gaia-ops/README.md +80 -0
- package/dist/gaia-ops/agents/cloud-troubleshooter.md +73 -0
- package/dist/gaia-ops/agents/developer.md +65 -0
- package/dist/gaia-ops/agents/gaia-operator.md +64 -0
- package/dist/gaia-ops/agents/gaia-orchestrator.md +237 -0
- package/dist/gaia-ops/agents/gaia-planner.md +53 -0
- package/dist/gaia-ops/agents/gaia-system.md +70 -0
- package/dist/gaia-ops/agents/gitops-operator.md +61 -0
- package/dist/gaia-ops/agents/terraform-architect.md +63 -0
- package/dist/gaia-ops/commands/gaia.md +37 -0
- package/dist/gaia-ops/config/README.md +71 -0
- package/dist/gaia-ops/config/cloud/aws.json +134 -0
- package/dist/gaia-ops/config/cloud/gcp.json +139 -0
- package/dist/gaia-ops/config/context-contracts.json +158 -0
- package/dist/gaia-ops/config/crons-schema.md +81 -0
- package/dist/gaia-ops/config/git_standards.json +72 -0
- package/dist/gaia-ops/config/surface-routing.json +421 -0
- package/dist/gaia-ops/config/universal-rules.json +102 -0
- package/dist/gaia-ops/hooks/adapters/__init__.py +52 -0
- package/dist/gaia-ops/hooks/adapters/base.py +219 -0
- package/dist/gaia-ops/hooks/adapters/channel.py +17 -0
- package/dist/gaia-ops/hooks/adapters/claude_code.py +1890 -0
- package/dist/gaia-ops/hooks/adapters/types.py +194 -0
- package/dist/gaia-ops/hooks/adapters/utils.py +25 -0
- package/dist/gaia-ops/hooks/hooks.json +163 -0
- package/dist/gaia-ops/hooks/modules/__init__.py +15 -0
- package/dist/gaia-ops/hooks/modules/agents/__init__.py +29 -0
- package/dist/gaia-ops/hooks/modules/agents/contract_validator.py +647 -0
- package/dist/gaia-ops/hooks/modules/agents/response_contract.py +496 -0
- package/dist/gaia-ops/hooks/modules/agents/skill_injection_verifier.py +120 -0
- package/dist/gaia-ops/hooks/modules/agents/state_tracker.py +267 -0
- package/dist/gaia-ops/hooks/modules/agents/task_info_builder.py +74 -0
- package/dist/gaia-ops/hooks/modules/agents/transcript_analyzer.py +458 -0
- package/dist/gaia-ops/hooks/modules/agents/transcript_reader.py +152 -0
- package/dist/gaia-ops/hooks/modules/audit/__init__.py +28 -0
- package/dist/gaia-ops/hooks/modules/audit/event_detector.py +168 -0
- package/dist/gaia-ops/hooks/modules/audit/logger.py +131 -0
- package/dist/gaia-ops/hooks/modules/audit/metrics.py +134 -0
- package/dist/gaia-ops/hooks/modules/audit/workflow_auditor.py +611 -0
- package/dist/gaia-ops/hooks/modules/audit/workflow_recorder.py +296 -0
- package/dist/gaia-ops/hooks/modules/context/__init__.py +11 -0
- package/dist/gaia-ops/hooks/modules/context/agentic_loop_detector.py +165 -0
- package/dist/gaia-ops/hooks/modules/context/anchor_tracker.py +317 -0
- package/dist/gaia-ops/hooks/modules/context/compact_context_builder.py +218 -0
- package/dist/gaia-ops/hooks/modules/context/context_freshness.py +145 -0
- package/dist/gaia-ops/hooks/modules/context/context_injector.py +558 -0
- package/dist/gaia-ops/hooks/modules/context/context_writer.py +530 -0
- package/dist/gaia-ops/hooks/modules/context/contracts_loader.py +161 -0
- package/dist/gaia-ops/hooks/modules/core/__init__.py +40 -0
- package/dist/gaia-ops/hooks/modules/core/hook_entry.py +78 -0
- package/dist/gaia-ops/hooks/modules/core/paths.py +160 -0
- package/dist/gaia-ops/hooks/modules/core/plugin_mode.py +149 -0
- package/dist/gaia-ops/hooks/modules/core/plugin_setup.py +577 -0
- package/dist/gaia-ops/hooks/modules/core/state.py +179 -0
- package/dist/gaia-ops/hooks/modules/core/stdin.py +24 -0
- package/dist/gaia-ops/hooks/modules/events/__init__.py +1 -0
- package/dist/gaia-ops/hooks/modules/events/event_writer.py +210 -0
- package/dist/gaia-ops/hooks/modules/memory/__init__.py +8 -0
- package/dist/gaia-ops/hooks/modules/memory/episode_writer.py +216 -0
- package/dist/gaia-ops/hooks/modules/orchestrator/__init__.py +1 -0
- package/dist/gaia-ops/hooks/modules/orchestrator/delegate_mode.py +122 -0
- package/dist/gaia-ops/hooks/modules/scanning/__init__.py +8 -0
- package/dist/gaia-ops/hooks/modules/scanning/scan_trigger.py +84 -0
- package/dist/gaia-ops/hooks/modules/security/__init__.py +120 -0
- package/dist/gaia-ops/hooks/modules/security/approval_cleanup.py +87 -0
- package/dist/gaia-ops/hooks/modules/security/approval_constants.py +23 -0
- package/dist/gaia-ops/hooks/modules/security/approval_grants.py +1638 -0
- package/dist/gaia-ops/hooks/modules/security/approval_messages.py +71 -0
- package/dist/gaia-ops/hooks/modules/security/approval_scopes.py +222 -0
- package/dist/gaia-ops/hooks/modules/security/blocked_commands.py +595 -0
- package/dist/gaia-ops/hooks/modules/security/blocked_message_formatter.py +87 -0
- package/dist/gaia-ops/hooks/modules/security/command_semantics.py +181 -0
- package/dist/gaia-ops/hooks/modules/security/composition_rules.py +547 -0
- package/dist/gaia-ops/hooks/modules/security/flag_classifiers.py +873 -0
- package/dist/gaia-ops/hooks/modules/security/gitops_validator.py +179 -0
- package/dist/gaia-ops/hooks/modules/security/mutative_verbs.py +1131 -0
- package/dist/gaia-ops/hooks/modules/security/network_hosts.py +481 -0
- package/dist/gaia-ops/hooks/modules/security/prompt_validator.py +40 -0
- package/dist/gaia-ops/hooks/modules/security/shell_unwrapper.py +165 -0
- package/dist/gaia-ops/hooks/modules/security/tiers.py +196 -0
- package/dist/gaia-ops/hooks/modules/session/__init__.py +10 -0
- package/dist/gaia-ops/hooks/modules/session/pending_scanner.py +174 -0
- package/dist/gaia-ops/hooks/modules/session/session_context_writer.py +100 -0
- package/dist/gaia-ops/hooks/modules/session/session_event_injector.py +160 -0
- package/dist/gaia-ops/hooks/modules/session/session_manager.py +31 -0
- package/dist/gaia-ops/hooks/modules/session/session_registry.py +232 -0
- package/dist/gaia-ops/hooks/modules/tools/__init__.py +29 -0
- package/dist/gaia-ops/hooks/modules/tools/bash_validator.py +1008 -0
- package/dist/gaia-ops/hooks/modules/tools/cloud_pipe_validator.py +231 -0
- package/dist/gaia-ops/hooks/modules/tools/hook_response.py +55 -0
- package/dist/gaia-ops/hooks/modules/tools/shell_parser.py +227 -0
- package/dist/gaia-ops/hooks/modules/tools/stage_decomposer.py +315 -0
- package/dist/gaia-ops/hooks/modules/tools/task_validator.py +294 -0
- package/dist/gaia-ops/hooks/modules/validation/__init__.py +23 -0
- package/dist/gaia-ops/hooks/modules/validation/commit_validator.py +380 -0
- package/dist/gaia-ops/hooks/post_compact.py +43 -0
- package/dist/gaia-ops/hooks/post_tool_use.py +54 -0
- package/dist/gaia-ops/hooks/pre_compact.py +60 -0
- package/dist/gaia-ops/hooks/pre_tool_use.py +413 -0
- package/dist/gaia-ops/hooks/session_start.py +81 -0
- package/dist/gaia-ops/hooks/stop_hook.py +82 -0
- package/dist/gaia-ops/hooks/subagent_start.py +71 -0
- package/dist/gaia-ops/hooks/subagent_stop.py +295 -0
- package/dist/gaia-ops/hooks/task_completed.py +70 -0
- package/dist/gaia-ops/hooks/user_prompt_submit.py +246 -0
- package/dist/gaia-ops/settings.json +72 -0
- package/dist/gaia-ops/skills/README.md +154 -0
- package/dist/gaia-ops/skills/agent-protocol/SKILL.md +93 -0
- package/dist/gaia-ops/skills/agent-protocol/examples.md +223 -0
- package/dist/gaia-ops/skills/agent-response/SKILL.md +69 -0
- package/dist/gaia-ops/skills/agentic-loop/SKILL.md +80 -0
- package/dist/gaia-ops/skills/agentic-loop/reference.md +378 -0
- package/dist/gaia-ops/skills/blog-writing/SKILL.md +98 -0
- package/dist/gaia-ops/skills/blog-writing/reference.md +130 -0
- package/dist/gaia-ops/skills/brief-spec/SKILL.md +182 -0
- package/dist/gaia-ops/skills/command-execution/SKILL.md +64 -0
- package/dist/gaia-ops/skills/command-execution/reference.md +83 -0
- package/dist/gaia-ops/skills/context-updater/SKILL.md +87 -0
- package/dist/gaia-ops/skills/context-updater/examples.md +71 -0
- package/dist/gaia-ops/skills/developer-patterns/SKILL.md +50 -0
- package/dist/gaia-ops/skills/developer-patterns/reference.md +112 -0
- package/dist/gaia-ops/skills/execution/SKILL.md +99 -0
- package/dist/gaia-ops/skills/fast-queries/SKILL.md +43 -0
- package/dist/gaia-ops/skills/gaia-compact/SKILL.md +74 -0
- package/dist/gaia-ops/skills/gaia-patterns/SKILL.md +108 -0
- package/dist/gaia-ops/skills/gaia-patterns/reference.md +395 -0
- package/dist/gaia-ops/skills/gaia-planner/SKILL.md +37 -0
- package/dist/gaia-ops/skills/gaia-planner/reference.md +107 -0
- package/dist/gaia-ops/skills/gaia-release/SKILL.md +82 -0
- package/dist/gaia-ops/skills/gaia-release/reference.md +102 -0
- package/dist/gaia-ops/skills/gaia-self-check/SKILL.md +114 -0
- package/dist/gaia-ops/skills/gaia-self-check/reference.md +453 -0
- package/dist/gaia-ops/skills/gaia-verify/SKILL.md +77 -0
- package/dist/gaia-ops/skills/gaia-verify/reference.md +80 -0
- package/dist/gaia-ops/skills/git-conventions/SKILL.md +47 -0
- package/dist/gaia-ops/skills/gitops-patterns/SKILL.md +60 -0
- package/dist/gaia-ops/skills/gitops-patterns/reference.md +183 -0
- package/dist/gaia-ops/skills/gmail-policy/SKILL.md +200 -0
- package/dist/gaia-ops/skills/gmail-policy/reference.md +150 -0
- package/dist/gaia-ops/skills/gmail-triage/SKILL.md +100 -0
- package/dist/gaia-ops/skills/gws-setup/SKILL.md +99 -0
- package/dist/gaia-ops/skills/gws-setup/reference.md +73 -0
- package/dist/gaia-ops/skills/investigation/SKILL.md +100 -0
- package/dist/gaia-ops/skills/memory-curation/SKILL.md +83 -0
- package/dist/gaia-ops/skills/memory-search/SKILL.md +88 -0
- package/dist/gaia-ops/skills/orchestrator-approval/SKILL.md +160 -0
- package/dist/gaia-ops/skills/orchestrator-approval/reference.md +174 -0
- package/dist/gaia-ops/skills/pending-approvals/SKILL.md +72 -0
- package/dist/gaia-ops/skills/pending-approvals/reference.md +214 -0
- package/dist/gaia-ops/skills/readme-writing/SKILL.md +71 -0
- package/dist/gaia-ops/skills/readme-writing/reference.md +188 -0
- package/dist/gaia-ops/skills/reference.md +135 -0
- package/dist/gaia-ops/skills/request-approval/SKILL.md +140 -0
- package/dist/gaia-ops/skills/request-approval/examples.md +140 -0
- package/dist/gaia-ops/skills/request-approval/reference.md +57 -0
- package/dist/gaia-ops/skills/schedule-task/SKILL.md +64 -0
- package/dist/gaia-ops/skills/schedule-task/reference.md +233 -0
- package/dist/gaia-ops/skills/security-tiers/SKILL.md +141 -0
- package/dist/gaia-ops/skills/security-tiers/destructive-commands-reference.md +623 -0
- package/dist/gaia-ops/skills/security-tiers/reference.md +39 -0
- package/dist/gaia-ops/skills/skill-creation/SKILL.md +92 -0
- package/dist/gaia-ops/skills/skill-creation/reference.md +29 -0
- package/dist/gaia-ops/skills/terraform-patterns/SKILL.md +89 -0
- package/dist/gaia-ops/skills/terraform-patterns/reference.md +93 -0
- package/dist/gaia-ops/tools/__init__.py +9 -0
- package/dist/gaia-ops/tools/agentic-loop/decide-status.py +210 -0
- package/dist/gaia-ops/tools/agentic-loop/parse-metric.py +106 -0
- package/dist/gaia-ops/tools/agentic-loop/record-iteration.py +221 -0
- package/dist/gaia-ops/tools/context/README.md +132 -0
- package/dist/gaia-ops/tools/context/__init__.py +42 -0
- package/dist/gaia-ops/tools/context/_paths.py +20 -0
- package/dist/gaia-ops/tools/context/context_provider.py +721 -0
- package/dist/gaia-ops/tools/context/context_section_reader.py +342 -0
- package/dist/gaia-ops/tools/context/deep_merge.py +159 -0
- package/dist/gaia-ops/tools/context/pending_updates.py +760 -0
- package/dist/gaia-ops/tools/context/surface_router.py +278 -0
- package/dist/gaia-ops/tools/fast-queries/README.md +65 -0
- package/dist/gaia-ops/tools/fast-queries/__init__.py +30 -0
- package/dist/gaia-ops/tools/fast-queries/appservices/quicktriage_devops_developer.sh +75 -0
- package/dist/gaia-ops/tools/fast-queries/cloud/aws/quicktriage_aws_troubleshooter.sh +32 -0
- package/dist/gaia-ops/tools/fast-queries/cloud/gcp/quicktriage_gcp_troubleshooter.sh +88 -0
- package/dist/gaia-ops/tools/fast-queries/gitops/quicktriage_gitops_operator.sh +48 -0
- package/dist/gaia-ops/tools/fast-queries/run_triage.sh +59 -0
- package/dist/gaia-ops/tools/fast-queries/terraform/quicktriage_terraform_architect.sh +80 -0
- package/dist/gaia-ops/tools/gaia_simulator/__init__.py +33 -0
- package/dist/gaia-ops/tools/gaia_simulator/cli.py +354 -0
- package/dist/gaia-ops/tools/gaia_simulator/extractor.py +457 -0
- package/dist/gaia-ops/tools/gaia_simulator/reporter.py +258 -0
- package/dist/gaia-ops/tools/gaia_simulator/routing_simulator.py +334 -0
- package/dist/gaia-ops/tools/gaia_simulator/runner.py +539 -0
- package/dist/gaia-ops/tools/gaia_simulator/skills_mapper.py +264 -0
- package/dist/gaia-ops/tools/memory/README.md +0 -0
- package/dist/gaia-ops/tools/memory/__init__.py +20 -0
- package/dist/gaia-ops/tools/memory/backfill_fts5.py +107 -0
- package/dist/gaia-ops/tools/memory/conflict_detector.py +295 -0
- package/dist/gaia-ops/tools/memory/episodic.py +1210 -0
- package/dist/gaia-ops/tools/memory/git_invalidator.py +262 -0
- package/dist/gaia-ops/tools/memory/paths.py +102 -0
- package/dist/gaia-ops/tools/memory/scoring.py +193 -0
- package/dist/gaia-ops/tools/memory/search_store.py +360 -0
- package/dist/gaia-ops/tools/persist_transcript_analysis.py +85 -0
- package/dist/gaia-ops/tools/review/__init__.py +1 -0
- package/dist/gaia-ops/tools/review/review_engine.py +157 -0
- package/dist/gaia-ops/tools/scan/__init__.py +35 -0
- package/dist/gaia-ops/tools/scan/config.py +247 -0
- package/dist/gaia-ops/tools/scan/merge.py +212 -0
- package/dist/gaia-ops/tools/scan/orchestrator.py +549 -0
- package/dist/gaia-ops/tools/scan/registry.py +127 -0
- package/dist/gaia-ops/tools/scan/scanners/__init__.py +18 -0
- package/dist/gaia-ops/tools/scan/scanners/base.py +137 -0
- package/dist/gaia-ops/tools/scan/scanners/environment.py +349 -0
- package/dist/gaia-ops/tools/scan/scanners/git.py +570 -0
- package/dist/gaia-ops/tools/scan/scanners/infrastructure.py +875 -0
- package/dist/gaia-ops/tools/scan/scanners/orchestration.py +600 -0
- package/dist/gaia-ops/tools/scan/scanners/stack.py +1085 -0
- package/dist/gaia-ops/tools/scan/scanners/tools.py +260 -0
- package/dist/gaia-ops/tools/scan/setup.py +686 -0
- package/dist/gaia-ops/tools/scan/tests/__init__.py +1 -0
- package/dist/gaia-ops/tools/scan/tests/conftest.py +796 -0
- package/dist/gaia-ops/tools/scan/tests/test_environment.py +323 -0
- package/dist/gaia-ops/tools/scan/tests/test_git.py +419 -0
- package/dist/gaia-ops/tools/scan/tests/test_infrastructure.py +382 -0
- package/dist/gaia-ops/tools/scan/tests/test_integration.py +920 -0
- package/dist/gaia-ops/tools/scan/tests/test_merge.py +269 -0
- package/dist/gaia-ops/tools/scan/tests/test_orchestration.py +304 -0
- package/dist/gaia-ops/tools/scan/tests/test_stack.py +604 -0
- package/dist/gaia-ops/tools/scan/tests/test_tools.py +349 -0
- package/dist/gaia-ops/tools/scan/ui.py +624 -0
- package/dist/gaia-ops/tools/scan/verify.py +270 -0
- package/dist/gaia-ops/tools/scan/walk.py +118 -0
- package/dist/gaia-ops/tools/scan/workspace.py +85 -0
- package/dist/gaia-ops/tools/validation/README.md +244 -0
- package/dist/gaia-ops/tools/validation/__init__.py +17 -0
- package/dist/gaia-ops/tools/validation/approval_gate.py +321 -0
- package/dist/gaia-ops/tools/validation/validate_skills.py +189 -0
- package/dist/gaia-security/.claude-plugin/plugin.json +24 -0
- package/dist/gaia-security/README.md +90 -0
- package/dist/gaia-security/config/universal-rules.json +102 -0
- package/dist/gaia-security/hooks/adapters/__init__.py +52 -0
- package/dist/gaia-security/hooks/adapters/base.py +219 -0
- package/dist/gaia-security/hooks/adapters/channel.py +17 -0
- package/dist/gaia-security/hooks/adapters/claude_code.py +1890 -0
- package/dist/gaia-security/hooks/adapters/types.py +194 -0
- package/dist/gaia-security/hooks/adapters/utils.py +25 -0
- package/dist/gaia-security/hooks/hooks.json +84 -0
- package/dist/gaia-security/hooks/modules/__init__.py +15 -0
- package/dist/gaia-security/hooks/modules/agents/__init__.py +29 -0
- package/dist/gaia-security/hooks/modules/agents/contract_validator.py +647 -0
- package/dist/gaia-security/hooks/modules/agents/response_contract.py +496 -0
- package/dist/gaia-security/hooks/modules/agents/skill_injection_verifier.py +120 -0
- package/dist/gaia-security/hooks/modules/agents/state_tracker.py +267 -0
- package/dist/gaia-security/hooks/modules/agents/task_info_builder.py +74 -0
- package/dist/gaia-security/hooks/modules/agents/transcript_analyzer.py +458 -0
- package/dist/gaia-security/hooks/modules/agents/transcript_reader.py +152 -0
- package/dist/gaia-security/hooks/modules/audit/__init__.py +28 -0
- package/dist/gaia-security/hooks/modules/audit/event_detector.py +168 -0
- package/dist/gaia-security/hooks/modules/audit/logger.py +131 -0
- package/dist/gaia-security/hooks/modules/audit/metrics.py +134 -0
- package/dist/gaia-security/hooks/modules/audit/workflow_auditor.py +611 -0
- package/dist/gaia-security/hooks/modules/audit/workflow_recorder.py +296 -0
- package/dist/gaia-security/hooks/modules/context/__init__.py +11 -0
- package/dist/gaia-security/hooks/modules/context/agentic_loop_detector.py +165 -0
- package/dist/gaia-security/hooks/modules/context/anchor_tracker.py +317 -0
- package/dist/gaia-security/hooks/modules/context/compact_context_builder.py +218 -0
- package/dist/gaia-security/hooks/modules/context/context_freshness.py +145 -0
- package/dist/gaia-security/hooks/modules/context/context_injector.py +558 -0
- package/dist/gaia-security/hooks/modules/context/context_writer.py +530 -0
- package/dist/gaia-security/hooks/modules/context/contracts_loader.py +161 -0
- package/dist/gaia-security/hooks/modules/core/__init__.py +40 -0
- package/dist/gaia-security/hooks/modules/core/hook_entry.py +78 -0
- package/dist/gaia-security/hooks/modules/core/paths.py +160 -0
- package/dist/gaia-security/hooks/modules/core/plugin_mode.py +149 -0
- package/dist/gaia-security/hooks/modules/core/plugin_setup.py +577 -0
- package/dist/gaia-security/hooks/modules/core/state.py +179 -0
- package/dist/gaia-security/hooks/modules/core/stdin.py +24 -0
- package/dist/gaia-security/hooks/modules/events/__init__.py +1 -0
- package/dist/gaia-security/hooks/modules/events/event_writer.py +210 -0
- package/dist/gaia-security/hooks/modules/memory/__init__.py +8 -0
- package/dist/gaia-security/hooks/modules/memory/episode_writer.py +216 -0
- package/dist/gaia-security/hooks/modules/orchestrator/__init__.py +1 -0
- package/dist/gaia-security/hooks/modules/orchestrator/delegate_mode.py +122 -0
- package/dist/gaia-security/hooks/modules/scanning/__init__.py +8 -0
- package/dist/gaia-security/hooks/modules/scanning/scan_trigger.py +84 -0
- package/dist/gaia-security/hooks/modules/security/__init__.py +120 -0
- package/dist/gaia-security/hooks/modules/security/approval_cleanup.py +87 -0
- package/dist/gaia-security/hooks/modules/security/approval_constants.py +23 -0
- package/dist/gaia-security/hooks/modules/security/approval_grants.py +1638 -0
- package/dist/gaia-security/hooks/modules/security/approval_messages.py +71 -0
- package/dist/gaia-security/hooks/modules/security/approval_scopes.py +222 -0
- package/dist/gaia-security/hooks/modules/security/blocked_commands.py +595 -0
- package/dist/gaia-security/hooks/modules/security/blocked_message_formatter.py +87 -0
- package/dist/gaia-security/hooks/modules/security/command_semantics.py +181 -0
- package/dist/gaia-security/hooks/modules/security/composition_rules.py +547 -0
- package/dist/gaia-security/hooks/modules/security/flag_classifiers.py +873 -0
- package/dist/gaia-security/hooks/modules/security/gitops_validator.py +179 -0
- package/dist/gaia-security/hooks/modules/security/mutative_verbs.py +1131 -0
- package/dist/gaia-security/hooks/modules/security/network_hosts.py +481 -0
- package/dist/gaia-security/hooks/modules/security/prompt_validator.py +40 -0
- package/dist/gaia-security/hooks/modules/security/shell_unwrapper.py +165 -0
- package/dist/gaia-security/hooks/modules/security/tiers.py +196 -0
- package/dist/gaia-security/hooks/modules/session/__init__.py +10 -0
- package/dist/gaia-security/hooks/modules/session/pending_scanner.py +174 -0
- package/dist/gaia-security/hooks/modules/session/session_context_writer.py +100 -0
- package/dist/gaia-security/hooks/modules/session/session_event_injector.py +160 -0
- package/dist/gaia-security/hooks/modules/session/session_manager.py +31 -0
- package/dist/gaia-security/hooks/modules/session/session_registry.py +232 -0
- package/dist/gaia-security/hooks/modules/tools/__init__.py +29 -0
- package/dist/gaia-security/hooks/modules/tools/bash_validator.py +1008 -0
- package/dist/gaia-security/hooks/modules/tools/cloud_pipe_validator.py +231 -0
- package/dist/gaia-security/hooks/modules/tools/hook_response.py +55 -0
- package/dist/gaia-security/hooks/modules/tools/shell_parser.py +227 -0
- package/dist/gaia-security/hooks/modules/tools/stage_decomposer.py +315 -0
- package/dist/gaia-security/hooks/modules/tools/task_validator.py +294 -0
- package/dist/gaia-security/hooks/modules/validation/__init__.py +23 -0
- package/dist/gaia-security/hooks/modules/validation/commit_validator.py +380 -0
- package/dist/gaia-security/hooks/post_tool_use.py +54 -0
- package/dist/gaia-security/hooks/pre_tool_use.py +413 -0
- package/dist/gaia-security/hooks/session_start.py +81 -0
- package/dist/gaia-security/hooks/stop_hook.py +82 -0
- package/dist/gaia-security/hooks/user_prompt_submit.py +246 -0
- package/dist/gaia-security/settings.json +58 -0
- package/git-hooks/commit-msg +41 -0
- package/hooks/README.md +100 -0
- package/hooks/adapters/__init__.py +52 -0
- package/hooks/adapters/base.py +219 -0
- package/hooks/adapters/channel.py +17 -0
- package/hooks/adapters/claude_code.py +1890 -0
- package/hooks/adapters/types.py +194 -0
- package/hooks/adapters/utils.py +25 -0
- package/hooks/elicitation_result.py +179 -0
- package/hooks/hooks.json +84 -0
- package/hooks/modules/README.md +189 -0
- package/hooks/modules/__init__.py +15 -0
- package/hooks/modules/agents/__init__.py +29 -0
- package/hooks/modules/agents/contract_validator.py +647 -0
- package/hooks/modules/agents/response_contract.py +496 -0
- package/hooks/modules/agents/skill_injection_verifier.py +120 -0
- package/hooks/modules/agents/state_tracker.py +267 -0
- package/hooks/modules/agents/task_info_builder.py +74 -0
- package/hooks/modules/agents/transcript_analyzer.py +458 -0
- package/hooks/modules/agents/transcript_reader.py +152 -0
- package/hooks/modules/audit/__init__.py +28 -0
- package/hooks/modules/audit/event_detector.py +168 -0
- package/hooks/modules/audit/logger.py +131 -0
- package/hooks/modules/audit/metrics.py +134 -0
- package/hooks/modules/audit/workflow_auditor.py +611 -0
- package/hooks/modules/audit/workflow_recorder.py +296 -0
- package/hooks/modules/context/__init__.py +11 -0
- package/hooks/modules/context/agentic_loop_detector.py +165 -0
- package/hooks/modules/context/anchor_tracker.py +317 -0
- package/hooks/modules/context/compact_context_builder.py +218 -0
- package/hooks/modules/context/context_freshness.py +145 -0
- package/hooks/modules/context/context_injector.py +558 -0
- package/hooks/modules/context/context_writer.py +530 -0
- package/hooks/modules/context/contracts_loader.py +161 -0
- package/hooks/modules/core/__init__.py +40 -0
- package/hooks/modules/core/hook_entry.py +78 -0
- package/hooks/modules/core/paths.py +160 -0
- package/hooks/modules/core/plugin_mode.py +149 -0
- package/hooks/modules/core/plugin_setup.py +577 -0
- package/hooks/modules/core/state.py +179 -0
- package/hooks/modules/core/stdin.py +24 -0
- package/hooks/modules/events/__init__.py +1 -0
- package/hooks/modules/events/event_writer.py +210 -0
- package/hooks/modules/evidence/__init__.py +34 -0
- package/hooks/modules/evidence/assertions.py +137 -0
- package/hooks/modules/evidence/index_writer.py +57 -0
- package/hooks/modules/evidence/loader.py +126 -0
- package/hooks/modules/evidence/runner.py +241 -0
- package/hooks/modules/memory/__init__.py +8 -0
- package/hooks/modules/memory/episode_writer.py +216 -0
- package/hooks/modules/orchestrator/__init__.py +1 -0
- package/hooks/modules/orchestrator/delegate_mode.py +122 -0
- package/hooks/modules/scanning/__init__.py +8 -0
- package/hooks/modules/scanning/scan_trigger.py +84 -0
- package/hooks/modules/security/__init__.py +120 -0
- package/hooks/modules/security/approval_cleanup.py +87 -0
- package/hooks/modules/security/approval_constants.py +23 -0
- package/hooks/modules/security/approval_grants.py +1638 -0
- package/hooks/modules/security/approval_messages.py +71 -0
- package/hooks/modules/security/approval_scopes.py +222 -0
- package/hooks/modules/security/blocked_commands.py +595 -0
- package/hooks/modules/security/blocked_message_formatter.py +87 -0
- package/hooks/modules/security/command_semantics.py +181 -0
- package/hooks/modules/security/composition_rules.py +547 -0
- package/hooks/modules/security/flag_classifiers.py +873 -0
- package/hooks/modules/security/gitops_validator.py +179 -0
- package/hooks/modules/security/mutative_verbs.py +1131 -0
- package/hooks/modules/security/network_hosts.py +481 -0
- package/hooks/modules/security/prompt_validator.py +40 -0
- package/hooks/modules/security/shell_unwrapper.py +165 -0
- package/hooks/modules/security/tiers.py +196 -0
- package/hooks/modules/session/__init__.py +10 -0
- package/hooks/modules/session/pending_scanner.py +174 -0
- package/hooks/modules/session/session_context_writer.py +100 -0
- package/hooks/modules/session/session_event_injector.py +160 -0
- package/hooks/modules/session/session_manager.py +31 -0
- package/hooks/modules/session/session_registry.py +232 -0
- package/hooks/modules/tools/__init__.py +29 -0
- package/hooks/modules/tools/bash_validator.py +1008 -0
- package/hooks/modules/tools/cloud_pipe_validator.py +231 -0
- package/hooks/modules/tools/hook_response.py +55 -0
- package/hooks/modules/tools/shell_parser.py +227 -0
- package/hooks/modules/tools/stage_decomposer.py +315 -0
- package/hooks/modules/tools/task_validator.py +294 -0
- package/hooks/modules/validation/__init__.py +23 -0
- package/hooks/modules/validation/commit_validator.py +380 -0
- package/hooks/post_compact.py +43 -0
- package/hooks/post_tool_use.py +54 -0
- package/hooks/pre_compact.py +60 -0
- package/hooks/pre_tool_use.py +413 -0
- package/hooks/session_start.py +81 -0
- package/hooks/stop_hook.py +82 -0
- package/hooks/subagent_start.py +71 -0
- package/hooks/subagent_stop.py +295 -0
- package/hooks/task_completed.py +70 -0
- package/hooks/user_prompt_submit.py +246 -0
- package/index.js +83 -0
- package/package.json +99 -0
- package/pyproject.toml +32 -0
- package/skills/README.md +154 -0
- package/skills/agent-protocol/SKILL.md +93 -0
- package/skills/agent-protocol/examples.md +223 -0
- package/skills/agent-response/SKILL.md +69 -0
- package/skills/agentic-loop/SKILL.md +80 -0
- package/skills/agentic-loop/reference.md +378 -0
- package/skills/blog-writing/SKILL.md +98 -0
- package/skills/blog-writing/reference.md +130 -0
- package/skills/brief-spec/SKILL.md +182 -0
- package/skills/command-execution/SKILL.md +64 -0
- package/skills/command-execution/reference.md +83 -0
- package/skills/context-updater/SKILL.md +87 -0
- package/skills/context-updater/examples.md +71 -0
- package/skills/developer-patterns/SKILL.md +50 -0
- package/skills/developer-patterns/reference.md +112 -0
- package/skills/execution/SKILL.md +99 -0
- package/skills/fast-queries/SKILL.md +43 -0
- package/skills/gaia-compact/SKILL.md +74 -0
- package/skills/gaia-patterns/SKILL.md +108 -0
- package/skills/gaia-patterns/reference.md +395 -0
- package/skills/gaia-planner/SKILL.md +37 -0
- package/skills/gaia-planner/reference.md +107 -0
- package/skills/gaia-release/SKILL.md +82 -0
- package/skills/gaia-release/reference.md +102 -0
- package/skills/gaia-self-check/SKILL.md +114 -0
- package/skills/gaia-self-check/reference.md +453 -0
- package/skills/gaia-verify/SKILL.md +77 -0
- package/skills/gaia-verify/reference.md +80 -0
- package/skills/git-conventions/SKILL.md +47 -0
- package/skills/gitops-patterns/SKILL.md +60 -0
- package/skills/gitops-patterns/reference.md +183 -0
- package/skills/gmail-policy/SKILL.md +200 -0
- package/skills/gmail-policy/reference.md +150 -0
- package/skills/gmail-triage/SKILL.md +100 -0
- package/skills/gws-setup/SKILL.md +99 -0
- package/skills/gws-setup/reference.md +73 -0
- package/skills/investigation/SKILL.md +100 -0
- package/skills/memory-curation/SKILL.md +83 -0
- package/skills/memory-search/SKILL.md +88 -0
- package/skills/orchestrator-approval/SKILL.md +160 -0
- package/skills/orchestrator-approval/reference.md +174 -0
- package/skills/pending-approvals/SKILL.md +72 -0
- package/skills/pending-approvals/reference.md +214 -0
- package/skills/readme-writing/SKILL.md +71 -0
- package/skills/readme-writing/reference.md +188 -0
- package/skills/reference.md +135 -0
- package/skills/request-approval/SKILL.md +140 -0
- package/skills/request-approval/examples.md +140 -0
- package/skills/request-approval/reference.md +57 -0
- package/skills/schedule-task/SKILL.md +64 -0
- package/skills/schedule-task/reference.md +233 -0
- package/skills/security-tiers/SKILL.md +141 -0
- package/skills/security-tiers/destructive-commands-reference.md +623 -0
- package/skills/security-tiers/reference.md +39 -0
- package/skills/skill-creation/SKILL.md +92 -0
- package/skills/skill-creation/reference.md +29 -0
- package/skills/terraform-patterns/SKILL.md +89 -0
- package/skills/terraform-patterns/reference.md +93 -0
- package/templates/README.md +69 -0
- package/templates/managed-settings.template.json +43 -0
- package/tools/__init__.py +9 -0
- package/tools/agentic-loop/decide-status.py +210 -0
- package/tools/agentic-loop/parse-metric.py +106 -0
- package/tools/agentic-loop/record-iteration.py +221 -0
- package/tools/context/README.md +132 -0
- package/tools/context/__init__.py +42 -0
- package/tools/context/_paths.py +20 -0
- package/tools/context/context_provider.py +721 -0
- package/tools/context/context_section_reader.py +342 -0
- package/tools/context/deep_merge.py +159 -0
- package/tools/context/pending_updates.py +760 -0
- package/tools/context/surface_router.py +278 -0
- package/tools/fast-queries/README.md +65 -0
- package/tools/fast-queries/__init__.py +30 -0
- package/tools/fast-queries/appservices/quicktriage_devops_developer.sh +75 -0
- package/tools/fast-queries/cloud/aws/quicktriage_aws_troubleshooter.sh +32 -0
- package/tools/fast-queries/cloud/gcp/quicktriage_gcp_troubleshooter.sh +88 -0
- package/tools/fast-queries/gitops/quicktriage_gitops_operator.sh +48 -0
- package/tools/fast-queries/run_triage.sh +59 -0
- package/tools/fast-queries/terraform/quicktriage_terraform_architect.sh +80 -0
- package/tools/gaia_simulator/__init__.py +33 -0
- package/tools/gaia_simulator/cli.py +354 -0
- package/tools/gaia_simulator/extractor.py +457 -0
- package/tools/gaia_simulator/reporter.py +258 -0
- package/tools/gaia_simulator/routing_simulator.py +334 -0
- package/tools/gaia_simulator/runner.py +539 -0
- package/tools/gaia_simulator/skills_mapper.py +264 -0
- package/tools/memory/README.md +0 -0
- package/tools/memory/__init__.py +20 -0
- package/tools/memory/backfill_fts5.py +107 -0
- package/tools/memory/conflict_detector.py +295 -0
- package/tools/memory/episodic.py +1210 -0
- package/tools/memory/git_invalidator.py +262 -0
- package/tools/memory/paths.py +102 -0
- package/tools/memory/scoring.py +193 -0
- package/tools/memory/search_store.py +360 -0
- package/tools/persist_transcript_analysis.py +85 -0
- package/tools/review/__init__.py +1 -0
- package/tools/review/review_engine.py +157 -0
- package/tools/scan/__init__.py +35 -0
- package/tools/scan/config.py +247 -0
- package/tools/scan/merge.py +212 -0
- package/tools/scan/orchestrator.py +549 -0
- package/tools/scan/registry.py +127 -0
- package/tools/scan/scanners/__init__.py +18 -0
- package/tools/scan/scanners/base.py +137 -0
- package/tools/scan/scanners/environment.py +349 -0
- package/tools/scan/scanners/git.py +570 -0
- package/tools/scan/scanners/infrastructure.py +875 -0
- package/tools/scan/scanners/orchestration.py +600 -0
- package/tools/scan/scanners/stack.py +1085 -0
- package/tools/scan/scanners/tools.py +260 -0
- package/tools/scan/setup.py +686 -0
- package/tools/scan/tests/__init__.py +1 -0
- package/tools/scan/tests/conftest.py +796 -0
- package/tools/scan/tests/test_environment.py +323 -0
- package/tools/scan/tests/test_git.py +419 -0
- package/tools/scan/tests/test_infrastructure.py +382 -0
- package/tools/scan/tests/test_integration.py +920 -0
- package/tools/scan/tests/test_merge.py +269 -0
- package/tools/scan/tests/test_orchestration.py +304 -0
- package/tools/scan/tests/test_stack.py +604 -0
- package/tools/scan/tests/test_tools.py +349 -0
- package/tools/scan/ui.py +624 -0
- package/tools/scan/verify.py +270 -0
- package/tools/scan/walk.py +118 -0
- package/tools/scan/workspace.py +85 -0
- package/tools/validation/README.md +244 -0
- package/tools/validation/__init__.py +17 -0
- package/tools/validation/approval_gate.py +321 -0
- package/tools/validation/validate_skills.py +189 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
This project follows the [Contributor Covenant Code of Conduct v2.1](https://www.contributor-covenant.org/version/2/1/code_of_conduct/).
|
|
4
|
+
|
|
5
|
+
Please read the full text at the link above. All contributors, maintainers, and participants are expected to uphold these standards.
|
|
6
|
+
|
|
7
|
+
## Reporting
|
|
8
|
+
|
|
9
|
+
Report unacceptable behavior to jorge.aguilar87@gmail.com.
|
|
10
|
+
|
|
11
|
+
Reports will be reviewed and investigated promptly and fairly.
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Contributing to Gaia
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to Gaia. This guide covers how to set up your development environment, run tests, and submit changes.
|
|
4
|
+
|
|
5
|
+
## Development Setup
|
|
6
|
+
|
|
7
|
+
### Prerequisites
|
|
8
|
+
|
|
9
|
+
- **Node.js** >= 18.0.0
|
|
10
|
+
- **Python** >= 3.9
|
|
11
|
+
- **Git** >= 2.30
|
|
12
|
+
- **Claude Code** (latest version, for end-to-end testing)
|
|
13
|
+
|
|
14
|
+
### Clone and Install
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
git clone https://github.com/metraton/gaia.git
|
|
18
|
+
cd gaia
|
|
19
|
+
npm install
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Python test dependencies:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
pip install pytest
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Running Tests
|
|
29
|
+
|
|
30
|
+
The test suite is organized in layers:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# Layer 1 (fast, deterministic) - run these before every PR
|
|
34
|
+
npm test
|
|
35
|
+
|
|
36
|
+
# Equivalent:
|
|
37
|
+
npm run test:layer1
|
|
38
|
+
|
|
39
|
+
# Layer 2 (LLM evaluation) - requires Claude Code access
|
|
40
|
+
npm run test:layer2
|
|
41
|
+
|
|
42
|
+
# Layer 3 (end-to-end)
|
|
43
|
+
npm run test:layer3
|
|
44
|
+
|
|
45
|
+
# All layers
|
|
46
|
+
npm run test:all
|
|
47
|
+
|
|
48
|
+
# Run pytest directly with stop-on-first-failure
|
|
49
|
+
python -m pytest tests/ -x
|
|
50
|
+
|
|
51
|
+
# Linting
|
|
52
|
+
npm run lint
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Always ensure Layer 1 tests pass before submitting a PR.
|
|
56
|
+
|
|
57
|
+
## Project Structure
|
|
58
|
+
|
|
59
|
+
See [README.md](./README.md) for the full directory tree. Key areas for contributors:
|
|
60
|
+
|
|
61
|
+
| Directory | What it contains |
|
|
62
|
+
|-----------|-----------------|
|
|
63
|
+
| `agents/` | Agent definition files (`.md`) - identity, scope, routing |
|
|
64
|
+
| `skills/` | Skill modules (`SKILL.md` files) - injected procedural knowledge |
|
|
65
|
+
| `hooks/` | Runtime validators (`pre_tool_use.py`, `post_tool_use.py`, `subagent_stop.py`) |
|
|
66
|
+
| `hooks/modules/` | Modular hook components (blocked commands, safe commands, dangerous verbs) |
|
|
67
|
+
| `tools/` | Orchestration tools (context provider, memory, validation) |
|
|
68
|
+
| `config/` | Configuration files (contracts, git standards, rules) |
|
|
69
|
+
| `tests/` | Test suite organized by layer |
|
|
70
|
+
| `bin/` | CLI utilities (`gaia-scan`, `gaia-doctor`, etc.) |
|
|
71
|
+
|
|
72
|
+
## Coding Standards
|
|
73
|
+
|
|
74
|
+
### Python
|
|
75
|
+
|
|
76
|
+
- Follow the existing code style in the repository.
|
|
77
|
+
- Use [ruff](https://github.com/astral-sh/ruff) for linting and formatting.
|
|
78
|
+
- Type hints are encouraged but not strictly required.
|
|
79
|
+
- Keep functions focused and testable.
|
|
80
|
+
|
|
81
|
+
### JavaScript / Node.js
|
|
82
|
+
|
|
83
|
+
- ES modules (`import`/`export`), not CommonJS.
|
|
84
|
+
- Follow the existing patterns in `bin/` and `index.js`.
|
|
85
|
+
|
|
86
|
+
### Commit Messages
|
|
87
|
+
|
|
88
|
+
All commits must follow [Conventional Commits](https://www.conventionalcommits.org/):
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
type(scope): short description
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Allowed types: `feat`, `fix`, `refactor`, `docs`, `test`, `chore`, `ci`, `perf`, `style`, `build`
|
|
95
|
+
|
|
96
|
+
Examples:
|
|
97
|
+
- `feat(hooks): add timeout protection to bash validator`
|
|
98
|
+
- `fix(skills): correct token budget in agent-protocol`
|
|
99
|
+
- `docs(readme): update installation instructions`
|
|
100
|
+
|
|
101
|
+
## PR Process
|
|
102
|
+
|
|
103
|
+
1. **Fork** the repository and create a feature branch from `main`.
|
|
104
|
+
2. **Make your changes** following the coding standards above.
|
|
105
|
+
3. **Write tests** for new functionality. Changes to `hooks/` always need tests.
|
|
106
|
+
4. **Run the test suite**: `npm test` must pass.
|
|
107
|
+
5. **Commit** using Conventional Commits format.
|
|
108
|
+
6. **Open a PR** against `main` with a clear description of what changed and why.
|
|
109
|
+
|
|
110
|
+
PRs are reviewed for correctness, test coverage, and consistency with existing patterns.
|
|
111
|
+
|
|
112
|
+
## Hooks Development
|
|
113
|
+
|
|
114
|
+
The `hooks/` directory contains runtime validators that enforce security and workflow policies in Claude Code. These are critical-path code.
|
|
115
|
+
|
|
116
|
+
- `pre_tool_use.py` - Main entry point; validates every tool call before execution.
|
|
117
|
+
- `post_tool_use.py` - Audit and metrics after tool execution.
|
|
118
|
+
- `hooks/modules/` - Individual validation modules (e.g., `blocked_commands.py`, `mutative_verbs.py`).
|
|
119
|
+
|
|
120
|
+
**Key rules for hook changes:**
|
|
121
|
+
- Every change to a hook module must have a corresponding test in `tests/`.
|
|
122
|
+
- Hook modules must be deterministic -- no network calls, no randomness.
|
|
123
|
+
- Test both the allow and deny paths for any new validation rule.
|
|
124
|
+
|
|
125
|
+
## Skills Development
|
|
126
|
+
|
|
127
|
+
Skills live in `skills/` as directories, each containing a `SKILL.md` file:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
skills/
|
|
131
|
+
skill-name/
|
|
132
|
+
SKILL.md # Main content (injected into agents)
|
|
133
|
+
reference.md # Heavy reference material (read on-demand)
|
|
134
|
+
examples.md # Concrete examples (optional)
|
|
135
|
+
scripts/ # Executable tools (optional)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
- `SKILL.md` must stay under 100 lines (it is injected on every agent call).
|
|
139
|
+
- Heavy content goes in `reference.md` (loaded on-demand).
|
|
140
|
+
- Skills define process; agents define identity. Do not duplicate between them.
|
|
141
|
+
|
|
142
|
+
For detailed guidance, see `skills/skill-creation/SKILL.md`.
|
|
143
|
+
|
|
144
|
+
## Questions?
|
|
145
|
+
|
|
146
|
+
Open an issue on [GitHub](https://github.com/metraton/gaia/issues) or contact the maintainer at jorge.aguilar87@gmail.com.
|
package/INSTALL.md
ADDED
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
# Gaia Installation Guide
|
|
2
|
+
|
|
3
|
+
This guide will help you install and configure Gaia in your project. The process is automatic and takes less than 5 minutes.
|
|
4
|
+
|
|
5
|
+
## ๐ฏ What is Gaia?
|
|
6
|
+
|
|
7
|
+
Gaia is a system of specialized AI agents that automate DevOps tasks. Think of it as having a team of experts (Terraform, Kubernetes, GCP, AWS) working together, coordinated by an intelligent orchestrator.
|
|
8
|
+
|
|
9
|
+
The `gaia-ops` sub-plugin ships the full orchestrator and all agents; `gaia-security` ships security hooks only. Both are distributed via the `@jaguilar87/gaia` npm package.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## ๐ Quick Installation (Recommended)
|
|
14
|
+
|
|
15
|
+
### Option 1: Interactive Installation
|
|
16
|
+
|
|
17
|
+
The easiest way - the installer will guide you step by step:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx gaia-scan
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
It will ask questions like:
|
|
24
|
+
- Where are your GitOps files?
|
|
25
|
+
- Where is your Terraform code?
|
|
26
|
+
- What is your GCP project?
|
|
27
|
+
|
|
28
|
+
### Option 2: Non-Interactive Installation
|
|
29
|
+
|
|
30
|
+
For CI/CD scripts or if you already know the values:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npx gaia-scan --non-interactive \
|
|
34
|
+
--gitops ./gitops \
|
|
35
|
+
--terraform ./terraform \
|
|
36
|
+
--app-services ./app-services \
|
|
37
|
+
--project-id my-gcp-project \
|
|
38
|
+
--cluster my-gke-cluster
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## ๐ How Installation Works
|
|
44
|
+
|
|
45
|
+
### Installation Flow
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
User runs: npx gaia-scan
|
|
49
|
+
โ
|
|
50
|
+
[Detector] scans your project
|
|
51
|
+
โ
|
|
52
|
+
Finds automatically:
|
|
53
|
+
- GitOps directory
|
|
54
|
+
- Terraform directory
|
|
55
|
+
- Apps directory
|
|
56
|
+
โ
|
|
57
|
+
[Installer] asks for missing data:
|
|
58
|
+
- GCP Project ID
|
|
59
|
+
- Region
|
|
60
|
+
- Cluster name
|
|
61
|
+
โ
|
|
62
|
+
[Installer] checks Claude Code
|
|
63
|
+
โ
|
|
64
|
+
Already installed?
|
|
65
|
+
โโโโโโดโโโโโ
|
|
66
|
+
โ โ
|
|
67
|
+
YES NO
|
|
68
|
+
โ โ
|
|
69
|
+
Use Install
|
|
70
|
+
existing new
|
|
71
|
+
โ โ
|
|
72
|
+
โโโโโโฌโโโโโ
|
|
73
|
+
โ
|
|
74
|
+
Creates .claude/ structure
|
|
75
|
+
โ
|
|
76
|
+
Creates symlinks to gaia package:
|
|
77
|
+
.claude/agents โ node_modules/.../agents
|
|
78
|
+
.claude/tools โ node_modules/.../tools
|
|
79
|
+
.claude/hooks โ node_modules/.../hooks
|
|
80
|
+
.claude/commands โ node_modules/.../commands
|
|
81
|
+
.claude/config โ node_modules/.../config
|
|
82
|
+
.claude/skills โ node_modules/.../skills
|
|
83
|
+
.claude/templates โ node_modules/.../templates
|
|
84
|
+
โ
|
|
85
|
+
Generates config files:
|
|
86
|
+
- project-context.json
|
|
87
|
+
- settings.json
|
|
88
|
+
โ
|
|
89
|
+
Validates installation:
|
|
90
|
+
โ
Symlinks correct
|
|
91
|
+
โ
Claude Code available
|
|
92
|
+
โ
Valid configuration
|
|
93
|
+
โ
|
|
94
|
+
Ready! You can use: claude
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Real Installation Example
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
Example: Installation in project with GitOps and Terraform
|
|
101
|
+
|
|
102
|
+
1. User: npx gaia-scan
|
|
103
|
+
โ
|
|
104
|
+
2. Detector finds:
|
|
105
|
+
โ
./gitops (52 YAML files detected)
|
|
106
|
+
โ
./terraform (15 .tf files detected)
|
|
107
|
+
โ ./app-services (not found)
|
|
108
|
+
โ
|
|
109
|
+
3. Installer asks:
|
|
110
|
+
? GCP Project ID: โ my-gcp-project
|
|
111
|
+
? Primary region: โ us-central1
|
|
112
|
+
? Cluster name: โ my-gke-cluster
|
|
113
|
+
โ
|
|
114
|
+
4. Checks Claude Code:
|
|
115
|
+
โ
Claude Code already installed at /usr/local/bin/claude
|
|
116
|
+
โญ๏ธ Skipping reinstall
|
|
117
|
+
โ
|
|
118
|
+
5. Creates structure:
|
|
119
|
+
โ
.claude/ created
|
|
120
|
+
โ
8 symlinks created
|
|
121
|
+
โ
project-context.json created
|
|
122
|
+
โ
settings.json created
|
|
123
|
+
โ
|
|
124
|
+
6. Result:
|
|
125
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
126
|
+
โ
Gaia installed successfully!
|
|
127
|
+
|
|
128
|
+
๐ Documentation available:
|
|
129
|
+
- .claude/agents/README.md
|
|
130
|
+
- .claude/config/README.md
|
|
131
|
+
- .claude/commands/README.md
|
|
132
|
+
|
|
133
|
+
๐ Next steps:
|
|
134
|
+
1. Run: claude
|
|
135
|
+
2. Ask: "Show me GKE clusters"
|
|
136
|
+
3. Or use: /scan-project to detect your project stack
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## โ๏ธ Installation Options
|
|
142
|
+
|
|
143
|
+
### Environment Variables
|
|
144
|
+
|
|
145
|
+
Configure before installing to avoid questions:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# Configure paths
|
|
149
|
+
export CLAUDE_GITOPS_DIR="./gitops"
|
|
150
|
+
export CLAUDE_TERRAFORM_DIR="./terraform"
|
|
151
|
+
export CLAUDE_APP_SERVICES_DIR="./app-services"
|
|
152
|
+
|
|
153
|
+
# Configure project
|
|
154
|
+
export CLAUDE_PROJECT_ID="my-gcp-project"
|
|
155
|
+
export CLAUDE_REGION="us-central1"
|
|
156
|
+
export CLAUDE_CLUSTER_NAME="my-gke-cluster"
|
|
157
|
+
|
|
158
|
+
# Install without questions
|
|
159
|
+
npx gaia-scan --non-interactive
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Complete CLI Options
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
gaia-scan [options]
|
|
166
|
+
|
|
167
|
+
Options:
|
|
168
|
+
--non-interactive Skip prompts, use provided values or defaults
|
|
169
|
+
--gitops <path> GitOps directory path
|
|
170
|
+
--terraform <path> Terraform directory path
|
|
171
|
+
--app-services <path> Applications directory path
|
|
172
|
+
--project-id <id> GCP project ID
|
|
173
|
+
--region <region> Primary region (default: us-central1)
|
|
174
|
+
--cluster <name> Cluster name
|
|
175
|
+
--skip-claude-install Skip Claude Code installation
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## ๐ฆ What Gets Installed?
|
|
181
|
+
|
|
182
|
+
### Created Structure
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
your-project/
|
|
186
|
+
โโโ .claude/ โ New directory
|
|
187
|
+
โ โโโ agents/ (symlink) โ Agent definitions
|
|
188
|
+
โ โโโ skills/ (symlink) โ Skill modules
|
|
189
|
+
โ โโโ tools/ (symlink) โ Orchestration tools
|
|
190
|
+
โ โโโ hooks/ (symlink) โ Security validations
|
|
191
|
+
โ โโโ commands/ (symlink) โ Slash commands
|
|
192
|
+
โ โโโ config/ (symlink) โ Configuration (contracts, rules)
|
|
193
|
+
โ โโโ templates/ (symlink) โ Installation templates
|
|
194
|
+
โ โโโ project-context/ โ Your project context (SSOT)
|
|
195
|
+
โ โโโ logs/ โ Audit logs
|
|
196
|
+
โ โโโ settings.json โ Security configuration
|
|
197
|
+
โโโ node_modules/
|
|
198
|
+
โโโ @jaguilar87/gaia/ โ npm package
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## ๐ Documentation Available After Installation
|
|
204
|
+
|
|
205
|
+
Once installed, you have access to **complete documentation** in each directory:
|
|
206
|
+
|
|
207
|
+
### Directory READMEs
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
.claude/
|
|
211
|
+
โโโ agents/ 6 agents (terraform-architect, gitops-operator, etc.)
|
|
212
|
+
โโโ skills/README.md 20 skill modules
|
|
213
|
+
โโโ commands/README.md Slash commands (gaia-plan, scan-project)
|
|
214
|
+
โโโ config/README.md Contracts, git standards, universal rules
|
|
215
|
+
โโโ hooks/README.md 8 hook scripts (4 primary + 4 event handlers)
|
|
216
|
+
โโโ tools/ Context, memory, validation, review
|
|
217
|
+
โโโ templates/README.md Installation templates
|
|
218
|
+
โโโ bin/README.md CLI utilities
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## โ
Post-Installation
|
|
224
|
+
|
|
225
|
+
### 1. Verify Installation
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
# Check created structure
|
|
229
|
+
ls -la .claude/
|
|
230
|
+
|
|
231
|
+
# Should show symlinks:
|
|
232
|
+
# agents -> ../node_modules/@jaguilar87/gaia/agents
|
|
233
|
+
# tools -> ../node_modules/@jaguilar87/gaia/tools
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### 2. Review Generated Configuration
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
# View project-context.json
|
|
240
|
+
cat .claude/project-context/project-context.json
|
|
241
|
+
|
|
242
|
+
# View settings.json
|
|
243
|
+
cat .claude/settings.json
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### 3. Start Claude Code
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
claude
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### 4. Test the System
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
# In Claude Code, try:
|
|
256
|
+
"Show me GKE clusters"
|
|
257
|
+
"List deployments in production namespace"
|
|
258
|
+
|
|
259
|
+
# Or use slash commands:
|
|
260
|
+
/scan-project
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## ๐ Package Updates
|
|
266
|
+
|
|
267
|
+
### โ ๏ธ Files That Get Overwritten
|
|
268
|
+
|
|
269
|
+
When you update `@jaguilar87/gaia`, these files are **regenerated from templates**:
|
|
270
|
+
|
|
271
|
+
| File | Behavior | Recommended Action |
|
|
272
|
+
|------|----------|-------------------|
|
|
273
|
+
| `.claude/settings.json` | โ ๏ธ **Replaced** from template (source of truth) | Safe |
|
|
274
|
+
| `.claude/project-context/project-context.json` | โ
**Preserved** | Safe |
|
|
275
|
+
| `.claude/logs/` | โ
**Preserved** | Safe |
|
|
276
|
+
| Other `.claude/` files | โ
**Auto-updated via symlinks** | Safe |
|
|
277
|
+
|
|
278
|
+
Orchestrator identity lives in `agents/gaia-orchestrator.md` and is activated via `settings.json: { "agent": "gaia-orchestrator" }` -- no `CLAUDE.md` is generated.
|
|
279
|
+
|
|
280
|
+
### Update Process
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
# 1. Update package
|
|
284
|
+
npm install @jaguilar87/gaia@latest
|
|
285
|
+
|
|
286
|
+
# 2. Postinstall hook automatically:
|
|
287
|
+
# - Replaces settings.json from template
|
|
288
|
+
# - Fixes broken symlinks
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## ๐ ๏ธ Claude Code Management
|
|
294
|
+
|
|
295
|
+
### Avoiding Multiple Installations
|
|
296
|
+
|
|
297
|
+
Gaia **automatically detects** if you already have Claude Code installed and **does NOT reinstall it**.
|
|
298
|
+
|
|
299
|
+
#### Installation Verification
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
# See where Claude Code is installed
|
|
303
|
+
which claude
|
|
304
|
+
|
|
305
|
+
# Should show ONE location:
|
|
306
|
+
# โ
/usr/local/bin/claude (native - recommended)
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
#### If You Have Multiple Installations
|
|
310
|
+
|
|
311
|
+
**Option 1: Automatic Cleanup**
|
|
312
|
+
```bash
|
|
313
|
+
npx gaia-cleanup
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
**Option 2: Manual Cleanup**
|
|
317
|
+
```bash
|
|
318
|
+
# Remove npm global installation (if exists)
|
|
319
|
+
npm -g uninstall @anthropic-ai/claude-code
|
|
320
|
+
|
|
321
|
+
# Verify only one remains
|
|
322
|
+
which claude
|
|
323
|
+
claude --version
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
## ๐ Troubleshooting
|
|
329
|
+
|
|
330
|
+
### Problem: Claude Code Not Found
|
|
331
|
+
|
|
332
|
+
**Solution:**
|
|
333
|
+
```bash
|
|
334
|
+
# Verify installation
|
|
335
|
+
which claude
|
|
336
|
+
|
|
337
|
+
# If not found, install via npm
|
|
338
|
+
npm install -g @anthropic-ai/claude-code
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
### Problem: Multiple Claude Code Installations
|
|
344
|
+
|
|
345
|
+
**Solution:**
|
|
346
|
+
```bash
|
|
347
|
+
# Automatic cleanup
|
|
348
|
+
npx gaia-cleanup
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
---
|
|
352
|
+
|
|
353
|
+
### Problem: Permission Denied on npm global
|
|
354
|
+
|
|
355
|
+
**Solution (recommended):**
|
|
356
|
+
```bash
|
|
357
|
+
mkdir ~/.npm-global
|
|
358
|
+
npm config set prefix '~/.npm-global'
|
|
359
|
+
export PATH=~/.npm-global/bin:$PATH
|
|
360
|
+
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
### Problem: Symlinks Not Created
|
|
366
|
+
|
|
367
|
+
**Solution:**
|
|
368
|
+
```bash
|
|
369
|
+
# Re-run installation
|
|
370
|
+
npx gaia-scan
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
## ๐งน Uninstallation
|
|
376
|
+
|
|
377
|
+
### Complete Uninstallation
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
# Interactive script (recommended)
|
|
381
|
+
npx gaia-uninstall
|
|
382
|
+
|
|
383
|
+
# Forced uninstall (no questions)
|
|
384
|
+
npx gaia-uninstall --force --remove-all
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### Manual Uninstallation
|
|
388
|
+
|
|
389
|
+
```bash
|
|
390
|
+
# 1. Remove .claude/ directory
|
|
391
|
+
rm -rf .claude/
|
|
392
|
+
|
|
393
|
+
# 2. Uninstall npm package
|
|
394
|
+
npm uninstall @jaguilar87/gaia
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## ๐ก Design Principles
|
|
400
|
+
|
|
401
|
+
Gaia is designed with these principles:
|
|
402
|
+
|
|
403
|
+
โ
**Minimal** - Only creates what's needed, no duplicates
|
|
404
|
+
โ
**Adaptive** - Auto-detects existing installations
|
|
405
|
+
โ
**Non-invasive** - Works from any directory
|
|
406
|
+
โ
**Safe** - Validates paths and skips reinstalls
|
|
407
|
+
โ
**Clear** - Explicit feedback on each step
|
|
408
|
+
โ
**Documented** - Complete documentation in each directory
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
## ๐ Support
|
|
413
|
+
|
|
414
|
+
### Resources
|
|
415
|
+
|
|
416
|
+
- **Documentation:** Inside `.claude/*/README.md`
|
|
417
|
+
- **Issues:** https://github.com/metraton/gaia/issues
|
|
418
|
+
- **Email:** jorge.aguilar87@gmail.com
|
|
419
|
+
|
|
420
|
+
### Frequently Asked Questions
|
|
421
|
+
|
|
422
|
+
**Q: Can I use Gaia in multiple projects?**
|
|
423
|
+
A: Yes. Install in each project and each will have its own `project-context.json`.
|
|
424
|
+
|
|
425
|
+
**Q: Do symlinks work on Windows?**
|
|
426
|
+
A: Yes, but you need to enable developer mode or run as administrator.
|
|
427
|
+
|
|
428
|
+
**Q: How do I update only documentation without changing code?**
|
|
429
|
+
A: `npm update @jaguilar87/gaia` - symlinks point to the new version automatically.
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
**Version:** 5.0.0-rc1
|
|
434
|
+
**Last updated:** 2026-04-21
|
|
435
|
+
**Maintained by:** Jorge Aguilar + Gaia (meta-agent)
|
|
436
|
+
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Jorge Aguilar
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|