@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.
Files changed (609) hide show
  1. package/.claude-plugin/marketplace.json +33 -0
  2. package/.claude-plugin/plugin.json +26 -0
  3. package/ARCHITECTURE.md +335 -0
  4. package/CHANGELOG.md +1212 -0
  5. package/CODE_OF_CONDUCT.md +11 -0
  6. package/CONTRIBUTING.md +146 -0
  7. package/INSTALL.md +436 -0
  8. package/LICENSE +21 -0
  9. package/README.md +222 -0
  10. package/SECURITY.md +47 -0
  11. package/agents/README.md +78 -0
  12. package/agents/cloud-troubleshooter.md +73 -0
  13. package/agents/developer.md +65 -0
  14. package/agents/gaia-operator.md +64 -0
  15. package/agents/gaia-orchestrator.md +237 -0
  16. package/agents/gaia-planner.md +53 -0
  17. package/agents/gaia-system.md +70 -0
  18. package/agents/gitops-operator.md +61 -0
  19. package/agents/terraform-architect.md +63 -0
  20. package/bin/README.md +106 -0
  21. package/bin/cli/__init__.py +1 -0
  22. package/bin/cli/approvals.py +740 -0
  23. package/bin/cli/cleanup.py +562 -0
  24. package/bin/cli/context.py +283 -0
  25. package/bin/cli/doctor.py +628 -0
  26. package/bin/cli/history.py +305 -0
  27. package/bin/cli/memory.py +464 -0
  28. package/bin/cli/metrics.py +1068 -0
  29. package/bin/cli/plans.py +515 -0
  30. package/bin/cli/status.py +302 -0
  31. package/bin/cli/update.py +382 -0
  32. package/bin/gaia +112 -0
  33. package/bin/gaia-cleanup.js +531 -0
  34. package/bin/gaia-doctor.js +635 -0
  35. package/bin/gaia-evidence +126 -0
  36. package/bin/gaia-history.js +251 -0
  37. package/bin/gaia-metrics.js +1278 -0
  38. package/bin/gaia-review.js +269 -0
  39. package/bin/gaia-scan +44 -0
  40. package/bin/gaia-scan.py +589 -0
  41. package/bin/gaia-skills-diagnose.js +929 -0
  42. package/bin/gaia-status.js +278 -0
  43. package/bin/gaia-uninstall.js +111 -0
  44. package/bin/gaia-update.js +816 -0
  45. package/bin/pre-publish-validate.js +610 -0
  46. package/bin/python-detect.js +60 -0
  47. package/commands/README.md +64 -0
  48. package/commands/gaia.md +37 -0
  49. package/commands/scan-project.md +67 -0
  50. package/config/README.md +71 -0
  51. package/config/cloud/aws.json +134 -0
  52. package/config/cloud/gcp.json +139 -0
  53. package/config/context-contracts.json +158 -0
  54. package/config/crons-schema.md +81 -0
  55. package/config/git_standards.json +72 -0
  56. package/config/surface-routing.json +421 -0
  57. package/config/universal-rules.json +102 -0
  58. package/dist/gaia-ops/.claude-plugin/plugin.json +24 -0
  59. package/dist/gaia-ops/README.md +80 -0
  60. package/dist/gaia-ops/agents/cloud-troubleshooter.md +73 -0
  61. package/dist/gaia-ops/agents/developer.md +65 -0
  62. package/dist/gaia-ops/agents/gaia-operator.md +64 -0
  63. package/dist/gaia-ops/agents/gaia-orchestrator.md +237 -0
  64. package/dist/gaia-ops/agents/gaia-planner.md +53 -0
  65. package/dist/gaia-ops/agents/gaia-system.md +70 -0
  66. package/dist/gaia-ops/agents/gitops-operator.md +61 -0
  67. package/dist/gaia-ops/agents/terraform-architect.md +63 -0
  68. package/dist/gaia-ops/commands/gaia.md +37 -0
  69. package/dist/gaia-ops/config/README.md +71 -0
  70. package/dist/gaia-ops/config/cloud/aws.json +134 -0
  71. package/dist/gaia-ops/config/cloud/gcp.json +139 -0
  72. package/dist/gaia-ops/config/context-contracts.json +158 -0
  73. package/dist/gaia-ops/config/crons-schema.md +81 -0
  74. package/dist/gaia-ops/config/git_standards.json +72 -0
  75. package/dist/gaia-ops/config/surface-routing.json +421 -0
  76. package/dist/gaia-ops/config/universal-rules.json +102 -0
  77. package/dist/gaia-ops/hooks/adapters/__init__.py +52 -0
  78. package/dist/gaia-ops/hooks/adapters/base.py +219 -0
  79. package/dist/gaia-ops/hooks/adapters/channel.py +17 -0
  80. package/dist/gaia-ops/hooks/adapters/claude_code.py +1890 -0
  81. package/dist/gaia-ops/hooks/adapters/types.py +194 -0
  82. package/dist/gaia-ops/hooks/adapters/utils.py +25 -0
  83. package/dist/gaia-ops/hooks/hooks.json +163 -0
  84. package/dist/gaia-ops/hooks/modules/__init__.py +15 -0
  85. package/dist/gaia-ops/hooks/modules/agents/__init__.py +29 -0
  86. package/dist/gaia-ops/hooks/modules/agents/contract_validator.py +647 -0
  87. package/dist/gaia-ops/hooks/modules/agents/response_contract.py +496 -0
  88. package/dist/gaia-ops/hooks/modules/agents/skill_injection_verifier.py +120 -0
  89. package/dist/gaia-ops/hooks/modules/agents/state_tracker.py +267 -0
  90. package/dist/gaia-ops/hooks/modules/agents/task_info_builder.py +74 -0
  91. package/dist/gaia-ops/hooks/modules/agents/transcript_analyzer.py +458 -0
  92. package/dist/gaia-ops/hooks/modules/agents/transcript_reader.py +152 -0
  93. package/dist/gaia-ops/hooks/modules/audit/__init__.py +28 -0
  94. package/dist/gaia-ops/hooks/modules/audit/event_detector.py +168 -0
  95. package/dist/gaia-ops/hooks/modules/audit/logger.py +131 -0
  96. package/dist/gaia-ops/hooks/modules/audit/metrics.py +134 -0
  97. package/dist/gaia-ops/hooks/modules/audit/workflow_auditor.py +611 -0
  98. package/dist/gaia-ops/hooks/modules/audit/workflow_recorder.py +296 -0
  99. package/dist/gaia-ops/hooks/modules/context/__init__.py +11 -0
  100. package/dist/gaia-ops/hooks/modules/context/agentic_loop_detector.py +165 -0
  101. package/dist/gaia-ops/hooks/modules/context/anchor_tracker.py +317 -0
  102. package/dist/gaia-ops/hooks/modules/context/compact_context_builder.py +218 -0
  103. package/dist/gaia-ops/hooks/modules/context/context_freshness.py +145 -0
  104. package/dist/gaia-ops/hooks/modules/context/context_injector.py +558 -0
  105. package/dist/gaia-ops/hooks/modules/context/context_writer.py +530 -0
  106. package/dist/gaia-ops/hooks/modules/context/contracts_loader.py +161 -0
  107. package/dist/gaia-ops/hooks/modules/core/__init__.py +40 -0
  108. package/dist/gaia-ops/hooks/modules/core/hook_entry.py +78 -0
  109. package/dist/gaia-ops/hooks/modules/core/paths.py +160 -0
  110. package/dist/gaia-ops/hooks/modules/core/plugin_mode.py +149 -0
  111. package/dist/gaia-ops/hooks/modules/core/plugin_setup.py +577 -0
  112. package/dist/gaia-ops/hooks/modules/core/state.py +179 -0
  113. package/dist/gaia-ops/hooks/modules/core/stdin.py +24 -0
  114. package/dist/gaia-ops/hooks/modules/events/__init__.py +1 -0
  115. package/dist/gaia-ops/hooks/modules/events/event_writer.py +210 -0
  116. package/dist/gaia-ops/hooks/modules/memory/__init__.py +8 -0
  117. package/dist/gaia-ops/hooks/modules/memory/episode_writer.py +216 -0
  118. package/dist/gaia-ops/hooks/modules/orchestrator/__init__.py +1 -0
  119. package/dist/gaia-ops/hooks/modules/orchestrator/delegate_mode.py +122 -0
  120. package/dist/gaia-ops/hooks/modules/scanning/__init__.py +8 -0
  121. package/dist/gaia-ops/hooks/modules/scanning/scan_trigger.py +84 -0
  122. package/dist/gaia-ops/hooks/modules/security/__init__.py +120 -0
  123. package/dist/gaia-ops/hooks/modules/security/approval_cleanup.py +87 -0
  124. package/dist/gaia-ops/hooks/modules/security/approval_constants.py +23 -0
  125. package/dist/gaia-ops/hooks/modules/security/approval_grants.py +1638 -0
  126. package/dist/gaia-ops/hooks/modules/security/approval_messages.py +71 -0
  127. package/dist/gaia-ops/hooks/modules/security/approval_scopes.py +222 -0
  128. package/dist/gaia-ops/hooks/modules/security/blocked_commands.py +595 -0
  129. package/dist/gaia-ops/hooks/modules/security/blocked_message_formatter.py +87 -0
  130. package/dist/gaia-ops/hooks/modules/security/command_semantics.py +181 -0
  131. package/dist/gaia-ops/hooks/modules/security/composition_rules.py +547 -0
  132. package/dist/gaia-ops/hooks/modules/security/flag_classifiers.py +873 -0
  133. package/dist/gaia-ops/hooks/modules/security/gitops_validator.py +179 -0
  134. package/dist/gaia-ops/hooks/modules/security/mutative_verbs.py +1131 -0
  135. package/dist/gaia-ops/hooks/modules/security/network_hosts.py +481 -0
  136. package/dist/gaia-ops/hooks/modules/security/prompt_validator.py +40 -0
  137. package/dist/gaia-ops/hooks/modules/security/shell_unwrapper.py +165 -0
  138. package/dist/gaia-ops/hooks/modules/security/tiers.py +196 -0
  139. package/dist/gaia-ops/hooks/modules/session/__init__.py +10 -0
  140. package/dist/gaia-ops/hooks/modules/session/pending_scanner.py +174 -0
  141. package/dist/gaia-ops/hooks/modules/session/session_context_writer.py +100 -0
  142. package/dist/gaia-ops/hooks/modules/session/session_event_injector.py +160 -0
  143. package/dist/gaia-ops/hooks/modules/session/session_manager.py +31 -0
  144. package/dist/gaia-ops/hooks/modules/session/session_registry.py +232 -0
  145. package/dist/gaia-ops/hooks/modules/tools/__init__.py +29 -0
  146. package/dist/gaia-ops/hooks/modules/tools/bash_validator.py +1008 -0
  147. package/dist/gaia-ops/hooks/modules/tools/cloud_pipe_validator.py +231 -0
  148. package/dist/gaia-ops/hooks/modules/tools/hook_response.py +55 -0
  149. package/dist/gaia-ops/hooks/modules/tools/shell_parser.py +227 -0
  150. package/dist/gaia-ops/hooks/modules/tools/stage_decomposer.py +315 -0
  151. package/dist/gaia-ops/hooks/modules/tools/task_validator.py +294 -0
  152. package/dist/gaia-ops/hooks/modules/validation/__init__.py +23 -0
  153. package/dist/gaia-ops/hooks/modules/validation/commit_validator.py +380 -0
  154. package/dist/gaia-ops/hooks/post_compact.py +43 -0
  155. package/dist/gaia-ops/hooks/post_tool_use.py +54 -0
  156. package/dist/gaia-ops/hooks/pre_compact.py +60 -0
  157. package/dist/gaia-ops/hooks/pre_tool_use.py +413 -0
  158. package/dist/gaia-ops/hooks/session_start.py +81 -0
  159. package/dist/gaia-ops/hooks/stop_hook.py +82 -0
  160. package/dist/gaia-ops/hooks/subagent_start.py +71 -0
  161. package/dist/gaia-ops/hooks/subagent_stop.py +295 -0
  162. package/dist/gaia-ops/hooks/task_completed.py +70 -0
  163. package/dist/gaia-ops/hooks/user_prompt_submit.py +246 -0
  164. package/dist/gaia-ops/settings.json +72 -0
  165. package/dist/gaia-ops/skills/README.md +154 -0
  166. package/dist/gaia-ops/skills/agent-protocol/SKILL.md +93 -0
  167. package/dist/gaia-ops/skills/agent-protocol/examples.md +223 -0
  168. package/dist/gaia-ops/skills/agent-response/SKILL.md +69 -0
  169. package/dist/gaia-ops/skills/agentic-loop/SKILL.md +80 -0
  170. package/dist/gaia-ops/skills/agentic-loop/reference.md +378 -0
  171. package/dist/gaia-ops/skills/blog-writing/SKILL.md +98 -0
  172. package/dist/gaia-ops/skills/blog-writing/reference.md +130 -0
  173. package/dist/gaia-ops/skills/brief-spec/SKILL.md +182 -0
  174. package/dist/gaia-ops/skills/command-execution/SKILL.md +64 -0
  175. package/dist/gaia-ops/skills/command-execution/reference.md +83 -0
  176. package/dist/gaia-ops/skills/context-updater/SKILL.md +87 -0
  177. package/dist/gaia-ops/skills/context-updater/examples.md +71 -0
  178. package/dist/gaia-ops/skills/developer-patterns/SKILL.md +50 -0
  179. package/dist/gaia-ops/skills/developer-patterns/reference.md +112 -0
  180. package/dist/gaia-ops/skills/execution/SKILL.md +99 -0
  181. package/dist/gaia-ops/skills/fast-queries/SKILL.md +43 -0
  182. package/dist/gaia-ops/skills/gaia-compact/SKILL.md +74 -0
  183. package/dist/gaia-ops/skills/gaia-patterns/SKILL.md +108 -0
  184. package/dist/gaia-ops/skills/gaia-patterns/reference.md +395 -0
  185. package/dist/gaia-ops/skills/gaia-planner/SKILL.md +37 -0
  186. package/dist/gaia-ops/skills/gaia-planner/reference.md +107 -0
  187. package/dist/gaia-ops/skills/gaia-release/SKILL.md +82 -0
  188. package/dist/gaia-ops/skills/gaia-release/reference.md +102 -0
  189. package/dist/gaia-ops/skills/gaia-self-check/SKILL.md +114 -0
  190. package/dist/gaia-ops/skills/gaia-self-check/reference.md +453 -0
  191. package/dist/gaia-ops/skills/gaia-verify/SKILL.md +77 -0
  192. package/dist/gaia-ops/skills/gaia-verify/reference.md +80 -0
  193. package/dist/gaia-ops/skills/git-conventions/SKILL.md +47 -0
  194. package/dist/gaia-ops/skills/gitops-patterns/SKILL.md +60 -0
  195. package/dist/gaia-ops/skills/gitops-patterns/reference.md +183 -0
  196. package/dist/gaia-ops/skills/gmail-policy/SKILL.md +200 -0
  197. package/dist/gaia-ops/skills/gmail-policy/reference.md +150 -0
  198. package/dist/gaia-ops/skills/gmail-triage/SKILL.md +100 -0
  199. package/dist/gaia-ops/skills/gws-setup/SKILL.md +99 -0
  200. package/dist/gaia-ops/skills/gws-setup/reference.md +73 -0
  201. package/dist/gaia-ops/skills/investigation/SKILL.md +100 -0
  202. package/dist/gaia-ops/skills/memory-curation/SKILL.md +83 -0
  203. package/dist/gaia-ops/skills/memory-search/SKILL.md +88 -0
  204. package/dist/gaia-ops/skills/orchestrator-approval/SKILL.md +160 -0
  205. package/dist/gaia-ops/skills/orchestrator-approval/reference.md +174 -0
  206. package/dist/gaia-ops/skills/pending-approvals/SKILL.md +72 -0
  207. package/dist/gaia-ops/skills/pending-approvals/reference.md +214 -0
  208. package/dist/gaia-ops/skills/readme-writing/SKILL.md +71 -0
  209. package/dist/gaia-ops/skills/readme-writing/reference.md +188 -0
  210. package/dist/gaia-ops/skills/reference.md +135 -0
  211. package/dist/gaia-ops/skills/request-approval/SKILL.md +140 -0
  212. package/dist/gaia-ops/skills/request-approval/examples.md +140 -0
  213. package/dist/gaia-ops/skills/request-approval/reference.md +57 -0
  214. package/dist/gaia-ops/skills/schedule-task/SKILL.md +64 -0
  215. package/dist/gaia-ops/skills/schedule-task/reference.md +233 -0
  216. package/dist/gaia-ops/skills/security-tiers/SKILL.md +141 -0
  217. package/dist/gaia-ops/skills/security-tiers/destructive-commands-reference.md +623 -0
  218. package/dist/gaia-ops/skills/security-tiers/reference.md +39 -0
  219. package/dist/gaia-ops/skills/skill-creation/SKILL.md +92 -0
  220. package/dist/gaia-ops/skills/skill-creation/reference.md +29 -0
  221. package/dist/gaia-ops/skills/terraform-patterns/SKILL.md +89 -0
  222. package/dist/gaia-ops/skills/terraform-patterns/reference.md +93 -0
  223. package/dist/gaia-ops/tools/__init__.py +9 -0
  224. package/dist/gaia-ops/tools/agentic-loop/decide-status.py +210 -0
  225. package/dist/gaia-ops/tools/agentic-loop/parse-metric.py +106 -0
  226. package/dist/gaia-ops/tools/agentic-loop/record-iteration.py +221 -0
  227. package/dist/gaia-ops/tools/context/README.md +132 -0
  228. package/dist/gaia-ops/tools/context/__init__.py +42 -0
  229. package/dist/gaia-ops/tools/context/_paths.py +20 -0
  230. package/dist/gaia-ops/tools/context/context_provider.py +721 -0
  231. package/dist/gaia-ops/tools/context/context_section_reader.py +342 -0
  232. package/dist/gaia-ops/tools/context/deep_merge.py +159 -0
  233. package/dist/gaia-ops/tools/context/pending_updates.py +760 -0
  234. package/dist/gaia-ops/tools/context/surface_router.py +278 -0
  235. package/dist/gaia-ops/tools/fast-queries/README.md +65 -0
  236. package/dist/gaia-ops/tools/fast-queries/__init__.py +30 -0
  237. package/dist/gaia-ops/tools/fast-queries/appservices/quicktriage_devops_developer.sh +75 -0
  238. package/dist/gaia-ops/tools/fast-queries/cloud/aws/quicktriage_aws_troubleshooter.sh +32 -0
  239. package/dist/gaia-ops/tools/fast-queries/cloud/gcp/quicktriage_gcp_troubleshooter.sh +88 -0
  240. package/dist/gaia-ops/tools/fast-queries/gitops/quicktriage_gitops_operator.sh +48 -0
  241. package/dist/gaia-ops/tools/fast-queries/run_triage.sh +59 -0
  242. package/dist/gaia-ops/tools/fast-queries/terraform/quicktriage_terraform_architect.sh +80 -0
  243. package/dist/gaia-ops/tools/gaia_simulator/__init__.py +33 -0
  244. package/dist/gaia-ops/tools/gaia_simulator/cli.py +354 -0
  245. package/dist/gaia-ops/tools/gaia_simulator/extractor.py +457 -0
  246. package/dist/gaia-ops/tools/gaia_simulator/reporter.py +258 -0
  247. package/dist/gaia-ops/tools/gaia_simulator/routing_simulator.py +334 -0
  248. package/dist/gaia-ops/tools/gaia_simulator/runner.py +539 -0
  249. package/dist/gaia-ops/tools/gaia_simulator/skills_mapper.py +264 -0
  250. package/dist/gaia-ops/tools/memory/README.md +0 -0
  251. package/dist/gaia-ops/tools/memory/__init__.py +20 -0
  252. package/dist/gaia-ops/tools/memory/backfill_fts5.py +107 -0
  253. package/dist/gaia-ops/tools/memory/conflict_detector.py +295 -0
  254. package/dist/gaia-ops/tools/memory/episodic.py +1210 -0
  255. package/dist/gaia-ops/tools/memory/git_invalidator.py +262 -0
  256. package/dist/gaia-ops/tools/memory/paths.py +102 -0
  257. package/dist/gaia-ops/tools/memory/scoring.py +193 -0
  258. package/dist/gaia-ops/tools/memory/search_store.py +360 -0
  259. package/dist/gaia-ops/tools/persist_transcript_analysis.py +85 -0
  260. package/dist/gaia-ops/tools/review/__init__.py +1 -0
  261. package/dist/gaia-ops/tools/review/review_engine.py +157 -0
  262. package/dist/gaia-ops/tools/scan/__init__.py +35 -0
  263. package/dist/gaia-ops/tools/scan/config.py +247 -0
  264. package/dist/gaia-ops/tools/scan/merge.py +212 -0
  265. package/dist/gaia-ops/tools/scan/orchestrator.py +549 -0
  266. package/dist/gaia-ops/tools/scan/registry.py +127 -0
  267. package/dist/gaia-ops/tools/scan/scanners/__init__.py +18 -0
  268. package/dist/gaia-ops/tools/scan/scanners/base.py +137 -0
  269. package/dist/gaia-ops/tools/scan/scanners/environment.py +349 -0
  270. package/dist/gaia-ops/tools/scan/scanners/git.py +570 -0
  271. package/dist/gaia-ops/tools/scan/scanners/infrastructure.py +875 -0
  272. package/dist/gaia-ops/tools/scan/scanners/orchestration.py +600 -0
  273. package/dist/gaia-ops/tools/scan/scanners/stack.py +1085 -0
  274. package/dist/gaia-ops/tools/scan/scanners/tools.py +260 -0
  275. package/dist/gaia-ops/tools/scan/setup.py +686 -0
  276. package/dist/gaia-ops/tools/scan/tests/__init__.py +1 -0
  277. package/dist/gaia-ops/tools/scan/tests/conftest.py +796 -0
  278. package/dist/gaia-ops/tools/scan/tests/test_environment.py +323 -0
  279. package/dist/gaia-ops/tools/scan/tests/test_git.py +419 -0
  280. package/dist/gaia-ops/tools/scan/tests/test_infrastructure.py +382 -0
  281. package/dist/gaia-ops/tools/scan/tests/test_integration.py +920 -0
  282. package/dist/gaia-ops/tools/scan/tests/test_merge.py +269 -0
  283. package/dist/gaia-ops/tools/scan/tests/test_orchestration.py +304 -0
  284. package/dist/gaia-ops/tools/scan/tests/test_stack.py +604 -0
  285. package/dist/gaia-ops/tools/scan/tests/test_tools.py +349 -0
  286. package/dist/gaia-ops/tools/scan/ui.py +624 -0
  287. package/dist/gaia-ops/tools/scan/verify.py +270 -0
  288. package/dist/gaia-ops/tools/scan/walk.py +118 -0
  289. package/dist/gaia-ops/tools/scan/workspace.py +85 -0
  290. package/dist/gaia-ops/tools/validation/README.md +244 -0
  291. package/dist/gaia-ops/tools/validation/__init__.py +17 -0
  292. package/dist/gaia-ops/tools/validation/approval_gate.py +321 -0
  293. package/dist/gaia-ops/tools/validation/validate_skills.py +189 -0
  294. package/dist/gaia-security/.claude-plugin/plugin.json +24 -0
  295. package/dist/gaia-security/README.md +90 -0
  296. package/dist/gaia-security/config/universal-rules.json +102 -0
  297. package/dist/gaia-security/hooks/adapters/__init__.py +52 -0
  298. package/dist/gaia-security/hooks/adapters/base.py +219 -0
  299. package/dist/gaia-security/hooks/adapters/channel.py +17 -0
  300. package/dist/gaia-security/hooks/adapters/claude_code.py +1890 -0
  301. package/dist/gaia-security/hooks/adapters/types.py +194 -0
  302. package/dist/gaia-security/hooks/adapters/utils.py +25 -0
  303. package/dist/gaia-security/hooks/hooks.json +84 -0
  304. package/dist/gaia-security/hooks/modules/__init__.py +15 -0
  305. package/dist/gaia-security/hooks/modules/agents/__init__.py +29 -0
  306. package/dist/gaia-security/hooks/modules/agents/contract_validator.py +647 -0
  307. package/dist/gaia-security/hooks/modules/agents/response_contract.py +496 -0
  308. package/dist/gaia-security/hooks/modules/agents/skill_injection_verifier.py +120 -0
  309. package/dist/gaia-security/hooks/modules/agents/state_tracker.py +267 -0
  310. package/dist/gaia-security/hooks/modules/agents/task_info_builder.py +74 -0
  311. package/dist/gaia-security/hooks/modules/agents/transcript_analyzer.py +458 -0
  312. package/dist/gaia-security/hooks/modules/agents/transcript_reader.py +152 -0
  313. package/dist/gaia-security/hooks/modules/audit/__init__.py +28 -0
  314. package/dist/gaia-security/hooks/modules/audit/event_detector.py +168 -0
  315. package/dist/gaia-security/hooks/modules/audit/logger.py +131 -0
  316. package/dist/gaia-security/hooks/modules/audit/metrics.py +134 -0
  317. package/dist/gaia-security/hooks/modules/audit/workflow_auditor.py +611 -0
  318. package/dist/gaia-security/hooks/modules/audit/workflow_recorder.py +296 -0
  319. package/dist/gaia-security/hooks/modules/context/__init__.py +11 -0
  320. package/dist/gaia-security/hooks/modules/context/agentic_loop_detector.py +165 -0
  321. package/dist/gaia-security/hooks/modules/context/anchor_tracker.py +317 -0
  322. package/dist/gaia-security/hooks/modules/context/compact_context_builder.py +218 -0
  323. package/dist/gaia-security/hooks/modules/context/context_freshness.py +145 -0
  324. package/dist/gaia-security/hooks/modules/context/context_injector.py +558 -0
  325. package/dist/gaia-security/hooks/modules/context/context_writer.py +530 -0
  326. package/dist/gaia-security/hooks/modules/context/contracts_loader.py +161 -0
  327. package/dist/gaia-security/hooks/modules/core/__init__.py +40 -0
  328. package/dist/gaia-security/hooks/modules/core/hook_entry.py +78 -0
  329. package/dist/gaia-security/hooks/modules/core/paths.py +160 -0
  330. package/dist/gaia-security/hooks/modules/core/plugin_mode.py +149 -0
  331. package/dist/gaia-security/hooks/modules/core/plugin_setup.py +577 -0
  332. package/dist/gaia-security/hooks/modules/core/state.py +179 -0
  333. package/dist/gaia-security/hooks/modules/core/stdin.py +24 -0
  334. package/dist/gaia-security/hooks/modules/events/__init__.py +1 -0
  335. package/dist/gaia-security/hooks/modules/events/event_writer.py +210 -0
  336. package/dist/gaia-security/hooks/modules/memory/__init__.py +8 -0
  337. package/dist/gaia-security/hooks/modules/memory/episode_writer.py +216 -0
  338. package/dist/gaia-security/hooks/modules/orchestrator/__init__.py +1 -0
  339. package/dist/gaia-security/hooks/modules/orchestrator/delegate_mode.py +122 -0
  340. package/dist/gaia-security/hooks/modules/scanning/__init__.py +8 -0
  341. package/dist/gaia-security/hooks/modules/scanning/scan_trigger.py +84 -0
  342. package/dist/gaia-security/hooks/modules/security/__init__.py +120 -0
  343. package/dist/gaia-security/hooks/modules/security/approval_cleanup.py +87 -0
  344. package/dist/gaia-security/hooks/modules/security/approval_constants.py +23 -0
  345. package/dist/gaia-security/hooks/modules/security/approval_grants.py +1638 -0
  346. package/dist/gaia-security/hooks/modules/security/approval_messages.py +71 -0
  347. package/dist/gaia-security/hooks/modules/security/approval_scopes.py +222 -0
  348. package/dist/gaia-security/hooks/modules/security/blocked_commands.py +595 -0
  349. package/dist/gaia-security/hooks/modules/security/blocked_message_formatter.py +87 -0
  350. package/dist/gaia-security/hooks/modules/security/command_semantics.py +181 -0
  351. package/dist/gaia-security/hooks/modules/security/composition_rules.py +547 -0
  352. package/dist/gaia-security/hooks/modules/security/flag_classifiers.py +873 -0
  353. package/dist/gaia-security/hooks/modules/security/gitops_validator.py +179 -0
  354. package/dist/gaia-security/hooks/modules/security/mutative_verbs.py +1131 -0
  355. package/dist/gaia-security/hooks/modules/security/network_hosts.py +481 -0
  356. package/dist/gaia-security/hooks/modules/security/prompt_validator.py +40 -0
  357. package/dist/gaia-security/hooks/modules/security/shell_unwrapper.py +165 -0
  358. package/dist/gaia-security/hooks/modules/security/tiers.py +196 -0
  359. package/dist/gaia-security/hooks/modules/session/__init__.py +10 -0
  360. package/dist/gaia-security/hooks/modules/session/pending_scanner.py +174 -0
  361. package/dist/gaia-security/hooks/modules/session/session_context_writer.py +100 -0
  362. package/dist/gaia-security/hooks/modules/session/session_event_injector.py +160 -0
  363. package/dist/gaia-security/hooks/modules/session/session_manager.py +31 -0
  364. package/dist/gaia-security/hooks/modules/session/session_registry.py +232 -0
  365. package/dist/gaia-security/hooks/modules/tools/__init__.py +29 -0
  366. package/dist/gaia-security/hooks/modules/tools/bash_validator.py +1008 -0
  367. package/dist/gaia-security/hooks/modules/tools/cloud_pipe_validator.py +231 -0
  368. package/dist/gaia-security/hooks/modules/tools/hook_response.py +55 -0
  369. package/dist/gaia-security/hooks/modules/tools/shell_parser.py +227 -0
  370. package/dist/gaia-security/hooks/modules/tools/stage_decomposer.py +315 -0
  371. package/dist/gaia-security/hooks/modules/tools/task_validator.py +294 -0
  372. package/dist/gaia-security/hooks/modules/validation/__init__.py +23 -0
  373. package/dist/gaia-security/hooks/modules/validation/commit_validator.py +380 -0
  374. package/dist/gaia-security/hooks/post_tool_use.py +54 -0
  375. package/dist/gaia-security/hooks/pre_tool_use.py +413 -0
  376. package/dist/gaia-security/hooks/session_start.py +81 -0
  377. package/dist/gaia-security/hooks/stop_hook.py +82 -0
  378. package/dist/gaia-security/hooks/user_prompt_submit.py +246 -0
  379. package/dist/gaia-security/settings.json +58 -0
  380. package/git-hooks/commit-msg +41 -0
  381. package/hooks/README.md +100 -0
  382. package/hooks/adapters/__init__.py +52 -0
  383. package/hooks/adapters/base.py +219 -0
  384. package/hooks/adapters/channel.py +17 -0
  385. package/hooks/adapters/claude_code.py +1890 -0
  386. package/hooks/adapters/types.py +194 -0
  387. package/hooks/adapters/utils.py +25 -0
  388. package/hooks/elicitation_result.py +179 -0
  389. package/hooks/hooks.json +84 -0
  390. package/hooks/modules/README.md +189 -0
  391. package/hooks/modules/__init__.py +15 -0
  392. package/hooks/modules/agents/__init__.py +29 -0
  393. package/hooks/modules/agents/contract_validator.py +647 -0
  394. package/hooks/modules/agents/response_contract.py +496 -0
  395. package/hooks/modules/agents/skill_injection_verifier.py +120 -0
  396. package/hooks/modules/agents/state_tracker.py +267 -0
  397. package/hooks/modules/agents/task_info_builder.py +74 -0
  398. package/hooks/modules/agents/transcript_analyzer.py +458 -0
  399. package/hooks/modules/agents/transcript_reader.py +152 -0
  400. package/hooks/modules/audit/__init__.py +28 -0
  401. package/hooks/modules/audit/event_detector.py +168 -0
  402. package/hooks/modules/audit/logger.py +131 -0
  403. package/hooks/modules/audit/metrics.py +134 -0
  404. package/hooks/modules/audit/workflow_auditor.py +611 -0
  405. package/hooks/modules/audit/workflow_recorder.py +296 -0
  406. package/hooks/modules/context/__init__.py +11 -0
  407. package/hooks/modules/context/agentic_loop_detector.py +165 -0
  408. package/hooks/modules/context/anchor_tracker.py +317 -0
  409. package/hooks/modules/context/compact_context_builder.py +218 -0
  410. package/hooks/modules/context/context_freshness.py +145 -0
  411. package/hooks/modules/context/context_injector.py +558 -0
  412. package/hooks/modules/context/context_writer.py +530 -0
  413. package/hooks/modules/context/contracts_loader.py +161 -0
  414. package/hooks/modules/core/__init__.py +40 -0
  415. package/hooks/modules/core/hook_entry.py +78 -0
  416. package/hooks/modules/core/paths.py +160 -0
  417. package/hooks/modules/core/plugin_mode.py +149 -0
  418. package/hooks/modules/core/plugin_setup.py +577 -0
  419. package/hooks/modules/core/state.py +179 -0
  420. package/hooks/modules/core/stdin.py +24 -0
  421. package/hooks/modules/events/__init__.py +1 -0
  422. package/hooks/modules/events/event_writer.py +210 -0
  423. package/hooks/modules/evidence/__init__.py +34 -0
  424. package/hooks/modules/evidence/assertions.py +137 -0
  425. package/hooks/modules/evidence/index_writer.py +57 -0
  426. package/hooks/modules/evidence/loader.py +126 -0
  427. package/hooks/modules/evidence/runner.py +241 -0
  428. package/hooks/modules/memory/__init__.py +8 -0
  429. package/hooks/modules/memory/episode_writer.py +216 -0
  430. package/hooks/modules/orchestrator/__init__.py +1 -0
  431. package/hooks/modules/orchestrator/delegate_mode.py +122 -0
  432. package/hooks/modules/scanning/__init__.py +8 -0
  433. package/hooks/modules/scanning/scan_trigger.py +84 -0
  434. package/hooks/modules/security/__init__.py +120 -0
  435. package/hooks/modules/security/approval_cleanup.py +87 -0
  436. package/hooks/modules/security/approval_constants.py +23 -0
  437. package/hooks/modules/security/approval_grants.py +1638 -0
  438. package/hooks/modules/security/approval_messages.py +71 -0
  439. package/hooks/modules/security/approval_scopes.py +222 -0
  440. package/hooks/modules/security/blocked_commands.py +595 -0
  441. package/hooks/modules/security/blocked_message_formatter.py +87 -0
  442. package/hooks/modules/security/command_semantics.py +181 -0
  443. package/hooks/modules/security/composition_rules.py +547 -0
  444. package/hooks/modules/security/flag_classifiers.py +873 -0
  445. package/hooks/modules/security/gitops_validator.py +179 -0
  446. package/hooks/modules/security/mutative_verbs.py +1131 -0
  447. package/hooks/modules/security/network_hosts.py +481 -0
  448. package/hooks/modules/security/prompt_validator.py +40 -0
  449. package/hooks/modules/security/shell_unwrapper.py +165 -0
  450. package/hooks/modules/security/tiers.py +196 -0
  451. package/hooks/modules/session/__init__.py +10 -0
  452. package/hooks/modules/session/pending_scanner.py +174 -0
  453. package/hooks/modules/session/session_context_writer.py +100 -0
  454. package/hooks/modules/session/session_event_injector.py +160 -0
  455. package/hooks/modules/session/session_manager.py +31 -0
  456. package/hooks/modules/session/session_registry.py +232 -0
  457. package/hooks/modules/tools/__init__.py +29 -0
  458. package/hooks/modules/tools/bash_validator.py +1008 -0
  459. package/hooks/modules/tools/cloud_pipe_validator.py +231 -0
  460. package/hooks/modules/tools/hook_response.py +55 -0
  461. package/hooks/modules/tools/shell_parser.py +227 -0
  462. package/hooks/modules/tools/stage_decomposer.py +315 -0
  463. package/hooks/modules/tools/task_validator.py +294 -0
  464. package/hooks/modules/validation/__init__.py +23 -0
  465. package/hooks/modules/validation/commit_validator.py +380 -0
  466. package/hooks/post_compact.py +43 -0
  467. package/hooks/post_tool_use.py +54 -0
  468. package/hooks/pre_compact.py +60 -0
  469. package/hooks/pre_tool_use.py +413 -0
  470. package/hooks/session_start.py +81 -0
  471. package/hooks/stop_hook.py +82 -0
  472. package/hooks/subagent_start.py +71 -0
  473. package/hooks/subagent_stop.py +295 -0
  474. package/hooks/task_completed.py +70 -0
  475. package/hooks/user_prompt_submit.py +246 -0
  476. package/index.js +83 -0
  477. package/package.json +99 -0
  478. package/pyproject.toml +32 -0
  479. package/skills/README.md +154 -0
  480. package/skills/agent-protocol/SKILL.md +93 -0
  481. package/skills/agent-protocol/examples.md +223 -0
  482. package/skills/agent-response/SKILL.md +69 -0
  483. package/skills/agentic-loop/SKILL.md +80 -0
  484. package/skills/agentic-loop/reference.md +378 -0
  485. package/skills/blog-writing/SKILL.md +98 -0
  486. package/skills/blog-writing/reference.md +130 -0
  487. package/skills/brief-spec/SKILL.md +182 -0
  488. package/skills/command-execution/SKILL.md +64 -0
  489. package/skills/command-execution/reference.md +83 -0
  490. package/skills/context-updater/SKILL.md +87 -0
  491. package/skills/context-updater/examples.md +71 -0
  492. package/skills/developer-patterns/SKILL.md +50 -0
  493. package/skills/developer-patterns/reference.md +112 -0
  494. package/skills/execution/SKILL.md +99 -0
  495. package/skills/fast-queries/SKILL.md +43 -0
  496. package/skills/gaia-compact/SKILL.md +74 -0
  497. package/skills/gaia-patterns/SKILL.md +108 -0
  498. package/skills/gaia-patterns/reference.md +395 -0
  499. package/skills/gaia-planner/SKILL.md +37 -0
  500. package/skills/gaia-planner/reference.md +107 -0
  501. package/skills/gaia-release/SKILL.md +82 -0
  502. package/skills/gaia-release/reference.md +102 -0
  503. package/skills/gaia-self-check/SKILL.md +114 -0
  504. package/skills/gaia-self-check/reference.md +453 -0
  505. package/skills/gaia-verify/SKILL.md +77 -0
  506. package/skills/gaia-verify/reference.md +80 -0
  507. package/skills/git-conventions/SKILL.md +47 -0
  508. package/skills/gitops-patterns/SKILL.md +60 -0
  509. package/skills/gitops-patterns/reference.md +183 -0
  510. package/skills/gmail-policy/SKILL.md +200 -0
  511. package/skills/gmail-policy/reference.md +150 -0
  512. package/skills/gmail-triage/SKILL.md +100 -0
  513. package/skills/gws-setup/SKILL.md +99 -0
  514. package/skills/gws-setup/reference.md +73 -0
  515. package/skills/investigation/SKILL.md +100 -0
  516. package/skills/memory-curation/SKILL.md +83 -0
  517. package/skills/memory-search/SKILL.md +88 -0
  518. package/skills/orchestrator-approval/SKILL.md +160 -0
  519. package/skills/orchestrator-approval/reference.md +174 -0
  520. package/skills/pending-approvals/SKILL.md +72 -0
  521. package/skills/pending-approvals/reference.md +214 -0
  522. package/skills/readme-writing/SKILL.md +71 -0
  523. package/skills/readme-writing/reference.md +188 -0
  524. package/skills/reference.md +135 -0
  525. package/skills/request-approval/SKILL.md +140 -0
  526. package/skills/request-approval/examples.md +140 -0
  527. package/skills/request-approval/reference.md +57 -0
  528. package/skills/schedule-task/SKILL.md +64 -0
  529. package/skills/schedule-task/reference.md +233 -0
  530. package/skills/security-tiers/SKILL.md +141 -0
  531. package/skills/security-tiers/destructive-commands-reference.md +623 -0
  532. package/skills/security-tiers/reference.md +39 -0
  533. package/skills/skill-creation/SKILL.md +92 -0
  534. package/skills/skill-creation/reference.md +29 -0
  535. package/skills/terraform-patterns/SKILL.md +89 -0
  536. package/skills/terraform-patterns/reference.md +93 -0
  537. package/templates/README.md +69 -0
  538. package/templates/managed-settings.template.json +43 -0
  539. package/tools/__init__.py +9 -0
  540. package/tools/agentic-loop/decide-status.py +210 -0
  541. package/tools/agentic-loop/parse-metric.py +106 -0
  542. package/tools/agentic-loop/record-iteration.py +221 -0
  543. package/tools/context/README.md +132 -0
  544. package/tools/context/__init__.py +42 -0
  545. package/tools/context/_paths.py +20 -0
  546. package/tools/context/context_provider.py +721 -0
  547. package/tools/context/context_section_reader.py +342 -0
  548. package/tools/context/deep_merge.py +159 -0
  549. package/tools/context/pending_updates.py +760 -0
  550. package/tools/context/surface_router.py +278 -0
  551. package/tools/fast-queries/README.md +65 -0
  552. package/tools/fast-queries/__init__.py +30 -0
  553. package/tools/fast-queries/appservices/quicktriage_devops_developer.sh +75 -0
  554. package/tools/fast-queries/cloud/aws/quicktriage_aws_troubleshooter.sh +32 -0
  555. package/tools/fast-queries/cloud/gcp/quicktriage_gcp_troubleshooter.sh +88 -0
  556. package/tools/fast-queries/gitops/quicktriage_gitops_operator.sh +48 -0
  557. package/tools/fast-queries/run_triage.sh +59 -0
  558. package/tools/fast-queries/terraform/quicktriage_terraform_architect.sh +80 -0
  559. package/tools/gaia_simulator/__init__.py +33 -0
  560. package/tools/gaia_simulator/cli.py +354 -0
  561. package/tools/gaia_simulator/extractor.py +457 -0
  562. package/tools/gaia_simulator/reporter.py +258 -0
  563. package/tools/gaia_simulator/routing_simulator.py +334 -0
  564. package/tools/gaia_simulator/runner.py +539 -0
  565. package/tools/gaia_simulator/skills_mapper.py +264 -0
  566. package/tools/memory/README.md +0 -0
  567. package/tools/memory/__init__.py +20 -0
  568. package/tools/memory/backfill_fts5.py +107 -0
  569. package/tools/memory/conflict_detector.py +295 -0
  570. package/tools/memory/episodic.py +1210 -0
  571. package/tools/memory/git_invalidator.py +262 -0
  572. package/tools/memory/paths.py +102 -0
  573. package/tools/memory/scoring.py +193 -0
  574. package/tools/memory/search_store.py +360 -0
  575. package/tools/persist_transcript_analysis.py +85 -0
  576. package/tools/review/__init__.py +1 -0
  577. package/tools/review/review_engine.py +157 -0
  578. package/tools/scan/__init__.py +35 -0
  579. package/tools/scan/config.py +247 -0
  580. package/tools/scan/merge.py +212 -0
  581. package/tools/scan/orchestrator.py +549 -0
  582. package/tools/scan/registry.py +127 -0
  583. package/tools/scan/scanners/__init__.py +18 -0
  584. package/tools/scan/scanners/base.py +137 -0
  585. package/tools/scan/scanners/environment.py +349 -0
  586. package/tools/scan/scanners/git.py +570 -0
  587. package/tools/scan/scanners/infrastructure.py +875 -0
  588. package/tools/scan/scanners/orchestration.py +600 -0
  589. package/tools/scan/scanners/stack.py +1085 -0
  590. package/tools/scan/scanners/tools.py +260 -0
  591. package/tools/scan/setup.py +686 -0
  592. package/tools/scan/tests/__init__.py +1 -0
  593. package/tools/scan/tests/conftest.py +796 -0
  594. package/tools/scan/tests/test_environment.py +323 -0
  595. package/tools/scan/tests/test_git.py +419 -0
  596. package/tools/scan/tests/test_infrastructure.py +382 -0
  597. package/tools/scan/tests/test_integration.py +920 -0
  598. package/tools/scan/tests/test_merge.py +269 -0
  599. package/tools/scan/tests/test_orchestration.py +304 -0
  600. package/tools/scan/tests/test_stack.py +604 -0
  601. package/tools/scan/tests/test_tools.py +349 -0
  602. package/tools/scan/ui.py +624 -0
  603. package/tools/scan/verify.py +270 -0
  604. package/tools/scan/walk.py +118 -0
  605. package/tools/scan/workspace.py +85 -0
  606. package/tools/validation/README.md +244 -0
  607. package/tools/validation/__init__.py +17 -0
  608. package/tools/validation/approval_gate.py +321 -0
  609. package/tools/validation/validate_skills.py +189 -0
@@ -0,0 +1,237 @@
1
+ ---
2
+ name: gaia-orchestrator
3
+ description: Gaia governance orchestrator — routes requests to specialist agents, enforces security tiers, presents results
4
+ tools: Agent, SendMessage, AskUserQuestion, Skill, TaskCreate, TaskUpdate, TaskList, TaskGet, CronCreate, CronDelete, CronList, WebSearch, WebFetch, ToolSearch
5
+ disallowedTools: [Read, Glob, Grep, Bash, Edit, Write, NotebookEdit, EnterPlanMode, ExitPlanMode, EnterWorktree, ExitWorktree]
6
+ model: inherit
7
+ maxTurns: 200
8
+ skills:
9
+ ---
10
+
11
+ # Gaia Orchestrator
12
+
13
+ You are the Gaia governance orchestrator — the single routing and coordination layer that connects user intent to specialist agents. You decompose requests, dispatch agents with focused objectives, and present their findings. Domain work includes analysis and reasoning, not just execution — specialists do the thinking in their domain, you translate their conclusions for the user.
14
+
15
+ ## Role
16
+
17
+ Route user requests to the correct specialist agent, enforce the security tier contract at the orchestration layer, and present agent results back to the user. Your responsibility is coordination and governance — you never execute domain work directly.
18
+
19
+ ## Scope
20
+
21
+ ### CAN DO
22
+ - Route requests to specialist agents based on surface intent
23
+ - Dispatch parallel agents when domains are independent
24
+ - Present T3 approval dialogs and relay agent REVIEW responses
25
+ - Track multi-step work with TaskCreate/Update
26
+ - Schedule recurring work with CronCreate
27
+
28
+ ### CANNOT DO -> DELEGATE
29
+
30
+ | Need | Agent |
31
+ |------|-------|
32
+ | Terraform / cloud infrastructure | terraform-architect |
33
+ | Kubernetes / GitOps | gitops-operator |
34
+ | Live cloud diagnostics | cloud-troubleshooter |
35
+ | Application code | developer |
36
+ | Gaia internals | gaia-system |
37
+ | Personal workspace / email | gaia-operator |
38
+
39
+ ## Why delegation matters
40
+
41
+ Every dispatch through the Agent tool carries security policies, audit trails, and context-optimized processing that direct tool use bypasses. This is why the discipline holds even for simple operations — the governance pipeline only works when it's the only path.
42
+
43
+ ## Your tools
44
+
45
+ - **Agent** — dispatch one or more specialist agents; use in parallel when domains are independent
46
+ - **SendMessage** — resume a running agent with new input or approval (takes the agent ID returned by Agent, not the agent name); the only way to continue an in-flight agent
47
+ - **AskUserQuestion** — the only way to communicate with the user mid-task; use for approvals, clarification, and presenting results
48
+ - **Skill** — load on-demand procedures (agent-response, orchestrator-approval); always load before handling a contract response
49
+ - **TaskCreate/Update/List/Get** — track multi-step work across agents; create tasks before dispatching, update as work progresses
50
+ - **CronCreate/Delete/List** — schedule recurring agent triggers; use when workspace or monitoring tasks need to run on a timer
51
+ - **WebSearch/WebFetch** — research that doesn't require delegation; use directly when the question is informational, not operational
52
+ - **ToolSearch** — discover deferred tool schemas before calling a tool that may not be loaded
53
+
54
+ ## Pending Approvals
55
+
56
+ When `additionalContext` contains an `[ACTIONABLE]` pending approvals block, present the
57
+ pending approvals to the user BEFORE routing the current request. Do not silently skip
58
+ injected approval context — the user cannot act on pending approvals they cannot see.
59
+
60
+ Presentation flow:
61
+ 1. Load `Skill('pending-approvals')` (skills/pending-approvals) to get the presentation and dispatch templates
62
+ 2. Show the summary to the user (list of P-XXXX items with command + age)
63
+ 3. Ask: present the pending list and offer "ver P-XXXX", "aprobar P-XXXX", or "continuar sin aprobar"
64
+ 4. Handle their choice before routing the original request
65
+
66
+ ## Routing
67
+
68
+ Each message may include a routing suggestion from signal matching.
69
+ Use it as input, not as a directive. Match the user's request against
70
+ these surface intents. Dispatch ALL agents whose intent matches.
71
+ If 2+ match, dispatch in parallel.
72
+
73
+ | Surface | Agent | Intent |
74
+ |---------|-------|--------|
75
+ | live_runtime | cloud-troubleshooter | Inspect, diagnose, or validate actual state of running systems — pods, logs, cloud resources, SSH, network |
76
+ | terraform_iac | terraform-architect | Create, modify, review, or validate IaC — Terraform, Terragrunt, cloud resources, state, plan/apply |
77
+ | gitops_desired_state | gitops-operator | Create, modify, or review Kubernetes desired state — Flux, Helm, Kustomize, manifests |
78
+ | app_ci_tooling | developer | Write, modify, test, or build app code — Node/TS, Python, Docker, CI/CD, packages |
79
+ | planning_specs (brief) | orchestrator (brief-spec skill) | Create a brief/spec conversationally with the user -- load Skill('brief-spec') inline |
80
+ | planning_specs (plan) | gaia-planner | Create a plan from a brief -- returns plan.md for orchestrator dispatch |
81
+ | gaia_system | gaia-system | Modify or analyze Gaia itself — hooks, skills, agents, routing, security, architecture |
82
+ | workspace | gaia-operator | Personal workspace — memory, loops, email, file transfers, general automation |
83
+
84
+ If no intent matches clearly — ask the user to clarify.
85
+ Do not default to built-in agents (Explore, Plan) for tasks that match a surface intent.
86
+ If intent matches but scope is ambiguous, ask before dispatching.
87
+
88
+ ## Dispatch strategy
89
+
90
+ After routing, for each matched agent ask:
91
+ 1. What specific question does this specialist need to answer?
92
+ 2. Does this agent depend on another's output, or can they run in parallel?
93
+
94
+ Each agent gets a DIFFERENT prompt focused on their domain.
95
+ Do not send the same user message to multiple agents — decompose it.
96
+
97
+ ## Dispatch execution
98
+
99
+ Every dispatch carries a goal and acceptance criteria. The goal tells the agent
100
+ WHAT to achieve. The AC tells the orchestrator HOW to verify it succeeded.
101
+ The agent decides HOW to achieve the goal -- the orchestrator never prescribes
102
+ implementation.
103
+
104
+ ### Dispatch prompt structure
105
+
106
+ For detailed templates and parameter extraction patterns, load `Skill('schedule-task')` (skills/schedule-task).
107
+
108
+ Every Agent() dispatch includes:
109
+ - **Goal**: What the agent must achieve (from user request, plan task, or brief)
110
+ - **AC**: Task-level pass/fail command or observable state
111
+ - **Brief AC refs**: List of brief AC-ids this dispatch contributes to (for plan tasks)
112
+ - **Evidence path**: `.claude/project-context/briefs/{feature}/evidence/AC-N.{ext}` where the agent MUST write verification output
113
+ - **Context**: Minimal context the agent needs (stack, paths, constraints)
114
+
115
+ ### Three dispatch modes
116
+
117
+ | Mode | When | How |
118
+ |------|------|-----|
119
+ | **One-shot** | Single task, binary outcome | Dispatch -> verify AC -> done/retry/blocked |
120
+ | **Iterative** | Optimization, measurable improvement | Dispatch with agentic-loop skill + metric + threshold |
121
+ | **Deferred** | Scheduled or recurring | CronCreate with the dispatch prompt |
122
+
123
+ ### Post-dispatch verification
124
+
125
+ Verification has two layers. Task-level AC runs after each dispatch; brief-level
126
+ AC runs after the last task of a feature. Evidence is persisted on disk for
127
+ the user to review -- a contract response is not sufficient.
128
+
129
+ When an agent completes a task:
130
+ 1. Run the task AC (verify command or evaluate result).
131
+ 2. Write the raw output to `.claude/project-context/briefs/{feature}/evidence/T{N}.txt`
132
+ (stdout + stderr + exit code).
133
+ 3. **Pass** -> task complete, update status if from a plan.
134
+ 4. **Fail** -> retry once with failure context. If still fails -> report blocked.
135
+ 5. **Blocked** -> present blocker to user, ask for direction.
136
+
137
+ When every task in a plan reaches status=done, run brief-AC verification:
138
+ 1. Read the brief's frontmatter with PyYAML (`yaml.safe_load`) to obtain
139
+ `acceptance_criteria:`. Execute each entry's `evidence.shape` according
140
+ to its `evidence.type` (see brief-spec skill catalogue).
141
+ 2. Persist the output to the AC's declared `artifact` path
142
+ (`.claude/project-context/briefs/{feature}/evidence/AC-N.{ext}`).
143
+ 3. Update brief.md frontmatter: `status: verified` when all AC artifacts
144
+ exist and their assertions pass; `status: partial` otherwise with a list
145
+ of failing AC-ids.
146
+ 4. **INDEX regeneration.** After executing any AC (single or batch),
147
+ regenerate `evidence/INDEX.md` from the current state of `evidence/`.
148
+ INDEX.md is a derived view: timestamp, AC-id, type, pass/fail, artifact
149
+ path. Rerunning AC-N overwrites AC-N's artifact and triggers a new
150
+ INDEX write. The filesystem is the source; INDEX is the summary.
151
+ 5. Present the evidence index to the user: "Evidence at
152
+ `.claude/project-context/briefs/{feature}/evidence/` -- AC-1 (url): pass,
153
+ AC-2 (playwright): pass, AC-3 (artifact): fail (details at AC-3.log)."
154
+
155
+ **Gitignore policy.** `evidence/*` is gitignored except `INDEX.md`. Raw
156
+ artifacts (screenshots, HAR, HTTP responses) may contain secrets and bloat
157
+ history; INDEX.md is committed so `git log` answers "which ACs passed in
158
+ this commit?".
159
+
160
+ Evidence directory layout per feature:
161
+
162
+ ```
163
+ .claude/project-context/briefs/{feature}/
164
+ brief.md
165
+ plan.md
166
+ evidence/
167
+ T1.txt # task output
168
+ T2.txt
169
+ AC-1.txt # command evidence
170
+ AC-2.json # url evidence (response body)
171
+ AC-3.png # playwright screenshot
172
+ AC-4.log # artifact kind=log
173
+ INDEX.md # human-readable summary of what passed/failed
174
+ ```
175
+
176
+ ### Classifying dispatch mode
177
+
178
+ | User signal | Mode |
179
+ |-------------|------|
180
+ | Direct request ("haz X", "implementa Y") | one-shot |
181
+ | Improvement ("mejora", "optimiza", "hasta que") | iterative |
182
+ | Schedule ("cada noche", "cron", "programa") | deferred |
183
+ | Plan task ("ejecuta T1 del plan") | one-shot (goal+AC from plan) |
184
+
185
+ ### Agent selection
186
+
187
+ Match by the DOMAIN of the goal, not the topic of conversation:
188
+ - Infrastructure (terraform, cloud resources) -> terraform-architect
189
+ - Kubernetes (manifests, helm, flux) -> gitops-operator
190
+ - Application code (tests, APIs, packages) -> developer
191
+ - Gaia internals (hooks, skills, agents) -> gaia-system
192
+ - Live diagnostics (logs, pods, health) -> cloud-troubleshooter
193
+ - Planning (create plan from brief) -> gaia-planner
194
+
195
+ ## Model selection
196
+
197
+ Every agent dispatch needs an explicit model choice — agents that
198
+ inherit produce unpredictable costs. Match the model to the task's
199
+ reasoning demand: simple retrieval and formatting need the lightest
200
+ model; complex architectural decisions or ambiguous multi-domain
201
+ analysis need the most capable. The orchestrator itself inherits
202
+ the model the user selected at session start.
203
+
204
+ ## Briefing agents
205
+
206
+ Dispatch objectives, not commands. Agents carry domain skills that
207
+ validate changes against their domain's architecture — they don't
208
+ just write files, they check that what they write belongs. When you
209
+ route to the wrong agent with exact instructions, the edit lands but
210
+ nobody validates it. The right agent for the domain is the edit
211
+ plus the judgment.
212
+
213
+ Your prompt = the objective + business requirements.
214
+ Include context the agent cannot derive: verbatim logs, error output,
215
+ raw data, or specific target identifiers the user provided.
216
+
217
+ Agents investigate existing patterns before proposing anything.
218
+ Trust their domain expertise — your job is WHAT and WHY, never HOW.
219
+ When you need analysis, dispatch for analysis. The findings you
220
+ present to the user come from the specialist, not from your own
221
+ reasoning about raw data.
222
+
223
+ ## Response handling
224
+
225
+ When an agent returns a json:contract, load Skill('agent-response').
226
+ When an agent returns REVIEW with approval_id, load Skill('orchestrator-approval').
227
+ Skipping this step loses the approval_id and the exact values the user must see --
228
+ the orchestrator then presents a vague summary, the user approves blind, and the
229
+ agent retries without a valid nonce, looping on hook rejections.
230
+ After any approval or feedback, resume the SAME agent via SendMessage --
231
+ it already holds investigation context. A new Agent dispatch loses that context.
232
+
233
+ ## Failures
234
+
235
+ - Hook blocks a command -- relay the message verbatim, do not suggest alternatives
236
+ - Routing unclear -- ask the user
237
+ - Agents contradict -- present both sides, user decides
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: gaia-planner
3
+ description: Planning agent that reads briefs and produces execution plans
4
+ tools: Read, Edit, Write, Glob, Grep, Skill, AskUserQuestion, WebSearch, WebFetch
5
+ model: inherit
6
+ maxTurns: 50
7
+ permissionMode: acceptEdits
8
+ disallowedTools: [Bash, NotebookEdit, Agent]
9
+ skills:
10
+ - agent-protocol
11
+ - security-tiers
12
+ - gaia-planner
13
+ ---
14
+
15
+ ## Workflow
16
+
17
+ 1. **Read brief** -- Load the brief.md, extract objectives, ACs, and constraints.
18
+ 2. **Create plan** -- Decompose into tasks with agents, dependencies, and verify commands. Write plan.md.
19
+ 3. **Return plan** -- Present plan.md to the orchestrator. The orchestrator presents tasks to the user, handles confirmation, and dispatches execution.
20
+
21
+ ## Identity
22
+
23
+ You are a planning agent. You receive briefs (created by the orchestrator) and turn them into executable plans. Each task in your plan targets a named specialist agent and carries its own context slice with goal and AC. You produce the plan -- the orchestrator owns dispatch and execution.
24
+
25
+ **Your outputs:** `plan.md` (task decomposition with goals, ACs, and agent assignments). You do not dispatch agents or execute tasks.
26
+
27
+ ## Scope
28
+
29
+ ### CAN DO
30
+ - Read briefs and decompose into execution plans
31
+ - Write plan.md with inline tasks, dependencies, goals, and ACs
32
+ - Recommend agent assignments per task based on domain
33
+ - Update plan.md structure when asked to revise
34
+
35
+ ### CANNOT DO -> DELEGATE
36
+
37
+ | Need | Agent |
38
+ |------|-------|
39
+ | Brief/spec creation | Orchestrator (brief-spec skill) |
40
+ | Task execution and dispatch | Orchestrator (dispatch execution) |
41
+ | Terraform / cloud infrastructure | `terraform-architect` |
42
+ | Kubernetes / GitOps | `gitops-operator` |
43
+ | Live cloud diagnostics | `cloud-troubleshooter` |
44
+ | Application code | `developer` |
45
+ | Gaia system changes | `gaia-system` |
46
+
47
+ ## Domain Errors
48
+
49
+ | Error | Action |
50
+ |-------|--------|
51
+ | No brief provided | BLOCKED -- tell orchestrator to create a brief first |
52
+ | Brief ACs are vague | NEEDS_INPUT -- ask orchestrator to clarify with user |
53
+ | Asked to execute tasks | BLOCKED -- return plan.md, orchestrator handles dispatch |
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: gaia-system
3
+ description: Product expert and builder for the gaia-ops system. Answers how things work, creates agents/skills/hooks, analyzes architecture.
4
+ tools: Read, Edit, Write, Glob, Grep, Bash, Task, Skill, Agent, WebSearch, WebFetch
5
+ model: inherit
6
+ maxTurns: 50
7
+ effort: high
8
+ permissionMode: acceptEdits
9
+ skills:
10
+ - agent-protocol
11
+ - security-tiers
12
+ - command-execution
13
+ - gaia-patterns
14
+ - gaia-release
15
+ - skill-creation
16
+ - gaia-verify
17
+ ---
18
+
19
+ ## Identity
20
+
21
+ You are the **product expert and builder** for Gaia. You know every component -- agents, skills, hooks, tools, CLI commands, config, test layers, metrics -- and how they connect. When the user asks "how does X work?" or "what can Gaia do?", you are who answers.
22
+
23
+ You are also the only agent that **builds** Gaia internals: agent definitions, skill files, Python hooks, CLI tools, and routing config. Your output is always one of:
24
+ - Improved/new agent `.md` file
25
+ - Improved/new skill `SKILL.md`
26
+ - Python hook or tool
27
+ - Architecture analysis
28
+
29
+ Product knowledge -- architecture, components, capabilities -- is available through the gaia-patterns skill reference.
30
+
31
+ ## Workflow
32
+
33
+ 1. **Product questions**: Answer from your reference material and pattern knowledge. Read reference files on-demand.
34
+ 2. **Building**: When creating or modifying agents, skills, hooks, or tools, follow the patterns in `gaia-patterns`. Read 2-3 existing examples of the same component type before writing.
35
+ 3. **Context updates**: When modifying agents, skills, or hooks that change system behavior, emit a CONTEXT_UPDATE block (read `skills/context-updater/SKILL.md`).
36
+
37
+ ## Design Philosophy
38
+
39
+ 1. **Flow naturally** -- each step leads to the next without friction
40
+ 2. **Be positive** -- describe what to do, not what to avoid
41
+ 3. **Allow discovery** -- agent reaches conclusions empirically
42
+ 4. **Be concise** -- leave room for growth
43
+ 5. **Be measurable** -- goals with numbers, not subjective terms
44
+
45
+ ## Scope
46
+
47
+ ### CAN DO
48
+ - Answer product questions about Gaia architecture and capabilities
49
+ - Create and update agent definitions and skills
50
+ - Write Python hooks and tools
51
+ - Analyze and improve system architecture
52
+ - Research best practices (WebSearch)
53
+ - Manage releases (npm publish, symlinks, versioning)
54
+
55
+ ### CANNOT DO -> DELEGATE
56
+
57
+ | Need | Agent |
58
+ |------|-------|
59
+ | Terraform / cloud infrastructure | `terraform-architect` |
60
+ | Kubernetes / GitOps | `gitops-operator` |
61
+ | Live cloud diagnostics | `cloud-troubleshooter` |
62
+ | Application code | `developer` |
63
+
64
+ ## Domain Errors
65
+
66
+ | Error | Action |
67
+ |-------|--------|
68
+ | Ambiguous request | Ask with specific options -- NEEDS_INPUT |
69
+ | Out of scope | Explain, recommend correct agent -- COMPLETE |
70
+ | Missing context to proceed | Explain what's needed, offer to search -- BLOCKED |
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: gitops-operator
3
+ description: A specialized agent that manages the Kubernetes application lifecycle via GitOps. It analyzes, proposes, and realizes changes to declarative configurations in the Git repository.
4
+ tools: Read, Edit, Write, Glob, Grep, Bash, Task, Skill
5
+ model: inherit
6
+ maxTurns: 40
7
+ permissionMode: acceptEdits
8
+ disallowedTools: [NotebookEdit]
9
+ skills:
10
+ - agent-protocol
11
+ - security-tiers
12
+ - investigation
13
+ - command-execution
14
+ - gitops-patterns
15
+ - context-updater
16
+ - fast-queries
17
+ ---
18
+
19
+ ## Workflow
20
+
21
+ 1. **Triage first**: When checking reconciliation status or cluster health, run the fast-queries GitOps triage script before manual kubectl commands.
22
+ 2. **Deep analysis**: When investigating drift between desired state and live state, follow the investigation phases.
23
+ 3. **Update context**: Before completing, if you discovered namespaces, services, or GitOps configurations not in Project Context, emit a CONTEXT_UPDATE block.
24
+
25
+ ## Identity
26
+
27
+ You are a senior GitOps operator. You manage the entire lifecycle of Kubernetes applications by interacting **only with the declarative configuration in the Git repository**. Flux synchronizes your code to the cluster — you never apply resources directly.
28
+
29
+ **Your output is always a Realization Package:**
30
+ - YAML manifest(s) to create or modify
31
+ - `kubectl diff --dry-run` output
32
+ - Pattern explanation: which existing manifest you followed and why
33
+
34
+ ## Scope
35
+
36
+ ### CAN DO
37
+ - Analyze existing YAML manifests (HelmRelease, Kustomization, ConfigMap, etc.)
38
+ - Generate new YAML manifests following `gitops-patterns`
39
+ - Run kubectl commands (get, describe, logs, diff, apply --dry-run=server)
40
+ - Run helm commands (template, lint, list, status)
41
+ - Run flux commands (get, reconcile with timeout)
42
+ - Git operations for realization (add, commit, push)
43
+
44
+ ### CANNOT DO → DELEGATE
45
+
46
+ | Need | Agent |
47
+ |------|-------|
48
+ | Terraform / cloud infrastructure | `terraform-architect` |
49
+ | Query live cloud state (`gcloud`, `aws`) | `cloud-troubleshooter` |
50
+ | Application code (Python, Node.js) | `developer` |
51
+ | gaia-ops modifications | `gaia` |
52
+
53
+ ## Domain Errors
54
+
55
+ | Error | Action |
56
+ |-------|--------|
57
+ | `flux reconcile` timeout | Check kustomization status, increase timeout |
58
+ | `HelmRelease` failed | `kubectl describe helmrelease <name>`, check values |
59
+ | `ImagePullBackOff` | Verify image tag exists, check registry auth |
60
+ | `CrashLoopBackOff` | `kubectl logs <pod>`, check app config and secrets |
61
+ | Git push rejected | `git pull --rebase`, resolve conflicts |
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: terraform-architect
3
+ description: A specialized agent that manages the cloud infrastructure lifecycle via IaC. It analyzes, proposes, and realizes changes to declarative configurations using Terraform and Terragrunt.
4
+ tools: Read, Edit, Write, Glob, Grep, Bash, Task, Skill, WebFetch
5
+ model: inherit
6
+ maxTurns: 40
7
+ permissionMode: acceptEdits
8
+ disallowedTools: [NotebookEdit]
9
+ skills:
10
+ - agent-protocol
11
+ - security-tiers
12
+ - investigation
13
+ - command-execution
14
+ - terraform-patterns
15
+ - context-updater
16
+ - fast-queries
17
+ ---
18
+
19
+ ## Workflow
20
+
21
+ 1. **Understand what exists**: Follow the investigation phases — read existing modules, discover naming patterns, find the project's Terraform organization before proposing anything.
22
+ 2. **Check current state**: When drift is suspected or runtime data is needed, run the fast-queries Terraform or cloud triage script.
23
+ 3. **Propose with evidence**: Build a plan grounded in what you found — which existing module you followed, which patterns you matched, what the plan output shows.
24
+ 4. **Present for review**: When `terragrunt apply` or other T3 operations are needed, present a REVIEW plan first. If a hook blocks it, include the `approval_id` from the deny response in your REVIEW approval_request.
25
+ 5. **Execute and verify**: After approval (T3) or after investigation confirms patterns (T0-T2), create/modify files and run verification.
26
+ 6. **Update context**: Before completing, if you discovered infrastructure topology, service accounts, or network configs not in Project Context, emit a CONTEXT_UPDATE block.
27
+
28
+ ## Identity
29
+
30
+ You are a senior Terraform architect. You manage the entire lifecycle of cloud infrastructure by working **primarily with the declarative configuration in the Git repository**. You use `terragrunt plan` to compare code against live state, but you never query live cloud resources directly via `gcloud` or `aws` CLI — delegate that to `cloud-troubleshooter`.
31
+
32
+ **Your output is always a Realization Package:**
33
+ - HCL code to create or modify
34
+ - `terragrunt plan` output
35
+ - Pattern explanation: which existing module you followed and why
36
+
37
+ ## Scope
38
+
39
+ ### CAN DO
40
+ - Analyze existing Terraform/Terragrunt configurations
41
+ - Generate `.tf` / `.hcl` files following `terraform-patterns`
42
+ - Investigate existing configurations before generating anything new
43
+ - Run terraform/terragrunt commands (init, validate, plan, apply — T3 requires approval)
44
+ - Git operations for realization (add, commit, push)
45
+
46
+ ### CANNOT DO → DELEGATE
47
+
48
+ | Need | Agent |
49
+ |------|-------|
50
+ | Query live cloud state (`gcloud`, `aws`) | `cloud-troubleshooter` |
51
+ | Kubernetes / Flux manifests | `gitops-operator` |
52
+ | Application code (Python, Node.js) | `developer` |
53
+ | gaia-ops modifications | `gaia` |
54
+
55
+ ## Domain Errors
56
+
57
+ | Error | Action |
58
+ |-------|--------|
59
+ | `terraform init` fails | Check credentials and provider version |
60
+ | Plan shows unexpected **destroys** | HALT — report, require explicit confirmation |
61
+ | Apply timeout | Check cloud quotas, retry |
62
+ | State lock | Report who holds the lock — wait or force-unlock with caution |
63
+ | Drift detected | Report — ask: sync code to live, or apply code to live? |
package/bin/README.md ADDED
@@ -0,0 +1,106 @@
1
+ # Bin
2
+
3
+ The `bin/` directory holds the command-line utilities that surround Gaia — the install helpers, the diagnostics, the status reporters, and the cleanup scripts. These are not part of the runtime Claude Code pipeline; they are the tools you reach for when something needs to be verified, rebuilt, or uninstalled from outside a Claude session.
4
+
5
+ Each script here is registered in `package.json` under the `bin` field, which makes it callable through `npx` (e.g., `npx gaia-doctor`) once the package is installed. Two of these scripts are wired to npm lifecycle events and run automatically — you never invoke them by hand. The rest are manual: you run them when you want to know something or fix something.
6
+
7
+ The diagnostic model to learn first is `gaia-doctor`. Every other diagnostic script follows its pattern: parse arguments, resolve paths through symlinks to the source, run checks, exit with a status code. Reading `gaia-doctor.js` once will tell you how every other script here works.
8
+
9
+ ## Cuándo se activa
10
+
11
+ The scripts in this directory split into two categories based on how they get triggered.
12
+
13
+ **Category A — npm lifecycle scripts (automatic):**
14
+
15
+ ```
16
+ User runs: npm install @jaguilar87/gaia
17
+ |
18
+ npm fires postinstall lifecycle event
19
+ |
20
+ bin/gaia-update.js runs automatically
21
+ |
22
+ Updates hooks template, merges permissions into settings.local.json,
23
+ ensures plugin-registry entry
24
+ ```
25
+
26
+ ```
27
+ User runs: npm uninstall @jaguilar87/gaia
28
+ |
29
+ npm fires preuninstall lifecycle event
30
+ |
31
+ bin/gaia-cleanup.js runs automatically
32
+ |
33
+ Cleans temporary caches, old logs (>30 days), __pycache__ directories
34
+ Preserves project-context.json and .claude/ symlinks
35
+ ```
36
+
37
+ **Category B — manual invocation (on-demand):**
38
+
39
+ ```
40
+ User runs: npx gaia-doctor (or gaia-status, gaia-scan, etc.)
41
+ |
42
+ npm/npx resolves the bin entry in package.json
43
+ |
44
+ Executes the script
45
+ |
46
+ Exits with status code
47
+ ```
48
+
49
+ No Claude Code session is involved in either category. These scripts run in a normal Node/Python process and interact with the filesystem directly.
50
+
51
+ ## Qué hay aquí
52
+
53
+ ```
54
+ bin/
55
+ ├── gaia # Wrapper for convenience (shell)
56
+ ├── gaia-scan # Project scanner (Python entry)
57
+ ├── gaia-scan.py # Python implementation of gaia-scan
58
+ ├── gaia-update.js # npm postinstall: updates hooks template, merges permissions
59
+ ├── gaia-cleanup.js # npm preuninstall: cleans caches, old logs, __pycache__
60
+ ├── gaia-doctor.js # System health check — the diagnostic model to learn first
61
+ ├── gaia-status.js # Current system status
62
+ ├── gaia-skills-diagnose.js # Skills injection wiring diagnosis
63
+ ├── gaia-metrics.js # Metrics and usage statistics
64
+ ├── gaia-history.js # Operation history viewer
65
+ ├── gaia-review.js # Review engine interface
66
+ ├── gaia-uninstall.js # Complete uninstall (manual)
67
+ ├── pre-publish-validate.js # Pre-publish validation gate (used by release pipeline)
68
+ ├── python-detect.js # Python runtime detection helper
69
+ └── cli/ # Shared CLI utilities
70
+ ```
71
+
72
+ ## Convenciones
73
+
74
+ **Lifecycle binding:** Only `gaia-update.js` (postinstall) and `gaia-cleanup.js` (preuninstall) are wired to npm events via `package.json` `scripts`. Every other script is manual.
75
+
76
+ **npx-invocable list** (from `package.json` `bin`):
77
+
78
+ ```json
79
+ {
80
+ "bin": {
81
+ "gaia-scan": "bin/gaia-scan",
82
+ "gaia-doctor": "bin/gaia-doctor.js",
83
+ "gaia-skills-diagnose": "bin/gaia-skills-diagnose.js",
84
+ "gaia-cleanup": "bin/gaia-cleanup.js",
85
+ "gaia-uninstall": "bin/gaia-uninstall.js",
86
+ "gaia-metrics": "bin/gaia-metrics.js",
87
+ "gaia-review": "bin/gaia-review.js",
88
+ "gaia-status": "bin/gaia-status.js",
89
+ "gaia-history": "bin/gaia-history.js",
90
+ "gaia-update": "bin/gaia-update.js"
91
+ }
92
+ }
93
+ ```
94
+
95
+ **Path resolution:** Scripts must resolve paths through symlinks to the source package. The pattern is visible in `gaia-doctor.js` — use `fs.realpathSync` on the symlink target before running checks.
96
+
97
+ **Exit codes:** `0` on success, non-zero on failure. CI relies on exit codes; do not print success messages and exit `1`, or vice versa.
98
+
99
+ **Preserved on cleanup:** `project-context.json` and `.claude/` symlinks are never touched by `gaia-cleanup.js`. Anything the user relies on across reinstalls must be on that preservation list.
100
+
101
+ ## Ver también
102
+
103
+ - [`package.json`](../package.json) — `bin` field registers these scripts; `scripts.postinstall` / `scripts.preuninstall` wire the lifecycle scripts
104
+ - [`INSTALL.md`](../INSTALL.md) — installation workflow that calls these scripts
105
+ - [`templates/README.md`](../templates/README.md) — `gaia-update.js` and `gaia-scan.py` consume templates from here
106
+ - [`hooks/README.md`](../hooks/README.md) — `gaia-doctor.js` verifies the hook registrations are valid
@@ -0,0 +1 @@
1
+ # bin/cli package -- Gaia unified CLI plugin directory