# save_cloud_skill

Save or update a reusable Cloud Skill and create its next versioned revision.

- Canonical: https://docs.xmemo.dev/docs/tools/save-cloud-skill
- Locale: en-US
- Content-Locale: en-US
- Canonical-Content-Digest: 04d9414473b38ac4dc5cc2f5060d7c6b004a36ed2d57cf20fbda34994c123a3f
- Edition-Digest: b0a14c695713cea7e8a79d45bce9a255d8cea73264e5c9eade0b160243a9161f
- Source-Revision: sha256:718059b6bf8760a2fbcf899877706dcb1219cbf46ea3053aecd788d1274ab789

## Tool Reference: `save_cloud_skill`

### Purpose

Create or update a reusable Cloud Skill and produce the next immutable revision of its instructions and typed components.

### Parameters

- `name` (string, required): Human-readable skill name; empty names are rejected.
- `instructions` (string, required): Root procedure body; required and limited to 64 KiB after UTF-8 encoding.
- `slug` (string, optional, default: derived from name): Optional lowercase skill identifier matching the 1–64 character slug contract.
- `description` (string, optional, default: empty): Optional discovery text returned by Level 0 query discovery.
- `publish` (boolean, optional, default: true): Publish intent; personal scope can publish directly, while team scope creates a proposed revision.
- `components_json` (JSON array string, optional, default: []): Optional component objects with type, logical_path, content or artifact_ref, mime_type, and metadata; at most 50 and each content body is limited to 128 KiB.

### Returns

A JSON CloudSkillResponseEnvelope with object='cloud_skill', schema_version='xmemo.cloud_skill.v1', kind='root', render_status, warnings, and data containing skill_id, slug, name, description, revision_id, revision_number, instructions, canonical_hash, and a typed resources manifest.

### Errors

- Authorization failure: the MCP token lacks memory:write or the caller cannot write the resolved personal/team scope.
- Validation failure: name or instructions is empty, the slug is invalid, or the instruction body exceeds 64 KiB.
- Component validation failure: components_json is not a JSON array, a component path is empty/absolute/traversal-like/reserved/duplicated, a type is invalid, or a component exceeds 128 KiB.
- Scope lifecycle: personal publish is direct; team publish is stored as proposed and requires the team review flow.

### Examples

#### Publish a personal procedure



```typescript
save_cloud_skill({
  name: "deployment-procedure",
  instructions: "Check the release, run the smoke test, and report the result.",
  slug: "deployment-procedure",
  description: "A bounded deployment verification procedure",
  publish: true
})
```

### Related Tools

- [recall_cloud_skill](/docs/tools/recall-cloud-skill): Discover the skill, load its root manifest, or read a pinned resource after saving.
- [execute_cloud_skill](/docs/tools/execute-cloud-skill): Run a declared script component only after recalling the intended revision.
- [remember](/docs/tools/remember): Use ordinary durable memory when a reusable procedure is not needed.

## Publish only a reviewed procedure

Supply durable instructions and optional typed components. Keep credentials and private material out of the skill body; the tool stores the procedure in the authenticated personal or team scope.

