d5773bfc3a
Consolidates the Capabilities view around the Skills tab and opens the whole surface to plugins: - Skills tab: the embedded Skills Hub picker now renders BELOW the installed-skills list, expanded by default, with the update-all action in its header. "+ Add to this Agent" picks are refused with a toast when the skill is already installed in the scoped profile (name and identifier both checked against the unfiltered list). - Detail pane: shows the ENTIRE skill for any provenance — frontmatter metadata rendered as key/value rows plus the full SKILL.md body — via the existing GET /api/skills/content (new getSkillContent fetcher, profile-scoped, cached per skill+scope). - Browse Hub top-level tab removed (hub.tsx deleted, tabHub i18n keys dropped); the hub lives inside Skills now. Legacy ?tab=hub URLs fall back to Skills via useRouteEnumParam. Hub actions/store and all hub REST fetchers are unchanged. - SkillsView gains `embedded` (tab state local to the component instead of the route ?tab= param) and `fixedProfile` (pins every tab to one profile; the scope selector hides and the profiles roster fetch is skipped) and is exported from @hermes/plugin-sdk — so Hermes-Bot-Mode can render the real Capabilities surface inside its create/edit agent Advanced section pinned to a bot. - i18n: hub.alreadyInstalled (en + zh; others fall back). Tests: index.test.tsx 8/8 (new: full-skill detail pane renders frontmatter+body; picker refuses already-installed picks and is expanded by default); toolset-config-panel 28/28; hermes-parity 11/11. Typecheck (3 tsconfigs) + eslint clean.