tg-responder/SKILL.md
Review and send Telegram response drafts, manage follow-ups for unanswered outbound messages. Use when the user says "/tg-responder review", "/tg-responder status", "/tg-responder follow-ups", "check telegram drafts", "review pending messages", "telegram inbox", "who hasn't replied", or "follow up".
npx skillsauth add glebis/claude-skills tg-responderInstall 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.
Review pending response drafts and manage the Telegram response queue.
Read the responder queue and present drafts for approval:
python3 ~/.claude/skills/tg-responder/scripts/schema.py # ensure DB exists
Then query the database:
-- Pending drafts needing approval
SELECT o.id, o.chat_id, o.draft_text, o.draft_reason, o.source,
i.sender_name, i.text as original_text, i.urgency, i.category,
datetime(i.received_at, 'unixepoch') as received
FROM outbox o
JOIN inbox i ON o.inbox_id = i.id
WHERE o.status = 'draft'
ORDER BY
CASE i.urgency WHEN 'urgent' THEN 0 WHEN 'normal' THEN 1 ELSE 2 END,
o.created_at ASC;
For each draft, present to the user:
To approve and send a draft:
UPDATE outbox SET status = 'approved', final_text = draft_text, approved_at = strftime('%s','now') WHERE id = ?python3 ~/.claude/skills/telegram/scripts/telegram_fetch.py send --chat-id CHAT_ID --text "THE_TEXT"To skip: UPDATE outbox SET status = 'skipped', updated_at = strftime('%s','now') WHERE id = ?
-- Inbox stats
SELECT status, count(*) FROM inbox GROUP BY status;
-- Outbox stats
SELECT status, count(*) FROM outbox GROUP BY status;
-- Recent activity
SELECT sender_name, route, status, datetime(created_at, 'unixepoch')
FROM inbox ORDER BY created_at DESC LIMIT 10;
Report: pending count, drafts waiting, sent today, failed items.
Scan for people who haven't replied, send reminders with exponential backoff.
# Scan for new unanswered messages (needs Telethon session — stop daemon first)
python3 ~/.claude/skills/tg-responder/scripts/follow_ups.py scan
# Process due reminders (drafts to Telegram or outbox)
python3 ~/.claude/skills/tg-responder/scripts/follow_ups.py remind
# List active follow-ups
python3 ~/.claude/skills/tg-responder/scripts/follow_ups.py list
# Archive expired follow-ups
python3 ~/.claude/skills/tg-responder/scripts/follow_ups.py archive
# Run all (scan + check replies + remind + archive)
python3 ~/.claude/skills/tg-responder/scripts/follow_ups.py all
Also query directly:
SELECT sender_name, outbound_text, reminder_count, max_reminders,
datetime(outbound_at, 'unixepoch') as sent,
datetime(next_reminder_at, 'unixepoch') as next_ping,
status
FROM follow_ups
WHERE status = 'active'
ORDER BY next_reminder_at;
Schedule: exponential (3d → 6d → 12d), fixed (every Nd), or custom per contact. After max_reminders → archived. If they reply → auto-resolved.
Located at ~/Brains/data/telegram/responder.db.
Located at ~/.claude/skills/tg-responder/config.yaml. Edit contacts, modes, and ignore lists there.
Start: python3 ~/.claude/skills/tg-responder/scripts/worker.py
One-shot: python3 ~/.claude/skills/tg-responder/scripts/worker.py --once
development
Create Tufte-inspired data reports and infographic dashboards as standalone HTML files. Uses EB Garamond for text, Monaspace Argon for numbers, Chart.js for interactive charts, and inline SVG sparklines. Produces publication-quality reports with 2-column narrative+data layouts, status dashboards, scroll animations, and responsive mobile support. Use this skill whenever the user wants to create a data report, activity dashboard, infographic, personal analytics page, health tracker visualization, or any document that combines narrative text with interactive charts and tables. Also triggers for "make a report like Tufte", "create an infographic", "build a dashboard", "visualize my data", or requests for beautiful data-driven documents.
documentation
Cut a software release and maintain a tiered compatibility policy. Use when the user wants to release, ship a version, bump the version, tag a release, write a changelog, or update COMPATIBILITY. Config-driven via release.config.json; bumps version files, runs a readiness gate, updates COMPATIBILITY.md tiers and deprecations, tags (→ release workflow), and reports closed issues. Teaches the underlying standards as it runs.
development
Sync and manage bilingual (EN/RU) library content for agency-docs. Use when adding, updating, or reviewing library articles. Handles translation, sync checks, and Russian stylistic review.
development
This skill should be used to watch a long-running background job (ffmpeg/media encode, qmd or other embedding/vector-DB run, batch agent/LLM pipeline, or a real-browser/agent-browser daemon) until it finishes or wedges, then deliver a verdict (done, needs-attention, or blocked) plus the exact next command, without burning dozens of manual poll commands. Triggers on "babysit this job", "watch this until it's done", "ping me when the encode/embed/batch finishes", "is this background process stuck", "monitor this ffmpeg/qmd run", or any request to wait on a long-running process and be told when it's complete or hung.