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.
- {gaia_cli-5.1.3/src/gaia_cli.egg-info → gaia_cli-5.6.2}/PKG-INFO +59 -31
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/README.md +58 -30
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/pyproject.toml +4 -1
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/__init__.py +2 -2
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/init.py +3 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/network.py +10 -2
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/graph.py +66 -4
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/impl.py +125 -55
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/install.py +2 -2
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/name.py +3 -3
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/push.py +1 -1
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/treeManager.py +2 -2
- {gaia_cli-5.1.3 → gaia_cli-5.6.2/src/gaia_cli.egg-info}/PKG-INFO +59 -31
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli.egg-info/SOURCES.txt +3 -1
- gaia_cli-5.6.2/tests/test_api_projection.py +370 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_auth.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_cli_command_migration.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_cli_core.py +198 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_crawlers.py +3 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_audit.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_build.py +1 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_calibrate.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_evidence.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_helpers.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_merge.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_named.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_rename.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dev_timeline.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_docs_site.py +3 -10
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_docs_skill_explorer.py +3 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_dx.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_embeddings.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_evidence_inheritance.py +3 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_generate_badges.py +24 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_install.py +3 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_intake.py +3 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_interactive.py +1 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_lifecycle.py +3 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_mcp_cmd.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_meta_guard.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_meta_ops.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_named_skills.py +3 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_packaging.py +6 -1
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_path_command.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_pr540_review.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_pr635_review.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_pr_writer.py +3 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_push.py +6 -2
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_real_skill_catalog.py +3 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_redaction.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_registry_layout.py +3 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_scanner.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_security_scanner.py +1 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_security_scanner_integration.py +1 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_share.py +3 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_suite_install.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_timelines.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_treeManager.py +15 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_tui_tokens.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_validate.py +4 -3
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_verification.py +1 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_verify_evidence.py +3 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_windowsLinks.py +2 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_workflows.py +3 -0
- gaia_cli-5.6.2/tests/test_workspace_mode.py +128 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/LICENSE +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/setup.cfg +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/__init__.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/__main__.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/auth.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/authz.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/cardRenderer.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/combinator.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/__init__.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/auth.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/base.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/audit.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/build.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/calibrate.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/evidence.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/helpers.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/list.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/merge.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/named.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/rename.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/timeline.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/dev/verify.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/docs_cmd.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/graph_cmd.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/hook_cmd.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/mcp_cmd.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/misc.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/progression.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/push.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/release.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/scan.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/share_cmd.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/skills.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/stats.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/tree.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/commands/validate_cmd.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/combination.schema.json +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/meta.json +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/namedSkill.schema.json +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/pluginConfig.schema.json +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/realSkillCatalog.schema.json +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/skill.schema.json +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/skillBatch.schema.json +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/skillSuite.schema.json +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/data/registry/schema/skillTree.schema.json +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/embeddings.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/evidence.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/formatting.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/grading.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/hook.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/interactive.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/leveling.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/localContext.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/main.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/pathEngine.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/prWriter.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/promotion.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/redaction.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/registry.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/resolver.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/scanner.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/securityScanner.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/selector.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/semantic_search.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/share.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/timeline.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/trustMagnitude.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/__init__.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/app.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/screens/__init__.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/screens/agent.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/screens/hero.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/screens/levelup.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/screens/scan.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/screens/tree.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/theme.tcss +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/tui/tokens.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/validate.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/verification.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/versioning.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli/windowsLinks.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli.egg-info/dependency_links.txt +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli.egg-info/entry_points.txt +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli.egg-info/requires.txt +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/src/gaia_cli.egg-info/top_level.txt +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_authz.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_build_docs_redaction_backstop.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_calibrate_evidence_grades.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_card_renderer.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_evidence_regrade.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_evidence_ui_redesign.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_formatting.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_grading.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_graph.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_leveling.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_local_context.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_path_engine.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_promotion.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_row_grading.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_scan_state.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_selector.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_stats.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_timeline_routing.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_tree_renderer.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_trust_magnitude.py +0 -0
- {gaia_cli-5.1.3 → gaia_cli-5.6.2}/tests/test_unlocked_at_datetime.py +0 -0
- {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.
|
|
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
|
|
60
|
+
# Gaia: Definitely not a skill marketplace
|
|
61
61
|
|
|
62
|
-
>
|
|
63
|
-
> Success means becoming the public record
|
|
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)
|
|
69
69
|
[](https://gaia.tiongson.co/)
|
|
70
70
|
|
|
71
|
-
#
|
|
71
|
+
# Be like Rimuru
|
|
72
|
+
|
|
73
|
+
Main inspo for this repo. Basically stole the idea and applied it to agent skills.
|
|
74
|
+
|
|
75
|
+

|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
# Get your badges! Some skills already curated.
|
|
72
79
|
|
|
73
80
|
[](https://gaia.tiongson.co/u/mbtiongson1/)<br>
|
|
74
81
|
[](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
|
|
142
|
+
### How Skills Fuse
|
|
134
143
|
|
|
135
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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.
|
|
199
|
+
**1. CLI
|
|
172
200
|
|
|
173
201
|
<!-- gaia:version-start -->
|
|
174
|
-
Current Gaia CLI version: `5.
|
|
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
|
-
**
|
|
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.
|
|
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
|
-
|
|
256
|
+
Your repo will be scanned for existing skills. Everything will be in `.gaia` folder.
|
|
231
257
|
|
|
232
|
-
**3. Push
|
|
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.
|
|
264
|
+
A GitHub issue opens automatically. Don't worry, we thoroughly review every intake.
|
|
239
265
|
|
|
240
|
-
**4.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
8
|
+
# Gaia: Definitely not a skill marketplace
|
|
9
9
|
|
|
10
|
-
>
|
|
11
|
-
> Success means becoming the public record
|
|
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)
|
|
17
17
|
[](https://gaia.tiongson.co/)
|
|
18
18
|
|
|
19
|
-
#
|
|
19
|
+
# Be like Rimuru
|
|
20
|
+
|
|
21
|
+
Main inspo for this repo. Basically stole the idea and applied it to agent skills.
|
|
22
|
+
|
|
23
|
+

|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
# Get your badges! Some skills already curated.
|
|
20
27
|
|
|
21
28
|
[](https://gaia.tiongson.co/u/mbtiongson1/)<br>
|
|
22
29
|
[](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
|
|
90
|
+
### How Skills Fuse
|
|
82
91
|
|
|
83
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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.
|
|
147
|
+
**1. CLI
|
|
120
148
|
|
|
121
149
|
<!-- gaia:version-start -->
|
|
122
|
-
Current Gaia CLI version: `5.
|
|
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
|
-
**
|
|
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.
|
|
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
|
-
|
|
204
|
+
Your repo will be scanned for existing skills. Everything will be in `.gaia` folder.
|
|
179
205
|
|
|
180
|
-
**3. Push
|
|
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.
|
|
212
|
+
A GitHub issue opens automatically. Don't worry, we thoroughly review every intake.
|
|
187
213
|
|
|
188
|
-
**4.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|