mirror of
https://github.com/blader/humanizer.git
synced 2026-09-27 18:19:51 +00:00
GUI zip upload fails: "Zip file contains a symbolic link" #224
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
skills/blader-humanizer#224
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Hi @blader, I'm a big fan of your humanizer skill!
Updating Humanizer through the Claude Desktop GUI ("Replace" on the installed skill) no longer works with the zip from
Code → Download ZIP. It worked before. Now the upload is rejected withZip file contains a symbolic link.Steps to reproduce
Code → Download ZIP)..zip.What happens
The upload fails with:
skills/humanizer/SKILL.mdis a symlink to the rootSKILL.md, which the README describes as deliberate so Claude Desktop and older plugin loaders find the skill without a second prompt. GitHub's zip keeps it as a real symlink entry, and the uploader now rejects any archive that contains one. This looks like a change on Anthropic's side rather than anything in the repo.One thing worth flagging
Replacing the symlink with a regular file does not work:
scripts/validate-package.pyrequires the symlink and exits withLink skills/humanizer/SKILL.md to the root SKILL.md, so.github/workflows/validate.ymlfails on every PR and push tomain.SKILL.mdfiles, at the root and underskills/humanizer/, and the uploader rejects that withZip must contain exactly one SKILL.md file.I ran into both while working around it locally, so the symlink is better left in place.
Suggested fix
The source archive was never meant to be a skill package. A purpose-built zip published as a release asset avoids the symlink, because it copies from the root
SKILL.md, which is a regular file.I tested this structure locally, and it uploads and replaces the skill through the GUI without errors:
The workflow below was generated by Claude Code, so treat it as a starting point rather than something I have run in CI. It assumes you publish GitHub Releases:
If you don't cut releases, a tag trigger or a documented manual step in the README would solve it too. Either way the Skills CLI, the plugin loader, and
validate-package.pystay untouched.Best regards,
Sérgio Sousa