Skip to main content

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

OptionDescriptionDefault
--artifacts <PATH>Package file or directory containing ZIP artifacts./artifacts
--registry <NAME>Repository name from repositories.tomlnone
--api-url <URL>Registry API base URL, for example https://registry.example.comFASTSKILL_API_URL if no target flag is set
--local-dir <PATH>Local directory to copy ZIP artifacts intonone
--wait <BOOL>Wait for validation to complete in API modetrue
--max-wait <SECONDS>Maximum wait time in seconds300
--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.

Publish Through a Configured Repository

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

  1. Upload package using multipart form data
  2. Package is staged for validation
  3. Check status with /api/v1/registry/publish/status/:job_id
  4. 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