gaia-cli 7.0.0__tar.gz → 7.0.4__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-7.0.0/src/gaia_cli.egg-info → gaia_cli-7.0.4}/PKG-INFO +4 -4
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/README.md +3 -3
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/pyproject.toml +1 -1
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/treeManager.py +2 -2
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/tui/screens/agent.py +30 -16
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/tui/screens/hero.py +18 -14
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/tui/screens/levelup.py +40 -31
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/tui/screens/tree.py +53 -43
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/tui/theme.tcss +5 -5
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/tui/tokens.py +71 -57
- {gaia_cli-7.0.0 → gaia_cli-7.0.4/src/gaia_cli.egg-info}/PKG-INFO +4 -4
- gaia_cli-7.0.4/src/gaia_cli.egg-info/SOURCES.txt +200 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_tui_tokens.py +21 -11
- gaia_cli-7.0.0/src/gaia_cli/data/registry/gaia.json +0 -16363
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/0xdarkmatter/pytest-patterns.md +0 -75
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/Manavarya09/design-extract.md +0 -71
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/Taoidle/plan-decompose-gh-plan-cascade.md +0 -50
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/addy-osmani/agent-skills.md +0 -162
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/addy-osmani/code-review-and-quality.md +0 -107
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/addy-osmani/code-simplification.md +0 -145
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/addy-osmani/incremental-implementation.md +0 -107
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/addy-osmani/performance-optimization.md +0 -134
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/addy-osmani/planning-and-task-breakdown.md +0 -107
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/addy-osmani/shipping-and-launch.md +0 -106
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/addy-osmani/spec-driven-development.md +0 -107
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/addy-osmani/test-driven-development.md +0 -104
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/anthropic/pptx.md +0 -79
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/anthropic/skill-creator.md +0 -128
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/apache/airflow.json +0 -23
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/apify/crawlee.json +0 -23
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/bradautomates/claude-video.md +0 -91
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/browser-use/browser-harness.md +0 -151
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/browserbase/stagehand.md +0 -55
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/caioribeiroclw-pixel/evidence-attestation.md +0 -58
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/changkun/plan-decompose-gh-wallfacer.md +0 -50
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/devin-ai/autonomous-swe.md +0 -122
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/favorchurch/attendees.md +0 -122
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/favorchurch/count-checkin-by-church.md +0 -200
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/favorchurch/export-attendees.md +0 -247
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/favorchurch/financial-assistance.md +0 -311
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/favorchurch/resend-conference-emails-carefully-with-smtp.md +0 -130
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/favorchurch/speak-like-favor.md +0 -179
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/favorchurch/ticket-transfer.md +0 -297
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/favorchurch/triage-conference.md +0 -303
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/favorchurch/update-unique-churches.md +0 -176
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/firecrawl/firecrawl-build-interact.md +0 -50
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/firecrawl/firecrawl-build-onboarding.md +0 -50
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/firecrawl/firecrawl-build-scrape.md +0 -100
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/firecrawl/firecrawl-build-search.md +0 -81
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/firecrawl/firecrawl-research-index.md +0 -50
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/firecrawl/firecrawl-skills.md +0 -144
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/firecrawl/mcp.json +0 -23
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/gaia-research/skill-ci-churn.md +0 -71
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/gaia-research/skill-fuse.md +0 -70
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/gaiabot/gaia-triage.md +0 -83
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/gaiabot/repo-docs-before-pr.md +0 -92
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/benchmark-models.md +0 -81
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/benchmark.md +0 -106
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/browse.md +0 -149
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/canary.md +0 -107
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/careful.md +0 -96
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/codex.md +0 -81
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/context-restore.md +0 -76
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/context-save.md +0 -77
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/cso.md +0 -108
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/design-consultation.md +0 -111
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/design-html.md +0 -111
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/design-review.md +0 -89
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/design-shotgun.md +0 -106
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/devex-review.md +0 -88
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/document-generate.md +0 -110
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/document-release.md +0 -76
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/freeze.md +0 -76
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/garrytan.md +0 -99
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/gstack-upgrade.md +0 -76
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/gstack.md +0 -275
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/guard.md +0 -81
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/health.md +0 -81
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/investigate.md +0 -111
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/land-and-deploy.md +0 -107
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/landing-report.md +0 -77
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/learn.md +0 -81
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/make-pdf.md +0 -88
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/office-hours.md +0 -99
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/open-gstack-browser.md +0 -76
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/pair-agent.md +0 -80
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/plan-ceo-review.md +0 -107
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/plan-design-review.md +0 -107
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/plan-devex-review.md +0 -107
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/plan-eng-review.md +0 -98
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/plan-tune.md +0 -76
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/qa-only.md +0 -76
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/qa.md +0 -107
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/retro.md +0 -115
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/review.md +0 -107
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/scrape.md +0 -85
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/setup-browser-cookies.md +0 -76
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/setup-deploy.md +0 -77
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/setup-gbrain.md +0 -76
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/ship.md +0 -110
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/skillify.md +0 -105
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/sync-gbrain.md +0 -75
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/garrytan/unfreeze.md +0 -76
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/getagentseal/codeburn.md +0 -68
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/glincker/readme-generator.md +0 -109
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/alphafold_database_fetch_and_analyze.md +0 -200
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/alphagenome_single_variant_analysis.md +0 -356
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/chembl_database.md +0 -360
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/clinical_trials_database.md +0 -455
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/clinvar_database.md +0 -470
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/dbsnp_database.md +0 -441
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/embl_ebi_ols.md +0 -377
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/encode_ccres_database.md +0 -294
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/ensembl_database.md +0 -297
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/foldseek_structural_search.md +0 -195
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/gnomad_database.md +0 -166
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/gtex_database.md +0 -269
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/human_protein_atlas_database.md +0 -268
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/interpro_database.md +0 -522
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/jaspar_database.md +0 -219
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/literature_search_arxiv.md +0 -194
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/literature_search_biorxiv.md +0 -245
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/literature_search_europepmc.md +0 -324
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/literature_search_openalex.md +0 -261
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/ncbi_sequence_fetch.md +0 -335
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/openfda_database.md +0 -330
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/opentargets_database.md +0 -293
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/pdb_database.md +0 -245
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/protein_sequence_msa.md +0 -206
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/protein_sequence_similarity_search.md +0 -336
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/pubchem_database.md +0 -259
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/pubmed_database.md +0 -283
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/pymol.md +0 -240
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/quickgo_database.md +0 -220
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/reactome_database.md +0 -375
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/science_skills_common.md +0 -117
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/string_database.md +0 -143
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/ucsc_conservation_and_tfbs.md +0 -278
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/unibind_database.md +0 -234
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/uniprot_database.md +0 -368
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/uv.md +0 -124
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/google-deepmind/workflow_skill_creator.md +0 -364
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/gooseworks/notte-browser.md +0 -71
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/gsd-build/discuss-phase.md +0 -110
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/gsd-build/execute-phase.md +0 -106
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/gsd-build/get-shit-done.md +0 -148
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/gsd-build/plan-phase.md +0 -106
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/gsd-build/ship.md +0 -106
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/gsd-build/verify-work.md +0 -106
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/huggingface/hf-cli.md +0 -57
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/huggingface/huggingface-datasets.md +0 -58
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/huggingface/huggingface-llm-trainer.md +0 -58
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/huggingface/huggingface-papers.md +0 -58
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/huggingface/huggingface-vision-trainer.md +0 -58
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/huggingface/semantic-cache.md +0 -111
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/huggingface/transformers-js.md +0 -58
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/intelligentcode-ai/database-engineer.md +0 -112
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/intelligentcode-ai/devops-engineer.md +0 -112
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/intelligentcode-ai/mcp-client.md +0 -110
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/intelligentcode-ai/parallel-execution.md +0 -109
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/intelligentcode-ai/release.md +0 -111
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/intelligentcode-ai/requirements-engineer.md +0 -111
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/intelligentcode-ai/security-engineer.md +0 -112
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/intelligentcode-ai/user-tester.md +0 -111
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/karpathy/autoresearch.md +0 -76
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ladislav-sopko/mcp-vs.json +0 -23
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/langgenius/backend-code-review.md +0 -88
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/langgenius/component-refactoring.md +0 -90
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/langgenius/e2e-cucumber-playwright.md +0 -89
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/langgenius/frontend-code-review.md +0 -89
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/langgenius/frontend-testing.md +0 -100
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/laravel/upgrade-laravel-v13.md +0 -74
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/martin-stepanoski/nielsen-heuristics-audit.md +0 -109
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/ask-matt.md +0 -141
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/caveman.md +0 -71
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/codebase-design.md +0 -105
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/diagnose.md +0 -142
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/diagnosing-bugs.md +0 -105
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/domain-modeling.md +0 -105
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/edit-article.md +0 -144
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/engineering.md +0 -74
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/git-guardrails-claude-code.md +0 -105
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/grill-me.md +0 -149
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/grill-with-docs.md +0 -146
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/grilling.md +0 -105
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/handoff.md +0 -147
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/implement.md +0 -105
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/improve-codebase-architecture.md +0 -103
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/migrate-to-shoehorn.md +0 -105
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/obsidian-vault.md +0 -115
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/personal.md +0 -58
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/productivity.md +0 -62
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/prototype.md +0 -90
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/resolving-merge-conflicts.md +0 -105
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/scaffold-exercises.md +0 -105
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/setup-matt-pocock-skills.md +0 -99
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/setup-pre-commit.md +0 -105
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/skills.md +0 -194
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/tdd.md +0 -105
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/teach.md +0 -121
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/to-issues.md +0 -139
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/to-prd.md +0 -143
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/triage.md +0 -119
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/ubiquitous-language.md +0 -139
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/write-a-skill.md +0 -107
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/writing-great-skills.md +0 -105
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mattpocock/zoom-out.md +0 -72
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mbtiongson1/gaia-audit.md +0 -79
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mbtiongson1/gaia-bot-curate.md +0 -59
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mbtiongson1/gaia-curate.md +0 -61
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mbtiongson1/gaia-curation-review.md +0 -82
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mbtiongson1/gaia-docs-sync.md +0 -55
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mbtiongson1/gaia-draft-curate.md +0 -59
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mbtiongson1/gaia-integrity.md +0 -60
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mbtiongson1/gaia-meta-audit.md +0 -96
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mbtiongson1/gaia-preview.md +0 -78
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mbtiongson1/gaia-triage.md +0 -55
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mbtiongson1/gaia-wiki-sync.md +0 -55
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/mbtiongson1/graphify-triage.md +0 -79
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/nexu-io/open-design.md +0 -76
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/nousresearch/feed-monitoring.md +0 -79
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/obra/brainstorming.md +0 -134
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/obra/dispatching-parallel-agents.md +0 -104
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/obra/executing-plans.md +0 -133
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/obra/finishing-a-development-branch.md +0 -107
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/obra/receiving-code-review.md +0 -92
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/obra/requesting-code-review.md +0 -79
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/obra/subagent-driven-development.md +0 -169
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/obra/superpowers.md +0 -332
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/obra/systematic-debugging.md +0 -122
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/obra/using-git-worktrees.md +0 -185
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/obra/verification-before-completion.md +0 -134
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/obra/writing-plans.md +0 -196
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/openai/few-shot-learning.md +0 -106
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/openai/self-consistency.md +0 -91
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/pbakaus/impeccable.md +0 -163
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/pexp13/sentiment-analysis.md +0 -143
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/rico-favor/implement-with-discernment.md +0 -60
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/agentdb-advanced.md +0 -92
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/agentdb-learning.md +0 -66
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/agentdb-memory-patterns.md +0 -82
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/agentdb-optimization.md +0 -82
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/agentdb-vector-search.md +0 -83
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/agentdb.md +0 -157
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/agentic-jujutsu.md +0 -94
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/browser.md +0 -78
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/dual-collect.md +0 -83
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/dual-coordinate.md +0 -83
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/dual-mode.md +0 -122
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/dual-spawn.md +0 -83
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/flow-nexus-neural.md +0 -92
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/flow-nexus-platform.md +0 -92
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/flow-nexus-swarm.md +0 -68
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/flow-nexus.md +0 -117
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/github-code-review.md +0 -67
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/github-multi-repo.md +0 -83
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/github-project-management.md +0 -68
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/github-release-management.md +0 -68
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/github-suite.md +0 -119
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/github-workflow-automation.md +0 -67
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/hive-mind-coordination.md +0 -191
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/hooks-automation.md +0 -78
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/pair-programming.md +0 -99
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/performance-analysis.md +0 -82
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/reasoningbank-agentdb.md +0 -66
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/reasoningbank-intelligence.md +0 -91
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/reasoningbank.md +0 -187
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/ruflo-v3.md +0 -131
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/ruflo.md +0 -251
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/skill-builder.md +0 -77
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/sparc-methodology.md +0 -77
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/stream-chain.md +0 -93
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/swarm-advanced.md +0 -101
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/swarm-orchestration.md +0 -103
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/v3-cli-modernization.md +0 -93
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/v3-core-implementation.md +0 -93
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/v3-ddd-architecture.md +0 -100
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/v3-integration-deep.md +0 -93
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/v3-mcp-optimization.md +0 -78
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/v3-memory-unification.md +0 -78
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/v3-performance-optimization.md +0 -79
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/v3-security-overhaul.md +0 -78
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/v3-swarm-coordination.md +0 -77
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/verification-quality.md +0 -99
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/worker-benchmarks.md +0 -77
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/ruvnet/worker-integration.md +0 -93
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/safishamsi/graphify.md +0 -147
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/santifer/career-ops.md +0 -71
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/sickn33/ai-dev-jobs-mcp.md +0 -50
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/sickn33/mcp-builder.md +0 -60
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/sickn33/n8n-mcp-tools-expert.md +0 -51
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/spring-ai/readme-generate.md +0 -81
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/stanfordnlp/dspy.md +0 -133
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/upsonic/unittest-generator.md +0 -110
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/vercel/find-skills.md +0 -74
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/xquik-dev/hermes-tweet.md +0 -99
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/yonatangross/orchestkit-rag.md +0 -71
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named/yundu-ai/mcp-tool-developer.md +0 -51
- gaia_cli-7.0.0/src/gaia_cli/data/registry/named-skills.json +0 -31560
- gaia_cli-7.0.0/src/gaia_cli.egg-info/SOURCES.txt +0 -486
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/LICENSE +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/setup.cfg +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/__init__.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/__main__.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/auth.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/authz.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/cardRenderer.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/combinator.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/__init__.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/auth.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/base.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/dev/__init__.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/dev/audit.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/dev/build.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/dev/calibrate.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/dev/evidence.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/dev/freeze.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/dev/fuse.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/dev/helpers.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/dev/list.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/dev/merge.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/dev/named.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/dev/rename.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/dev/sync_upstream.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/dev/timeline.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/dev/verify.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/graph_cmd.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/init.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/mcp_cmd.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/misc.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/network.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/progression.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/push.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/pushBenchmark.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/pushFromFile.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/scan.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/share_cmd.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/skills.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/stats.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/commands/tree.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/data/registry/schema/combination.schema.json +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/data/registry/schema/meta.json +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/data/registry/schema/namedSkill.schema.json +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/data/registry/schema/pluginConfig.schema.json +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/data/registry/schema/realSkillCatalog.schema.json +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/data/registry/schema/skill.schema.json +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/data/registry/schema/skillBatch.schema.json +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/data/registry/schema/skillSuite.schema.json +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/data/registry/schema/skillTree.schema.json +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/data/registry/schema/sourceProposal.schema.json +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/data/registry/schema/sourceProposalReport.schema.json +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/embeddings.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/evidence.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/formatting.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/frontmatter.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/grading.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/graph.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/hook.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/impl.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/install.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/interactive.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/leveling.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/localContext.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/main.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/name.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/pathEngine.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/prWriter.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/promotion.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/push.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/redaction.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/registry.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/resolver.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/scanner.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/securityScanner.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/selector.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/semantic_search.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/share.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/sourceCuration.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/taxonomy.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/timeline.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/trustMagnitude.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/tui/__init__.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/tui/app.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/tui/screens/__init__.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/tui/screens/scan.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/validate.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/verification.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/versioning.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli/windowsLinks.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli.egg-info/dependency_links.txt +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli.egg-info/entry_points.txt +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli.egg-info/requires.txt +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/src/gaia_cli.egg-info/top_level.txt +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_apex_backfill.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_apex_reporting.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_api_projection.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_auth.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_authz.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_benchmark_projection.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_build_docs_cache_bust_only.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_build_docs_redaction_backstop.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_calibrate_evidence_grades.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_card_renderer.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_cli_command_migration.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_cli_core.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_combinator.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_crawlers.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_dev_audit.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_dev_build.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_dev_calibrate.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_dev_evidence.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_dev_fuse.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_dev_helpers.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_dev_merge.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_dev_named.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_dev_rename.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_dev_timeline.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_dev_upstream_verbs.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_dev_verify_preflights.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_docs_site.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_docs_skill_explorer.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_dx.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_embeddings.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_evidence_inheritance.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_evidence_regrade.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_evidence_ui_redesign.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_formatting.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_gaia_curate_discovery_packet.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_generate_badges.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_grading.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_graph.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_install.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_intake.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_intake_fromfile.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_interactive.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_leveling.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_lifecycle.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_local_context.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_mcp_cmd.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_meta_guard.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_meta_ops.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_named_skills.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_origin_wreath.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_packaging.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_path_command.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_path_engine.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_pr_writer.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_promotion.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_push.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_push_from_file.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_push_incremental.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_real_skill_catalog.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_redaction.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_registry_layout.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_row_grading.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_scan_dir_flag.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_scan_state.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_scanner.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_security_scanner.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_security_scanner_integration.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_selector.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_seo.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_share.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_source_curator_runner.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_source_proposal_schema.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_stats.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_suite_install.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_taxonomy.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_taxonomy_contract.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_timeline_routing.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_timelines.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_treeManager.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_tree_renderer.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_trending_script.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_trending_wiring.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_trust_magnitude.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_unlocked_at_datetime.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_update_command.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_validate.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_verification.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_verifier_benchmark_signoffs.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_verifier_url_validation.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_verify_evidence.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_versioning.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_windowsLinks.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_workflow_permissions.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_workflows.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_workspace_mode.py +0 -0
- {gaia_cli-7.0.0 → gaia_cli-7.0.4}/tests/test_world_tree_layout.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gaia-cli
|
|
3
|
-
Version: 7.0.
|
|
3
|
+
Version: 7.0.4
|
|
4
4
|
Summary: Gaia AI Agent Skill Registry CLI
|
|
5
5
|
Author: Gaia contributors
|
|
6
6
|
License: MIT
|
|
@@ -87,7 +87,7 @@ Generate yours at **[gaiaskilltree.com/badges/](https://gaiaskilltree.com/badges
|
|
|
87
87
|
|
|
88
88
|
---
|
|
89
89
|
|
|
90
|
-
##
|
|
90
|
+
## Yggdrasil II just dropped! (July 2026)
|
|
91
91
|
|
|
92
92
|
Gaia has moved from **Yggdrasil I** to **Yggdrasil II**, the ratified meta that governs how skills are typed, ranked, and trusted. If you last looked before July 2026, three things changed:
|
|
93
93
|
|
|
@@ -154,7 +154,7 @@ Uniques — Basic Skills that reached elite mastery (4★+) through depth alone,
|
|
|
154
154
|
└─ ○ /logical-inference
|
|
155
155
|
◉ addy-osmani/performance-optimization [4★]
|
|
156
156
|
|
|
157
|
-
(
|
|
157
|
+
(246 skills total — see docs/tree.md)
|
|
158
158
|
```
|
|
159
159
|
<!-- gaia:registry-end -->
|
|
160
160
|
|
|
@@ -245,7 +245,7 @@ curl https://gaiaskilltree.com/api/v1/leaderboard.json
|
|
|
245
245
|
**1. CLI
|
|
246
246
|
|
|
247
247
|
<!-- gaia:version-start -->
|
|
248
|
-
Current Gaia CLI version: `7.0.
|
|
248
|
+
Current Gaia CLI version: `7.0.4`.
|
|
249
249
|
|
|
250
250
|
```bash
|
|
251
251
|
curl -fsSL https://gaiaskilltree.com/install.sh | sh
|
|
@@ -33,7 +33,7 @@ Generate yours at **[gaiaskilltree.com/badges/](https://gaiaskilltree.com/badges
|
|
|
33
33
|
|
|
34
34
|
---
|
|
35
35
|
|
|
36
|
-
##
|
|
36
|
+
## Yggdrasil II just dropped! (July 2026)
|
|
37
37
|
|
|
38
38
|
Gaia has moved from **Yggdrasil I** to **Yggdrasil II**, the ratified meta that governs how skills are typed, ranked, and trusted. If you last looked before July 2026, three things changed:
|
|
39
39
|
|
|
@@ -100,7 +100,7 @@ Uniques — Basic Skills that reached elite mastery (4★+) through depth alone,
|
|
|
100
100
|
└─ ○ /logical-inference
|
|
101
101
|
◉ addy-osmani/performance-optimization [4★]
|
|
102
102
|
|
|
103
|
-
(
|
|
103
|
+
(246 skills total — see docs/tree.md)
|
|
104
104
|
```
|
|
105
105
|
<!-- gaia:registry-end -->
|
|
106
106
|
|
|
@@ -191,7 +191,7 @@ curl https://gaiaskilltree.com/api/v1/leaderboard.json
|
|
|
191
191
|
**1. CLI
|
|
192
192
|
|
|
193
193
|
<!-- gaia:version-start -->
|
|
194
|
-
Current Gaia CLI version: `7.0.
|
|
194
|
+
Current Gaia CLI version: `7.0.4`.
|
|
195
195
|
|
|
196
196
|
```bash
|
|
197
197
|
curl -fsSL https://gaiaskilltree.com/install.sh | sh
|
|
@@ -577,11 +577,11 @@ def show_tree(tree_data, graph_data=None, registry_path=".", mode="default", can
|
|
|
577
577
|
if isinstance(data, dict):
|
|
578
578
|
sources = data.get("sources", [])
|
|
579
579
|
level = data.get("level", "1★")
|
|
580
|
-
stype = data.get("type", "
|
|
580
|
+
stype = data.get("type", "fusion")
|
|
581
581
|
else:
|
|
582
582
|
sources = data
|
|
583
583
|
level = "1★"
|
|
584
|
-
stype = "
|
|
584
|
+
stype = "fusion"
|
|
585
585
|
|
|
586
586
|
skill_map[target] = {
|
|
587
587
|
"id": target,
|
|
@@ -16,6 +16,7 @@ from textual import events, on, work
|
|
|
16
16
|
from rich.text import Text
|
|
17
17
|
|
|
18
18
|
from gaia_cli.tui import tokens as T
|
|
19
|
+
from gaia_cli.taxonomy import branchFor, rankWord
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
# ── Data helpers ──────────────────────────────────────────────────────────────
|
|
@@ -32,14 +33,16 @@ def _load_skills(registry_path: str) -> list[dict]:
|
|
|
32
33
|
username = cfg.get("gaiaUser", cfg.get("user", ""))
|
|
33
34
|
ctx = LocalContext.load(registry_path, username)
|
|
34
35
|
for sid, skill in ctx._skill_map.items():
|
|
35
|
-
|
|
36
|
+
# Ygg II: the display axis keys on the derived BRANCH
|
|
37
|
+
# (standard|suite|unique), not the {basic,fusion} type axis.
|
|
38
|
+
branch = branchFor(skill)
|
|
36
39
|
level = skill.get("level", "")
|
|
37
40
|
desc = skill.get("description", "")
|
|
38
41
|
is_detected = sid in ctx.detected_ids
|
|
39
42
|
is_owned = sid in ctx.owned_ids
|
|
40
43
|
skills[sid] = {
|
|
41
44
|
"id": sid,
|
|
42
|
-
"
|
|
45
|
+
"branch": branch,
|
|
43
46
|
"level": level,
|
|
44
47
|
"description": desc,
|
|
45
48
|
"installed": is_detected or is_owned,
|
|
@@ -58,7 +61,11 @@ def _load_skills(registry_path: str) -> list[dict]:
|
|
|
58
61
|
if sid not in skills:
|
|
59
62
|
skills[sid] = {
|
|
60
63
|
"id": sid,
|
|
61
|
-
|
|
64
|
+
# Ygg II: derive the display branch via the taxonomy
|
|
65
|
+
# authority (meta carries level/suiteComponents). The branch
|
|
66
|
+
# consumers (_skill_label, branchorder) key on branch words
|
|
67
|
+
# (standard|suite|unique), NOT the {basic,fusion} type axis.
|
|
68
|
+
"branch": branchFor(meta),
|
|
62
69
|
"level": meta.get("level", ""),
|
|
63
70
|
"description": meta.get("description", ""),
|
|
64
71
|
"installed": sid in installed_ids,
|
|
@@ -70,14 +77,14 @@ def _load_skills(registry_path: str) -> list[dict]:
|
|
|
70
77
|
except Exception:
|
|
71
78
|
pass
|
|
72
79
|
|
|
73
|
-
# Sort: detected/local first, then installed, then by
|
|
74
|
-
|
|
80
|
+
# Sort: detected/local first, then installed, then by branch weight, then alphabetical
|
|
81
|
+
branchorder = {"unique": 0, "suite": 1, "standard": 2}
|
|
75
82
|
return sorted(
|
|
76
83
|
skills.values(),
|
|
77
84
|
key=lambda s: (
|
|
78
85
|
not s.get("detected", False),
|
|
79
86
|
not s.get("installed", False),
|
|
80
|
-
|
|
87
|
+
branchorder.get(s.get("branch", "standard"), 4),
|
|
81
88
|
s["id"],
|
|
82
89
|
),
|
|
83
90
|
)
|
|
@@ -99,8 +106,8 @@ def _filter_skills(query: str, skills: list[dict]) -> list[dict]:
|
|
|
99
106
|
# ── Skill row rendering ───────────────────────────────────────────────────────
|
|
100
107
|
|
|
101
108
|
def _skill_label(skill: dict) -> Text:
|
|
102
|
-
|
|
103
|
-
glyph = T.
|
|
109
|
+
branch = skill.get("branch", "standard")
|
|
110
|
+
glyph = T.BRANCH_GLYPH.get(branch, "○")
|
|
104
111
|
sid = skill["id"]
|
|
105
112
|
level = skill.get("level", "")
|
|
106
113
|
owned = skill.get("owned", False)
|
|
@@ -108,7 +115,7 @@ def _skill_label(skill: dict) -> Text:
|
|
|
108
115
|
installed = skill.get("installed", False)
|
|
109
116
|
|
|
110
117
|
t = Text()
|
|
111
|
-
t.append(glyph + " ", style=T.
|
|
118
|
+
t.append(glyph + " ", style=T.BRANCH_ACCENT.get(branch, T.NEUTRAL_TEXT_MUTED))
|
|
112
119
|
|
|
113
120
|
# Name rendering: @handle/slug
|
|
114
121
|
name_style = T.STATE_OWNED if (owned or detected) else T.NEUTRAL_TEXT
|
|
@@ -148,21 +155,26 @@ class InstallModal(ModalScreen):
|
|
|
148
155
|
self._installing = False
|
|
149
156
|
|
|
150
157
|
def compose(self) -> ComposeResult:
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
glyph = T.
|
|
158
|
+
branch = self.skill.get("branch", "standard")
|
|
159
|
+
branch_color = T.BRANCH_ACCENT.get(branch, T.NEUTRAL_TEXT_MUTED)
|
|
160
|
+
glyph = T.BRANCH_GLYPH.get(branch, "○")
|
|
154
161
|
|
|
155
162
|
with Static(id="install-dialog"):
|
|
156
163
|
yield Static("Install skill", id="install-title")
|
|
157
164
|
yield Static(
|
|
158
165
|
Text.from_markup(
|
|
159
|
-
f"[bold {
|
|
166
|
+
f"[bold {branch_color}]{glyph} {self.skill['id']}[/]"
|
|
160
167
|
),
|
|
161
168
|
id="install-skill-id",
|
|
162
169
|
)
|
|
170
|
+
# Meta line: the authority's rank word (e.g. "Named", "Extra",
|
|
171
|
+
# "Unique Impossible") — never the raw branch key. rankWord reads
|
|
172
|
+
# (level, branch) and always returns a word (floor "Basic" at 0★);
|
|
173
|
+
# the `if rank` guard below is defensive, not for an empty return.
|
|
163
174
|
meta_parts = []
|
|
164
|
-
|
|
165
|
-
|
|
175
|
+
rank = rankWord(self.skill.get("level", ""), branch)
|
|
176
|
+
if rank:
|
|
177
|
+
meta_parts.append(rank)
|
|
166
178
|
if self.skill.get("level"):
|
|
167
179
|
meta_parts.append(self.skill["level"])
|
|
168
180
|
yield Static(" · ".join(meta_parts), id="install-meta")
|
|
@@ -374,7 +386,9 @@ class AgentScreen(Screen):
|
|
|
374
386
|
self.app.push_screen(
|
|
375
387
|
LevelUpModal(
|
|
376
388
|
skill["id"],
|
|
377
|
-
skill
|
|
389
|
+
# skill["branch"] is the derived branch (standard|
|
|
390
|
+
# suite|unique) — see _load_skills.
|
|
391
|
+
skill.get("branch", "standard"),
|
|
378
392
|
skill.get("level", ""),
|
|
379
393
|
)
|
|
380
394
|
)
|
|
@@ -72,16 +72,21 @@ def _title_text(frame: int) -> Text:
|
|
|
72
72
|
|
|
73
73
|
def _load_stats(registry_path: str) -> dict:
|
|
74
74
|
import json
|
|
75
|
+
from gaia_cli.taxonomy import branchFor
|
|
75
76
|
path = os.path.join(registry_path, "registry", "gaia.json")
|
|
76
77
|
if not os.path.exists(path):
|
|
77
|
-
return {"total": 0, "
|
|
78
|
+
return {"total": 0, "standard": 0, "suite": 0, "unique": 0, "named": 0}
|
|
78
79
|
with open(path, encoding="utf-8") as f:
|
|
79
80
|
data = json.load(f)
|
|
80
81
|
skills = data.get("skills", [])
|
|
81
|
-
|
|
82
|
+
# Ygg II: distribution keys on the derived BRANCH (standard|suite|unique)
|
|
83
|
+
# via the taxonomy authority, not the retired {basic,extra,unique,ultimate}
|
|
84
|
+
# type axis. Generic gaia.json nodes carry namedMaxLevel, which branchFor
|
|
85
|
+
# reads as the effective rank.
|
|
86
|
+
branch_counts: dict[str, int] = {}
|
|
82
87
|
for s in skills:
|
|
83
|
-
|
|
84
|
-
|
|
88
|
+
b = branchFor(s)
|
|
89
|
+
branch_counts[b] = branch_counts.get(b, 0) + 1
|
|
85
90
|
|
|
86
91
|
# Count named skills
|
|
87
92
|
named_dir = os.path.join(registry_path, "registry", "named")
|
|
@@ -92,10 +97,9 @@ def _load_stats(registry_path: str) -> dict:
|
|
|
92
97
|
|
|
93
98
|
return {
|
|
94
99
|
"total": len(skills),
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"unique":
|
|
98
|
-
"ultimate": type_counts.get("ultimate", 0),
|
|
100
|
+
"standard": branch_counts.get("standard", 0),
|
|
101
|
+
"suite": branch_counts.get("suite", 0),
|
|
102
|
+
"unique": branch_counts.get("unique", 0),
|
|
99
103
|
"named": named,
|
|
100
104
|
}
|
|
101
105
|
|
|
@@ -138,14 +142,14 @@ class HeroScreen(Screen):
|
|
|
138
142
|
self.set_timer(3.0, self._advance)
|
|
139
143
|
|
|
140
144
|
def _tick(self) -> None:
|
|
141
|
-
self._frame = (self._frame + 1) % (len(T.
|
|
145
|
+
self._frame = (self._frame + 1) % (len(T.CYCLE_APEX) * 8)
|
|
142
146
|
self._render_frame()
|
|
143
147
|
|
|
144
148
|
def _render_frame(self) -> None:
|
|
145
149
|
frame = self._frame
|
|
146
150
|
|
|
147
|
-
# Seal color cycles through
|
|
148
|
-
cycle = T.
|
|
151
|
+
# Seal color cycles through CYCLE_APEX, 8 frames per stop
|
|
152
|
+
cycle = T.CYCLE_APEX
|
|
149
153
|
stop_idx = (frame // 8) % len(cycle)
|
|
150
154
|
next_idx = (stop_idx + 1) % len(cycle)
|
|
151
155
|
t_blend = (frame % 8) / 8.0
|
|
@@ -171,11 +175,11 @@ class HeroScreen(Screen):
|
|
|
171
175
|
self.query_one("#hero-stats", Static).update("")
|
|
172
176
|
return
|
|
173
177
|
t = Text()
|
|
174
|
-
t.append(f"○ {s['
|
|
178
|
+
t.append(f"○ {s['standard']} standard", style=T.BRANCH_ACCENT["standard"])
|
|
175
179
|
t.append(" · ", style=T.NEUTRAL_TEXT_MUTED)
|
|
176
|
-
t.append(f"
|
|
180
|
+
t.append(f"◉ {s['unique']} unique", style=T.BRANCH_ACCENT["unique"])
|
|
177
181
|
t.append(" · ", style=T.NEUTRAL_TEXT_MUTED)
|
|
178
|
-
t.append(f"◆ {s['
|
|
182
|
+
t.append(f"◆ {s['suite']} suite", style=T.BRANCH_ACCENT["suite"])
|
|
179
183
|
t.append(" · ", style=T.NEUTRAL_TEXT_MUTED)
|
|
180
184
|
t.append(f"✦ {s['named']} named", style=T.BRAND_APEX_GOLD)
|
|
181
185
|
self.query_one("#hero-stats", Static).update(Align.center(t))
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
"""Level-up modal — anime-style unlock animation.
|
|
2
2
|
|
|
3
|
-
Triggered after a successful skill install. Cycles through glyph
|
|
4
|
-
|
|
3
|
+
Triggered after a successful skill install. Cycles through glyph frames and
|
|
4
|
+
shows rank-colored text before auto-dismissing.
|
|
5
|
+
|
|
6
|
+
BUILD + READ ONLY (Ygg III forward-compat): this modal derives nothing about
|
|
7
|
+
branch/rank itself. It reads the caller-supplied branch word (already resolved
|
|
8
|
+
via ``taxonomy.branchFor``) and the star level, and calls the taxonomy authority
|
|
9
|
+
(``levelNum`` / ``rankWord``) for every display decision. There
|
|
10
|
+
are no hand-keyed branch→frame or branch→banner tables — the animation depth is
|
|
11
|
+
a *stars* concept (``levelNum``) and the banner text is the authority's
|
|
12
|
+
``rankWord``; branch only selects the accent color.
|
|
5
13
|
"""
|
|
6
14
|
|
|
7
15
|
from __future__ import annotations
|
|
@@ -15,30 +23,22 @@ from rich.text import Text
|
|
|
15
23
|
from rich.align import Align
|
|
16
24
|
|
|
17
25
|
from gaia_cli.tui import tokens as T
|
|
26
|
+
from gaia_cli.taxonomy import levelNum, rankWord
|
|
18
27
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
# → unique deep-violet → apex gold. Indexes map to tiers via _TIER_FRAME_IDX.
|
|
28
|
+
# Animation frames: glyph + color pair, indexed by star level 0..6. Frame N is
|
|
29
|
+
# shown for an N-star unlock, so the reveal climbs the shared rank ramp and, at
|
|
30
|
+
# 4★+, lands on the branch pinnacle. This is a pure stars ladder — NOT a
|
|
31
|
+
# branch→frame map — so no banned resolver logic lives here.
|
|
24
32
|
_FRAMES = [
|
|
25
|
-
("·", T.NEUTRAL_BORDER),
|
|
26
|
-
("○", T.
|
|
27
|
-
("○", T.
|
|
28
|
-
("◇", T.
|
|
29
|
-
("
|
|
30
|
-
("◆", T.
|
|
33
|
+
("·", T.NEUTRAL_BORDER), # 0★ dormant
|
|
34
|
+
("○", T.RANK_AWAKENED), # 1★ awakened — sky blue
|
|
35
|
+
("○", T.RANK_NAMED), # 2★ named — teal
|
|
36
|
+
("◇", T.RANK_EVOLVED), # 3★ evolved — violet
|
|
37
|
+
("◈", T.RANK_EXTRA), # 4★ extra/unique — fuchsia
|
|
38
|
+
("◆", T.RANK_ULTIMATE), # 5★ ultimate — amber
|
|
39
|
+
("✦", T.BRAND_APEX_GOLD), # 6★ apex — gold
|
|
31
40
|
]
|
|
32
41
|
|
|
33
|
-
_TIER_FRAME_IDX = {"basic": 2, "extra": 3, "unique": 4, "ultimate": 5}
|
|
34
|
-
|
|
35
|
-
_BANNERS = {
|
|
36
|
-
"basic": " SKILL ACQUIRED ",
|
|
37
|
-
"extra": " SKILL UNLOCKED ",
|
|
38
|
-
"unique": " ★ RARE SKILL ★ ",
|
|
39
|
-
"ultimate": " ★ ★ ULTIMATE ★ ★ ",
|
|
40
|
-
}
|
|
41
|
-
|
|
42
42
|
|
|
43
43
|
class LevelUpModal(ModalScreen[None]):
|
|
44
44
|
"""Flashy level-up screen. Dismiss with any key or auto-dismiss after 2.5s."""
|
|
@@ -51,12 +51,16 @@ class LevelUpModal(ModalScreen[None]):
|
|
|
51
51
|
|
|
52
52
|
_frame: reactive[int] = reactive(0, init=False)
|
|
53
53
|
|
|
54
|
-
def __init__(self, skill_id: str,
|
|
54
|
+
def __init__(self, skill_id: str, branch: str, level: str = ""):
|
|
55
55
|
super().__init__()
|
|
56
56
|
self.skill_id = skill_id
|
|
57
|
-
|
|
57
|
+
# branch is a resolved display-branch word (standard|suite|unique) the
|
|
58
|
+
# caller obtained from taxonomy.branchFor — never re-derived here.
|
|
59
|
+
self.branch = branch
|
|
58
60
|
self.level = level
|
|
59
|
-
|
|
61
|
+
# Frame depth is the star level, clamped through the authority. A 6★
|
|
62
|
+
# unlock climbs to the apex frame; a 2★ unlock stops at the named frame.
|
|
63
|
+
self._target_frame = levelNum(level)
|
|
60
64
|
|
|
61
65
|
def compose(self) -> ComposeResult:
|
|
62
66
|
yield Static(id="lu-backdrop")
|
|
@@ -77,8 +81,13 @@ class LevelUpModal(ModalScreen[None]):
|
|
|
77
81
|
def _render_frame(self, frame_idx: int) -> None:
|
|
78
82
|
card = self.query_one("#lu-card", Static)
|
|
79
83
|
glyph, gcolor = _FRAMES[min(frame_idx, len(_FRAMES) - 1)]
|
|
80
|
-
|
|
81
|
-
|
|
84
|
+
# Accent color: read the branch→accent token map (build+read — no inline
|
|
85
|
+
# branch logic). Banner text: the authority's rank word for this
|
|
86
|
+
# (level, branch), so a 4★ suite reads "EXTRA", a 6★ unique reads
|
|
87
|
+
# "UNIQUE IMPOSSIBLE", a 2★ reads "NAMED" — never a hand-rolled label.
|
|
88
|
+
accent = T.BRANCH_ACCENT.get(self.branch, T.NEUTRAL_TEXT_MUTED)
|
|
89
|
+
word = rankWord(self.level, self.branch)
|
|
90
|
+
banner = f" {word.upper()} " if word else " SKILL UNLOCKED "
|
|
82
91
|
sid = self.skill_id
|
|
83
92
|
|
|
84
93
|
lines: list[tuple[str | Text, str]] = []
|
|
@@ -88,12 +97,12 @@ class LevelUpModal(ModalScreen[None]):
|
|
|
88
97
|
# width calculation needs the raw sid length
|
|
89
98
|
width = max(len(sid) + 10, len(banner) + 4, 36)
|
|
90
99
|
border_h = "═" * (width - 2)
|
|
91
|
-
lines.append((f"╔{border_h}╗",
|
|
100
|
+
lines.append((f"╔{border_h}╗", accent))
|
|
92
101
|
lines.append((f"║{'':^{width-2}}║", gutter))
|
|
93
102
|
|
|
94
103
|
# Banner
|
|
95
104
|
padded_banner = banner.center(width - 2)
|
|
96
|
-
lines.append((f"║{padded_banner}║",
|
|
105
|
+
lines.append((f"║{padded_banner}║", accent))
|
|
97
106
|
|
|
98
107
|
# Glyph animation (big)
|
|
99
108
|
big_glyph = f" {glyph} "
|
|
@@ -138,7 +147,7 @@ class LevelUpModal(ModalScreen[None]):
|
|
|
138
147
|
progress += g + " "
|
|
139
148
|
progress_line = progress.strip().center(width - 2)
|
|
140
149
|
lines.append((f"║{'':^{width-2}}║", gutter))
|
|
141
|
-
lines.append((f"║{progress_line}║",
|
|
150
|
+
lines.append((f"║{progress_line}║", accent))
|
|
142
151
|
|
|
143
152
|
# Hint
|
|
144
153
|
hint = " [press any key] "
|
|
@@ -148,7 +157,7 @@ class LevelUpModal(ModalScreen[None]):
|
|
|
148
157
|
lines.append((f"║{hint:^{width-2}}║", T.NEUTRAL_TEXT_DIM))
|
|
149
158
|
|
|
150
159
|
# Bottom border
|
|
151
|
-
lines.append((f"╚{border_h}╝",
|
|
160
|
+
lines.append((f"╚{border_h}╝", accent))
|
|
152
161
|
|
|
153
162
|
t = Text()
|
|
154
163
|
for line, color in lines:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Skill tree screen — navigable RPG-style dependency graph.
|
|
2
2
|
|
|
3
|
-
Left panel: collapsible Textual Tree,
|
|
3
|
+
Left panel: collapsible Textual Tree, branch-colored.
|
|
4
4
|
Right panel: reactive skill detail card.
|
|
5
5
|
"""
|
|
6
6
|
|
|
@@ -21,6 +21,16 @@ from textual import events, on
|
|
|
21
21
|
from rich.text import Text
|
|
22
22
|
|
|
23
23
|
from gaia_cli.tui import tokens as T
|
|
24
|
+
from gaia_cli.taxonomy import branchFor
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _branch(skill: dict) -> str:
|
|
28
|
+
"""Ygg II display branch (standard|suite|unique) via the taxonomy authority.
|
|
29
|
+
|
|
30
|
+
Replaces the retired {basic,extra,unique,ultimate} `type`-as-branch read. The
|
|
31
|
+
token tables (BRANCH_GLYPH / BRANCH_ACCENT) key on these branch words.
|
|
32
|
+
"""
|
|
33
|
+
return branchFor(skill)
|
|
24
34
|
|
|
25
35
|
|
|
26
36
|
def _load_graph(registry_path: str) -> dict:
|
|
@@ -55,8 +65,8 @@ def _build_tree_data(
|
|
|
55
65
|
all_ids = set(skills.keys())
|
|
56
66
|
has_parent = set(parents.keys())
|
|
57
67
|
roots = sorted(all_ids - has_parent, key=lambda x: (
|
|
58
|
-
{"
|
|
59
|
-
skills.get(x, {})
|
|
68
|
+
{"unique": 0, "suite": 1, "standard": 2}.get(
|
|
69
|
+
_branch(skills.get(x, {})), 3
|
|
60
70
|
),
|
|
61
71
|
x,
|
|
62
72
|
))
|
|
@@ -72,9 +82,9 @@ def _build_tree_data(
|
|
|
72
82
|
|
|
73
83
|
|
|
74
84
|
def _node_label(skill: dict, owned_ids: set, detected_ids: set) -> Text:
|
|
75
|
-
|
|
76
|
-
glyph = T.
|
|
77
|
-
color = T.
|
|
85
|
+
branch = _branch(skill)
|
|
86
|
+
glyph = T.BRANCH_GLYPH.get(branch, "○")
|
|
87
|
+
color = T.BRANCH_ACCENT.get(branch, T.NEUTRAL_TEXT_MUTED)
|
|
78
88
|
sid = skill.get("id", "?")
|
|
79
89
|
level = skill.get("level", "")
|
|
80
90
|
owned = sid in owned_ids
|
|
@@ -123,9 +133,9 @@ class SkillDetail(Static):
|
|
|
123
133
|
if not skill:
|
|
124
134
|
return Text(sid, style=T.NEUTRAL_TEXT_MUTED)
|
|
125
135
|
|
|
126
|
-
|
|
127
|
-
glyph = T.
|
|
128
|
-
color = T.
|
|
136
|
+
branch = _branch(skill)
|
|
137
|
+
glyph = T.BRANCH_GLYPH.get(branch, "○")
|
|
138
|
+
color = T.BRANCH_ACCENT.get(branch, T.NEUTRAL_TEXT_MUTED)
|
|
129
139
|
level = skill.get("level", "")
|
|
130
140
|
level_color = T.RANK_BY_STAR.get(level, T.NEUTRAL_TEXT_DIM)
|
|
131
141
|
desc = skill.get("description", "")
|
|
@@ -143,8 +153,8 @@ class SkillDetail(Static):
|
|
|
143
153
|
t.append(f"{name}\n", style=T.NEUTRAL_TEXT_MUTED)
|
|
144
154
|
t.append("\n")
|
|
145
155
|
|
|
146
|
-
#
|
|
147
|
-
t.append(f"{
|
|
156
|
+
# Branch + level
|
|
157
|
+
t.append(f"{branch.upper()} ", style=color)
|
|
148
158
|
if level:
|
|
149
159
|
t.append(f"{level}\n", style=level_color)
|
|
150
160
|
else:
|
|
@@ -170,9 +180,9 @@ class SkillDetail(Static):
|
|
|
170
180
|
t.append("Requires:\n", style=T.NEUTRAL_TEXT_MUTED)
|
|
171
181
|
for p in parents[:6]:
|
|
172
182
|
p_skill = skills.get(p, {})
|
|
173
|
-
|
|
174
|
-
p_color = T.
|
|
175
|
-
t.append(f" {T.
|
|
183
|
+
p_branch = _branch(p_skill)
|
|
184
|
+
p_color = T.BRANCH_ACCENT.get(p_branch, T.NEUTRAL_TEXT_MUTED)
|
|
185
|
+
t.append(f" {T.BRANCH_GLYPH.get(p_branch, '○')} {p}\n", style=p_color)
|
|
176
186
|
if len(parents) > 6:
|
|
177
187
|
t.append(f" … +{len(parents) - 6} more\n", style=T.NEUTRAL_TEXT_DIM)
|
|
178
188
|
t.append("\n")
|
|
@@ -182,9 +192,9 @@ class SkillDetail(Static):
|
|
|
182
192
|
t.append("Unlocks:\n", style=T.NEUTRAL_TEXT_MUTED)
|
|
183
193
|
for c in children[:6]:
|
|
184
194
|
c_skill = skills.get(c, {})
|
|
185
|
-
|
|
186
|
-
c_color = T.
|
|
187
|
-
t.append(f" {T.
|
|
195
|
+
c_branch = _branch(c_skill)
|
|
196
|
+
c_color = T.BRANCH_ACCENT.get(c_branch, T.NEUTRAL_TEXT_MUTED)
|
|
197
|
+
t.append(f" {T.BRANCH_GLYPH.get(c_branch, '○')} {c}\n", style=c_color)
|
|
188
198
|
if len(children) > 6:
|
|
189
199
|
t.append(f" … +{len(children) - 6} more\n", style=T.NEUTRAL_TEXT_DIM)
|
|
190
200
|
|
|
@@ -290,21 +300,21 @@ class SkillTreeScreen(Screen):
|
|
|
290
300
|
else:
|
|
291
301
|
visible_nodes = set(skills.keys())
|
|
292
302
|
|
|
293
|
-
# Group roots by
|
|
294
|
-
|
|
295
|
-
|
|
303
|
+
# Group roots by branch membership (Ygg II taxonomy authority) for
|
|
304
|
+
# visual structure. Unique first, then Suite, then Standard.
|
|
305
|
+
branch_order = {"unique": 0, "suite": 1, "standard": 2}
|
|
306
|
+
branch_roots: dict[str, list[str]] = {b: [] for b in branch_order}
|
|
296
307
|
for sid in roots:
|
|
297
308
|
if sid not in visible_nodes:
|
|
298
309
|
continue
|
|
299
310
|
skill = skills.get(sid, {})
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
"
|
|
305
|
-
"
|
|
306
|
-
"
|
|
307
|
-
"basic": ("○ BASICS", T.TIER_BASIC),
|
|
311
|
+
branch = _branch(skill)
|
|
312
|
+
branch_roots.setdefault(branch, []).append(sid)
|
|
313
|
+
|
|
314
|
+
branch_labels = {
|
|
315
|
+
"unique": ("◉ UNIQUE", T.BRANCH_ACCENT["unique"]),
|
|
316
|
+
"suite": ("◆ SUITE", T.BRANCH_ACCENT["suite"]),
|
|
317
|
+
"standard": ("○ STANDARD", T.BRANCH_ACCENT["standard"]),
|
|
308
318
|
}
|
|
309
319
|
|
|
310
320
|
visited: set[str] = set()
|
|
@@ -314,12 +324,12 @@ class SkillTreeScreen(Screen):
|
|
|
314
324
|
should_expand_all = bool(query)
|
|
315
325
|
|
|
316
326
|
for child_id in sorted(children.get(sid, []), key=lambda x: (
|
|
317
|
-
|
|
327
|
+
branch_order.get(_branch(skills.get(x, {})), 3), x
|
|
318
328
|
)):
|
|
319
329
|
if child_id not in visible_nodes or child_id in visited:
|
|
320
330
|
continue
|
|
321
331
|
visited.add(child_id)
|
|
322
|
-
child_skill = skills.get(child_id, {"id": child_id
|
|
332
|
+
child_skill = skills.get(child_id, {"id": child_id})
|
|
323
333
|
label = _node_label(child_skill, owned, detected)
|
|
324
334
|
has_kids = any(k in visible_nodes for k in children.get(child_id, []))
|
|
325
335
|
|
|
@@ -333,25 +343,25 @@ class SkillTreeScreen(Screen):
|
|
|
333
343
|
if should_expand_all or depth < 1:
|
|
334
344
|
add_children(child_node, child_id, depth + 1)
|
|
335
345
|
|
|
336
|
-
for
|
|
337
|
-
sids =
|
|
346
|
+
for branch in ["unique", "suite", "standard"]:
|
|
347
|
+
sids = branch_roots.get(branch, [])
|
|
338
348
|
if not sids:
|
|
339
349
|
continue
|
|
340
|
-
label_text, color =
|
|
341
|
-
|
|
350
|
+
label_text, color = branch_labels[branch]
|
|
351
|
+
branch_node = tree.root.add(
|
|
342
352
|
Text(label_text, style=f"bold {color}"),
|
|
343
|
-
data=f"
|
|
353
|
+
data=f"__branch_{branch}",
|
|
344
354
|
expand=True,
|
|
345
355
|
)
|
|
346
356
|
for sid in sorted(sids):
|
|
347
357
|
if sid in visited:
|
|
348
358
|
continue
|
|
349
359
|
visited.add(sid)
|
|
350
|
-
skill = skills.get(sid, {"id": sid
|
|
360
|
+
skill = skills.get(sid, {"id": sid})
|
|
351
361
|
label = _node_label(skill, owned, detected)
|
|
352
362
|
has_kids = any(k in visible_nodes for k in children.get(sid, []))
|
|
353
|
-
|
|
354
|
-
skill_node =
|
|
363
|
+
|
|
364
|
+
skill_node = branch_node.add(
|
|
355
365
|
label,
|
|
356
366
|
data=sid,
|
|
357
367
|
expand=bool(query) and has_kids,
|
|
@@ -359,7 +369,7 @@ class SkillTreeScreen(Screen):
|
|
|
359
369
|
)
|
|
360
370
|
self._node_map[id(skill_node)] = sid
|
|
361
371
|
if has_kids:
|
|
362
|
-
if query or
|
|
372
|
+
if query or branch in ("unique", "suite"):
|
|
363
373
|
add_children(skill_node, sid, depth=1)
|
|
364
374
|
|
|
365
375
|
@on(Input.Changed, "#tree-search")
|
|
@@ -378,7 +388,7 @@ class SkillTreeScreen(Screen):
|
|
|
378
388
|
|
|
379
389
|
def on_tree_node_highlighted(self, event: Tree.NodeHighlighted) -> None:
|
|
380
390
|
sid = event.node.data
|
|
381
|
-
if sid and not str(sid).startswith("
|
|
391
|
+
if sid and not str(sid).startswith("__branch_"):
|
|
382
392
|
detail = self.query_one("#detail-panel", SkillDetail)
|
|
383
393
|
detail.skill_id = str(sid)
|
|
384
394
|
|
|
@@ -403,10 +413,10 @@ class SkillTreeScreen(Screen):
|
|
|
403
413
|
def action_install_focused(self) -> None:
|
|
404
414
|
tree = self.query_one("#skill-tree", Tree)
|
|
405
415
|
node = tree.cursor_node
|
|
406
|
-
if node and node.data and not str(node.data).startswith("
|
|
416
|
+
if node and node.data and not str(node.data).startswith("__branch_"):
|
|
407
417
|
sid = str(node.data)
|
|
408
418
|
skills = self._tree_data.get("skills", {})
|
|
409
|
-
skill = skills.get(sid, {"id": sid, "
|
|
419
|
+
skill = skills.get(sid, {"id": sid, "level": ""})
|
|
410
420
|
from gaia_cli.tui.screens.agent import InstallModal
|
|
411
421
|
|
|
412
422
|
def _on_install(installed: bool) -> None:
|
|
@@ -421,7 +431,7 @@ class SkillTreeScreen(Screen):
|
|
|
421
431
|
|
|
422
432
|
def _rebuild_node_label(self, node: TreeNode, sid: str) -> None:
|
|
423
433
|
skills = self._tree_data.get("skills", {})
|
|
424
|
-
skill = skills.get(sid, {"id": sid
|
|
434
|
+
skill = skills.get(sid, {"id": sid})
|
|
425
435
|
node.set_label(_node_label(skill, self._owned, self._detected))
|
|
426
436
|
|
|
427
437
|
def action_goto_agent(self) -> None:
|