@elizaos/skills 2.0.0-alpha.537 → 2.0.0-alpha.538

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 (69) hide show
  1. package/package.json +11 -24
  2. package/README.md +0 -130
  3. package/skills/1password/SKILL.md +0 -70
  4. package/skills/1password/references/cli-examples.md +0 -29
  5. package/skills/1password/references/get-started.md +0 -17
  6. package/skills/apple-notes/SKILL.md +0 -77
  7. package/skills/apple-reminders/SKILL.md +0 -96
  8. package/skills/blucli/SKILL.md +0 -47
  9. package/skills/bluebubbles/SKILL.md +0 -131
  10. package/skills/build-monetized-app/SKILL.md +0 -67
  11. package/skills/build-monetized-app/references/failure-modes.md +0 -69
  12. package/skills/build-monetized-app/references/sdk-flow.md +0 -159
  13. package/skills/build-monetized-app/references/survival-economics.md +0 -64
  14. package/skills/camsnap/SKILL.md +0 -45
  15. package/skills/canvas/SKILL.md +0 -203
  16. package/skills/claude-subagent-eliza-bridge/SKILL.md +0 -34
  17. package/skills/coding-agent/SKILL.md +0 -284
  18. package/skills/discord/SKILL.md +0 -578
  19. package/skills/eliza-app-development/SKILL.md +0 -62
  20. package/skills/eliza-app-development/references/repo-map.md +0 -70
  21. package/skills/eliza-app-development/references/runtime-and-cloud.md +0 -61
  22. package/skills/eliza-cloud/SKILL.md +0 -39
  23. package/skills/eliza-cloud/references/apps-and-containers.md +0 -73
  24. package/skills/eliza-cloud/references/cloud-backend-and-monetization.md +0 -99
  25. package/skills/elizaos/SKILL.md +0 -27
  26. package/skills/elizaos/references/core-abstractions.md +0 -101
  27. package/skills/elizaos/references/plugin-development.md +0 -74
  28. package/skills/github/SKILL.md +0 -77
  29. package/skills/healthcheck/SKILL.md +0 -245
  30. package/skills/imsg/SKILL.md +0 -74
  31. package/skills/nano-banana-pro/SKILL.md +0 -58
  32. package/skills/nano-banana-pro/scripts/generate_image.py +0 -184
  33. package/skills/nano-pdf/SKILL.md +0 -38
  34. package/skills/notion/SKILL.md +0 -172
  35. package/skills/obsidian/SKILL.md +0 -81
  36. package/skills/ordercli/SKILL.md +0 -78
  37. package/skills/skill-creator/SKILL.md +0 -370
  38. package/skills/skill-creator/license.txt +0 -202
  39. package/skills/skill-creator/scripts/init_skill.py +0 -378
  40. package/skills/skill-creator/scripts/package_skill.py +0 -111
  41. package/skills/skill-creator/scripts/quick_validate.py +0 -101
  42. package/skills/slack/SKILL.md +0 -144
  43. package/skills/spotify-player/SKILL.md +0 -64
  44. package/skills/things-mac/SKILL.md +0 -86
  45. package/skills/tmux/SKILL.md +0 -135
  46. package/skills/tmux/scripts/find-sessions.sh +0 -112
  47. package/skills/tmux/scripts/wait-for-text.sh +0 -83
  48. package/skills/trello/SKILL.md +0 -95
  49. package/skills/wacli/SKILL.md +0 -72
  50. package/skills/weather/SKILL.md +0 -54
  51. package/skills/yara-authoring/SKILL.md +0 -111
  52. /package/{dist/formatter.d.ts → formatter.d.ts} +0 -0
  53. /package/{dist/formatter.d.ts.map → formatter.d.ts.map} +0 -0
  54. /package/{dist/formatter.js → formatter.js} +0 -0
  55. /package/{dist/frontmatter.d.ts → frontmatter.d.ts} +0 -0
  56. /package/{dist/frontmatter.d.ts.map → frontmatter.d.ts.map} +0 -0
  57. /package/{dist/frontmatter.js → frontmatter.js} +0 -0
  58. /package/{dist/index.d.ts → index.d.ts} +0 -0
  59. /package/{dist/index.d.ts.map → index.d.ts.map} +0 -0
  60. /package/{dist/index.js → index.js} +0 -0
  61. /package/{dist/loader.d.ts → loader.d.ts} +0 -0
  62. /package/{dist/loader.d.ts.map → loader.d.ts.map} +0 -0
  63. /package/{dist/loader.js → loader.js} +0 -0
  64. /package/{dist/resolver.d.ts → resolver.d.ts} +0 -0
  65. /package/{dist/resolver.d.ts.map → resolver.d.ts.map} +0 -0
  66. /package/{dist/resolver.js → resolver.js} +0 -0
  67. /package/{dist/types.d.ts → types.d.ts} +0 -0
  68. /package/{dist/types.d.ts.map → types.d.ts.map} +0 -0
  69. /package/{dist/types.js → types.js} +0 -0
