vellum-avatar
$
npx mdskill add vellum-ai/vellum-assistant/vellum-avatarYou are helping the user customize their assistant's avatar. There are three ways to set an avatar: building a native character from traits, uploading a custom image, or generating one with AI. When the user says they want to change their avatar, present all three options and ask which they prefer.
SKILL.md
.github/skills/vellum-avatarView on GitHub ↗
---
name: vellum-avatar
description: Customize the assistant's avatar - build a native character, upload an image, or generate one with AI
compatibility: "Designed for Vellum personal assistants"
metadata:
emoji: "🎨"
vellum:
category: "content"
display-name: "Avatar"
---
You are helping the user customize their assistant's avatar. There are three ways to set an avatar: building a native character from traits, uploading a custom image, or generating one with AI. When the user says they want to change their avatar, present all three options and ask which they prefer.
## Avatar Modes
The avatar system supports two representations:
- **Native character** - Defined by `data/avatar/character-traits.json` (body shape, eye style, color). Rendered client-side as an animated character. A static PNG at `data/avatar/avatar-image.png` is auto-generated for use by other clients and the dock icon.
- **Custom image** - A static PNG at `data/avatar/avatar-image.png`. Used for uploaded or AI-generated avatars. When set via upload (`assistant avatar set`), character traits are preserved so the native character can be restored later via `assistant avatar remove`. When AI-generated (`assistant avatar generate`), character trait files are removed.
## Mode 1: Native Character Traits
The user picks a body shape, eye style, and color. Present the options conversationally - describe what each looks like so the user can choose without seeing a preview.
### Body shapes
| Value | Description |
| ------ | --------------------------------- |
| blob | Soft, amorphous rounded shape |
| cloud | Puffy cloud silhouette |
| sprout | Small plant-like form with a stem |
| star | Five-pointed star |
| ghost | Classic ghost silhouette |
| urchin | Spiky sea-urchin shape |
| stack | Stacked rounded rectangles |
| flower | Flower with petals |
| burst | Spiky starburst |
| ninja | Stealthy masked figure |
### Eye styles
| Value | Description |
| --------- | ----------------------------------------- |
| grumpy | Furrowed, slightly annoyed look |
| angry | Sharp, intense expression |
| curious | Wide, inquisitive eyes |
| goofy | Playful, off-kilter expression |
| surprised | Big round eyes, startled look |
| bashful | Shy, half-closed eyes looking to the side |
| gentle | Soft, kind expression |
| quirky | Asymmetric, offbeat look |
| dazed | Unfocused, dreamy stare |
### Colors
| Value | Appearance |
| ------ | --------------- |
| green | Leafy green |
| orange | Warm orange |
| pink | Soft pink |
| purple | Rich purple |
| teal | Blue-green teal |
| yellow | Bright yellow |
### Setting traits
After the user chooses, run the following command to set the character traits. This writes `character-traits.json`, generates the static PNG, creates an ASCII representation, updates IDENTITY.md, and notifies connected clients — all in one step:
```bash
assistant avatar character update --body-shape <value> --eye-style <value> --color <value>
```
The client will detect the traits file and render the animated character.
## Mode 2: Upload a Custom Image
The user provides a file path to an image they want to use as their avatar.
Use the CLI command to set it:
```bash
assistant avatar set --image "<user-provided-path>"
```
The path can be absolute or relative to the workspace (e.g. `conversations/<id>/attachments/Dropped Image.png`).
## Mode 3: AI-Generated Image
The user describes what they want their avatar to look like. Use the `bash` tool to run the CLI command below.
**IMPORTANT: You MUST set `network_mode` to `"proxied"` on this tool call. Without it, the command cannot reach the image generation API and will fail.**
```json
{
"command": "assistant avatar generate --description \"<user's description>\"",
"network_mode": "proxied"
}
```
This generates an image using AI and saves it to `data/avatar/avatar-image.png`.
## Removing the Avatar
When the user wants to remove their custom avatar and go back to the default:
```bash
assistant avatar remove
```
This removes the custom image. If a native character was previously configured, it is automatically restored (the character traits are preserved).
## Viewing the Avatar
When the user asks to see their current avatar, get the path and then read it:
```bash
assistant avatar get
```
This prints the absolute path to the avatar image (regenerating from character traits if needed). Then use `file_read` on the returned path to display the image inline.
To get the avatar as base64 data instead:
```bash
assistant avatar get --format base64
```
## UX Guidelines
- When the user says they want to change or set their avatar, present all three options:
1. **Build a character** - Pick a body shape, eye style, and color for an animated native character
2. **Upload an image** - Use an existing image file from their computer
3. **Generate with AI** - Describe what they want and let AI create it
- Ask which mode they prefer before proceeding.
- For native characters, walk through each trait one at a time (body shape, then eye style, then color). Describe the options conversationally so the user can choose without seeing them.
- For AI generation, ask the user to describe the avatar they want. Be encouraging - suggest they include details like style, colors, mood, or a character concept.
- After any avatar change, confirm it was applied and let the user know they can change it again anytime.
- **After any avatar change**, update the `## Avatar` section in `IDENTITY.md` with a plain-text description of the current avatar appearance. Do NOT use markdown image links — write a human-readable description instead. This ensures you remember what you look like across sessions. Example: `## Avatar\nA friendly purple cat with green eyes wearing a tiny hat`
- **When the user asks what your avatar looks like**, read the `## Avatar` section in `IDENTITY.md` for your text description.
- **When the user asks you to show or provide your avatar**, run `assistant avatar get` to get the path, then use `file_read` on that path to display the image. Only do this once.
More from vellum-ai/vellum-assistant
- acpSpawn external coding agents via the Agent Client Protocol (ACP)
- amazonShop on Amazon and Amazon Fresh through your browser
- api-mappingRecord and analyze API surfaces of web services
- app-builderBuild and edit small, personal visual tools and artifacts — dashboards, trackers, calculators, data visualizations, charts, simple landing pages, and slide decks the user wants for THEMSELVES. This is the right skill whenever the user asks to "visualize this," "make a chart," or "build an artifact" for their own use, or to edit an app they already built here. Do NOT reach for a ui_show dynamic_page to fake an artifact — build a real persistent app here. NOT for complex, multi-user, or shippable products — those go to a real project folder with a coding agent (see Scope below).
- app-controlDrive a specific named macOS app via raw input bypassing the Accessibility tree
- assistant-migrationMigrate from ChatGPT, Claude, OpenClaw, Hermes, Manus, and other AI assistants into Vellum by inspecting their data exports, conversation archives, files, prompts, custom instructions, memory, saved memories, tools, GPTs, workflows, integrations, and relationships, then mapping as much as safely possible into Vellum primitives. Handles single-source and multi-source migrations with a unified, deduplicated inventory.
- chatgpt-importImport conversation history from ChatGPT into Vellum
- cli-discoverDiscover which CLI tools are installed, their versions, and authentication status
- computer-useControl the macOS desktop
- contactsManage contacts, communication channels, access control, and invite links