gaia-cli 5.1.3__tar.gz → 5.6.2__tar.gz

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 (172) hide show
  1. {gaia_cli-5.1.3/src/gaia_cli.egg-info → gaia_cli-5.6.2}/PKG-INFO +59 -31
  2. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/README.md +58 -30
  3. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/pyproject.toml +4 -1
  4. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/__init__.py +2 -2
  5. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/init.py +3 -0
  6. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/network.py +10 -2
  7. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/graph.py +66 -4
  8. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/impl.py +125 -55
  9. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/install.py +2 -2
  10. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/name.py +3 -3
  11. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/push.py +1 -1
  12. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/treeManager.py +2 -2
  13. {gaia_cli-5.1.3 → gaia_cli-5.6.2/src/gaia_cli.egg-info}/PKG-INFO +59 -31
  14. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli.egg-info/SOURCES.txt +3 -1
  15. gaia_cli-5.6.2/tests/test_api_projection.py +370 -0
  16. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_auth.py +2 -0
  17. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_cli_command_migration.py +2 -0
  18. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_cli_core.py +198 -0
  19. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_crawlers.py +3 -0
  20. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_audit.py +2 -0
  21. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_build.py +1 -0
  22. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_calibrate.py +2 -0
  23. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_evidence.py +2 -0
  24. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_helpers.py +2 -0
  25. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_merge.py +2 -0
  26. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_named.py +2 -0
  27. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_rename.py +2 -0
  28. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_timeline.py +2 -0
  29. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_docs_site.py +3 -10
  30. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_docs_skill_explorer.py +3 -0
  31. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dx.py +2 -0
  32. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_embeddings.py +2 -0
  33. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_evidence_inheritance.py +3 -0
  34. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_generate_badges.py +24 -0
  35. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_install.py +3 -0
  36. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_intake.py +3 -0
  37. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_interactive.py +1 -0
  38. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_lifecycle.py +3 -0
  39. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_mcp_cmd.py +2 -0
  40. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_meta_guard.py +2 -0
  41. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_meta_ops.py +2 -0
  42. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_named_skills.py +3 -0
  43. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_packaging.py +6 -1
  44. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_path_command.py +2 -0
  45. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_pr540_review.py +2 -0
  46. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_pr635_review.py +2 -0
  47. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_pr_writer.py +3 -0
  48. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_push.py +6 -2
  49. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_real_skill_catalog.py +3 -0
  50. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_redaction.py +2 -0
  51. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_registry_layout.py +3 -0
  52. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_scanner.py +2 -0
  53. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_security_scanner.py +1 -0
  54. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_security_scanner_integration.py +1 -0
  55. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_share.py +3 -0
  56. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_suite_install.py +2 -0
  57. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_timelines.py +2 -0
  58. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_treeManager.py +15 -0
  59. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_tui_tokens.py +2 -0
  60. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_validate.py +4 -3
  61. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_verification.py +1 -0
  62. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_verify_evidence.py +3 -0
  63. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_windowsLinks.py +2 -0
  64. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_workflows.py +3 -0
  65. gaia_cli-5.6.2/tests/test_workspace_mode.py +128 -0
  66. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/LICENSE +0 -0
  67. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/setup.cfg +0 -0
  68. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/__init__.py +0 -0
  69. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/__main__.py +0 -0
  70. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/auth.py +0 -0
  71. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/authz.py +0 -0
  72. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/cardRenderer.py +0 -0
  73. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/combinator.py +0 -0
  74. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/__init__.py +0 -0
  75. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/auth.py +0 -0
  76. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/base.py +0 -0
  77. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/audit.py +0 -0
  78. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/build.py +0 -0
  79. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/calibrate.py +0 -0
  80. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/evidence.py +0 -0
  81. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/helpers.py +0 -0
  82. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/list.py +0 -0
  83. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/merge.py +0 -0
  84. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/named.py +0 -0
  85. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/rename.py +0 -0
  86. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/timeline.py +0 -0
  87. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/verify.py +0 -0
  88. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/docs_cmd.py +0 -0
  89. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/graph_cmd.py +0 -0
  90. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/hook_cmd.py +0 -0
  91. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/mcp_cmd.py +0 -0
  92. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/misc.py +0 -0
  93. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/progression.py +0 -0
  94. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/push.py +0 -0
  95. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/release.py +0 -0
  96. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/scan.py +0 -0
  97. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/share_cmd.py +0 -0
  98. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/skills.py +0 -0
  99. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/stats.py +0 -0
  100. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/tree.py +0 -0
  101. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/validate_cmd.py +0 -0
  102. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/combination.schema.json +0 -0
  103. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/meta.json +0 -0
  104. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/namedSkill.schema.json +0 -0
  105. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/pluginConfig.schema.json +0 -0
  106. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/realSkillCatalog.schema.json +0 -0
  107. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/skill.schema.json +0 -0
  108. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/skillBatch.schema.json +0 -0
  109. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/skillSuite.schema.json +0 -0
  110. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/skillTree.schema.json +0 -0
  111. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/embeddings.py +0 -0
  112. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/evidence.py +0 -0
  113. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/formatting.py +0 -0
  114. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/grading.py +0 -0
  115. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/hook.py +0 -0
  116. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/interactive.py +0 -0
  117. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/leveling.py +0 -0
  118. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/localContext.py +0 -0
  119. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/main.py +0 -0
  120. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/pathEngine.py +0 -0
  121. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/prWriter.py +0 -0
  122. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/promotion.py +0 -0
  123. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/redaction.py +0 -0
  124. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/registry.py +0 -0
  125. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/resolver.py +0 -0
  126. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/scanner.py +0 -0
  127. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/securityScanner.py +0 -0
  128. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/selector.py +0 -0
  129. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/semantic_search.py +0 -0
  130. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/share.py +0 -0
  131. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/timeline.py +0 -0
  132. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/trustMagnitude.py +0 -0
  133. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/__init__.py +0 -0
  134. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/app.py +0 -0
  135. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/screens/__init__.py +0 -0
  136. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/screens/agent.py +0 -0
  137. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/screens/hero.py +0 -0
  138. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/screens/levelup.py +0 -0
  139. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/screens/scan.py +0 -0
  140. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/screens/tree.py +0 -0
  141. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/theme.tcss +0 -0
  142. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/tokens.py +0 -0
  143. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/validate.py +0 -0
  144. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/verification.py +0 -0
  145. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/versioning.py +0 -0
  146. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/windowsLinks.py +0 -0
  147. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli.egg-info/dependency_links.txt +0 -0
  148. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli.egg-info/entry_points.txt +0 -0
  149. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli.egg-info/requires.txt +0 -0
  150. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli.egg-info/top_level.txt +0 -0
  151. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_authz.py +0 -0
  152. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_build_docs_redaction_backstop.py +0 -0
  153. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_calibrate_evidence_grades.py +0 -0
  154. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_card_renderer.py +0 -0
  155. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_evidence_regrade.py +0 -0
  156. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_evidence_ui_redesign.py +0 -0
  157. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_formatting.py +0 -0
  158. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_grading.py +0 -0
  159. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_graph.py +0 -0
  160. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_leveling.py +0 -0
  161. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_local_context.py +0 -0
  162. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_path_engine.py +0 -0
  163. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_promotion.py +0 -0
  164. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_row_grading.py +0 -0
  165. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_scan_state.py +0 -0
  166. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_selector.py +0 -0
  167. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_stats.py +0 -0
  168. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_timeline_routing.py +0 -0
  169. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_tree_renderer.py +0 -0
  170. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_trust_magnitude.py +0 -0
  171. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_unlocked_at_datetime.py +0 -0
  172. {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_versioning.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gaia-cli
3
- Version: 5.1.3
3
+ Version: 5.6.2
4
4
  Summary: Gaia AI Agent Skill Registry CLI
5
5
  Author: Gaia contributors
6
6
  License: MIT
@@ -57,10 +57,10 @@ Dynamic: license-file
57
57
  </picture>
58
58
  </div>
59
59
 
60
- # Gaia - This is not a skill marketplace
60
+ # Gaia: Definitely not a skill marketplace
61
61
 
62
- > This is an open, evidence-backed skill graph. The game is to name a skill to your repository--the best skill takes "origin".
63
- > Success means becoming the public record AI agent developers cite when making capability claims — the pkg.go.dev for agent skills.
62
+ > Open and evidence-backed skill graph. The game is to name a skill to your repository--the best skill takes "origin"!
63
+ > Success means becoming the public record vibe coders cite when making capability claims.
64
64
 
65
65
  ### How does ranking work? Read [META.md](META.md) for a comprehensive list
66
66
 
@@ -68,7 +68,14 @@ Dynamic: license-file
68
68
  [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)
69
69
  [![Website](https://img.shields.io/badge/Website-gaia.tiongson.co-f59e0b)](https://gaia.tiongson.co/)
70
70
 
71
- # Name a skill, get a badge.
71
+ # Be like Rimuru
72
+
73
+ Main inspo for this repo. Basically stole the idea and applied it to agent skills.
74
+
75
+ ![Rimuru Tempest](docs/assets/rimuru.gif)
76
+
77
+
78
+ # Get your badges! Some skills already curated.
72
79
 
73
80
  [![Gaia rank](https://gaia.tiongson.co/badges/_assets/mbtiongson1/rank.svg?repo=mbtiongson1%2Fgaia-skill-tree)](https://gaia.tiongson.co/u/mbtiongson1/)<br>
74
81
  [![Gaia skills](https://gaia.tiongson.co/badges/_assets/mbtiongson1/skills.svg?repo=mbtiongson1%2Fgaia-skill-tree)](https://gaia.tiongson.co/u/mbtiongson1/)
@@ -83,13 +90,15 @@ Generate yours at **[gaia.tiongson.co/badges/](https://gaia.tiongson.co/badges/)
83
90
 
84
91
  # Who maintains this?
85
92
 
93
+ Right now just me.
94
+
86
95
  Truth is, Gaia will exist even without anyone sending their skills.
87
96
 
88
97
  I built this because skills should be attributed to the people who proved them. Permanently, not just until the repo goes private.
89
98
 
90
99
  So that means, its the developers who make skills maintaining this. I have a thorough curation process, and the dev community is evidence on why this works. As long as developers making skills exists, this registry will exist. This is open-source, so feel free to contribute!
91
100
 
92
- # The Skill Tree
101
+ # The Gaia Skill Tree!
93
102
 
94
103
  <!-- gaia:registry-start -->
95
104
  ```text
@@ -130,9 +139,9 @@ So that means, its the developers who make skills maintaining this. I have a tho
130
139
  <!-- gaia:registry-end -->
131
140
 
132
141
 
133
- ### How skills fuse
142
+ ### How Skills Fuse
134
143
 
135
- When two or more Basic skills combine, they can form an Extra. This is what `gaia scan` and `gaia fuse` render in your terminal:
144
+ Do a `gaia scan` and `gaia fuse` render in your terminal:
136
145
 
137
146
  ```text
138
147
  mattpocock/grill-me ────────────┐
@@ -147,7 +156,7 @@ Basics fuse into Extras; Extras can fuse into Ultimates. Evidence powers each as
147
156
 
148
157
  ---
149
158
 
150
- ## Skill Tiers & Stars
159
+ ## Stars
151
160
 
152
161
  Gaia uses a tiered star system (**0★–6★**) to rank agent capabilities.
153
162
 
@@ -158,7 +167,26 @@ Gaia uses a tiered star system (**0★–6★**) to rank agent capabilities.
158
167
  | ◇ Extra | Composite workflow | 2★ → 4★ |
159
168
  | ◆ Ultimate | Platform capstone | 5★ → 6★ |
160
169
 
161
- Skills rank up through **verifiable evidence** scored on two axes — **Evidence Type** (provenance: one of 10 canonical types per the G7 Trust Taxonomy RFC, e.g. `arxiv`, `repo`, `repo-own`, `github-stars`, `github-stars-own`, `peer-review`, `social-signal`, `proxy-containment`, `benchmark-result`, `verifier-attestation`, `fusion-recipe`) and **Evidence Grade** (S / A / B / C, derived from the row's Trust Magnitude) — and can be demoted by **demerits**. The legacy single-axis Class A/B/C is deprecated and read only as a fallback during migration. The skill-level **Trust Magnitude** is now live in code (`src/gaia_cli/promotion.py` / `verification.py`).
170
+ ## Evidence
171
+
172
+ 1. **Evidence Type** (provenance: one of 10 canonical types per the G7 Trust Taxonomy RFC
173
+
174
+ `arxiv`
175
+ `repo` or `repo-own`
176
+ `github-stars`
177
+ `github-stars-own`
178
+ `peer-review`
179
+ `social-signal`
180
+ `proxy-containment`
181
+ `benchmark-result`
182
+ `verifier-attestation`
183
+ `fusion-recipe`
184
+
185
+ 2. **Evidence Grade**
186
+ S | A | B | C | ungraded
187
+
188
+ 4. **Trust Magnitude**
189
+ This is the evidence grade at the Skill level.
162
190
 
163
191
  > **Detailed Policy:** See [META.md](META.md) for the full evidence methodology, ranking floors, and prestige requirements.
164
192
 
@@ -168,10 +196,10 @@ Skills rank up through **verifiable evidence** scored on two axes — **Evidence
168
196
 
169
197
  ## Quickstart
170
198
 
171
- **1. Install the CLI**
199
+ **1. CLI
172
200
 
173
201
  <!-- gaia:version-start -->
174
- Current Gaia CLI version: `5.1.3`.
202
+ Current Gaia CLI version: `5.6.2`.
175
203
 
176
204
  ```bash
177
205
  curl -fsSL https://gaia.tiongson.co/install.sh | sh
@@ -184,8 +212,6 @@ npm install -g @gaia-registry/cli
184
212
  ```
185
213
  <!-- gaia:version-end -->
186
214
 
187
- Requires Python 3.8+. The script prefers `pipx` if available, otherwise falls back to `pip install --user` and prints a PATH hint if needed.
188
-
189
215
  <details>
190
216
  <summary>pipx / Windows alternatives</summary>
191
217
 
@@ -201,7 +227,7 @@ py -m pip install gaia-cli
201
227
  $env:PATH += ";" + (python -c "import sysconfig; print(sysconfig.get_path('scripts', 'nt_user'))")
202
228
  ```
203
229
 
204
- **Registry development** (editable install with all extras):
230
+ **Full Install (for devs)** (editable install with all extras):
205
231
  ```bash
206
232
  git clone https://github.com/mbtiongson1/gaia-skill-tree.git
207
233
  cd gaia-skill-tree
@@ -217,7 +243,7 @@ packaging-specific tests are skipped locally with guidance to install developer
217
243
  gaia update
218
244
  ```
219
245
 
220
- **2. Initialise & scan**
246
+ **2. Init / Scan**
221
247
 
222
248
  ```bash
223
249
  gaia init
@@ -227,42 +253,43 @@ gaia init
227
253
  gaia scan
228
254
  ```
229
255
 
230
- Detects skills your agent demonstrates.
256
+ Your repo will be scanned for existing skills. Everything will be in `.gaia` folder.
231
257
 
232
- **3. Push for review**
258
+ **3. Push to this repo!**
233
259
 
234
260
  ```bash
235
261
  gaia push
236
262
  ```
237
263
 
238
- A GitHub issue opens automatically. Maintainers review and promote; your name attaches at 2★. (or 1★ if no repo is linked).
264
+ A GitHub issue opens automatically. Don't worry, we thoroughly review every intake.
239
265
 
240
- **4. Optional: MCP Server**
266
+ **4. MCP Server**
241
267
 
242
268
  ```bash
243
269
  claude mcp add gaia -- npx @gaia-registry/mcp-server
244
270
  ```
245
271
 
246
- Any MCP-compatible client. See [packages/mcp/](packages/mcp/) for config examples.
272
+ If you wanna be fancy and do all sorts of agentic MCP goodness.
247
273
 
248
274
  ---
249
275
 
250
276
  ## Interactive TUI
251
277
 
252
- After step 1, launch with no arguments:
253
-
254
278
  ```bash
255
279
  gaia
256
280
  ```
281
+ Will open all sorts of commands in a nice way.
257
282
 
258
- Navigate your skills:
283
+ ```bash
284
+ gaia skills
285
+ ```
286
+
287
+ Navigate skills:
259
288
  - **Fuzzy search** by name, description, or intent
260
289
  - **View tree** (`^T`) and **run scan** (`^G`) without leaving the TUI
261
290
  - **Install skills** with one keystroke
262
291
  - Keyboard-native: `↑↓` navigate · `Enter` install · `q` quit
263
292
 
264
- Requires `textual` (included with `pip install gaia-cli`).
265
-
266
293
  ---
267
294
 
268
295
  ## CLI Reference
@@ -321,9 +348,9 @@ Utilities:
321
348
  gaia logout Sign out of GitHub (clears the local token)
322
349
  gaia version
323
350
  gaia update
324
- gaia mcp
325
- gaia release <patch|minor|major>
326
- gaia docs build [--check]
351
+ gaia dev mcp
352
+ gaia dev release <patch|minor|major>
353
+ gaia dev docs [--check]
327
354
 
328
355
  Maintainer commands: gaia dev --help
329
356
 
@@ -332,7 +359,7 @@ Maintainer commands: gaia dev --help
332
359
 
333
360
  ---
334
361
 
335
- ## MCP Server
362
+ ## MCP Server Full Instructions
336
363
 
337
364
  `@gaia-registry/mcp-server` connects Gaia to MCP-compatible agents (Claude Code, Cursor, VS Code, etc.).
338
365
 
@@ -379,7 +406,7 @@ Full policy/reviewer guidance: <https://github.com/mbtiongson1/gaia-skill-tree/w
379
406
 
380
407
  ## Contributors
381
408
 
382
- Thank you to everyone who has expanded the Gaia registry.
409
+ Thank you to everyone who has expanded the Gaia registry <3 You are the best!
383
410
 
384
411
  ### Core Team
385
412
 
@@ -410,6 +437,7 @@ Community contributors (1–2 skills each): [@karpathy](https://github.com/karpa
410
437
  |---|---|
411
438
  | [@balukosuri](https://github.com/balukosuri) | Evidence: community reproduction of Karpathy's autoresearch as a universal skill |
412
439
  | [@kriptoburak](https://github.com/kriptoburak) | Evidence evaluator: x-twitter-automation evidence review |
440
+ | [@fahimkarim01](https://github.com/fahimkarim01) | Curation: corrected pexp13/sentiment-analysis metadata links |
413
441
 
414
442
  ### Bots
415
443
 
@@ -5,10 +5,10 @@
5
5
  </picture>
6
6
  </div>
7
7
 
8
- # Gaia - This is not a skill marketplace
8
+ # Gaia: Definitely not a skill marketplace
9
9
 
10
- > This is an open, evidence-backed skill graph. The game is to name a skill to your repository--the best skill takes "origin".
11
- > Success means becoming the public record AI agent developers cite when making capability claims — the pkg.go.dev for agent skills.
10
+ > Open and evidence-backed skill graph. The game is to name a skill to your repository--the best skill takes "origin"!
11
+ > Success means becoming the public record vibe coders cite when making capability claims.
12
12
 
13
13
  ### How does ranking work? Read [META.md](META.md) for a comprehensive list
14
14
 
@@ -16,7 +16,14 @@
16
16
  [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)
17
17
  [![Website](https://img.shields.io/badge/Website-gaia.tiongson.co-f59e0b)](https://gaia.tiongson.co/)
18
18
 
19
- # Name a skill, get a badge.
19
+ # Be like Rimuru
20
+
21
+ Main inspo for this repo. Basically stole the idea and applied it to agent skills.
22
+
23
+ ![Rimuru Tempest](docs/assets/rimuru.gif)
24
+
25
+
26
+ # Get your badges! Some skills already curated.
20
27
 
21
28
  [![Gaia rank](https://gaia.tiongson.co/badges/_assets/mbtiongson1/rank.svg?repo=mbtiongson1%2Fgaia-skill-tree)](https://gaia.tiongson.co/u/mbtiongson1/)<br>
22
29
  [![Gaia skills](https://gaia.tiongson.co/badges/_assets/mbtiongson1/skills.svg?repo=mbtiongson1%2Fgaia-skill-tree)](https://gaia.tiongson.co/u/mbtiongson1/)
@@ -31,13 +38,15 @@ Generate yours at **[gaia.tiongson.co/badges/](https://gaia.tiongson.co/badges/)
31
38
 
32
39
  # Who maintains this?
33
40
 
41
+ Right now just me.
42
+
34
43
  Truth is, Gaia will exist even without anyone sending their skills.
35
44
 
36
45
  I built this because skills should be attributed to the people who proved them. Permanently, not just until the repo goes private.
37
46
 
38
47
  So that means, its the developers who make skills maintaining this. I have a thorough curation process, and the dev community is evidence on why this works. As long as developers making skills exists, this registry will exist. This is open-source, so feel free to contribute!
39
48
 
40
- # The Skill Tree
49
+ # The Gaia Skill Tree!
41
50
 
42
51
  <!-- gaia:registry-start -->
43
52
  ```text
@@ -78,9 +87,9 @@ So that means, its the developers who make skills maintaining this. I have a tho
78
87
  <!-- gaia:registry-end -->
79
88
 
80
89
 
81
- ### How skills fuse
90
+ ### How Skills Fuse
82
91
 
83
- When two or more Basic skills combine, they can form an Extra. This is what `gaia scan` and `gaia fuse` render in your terminal:
92
+ Do a `gaia scan` and `gaia fuse` render in your terminal:
84
93
 
85
94
  ```text
86
95
  mattpocock/grill-me ────────────┐
@@ -95,7 +104,7 @@ Basics fuse into Extras; Extras can fuse into Ultimates. Evidence powers each as
95
104
 
96
105
  ---
97
106
 
98
- ## Skill Tiers & Stars
107
+ ## Stars
99
108
 
100
109
  Gaia uses a tiered star system (**0★–6★**) to rank agent capabilities.
101
110
 
@@ -106,7 +115,26 @@ Gaia uses a tiered star system (**0★–6★**) to rank agent capabilities.
106
115
  | ◇ Extra | Composite workflow | 2★ → 4★ |
107
116
  | ◆ Ultimate | Platform capstone | 5★ → 6★ |
108
117
 
109
- Skills rank up through **verifiable evidence** scored on two axes — **Evidence Type** (provenance: one of 10 canonical types per the G7 Trust Taxonomy RFC, e.g. `arxiv`, `repo`, `repo-own`, `github-stars`, `github-stars-own`, `peer-review`, `social-signal`, `proxy-containment`, `benchmark-result`, `verifier-attestation`, `fusion-recipe`) and **Evidence Grade** (S / A / B / C, derived from the row's Trust Magnitude) — and can be demoted by **demerits**. The legacy single-axis Class A/B/C is deprecated and read only as a fallback during migration. The skill-level **Trust Magnitude** is now live in code (`src/gaia_cli/promotion.py` / `verification.py`).
118
+ ## Evidence
119
+
120
+ 1. **Evidence Type** (provenance: one of 10 canonical types per the G7 Trust Taxonomy RFC
121
+
122
+ `arxiv`
123
+ `repo` or `repo-own`
124
+ `github-stars`
125
+ `github-stars-own`
126
+ `peer-review`
127
+ `social-signal`
128
+ `proxy-containment`
129
+ `benchmark-result`
130
+ `verifier-attestation`
131
+ `fusion-recipe`
132
+
133
+ 2. **Evidence Grade**
134
+ S | A | B | C | ungraded
135
+
136
+ 4. **Trust Magnitude**
137
+ This is the evidence grade at the Skill level.
110
138
 
111
139
  > **Detailed Policy:** See [META.md](META.md) for the full evidence methodology, ranking floors, and prestige requirements.
112
140
 
@@ -116,10 +144,10 @@ Skills rank up through **verifiable evidence** scored on two axes — **Evidence
116
144
 
117
145
  ## Quickstart
118
146
 
119
- **1. Install the CLI**
147
+ **1. CLI
120
148
 
121
149
  <!-- gaia:version-start -->
122
- Current Gaia CLI version: `5.1.3`.
150
+ Current Gaia CLI version: `5.6.2`.
123
151
 
124
152
  ```bash
125
153
  curl -fsSL https://gaia.tiongson.co/install.sh | sh
@@ -132,8 +160,6 @@ npm install -g @gaia-registry/cli
132
160
  ```
133
161
  <!-- gaia:version-end -->
134
162
 
135
- Requires Python 3.8+. The script prefers `pipx` if available, otherwise falls back to `pip install --user` and prints a PATH hint if needed.
136
-
137
163
  <details>
138
164
  <summary>pipx / Windows alternatives</summary>
139
165
 
@@ -149,7 +175,7 @@ py -m pip install gaia-cli
149
175
  $env:PATH += ";" + (python -c "import sysconfig; print(sysconfig.get_path('scripts', 'nt_user'))")
150
176
  ```
151
177
 
152
- **Registry development** (editable install with all extras):
178
+ **Full Install (for devs)** (editable install with all extras):
153
179
  ```bash
154
180
  git clone https://github.com/mbtiongson1/gaia-skill-tree.git
155
181
  cd gaia-skill-tree
@@ -165,7 +191,7 @@ packaging-specific tests are skipped locally with guidance to install developer
165
191
  gaia update
166
192
  ```
167
193
 
168
- **2. Initialise & scan**
194
+ **2. Init / Scan**
169
195
 
170
196
  ```bash
171
197
  gaia init
@@ -175,42 +201,43 @@ gaia init
175
201
  gaia scan
176
202
  ```
177
203
 
178
- Detects skills your agent demonstrates.
204
+ Your repo will be scanned for existing skills. Everything will be in `.gaia` folder.
179
205
 
180
- **3. Push for review**
206
+ **3. Push to this repo!**
181
207
 
182
208
  ```bash
183
209
  gaia push
184
210
  ```
185
211
 
186
- A GitHub issue opens automatically. Maintainers review and promote; your name attaches at 2★. (or 1★ if no repo is linked).
212
+ A GitHub issue opens automatically. Don't worry, we thoroughly review every intake.
187
213
 
188
- **4. Optional: MCP Server**
214
+ **4. MCP Server**
189
215
 
190
216
  ```bash
191
217
  claude mcp add gaia -- npx @gaia-registry/mcp-server
192
218
  ```
193
219
 
194
- Any MCP-compatible client. See [packages/mcp/](packages/mcp/) for config examples.
220
+ If you wanna be fancy and do all sorts of agentic MCP goodness.
195
221
 
196
222
  ---
197
223
 
198
224
  ## Interactive TUI
199
225
 
200
- After step 1, launch with no arguments:
201
-
202
226
  ```bash
203
227
  gaia
204
228
  ```
229
+ Will open all sorts of commands in a nice way.
205
230
 
206
- Navigate your skills:
231
+ ```bash
232
+ gaia skills
233
+ ```
234
+
235
+ Navigate skills:
207
236
  - **Fuzzy search** by name, description, or intent
208
237
  - **View tree** (`^T`) and **run scan** (`^G`) without leaving the TUI
209
238
  - **Install skills** with one keystroke
210
239
  - Keyboard-native: `↑↓` navigate · `Enter` install · `q` quit
211
240
 
212
- Requires `textual` (included with `pip install gaia-cli`).
213
-
214
241
  ---
215
242
 
216
243
  ## CLI Reference
@@ -269,9 +296,9 @@ Utilities:
269
296
  gaia logout Sign out of GitHub (clears the local token)
270
297
  gaia version
271
298
  gaia update
272
- gaia mcp
273
- gaia release <patch|minor|major>
274
- gaia docs build [--check]
299
+ gaia dev mcp
300
+ gaia dev release <patch|minor|major>
301
+ gaia dev docs [--check]
275
302
 
276
303
  Maintainer commands: gaia dev --help
277
304
 
@@ -280,7 +307,7 @@ Maintainer commands: gaia dev --help
280
307
 
281
308
  ---
282
309
 
283
- ## MCP Server
310
+ ## MCP Server Full Instructions
284
311
 
285
312
  `@gaia-registry/mcp-server` connects Gaia to MCP-compatible agents (Claude Code, Cursor, VS Code, etc.).
286
313
 
@@ -327,7 +354,7 @@ Full policy/reviewer guidance: <https://github.com/mbtiongson1/gaia-skill-tree/w
327
354
 
328
355
  ## Contributors
329
356
 
330
- Thank you to everyone who has expanded the Gaia registry.
357
+ Thank you to everyone who has expanded the Gaia registry <3 You are the best!
331
358
 
332
359
  ### Core Team
333
360
 
@@ -358,6 +385,7 @@ Community contributors (1–2 skills each): [@karpathy](https://github.com/karpa
358
385
  |---|---|
359
386
  | [@balukosuri](https://github.com/balukosuri) | Evidence: community reproduction of Karpathy's autoresearch as a universal skill |
360
387
  | [@kriptoburak](https://github.com/kriptoburak) | Evidence evaluator: x-twitter-automation evidence review |
388
+ | [@fahimkarim01](https://github.com/fahimkarim01) | Curation: corrected pexp13/sentiment-analysis metadata links |
361
389
 
362
390
  ### Bots
363
391
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "gaia-cli"
7
- version = "5.1.3"
7
+ version = "5.6.2"
8
8
  description = "Gaia AI Agent Skill Registry CLI"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -97,7 +97,10 @@ testpaths = ["tests"]
97
97
  norecursedirs = ["tests/_archive"]
98
98
  timeout = 60
99
99
  timeout_method = "thread"
100
+ addopts = "-ra --strict-markers"
100
101
  markers = [
101
102
  "packaging: package build and wheel installation checks",
102
103
  "smoke: fast pre-push subset; covers high-value contracts (schema sync, wheel build, init, registry resolution, docs cohesion)",
104
+ "integration: spawns subprocesses, hits network/filesystem heavily, or exercises full CLI lifecycle — skipped in fast tier",
105
+ "slow: any single test consistently >2s wall-clock — skipped in fast tier",
103
106
  ]
@@ -78,8 +78,8 @@ Read-only (no Verifier required):
78
78
  gaia dev list
79
79
  gaia dev audit <skill_id>
80
80
  gaia dev diff [ref]
81
- gaia validate [--intake] [--meta-sync]
82
- gaia test <suite>
81
+ gaia dev validate [--intake] [--meta-sync]
82
+ gaia dev test <suite>
83
83
  """
84
84
 
85
85
  class DevCommand(Command):
@@ -26,6 +26,9 @@ class InitCommand(Command):
26
26
  action="store_true",
27
27
  help="Enable automatic prompts for detected skill combinations",
28
28
  )
29
+ parser.add_argument(
30
+ "--workspace", action="store_true", help="Force workspace mode (local scan/tree only, disables remote push)"
31
+ )
29
32
 
30
33
  def execute(self, args: argparse.Namespace) -> int | None:
31
34
  from gaia_cli.main import init_command
@@ -6,7 +6,11 @@ class FetchCommand(Command):
6
6
  help = "Download the latest canonical registry files to .gaia/registry"
7
7
 
8
8
  def configure(self, parser: argparse.ArgumentParser) -> None:
9
- pass
9
+ parser.add_argument(
10
+ "--allow-downgrade",
11
+ action="store_true",
12
+ help="Allow overwriting local registry with an older remote version",
13
+ )
10
14
 
11
15
  def execute(self, args: argparse.Namespace) -> int | None:
12
16
  from gaia_cli.main import fetch_command
@@ -18,7 +22,11 @@ class PullCommand(Command):
18
22
  help = "Fetch registry data and run a full scan"
19
23
 
20
24
  def configure(self, parser: argparse.ArgumentParser) -> None:
21
- pass
25
+ parser.add_argument(
26
+ "--allow-downgrade",
27
+ action="store_true",
28
+ help="Allow overwriting local registry with an older remote version",
29
+ )
22
30
 
23
31
  def execute(self, args: argparse.Namespace) -> int | None:
24
32
  from gaia_cli.main import pull_command
@@ -288,7 +288,7 @@ def write_gexf(
288
288
  return out_path
289
289
 
290
290
 
291
- def render_svg(render_graph: dict[str, Any]) -> str:
291
+ def render_svg(render_graph: dict[str, Any], is_workspace_mode: bool = False) -> str:
292
292
  width = int(render_graph.get("width", 1280))
293
293
  height = int(render_graph.get("height", 880))
294
294
  nodes = render_graph.get("nodes", [])
@@ -370,6 +370,13 @@ def render_svg(render_graph: dict[str, Any]) -> str:
370
370
  f'<text x="{legend_x + 24}" y="{y}">{color["label"]}: {count}</text>'
371
371
  )
372
372
  lines.append("</g>")
373
+ if is_workspace_mode:
374
+ # Semi-transparent diagonal watermark text overlay
375
+ lines.append(
376
+ f'<text x="{width / 2:.1f}" y="{height / 2:.1f}" fill="#334155" opacity="0.15" '
377
+ f'font-size="64" font-weight="900" font-family="sans-serif" text-anchor="middle" '
378
+ f'transform="rotate(-30 {width / 2:.1f} {height / 2:.1f})">WORKSPACE ONLY</text>'
379
+ )
373
380
  lines.append("</svg>")
374
381
  return "\n".join(lines) + "\n"
375
382
 
@@ -384,6 +391,7 @@ def render_html(
384
391
  *,
385
392
  user_ctx: dict[str, Any] | None = None,
386
393
  icons_svg: str | None = None,
394
+ is_workspace_mode: bool = False,
387
395
  ) -> str:
388
396
  named_skills = named_skills or {"buckets": {}}
389
397
  user_ctx_data: dict[str, Any] = user_ctx if user_ctx is not None else {}
@@ -395,6 +403,43 @@ def render_html(
395
403
  if "meta" not in graph:
396
404
  graph["meta"] = {"levelColors": {}, "levelLabels": {}}
397
405
 
406
+ watermark_style = ""
407
+ watermark_html = ""
408
+ if is_workspace_mode:
409
+ watermark_style = """
410
+ .workspace-watermark {
411
+ position: fixed;
412
+ top: 1.5rem;
413
+ right: 1.5rem;
414
+ z-index: 9999;
415
+ background: rgba(15, 23, 42, 0.85);
416
+ backdrop-filter: blur(8px);
417
+ -webkit-backdrop-filter: blur(8px);
418
+ border: 1px solid rgba(245, 158, 11, 0.3);
419
+ padding: 0.5rem 1rem;
420
+ border-radius: 9999px;
421
+ font-size: 0.75rem;
422
+ font-weight: 700;
423
+ letter-spacing: 0.05em;
424
+ text-transform: uppercase;
425
+ color: #f8fafc;
426
+ pointer-events: none;
427
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.6);
428
+ display: flex;
429
+ align-items: center;
430
+ gap: 6px;
431
+ }
432
+ .workspace-watermark::before {
433
+ content: "";
434
+ display: inline-block;
435
+ width: 8px;
436
+ height: 8px;
437
+ background: #f59e0b;
438
+ border-radius: 50%;
439
+ }
440
+ """
441
+ watermark_html = '<div class="workspace-watermark">Workspace Mode</div>'
442
+
398
443
  return f'''<!DOCTYPE html>
399
444
  <html lang="en" data-graph-mode="local" data-graph-handle="{_username}">
400
445
  <head>
@@ -419,6 +464,7 @@ def render_html(
419
464
  canvas {{ display: block; width: 100%; height: 100%; outline: none; }}
420
465
  [data-graph-trigger] {{ display: none; }}
421
466
  .graph-search-wrap, .graph-legend, .graph-fullscreen-overlay {{ display: flex !important; }}
467
+ {watermark_style}
422
468
  </style>
423
469
  </head>
424
470
  <body class="home-page">
@@ -428,6 +474,7 @@ def render_html(
428
474
  <div class="hero-content" style="display:none"></div>
429
475
  <button type="button" data-graph-trigger id="graphTrigger" style="display:none"></button>
430
476
  </section>
477
+ {watermark_html}
431
478
 
432
479
  <script type="application/json" id="gaia-graph-data">{_html_json(graph)}</script>
433
480
  <script type="application/json" id="gaia-named-skills">{_html_json(named_skills)}</script>
@@ -481,6 +528,7 @@ def write_graph_artifact(
481
528
  user_ctx: dict[str, Any] | None = None,
482
529
  custom: bool = False,
483
530
  known_only: bool = True,
531
+ is_workspace: bool = False,
484
532
  ) -> tuple[Path, dict[str, Any]]:
485
533
  root = _registry_root(registry_path)
486
534
  graph = load_graph(root)
@@ -604,11 +652,11 @@ def write_graph_artifact(
604
652
  except OSError:
605
653
  pass
606
654
  out_path.write_text(
607
- render_html(graph, load_named_skills(root), user_ctx=user_ctx, icons_svg=icons_svg),
655
+ render_html(graph, load_named_skills(root), user_ctx=user_ctx, icons_svg=icons_svg, is_workspace_mode=is_workspace),
608
656
  encoding="utf-8",
609
657
  )
610
658
  elif fmt == "svg":
611
- out_path.write_text(render_svg(render_graph), encoding="utf-8")
659
+ out_path.write_text(render_svg(render_graph, is_workspace_mode=is_workspace), encoding="utf-8")
612
660
  elif fmt == "json":
613
661
  out_path.write_text(json.dumps(render_graph, indent=2) + "\n", encoding="utf-8")
614
662
  else:
@@ -639,6 +687,7 @@ def graph_command(args: Any) -> None:
639
687
 
640
688
  # Build local user context if a username is configured
641
689
  user_ctx: dict[str, Any] | None = None
690
+ is_workspace = False
642
691
  try:
643
692
  from gaia_cli import scanner
644
693
  from gaia_cli.localContext import LocalContext
@@ -647,9 +696,14 @@ def graph_command(args: Any) -> None:
647
696
  config = scanner.load_config()
648
697
  username = (config or {}).get("gaiaUser") or (config or {}).get("username") or ""
649
698
 
699
+ if config and config.get("workspaceMode"):
700
+ is_workspace = True
701
+
650
702
  repo_title = ""
651
703
  try:
652
704
  repo_title = detect_source_repo(config) if config else ""
705
+ except NonPublicRepoError:
706
+ is_workspace = True
653
707
  except Exception:
654
708
  pass
655
709
 
@@ -668,7 +722,15 @@ def graph_command(args: Any) -> None:
668
722
  canon = getattr(args, "canon", False)
669
723
  custom = getattr(args, "custom", False) or (not canon)
670
724
  known_only = not getattr(args, "show_all", False)
671
- out_path, filtered_graph = write_graph_artifact(registry_path, output=output, fmt=fmt, user_ctx=user_ctx, custom=custom, known_only=known_only)
725
+ out_path, filtered_graph = write_graph_artifact(
726
+ registry_path,
727
+ output=output,
728
+ fmt=fmt,
729
+ user_ctx=user_ctx,
730
+ custom=custom,
731
+ known_only=known_only,
732
+ is_workspace=is_workspace,
733
+ )
672
734
  except FileNotFoundError as exc:
673
735
  print(str(exc), file=sys.stderr)
674
736
  return