Skip to content

Feat/skill management#22

Closed
aarontuor wants to merge 6 commits into
mainfrom
feat/skill-management
Closed

Feat/skill management#22
aarontuor wants to merge 6 commits into
mainfrom
feat/skill-management

Conversation

@aarontuor

Copy link
Copy Markdown
Contributor

Skills discovery, registry, and creation.

aarontuor and others added 6 commits June 23, 2026 11:30
Bridge dsagt's skill system into agent-native discovery and add a
searchable catalog of installable skills from external GitHub repos.
Two tiers:

- Catalog — external Agent-Skills repos (default: K-Dense scientific,
  140+) cloned + indexed into per-source `skills_catalog__<slug>` KB
  collections. Searchable via search_skills, never loaded into the
  agent's context.
- Installed — a chosen skill copied into <project>/skills/ and mirrored
  into .claude/skills/ for Claude Code's native discovery.

Changes:
- commands/skills_catalog.py: shallow-clone cache, recursive SKILL.md
  discovery, per-source indexing (idempotent re-sync via drop+rebuild),
  find/install. Known sources: scientific, anthropic, antigravity, composio.
- MCP tools: install_skill + catalog-spanning search_skills (registry);
  add_skill_source / list_skill_sources (knowledge). Added to auto-allow.
- agents/base._mirror_skills_to + ClaudeSetup hook: manifest-gated mirror
  into .claude/skills/ (never clobbers user skills; reaps stale entries;
  trims >1536-char descriptions in the copy only).
- Bundled skill-creator meta-skill (Anthropic template + condensed spec).
- CLI: dsagt skills sync/add/list/search.
- Config: skills block (sources/populate_native/populate_catalog),
  backfilled for old configs; setup-kb syncs the default catalog
  (--no-skill-catalog to skip); reserve .skill_sources; kb_from_config.
- dsagt_instructions.md: two-tier guidance (native vs catalog/install).
- use_cases/isaac_skills_demo: runnable mock of the isaac_vasp workflow
  exercising the full flow with tiny mock VASP data.

Tests: test_skills_catalog.py + config/server-routing additions
(201 passed, 13 skipped); black + ruff clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
First-pass vetting of use_cases/isaac_skills_demo against the real
K-Dense catalog surfaced one bug: `dsagt skills add <proj> <source>`
synced + indexed the catalog but never wrote the source into
dsagt_config.yaml, so a later config-driven `dsagt skills sync` would
forget it. Only the `add_skill_source` MCP tool persisted.

- Move the persist logic into a shared `persist_source_to_config` helper
  in skills_catalog.py; call it from both the CLI add-source path and the
  knowledge-server `add_skill_source` handler (removes the duplicated
  `_persist_skill_source`).
- Regression test for the helper (append + dedupe + missing-config no-op).
- Add use_cases/isaac_skills_demo/PROMPTS.md: the 8-prompt hand-pass
  script plus first-pass results (init/mirror, 146-skill sync, search,
  install pymatgen, native re-mirror, add anthropic all verified).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The isaac_skills_demo rebuild path (rm + init) left the external catalog
empty because a fresh `init` copies only the shared KB, while the catalog
is project-scoped. The agent's search_skills then correctly returned no
catalog hits. Add the required `dsagt skills sync` step to the rebuild
block, a pre-launch catalog check, and a note on the global setup-kb
alternative.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
An empty/unsynced external skill catalog was indistinguishable from a
genuine no-match, forcing the agent through a multi-step discovery dance
and a misleading "skill unusable until restart" message.

- search_skills: when no catalog is synced, say so and point at
  list_skill_sources / add_skill_source instead of a bare no-match
- list_skill_sources: flag each known source synced/available with its
  indexed count, rather than two parallel lists to cross-reference
- install_skill: state the skill is usable this session immediately;
  restart only enables hands-free native auto-invocation
- dsagt_instructions: document the catalog as opt-in and the
  list_skill_sources -> add_skill_source -> search_skills -> install flow

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bump to 0.2.0 and make dsagt.__version__ the single source of truth —
pyproject reads it via setuptools dynamic metadata, so future bumps
touch one line. Add CHANGELOG (Keep a Changelog format).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- README/docs: document the non-developer install (pip install
  git+https://github.com/AI-ModCon/dsagt.git into any 3.12/3.13 env);
  note uv is dev/CI-only and conda/venv both work
- de-duplicate the supported-agents table and install block via
  mkdocs-include-markdown so docs/index.md pulls them from the README
- correct the Python prerequisite to 3.12/3.13
- cli.md: drop the uv-sync-specific install assumption
- docs CI builds with the locked docs dependency group via uv

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@aarontuor aarontuor closed this Jun 24, 2026
@aarontuor

Copy link
Copy Markdown
Contributor Author

Pausing this pull request after reviewing Genesis skills repo. I've done some refactoring to how we are handling skills since I noticed possible double context viewing of a skill with our setup. Attached is a diagram of the simplified skills management setup with discovery, registry, and agent-standard progressive exposure.
skills-routing
Will reopen this afternoon after regression testing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant