Publishing Skills
Thetank publish command packages and uploads your skill to the Tank registry.
tank publish
Publish a skill package to the registry.Prerequisites
- Authentication - Run
tank loginfirst - skills.json - Create with
tank init - Skill files - Add your skill implementation
Publishing Flow
- Read
skills.jsonmanifest - Pack directory into tarball (
.tgz) - Validate permissions and metadata
- Upload manifest to registry
- Upload tarball to signed storage URL
- Confirm publication with integrity data
Example Output
Options
—dry-run
Preview the publication without uploading.--dry-run to:
- Verify tarball creation works
- Check compressed size
- Validate authentication
- Preview what will be published
—private
Override visibility to private.visibility: "private" in the manifest, regardless of skills.json value.
—visibility
Explicitly set visibility.—directory
Publish from a different directory.process.cwd()).
Tarball Creation
The packer creates a gzip-compressed tarball with security filters:Included Files
- All files in the directory
- SKILL.md (skill documentation)
- skills.json (manifest)
- Source code, assets, etc.
Excluded Files (Always)
apps/cli/src/lib/packer.ts:10 (ALWAYS_IGNORED constant)
Size Limits
- Max total size: 50 MB uncompressed
- Max file count: 1000 files
- Max single file: No explicit limit, but total must be <50 MB
Security Filters
During packing, the following are rejected:- Symbolic links
- Hard links
- Absolute paths
- Path traversal attempts (
../)
Version Conflicts
If the version already exists in the registry:- Edit
skills.jsonand incrementversion - Run
tank publishagain
Authentication Errors
Token Expired
tank login to refresh your token.
Insufficient Permissions
tank login to obtain a token with write permissions.
Organization Membership
For scoped packages (@org/name):
Publication Workflow
Step 1: Initialize
Step 2: Add Files
Step 3: Preview
Step 4: Publish
Step 5: Verify
Integrity Verification
After upload, Tank computes SHA-512 integrity hashes:- Tarball was not tampered with
- Downloaded file matches published file
- No corruption during transfer
Metadata Extraction
During publish, Tank extracts:- README content - From SKILL.md (converted to HTML)
- File list - All files in tarball with sizes
- Permissions - From
skills.jsonmanifest - Dependencies - From
skillsfield
Private Package Publishing
Private skills require organization membership:- Not visible in public search
- Require authentication to install
- Only accessible to organization members
Error Recovery
Upload Failed
If tarball upload fails:tank publish. The registry will issue a new signed upload URL.
Confirmation Failed
If confirmation fails after upload:tank publish.
Security Scanning
After publication, Tank automatically:- Queues skill for security analysis
- Runs 6-stage scan pipeline (ingest, structure, static, injection, secrets, supply-chain)
- Computes audit score (0-10)
- Assigns verdict (PASS, FLAGGED, FAIL)
Next Steps
After publishing:- View in registry:
https://tank.dev/skills/your-skill - Install:
tank install your-skill - Check audit:
tank audit your-skill - Update: Bump version and run
tank publishagain