litellm/.github/workflows
Yassin Kortam 192e38fa7b
feat(skills): semantic search over the LiteLLM-hosted skill registry (#39401)
* feat(skills): semantic search over the LiteLLM-hosted skill registry

Adds GET /v1/skills?query= (custom_llm_provider=litellm_proxy) and a
skill_search MCP virtual tool, ranking the caller's accessible skills by
semantic similarity, mirroring the A2A agent registry search (LIT-6309).

Also fixes a pre-existing bug where create_skill() dropped description and
instructions for the litellm_proxy provider, which left every LiteLLM-hosted
skill with no searchable text.

* fix(mcp): coerce skill_search top_k instead of raising 500 on malformed input

The MCP-REST skill_search dispatch validated raw tool arguments through a
pydantic model directly, so a non-numeric top_k raised a ValidationError
that the endpoint's catch-all turned into an HTTP 500. Mirrors the
agent_search branch's tolerant coerce_top_k handling instead.

* fix(skills): enforce key limits on search embeddings and bound the semantic index

Semantic search embeddings now run the same pre_call_hook the /embeddings
route runs, so key rate limits, budgets and guardrails apply before the
embedding model is called. The shared SemanticTextIndex caps cached vectors
and evicts the least recently searched entries, and each skill's embedded
text is capped so one skill cannot inflate the embedding batch

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(skills): surface proxy 429s from search embeddings instead of a 503

ProxyRateLimitError is also an OpenAIError, so the search engine was folding
a key rate limit into skill_search_unavailable. Proxy HTTPExceptions now
propagate so the caller gets the same 429 the /embeddings route returns

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(skills): import assert_never from typing_extensions for Python 3.10

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(skills): embed the request as the pre-call hooks returned it, not the original text

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* refactor(skills): keep the litellm_proxy provider check for GET /v1/skills?query= inside llms/

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* test(skills): move the GET /v1/skills?query= endpoint tests under tests/test_litellm/proxy

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-07 12:28:38 -07:00
..
_test-unit-base.yml ci: run unit tests on Python 3.12 (#39989) 2026-09-05 23:56:09 -07:00
auto-close-duplicates.yml fix(ci): stop the auto-close duplicates job colliding with the required test check 2026-09-05 22:26:38 -07:00
auto_update_price_and_context_window.yml chore(ci): close the test-census blind spots and move scripts out of workflows/ (#37586) 2026-08-20 10:07:14 -07:00
check-schema-sync.yml ci: give the remaining pull_request workflows a concurrency group 2026-08-08 03:25:38 +00:00
check-ui-api-types.yml fix(proxy): regenerate lazy OpenAPI snapshot and guard it in CI 2026-08-26 14:32:04 -07:00
check_duplicate_issues.yml fix(ci): close only identical-title duplicates, dry-run the sweep, reopen on reply 2026-08-29 17:30:01 -04:00
ci-coverage.yml feat(ci): assert .github/workflows holds only workflows, correctly named (#37616) 2026-08-20 21:36:26 +00:00
close_low_quality_prs.yml feat(agent-shin): automated PR/issue triage, low-quality auto-close, and review-gate label lifecycle (#30433) 2026-06-17 20:42:27 -07:00
codeql.yml ci(zizmor): gate PRs on medium+ findings and clear existing ones (#30797) 2026-06-18 18:26:03 -07:00
codspeed.yml ci: build the benchmark environment outside the CodSpeed runner (#38426) 2026-08-29 13:58:04 -07:00
conventional-commits.yml ci: give the remaining pull_request workflows a concurrency group 2026-08-08 03:25:38 +00:00
cost-map-guard.yml feat(ci): add the cost map guard check 2026-09-04 17:18:17 -07:00
create-release-branch.yml ci(release): create stable/X.Y.x line branch on X.Y.0 tags (#29457) 2026-06-01 15:56:34 -07:00
create-release.yml fix(release): make Create Release reliable for stable maintenance cuts (#31986) 2026-07-02 16:05:11 -07:00
create_daily_oss_agent_shin_branch.yml fix(ci): make every remaining CI checkout shallow (#35997) 2026-08-05 14:32:17 -07:00
create_daily_staging_branch.yml fix(ci): make every remaining CI checkout shallow (#35997) 2026-08-05 14:32:17 -07:00
e2e_record_replay.yml ci(e2e): record the e2e suite weekly and replay it on weekdays with zero egress (#38163) 2026-08-24 23:49:03 -04:00
guard-fork-dependencies.yml ci: give the remaining pull_request workflows a concurrency group 2026-08-08 03:25:38 +00:00
guard-main-branch.yml chore(ci): retire daily OSS branches in favor of litellm_internal_staging 2026-07-20 11:38:52 -07:00
helm_unit_test.yml ci: give the remaining pull_request workflows a concurrency group 2026-08-08 03:25:38 +00:00
image-scan.yml fix(docker): install bedrock-realtime extra in monolith proxy images (#39223) 2026-09-01 17:51:55 -07:00
issue-keyword-labeler.yml chore: fixes 2026-04-05 01:30:57 -07:00
label-component.yml chore: fixes 2026-04-05 01:30:57 -07:00
mutation-test.yml fix(ci): name the file mutmut actually writes partial results to 2026-08-25 23:54:48 -07:00
osv-scan.yml fix(ci): point OSS contributor workflows to litellm_oss_staging (#31270) 2026-06-24 21:07:59 -07:00
publish-basedpyright-base-counts.yml perf(ci): cache the Rust build the unit shards compile from scratch (#37795) 2026-08-21 20:15:08 -07:00
scorecard.yml chore: fixes 2026-04-05 01:30:57 -07:00
stale.yml chore: fixes 2026-04-05 01:30:57 -07:00
sync-schema.yml chore: fixes 2026-04-05 01:30:57 -07:00
sync-together-ai-models.yml fix(ci): fall back to github.token when the GH_TOKEN secret is unset in the Together sync workflow 2026-08-28 12:24:05 -07:00
test-code-quality.yml test(ci): guard against two workflow jobs publishing one check-run name 2026-09-05 22:26:09 -07:00
test-e2e-changed.yml ci(e2e): run the access_control canary on harness changes and name failed tests 2026-09-05 18:46:51 -07:00
test-linting.yml perf(ci): cache uv dependencies in the lint job (#37783) 2026-08-22 22:44:32 -07:00
test-litellm-ui-build.yml ci(ui): run the UI build check through the image's ui-builder stage 2026-09-02 22:09:55 -07:00
test-litellm-ui-lint.yml ci: give the remaining pull_request workflows a concurrency group 2026-08-08 03:25:38 +00:00
test-litellm-ui-unit.yml fix(ci): run the full dashboard suite when a change reaches outside src/ (#37563) 2026-08-19 23:09:03 -07:00
test-mcp.yml ci: measure enterprise/ coverage (#37788) 2026-08-22 22:55:01 -07:00
test-postgres.yml ci: port the Postgres suites off CircleCI onto service containers (#37785) 2026-08-22 22:45:30 -07:00
test-redis-compat.yml fix(redis): coerce env var string types and fix param discovery through decorator wrappers (#30644) 2026-08-31 20:51:31 -07:00
test-rust.yml ci: simplify Rust checks and remove wheel PR comments (#39975) 2026-09-07 09:00:58 -07:00
test-semgrep.yml fix(ci): retry setup-uv installs to survive transient manifest fetch failures 2026-07-14 14:41:36 -07:00
test-terraform-modules.yml feat(terraform/gcp): dependencies-only mode and bring-your-own-network for GKE (#39695) 2026-09-05 12:22:52 -07:00
test-terraform-provider.yml feat(terraform): coverage-enforcing CI gate against the latest OpenAPI spec (#38710) 2026-08-28 17:11:43 -07:00
test-unit-documentation.yml perf(ci): cache the Rust build the unit shards compile from scratch (#37795) 2026-08-21 20:15:08 -07:00
test-unit-proxy-db.yml feat(ci): guard shard assignment across every sharded test tree (#37593) 2026-08-20 17:30:55 +00:00
test-unit.yml feat(skills): semantic search over the LiteLLM-hosted skill registry (#39401) 2026-09-07 12:28:38 -07:00
triage_issue_with_llm.yml feat(agent-shin): automated PR/issue triage, low-quality auto-close, and review-gate label lifecycle (#30433) 2026-06-17 20:42:27 -07:00
triage_reconsider.yml feat(agent-shin): automated PR/issue triage, low-quality auto-close, and review-gate label lifecycle (#30433) 2026-06-17 20:42:27 -07:00
weekly_load_anomaly.yml perf(ci): cache the Rust build the unit shards compile from scratch (#37795) 2026-08-21 20:15:08 -07:00
zizmor.yml ci: run zizmor and proxy-db unit tests on PRs targeting litellm_ branches 2026-07-16 11:44:35 -07:00