Runtime-side bundle facade. The directory rules (default path, inside-
shared/ containment, uniqueness) live in zeroclaw_config::skill_bundles
so Config::validate and the SkillsService share one implementation.
This module is a thin re-exporter plus the BundleSummary shape
returned to surface callers.
Public service surface every consumer (CLI, gateway, future TUI) uses
to read and mutate skills + skill bundles. There is no second
implementation — drift is closed by construction.
A skill is a user-defined or community-built capability.
Skills live in ~/.zeroclaw/workspace/skills/<name>/SKILL.md
and can include tool definitions, prompts, and automation scripts.
Build the install-time tier banner. Official skills get a single
informational line; everything else (including Featured and the
missing-tag fallback) gets the Community warn block.
Per-agent skill discovery. Walks [agents.<agent_alias>].skill_bundles,
resolves each bundle’s directory via the shared
zeroclaw_config::skill_bundles::resolve_directory helper, and unions
the skills under each bundle with whatever
load_skills_with_config would return for the install (workspace
skills, open-skills, plugin skills). Empty skill_bundles falls back
to the install-wide set — keeps freshly-migrated agents working until
the operator assigns a bundle.
Look up a skill in <registry_dir>/registry.json and return its trust tier
and version. Returns (SkillTier::Unknown, None) if the index file is
missing, malformed, or does not list the skill.