HKUDS/DeepTutor · error · HTTPException

Skill already exists: {exc}

Error message

Skill already exists: {exc}

What it means

Error "Skill already exists: {exc}" thrown in HKUDS/DeepTutor.

Source

Thrown at deeptutor/api/routers/skills.py:257

    (``suspicious`` verdict abort, safe extraction, ``always`` stripping)
    lives in :func:`deeptutor.services.skill.hub.install_from_hub`.
    """
    import asyncio

    from deeptutor.services.skill.hub import HubError, install_from_hub

    service = get_skill_service()
    try:
        outcome = await asyncio.to_thread(
            install_from_hub,
            payload.ref,
            service=service,
            rename_to=payload.name,
            force=payload.force,
            allow_unverified=payload.allow_unverified,
        )
    except SkillExistsError as exc:
        raise HTTPException(status_code=409, detail=f"Skill already exists: {exc}")
    except (SkillImportError, InvalidSkillNameError) as exc:
        raise HTTPException(status_code=400, detail=str(exc))
    except HubError as exc:
        raise HTTPException(status_code=502, detail=str(exc))

    return {
        "skill": outcome.result.info.to_dict(),
        "verdict": {"status": outcome.verdict.status, "detail": outcome.verdict.detail},
        "version": outcome.ref.version,
    }


@router.put("/{name}")
async def update_skill(name: str, payload: UpdateSkillRequest) -> dict[str, object]:
    service = get_skill_service()
    try:
        info = service.update(
            name,

View on GitHub (pinned to 3e82f13042)

When it happens

Trigger: Thrown at deeptutor/api/routers/skills.py:257 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of HKUDS/DeepTutor@3e82f13042 (2026-08-27). Data as JSON: /api/errors/475df9e5d5b37cce. Report an issue: GitHub.