telegram
This skill should be used when the user asks to send a file, artifact, image, document, PDF, video, audio, or text message to their Telegram chat. Triggers include "use asun:telegram to send …", "send this to telegram", "telegram this file", "post to telegram", "share via telegram", or any phrase that asks Claude to push content through the user's personal Telegram channel. The skill is one-way (Claude → Telegram); it does not read incoming Telegram messages.
What this skill does
# Telegram: Send Artifacts to the User's Channel
Use the configured Telegram bot to push files or text messages to the user's chat. The same `CC_TELEGRAM_BOT_TOKEN` / `CC_TELEGRAM_CHAT_ID` that power the notification hooks also drive this skill — no extra setup.
## When to use
Trigger on phrases that explicitly mention Telegram as the destination:
- "use asun:telegram to send <file>"
- "telegram this PDF / image / video"
- "send <path> to telegram"
- "post <path> to my telegram"
- "share these artifacts via telegram"
Do NOT trigger when the user just mentions Telegram in passing (e.g., "the telegram bot is working"). Trigger only when Telegram is the requested destination for a specific artifact or message.
## How to call the helper
```bash
$CLAUDE_PLUGIN_ROOT/scripts/send-artifact.sh [--caption "<text>"] [--type <endpoint>] <file-path>
$CLAUDE_PLUGIN_ROOT/scripts/send-artifact.sh --text "<message>"
```
The helper auto-detects the right Telegram endpoint from the file extension and falls back to `sendDocument` for anything unknown, so a single call works for most files.
## File path resolution
1. If the user gives an absolute path, use it as-is.
2. If the user gives a relative path or a bare filename, resolve against `$PWD` first.
3. If the file doesn't exist at the resolved path, list candidate matches via `find . -maxdepth 3 -iname "<basename>"` and ask the user to confirm before sending.
4. Never invent a path. If you cannot find the file, say so.
## Extension → endpoint mapping
| Extension | Endpoint | Notes |
|---|---|---|
| `.jpg` `.jpeg` `.png` `.webp` | `sendPhoto` | Inline preview in Telegram. 10MB limit. |
| `.gif` | `sendAnimation` | Animated, no audio. |
| `.mp4` `.mov` `.mkv` `.webm` | `sendVideo` | Up to 50MB via bot API. |
| `.mp3` `.m4a` `.aac` `.flac` `.wav` | `sendAudio` | Music-style player. |
| `.ogg` `.opus` | `sendVoice` | Voice-note style. |
| `.tgs` | `sendSticker` | Telegram animated sticker format. |
| anything else | `sendDocument` | Generic file, filename preserved, up to 50MB. |
Override with `--type <endpoint>` if the auto-detection picks the wrong one (e.g., `.gif` you want as a static image: `--type document`).
## Caption handling
- The helper always prepends a `[hostname:project]` tag so the user can see which session sent the file.
- If the user supplies extra text ("send foo.pdf with note: this is the v2 draft"), pass it via `--caption "this is the v2 draft"`.
- If the user does not supply a note, omit `--caption` — the tag alone is sent.
- Stickers, voice notes, and video notes do not accept captions; the helper drops the caption silently for those endpoints.
## Multiple files
Telegram's bot API has no batch upload for arbitrary documents, so loop one call per file. Surface successes and failures per file:
```bash
for f in report.pdf chart.png notes.md; do
$CLAUDE_PLUGIN_ROOT/scripts/send-artifact.sh --caption "v2 review pack" "$f" || echo "failed: $f"
done
```
For an image album (multiple photos in one Telegram message), the bot API supports `sendMediaGroup` — not implemented in v0.4.0. If the user asks for an album, send individually and note the limitation.
## Size limits
| Endpoint | Limit |
|---|---|
| `sendPhoto` | 10 MB |
| `sendDocument` and most others | 50 MB |
| Local Bot API server | up to 2 GB (not configured by default) |
If a file exceeds the limit, the API returns an error; surface it verbatim. Common workaround: tar/zip the file, or split, then resend.
## Error handling
The helper exits non-zero on every failure with a clear stderr message:
| Exit | Meaning |
|---|---|
| 2 | Usage error (bad flags, missing file arg). Recheck the invocation. |
| 3 | File not readable. Confirm path with the user. |
| 4 | `CC_TELEGRAM_BOT_TOKEN` or `CC_TELEGRAM_CHAT_ID` not set. Ask the user to export them. |
| 5 | Telegram API returned an error. Surface the API response so the user sees the reason (often size limit, wrong file type for endpoint, or auth issue). |
Always surface the helper's output verbatim — do not paraphrase API errors.
## Dry-run
Set `CC_TELEGRAM_DRY_RUN=true` to print the planned call without hitting the API. Useful for verifying which endpoint will be chosen before actually sending.
## Reference index
- `scripts/send-artifact.sh` — the helper script (single file, fully self-contained).
- `hooks/notify.sh` — the legacy notification helper, unchanged.
- `hooks/hooks.json` — Stop / SubagentStop / Notification hook definitions, unchanged.
Related in Image & Video
watch
IncludedWatch a video (URL or local path). Downloads with yt-dlp, extracts auto-scaled frames with ffmpeg, pulls the transcript from captions (or Whisper API fallback), and hands the result to Claude so it can answer questions about what's in the video.
physical-ai-defect-image-generation
IncludedUse when the user wants to orchestrate defect image generation, run associated setup, or handle outputs on OSMO. The Day 0 path handles cold-start with USD-to-ROI, image-edit augmentation, and AnomalyGen to create initial PCBA datasets. The Day 1 path performs inference and labeling on real images. This skill helps with first-time asset setup, creation of finetuning checkpoints, and configuring deployment. Trigger keywords: defect image generation, dig workflow, dig pipeline, defect image detection workflow, aoi pipeline, aoi anomalygen, usd2roi anomalygen, day 0 pcba, day 1 pcba, day 1 real-photo alignment, day 1 manual roi, metal surface anomaly, glass defect, anomalygen finetune, setup_pcb, setup_metal, setup_glass, setup_pretrained, dig setup, dig datasets, dig pretrained checkpoint, dig image-edit endpoint.
accelint-react-best-practices
IncludedReact performance optimization and best practices. ALWAYS use this skill when working with any React code - writing components, hooks, JSX; refactoring; optimizing re-renders, memoization, state management; reviewing for performance; fixing hydration mismatches; debugging infinite re-renders, stale closures, input focus loss, animations restarting; preventing remounting; implementing transitions, lazy initialization, effect dependencies. Even simple React tasks benefit from these patterns. Covers React 19+ (useEffectEvent, Activity, ref props). Triggers - useEffect, useState, useMemo, useCallback, memo, inline components, nested components, components inside components, re-render, performance, hydration, SSR, Next.js, useDeferredValue, combined hooks.
elevenlabs-agents
IncludedBuild conversational AI voice agents with ElevenLabs Platform using React, JavaScript, React Native, or Swift SDKs. Configure agents, tools (client/server/MCP), RAG knowledge bases, multi-voice, and Scribe real-time STT. Use when: building voice chat interfaces, implementing AI phone agents with Twilio, configuring agent workflows or tools, adding RAG knowledge bases, testing with CLI "agents as code", or troubleshooting deprecated @11labs packages, Android audio cutoff, CSP violations, dynamic variables, or WebRTC config. Keywords: ElevenLabs Agents, ElevenLabs voice agents, AI voice agents, conversational AI, @elevenlabs/react, @elevenlabs/client, @elevenlabs/react-native, @elevenlabs/elevenlabs-js, @elevenlabs/agents-cli, elevenlabs SDK, voice AI, TTS, text-to-speech, ASR, speech recognition, turn-taking model, WebRTC voice, WebSocket voice, ElevenLabs conversation, agent system prompt, agent tools, agent knowledge base, RAG voice agents, multi-voice agents, pronunciation dictionary, voice speed control, elevenlabs scribe, @11labs deprecated, Android audio cutoff, CSP violation elevenlabs, dynamic variables elevenlabs, case-sensitive tool names, webhook authentication
humanizer
IncludedHumanize AI-generated text by detecting and removing patterns typical of LLM output. Rewrites text to sound natural, specific, and human. Uses 28 pattern detectors, 560+ AI vocabulary terms across 3 tiers, and statistical analysis (burstiness, type-token ratio, readability) for comprehensive detection. Use when asked to humanize text, de-AI writing, make content sound more natural/human, review writing for AI patterns, score text for AI detection, or improve AI-generated drafts. Covers content, language, style, communication, and filler categories.
generating-mermaid-diagrams
IncludedSalesforce architecture diagrams using Mermaid with ASCII fallback. Use this skill when generating text-based diagrams for Salesforce architecture, OAuth flows, ERDs, integration sequences, or Agentforce structure. TRIGGER when: user says "diagram", "visualize", "ERD", or asks for sequence diagrams, flowcharts, class diagrams, or architecture visualizations in Mermaid. DO NOT TRIGGER when: user wants PNG/SVG image output (use generating-visual-diagrams), or asks about non-Salesforce systems.