You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(skills): resolve registry skills through the runtime's CrewAI+ client
Skill downloads built their own `PlusAPI` and authenticated it from
`CREWAI_USER_PAT`, the platform integration token, or the saved CLI login. An
Enterprise deployment has none of those, so loading a repository agent that
carries skills failed on the download — while the agent fetch beside it
succeeded, because that path goes through the client the runtime installs.
Skills now resolve their client the same way:
- Add `crewai.utilities.plus_client_factory` with `set_plus_client_factory()` /
`resolve_plus_client()`, and route both the Agent Repository and the Skills
Repository through it, so a new registry lookup can't accidentally reach for a
credential a deployment doesn't have. It also reads the legacy
`agent_utils._create_plus_client_hook` slot, so already-released runtimes that
patch that attribute pick up skills without a matched upgrade
- A client that can't fetch skills falls back to environment credentials and
warns, keeping behavior unchanged on older runtimes
- Move the sync/async response bridging out of `load_agent_from_repository` into
`resolve_response()`, shared by both call sites
Version pinning, which the same bug was hiding:
- Registry refs accept `@org/name@version` (`@org/name@v1.2.0` too), parsed by
the new `parse_skill_ref()` returning a `SkillRef`. `parse_registry_ref()`
keeps its `(org, name)` shape for compatibility
- Repository agents record a version per skill in `skill_versions`, which was
parsed off the response and dropped. Those pins are now folded into the skill
refs, so publishing a new version of a skill no longer silently changes every
agent using it
- A pinned ref only accepts a local or cached copy declaring that version, and
the cache reports a miss when its recorded version differs, so a pin
re-resolves instead of loading the wrong version
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
0 commit comments