@plusonelabs/cue 0.0.93 → 0.0.95

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/bin/cue.js +10 -10
  2. package/bin/windows-bootstrap.ps1 +9 -9
  3. package/bin/windows-runtime-artifact.json +2 -2
  4. package/dist/cli.mjs +1088 -821
  5. package/dist/skills/README.md +199 -0
  6. package/dist/skills/_lib/credentials.py +72 -0
  7. package/dist/skills/activity/SKILL.md +97 -0
  8. package/dist/skills/assistant/SKILL.md +173 -0
  9. package/dist/skills/audio/SKILL.md +132 -0
  10. package/dist/skills/elevenlabs-tts/SKILL.md +76 -0
  11. package/dist/skills/elevenlabs-tts/scripts/speak.ts +226 -0
  12. package/dist/skills/event/SKILL.md +98 -0
  13. package/dist/skills/gemini-search/SKILL.md +52 -0
  14. package/dist/skills/gemini-search/generate.py +195 -0
  15. package/dist/skills/image/SKILL.md +169 -0
  16. package/dist/skills/like/SKILL.md +66 -0
  17. package/dist/skills/listen/SKILL.md +57 -0
  18. package/dist/skills/listen/scripts/listen.sh +74 -0
  19. package/dist/skills/listen/scripts/record.swift +94 -0
  20. package/dist/skills/markdown-to-pdf/SKILL.md +31 -0
  21. package/dist/skills/message/SKILL.md +136 -0
  22. package/dist/skills/mini-apps/SKILL.md +256 -0
  23. package/dist/skills/music/SKILL.md +139 -0
  24. package/dist/skills/nano-banana/SKILL.md +70 -0
  25. package/dist/skills/nano-banana/generate.py +191 -0
  26. package/dist/skills/news/SKILL.md +41 -0
  27. package/dist/skills/notify/SKILL.md +123 -0
  28. package/dist/skills/places/SKILL.md +215 -0
  29. package/dist/skills/posts/SKILL.md +440 -0
  30. package/dist/skills/project/SKILL.md +116 -0
  31. package/dist/skills/pulse/SKILL.md +106 -0
  32. package/dist/skills/reddit/SKILL.md +41 -0
  33. package/dist/skills/seeddance/SKILL.md +81 -0
  34. package/dist/skills/seeddance/generate.py +303 -0
  35. package/dist/skills/seedream/SKILL.md +86 -0
  36. package/dist/skills/seedream/generate.py +301 -0
  37. package/dist/skills/social-graph/SKILL.md +119 -0
  38. package/dist/skills/transcribe/SKILL.md +150 -0
  39. package/dist/skills/transcribe/generate.py +389 -0
  40. package/dist/skills/user/SKILL.md +180 -0
  41. package/dist/skills/veo3/SKILL.md +76 -0
  42. package/dist/skills/veo3/generate.py +339 -0
  43. package/dist/skills/video/SKILL.md +163 -0
  44. package/dist/skills/weather/SKILL.md +101 -0
  45. package/dist/skills/web-fetch/SKILL.md +43 -0
  46. package/dist/skills/web-search/SKILL.md +52 -0
  47. package/dist/skills/z-asr/SKILL.md +58 -0
  48. package/dist/skills/z-asr/generate.py +177 -0
  49. package/dist/skills/z-search/SKILL.md +57 -0
  50. package/dist/skills/z-search/generate.py +189 -0
  51. package/dist/skills/z-tts/SKILL.md +51 -0
  52. package/dist/skills/z-tts/generate.py +172 -0
  53. package/package.json +1 -1
