skills/tg-bot-ops/SKILL.md
Use when operating, debugging, deploying, or monitoring a Telegram bot or Telegram-to-agent gateway. Triggers on "telegram bot down", "bot not responding", "debug bot", "check webhook", "polling vs webhook", "restart bot", "deploy bot", "bot logs", "agent gateway", "Telegram Bot API error", "send test message", "бот не отвечает", "проверь бота", "логи бота", "перезапусти бота". Covers health checks, logs, webhook/polling diagnostics, environment validation, safe restart/deploy checklists, Bot API smoke tests, forum topic delivery, privacy mode, gateway routing, and incident notes.
npx skillsauth add serejaris/ris-claude-code tg-bot-opsInstall 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.
Use this skill when the real question is whether a Telegram bot is receiving updates, processing them in the intended runtime, and sending visible responses to the right chat, user, or forum topic.
.env values, connection strings, raw logs, private DMs,
payment payloads, session files, or full user records.<TELEGRAM_BOT_TOKEN>,
<TELEGRAM_USER_ID>, <CHAT_ID>, <TOPIC_ID>, <WEBHOOK_URL>.If the repo or runtime is unclear, identify:
TELEGRAM_BOT_TOKEN;getMe using a masked token path.getWebhookInfo
and inspect runtime logs.409 Conflict by reading the error text:
webhook conflict means webhook/deleteWebhook path; competing getUpdates
means find the polling owner.When the bot is a gateway from Telegram into an agent runtime, read references/hermes-gateway.md. The reference is Hermes-compatible but intentionally generic: bot handle, host, service name, home directory, chat ids, topic ids, env paths, and logs must be placeholders or redacted.
getUpdates, webhooks,
sendMessage, getMe, callbacks, payments, and join requests.start(bot_token=...) or a user-session E2E harness for what a Telegram user
sees.Safe read-only checks should avoid putting the token-bearing URL in shell history, process listings, or copied logs. Prefer a tiny local helper:
import json, os, urllib.request
token = os.environ["TELEGRAM_BOT_TOKEN"]
for method in ("getMe", "getWebhookInfo"):
with urllib.request.urlopen(f"https://api.telegram.org/bot{token}/{method}") as response:
data = json.load(response)
print(method, {"ok": data.get("ok"), "result_keys": sorted((data.get("result") or {}).keys())})
Do not paste the token-bearing URL into notes or issues. In reports, write:
getWebhookInfo: webhook_url=<set|empty>, pending_update_count=<n>, last_error=<redacted>
Direct getUpdates diagnostics can consume pending updates. Use it only with a
fresh nonce, short timeout, known update owner, and restore plan.
message_thread_id.message_thread_id. Preserve message_thread_id for non-General topics.Before restarting or deploying:
getMe, webhook/polling, and one visible smoke test.Answer with:
not checked, local only, runtime checked, verified in Telegram, or blocked..env, logs, user messages, payment payloads, or DB rows.message_thread_id when the bot lives in Telegram forum topics.testing
Разбивает Epic или крупное требование на независимые User Stories с acceptance criteria в формате Given-When-Then, проверкой по INVEST и оценкой Story Points (Fibonacci или T-shirt). На выходе — Story Map с предложением по Sprint-планированию. User-invoked only — do NOT auto-trigger. Triggers on /pm-user-stories, "разбей на user stories", "разбить эпик", "story map", "AC", "acceptance criteria", "break down into user stories", "split this epic", "write user stories".
research
Сводит статус итерации, оценивает прогресс milestones, фиксирует изменения приоритетов, отслеживает зависимости и выдаёт roadmap в формате Now/Next/Later с атрибуцией задержек по 5 причинам, health score и фреймворком обрезки scope при нехватке ресурсов. User-invoked only — do NOT auto-trigger. Triggers on /pm-roadmap, "обнови roadmap", "статус спринта", "анализ задержек", "update roadmap", "sprint status", "milestone progress", "delay analysis".
development
Use when ranking a list of requirements, features, or backlog items using RICE / ICE / MoSCoW / Kano. Built-in decision tree picks the right framework based on data availability and decision context. Output is a transparent matrix, 2×2 Impact/Effort quadrant, and a Sprint allocation proposal. User-invoked only — do NOT auto-trigger. Triggers on "/pm-prioritize", "/prioritize", "приоритизация", "ранжируй бэклог", "RICE-анализ", "prioritize requirements", "RICE", "ICE", "MoSCoW", "Kano", "rank backlog".
documentation
Генерирует структурированный PRD (Product Requirements Document) с шаблонами под тип продукта (B2C / B2B / внутренний инструмент / платформа) — фон, цели, детальный дизайн фич, acceptance criteria в Given-When-Then, аналитика и 10-пунктовый чеклист качества. User-invoked only — do NOT auto-trigger. Triggers on /pm-prd, "сделай PRD", "напиши PRD", "продуктовые требования", "make a PRD", "write a PRD", "draft requirements doc".