home/claude-skills/telegram/SKILL.md
Send a Telegram message or photo from this machine via the bot — to Nico's DM, Alfie's DM, or the shared group. Use when asked to notify/ping/message someone on Telegram, or to post an update/result there.
npx skillsauth add nsimonfr/nic-os telegramInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Post messages and photos to Telegram from the rpi using the bot's HTTP API. Outbound only — picoclaw owns incoming messages.
The bot token is an agenix secret on disk, readable by nsimon:
TOKEN=$(cat /run/agenix/telegram-bot-token)
(If that path is missing — e.g. a home-manager activation context — fall back to
/run/user/$(id -u)/agenix/telegram-bot-token.)
| Alias | chat_id | Who |
| --- | --- | --- |
| me / Nico | 82389391 | Nico's DM with the bot — default |
| alfie | 8627259779 | Alfie's DM with the bot |
| group | -1003356011841 | Group "nSimon, ServaTilis and Alfie" (Nico + Alfie + bot) |
Default to Nico's DM unless told otherwise. The group is shared with Alfie — only post there when both should see it. (The group is set to trigger picoclaw only when the bot is @mentioned, so a plain post won't start an agent turn.)
TOKEN=$(cat /run/agenix/telegram-bot-token)
curl -s "https://api.telegram.org/bot${TOKEN}/sendMessage" \
--data-urlencode "chat_id=82389391" \
--data-urlencode "text=Your message here" | jq '{ok, id: .result.message_id}'
--data-urlencode handles spaces, newlines, and punctuation safely. Optional:
add --data-urlencode "parse_mode=Markdown" for bold / code (then escape any
literal _ * [ characters in the text).
A raw emoji typed directly in the command can make the shell fail with
character not in range. Put rich text in a file via a quoted heredoc, then
send the file with text@:
TOKEN=$(cat /run/agenix/telegram-bot-token)
cat > /tmp/tg-msg.txt <<'EOF'
✅ Deploy finished
• build: ok
• tests: 42 passed
EOF
curl -s "https://api.telegram.org/bot${TOKEN}/sendMessage" \
--data-urlencode "chat_id=82389391" \
--data-urlencode "text@/tmp/tg-msg.txt" | jq '{ok, id: .result.message_id}'
TOKEN=$(cat /run/agenix/telegram-bot-token)
curl -s "https://api.telegram.org/bot${TOKEN}/sendPhoto" \
-F "chat_id=82389391" \
-F "photo=@/path/to/image.jpg" \
-F "caption=Optional caption" | jq '{ok, id: .result.message_id}'
For 2–10 photos as one grouped gallery, use sendMediaGroup (a media JSON array
of {type:"photo", media:"attach://fileN"} with the caption on item 0, plus the
files as -F fileN=@...). A working stdlib reference implementation lives in the
immich skill: rpi5/picoclaw/skills/immich-memories/scripts/immich-on-this-day.py
(send_album).
{"ok":true,...} on success; on failure Telegram
returns {"ok":false,"description":"..."} — surface that description.databases
Query today's Immich "on this day" memories and print a summary picoclaw can relay. Use when the user asks about Immich memories, on-this-day, or a recap of past photos from today's date.
documentation
Promote items from Wiki/Inbox into curated Wiki/Pages, merging or creating as Wiki/Schema dictates
development
Audit the LLM Wiki for orphans, broken links, duplicates, and stale facts; write a report page
documentation
Drop a URL or pasted note into the LLM Wiki Inbox in AFFiNE