[AIGTWY-4758] Download managed-config skills at ug configure - #691
Open
david-siqi-liu wants to merge 1 commit into
Open
david-siqi-liu wants to merge 1 commit into
david-siqi-liu wants to merge 1 commit into
Conversation
david-siqi-liu
marked this pull request as ready for review
September 16, 2026 21:30
david-siqi-liu
force-pushed
the
david/ug-configure-skills
branch
from
September 16, 2026 21:36
9cc4fc8 to
6c27edb
Compare
ug configureug configure
david-siqi-liu
force-pushed
the
david/ug-configure-skills
branch
from
September 17, 2026 15:36
6c27edb to
04f27f4
Compare
Managed coding-agent config can declare a `skills` selector, but ug never consumed it: cli read `skills.names` as `<catalog>.<schema>` locations and ignored `unity_catalog_location`, so both valid selector shapes downloaded nothing -- a silent no-op, like the managed mcp_servers no-op that #669 fixed. Resolve the `NamesOrLocation` selector correctly (names as full `<catalog>.<schema>.<name>` FQNs, unity_catalog_location as a schema; malformed entries skipped with a warning) and download the skills at `ug configure`, alongside managed MCP-server registration and off the launch hot path. The bundles land in both `.claude/skills` and `.agents/skills`, so Claude Code and Codex both pick them up. Add a managed_fixture integration suite (test_ug_configure_managed_skills.py) mirroring the mcp/models suites: inject a config naming a real skill, configure, and assert the agent's /skills view lists it, for both Claude and Codex. Co-authored-by: Isaac <no-reply@databricks.com>
david-siqi-liu
force-pushed
the
david/ug-configure-skills
branch
from
September 17, 2026 16:48
04f27f4 to
b560103
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Managed coding-agent config can declare a
skillsselector ({names | unity_catalog_location}), butugnever consumed it.clireadskills.namesas if they were<catalog>.<schema>locations and ignoredunity_catalog_location, so both valid selector shapes downloaded nothing: a silent no-op, exactly like the managedmcp_serversno-op that #669 fixed.Change
Mirror #669 for skills. Resolve the
NamesOrLocationselector correctly and download the admin's skills atug configure, alongside managed MCP-server registration.skills_download.py: add_resolve_managed_skill_refs(aunity_catalog_locationlists every finalized skill under that<catalog>.<schema>;namesresolves each full<catalog>.<schema>.<name>FQN viaGetSkill; malformed entries are skipped with a warning) anddownload_managed_skills, a non-interactive, additive writer that replacesdownload_managed_skills_on_launch.cli.py:_download_managed_skillsis now selector-aware and runs atug configure. It is no longer called on the launch hot path, soug <agent>makes no per-launch skill-discovery calls (matching how [AIGTWY-4573] Register managed mcp_servers at ug configure #669 moved MCP registration off launch)..claude/skillsand.agents/skills, so Claude Code and Codex both pick them up. A developer's own same-named skill is never overwritten.Out of scope
Reconcile-on-removal of managed skills dropped from the config (additive download matches prior behavior;
ug skill removealready covers user-driven removal).Testing
Set up

Claude
Codex
Unit: selector resolution (names / location / precedence / malformed / unresolvable / failures / empty / duplicate-FQN dedup), configure wiring and order, and launch making no skill calls.
E2E: adds a
managed_fixtureintegration suite (tests/integration/test_ug_configure_managed_skills.py) mirroring the mcp/models suites from #699. It injects an admin config naming a real ca-central skill (main.default.forkable-meals) viaUCODE_MANAGED_CONFIG_STUB, runsug configure, launches the real agent, and asserts the downloaded skill appears in the agent's/skillsview, for Claude (via thenamesselector) and Codex (via theunity_catalog_locationselector). Runs in the existing non-blocking managed lanes.uv run ruff check ./ruff format --checkclean; focused unit suites and the integration contract test pass locally; the new suite collects.Part of epic AIGTWY-4329.
This pull request and its description were written by Isaac.