publish Command
Publish skill packages to a registry API or local folder.
fastskill publish is an optional operator command. Public/default builds do not include it. Build or install FastSkill with the registry-publish feature when you need this command.
Usage
fastskill publish [OPTIONS]
Options
| Option | Description | Default |
|---|
--artifacts <PATH> | Package file or directory containing ZIP artifacts | ./artifacts |
--registry <NAME> | Repository name from repositories.toml | none |
--api-url <URL> | Registry API base URL, for example https://registry.example.com | FASTSKILL_API_URL if no target flag is set |
--local-dir <PATH> | Local directory to copy ZIP artifacts into | none |
--wait <BOOL> | Wait for validation to complete in API mode | true |
--max-wait <SECONDS> | Maximum wait time in seconds | 300 |
--registry, --api-url, and --local-dir are mutually exclusive.
Examples
Publish to Local fastskill serve
fastskill publish \
--artifacts ./artifacts \
--api-url http://localhost:8080
Local fastskill serve publish endpoints do not require auth headers.
Publish to Remote Registry
fastskill auth login --registry https://registry.example.com
fastskill publish \
--artifacts ./artifacts \
--api-url https://registry.example.com
Remote registries may require authentication depending on server configuration.
fastskill publish \
--artifacts ./artifacts \
--registry official
Publish to Local Folder
fastskill publish \
--artifacts ./artifacts \
--local-dir ./local-registry
Local Publish Identity
When publishing to local fastskill serve, identity is deterministic and anonymous:
uploaded_by = "anonymous"
- publish scope =
anonymous
- returned skill id format =
anonymous/<id>
API Mode Workflow
- Upload package using multipart form data
- Package is staged for validation
- Check status with
/api/v1/registry/publish/status/:job_id
- Accepted packages are written to configured outputs
Troubleshooting
- “No artifacts found”: Verify
--artifacts path points to a ZIP file or directory containing ZIP files
- “Publish timeout”: Increase
--max-wait or set --wait false
- “Registry unavailable”: Check
--api-url URL and network connectivity
See Also