Load plugin skill roots through the host skills service (#37440)

## What changed

- Implement `SkillRootLoader<PluginSkillRoot>` for `HostSkillsService`.
- Load roots concurrently while preserving request order, product restrictions, cached snapshots, skill errors, and per-skill filesystem metadata.
- Deduplicate overlapping roots and prefer native plugin skills over migrated commands with the same plugin ID and skill name.

## Testing

- Cover native and migrated skill precedence, nested and overlapping roots, product filtering, snapshot reuse, error propagation, and symlinked migration roots.

GitOrigin-RevId: 2270d10616b3a0463852c563ee071c524cd11e6b
This commit is contained in:
felixxia-oai
2026-08-07 13:23:23 +00:00
committed by copyberry
parent a4b129eb3e
commit e75a1888d7
10 changed files with 634 additions and 24 deletions
@@ -15,7 +15,6 @@ const COMMAND_SKILL_PREFIX: &str = "source-command";
const MAX_SKILL_NAME_LEN: usize = 64;
pub(crate) use plugin::migrate_plugin_commands;
pub(crate) use plugin::migrated_command_skills_root;
/// Describes source-specific terms that should be rewritten in migrated command skills.
#[derive(Clone, Copy)]