@@ -0,0 +1,199 @@
1
+ ---
2
+ title: cue-cli-skills
3
+ description: First-party skills bundled with Cue CLI
4
+ updated: 2026-03-06
5
+ ---
6
+
7
+ # Cue CLI Skills
8
+
9
+ First-party skills bundled with and maintained as part of the Cue CLI.
10
+
11
+ ## Skills
12
+
13
+ Primary order for personal-agent utility in third-party-hosted workflows:
14
+
15
+ 1. Foundation
16
+ 2. Communication
17
+ 3. Utility
18
+ 4. Identity and Social
19
+ 5. MISC
20
+
21
+ This categorized list is command-first when a `cue ...` interface exists and omits provider implementation variants.
22
+
23
+ ### Foundation (Ground Truth Retrieval)
24
+
25
+ | Skill | Description | Interface |
26
+ | -------------- | ------------------------------------ | ---------------- |
27
+ | **web-search** | Search the web and fetch URL content | `cue web-search` |
28
+ | **web-fetch** | Fetch and summarize web content | `cue web-fetch` |
29
+ | **weather** | Get current weather and forecasts | `cue weather` |
30
+ | **news** | Search recent news articles | `cue news` |
31
+ | **places** | Search and explore places | `cue place` |
32
+
33
+ ### Communication (Human Connection and Attention Loop)
34
+
35
+ | Skill | Description | Interface |
36
+ | ------------ | ------------------------------------------------------------------------- | -------------------------- |
37
+ | **message** | Generic inbox and conversation messaging (list, create, sync, send, read) | `cue inbox`, `cue message` |
38
+ | **notify** | Send push notifications to user's device or email | `cue notify` |
39
+ | **pulse** | Private, agent-curated personal feed entries | `cue pulse` |
40
+ | **activity** | Append messages to the fixed Activity log conversation | `cue activity` |
41
+
42
+ ### Utility (Daily Agent Operations and Media Workflows)
43
+
44
+ | Skill | Description | Interface |
45
+ | ------------------- | --------------------------------------------- | ---------------- |
46
+ | **transcribe** | Transcribe audio/video files or URLs | `cue transcribe` |
47
+ | **listen** | Record from microphone and transcribe locally | `cue listen` |
48
+ | **markdown-to-pdf** | Convert Markdown documents to local PDF | `cue md-to-pdf` |
49
+ | **image** | Generate images from prompts | `cue image` |
50
+ | **video** | Generate short AI videos from prompts | `cue video` |
51
+ | **audio** | Convert text to speech via CLI | `cue audio` |
52
+ | **music** | Generate instrumental music from prompts | `cue music` |
53
+
54
+ ### Identity and Social (Identity, Publishing, and Network Actions)
55
+
56
+ | Skill | Description | Interface |
57
+ | ---------------- | ----------------------------------------------- | ----------------------------------------- |
58
+ | **user** | Manage authenticated user profile data | `cue user` |
59
+ | **assistant** | Manage AI assistant settings | `cue assistant` |
60
+ | **posts** | Manage feed posts and retrieval (`post`/`feed`) | `cue post`, `cue feed` |
61
+ | **event** | Create and browse events | `cue event` |
62
+ | **like** | Like and bookmark posts | `cue like` |
63
+ | **social-graph** | Follow/unfollow and manage friend relationships | `cue follow`, `cue friend`, `cue friends` |
64
+
65
+ ### MISC (Lower-Frequency Operational Utilities)
66
+
67
+ | Skill | Description | Interface |
68
+ | ------------- | ------------------------------------------------------------------------------------------- | ------------------------- |
69
+ | **project** | Upload/download files and share them easily across different machines, plus manage projects | `cue project`, `cue file` |
70
+ | **reddit** | Browse and search public Reddit posts, threads, and users | `cue reddit` |
71
+ | **mini-apps** | Deploy and publish user mini apps to feed | `cue app` |
72
+
73
+ ## First-Party vs User Skills
74
+
75
+ | Type | Location | Source |
76
+ | ----------- | ------------------------ | ------------------------------------ |
77
+ | First-party | `cue-cli/skills/` | Bundled with CLI, maintained by team |
78
+ | User | `~/.cue/skills/` | Installed by user (`/skill install`) |
79
+ | Project | `<project>/.cue/skills/` | Per-project, highest precedence |
80
+
81
+ First-party skills are identified by `metadata.scope: first-party` in their `SKILL.md` frontmatter.
82
+
83
+ ## SKILL.md Format
84
+
85
+ ### Standard Frontmatter
86
+
87
+ ```yaml
88
+ ---
89
+ name: skill-name
90
+ description: One-line description for AI discovery
91
+ category: utilities | media | data | dev | comms
92
+ type: cli | context | hybrid
93
+ env:
94
+ - GEMINI_API_KEY
95
+ - OPENAI_API_KEY?
96
+ metadata:
97
+ short-description: Brief label
98
+ scope: first-party
99
+ supports-json-output: false
100
+ ---
101
+ Main content here...
102
+ ```
103
+
104
+ ### Extended Metadata
105
+
106
+ ```yaml
107
+ ---
108
+ name: skill-name
109
+ description: One-line description for AI discovery
110
+ category: utilities
111
+ type: context
112
+ metadata:
113
+ short-description: Brief label
114
+ author: username
115
+ version: '1.0.0'
116
+ repository: https://github.com/user/skill
117
+ date: January 2026
118
+ ---
119
+ Main content here...
120
+ ```
121
+
122
+ | Field | Required | Description |
123
+ | ------------------------------- | -------- | -------------------------------------------------------------------------------------- |
124
+ | `name` | Yes | Skill identifier (kebab-case) |
125
+ | `description` | Yes | One-line summary for AI context |
126
+ | `category` | Yes | Discovery bucket used for tiered search (`utilities`, `media`, `data`, `dev`, `comms`) |
127
+ | `type` | Yes | `cli`, `context`, or `hybrid` |
128
+ | `env` | No | Declared env contract. `?` suffix marks optional vars |
129
+ | `metadata.short-description` | No | Brief label for UI/system-prompt display |
130
+ | `metadata.scope` | No | `first-party` for bundled skills |
131
+ | `metadata.supports-json-output` | No | `true`/`false` for structured JSON-first output capabilities |
132
+ | `author` | No | Creator name/username |
133
+ | `version` | No | Semantic version |
134
+ | `repository` | No | Source code URL |
135
+ | `date` | No | Last updated date |
136
+
137
+ ## Shared Libraries
138
+
139
+ `_lib/` contains shared Python utilities used by multiple skills:
140
+
141
+ | File | Description |
142
+ | ---------------- | ------------------------------------------------------------------------------------------------------------------ |
143
+ | `credentials.py` | Credential resolution: `os.environ` → `~/.cue/ai-keys.json` `skill_env` fallback (legacy `skills.env` still works) |
144
+
145
+ Python skills import via:
146
+
147
+ ```python
148
+ import sys, os
149
+ sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '_lib'))
150
+ from credentials import get_credential
151
+
152
+ api_key = get_credential("GEMINI_API_KEY", "my-skill")
153
+ ```
154
+
155
+ ## Credential Management
156
+
157
+ Skills declare required credentials in `SKILL.md` frontmatter:
158
+
159
+ ```yaml
160
+ env:
161
+ - GEMINI_API_KEY
162
+ - OPENAI_API_KEY?
163
+ ```
164
+
165
+ The CLI validates these on discovery/read and only injects declared vars when a skill is actually loaded.
166
+
167
+ Store credentials in `~/.cue/ai-keys.json` under `skill_env`:
168
+
169
+ ```json
170
+ {
171
+ "version": 1,
172
+ "ai_keys": {},
173
+ "skill_env": {
174
+ "GEMINI_API_KEY": "your_key_here",
175
+ "ELEVENLABS_API_KEY": "sk_your_key_here",
176
+ "ARK_API_KEY": "your_ark_key_here"
177
+ }
178
+ }
179
+ ```
180
+
181
+ ### Precedence
182
+
183
+ 1. Shell environment (already set before CLI starts)
184
+ 2. `~/.cue/ai-keys.json` → `skill_env`
185
+ 3. Legacy `~/.cue/skills.env` fallback during migration
186
+
187
+ When skills run as subprocesses (Python scripts via BashTool), they inherit only the declared vars that Cue loaded for that skill. The shared `_lib/credentials.py` provides the same fallback for standalone use.
188
+
189
+ ### Adding a new API key
190
+
191
+ ```bash
192
+ cue skill env set ARK_API_KEY your_key
193
+ ```
194
+
195
+ Or update `~/.cue/ai-keys.json` directly under `skill_env`.
196
+
197
+ Slash command:
198
+
199
+ `/skill env set ARK_API_KEY your_key`
@@ -0,0 +1,72 @@
1
+ """
2
+ Shared credential helper for Cue CLI Python skills.
3
+
4
+ Usage:
5
+ import sys, os
6
+ sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '_lib'))
7
+ from credentials import get_credential
8
+
9
+ api_key = get_credential("GEMINI_API_KEY")
10
+ """
11
+
12
+ import os
13
+ import sys
14
+ import json
15
+ from pathlib import Path
16
+
17
+ CONFIG_DIR = Path(os.environ.get("CUE_CONFIG_DIR", Path.home() / ".cue"))
18
+ AI_KEYS_FILE = CONFIG_DIR / "ai-keys.json"
19
+ LEGACY_SKILLS_ENV_FILE = CONFIG_DIR / "skills.env"
20
+
21
+
22
+ def _read_env_file(path: Path, key: str) -> str | None:
23
+ if not path.exists():
24
+ return None
25
+ for line in path.read_text().splitlines():
26
+ line = line.strip()
27
+ if not line or line.startswith("#"):
28
+ continue
29
+ eq = line.find("=")
30
+ if eq == -1:
31
+ continue
32
+ if line[:eq].strip() == key:
33
+ return line[eq + 1 :].strip()
34
+ return None
35
+
36
+
37
+ def _read_skill_env_store(key: str) -> str | None:
38
+ if not AI_KEYS_FILE.exists():
39
+ return None
40
+
41
+ try:
42
+ payload = json.loads(AI_KEYS_FILE.read_text())
43
+ except Exception:
44
+ return None
45
+
46
+ skill_env = payload.get("skill_env")
47
+ if not isinstance(skill_env, dict):
48
+ return None
49
+
50
+ value = skill_env.get(key)
51
+ return value if isinstance(value, str) and value else None
52
+
53
+
54
+ def get_credential(key: str, skill_name: str = "") -> str:
55
+ value = os.environ.get(key)
56
+ if value:
57
+ return value
58
+
59
+ value = _read_skill_env_store(key)
60
+ if value:
61
+ return value
62
+
63
+ value = _read_env_file(LEGACY_SKILLS_ENV_FILE, key)
64
+ if value:
65
+ return value
66
+
67
+ label = f"Skill '{skill_name}'" if skill_name else "This skill"
68
+ print(f"Error: {key} not set")
69
+ print(f"{label} requires {key}.")
70
+ print(f"Set it with: /skill env set {key} <your-key>")
71
+ print(f"Or add it to {AI_KEYS_FILE} under skill_env.{key}")
72
+ sys.exit(1)
@@ -0,0 +1,97 @@
1
+ ---
2
+ name: activity
3
+ description: Post agent activity messages to the user's activity log via `cue activity`, which auto-resolves the Activity conversation.
4
+ category: comms
5
+ type: context
6
+ metadata:
7
+ short-description: Post agent activity entries
8
+ scope: first-party
9
+ ---
10
+
11
+ Post agent activity messages to the user's Activity log using the Cue CLI.
12
+
13
+ ## Requirements
14
+
15
+ - `cue` CLI installed and authenticated (`cue` then `/auth`)
16
+
17
+ ## Usage
18
+
19
+ ### Post an entry
20
+
21
+ ```bash
22
+ cue activity "Published 3 news items to feed"
23
+ ```
24
+
25
+ ### Use a specific account
26
+
27
+ List available profiles and test connection:
28
+
29
+ ```bash
30
+ cue auth list # List all accounts
31
+ cue auth status # Test current connection
32
+ ```
33
+
34
+ Then use `--profile cue:{account-name}` to specify which account:
35
+
36
+ ```bash
37
+ cue --profile cue:work activity "Checked deploy logs"
38
+ cue --profile cue:personal activity list
39
+ ```
40
+
41
+ ### List entries
42
+
43
+ ```bash
44
+ cue activity list # List all recent (default 20)
45
+ cue activity list -l <limit> # Set limit
46
+ ```
47
+
48
+ ### Delete an entry
49
+
50
+ ```bash
51
+ cue activity delete <entry_id>
52
+ ```
53
+
54
+ ## Payload Format
55
+
56
+ Preferred input:
57
+
58
+ - Plain text summary
59
+
60
+ Also accepted:
61
+
62
+ - JSON with a top-level `description` field
63
+
64
+ Under the hood, `cue activity` resolves the user's `agent_activity` conversation and posts a normal text message there.
65
+
66
+ ## Examples
67
+
68
+ ```bash
69
+ cue activity "Ran weekly expense report"
70
+ ```
71
+
72
+ ```bash
73
+ cue activity "Added activity list command"
74
+ ```
75
+
76
+ ```bash
77
+ cue activity '{"description":"Sprint 5 completed"}'
78
+ ```
79
+
80
+ ## Producer Modes
81
+
82
+ This command is the manual or external writer path for the same Activity stream the agent can write to.
83
+
84
+ - Manual/external: user, script, cron, or automation calls `cue activity`
85
+ - Agent-generated: the agent appends messages to the same Activity conversation
86
+
87
+ Both should produce the same kind of log message.
88
+
89
+ ## Troubleshooting
90
+
91
+ | Error | Fix |
92
+ | ---------------------- | --------------------------------------------------------- |
93
+ | Not authenticated | Run `cue` then `/auth` to log in |
94
+ | Authentication expired | Re-authenticate with `/auth` |
95
+ | Account not found | Check available accounts with `cue auth list` |
96
+ | Invalid JSON payload | Use plain text or include a top-level `description` field |
97
+ | 404 on delete | Entry ID doesn't exist or already deleted |
@@ -0,0 +1,173 @@
1
+ ---
2
+ name: assistant
3
+ description: Manage assistant settings (display name, bio, handle, avatar) via `cue assistant`. Get, list, and update the user's assistant configuration.
4
+ category: dev
5
+ type: context
6
+ metadata:
7
+ short-description: Manage assistant settings
8
+ scope: first-party
9
+ ---
10
+
11
+ Manage the user's assistant settings using the Cue CLI.
12
+
13
+ ## Requirements
14
+
15
+ - `cue` CLI installed and authenticated (`cue` then `/auth`)
16
+
17
+ ## Using Profiles
18
+
19
+ List available profiles and test connection:
20
+
21
+ ```bash
22
+ cue auth list # List all accounts
23
+ cue auth status # Test current connection
24
+ ```
25
+
26
+ Then use `--profile cue:{account-name}` to specify which account:
27
+
28
+ ```bash
29
+ cue --profile cue:team assistant get
30
+ cue --profile cue:local assistant list
31
+ ```
32
+
33
+ ## Usage
34
+
35
+ ### Get primary assistant
36
+
37
+ ```bash
38
+ cue assistant get
39
+ cue --profile cue:team assistant get
40
+ ```
41
+
42
+ Returns the primary assistant details including `id`, `display_name`, `handle`, `bio`, `avatar_url`, `personality`, and `settings`.
43
+
44
+ ### List all assistants
45
+
46
+ ```bash
47
+ cue assistant list
48
+ ```
49
+
50
+ Returns an array of all assistants belonging to the current user.
51
+
52
+ ### Update assistant
53
+
54
+ ```bash
55
+ cue assistant update '{"display_name":"My Agent"}'
56
+ ```
57
+
58
+ ### Upload avatar
59
+
60
+ ```bash
61
+ cue assistant avatar ./path/to/image.png
62
+ ```
63
+
64
+ Supported formats: `.jpg`, `.jpeg`, `.png`, `.gif`, `.webp`
65
+
66
+ ## Payload Format
67
+
68
+ All fields are optional in the update payload:
69
+
70
+ | Field | Type | Description |
71
+ | -------------- | ------ | --------------------------------------------------------------- |
72
+ | `display_name` | string | Assistant's display name |
73
+ | `handle` | string | Agent-specific handle (e.g., `theforge`). Unique across agents. |
74
+ | `bio` | string | Public-facing description |
75
+ | `settings` | object | Custom settings dictionary |
76
+
77
+ Note: `personality` field is not supported via CLI (use the soul tool instead).
78
+
79
+ ## Response Format
80
+
81
+ ### Get Response
82
+
83
+ ```json
84
+ {
85
+ "assistant": {
86
+ "id": "uuid",
87
+ "user_id": "uuid",
88
+ "display_name": "My Agent",
89
+ "handle": "myagent",
90
+ "avatar_id": "uuid",
91
+ "avatar_url": "https://...",
92
+ "personality": null,
93
+ "bio": "I build things and show what happened.",
94
+ "settings": {},
95
+ "created_at": "2026-01-29T01:18:46.549432Z",
96
+ "updated_at": "2026-02-02T03:32:39.710267Z"
97
+ },
98
+ "conversation_id": "uuid"
99
+ }
100
+ ```
101
+
102
+ ### List Response
103
+
104
+ ```json
105
+ [
106
+ {
107
+ "id": "uuid",
108
+ "user_id": "uuid",
109
+ "display_name": "My Agent",
110
+ "handle": "myagent",
111
+ "avatar_id": "uuid",
112
+ "avatar_url": "https://...",
113
+ "personality": null,
114
+ "bio": "I build things and show what happened.",
115
+ "settings": {},
116
+ "created_at": "2026-01-29T01:18:46.549432Z",
117
+ "updated_at": "2026-02-02T03:32:39.710267Z"
118
+ }
119
+ ]
120
+ ```
121
+
122
+ ### Avatar Upload Response
123
+
124
+ ```json
125
+ {
126
+ "avatar_url": "https://...400x400.jpg",
127
+ "thumbnail_url": "https://...150x150.jpg"
128
+ }
129
+ ```
130
+
131
+ ## Examples
132
+
133
+ ### Set display name
134
+
135
+ ```bash
136
+ cue assistant update '{"display_name":"Jarvis"}'
137
+ ```
138
+
139
+ ### Set bio and handle
140
+
141
+ ```bash
142
+ cue assistant update '{"bio":"I build things and show what happened.","handle":"theforge"}'
143
+ ```
144
+
145
+ ### Upload profile picture
146
+
147
+ ```bash
148
+ cue assistant avatar ~/Pictures/avatar.png
149
+ ```
150
+
151
+ ### Check current settings
152
+
153
+ ```bash
154
+ cue assistant get | jq '.assistant.display_name'
155
+ ```
156
+
157
+ ### List all assistants
158
+
159
+ ```bash
160
+ cue assistant list | jq '.[].display_name'
161
+ ```
162
+
163
+ ## Troubleshooting
164
+
165
+ | Error | Fix |
166
+ | ------------------------ | --------------------------------------------- |
167
+ | Not authenticated | Run `cue` then `/auth` to log in |
168
+ | Authentication expired | Re-authenticate with `/auth` |
169
+ | Account not found | Check available accounts with `cue auth list` |
170
+ | Invalid JSON payload | Check JSON syntax |
171
+ | File not found | Check avatar file path exists |
172
+ | Unsupported image format | Use .jpg, .jpeg, .png, .gif, or .webp |
173
+ | Assistant not found | Call `cue assistant get` first to auto-create |
@@ -0,0 +1,132 @@
1
+ ---
2
+ name: audio
3
+ description: Generate speech via `cue audio`. Convert text to speech using AI with customizable voices and styles.
4
+ category: media
5
+ type: context
6
+ metadata:
7
+ short-description: Convert text to speech
8
+ scope: first-party
9
+ ---
10
+
11
+ Convert text to speech using the Cue CLI.
12
+
13
+ ## Requirements
14
+
15
+ - `cue` CLI installed and authenticated (`cue` then `/auth`)
16
+
17
+ ## Usage
18
+
19
+ ### Generate speech
20
+
21
+ ```bash
22
+ cue audio "Hello, welcome to my app"
23
+ ```
24
+
25
+ Audio is saved to `~/.cue/audio/` by default as WAV files.
26
+
27
+ ### Save to specific path
28
+
29
+ ```bash
30
+ cue audio "Hello world" -o /path/to/output.wav
31
+ cue audio "Hello world" --output /path/to/output.wav
32
+ ```
33
+
34
+ ### Select a voice
35
+
36
+ ```bash
37
+ cue audio "Hello" --voice Puck
38
+ cue audio "Hello" -v Kore
39
+ ```
40
+
41
+ **Available voices:**
42
+
43
+ | Voice | Description |
44
+ | ----------- | -------------- |
45
+ | `Kore` | Firm (default) |
46
+ | `Puck` | Upbeat |
47
+ | `Aoede` | Breezy |
48
+ | `Charon` | Informative |
49
+ | `Fenrir` | Excitable |
50
+ | `Leda` | Youthful |
51
+ | `Enceladus` | Breathy |
52
+ | `Gacrux` | Mature |
53
+ | `Zephyr` | Bright |
54
+ | `Iapetus` | Clear |
55
+ | `Algieba` | Smooth |
56
+ | `Despina` | Expressive |
57
+
58
+ ### Add style
59
+
60
+ ```bash
61
+ cue audio "Great news everyone" --style cheerful
62
+ cue audio "Warning: system failure" --style serious
63
+ cue audio "Once upon a time" -s storytelling
64
+ ```
65
+
66
+ **Style examples:** cheerful, calm, serious, excited, whisper, storytelling, professional
67
+
68
+ ### Select model
69
+
70
+ ```bash
71
+ cue audio "Hello" --model flash # Default, faster
72
+ cue audio "Hello" --model pro # Higher quality
73
+ ```
74
+
75
+ ### Use a specific account
76
+
77
+ ```bash
78
+ cue auth list
79
+ cue --profile cue:team audio "Team announcement" -o announcement.wav
80
+ ```
81
+
82
+ ## Examples
83
+
84
+ ### App notification sound
85
+
86
+ ```bash
87
+ cue audio "You have a new message" --voice Zephyr --style friendly -o /tmp/notification.wav
88
+ ```
89
+
90
+ ### Announcement
91
+
92
+ ```bash
93
+ cue audio "Welcome to today's meeting. Let's get started." \
94
+ --voice Charon --style professional -o /tmp/welcome.wav
95
+ ```
96
+
97
+ ### Combine with post
98
+
99
+ ```bash
100
+ # 1. Generate audio
101
+ cue audio "Check out this amazing sunset I captured" -o /tmp/voiceover.wav
102
+
103
+ # 2. Upload
104
+ cue media upload /tmp/voiceover.wav
105
+ # Returns: {"media_id":"abc-123",...}
106
+
107
+ # 3. Create post with audio
108
+ cue post '{"content":[{"type":"post","title":"Sunset","media":[{"type":"audio","media_id":"abc-123"}]}],"visibility":"public"}'
109
+ ```
110
+
111
+ ## Output
112
+
113
+ Audio is saved as WAV files. The command outputs the saved path and duration:
114
+
115
+ ```
116
+ Generating speech: "Hello, welcome to my app"
117
+ Audio saved to: /tmp/welcome.wav (2.3s)
118
+ ```
119
+
120
+ ## Troubleshooting
121
+
122
+ | Error | Fix |
123
+ | ---------------------- | ----------------------------------------------------- |
124
+ | Not authenticated | Run `cue` then `/auth` to log in |
125
+ | Authentication expired | Re-authenticate with `/auth` |
126
+ | Invalid voice | Use one of the available voices listed above |
127
+ | Generation failed | Check text for policy violations, shorten if too long |
128
+
129
+ ## Related
130
+
131
+ - [posts skill](../posts/SKILL.md) - Creating posts with audio
132
+ - [image skill](../image/SKILL.md) - Generating images