Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add timurgaleev/vibestack --skill telegramgit clone --depth 1 https://github.com/timurgaleev/vibestackWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/timurgaleev/vibestack/telegram)<a href="https://agentmods.dev/skills/timurgaleev/vibestack/telegram"><img src="https://agentmods.dev/badge/skills/timurgaleev/vibestack/telegram/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/timurgaleev/vibestack/telegram"><img src="https://agentmods.dev/badge/skills/timurgaleev/vibestack/telegram.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00024 | $0.01302 |
| Opus 5.5 | $0.00010 | $0.00521 |
| Sonnet 5.5 | $0.00005 | $0.00260 |
| Haiku 4.5 | $0.00002 | $0.00130 |
Grade A, and why
telegram scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 113 lines — stays where its author put it; the contents beside it link to each section on GitHub.
When to invoke
Use when the user wants something from their own Telegram account: "what did X write", "listen to X's voice note", "send this PDF to X on Telegram". A Telegram bot sees no history and cannot speak as the user, so it cannot do any of this; this skill logs in as the user through MTProto instead.
/telegram — your own account, from the terminal
The CLI is bin/tg.py in this skill's directory. It declares its dependencies
inline, so run it through uv (plain python3 has no Telethon). Shell
variables do not survive between tool calls, so spell the path out each time:
uv run "${CLAUDE_SKILL_DIR}/bin/tg.py" status # logged in? as whom?
uv run "${CLAUDE_SKILL_DIR}/bin/tg.py" chats "Alice" # names, @usernames, ids
uv run "${CLAUDE_SKILL_DIR}/bin/tg.py" read "Alice" -n 20 # oldest first, UTC
uv run "${CLAUDE_SKILL_DIR}/bin/tg.py" voice "Alice" --language ru
uv run "${CLAUDE_SKILL_DIR}/bin/tg.py" send "Alice" --text "..." --file a.pdf --dry-run
A chat is a dialog name, an @username, or a numeric id from chats. read
and voice accept a unique substring; send accepts only an exact name,
@username or id, and lists the candidates instead of guessing.
Step 0 — is it set up?
Run status. It never prompts:
logged in as …→ continue.not set up→ walk the user through First-time setup from step 1.not logged in→ the session is missing or was revoked; walk the user through step 3 only.
voice also needs whisper and ffmpeg on PATH (brew install openai-whisper ffmpeg); it says so up front if either is missing.
First-time setup — the user does these, not you
Logging in creates a session file that is a full-account credential. The user performs every step that involves a secret; you explain, you do not type.
- The user creates an app at https://my.telegram.org → API development
tools and gets
api_idandapi_hash. - The user runs
uv run <path to tg.py> setup --api-id <id>in their own terminal; theapi_hashis prompted hidden, so it never reaches shell history or this conversation. Give them the absolute path totg.py. - The user logs in in their own terminal, not through
!:uv run <path to tg.py> login --qr, then scans the QR from the phone (Telegram → Settings → Devices → Link Desktop Device). The QR must be seen live, and!shows output only after the command exits. A 2FA cloud password is prompted hidden, with its hint.
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 7d ago Changed · -24 tokens per session a21a8d3d620b
- 16d ago First seen · 113 lines · 48 tokens per session scan A 83de0e6f8caa
telegram is a skill published in the GitHub repository timurgaleev/vibestack (7 stars, last pushed 2d ago), licensed MIT. It adds 24 tokens to every session and 1,302 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-01.
Other skills, from other repositories
artifact-deploy
One-click deploy a user's pre-built app/artifact into their OWN AWS account and get a global public HTTPS link (Vercel-like), with a default TTL and promote-to-persistent. Use when the user says "deploy this", "ship this demo", "give me a public link", "share this externally", or "deploy to AWS".
explain-for
Explain a topic, code, error or design decision for one named audience (a 5-year-old, a manager, a designer, a grad student, a parent). Resolves who it is for, pins the ground truth first, then tunes vocabulary, analogy, tone and depth to that audience. Use when an audience is named.
web-verify
Use after a user-visible UI edit to verify your OWN change on an isolated loopback server. Capture, read and show real screenshots. Backends: playwright-cli (live Browser panel), agent-browser (annotated frames, pixel diff, a11y), or scripted Playwright. Not web-preview or external-page web-browse.
learn-from-sage
Detection-gap (miss) analysis for Code Review Sage. Learn from shipped fixes, acted-on human comments, and design outcomes to close reviewer blind spots. Inline during review stages a candidate; a human triggers a one-shot AI consolidation into the live ruleset.
mochi-remind
Handle due reminders — notify the user with natural language and mark them done.
web-preview
Emit a hidden preview marker so the right-panel Browser tab opens a Load-preview card for a local server URL. Use whenever you start a dev or static server the user should see (Vite, Next, npm run dev, python -m http.server, etc.).