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
data-ai
--- name: disk-cleanup description: Scan and clean macOS caches, package-manager data, crash dumps, and app caches to reclaim disk space. Deterministic — a config registry (targets.json) plus two scripts (survey.py read-only, clean.py executor) do all the measuring and deleting; the agent only relays a compressed summary and makes the few human-judgment calls. IMPORTANT — use this skill whenever the user's request on macOS involves: freeing disk space, cleaning/clearing caches, "disk is full", "
development
Generate and edit images using Google's Gemini image generation models (Nano Banana family). Supports style presets, platform-specific sizing (YouTube/slides/blog), variants, image editing via inlineData, reference images for style transfer, and organized output with metadata. Default model is Nano Banana 2 (gemini-3.1-flash-image-preview). Key is auto-decrypted via SOPS.
development
--- name: agency-docs-updater description: End-to-end pipeline for publishing Claude Code lab meetings. Accepts optional args: date (YYYYMMDD, "yesterday", "today") and lab number (e.g. "04"). Examples: "yesterday 04", "20260420 05", "04" (today, lab 04), "" (today, auto-detect lab). --- # Agency Docs Updater Execute ALL steps automatically in sequence. Only pause if a step fails and cannot be recovered. Read `references/learnings.md` before starting for known pitfalls. **Configuration**: pat
tools
This skill should be used when applying proper typography to prose text or files in Russian, English, German, or French — smart quotes per locale («ёлочки», “curly”, „Gänsefüßchen“, « guillemets »), correct dashes (тире, em/en dash, Gedankenstrich, tiret), non-breaking spaces, ranges, ellipsis, and French espaces insécables before ! ? ; :. Fully deterministic via a pinned typograf-based CLI; never apply these rules by hand. Triggers on "типографика", "typograf", "оттипографь", "smart quotes", "fix typography", "неразрывные пробелы".