Files
hermes-skills/txt-dad/SKILL.md
Hermes Agent b0d790be34 Add all 104 active skills from all 16 Hermes profiles
12 unversioned skills now versioned at 1.0.0:
agent-communication, ascii-video, external-reasoning-augmentation,
jotty-notes-api, minecraft-modpack-server, obsidian, pokemon-player,
powerpoint, social-search, songwriting-and-ai-music,
workspace-context-organization, youtube-content

Total repo: 141 skills across all profile scopes
2026-07-04 11:44:04 -05:00

98 lines
5.2 KiB
Markdown

---
name: txt-dad
description: "Use when the user says 'text dad <message>' or asks to send a quick message to dad. Pushes the message to dad's Telegram DM via the active profile's Telegram gateway."
version: 1.1.0
author: Hermes Agent
license: MIT
platforms: [linux]
metadata:
hermes:
tags: [telegram, notify, family, send-message]
related_skills: []
---
# Text Dad via Telegram
## Overview
One-way notification path: the user says "text dad - hey" (or any "text dad <message>" / "tell dad <message>" variant), and the agent pushes that message to dad's Telegram DM. No reply path is expected — this is a one-shot send, not a conversation bridge.
Underlying mechanism: `hermes send --to telegram:<chat_id> "<message>"` — a scriptable CLI that hits the Telegram Bot API REST endpoint directly using the active profile's Telegram credentials. No running gateway required; it reuses whatever Telegram creds the current profile has configured.
This skill is profile-agnostic. It does not hardcode a profile. It uses whatever Telegram bot the active session's profile is configured with.
## When to Use
- User says "text dad <message>", "tell dad <message>", "message dad <message>", "send dad <message>"
- User asks to notify dad / ping dad on Telegram
- Any variant where the intent is a one-way push to dad's phone
Don't use for:
- Two-way conversation (not wired — see "Responding back" note below)
- Sending to anyone other than dad (different chat_id)
- Long content (>4096 chars — Telegram's per-message limit); split or summarize first
## Dad's chat_id
`1544075739`
This is the numeric Telegram user ID configured as `TELEGRAM_HOME_CHANNEL` in the dev profile. It is a DM chat (same as user ID for private chats).
See `references/cross-profile-setup.md` for the full dev+openz architecture.
## Steps
1. Extract the message text from the user's request. Strip the leading trigger phrase ("text dad", "tell dad", "message dad", "send dad", optional dash/colon). Trim whitespace.
- Completion criteria: you have a non-empty `message` string that is just what Zoe wants to say.
2. If the message is empty, ask Zoe what to send. Do not send a blank message.
3. Prepend the sender tag so dad knows who it's from. The final text sent to Telegram is:
```
from Zoe: <message>
```
For example, if Zoe says "text dad - hey", send "from Zoe: hey". The "from Zoe: " prefix is always added by this skill; never include it in the extracted message, and never strip it out.
4. Send via the active profile's Telegram gateway:
```bash
hermes send --to telegram:1544075739 "from Zoe: <message>"
```
- The command exits 0 on success, 1 on delivery failure, 2 on usage/config error.
- Completion criteria: command printed "sent" and exit code 0.
5. Confirm to the user with one short line, e.g. "Sent to dad on Telegram." Do not echo the message back or add preamble.
## Exact command
Replace `<message>` with the extracted text. Keep it a single shell argument (the terminal tool handles quoting):
```
hermes send --to telegram:1544075739 "from Zoe: <message>"
```
If the message contains double quotes or shell metacharacters, use the terminal tool's shell quoting (single-quote the whole argument, escape internal single quotes as `'\''`).
## Common Pitfalls
1. **No Telegram creds in the active profile.** `hermes send` uses whatever `TELEGRAM_BOT_TOKEN` the current profile has. If the profile has no Telegram bot configured, delivery fails with exit 1. Ensure the profile running this skill has a valid `TELEGRAM_BOT_TOKEN` and that dad's chat_id is in that bot's `TELEGRAM_ALLOWED_USERS` (or the bot allows all users).
2. **Empty or whitespace-only message.** Telegram rejects empty text. Always extract and validate before sending.
3. **Message too long.** Telegram Bot API caps text at 4096 chars. For longer content, either truncate with an ellipsis note or split into multiple `hermes send` calls. The CLI does not auto-split for you.
4. **Trigger phrase left in the message.** If the user says "text dad - hey", send "from Zoe: hey", not "from Zoe: text dad - hey". Strip the trigger, keep the prefix.
5. **Expecting a reply.** This is one-way. If dad replies on Telegram, that reply lands in the Telegram gateway's normal inbound session for that bot — nothing forwards it back to the session that sent the text. Do not promise the user a reply path.
6. **Treating "dad" as configurable.** This skill is hardcoded to dad's chat_id for this household. Generalizing to other recipients requires their numeric Telegram user IDs and their own entry in the profile's allowlist.
## Responding back (not supported)
There is no reply path wired here. A Telegram reply from dad goes into the Telegram gateway's session as a normal inbound message to that bot — nothing forwards it to the Open WebUI session that sent the text. The user (daughter) should not expect to receive dad's responses through this skill. If two-way texting is later needed, the realistic path is giving the daughter her own Telegram bot (separate profile, separate token, native two-way).
## Verification Checklist
- [ ] Trigger phrase stripped from the message
- [ ] Message non-empty
- [ ] `hermes send --to telegram:1544075739 "from Zoe: <message>"` exits 0
- [ ] User gets a one-line confirmation, no echo of the message