skillshare v0.25.13 Release Notes
TL;DR
mcp servecan edit the skills you list. An Agent previews the full diff and audit result, then saves exactly that preview. Editing stays off until you list skills.list_skillsandread_skillare marked read-only, so clients that ask before tools that change data stop asking for them.
Edit skills over mcp serve
An Agent that reaches your skills only through mcp serve could read them but had to hand every change back to you. Skills you list in mcp.serve.edit.skills can now be changed one existing file at a time:
mcp:
serve:
edit:
skills: [pdf, _team__*] # flat names, matched like a target's include
preview_ttl: 30m # how long a preview can be applied; default 30mThe server then offers two more tools:
preview_skill_edittakes a file, the revision the Agent read, and the complete new content. It writes nothing and returns the full diff, the audit findings and a preview id.apply_skill_edittakes only that preview id and saves exactly what was previewed, once. It is markeddestructiveHint, so a client that asks before such tools asks you.
An edit is refused, and nothing is written, when:
- the skill is not listed, sits in a tracked repo, or was installed from upstream, since
updatewould overwrite the change; - the file changed after it was read or previewed;
- the skill would fail validation, or the file is not UTF-8 text;
- the audit finds something at or above
audit.block_threshold. As withinstall, a finding you accepted withinstall --forcedoes not block, and each finding is marked new or existing so you can see what the edit adds; - the preview is older than
preview_ttl, was already applied, or the server restarted.
An edit cannot create, delete or rename files. Each save goes to the operations log and each audit to skillshare log --audit. Targets get the change on the next sync. skillshare mcp serve --check reports how many served skills are editable.
Thanks to @salmonumbrella for proposing safe skill editing over MCP (#540).
Read-only skill tools
Clients and gateways that gate tools by annotation treat a tool without readOnlyHint as one that changes data, so every list_skills or read_skill call could stop for approval. Both tools are now marked read-only and are called without asking.