{"record":{"id":"0d5634e9c6540315","repo":"zylon-ai/private-gpt","slug":"skill-with-id-skill-id-is-readonly-and-cannot-cr","errorCode":null,"errorMessage":"Skill with id {skill_id} is readonly and cannot create versions","messagePattern":"Skill with id (.+?) is readonly and cannot create versions","errorType":"http","errorClass":"HTTPException","httpStatus":403,"severity":"error","filePath":"private_gpt/server/skills/skill_router.py","lineNumber":484,"sourceCode":"    request: Request,\n    skill_id: str,\n    collection: Annotated[\n        str,\n        Form(min_length=1, max_length=255, examples=[\"acme-prod\"]),\n    ],\n    anthropic_beta: Annotated[list[str] | None, Header(alias=\"anthropic-beta\")] = None,\n) -> SkillVersionResponse:\n    \"\"\"Create and return a new version for the requested skill.\"\"\"\n    del anthropic_beta\n    service: SkillService = request.state.injector.get(SkillService)\n    skill = await service.get_skill(skill_id=skill_id, collection=collection)\n    if not skill:\n        raise HTTPException(\n            status_code=404,\n            detail=f\"Skill with id {skill_id} not found in collection {collection}\",\n        )\n    if skill.readonly:\n        raise HTTPException(\n            status_code=403,\n            detail=f\"Skill with id {skill_id} is readonly and cannot create versions\",\n        )\n\n    form = await request.form()\n    uploads = await uploads_from_request_form(list(form.multi_items()))\n    files = await stored_files_from_uploads(uploads)\n\n    version = await service.create_version(\n        skill_id=skill_id,\n        collection=collection,\n        files=files,\n    )\n    if not version:\n        raise HTTPException(\n            status_code=404,\n            detail=f\"Skill with id {skill_id} not found in collection {collection}\",\n        )","sourceCodeStart":466,"sourceCodeEnd":502,"githubUrl":"https://github.com/zylon-ai/private-gpt/blob/4a030776a31a901ad80b1bf4d7faa2c1a367efbb/private_gpt/server/skills/skill_router.py#L466-L502","documentation":"Error \"Skill with id {skill_id} is readonly and cannot create versions\" thrown in zylon-ai/private-gpt.","triggerScenarios":"Raised when attempting to create a new version of a skill marked as readonly.","commonSituations":"Versioning a bundled/system skill; copy its content into a new custom skill and version that instead.","solutions":["Do not attempt to create versions of readonly skills; create versions only for user-created skills.","Fork or duplicate the skill as a user-owned skill, then create versions on the copy.","Check the skill's readonly flag before calling the create-version endpoint."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"4a030776a31a901ad80b1bf4d7faa2c1a367efbb","analyzedAt":"2026-08-15T03:51:26.951Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}