package/package.json CHANGED
@@ -1,32 +1,22 @@
1
1
  {
2
2
  "name": "@elizaos/skills",
3
- "version": "2.0.0-alpha.537",
3
+ "version": "2.0.0-alpha.538",
4
4
  "description": "Bundled skills and skill loading utilities for elizaOS agents",
5
5
  "type": "module",
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
6
+ "main": "./index.js",
7
+ "types": "./index.d.ts",
8
8
  "exports": {
9
9
  ".": {
10
- "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js"
10
+ "types": "./index.d.ts",
11
+ "import": "./index.js"
12
+ },
13
+ "./skills": {
14
+ "types": "./skills/.d.ts",
15
+ "import": "./skills/.js",
16
+ "default": "./skills/.js"
12
17
  },
13
- "./skills": "./skills/",
14
18
  "./package.json": "./package.json"
15
19
  },
16
- "scripts": {
17
- "clean": "rm -rf dist",
18
- "build": "tsc -p tsconfig.build.json",
19
- "dev": "tsgo -p tsconfig.build.json --watch --preserveWatchOutput",
20
- "test": "bun test ./test",
21
- "prepublishOnly": "bun run clean && bun run build",
22
- "lint": "bunx @biomejs/biome check --write ./src",
23
- "lint:check": "bunx @biomejs/biome check ./src"
24
- },
25
- "files": [
26
- "dist/**/*",
27
- "skills/**/*",
28
- "README.md"
29
- ],
30
20
  "keywords": [
31
21
  "elizaos",
32
22
  "skills",
@@ -46,12 +36,9 @@
46
36
  "node": ">=24.0.0"
47
37
  },
48
38
  "dependencies": {
49
- "@elizaos/core": "workspace:*",
39
+ "@elizaos/core": "^2.0.0-alpha.537",
50
40
  "yaml": "^2.8.2"
51
41
  },
52
- "devDependencies": {
53
- "tsx": "^4.19.2"
54
- },
55
42
  "publishConfig": {
56
43
  "access": "public"
57
44
  },
package/README.md DELETED
@@ -1,130 +0,0 @@
1
- # @elizaos/skills
2
-
3
- Bundled skills and skill loading utilities for elizaOS agents.
4
-
5
- ## Overview
6
-
7
- Skills are markdown files that provide specialized instructions for AI agents to perform specific tasks. Each skill contains:
8
-
9
- - **Frontmatter**: YAML metadata including name, description, and configuration
10
- - **Body**: Detailed instructions, examples, and references
11
-
12
- ## Installation
13
-
14
- ```bash
15
- npm install @elizaos/skills
16
- # or
17
- pnpm add @elizaos/skills
18
- ```
19
-
20
- ## Usage
21
-
22
- ### Get Bundled Skills Path
23
-
24
- ```typescript
25
- import { getSkillsDir } from "@elizaos/skills";
26
-
27
- const skillsPath = getSkillsDir();
28
- // Returns absolute path to bundled skills directory
29
- ```
30
-
31
- ### Load Skills
32
-
33
- ```typescript
34
- import { loadSkills, loadSkillsFromDir } from "@elizaos/skills";
35
-
36
- // Load from all default locations (bundled + managed + project)
37
- const { skills, diagnostics } = loadSkills();
38
-
39
- // Load from a specific directory
40
- const result = loadSkillsFromDir({
41
- dir: "/path/to/skills",
42
- source: "custom",
43
- });
44
- ```
45
-
46
- ### Format for LLM Prompt
47
-
48
- ```typescript
49
- import { formatSkillsForPrompt } from "@elizaos/skills";
50
-
51
- const prompt = formatSkillsForPrompt(skills);
52
- // Returns XML-formatted skills section for system prompt
53
- ```
54
-
55
- ### Build Command Specs
56
-
57
- ```typescript
58
- import { loadSkillEntries, buildSkillCommandSpecs } from "@elizaos/skills";
59
-
60
- const entries = loadSkillEntries();
61
- const commands = buildSkillCommandSpecs(entries);
62
- // Returns array of command specs for chat interfaces
63
- ```
64
-
65
- ## Bundled documentation skills
66
-
67
- Alongside community-oriented skills, this package ships **`elizaos`**, **`eliza-cloud`**, and **`eliza-app-development`** — concise references for elizaOS runtime concepts, Eliza Cloud as a backend, and building elizaOS-based applications (including the Eliza app repository layout).
68
-
69
- ## Skill Discovery
70
-
71
- Skills are loaded from multiple locations in precedence order (later overrides earlier):
72
-
73
- 1. **Bundled skills** - Included in this package (`skills/`)
74
- 2. **Managed skills** - User-installed skills (`~/.elizaos/skills/`)
75
- 3. **Project skills** - Project-local skills (`<cwd>/.elizaos/skills/`)
76
- 4. **Explicit paths** - Via `skillPaths` option
77
-
78
- ## Skill Format
79
-
80
- Skills are markdown files with YAML frontmatter:
81
-
82
- ```markdown
83
- ---
84
- name: my-skill
85
- description: A brief description of what this skill does
86
- primary-env: node
87
- required-bins:
88
- - node
89
- - npm
90
- ---
91
-
92
- # My Skill
93
-
94
- Detailed instructions for the AI agent...
95
- ```
96
-
97
- ### Frontmatter Fields
98
-
99
- | Field | Type | Description |
100
- |-------|------|-------------|
101
- | `name` | string | Skill name (should match directory name) |
102
- | `description` | string | Human-readable description (required) |
103
- | `disable-model-invocation` | boolean | If true, skill won't appear in prompts |
104
- | `user-invocable` | boolean | If false, can't be invoked via commands |
105
- | `primary-env` | string | Primary runtime (node, python, etc.) |
106
- | `required-os` | string[] | Required operating systems |
107
- | `required-bins` | string[] | Required binaries in PATH |
108
- | `required-env` | string[] | Required environment variables |
109
-
110
- ## API Reference
111
-
112
- ### Types
113
-
114
- - `Skill` - Loaded skill with metadata
115
- - `SkillFrontmatter` - Parsed frontmatter
116
- - `SkillEntry` - Full skill entry with all metadata
117
- - `LoadSkillsResult` - Result from loading skills
118
-
119
- ### Functions
120
-
121
- - `getSkillsDir()` - Get bundled skills path
122
- - `loadSkills(options?)` - Load from all locations
123
- - `loadSkillsFromDir(options)` - Load from single directory
124
- - `loadSkillEntries(options?)` - Load with full metadata
125
- - `formatSkillsForPrompt(skills)` - Format for LLM prompt
126
- - `buildSkillCommandSpecs(entries)` - Build command specs
127
-
128
- ## License
129
-
130
- MIT
@@ -1,70 +0,0 @@
1
- ---
2
- name: 1password
3
- description: Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.
4
- homepage: https://developer.1password.com/docs/cli/get-started/
5
- metadata:
6
- {
7
- "otto":
8
- {
9
- "emoji": "🔐",
10
- "requires": { "bins": ["op"] },
11
- "install":
12
- [
13
- {
14
- "id": "brew",
15
- "kind": "brew",
16
- "formula": "1password-cli",
17
- "bins": ["op"],
18
- "label": "Install 1Password CLI (brew)",
19
- },
20
- ],
21
- },
22
- }
23
- ---
24
-
25
- # 1Password CLI
26
-
27
- Follow the official CLI get-started steps. Don't guess install commands.
28
-
29
- ## References
30
-
31
- - `references/get-started.md` (install + app integration + sign-in flow)
32
- - `references/cli-examples.md` (real `op` examples)
33
-
34
- ## Workflow
35
-
36
- 1. Check OS + shell.
37
- 2. Verify CLI present: `op --version`.
38
- 3. Confirm desktop app integration is enabled (per get-started) and the app is unlocked.
39
- 4. REQUIRED: create a fresh tmux session for all `op` commands (no direct `op` calls outside tmux).
40
- 5. Sign in / authorize inside tmux: `op signin` (expect app prompt).
41
- 6. Verify access inside tmux: `op whoami` (must succeed before any secret read).
42
- 7. If multiple accounts: use `--account` or `OP_ACCOUNT`.
43
-
44
- ## REQUIRED tmux session (T-Max)
45
-
46
- The shell tool uses a fresh TTY per command. To avoid re-prompts and failures, always run `op` inside a dedicated tmux session with a fresh socket/session name.
47
-
48
- Example (see `tmux` skill for socket conventions, do not reuse old session names):
49
-
50
- ```bash
51
- SOCKET_DIR="${OTTO_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/otto-tmux-sockets}"
52
- mkdir -p "$SOCKET_DIR"
53
- SOCKET="$SOCKET_DIR/otto-op.sock"
54
- SESSION="op-auth-$(date +%Y%m%d-%H%M%S)"
55
-
56
- tmux -S "$SOCKET" new -d -s "$SESSION" -n shell
57
- tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- "op signin --account my.1password.com" Enter
58
- tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- "op whoami" Enter
59
- tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- "op vault list" Enter
60
- tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200
61
- tmux -S "$SOCKET" kill-session -t "$SESSION"
62
- ```
63
-
64
- ## Guardrails
65
-
66
- - Never paste secrets into logs, chat, or code.
67
- - Prefer `op run` / `op inject` over writing secrets to disk.
68
- - If sign-in without app integration is needed, use `op account add`.
69
- - If a command returns "account is not signed in", re-run `op signin` inside tmux and authorize in the app.
70
- - Do not run `op` outside tmux; stop and ask if tmux is unavailable.
@@ -1,29 +0,0 @@
1
- # op CLI examples (from op help)
2
-
3
- ## Sign in
4
-
5
- - `op signin`
6
- - `op signin --account <shorthand|signin-address|account-id|user-id>`
7
-
8
- ## Read
9
-
10
- - `op read op://app-prod/db/password`
11
- - `op read "op://app-prod/db/one-time password?attribute=otp"`
12
- - `op read "op://app-prod/ssh key/private key?ssh-format=openssh"`
13
- - `op read --out-file ./key.pem op://app-prod/server/ssh/key.pem`
14
-
15
- ## Run
16
-
17
- - `export DB_PASSWORD="op://app-prod/db/password"`
18
- - `op run --no-masking -- printenv DB_PASSWORD`
19
- - `op run --env-file="./.env" -- printenv DB_PASSWORD`
20
-
21
- ## Inject
22
-
23
- - `echo "db_password: {{ op://app-prod/db/password }}" | op inject`
24
- - `op inject -i config.yml.tpl -o config.yml`
25
-
26
- ## Whoami / accounts
27
-
28
- - `op whoami`
29
- - `op account list`
@@ -1,17 +0,0 @@
1
- # 1Password CLI get-started (summary)
2
-
3
- - Works on macOS, Windows, and Linux.
4
- - macOS/Linux shells: bash, zsh, sh, fish.
5
- - Windows shell: PowerShell.
6
- - Requires a 1Password subscription and the desktop app to use app integration.
7
- - macOS requirement: Big Sur 11.0.0 or later.
8
- - Linux app integration requires PolKit + an auth agent.
9
- - Install the CLI per the official doc for your OS.
10
- - Enable desktop app integration in the 1Password app:
11
- - Open and unlock the app, then select your account/collection.
12
- - macOS: Settings > Developer > Integrate with 1Password CLI (Touch ID optional).
13
- - Windows: turn on Windows Hello, then Settings > Developer > Integrate.
14
- - Linux: Settings > Security > Unlock using system authentication, then Settings > Developer > Integrate.
15
- - After integration, run any command to sign in (example in docs: `op vault list`).
16
- - If multiple accounts: use `op signin` to pick one, or `--account` / `OP_ACCOUNT`.
17
- - For non-integration auth, use `op account add`.
@@ -1,77 +0,0 @@
1
- ---
2
- name: apple-notes
3
- description: Manage Apple Notes via the `memo` CLI on macOS (create, view, edit, delete, search, move, and export notes). Use when a user asks Otto to add a note, list notes, search notes, or manage note folders.
4
- homepage: https://github.com/antoniorodr/memo
5
- metadata:
6
- {
7
- "otto":
8
- {
9
- "emoji": "📝",
10
- "os": ["darwin"],
11
- "requires": { "bins": ["memo"] },
12
- "install":
13
- [
14
- {
15
- "id": "brew",
16
- "kind": "brew",
17
- "formula": "antoniorodr/memo/memo",
18
- "bins": ["memo"],
19
- "label": "Install memo via Homebrew",
20
- },
21
- ],
22
- },
23
- }
24
- ---
25
-
26
- # Apple Notes CLI
27
-
28
- Use `memo notes` to manage Apple Notes directly from the terminal. Create, view, edit, delete, search, move notes between folders, and export to HTML/Markdown.
29
-
30
- Setup
31
-
32
- - Install (Homebrew): `brew tap antoniorodr/memo && brew install antoniorodr/memo/memo`
33
- - Manual (pip): `pip install .` (after cloning the repo)
34
- - macOS-only; if prompted, grant Automation access to Notes.app.
35
-
36
- View Notes
37
-
38
- - List all notes: `memo notes`
39
- - Filter by folder: `memo notes -f "Folder Name"`
40
- - Search notes (fuzzy): `memo notes -s "query"`
41
-
42
- Create Notes
43
-
44
- - Add a new note: `memo notes -a`
45
- - Opens an interactive editor to compose the note.
46
- - Quick add with title: `memo notes -a "Note Title"`
47
-
48
- Edit Notes
49
-
50
- - Edit existing note: `memo notes -e`
51
- - Interactive selection of note to edit.
52
-
53
- Delete Notes
54
-
55
- - Delete a note: `memo notes -d`
56
- - Interactive selection of note to delete.
57
-
58
- Move Notes
59
-
60
- - Move note to folder: `memo notes -m`
61
- - Interactive selection of note and destination folder.
62
-
63
- Export Notes
64
-
65
- - Export to HTML/Markdown: `memo notes -ex`
66
- - Exports selected note; uses Mistune for markdown processing.
67
-
68
- Limitations
69
-
70
- - Cannot edit notes containing images or attachments.
71
- - Interactive prompts may require terminal access.
72
-
73
- Notes
74
-
75
- - macOS-only.
76
- - Requires Apple Notes.app to be accessible.
77
- - For automation, grant permissions in System Settings > Privacy & Security > Automation.
@@ -1,96 +0,0 @@
1
- ---
2
- name: apple-reminders
3
- description: Manage Apple Reminders via the `remindctl` CLI on macOS (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output. Use when the user asks about reminders, todos, tasks, to-do lists, "remind me", scheduling tasks, checking what is due today, completing or deleting reminders, or managing reminder lists on macOS.
4
- homepage: https://github.com/steipete/remindctl
5
- metadata:
6
- {
7
- "otto":
8
- {
9
- "emoji": "⏰",
10
- "os": ["darwin"],
11
- "requires": { "bins": ["remindctl"] },
12
- "install":
13
- [
14
- {
15
- "id": "brew",
16
- "kind": "brew",
17
- "formula": "steipete/tap/remindctl",
18
- "bins": ["remindctl"],
19
- "label": "Install remindctl via Homebrew",
20
- },
21
- ],
22
- },
23
- }
24
- ---
25
-
26
- # Apple Reminders CLI (remindctl)
27
-
28
- Use `remindctl` to manage Apple Reminders directly from the terminal. It supports list filtering, date-based views, and scripting output.
29
-
30
- Setup
31
-
32
- - Install (Homebrew): `brew install steipete/tap/remindctl`
33
- - From source: `pnpm install && pnpm build` (binary at `./bin/remindctl`)
34
- - macOS-only; grant Reminders permission when prompted.
35
-
36
- Permissions
37
-
38
- - Check status: `remindctl status`
39
- - Request access: `remindctl authorize`
40
-
41
- View Reminders
42
-
43
- - Default (today): `remindctl`
44
- - Today: `remindctl today`
45
- - Tomorrow: `remindctl tomorrow`
46
- - Week: `remindctl week`
47
- - Overdue: `remindctl overdue`
48
- - Upcoming: `remindctl upcoming`
49
- - Completed: `remindctl completed`
50
- - All: `remindctl all`
51
- - Specific date: `remindctl 2026-01-04`
52
-
53
- Manage Lists
54
-
55
- - List all lists: `remindctl list`
56
- - Show list: `remindctl list Work`
57
- - Create list: `remindctl list Projects --create`
58
- - Rename list: `remindctl list Work --rename Office`
59
- - Delete list: `remindctl list Work --delete`
60
-
61
- Create Reminders
62
-
63
- - Quick add: `remindctl add "Buy milk"`
64
- - With list + due: `remindctl add --title "Call mom" --list Personal --due tomorrow`
65
-
66
- Edit Reminders
67
-
68
- - Edit title/due: `remindctl edit 1 --title "New title" --due 2026-01-04`
69
-
70
- Complete Reminders
71
-
72
- - Complete by id: `remindctl complete 1 2 3`
73
-
74
- Delete Reminders
75
-
76
- - Delete by id: `remindctl delete 4A83 --force`
77
-
78
- Output Formats
79
-
80
- - JSON (scripting): `remindctl today --json`
81
- - Plain TSV: `remindctl today --plain`
82
- - Counts only: `remindctl today --quiet`
83
-
84
- Date Formats
85
- Accepted by `--due` and date filters:
86
-
87
- - `today`, `tomorrow`, `yesterday`
88
- - `YYYY-MM-DD`
89
- - `YYYY-MM-DD HH:mm`
90
- - ISO 8601 (`2026-01-04T12:34:56Z`)
91
-
92
- Notes
93
-
94
- - macOS-only.
95
- - If access is denied, enable Terminal/remindctl in System Settings → Privacy & Security → Reminders.
96
- - If running over SSH, grant access on the Mac that runs the command.
@@ -1,47 +0,0 @@
1
- ---
2
- name: blucli
3
- description: BluOS CLI (blu) for discovery, playback, grouping, and volume control of Bluesound and NAD speakers. Use when the user wants to play music, stream audio, control speakers, adjust volume, group or ungroup Bluesound players, search TuneIn radio, or manage multi-room streaming setups.
4
- homepage: https://blucli.sh
5
- metadata:
6
- {
7
- "otto":
8
- {
9
- "emoji": "🫐",
10
- "requires": { "bins": ["blu"] },
11
- "install":
12
- [
13
- {
14
- "id": "go",
15
- "kind": "go",
16
- "module": "github.com/steipete/blucli/cmd/blu@latest",
17
- "bins": ["blu"],
18
- "label": "Install blucli (go)",
19
- },
20
- ],
21
- },
22
- }
23
- ---
24
-
25
- # blucli (blu)
26
-
27
- Use `blu` to control Bluesound/NAD players.
28
-
29
- Quick start
30
-
31
- - `blu devices` (pick target)
32
- - `blu --device <id> status`
33
- - `blu play|pause|stop`
34
- - `blu volume set 15`
35
-
36
- Target selection (in priority order)
37
-
38
- - `--device <id|name|alias>`
39
- - `BLU_DEVICE`
40
- - config default (if set)
41
-
42
- Common tasks
43
-
44
- - Grouping: `blu group status|add|remove`
45
- - TuneIn search/play: `blu tunein search "query"`, `blu tunein play "query"`
46
-
47
- Prefer `--json` for scripts. Confirm the target device before changing playback.
@@ -1,131 +0,0 @@
1
- ---
2
- name: bluebubbles
3
- description: Handles sending and managing iMessages through BlueBubbles, the recommended iMessage integration. Triggers when the user wants to send a text message, send an iMessage, send a text, text someone, message a contact, react with a tapback, reply to a message thread, send an attachment via iMessage, edit or unsend a sent message, or manage group chat participants. All calls go through the generic message tool with channel="bluebubbles".
4
- metadata: { "otto": { "emoji": "🫧", "requires": { "config": ["channels.bluebubbles"] } } }
5
- ---
6
-
7
- # BlueBubbles Actions
8
-
9
- ## Overview
10
-
11
- BlueBubbles is Otto’s recommended iMessage integration. Use the `message` tool with `channel: "bluebubbles"` to send messages and manage iMessage conversations: send texts and attachments, react (tapbacks), edit/unsend, reply in threads, and manage group participants/names/icons.
12
-
13
- ## Inputs to collect
14
-
15
- - `target` (prefer `chat_guid:...`; also `+15551234567` in E.164 or `user@example.com`)
16
- - `message` text for send/edit/reply
17
- - `messageId` for react/edit/unsend/reply
18
- - Attachment `path` for local files, or `buffer` + `filename` for base64
19
-
20
- If the user is vague ("text my mom"), ask for the recipient handle or chat guid and the exact message content.
21
-
22
- ## Actions
23
-
24
- ### Send a message
25
-
26
- ```json
27
- {
28
- "action": "send",
29
- "channel": "bluebubbles",
30
- "target": "+15551234567",
31
- "message": "hello from Otto"
32
- }
33
- ```
34
-
35
- ### React (tapback)
36
-
37
- ```json
38
- {
39
- "action": "react",
40
- "channel": "bluebubbles",
41
- "target": "+15551234567",
42
- "messageId": "<message-guid>",
43
- "emoji": "❤️"
44
- }
45
- ```
46
-
47
- ### Remove a reaction
48
-
49
- ```json
50
- {
51
- "action": "react",
52
- "channel": "bluebubbles",
53
- "target": "+15551234567",
54
- "messageId": "<message-guid>",
55
- "emoji": "❤️",
56
- "remove": true
57
- }
58
- ```
59
-
60
- ### Edit a previously sent message
61
-
62
- ```json
63
- {
64
- "action": "edit",
65
- "channel": "bluebubbles",
66
- "target": "+15551234567",
67
- "messageId": "<message-guid>",
68
- "message": "updated text"
69
- }
70
- ```
71
-
72
- ### Unsend a message
73
-
74
- ```json
75
- {
76
- "action": "unsend",
77
- "channel": "bluebubbles",
78
- "target": "+15551234567",
79
- "messageId": "<message-guid>"
80
- }
81
- ```
82
-
83
- ### Reply to a specific message
84
-
85
- ```json
86
- {
87
- "action": "reply",
88
- "channel": "bluebubbles",
89
- "target": "+15551234567",
90
- "replyTo": "<message-guid>",
91
- "message": "replying to that"
92
- }
93
- ```
94
-
95
- ### Send an attachment
96
-
97
- ```json
98
- {
99
- "action": "sendAttachment",
100
- "channel": "bluebubbles",
101
- "target": "+15551234567",
102
- "path": "/tmp/photo.jpg",
103
- "caption": "here you go"
104
- }
105
- ```
106
-
107
- ### Send with an iMessage effect
108
-
109
- ```json
110
- {
111
- "action": "sendWithEffect",
112
- "channel": "bluebubbles",
113
- "target": "+15551234567",
114
- "message": "big news",
115
- "effect": "balloons"
116
- }
117
- ```
118
-
119
- ## Notes
120
-
121
- - Requires gateway config `channels.bluebubbles` (serverUrl/password/webhookPath).
122
- - Prefer `chat_guid` targets when you have them (especially for group chats).
123
- - BlueBubbles supports rich actions, but some are macOS-version dependent (for example, edit may be broken on macOS 26 Tahoe).
124
- - The gateway may expose both short and full message ids; full ids are more durable across restarts.
125
- - Developer reference for the underlying plugin lives in `extensions/bluebubbles/README.md`.
126
-
127
- ## Ideas to try
128
-
129
- - React with a tapback to acknowledge a request.
130
- - Reply in-thread when a user references a specific message.
131
- - Send a file attachment with a short caption.