{"record":{"id":"475df9e5d5b37cce","repo":"HKUDS/DeepTutor","slug":"skill-already-exists-exc","errorCode":null,"errorMessage":"Skill already exists: {exc}","messagePattern":"Skill already exists: (.+?)","errorType":"http","errorClass":"HTTPException","httpStatus":409,"severity":"error","filePath":"deeptutor/api/routers/skills.py","lineNumber":257,"sourceCode":"    (``suspicious`` verdict abort, safe extraction, ``always`` stripping)\n    lives in :func:`deeptutor.services.skill.hub.install_from_hub`.\n    \"\"\"\n    import asyncio\n\n    from deeptutor.services.skill.hub import HubError, install_from_hub\n\n    service = get_skill_service()\n    try:\n        outcome = await asyncio.to_thread(\n            install_from_hub,\n            payload.ref,\n            service=service,\n            rename_to=payload.name,\n            force=payload.force,\n            allow_unverified=payload.allow_unverified,\n        )\n    except SkillExistsError as exc:\n        raise HTTPException(status_code=409, detail=f\"Skill already exists: {exc}\")\n    except (SkillImportError, InvalidSkillNameError) as exc:\n        raise HTTPException(status_code=400, detail=str(exc))\n    except HubError as exc:\n        raise HTTPException(status_code=502, detail=str(exc))\n\n    return {\n        \"skill\": outcome.result.info.to_dict(),\n        \"verdict\": {\"status\": outcome.verdict.status, \"detail\": outcome.verdict.detail},\n        \"version\": outcome.ref.version,\n    }\n\n\n@router.put(\"/{name}\")\nasync def update_skill(name: str, payload: UpdateSkillRequest) -> dict[str, object]:\n    service = get_skill_service()\n    try:\n        info = service.update(\n            name,","sourceCodeStart":239,"sourceCodeEnd":275,"githubUrl":"https://github.com/HKUDS/DeepTutor/blob/3e82f130422a813cdd73c10b21a44e9325f5821a/deeptutor/api/routers/skills.py#L239-L275","documentation":"Error \"Skill already exists: {exc}\" thrown in HKUDS/DeepTutor.","triggerScenarios":"Thrown at deeptutor/api/routers/skills.py:257 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3e82f130422a813cdd73c10b21a44e9325f5821a","analyzedAt":"2026-08-27T06:57:25.364Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}