BerriAI/litellm · error · ValueError

Skill not found: {skill_id}

Error message

Skill not found: {skill_id}

What it means

Error "Skill not found: {skill_id}" thrown in BerriAI/litellm.

Source

Thrown at litellm/llms/litellm_proxy/skills/handler.py:159

            return cached

        prisma_client: Final = await LiteLLMSkillsHandler._get_prisma_client()
        skill: Final = await SkillsRepository(prisma_client).table.find_unique(where={"skill_id": skill_id})
        _SKILL_CACHE.set_cache(skill_id, skill if skill is not None else _NEGATIVE_SKILL_SENTINEL)
        return skill

    @staticmethod
    async def get_skill(
        skill_id: str,
        user_api_key_dict: UserAPIKeyAuth | None = None,
    ) -> LiteLLM_SkillsTable:
        verbose_logger.debug("LiteLLMSkillsHandler: Getting skill %s", skill_id)

        skill: Final = await LiteLLMSkillsHandler._load_skill(skill_id)
        # Same "not found" message for both "missing" and "cross-tenant"
        # so callers can't enumerate skill IDs they don't own.
        if skill is None or not user_can_access_resource_owner(getattr(skill, "created_by", None), user_api_key_dict):
            raise ValueError(f"Skill not found: {skill_id}")

        return _prisma_skill_to_litellm(skill)

    @staticmethod
    async def delete_skill(
        skill_id: str,
        user_api_key_dict: UserAPIKeyAuth | None = None,
    ) -> dict[str, str]:
        prisma_client: Final = await LiteLLMSkillsHandler._get_prisma_client()
        verbose_logger.debug("LiteLLMSkillsHandler: Deleting skill %s", skill_id)

        skill: Final = await LiteLLMSkillsHandler._load_skill(skill_id)
        if skill is None or not user_can_access_resource_owner(getattr(skill, "created_by", None), user_api_key_dict):
            raise ValueError(f"Skill not found: {skill_id}")

        await SkillsRepository(prisma_client).table.delete(where={"skill_id": skill_id})
        _SKILL_CACHE.set_cache(skill_id, _NEGATIVE_SKILL_SENTINEL)

View on GitHub (pinned to 6c2dcb801b)

Solutions

  1. Check that the skill_id exists in the LiteLLM skills store.

When it happens

Trigger: Thrown at litellm/llms/litellm_proxy/skills/handler.py:159 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of BerriAI/litellm@6c2dcb801b (2026-08-15). Data as JSON: /api/errors/d3d1b063fc746ba0. Report an issue: GitHub.