@poolzin/pool-bot 2026.2.21 → 2026.2.23
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.
- package/CHANGELOG.md +25 -0
- package/dist/agents/api-key-rotation.js +47 -0
- package/dist/agents/apply-patch-update.js +19 -9
- package/dist/agents/apply-patch.js +72 -47
- package/dist/agents/bash-tools.exec.js +141 -559
- package/dist/agents/cli-backends.js +49 -6
- package/dist/agents/cli-runner/helpers.js +69 -152
- package/dist/agents/cli-runner.js +70 -19
- package/dist/agents/identity.js +20 -1
- package/dist/agents/image-sanitization.js +9 -0
- package/dist/agents/live-auth-keys.js +123 -26
- package/dist/agents/live-model-filter.js +13 -4
- package/dist/agents/model-catalog.js +40 -9
- package/dist/agents/model-forward-compat.js +60 -23
- package/dist/agents/model-selection.js +134 -41
- package/dist/agents/pi-auth-json.js +2 -2
- package/dist/agents/pi-embedded-helpers/bootstrap.js +65 -15
- package/dist/agents/pi-embedded-helpers/errors.js +140 -15
- package/dist/agents/pi-embedded-helpers/images.js +22 -12
- package/dist/agents/pi-embedded-helpers.js +2 -2
- package/dist/agents/pi-embedded-runner/abort.js +10 -3
- package/dist/agents/pi-embedded-runner/compact.js +230 -32
- package/dist/agents/pi-embedded-runner/extra-params.js +203 -12
- package/dist/agents/pi-embedded-runner/google.js +109 -19
- package/dist/agents/pi-embedded-runner/history.js +35 -17
- package/dist/agents/pi-embedded-runner/run/attempt.js +386 -95
- package/dist/agents/pi-embedded-runner/run/images.js +81 -55
- package/dist/agents/pi-embedded-runner/run/payloads.js +89 -39
- package/dist/agents/pi-embedded-runner/run.js +193 -25
- package/dist/agents/pi-embedded-runner/run.overflow-compaction.mocks.shared.js +2 -2
- package/dist/agents/pi-embedded-runner/runs.js +17 -8
- package/dist/agents/pi-embedded-runner/tool-result-context-guard.js +262 -0
- package/dist/agents/pi-embedded-runner.js +1 -1
- package/dist/agents/pi-embedded-subscribe.handlers.tools.js +180 -10
- package/dist/agents/pi-embedded-subscribe.js +37 -0
- package/dist/agents/pi-embedded-subscribe.tools.js +127 -30
- package/dist/agents/pi-model-discovery.js +9 -2
- package/dist/agents/pi-tool-definition-adapter.js +60 -8
- package/dist/agents/pi-tools.before-tool-call.js +1 -1
- package/dist/agents/pi-tools.js +113 -94
- package/dist/agents/pi-tools.read.js +337 -38
- package/dist/agents/poolbot-tools.js +14 -5
- package/dist/agents/sandbox/docker.js +10 -5
- package/dist/agents/sandbox/registry.js +96 -46
- package/dist/agents/sandbox/sanitize-env-vars.js +82 -0
- package/dist/agents/sandbox-paths.js +43 -10
- package/dist/agents/session-tool-result-guard-wrapper.js +23 -11
- package/dist/agents/session-tool-result-guard.js +39 -39
- package/dist/agents/session-transcript-repair.js +36 -33
- package/dist/agents/session-write-lock.js +62 -44
- package/dist/agents/skills/frontmatter.js +49 -88
- package/dist/agents/skills/workspace.js +335 -28
- package/dist/agents/subagent-announce.js +508 -174
- package/dist/agents/subagent-registry.js +45 -4
- package/dist/agents/subagent-spawn.js +16 -33
- package/dist/agents/system-prompt-report.js +27 -10
- package/dist/agents/system-prompt.js +26 -32
- package/dist/agents/tool-call-id.js +69 -17
- package/dist/agents/tool-display-common.js +1 -1
- package/dist/agents/tool-images.js +64 -31
- package/dist/agents/tools/canvas-tool.js +17 -11
- package/dist/agents/tools/common.js +37 -19
- package/dist/agents/tools/cron-tool.js +40 -38
- package/dist/agents/tools/gateway.js +70 -2
- package/dist/agents/tools/message-tool.js +181 -40
- package/dist/agents/tools/nodes-tool.js +128 -36
- package/dist/agents/tools/nodes-utils.js +12 -38
- package/dist/agents/tools/session-status-tool.js +24 -71
- package/dist/agents/tools/sessions-helpers.js +38 -210
- package/dist/agents/tools/sessions-spawn-tool.js +28 -198
- package/dist/agents/tools/telegram-actions.js +58 -7
- package/dist/agents/tools/web-fetch-utils.js +112 -7
- package/dist/agents/tools/web-fetch.js +279 -175
- package/dist/agents/tools/web-shared.js +71 -8
- package/dist/agents/usage.js +25 -16
- package/dist/auto-reply/commands-registry.data.js +85 -11
- package/dist/auto-reply/dispatch.js +40 -21
- package/dist/auto-reply/reply/abort.js +102 -33
- package/dist/auto-reply/reply/commands-core.js +82 -33
- package/dist/auto-reply/reply/commands-export-session.js +1 -1
- package/dist/auto-reply/reply/commands-info.js +41 -12
- package/dist/auto-reply/reply/commands-subagents.js +352 -100
- package/dist/auto-reply/reply/commands-system-prompt.js +2 -2
- package/dist/auto-reply/reply/dispatch-from-config.js +100 -29
- package/dist/auto-reply/reply/elevated-unavailable.js +1 -1
- package/dist/auto-reply/reply/inbound-meta.js +12 -1
- package/dist/auto-reply/reply/mentions.js +18 -11
- package/dist/auto-reply/reply/normalize-reply.js +17 -8
- package/dist/auto-reply/reply/reply-dispatcher.js +62 -10
- package/dist/auto-reply/reply/session.js +102 -21
- package/dist/auto-reply/reply/streaming-directives.js +16 -5
- package/dist/auto-reply/status.js +73 -50
- package/dist/browser/extension-relay.js +3 -3
- package/dist/browser/http-auth.js +1 -1
- package/dist/browser/paths.js +2 -2
- package/dist/build-info.json +3 -3
- package/dist/channels/allowlist-match.js +20 -0
- package/dist/channels/allowlists/resolve-utils.js +65 -2
- package/dist/channels/chat-type.js +8 -4
- package/dist/channels/dock.js +127 -35
- package/dist/channels/draft-stream-loop.js +6 -2
- package/dist/channels/plugins/actions/telegram.js +42 -18
- package/dist/channels/plugins/allowlist-match.js +1 -1
- package/dist/channels/plugins/group-mentions.js +51 -41
- package/dist/channels/plugins/message-action-names.js +2 -0
- package/dist/channels/plugins/message-actions.js +24 -5
- package/dist/channels/plugins/normalize/discord.js +26 -4
- package/dist/channels/plugins/normalize/signal.js +35 -22
- package/dist/channels/plugins/onboarding/helpers.js +8 -26
- package/dist/channels/plugins/outbound/imessage.js +15 -14
- package/dist/channels/registry.js +20 -7
- package/dist/cli/acp-cli.js +7 -5
- package/dist/cli/browser-cli-extension.js +25 -12
- package/dist/cli/browser-cli-state.cookies-storage.js +25 -6
- package/dist/cli/browser-cli-state.js +101 -145
- package/dist/cli/command-options.js +28 -0
- package/dist/cli/completion-cli.js +6 -6
- package/dist/cli/cron-cli/register.cron-add.js +25 -1
- package/dist/cli/cron-cli/register.cron-edit.js +44 -0
- package/dist/cli/cron-cli/shared.js +7 -1
- package/dist/cli/daemon-cli/lifecycle-core.js +23 -21
- package/dist/cli/daemon-cli/lifecycle.js +23 -247
- package/dist/cli/daemon-cli/register-service-commands.js +25 -4
- package/dist/cli/daemon-cli.js +1 -0
- package/dist/cli/devices-cli.js +33 -20
- package/dist/cli/gateway-cli/register.js +37 -105
- package/dist/cli/gateway-cli/run.js +49 -11
- package/dist/cli/nodes-camera.js +59 -4
- package/dist/cli/nodes-cli/register.camera.js +27 -24
- package/dist/cli/nodes-cli/rpc.js +21 -38
- package/dist/cli/qr-cli.js +2 -2
- package/dist/cli/skills-cli.format.js +2 -2
- package/dist/cli/update-cli/progress.js +2 -2
- package/dist/cli/update-cli/restart-helper.js +28 -7
- package/dist/cli/update-cli/shared.js +7 -7
- package/dist/cli/update-cli/status.js +1 -1
- package/dist/cli/update-cli/update-command.js +14 -8
- package/dist/cli/update-cli/wizard.js +2 -2
- package/dist/cli/update-cli.js +21 -1027
- package/dist/commands/auth-choice.apply.anthropic.js +10 -2
- package/dist/commands/channels/add-mutators.js +3 -35
- package/dist/commands/channels/add.js +39 -51
- package/dist/commands/config-validation.js +1 -1
- package/dist/commands/configure.gateway-auth.js +52 -15
- package/dist/commands/configure.gateway.js +84 -40
- package/dist/commands/doctor-completion.js +3 -3
- package/dist/commands/doctor-config-flow.js +536 -16
- package/dist/commands/doctor-gateway-services.js +103 -79
- package/dist/commands/doctor-memory-search.js +9 -9
- package/dist/commands/doctor-platform-notes.js +57 -30
- package/dist/commands/doctor-prompter.js +26 -15
- package/dist/commands/doctor-session-locks.js +1 -1
- package/dist/commands/doctor.js +21 -9
- package/dist/commands/model-picker.js +120 -95
- package/dist/commands/models/set.js +2 -21
- package/dist/commands/models/shared.js +65 -37
- package/dist/commands/onboard-helpers.js +81 -39
- package/dist/commands/openai-codex-oauth.js +1 -1
- package/dist/commands/sessions.js +52 -53
- package/dist/commands/status.summary.js +52 -34
- package/dist/commands/test-wizard-helpers.js +2 -2
- package/dist/config/defaults.js +79 -42
- package/dist/config/group-policy.js +50 -18
- package/dist/config/includes.js +37 -10
- package/dist/config/schema.help.js +5 -4
- package/dist/config/schema.hints.js +2 -2
- package/dist/config/schema.labels.js +1 -0
- package/dist/config/sessions/group.js +12 -11
- package/dist/config/sessions/paths.js +137 -11
- package/dist/config/sessions/store.js +185 -65
- package/dist/config/sessions/types.js +15 -1
- package/dist/config/sessions.js +1 -0
- package/dist/config/telegram-custom-commands.js +3 -2
- package/dist/config/types.js +2 -0
- package/dist/config/zod-schema.agent-defaults.js +6 -27
- package/dist/config/zod-schema.agent-runtime.js +171 -79
- package/dist/config/zod-schema.providers-core.js +138 -65
- package/dist/config/zod-schema.session.js +49 -22
- package/dist/control-ui/assets/index-HRr1grwl.js.map +1 -1
- package/dist/cron/isolated-agent/run.js +224 -57
- package/dist/cron/normalize.js +48 -45
- package/dist/cron/run-log.js +14 -0
- package/dist/cron/service/jobs.js +190 -28
- package/dist/cron/service/normalize.js +29 -11
- package/dist/cron/service/store.js +30 -44
- package/dist/cron/service/timer.js +182 -96
- package/dist/cron/service.js +3 -0
- package/dist/cron/stagger.js +37 -0
- package/dist/daemon/inspect.js +132 -92
- package/dist/daemon/runtime-paths.js +25 -4
- package/dist/daemon/service-audit.js +47 -16
- package/dist/discord/accounts.js +23 -20
- package/dist/discord/monitor/agent-components.js +1115 -219
- package/dist/discord/monitor/allow-list.js +114 -34
- package/dist/discord/monitor/listeners.js +204 -97
- package/dist/discord/monitor/message-handler.js +21 -10
- package/dist/discord/monitor/message-handler.preflight.js +195 -101
- package/dist/discord/monitor/message-handler.process.js +384 -123
- package/dist/discord/monitor/message-utils.js +86 -23
- package/dist/discord/monitor/native-command.js +77 -57
- package/dist/discord/monitor/provider.js +122 -117
- package/dist/discord/monitor/reply-context.js +20 -16
- package/dist/discord/monitor/reply-delivery.js +40 -8
- package/dist/discord/monitor/rest-fetch.js +22 -0
- package/dist/discord/monitor/threading.js +117 -24
- package/dist/discord/send.js +2 -1
- package/dist/discord/send.outbound.js +124 -11
- package/dist/discord/send.shared.js +112 -72
- package/dist/discord/voice-message.js +3 -3
- package/dist/gateway/auth.js +119 -44
- package/dist/gateway/call.js +76 -34
- package/dist/gateway/channel-health-monitor.js +57 -50
- package/dist/gateway/client.js +63 -29
- package/dist/gateway/control-ui-contract.js +1 -1
- package/dist/gateway/gateway-config-prompts.shared.js +2 -2
- package/dist/gateway/net.js +109 -1
- package/dist/gateway/protocol/index.js +5 -8
- package/dist/gateway/protocol/schema/agent.js +19 -1
- package/dist/gateway/protocol/schema/channels.js +21 -0
- package/dist/gateway/protocol/schema/cron.js +43 -30
- package/dist/gateway/protocol/schema/protocol-schemas.js +6 -11
- package/dist/gateway/protocol/schema/sessions.js +5 -1
- package/dist/gateway/protocol/schema.js +0 -1
- package/dist/gateway/server/presence-events.js +12 -0
- package/dist/gateway/server/ws-connection/message-handler.js +203 -212
- package/dist/gateway/server/ws-connection.js +58 -21
- package/dist/gateway/server-broadcast.js +18 -13
- package/dist/gateway/server-cron.js +177 -10
- package/dist/gateway/server-methods/agent-job.js +131 -38
- package/dist/gateway/server-methods/send.js +60 -14
- package/dist/gateway/server-methods/sessions.js +160 -96
- package/dist/gateway/server-methods/system.js +5 -7
- package/dist/gateway/server-methods-list.js +8 -0
- package/dist/gateway/server-methods.js +24 -8
- package/dist/gateway/server-node-events.js +278 -68
- package/dist/gateway/session-utils.fs.js +316 -75
- package/dist/gateway/session-utils.js +224 -70
- package/dist/gateway/sessions-patch.js +63 -20
- package/dist/gateway/test-temp-config.js +1 -1
- package/dist/gateway/tools-invoke-http.js +118 -70
- package/dist/gateway/ws-log.js +135 -107
- package/dist/hooks/frontmatter.js +36 -82
- package/dist/hooks/install.js +149 -139
- package/dist/hooks/internal-hooks.js +29 -4
- package/dist/hooks/plugin-hooks.js +2 -1
- package/dist/imessage/monitor/deliver.js +10 -4
- package/dist/imessage/monitor/monitor-provider.js +138 -375
- package/dist/imessage/monitor/runtime.js +4 -8
- package/dist/imessage/send.js +65 -19
- package/dist/infra/exec-approvals-allowlist.js +7 -0
- package/dist/infra/exec-approvals.js +35 -920
- package/dist/infra/exec-safe-bin-trust.js +64 -0
- package/dist/infra/heartbeat-runner.js +207 -134
- package/dist/infra/heartbeat-wake.js +183 -22
- package/dist/infra/install-source-utils.js +47 -0
- package/dist/infra/net/ssrf.js +170 -36
- package/dist/infra/outbound/deliver.js +224 -58
- package/dist/infra/outbound/message-action-spec.js +12 -5
- package/dist/infra/outbound/outbound-session.js +27 -25
- package/dist/infra/poolbot-root.js +32 -22
- package/dist/infra/ports.js +14 -11
- package/dist/infra/skills-remote.js +48 -37
- package/dist/infra/system-events.js +25 -11
- package/dist/infra/system-presence.js +26 -33
- package/dist/infra/tmp-poolbot-dir.js +81 -2
- package/dist/infra/wsl.js +37 -1
- package/dist/line/bot-message-context.js +163 -191
- package/dist/logging/subsystem.js +59 -22
- package/dist/markdown/ir.js +124 -50
- package/dist/media/store.js +1 -1
- package/dist/media-understanding/runner.entries.js +42 -25
- package/dist/media-understanding/runner.js +53 -488
- package/dist/memory/embeddings-gemini.js +53 -38
- package/dist/memory/manager-embedding-ops.js +48 -69
- package/dist/pairing/pairing-store.js +178 -119
- package/dist/plugin-sdk/index.js +34 -6
- package/dist/plugins/hooks.js +135 -14
- package/dist/plugins/install.js +190 -152
- package/dist/polls.js +11 -0
- package/dist/routing/resolve-route.js +190 -56
- package/dist/routing/session-key.js +38 -22
- package/dist/runtime.js +35 -9
- package/dist/security/audit-channel.js +1 -1
- package/dist/sessions/session-key-utils.js +29 -11
- package/dist/shared/frontmatter.js +5 -5
- package/dist/shared/node-list-types.js +1 -0
- package/dist/shared/string-normalization.js +15 -0
- package/dist/signal/monitor/event-handler.js +68 -36
- package/dist/signal/send.js +29 -37
- package/dist/slack/monitor/allow-list.js +10 -11
- package/dist/slack/monitor/commands.js +14 -3
- package/dist/slack/monitor/events/interactions.js +4 -4
- package/dist/slack/monitor/media.js +224 -16
- package/dist/slack/monitor/message-handler/dispatch.js +247 -13
- package/dist/slack/monitor/message-handler/prepare.js +128 -45
- package/dist/slack/monitor/slash.js +357 -144
- package/dist/slack/streaming.js +77 -0
- package/dist/telegram/accounts.js +40 -13
- package/dist/telegram/allowed-updates.js +3 -0
- package/dist/telegram/bot/delivery.js +129 -66
- package/dist/telegram/bot/helpers.js +136 -122
- package/dist/telegram/bot-handlers.js +600 -339
- package/dist/telegram/bot-message-context.js +115 -73
- package/dist/telegram/bot-message-dispatch.js +235 -104
- package/dist/telegram/bot-native-command-menu.js +3 -1
- package/dist/telegram/bot-native-commands.js +213 -193
- package/dist/telegram/bot.js +24 -132
- package/dist/telegram/draft-stream.js +84 -75
- package/dist/telegram/format.js +150 -6
- package/dist/telegram/send.js +415 -255
- package/dist/telegram/targets.js +21 -2
- package/dist/telegram/update-offset-store.js +19 -3
- package/dist/terminal/restore.js +5 -2
- package/dist/test-utils/fetch-mock.js +5 -0
- package/dist/version.js +18 -5
- package/dist/web/auto-reply/monitor/broadcast.js +7 -3
- package/dist/web/auto-reply/monitor/on-message.js +6 -3
- package/dist/web/inbound/media.js +34 -8
- package/dist/web/inbound/monitor.js +34 -17
- package/dist/web/inbound/send-api.js +18 -17
- package/dist/web/outbound.js +12 -5
- package/dist/wizard/clack-prompter.js +40 -7
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/device-pair/index.ts +2 -2
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +1 -1
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/irc/src/accounts.ts +1 -1
- package/extensions/irc/src/onboarding.ts +4 -4
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +10 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +10 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +10 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/openai-codex-auth/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +10 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +10 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +10 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +10 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/skills/apple-reminders/SKILL.md +100 -49
- package/skills/coding-agent/SKILL.md +34 -28
- package/skills/github/SKILL.md +131 -16
- package/skills/imsg/SKILL.md +112 -15
- package/skills/openhue/SKILL.md +101 -19
- package/skills/tmux/SKILL.md +111 -79
- package/skills/weather/SKILL.md +88 -25
- package/dist/agents/openclaw-tools.js +0 -151
- package/dist/agents/tool-security.js +0 -96
- package/dist/gateway/url-validation.js +0 -94
- package/dist/infra/openclaw-root.js +0 -109
- package/dist/infra/tmp-openclaw-dir.js +0 -81
- package/dist/media/path-sanitization.js +0 -78
|
@@ -1,67 +1,118 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: apple-reminders
|
|
3
|
-
description: Manage Apple Reminders via
|
|
3
|
+
description: Manage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.
|
|
4
4
|
homepage: https://github.com/steipete/remindctl
|
|
5
|
-
metadata:
|
|
5
|
+
metadata:
|
|
6
|
+
{
|
|
7
|
+
"poolbot":
|
|
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
|
+
}
|
|
6
24
|
---
|
|
7
25
|
|
|
8
26
|
# Apple Reminders CLI (remindctl)
|
|
9
27
|
|
|
10
|
-
Use `remindctl` to manage Apple Reminders directly from the terminal.
|
|
28
|
+
Use `remindctl` to manage Apple Reminders directly from the terminal.
|
|
11
29
|
|
|
12
|
-
|
|
13
|
-
- Install (Homebrew): `brew install steipete/tap/remindctl`
|
|
14
|
-
- From source: `pnpm install && pnpm build` (binary at `./bin/remindctl`)
|
|
15
|
-
- macOS-only; grant Reminders permission when prompted.
|
|
30
|
+
## When to Use
|
|
16
31
|
|
|
17
|
-
|
|
32
|
+
✅ **USE this skill when:**
|
|
33
|
+
|
|
34
|
+
- User explicitly mentions "reminder" or "Reminders app"
|
|
35
|
+
- Creating personal to-dos with due dates that sync to iOS
|
|
36
|
+
- Managing Apple Reminders lists
|
|
37
|
+
- User wants tasks to appear in their iPhone/iPad Reminders app
|
|
38
|
+
|
|
39
|
+
## When NOT to Use
|
|
40
|
+
|
|
41
|
+
❌ **DON'T use this skill when:**
|
|
42
|
+
|
|
43
|
+
- Scheduling Clawdbot tasks or alerts → use `cron` tool with systemEvent instead
|
|
44
|
+
- Calendar events or appointments → use Apple Calendar
|
|
45
|
+
- Project/work task management → use Notion, GitHub Issues, or task queue
|
|
46
|
+
- One-time notifications → use `cron` tool for timed alerts
|
|
47
|
+
- User says "remind me" but means a Clawdbot alert → clarify first
|
|
48
|
+
|
|
49
|
+
## Setup
|
|
50
|
+
|
|
51
|
+
- Install: `brew install steipete/tap/remindctl`
|
|
52
|
+
- macOS-only; grant Reminders permission when prompted
|
|
18
53
|
- Check status: `remindctl status`
|
|
19
54
|
- Request access: `remindctl authorize`
|
|
20
55
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
## Common Commands
|
|
57
|
+
|
|
58
|
+
### View Reminders
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
remindctl # Today's reminders
|
|
62
|
+
remindctl today # Today
|
|
63
|
+
remindctl tomorrow # Tomorrow
|
|
64
|
+
remindctl week # This week
|
|
65
|
+
remindctl overdue # Past due
|
|
66
|
+
remindctl all # Everything
|
|
67
|
+
remindctl 2026-01-04 # Specific date
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Manage Lists
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
remindctl list # List all lists
|
|
74
|
+
remindctl list Work # Show specific list
|
|
75
|
+
remindctl list Projects --create # Create list
|
|
76
|
+
remindctl list Work --delete # Delete list
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Create Reminders
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
remindctl add "Buy milk"
|
|
83
|
+
remindctl add --title "Call mom" --list Personal --due tomorrow
|
|
84
|
+
remindctl add --title "Meeting prep" --due "2026-02-15 09:00"
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Complete/Delete
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
remindctl complete 1 2 3 # Complete by ID
|
|
91
|
+
remindctl delete 4A83 --force # Delete by ID
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Output Formats
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
remindctl today --json # JSON for scripting
|
|
98
|
+
remindctl today --plain # TSV format
|
|
99
|
+
remindctl today --quiet # Counts only
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Date Formats
|
|
103
|
+
|
|
58
104
|
Accepted by `--due` and date filters:
|
|
105
|
+
|
|
59
106
|
- `today`, `tomorrow`, `yesterday`
|
|
60
107
|
- `YYYY-MM-DD`
|
|
61
108
|
- `YYYY-MM-DD HH:mm`
|
|
62
109
|
- ISO 8601 (`2026-01-04T12:34:56Z`)
|
|
63
110
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
111
|
+
## Example: Clarifying User Intent
|
|
112
|
+
|
|
113
|
+
User: "Remind me to check on the deploy in 2 hours"
|
|
114
|
+
|
|
115
|
+
**Ask:** "Do you want this in Apple Reminders (syncs to your phone) or as a Clawdbot alert (I'll message you here)?"
|
|
116
|
+
|
|
117
|
+
- Apple Reminders → use this skill
|
|
118
|
+
- Clawdbot alert → use `cron` tool with systemEvent
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: coding-agent
|
|
3
|
-
description:
|
|
4
|
-
metadata:
|
|
3
|
+
description: "Delegate coding tasks to Codex, Claude Code, or Pi agents via background process. Use when: (1) building/creating new features or apps, (2) reviewing PRs (spawn in temp dir), (3) refactoring large codebases, (4) iterative coding that needs file exploration. NOT for: simple one-liner fixes (just edit), reading code (use read tool), or any work in ~/clawd workspace (never spawn agents here). Requires a bash tool that supports pty:true."
|
|
4
|
+
metadata:
|
|
5
|
+
{
|
|
6
|
+
"poolbot": { "emoji": "🧩", "requires": { "anyBins": ["claude", "codex", "opencode", "pi"] } },
|
|
7
|
+
}
|
|
5
8
|
---
|
|
6
9
|
|
|
7
10
|
# Coding Agent (bash-first)
|
|
@@ -24,27 +27,27 @@ bash command:"codex exec 'Your prompt'"
|
|
|
24
27
|
|
|
25
28
|
### Bash Tool Parameters
|
|
26
29
|
|
|
27
|
-
| Parameter
|
|
28
|
-
|
|
29
|
-
| `command`
|
|
30
|
-
| `pty`
|
|
31
|
-
| `workdir`
|
|
32
|
-
| `background` | boolean | Run in background, returns sessionId for monitoring
|
|
33
|
-
| `timeout`
|
|
34
|
-
| `elevated`
|
|
30
|
+
| Parameter | Type | Description |
|
|
31
|
+
| ------------ | ------- | --------------------------------------------------------------------------- |
|
|
32
|
+
| `command` | string | The shell command to run |
|
|
33
|
+
| `pty` | boolean | **Use for coding agents!** Allocates a pseudo-terminal for interactive CLIs |
|
|
34
|
+
| `workdir` | string | Working directory (agent sees only this folder's context) |
|
|
35
|
+
| `background` | boolean | Run in background, returns sessionId for monitoring |
|
|
36
|
+
| `timeout` | number | Timeout in seconds (kills process on expiry) |
|
|
37
|
+
| `elevated` | boolean | Run on host instead of sandbox (if allowed) |
|
|
35
38
|
|
|
36
39
|
### Process Tool Actions (for background sessions)
|
|
37
40
|
|
|
38
|
-
| Action
|
|
39
|
-
|
|
40
|
-
| `list`
|
|
41
|
-
| `poll`
|
|
42
|
-
| `log`
|
|
43
|
-
| `write`
|
|
44
|
-
| `submit`
|
|
45
|
-
| `send-keys` | Send key tokens or hex bytes
|
|
46
|
-
| `paste`
|
|
47
|
-
| `kill`
|
|
41
|
+
| Action | Description |
|
|
42
|
+
| ----------- | ---------------------------------------------------- |
|
|
43
|
+
| `list` | List all running/recent sessions |
|
|
44
|
+
| `poll` | Check if session is still running |
|
|
45
|
+
| `log` | Get session output (with optional offset/limit) |
|
|
46
|
+
| `write` | Send raw data to stdin |
|
|
47
|
+
| `submit` | Send data + newline (like typing and pressing Enter) |
|
|
48
|
+
| `send-keys` | Send key tokens or hex bytes |
|
|
49
|
+
| `paste` | Paste text (with optional bracketed mode) |
|
|
50
|
+
| `kill` | Terminate the session |
|
|
48
51
|
|
|
49
52
|
---
|
|
50
53
|
|
|
@@ -99,13 +102,14 @@ process action:kill sessionId:XXX
|
|
|
99
102
|
|
|
100
103
|
### Flags
|
|
101
104
|
|
|
102
|
-
| Flag
|
|
103
|
-
|
|
104
|
-
| `exec "prompt"` | One-shot execution, exits when done
|
|
105
|
-
| `--full-auto`
|
|
106
|
-
| `--yolo`
|
|
105
|
+
| Flag | Effect |
|
|
106
|
+
| --------------- | -------------------------------------------------- |
|
|
107
|
+
| `exec "prompt"` | One-shot execution, exits when done |
|
|
108
|
+
| `--full-auto` | Sandboxed but auto-approves in workspace |
|
|
109
|
+
| `--yolo` | NO sandbox, NO approvals (fastest, most dangerous) |
|
|
107
110
|
|
|
108
111
|
### Building/Creating
|
|
112
|
+
|
|
109
113
|
```bash
|
|
110
114
|
# Quick one-shot (auto-approves) - remember PTY!
|
|
111
115
|
bash pty:true workdir:~/project command:"codex exec --full-auto 'Build a dark mode toggle'"
|
|
@@ -133,6 +137,7 @@ bash pty:true workdir:/tmp/pr-130-review command:"codex review --base main"
|
|
|
133
137
|
```
|
|
134
138
|
|
|
135
139
|
### Batch PR Reviews (parallel army!)
|
|
140
|
+
|
|
136
141
|
```bash
|
|
137
142
|
# Fetch all PR refs first
|
|
138
143
|
git fetch origin '+refs/pull/*/head:refs/remotes/origin/pr/*'
|
|
@@ -255,14 +260,15 @@ For long-running background tasks, append a wake trigger to your prompt so Pool
|
|
|
255
260
|
... your task here.
|
|
256
261
|
|
|
257
262
|
When completely finished, run this command to notify me:
|
|
258
|
-
poolbot
|
|
263
|
+
poolbot system event --text "Done: [brief summary of what was built]" --mode now
|
|
259
264
|
```
|
|
260
265
|
|
|
261
266
|
**Example:**
|
|
267
|
+
|
|
262
268
|
```bash
|
|
263
269
|
bash pty:true workdir:~/project background:true command:"codex --yolo exec 'Build a REST API for todos.
|
|
264
270
|
|
|
265
|
-
When completely finished, run: poolbot
|
|
271
|
+
When completely finished, run: poolbot system event --text \"Done: Built todos REST API with CRUD endpoints\" --mode now'"
|
|
266
272
|
```
|
|
267
273
|
|
|
268
274
|
This triggers an immediate wake event — Skippy gets pinged in seconds, not 10 minutes.
|
|
@@ -275,4 +281,4 @@ This triggers an immediate wake event — Skippy gets pinged in seconds, not 10
|
|
|
275
281
|
- **Git repo required:** Codex won't run outside a git directory. Use `mktemp -d && git init` for scratch work.
|
|
276
282
|
- **exec is your friend:** `codex exec "prompt"` runs and exits cleanly - perfect for one-shots.
|
|
277
283
|
- **submit vs write:** Use `submit` to send input + Enter, `write` for raw data without newline.
|
|
278
|
-
- **Sass works:** Codex responds well to playful prompts. Asked it to write a haiku about being second fiddle to a space lobster, got:
|
|
284
|
+
- **Sass works:** Codex responds well to playful prompts. Asked it to write a haiku about being second fiddle to a space lobster, got: _"Second chair, I code / Space lobster sets the tempo / Keys glow, I follow"_ 🦞
|
package/skills/github/SKILL.md
CHANGED
|
@@ -1,48 +1,163 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: github
|
|
3
|
-
description: "
|
|
4
|
-
metadata:
|
|
3
|
+
description: "GitHub operations via `gh` CLI: issues, PRs, CI runs, code review, API queries. Use when: (1) checking PR status or CI, (2) creating/commenting on issues, (3) listing/filtering PRs or issues, (4) viewing run logs. NOT for: complex web UI interactions requiring manual browser flows (use browser tooling when available), bulk operations across many repos (script with gh api), or when gh auth is not configured."
|
|
4
|
+
metadata:
|
|
5
|
+
{
|
|
6
|
+
"poolbot":
|
|
7
|
+
{
|
|
8
|
+
"emoji": "🐙",
|
|
9
|
+
"requires": { "bins": ["gh"] },
|
|
10
|
+
"install":
|
|
11
|
+
[
|
|
12
|
+
{
|
|
13
|
+
"id": "brew",
|
|
14
|
+
"kind": "brew",
|
|
15
|
+
"formula": "gh",
|
|
16
|
+
"bins": ["gh"],
|
|
17
|
+
"label": "Install GitHub CLI (brew)",
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "apt",
|
|
21
|
+
"kind": "apt",
|
|
22
|
+
"package": "gh",
|
|
23
|
+
"bins": ["gh"],
|
|
24
|
+
"label": "Install GitHub CLI (apt)",
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
}
|
|
5
29
|
---
|
|
6
30
|
|
|
7
31
|
# GitHub Skill
|
|
8
32
|
|
|
9
|
-
Use the `gh` CLI to interact with GitHub
|
|
33
|
+
Use the `gh` CLI to interact with GitHub repositories, issues, PRs, and CI.
|
|
10
34
|
|
|
11
|
-
##
|
|
35
|
+
## When to Use
|
|
36
|
+
|
|
37
|
+
✅ **USE this skill when:**
|
|
38
|
+
|
|
39
|
+
- Checking PR status, reviews, or merge readiness
|
|
40
|
+
- Viewing CI/workflow run status and logs
|
|
41
|
+
- Creating, closing, or commenting on issues
|
|
42
|
+
- Creating or merging pull requests
|
|
43
|
+
- Querying GitHub API for repository data
|
|
44
|
+
- Listing repos, releases, or collaborators
|
|
45
|
+
|
|
46
|
+
## When NOT to Use
|
|
47
|
+
|
|
48
|
+
❌ **DON'T use this skill when:**
|
|
49
|
+
|
|
50
|
+
- Local git operations (commit, push, pull, branch) → use `git` directly
|
|
51
|
+
- Non-GitHub repos (GitLab, Bitbucket, self-hosted) → different CLIs
|
|
52
|
+
- Cloning repositories → use `git clone`
|
|
53
|
+
- Reviewing actual code changes → use `coding-agent` skill
|
|
54
|
+
- Complex multi-file diffs → use `coding-agent` or read files directly
|
|
55
|
+
|
|
56
|
+
## Setup
|
|
12
57
|
|
|
13
|
-
Check CI status on a PR:
|
|
14
58
|
```bash
|
|
15
|
-
|
|
59
|
+
# Authenticate (one-time)
|
|
60
|
+
gh auth login
|
|
61
|
+
|
|
62
|
+
# Verify
|
|
63
|
+
gh auth status
|
|
16
64
|
```
|
|
17
65
|
|
|
18
|
-
|
|
66
|
+
## Common Commands
|
|
67
|
+
|
|
68
|
+
### Pull Requests
|
|
69
|
+
|
|
19
70
|
```bash
|
|
20
|
-
|
|
71
|
+
# List PRs
|
|
72
|
+
gh pr list --repo owner/repo
|
|
73
|
+
|
|
74
|
+
# Check CI status
|
|
75
|
+
gh pr checks 55 --repo owner/repo
|
|
76
|
+
|
|
77
|
+
# View PR details
|
|
78
|
+
gh pr view 55 --repo owner/repo
|
|
79
|
+
|
|
80
|
+
# Create PR
|
|
81
|
+
gh pr create --title "feat: add feature" --body "Description"
|
|
82
|
+
|
|
83
|
+
# Merge PR
|
|
84
|
+
gh pr merge 55 --squash --repo owner/repo
|
|
21
85
|
```
|
|
22
86
|
|
|
23
|
-
|
|
87
|
+
### Issues
|
|
88
|
+
|
|
24
89
|
```bash
|
|
25
|
-
|
|
90
|
+
# List issues
|
|
91
|
+
gh issue list --repo owner/repo --state open
|
|
92
|
+
|
|
93
|
+
# Create issue
|
|
94
|
+
gh issue create --title "Bug: something broken" --body "Details..."
|
|
95
|
+
|
|
96
|
+
# Close issue
|
|
97
|
+
gh issue close 42 --repo owner/repo
|
|
26
98
|
```
|
|
27
99
|
|
|
28
|
-
|
|
100
|
+
### CI/Workflow Runs
|
|
101
|
+
|
|
29
102
|
```bash
|
|
103
|
+
# List recent runs
|
|
104
|
+
gh run list --repo owner/repo --limit 10
|
|
105
|
+
|
|
106
|
+
# View specific run
|
|
107
|
+
gh run view <run-id> --repo owner/repo
|
|
108
|
+
|
|
109
|
+
# View failed step logs only
|
|
30
110
|
gh run view <run-id> --repo owner/repo --log-failed
|
|
31
|
-
```
|
|
32
111
|
|
|
33
|
-
|
|
112
|
+
# Re-run failed jobs
|
|
113
|
+
gh run rerun <run-id> --failed --repo owner/repo
|
|
114
|
+
```
|
|
34
115
|
|
|
35
|
-
|
|
116
|
+
### API Queries
|
|
36
117
|
|
|
37
|
-
Get PR with specific fields:
|
|
38
118
|
```bash
|
|
119
|
+
# Get PR with specific fields
|
|
39
120
|
gh api repos/owner/repo/pulls/55 --jq '.title, .state, .user.login'
|
|
121
|
+
|
|
122
|
+
# List all labels
|
|
123
|
+
gh api repos/owner/repo/labels --jq '.[].name'
|
|
124
|
+
|
|
125
|
+
# Get repo stats
|
|
126
|
+
gh api repos/owner/repo --jq '{stars: .stargazers_count, forks: .forks_count}'
|
|
40
127
|
```
|
|
41
128
|
|
|
42
129
|
## JSON Output
|
|
43
130
|
|
|
44
|
-
Most commands support `--json` for structured output
|
|
131
|
+
Most commands support `--json` for structured output with `--jq` filtering:
|
|
45
132
|
|
|
46
133
|
```bash
|
|
47
134
|
gh issue list --repo owner/repo --json number,title --jq '.[] | "\(.number): \(.title)"'
|
|
135
|
+
gh pr list --json number,title,state,mergeable --jq '.[] | select(.mergeable == "MERGEABLE")'
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Templates
|
|
139
|
+
|
|
140
|
+
### PR Review Summary
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Get PR overview for review
|
|
144
|
+
PR=55 REPO=owner/repo
|
|
145
|
+
echo "## PR #$PR Summary"
|
|
146
|
+
gh pr view $PR --repo $REPO --json title,body,author,additions,deletions,changedFiles \
|
|
147
|
+
--jq '"**\(.title)** by @\(.author.login)\n\n\(.body)\n\n📊 +\(.additions) -\(.deletions) across \(.changedFiles) files"'
|
|
148
|
+
gh pr checks $PR --repo $REPO
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Issue Triage
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# Quick issue triage view
|
|
155
|
+
gh issue list --repo owner/repo --state open --json number,title,labels,createdAt \
|
|
156
|
+
--jq '.[] | "[\(.number)] \(.title) - \([.labels[].name] | join(", ")) (\(.createdAt[:10]))"'
|
|
48
157
|
```
|
|
158
|
+
|
|
159
|
+
## Notes
|
|
160
|
+
|
|
161
|
+
- Always specify `--repo owner/repo` when not in a git directory
|
|
162
|
+
- Use URLs directly: `gh pr view https://github.com/owner/repo/pull/55`
|
|
163
|
+
- Rate limits apply; use `gh api --cache 1h` for repeated queries
|
package/skills/imsg/SKILL.md
CHANGED
|
@@ -1,25 +1,122 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: imsg
|
|
3
|
-
description: iMessage/SMS CLI for listing chats, history,
|
|
3
|
+
description: iMessage/SMS CLI for listing chats, history, and sending messages via Messages.app.
|
|
4
4
|
homepage: https://imsg.to
|
|
5
|
-
metadata:
|
|
5
|
+
metadata:
|
|
6
|
+
{
|
|
7
|
+
"poolbot":
|
|
8
|
+
{
|
|
9
|
+
"emoji": "📨",
|
|
10
|
+
"os": ["darwin"],
|
|
11
|
+
"requires": { "bins": ["imsg"] },
|
|
12
|
+
"install":
|
|
13
|
+
[
|
|
14
|
+
{
|
|
15
|
+
"id": "brew",
|
|
16
|
+
"kind": "brew",
|
|
17
|
+
"formula": "steipete/tap/imsg",
|
|
18
|
+
"bins": ["imsg"],
|
|
19
|
+
"label": "Install imsg (brew)",
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
},
|
|
23
|
+
}
|
|
6
24
|
---
|
|
7
25
|
|
|
8
26
|
# imsg
|
|
9
27
|
|
|
10
|
-
Use `imsg` to read and send
|
|
28
|
+
Use `imsg` to read and send iMessage/SMS via macOS Messages.app.
|
|
11
29
|
|
|
12
|
-
|
|
13
|
-
- Messages.app signed in
|
|
14
|
-
- Full Disk Access for your terminal
|
|
15
|
-
- Automation permission to control Messages.app (for sending)
|
|
30
|
+
## When to Use
|
|
16
31
|
|
|
17
|
-
|
|
18
|
-
- List chats: `imsg chats --limit 10 --json`
|
|
19
|
-
- History: `imsg history --chat-id 1 --limit 20 --attachments --json`
|
|
20
|
-
- Watch: `imsg watch --chat-id 1 --attachments`
|
|
21
|
-
- Send: `imsg send --to "+14155551212" --text "hi" --file /path/pic.jpg`
|
|
32
|
+
✅ **USE this skill when:**
|
|
22
33
|
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
34
|
+
- User explicitly asks to send iMessage or SMS
|
|
35
|
+
- Reading iMessage conversation history
|
|
36
|
+
- Checking recent Messages.app chats
|
|
37
|
+
- Sending to phone numbers or Apple IDs
|
|
38
|
+
|
|
39
|
+
## When NOT to Use
|
|
40
|
+
|
|
41
|
+
❌ **DON'T use this skill when:**
|
|
42
|
+
|
|
43
|
+
- Telegram messages → use `message` tool with `channel:telegram`
|
|
44
|
+
- Signal messages → use Signal channel if configured
|
|
45
|
+
- WhatsApp messages → use WhatsApp channel if configured
|
|
46
|
+
- Discord messages → use `message` tool with `channel:discord`
|
|
47
|
+
- Slack messages → use `slack` skill
|
|
48
|
+
- Group chat management (adding/removing members) → not supported
|
|
49
|
+
- Bulk/mass messaging → always confirm with user first
|
|
50
|
+
- Replying in current conversation → just reply normally (Clawdbot routes automatically)
|
|
51
|
+
|
|
52
|
+
## Requirements
|
|
53
|
+
|
|
54
|
+
- macOS with Messages.app signed in
|
|
55
|
+
- Full Disk Access for terminal
|
|
56
|
+
- Automation permission for Messages.app (for sending)
|
|
57
|
+
|
|
58
|
+
## Common Commands
|
|
59
|
+
|
|
60
|
+
### List Chats
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
imsg chats --limit 10 --json
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### View History
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# By chat ID
|
|
70
|
+
imsg history --chat-id 1 --limit 20 --json
|
|
71
|
+
|
|
72
|
+
# With attachments info
|
|
73
|
+
imsg history --chat-id 1 --limit 20 --attachments --json
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Watch for New Messages
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
imsg watch --chat-id 1 --attachments
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Send Messages
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Text only
|
|
86
|
+
imsg send --to "+14155551212" --text "Hello!"
|
|
87
|
+
|
|
88
|
+
# With attachment
|
|
89
|
+
imsg send --to "+14155551212" --text "Check this out" --file /path/to/image.jpg
|
|
90
|
+
|
|
91
|
+
# Specify service
|
|
92
|
+
imsg send --to "+14155551212" --text "Hi" --service imessage
|
|
93
|
+
imsg send --to "+14155551212" --text "Hi" --service sms
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Service Options
|
|
97
|
+
|
|
98
|
+
- `--service imessage` — Force iMessage (requires recipient has iMessage)
|
|
99
|
+
- `--service sms` — Force SMS (green bubble)
|
|
100
|
+
- `--service auto` — Let Messages.app decide (default)
|
|
101
|
+
|
|
102
|
+
## Safety Rules
|
|
103
|
+
|
|
104
|
+
1. **Always confirm recipient and message content** before sending
|
|
105
|
+
2. **Never send to unknown numbers** without explicit user approval
|
|
106
|
+
3. **Be careful with attachments** — confirm file path exists
|
|
107
|
+
4. **Rate limit yourself** — don't spam
|
|
108
|
+
|
|
109
|
+
## Example Workflow
|
|
110
|
+
|
|
111
|
+
User: "Text mom that I'll be late"
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# 1. Find mom's chat
|
|
115
|
+
imsg chats --limit 20 --json | jq '.[] | select(.displayName | contains("Mom"))'
|
|
116
|
+
|
|
117
|
+
# 2. Confirm with user
|
|
118
|
+
# "Found Mom at +1555123456. Send 'I'll be late' via iMessage?"
|
|
119
|
+
|
|
120
|
+
# 3. Send after confirmation
|
|
121
|
+
imsg send --to "+1555123456" --text "I'll be late"
|
|
122
|
+
```
|