CLI Enterprise Edition Commands¶
This guide documents how SkillMeat CLI commands behave differently in Enterprise edition compared to Local edition. Enterprise edition introduces multi-tenant support, VGS (Version Graph Service) backed operations, and additional scoping options for enterprise deployments.
Overview¶
SkillMeat CLI commands maintain backward compatibility between editions while adding enterprise-specific features and constraints. Some commands are fully supported with enhanced capabilities, while others display helpful guidance directing users to web or API alternatives.
Fully Supported Commands¶
These commands work in both Local and Enterprise editions, with enterprise-specific enhancements:
deploy¶
Deploy artifacts to project profiles with multi-profile selection capabilities.
Enterprise Enhancement:
In enterprise edition, the deploy command supports additional flags for profile selection:
# Deploy to single profile
skillmeat deploy canvas --profile claude_code --project /path/to/project
# Deploy to multiple specific profiles
skillmeat deploy canvas --profiles claude_code,codex --project /path/to/project
# Deploy using project's saved default profiles
skillmeat deploy canvas --default-profiles --project /path/to/project
# Deploy to all available profiles
skillmeat deploy canvas --all-profiles --project /path/to/project
Behavior in Enterprise:
- Supports
--profileflag for single profile deployment - Supports
--profilesflag for comma-separated profile list - Supports
--use-defaultsto deploy using project's default profile set - Supports
--all-profilesto deploy to all configured profiles - Profile scope prevents unintended broad deployments
- Returns descriptive errors if requested profiles don't exist
Example:
# Example: Deploy Python skill to all profiles in enterprise
skillmeat deploy python-skill --all-profiles \
--project ~/enterprise-project
# Output:
# Deploying python-skill to enterprise project...
# ✓ Deployed to profile: claude_code
# ✓ Deployed to profile: codex
# ✓ Deployed to profile: gemini
# Deployment complete (3 profiles)
undeploy¶
Remove deployed artifacts from project profiles.
Enterprise Behavior:
In enterprise edition, undeploy operates within project and profile scope:
# Undeploy from current project (default profile)
skillmeat undeploy canvas --project /path/to/project
# Undeploy from specific profile
skillmeat undeploy canvas --profile codex --project /path/to/project
The undeploy command respects enterprise tenant boundaries and will not undeploy artifacts from other projects or tenants. The CLI resolves the project path to an internal project ID automatically; if the path cannot be resolved, a user-facing error is shown rather than silently sending an invalid request.
Example:
skillmeat undeploy canvas --project ~/enterprise-app --profile claude_code
# Output:
# Undeployed canvas from profile: claude_code
# Location: /path/to/project/.claude/skills/canvas/
history / version list¶
View artifact version history with VGS-backed queries.
Enterprise Behavior:
In enterprise edition, version history is served through the Version Graph Service (VGS) API:
# List version history
skillmeat history artifact-name --project /path/to/project
# List with limit
skillmeat history artifact-name --limit 20 --project /path/to/project
# List specific collection
skillmeat history artifact-name --collection work
Version queries respect tenant isolation—users only see versions they have access to.
Example:
skillmeat history canvas --limit 10
# Output:
# Version History: canvas
#
# Version Date Author Message
# ──────────────────────────────────────────────────────────
# v2.1.5 2026-05-09 14:30:00 team@example Fixed layout bug
# v2.1.4 2026-05-08 10:15:00 dev@example Refactored styles
# v2.1.3 2026-05-07 16:45:00 admin@example Initial enterprise release
artifact push-content¶
Update or repair a single artifact's stored content, creating a new version without re-publishing the entire bundle.
Enterprise Behavior:
In enterprise edition, push-content creates a new artifact version via the POST /api/v1/artifacts/{artifact_id}/version endpoint. This is distinct from skillmeat update <name> (upstream synchronization) — push-content is for direct content replacement, targeted corrections, or emergency fixes.
# Update from a single file
skillmeat artifact push-content my-skill \
--content-file /path/to/updated_skill.py \
--change-note "Fixed typo in line 42"
# Update multiple files from a directory
skillmeat artifact push-content my-skill \
--content-dir /path/to/artifact/dir \
--change-note "Updated documentation"
# Update from manifest
skillmeat artifact push-content my-skill \
--manifest /path/to/manifest.toml \
--change-note "Synchronized with upstream state"
Key Features:
- Idempotent: Submitting identical content twice results in a no-op on the second call — no duplicate versions
- Artifact:write scope required: Your API token must have the
artifact:writepermission - Tenant-scoped isolation: Works only within your enterprise tenant; cannot access or modify artifacts outside your scope
- JSON output mode (
--jsonflag): For scripting, output the result as JSON:{"action": "created|updated|noop", "version_id": "...", "content_hash": "...", "files_written": 2, "skipped": 0}
When to use push-content vs. update:
| Task | Use |
|---|---|
| Fix a typo or logic error in an artifact you own | push-content |
| Pull the latest version from GitHub upstream | update |
| Revert an artifact to a previous version | push-content (from saved backup file) |
| Emergency content swap or security fix | push-content |
| Bulk re-publish with updated content | POST /bundles/import-pack --conflict=overwrite |
Example:
# Repair a stale skill after discovery in production
skillmeat artifact push-content python-lint \
--content-file corrected_lint.py \
--change-note "Emergency fix: removed deprecated flake8 API call"
# Output:
# Pushed content to python-lint
# action: created (new version created)
# version_id: v2:abc123def456...
# content_hash: sha256:fed0...
# files_written: 1
Reference: For more on update workflows and version management, see Enterprise Version Management — Single-Artifact Content Update.
Commands Not Yet Supported in Enterprise¶
These commands display a helpful message directing users to web interface or API endpoints:
branch¶
Create, list, and manage artifact branches.
Status: Not yet supported in enterprise edition
User Message:
Error: This command is not yet supported in enterprise edition.
Use the web interface at https://app.skillmeat.io/artifacts or
the API endpoint /api/v1/artifacts/{id}/branches.
Documentation: https://docs.skillmeat.dev/user/guides/cli-reference.html#enterprise-limitations
Workaround: Use the web interface to manage branches:
- Navigate to the artifact detail page
- Go to the "Branches" tab
- Create, switch, or delete branches using the web UI
sync-state¶
Check synchronization status between project and collection.
Status: Not yet supported in enterprise edition
User Message:
Error: This command is not yet supported in enterprise edition.
Use the web interface at https://app.skillmeat.io/artifacts or
the API endpoint /api/v1/versions/artifacts/{id}/sync-status.
Documentation: https://docs.skillmeat.dev/user/guides/cli-reference.html#enterprise-limitations
Workaround: Use the web UI to view sync status:
- Navigate to the artifact detail view
- Select the "Sync Status" tab to see collection vs. project state
- Review conflicts and perform manual sync if needed
merge¶
Merge branches or resolve conflicts.
Status: Not yet supported in enterprise edition
User Message:
Error: This command is not yet supported in enterprise edition.
Use the web interface at https://app.skillmeat.io/artifacts or
the API endpoint /api/v1/artifacts/{id}/branches/{branch}/merge.
Documentation: https://docs.skillmeat.dev/user/guides/cli-reference.html#enterprise-limitations
Workaround: Use the web interface for merge operations:
- Navigate to the target branch in the artifact view
- Click "Merge" button
- Select source branch and resolve any conflicts in the UI
cherry-pick¶
Cherry-pick commits from one branch to another.
Status: Not yet supported in enterprise edition
User Message:
Error: This command is not yet supported in enterprise edition.
Use the API endpoint /api/v1/artifacts/{id}/branches/{branch_name}/cherry-pick.
Documentation: https://docs.skillmeat.dev/user/guides/cli-reference.html#enterprise-limitations
Workaround: Use the API directly or web interface:
Via API:
curl -X POST "https://app.skillmeat.io/api/v1/artifacts/{artifact_id}/branches/{branch_name}/cherry-pick" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"source_branch": "main",
"commit_sha": "abc123def456"
}'
Via Web Interface:
- Navigate to the target branch
- Find the commit to cherry-pick
- Click the "Cherry-Pick" action button
- Select destination branch and confirm
Enterprise-Specific Considerations¶
Profile Scoping¶
Enterprise deployments support multiple deployment profiles (claude_code, codex, gemini, cursor). When using deploy or undeploy, always specify the profile(s) you want to target to avoid unintended changes:
# GOOD: Explicitly target profile
skillmeat deploy my-skill --profile claude_code --project /path/to/project
# RISKY: Targets default profile only
skillmeat deploy my-skill --project /path/to/project
Version Graph Service (VGS)¶
All version operations (history, rollback, snapshot) are backed by the centralized Version Graph Service in enterprise edition. This ensures:
- Consistent version history across all tenants
- Atomic version operations (all-or-nothing)
- Audit trail for all version changes
- Promotion workflows (user → team → enterprise)
Tenant Isolation¶
All CLI commands respect enterprise tenant boundaries:
- Users can only view/modify artifacts in their assigned tenant
- Version history is filtered by tenant
- Deployments are scoped to tenant projects
- Collections are tenant-scoped
Error Messages¶
Edition Mismatch¶
Error: This operation requires local edition.
Your deployment is configured as: enterprise
Use the web interface or API for this operation.
Resolution: Check your edition setting:
Profile Not Found¶
Error: Profile 'invalid_profile' not found for this project.
Available profiles: claude_code, codex, gemini
Run: skillmeat project default-profiles list --project /path/to/project
Resolution: Use a valid profile name or check project defaults.
Tenant Boundary Violation¶
Error: You do not have permission to access this artifact.
The artifact belongs to a different tenant or organization.
Resolution: Verify you're working in the correct tenant context. Contact your administrator if you need access.
Best Practices¶
-
Always specify profiles in enterprise: Use
--profile,--profiles,--all-profiles, or--default-profilesto be explicit about where deployments go. -
Use project defaults: Set meaningful default profiles for each project to reduce command complexity:
skillmeat project default-profiles set claude_code,codex --project /path/to/project
skillmeat deploy my-skill --default-profiles --project /path/to/project
-
Check tenant boundaries: Before deploying, verify you're in the correct tenant/organization context.
-
Use web interface for complex operations: For branch management, merging, and conflict resolution, the web interface provides better visualization.
-
Monitor version history: Regularly check version history to understand deployment patterns:
Federated Deployment Tracking (Enterprise-Only)¶
These commands implement the CLI-push relay model: a local project pushes its deployment events to the enterprise instance, which becomes the authoritative deployment ledger.
Prerequisites¶
Before using the federated deployment commands:
- Initialize the local project:
skillmeat init - Authenticate to the enterprise instance:
This writes
~/.skillmeat/enterprise.tomlwith the enterprise base URL and a PAT that must haveartifact:writescope. - Ensure
enterprise.tomlexists — bothproject registerandsync pushread enterprise credentials from~/.skillmeat/enterprise.toml.
skillmeat project register¶
Registers the current local project with the remote enterprise instance and stores the mapping in the local manifest.
Usage:
Options:
| Flag | Description |
|---|---|
--project-id <uuid> |
Skip name-based lookup and use this exact enterprise project UUID. |
--yes |
Skip all confirmation prompts (non-interactive / CI mode). |
What it does:
- Reads the project name and path from
.skillmeat/manifest.toml. - Calls
GET /api/v1/projectson the enterprise instance and matches by name (client-side). - If
git remote get-url originis available, uses it as a secondary deduplication key when multiple projects match by name. - If no match is found, offers to create the project on the enterprise instance.
- Writes
server_project_id(andgit_originwhen resolved) into.skillmeat/manifest.toml.
Examples:
# Auto-discover by name (with confirmation prompt)
skillmeat project register
# Use an explicit enterprise project UUID (skips name lookup)
skillmeat project register --project-id 550e8400-e29b-41d4-a716-446655440000
# Non-interactive / CI
skillmeat project register --yes
Troubleshooting:
server_project_idalready set — Re-runningproject registerwill show the current mapping and offer to overwrite; use--yesto skip the prompt.- Multiple name matches — If >1 enterprise project shares the same name and
git_origindoes not disambiguate, the command lists all candidates and prompts for selection. enterprise.tomlnot found — Runskillmeat auth login --enterprise <url>first.
skillmeat sync push¶
Relays local deployment records to the enterprise instance via POST /api/v1/projects/{id}/relay-deployments.
Usage:
Options:
| Flag | Description |
|---|---|
--dry-run |
Print the records that would be sent without making any API call. |
--since <ISO8601> |
Relay only deployments recorded after this UTC timestamp (e.g. 2026-01-01T00:00:00Z). |
--no-collection-enroll |
Suppress server-side auto-enroll of relayed artifacts into the default collection. |
Prerequisites (checked at runtime):
.skillmeat/manifest.tomlmust exist (runskillmeat init).manifest.tomlmust containserver_project_id(runskillmeat project register).~/.skillmeat/enterprise.tomlmust exist with a PAT holdingartifact:writescope.
What it does:
- Reads
.skillmeat-deployed.tomlfrom the local project. - Filters records by
--sincetimestamp if supplied. - POSTs the batch to
POST /api/v1/projects/{server_project_id}/relay-deployments. - By default, the enterprise instance auto-enrolls each artifact in the authenticated user's collection. Pass
--no-collection-enrollto suppress this.
Examples:
# Preview what would be relayed (no API call)
skillmeat sync push --dry-run
# Relay all deployment records
skillmeat sync push
# Relay only records since a specific date
skillmeat sync push --since 2026-01-01T00:00:00Z
# Relay without auto-enrolling artifacts into the collection
skillmeat sync push --no-collection-enroll
# Relay since a date, suppress auto-enroll, non-interactive preview first
skillmeat sync push --since 2026-06-01T00:00:00Z --dry-run
skillmeat sync push --since 2026-06-01T00:00:00Z --no-collection-enroll
Notes:
- The relay endpoint is idempotent: sending the same
content_hashfor the same(tenant_id, artifact_id, project_id, deployment_profile_id)tuple updatesupdated_atwithout creating a duplicate row. - Local edition:
sync pushis not applicable — there is no enterprise instance to relay to.
Comparison: Local vs. Enterprise¶
| Command | Local | Enterprise | Notes |
|---|---|---|---|
deploy |
Full | Full (with profiles) | Enterprise requires explicit profile selection |
undeploy |
Full | Full | Tenant-scoped in enterprise |
history |
Full | Full (VGS-backed) | Powered by Version Graph Service |
branch |
Full | Web/API only | Web interface recommended |
sync-state |
Full | Web/API only | Web interface recommended |
merge |
Full | Web/API only | Web interface recommended |
cherry-pick |
Full | Web/API only | Use API endpoint or web UI |
project register |
— | Full | Register local project with enterprise instance |
sync push |
— | Full | Relay local deployment records to enterprise |
Getting Help¶
For issues with enterprise CLI commands:
- Check your edition:
skillmeat config get edition - Verify profiles:
skillmeat project default-profiles list --project /path/to/project - Review error message: Contains direction to web or API alternative
- Contact support: Your administrator or support team for tenant access issues
Related Documentation¶
- Edition Feature Matrix — Complete feature comparison
- CLI Reference — Full command documentation
- Authentication Setup — Enterprise auth configuration
- API Documentation — API reference for unsupported commands