Packages a locally created Claude skill for publishing to Shipables. Give it a path to your skill directory and it will read the SKILL.md, generate a shipables.json, bundle everything into a .tar.gz archive in /tmp/, and tell you exactly where to find it — ready to drag and drop into the Shipables upload UI. Trigger this skill whenever the user wants to publish, package, upload, or ship a skill to Shipables, or when they say things like "package my skill", "get my skill ready to publish", "prepare skill for shipables", or "create archive for my skill".
npx @senso-ai/shipables install UJameel/skill-publisherPackages a local skill directory into a Shipables-ready archive.
Ask the user for the path to their skill directory (e.g. ~/.claude/skills/my-skill). If they've already provided it, skip asking.
Verify the directory exists and contains a SKILL.md. If not, tell the user and stop.
Read the SKILL.md file and extract the YAML frontmatter fields:
name — expected format is Author/SkillName (e.g. UJameel/Sift)description — the one-line description stringSplit name on / to get:
author = the part before / (e.g. UJameel)skill_slug = the part after /, lowercased (e.g. sift)If name has no /, use the whole value as skill_slug and prompt for the author separately.
Prompt the user for the following, one at a time or as a grouped list. Use sensible defaults shown in brackets:
1.0.0] — what version is this release?MIT] — what license applies?homepage and repository. Format: https://github.com/Author/SkillName. Offer to auto-construct it from the parsed author and skill_slug (e.g. https://github.com/UJameel/Sift) — ask user to confirm or correct.Create shipables.json with this exact structure:
{
"name": "<skill_slug>",
"version": "<version>",
"description": "<description from frontmatter>",
"author": "<author>",
"license": "<license>",
"tags": ["<tag1>", "<tag2>", "..."],
"homepage": "<github url>",
"repository": "<github url>"
}
Write this file to a temp working directory (e.g. /tmp/skill-publisher-<skill_slug>/).
Copy the skill directory contents there too:
cp -r <skill_dir>/. /tmp/skill-publisher-<skill_slug>/
Then write shipables.json into that temp directory.
Run the following from inside the temp directory, including only files/folders that actually exist:
cd /tmp/skill-publisher-<skill_slug>
# Build the include list dynamically
INCLUDE="SKILL.md shipables.json"
[ -d scripts ] && INCLUDE="$INCLUDE scripts/"
[ -d references ] && INCLUDE="$INCLUDE references/"
[ -d assets ] && INCLUDE="$INCLUDE assets/"
[ -d agents ] && INCLUDE="$INCLUDE agents/"
tar -czf /tmp/<skill_slug>.tar.gz $INCLUDE
Tell the user:
Your skill archive is ready:
/tmp/<skill_slug>.tar.gz
Go to Shipables → Publish a Skill, enter your skill name as:
<author> / <skill_slug>
Then drag and drop the archive file into the upload area and click Publish Skill.
Also show a summary of what was included in the archive (list the files/folders bundled).
shipables.json already exists in the skill directory, ask the user if they want to regenerate it or use the existing one.