Skip to content

feat(skill): add publish command#696

Merged
calclavia merged 8 commits intomainfrom
calclavia/skill-upload-cmd
Mar 13, 2026
Merged

feat(skill): add publish command#696
calclavia merged 8 commits intomainfrom
calclavia/skill-upload-cmd

Conversation

@calclavia
Copy link
Contributor

@calclavia calclavia commented Mar 13, 2026

What's added in this PR?

Adds smithery skill publish command that supports three ways to publish a skill:

  1. Directory — reads SKILL.md, zips the directory, uploads via skills.upload()
  2. ZIP/Skill file — uploads a pre-zipped archive directly
  3. GitHub URL — publishes a GitHub-backed skill via skills.set()

Other details:

  • Updated @smithery/api SDK to v0.56.0 (adds skills.upload())
  • Added fflate for ZIP creation
  • Namespace resolution: --namespace flag > saved default (namespace use) > interactive prompt
  • Extracted pure utilities to publish-utils.ts with 13 unit tests

What's the issues or discussion related to this PR?

Implements CLI support for the skill upload feature added in smithery-ai/mono#1786, which allows publishing non-GitHub skills via ZIP archives. Also unifies GitHub URL publishing under the same command.

- Adds 'smithery skill upload' command to publish skills from local ZIP archives
- Integrates with updated @smithery/api v0.56.0 which provides skills.upload()
- Supports custom slug via --name flag or auto-detection from SKILL.md
- Interactive namespace resolution using existing patterns
- Uses fflate for ZIP creation (same library as backend)
@calclavia calclavia changed the title feat(skill): add upload command for publishing skill bundles feat(SMI-1461): add upload command for publishing skill bundles Mar 13, 2026
@calclavia calclavia changed the title feat(SMI-1461): add upload command for publishing skill bundles feat(skill): add publish command for skill bundles Mar 13, 2026
- Extract pure utilities to publish-utils.ts for testability
- Accept directories (zipped automatically) or pre-zipped .zip/.skill files
- Add 13 tests covering parseSkillName, collectFiles, createArchiveFromDirectory
Detect when the positional arg is a URL and use skills.set() to publish
a GitHub-backed skill instead of uploading a zip archive.
@calclavia calclavia changed the title feat(skill): add publish command for skill bundles feat(skill): add publish command Mar 13, 2026
Copy link
Contributor Author

calclavia commented Mar 13, 2026

Merge activity

  • Mar 13, 10:40 AM UTC: A user started a stack merge that includes this pull request via Graphite.
  • Mar 13, 10:40 AM UTC: @calclavia merged this pull request with Graphite.

@calclavia calclavia merged commit 2b8c592 into main Mar 13, 2026
4 checks passed
@calclavia calclavia deleted the calclavia/skill-upload-cmd branch March 13, 2026 10:40
@smithery-chore-bot smithery-chore-bot bot mentioned this pull request Mar 13, 2026
calclavia pushed a commit that referenced this pull request Mar 13, 2026
Automated Release PR
---


## [4.7.0](v4.6.0...v4.7.0)
(2026-03-13)


### Features

* **skill:** add publish command
([#696](#696))
([2b8c592](2b8c592))


### Refactors

* remove automation commands feature
([#698](#698))
([5413f9b](5413f9b))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: smithery-chore-bot[bot] <259537197+smithery-chore-bot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant