Help us improve
Share bugs, ideas, or general feedback.
From telegram-bridge-mcp
Bootstraps TMCP-enabled agents into Telegram sessions: connection check, session anchor, startup drain, post-connect setup, and activity monitor loop. Triggered by Telegram-related terms.
npx claudepluginhub electrified-cortex/telegram-bridge-mcp --plugin telegram-bridge-mcpHow this skill is triggered — by the user, by Claude, or both
Slash command
/telegram-bridge-mcp:telegram-participationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Bootstrap an agent into a TMCP-brokered Telegram session and keep it in the loop.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Explores codebases via GitNexus: discover repos, query execution flows, trace processes, inspect symbol callers/callees, and review architecture.
Share bugs, ideas, or general feedback.
Bootstrap an agent into a TMCP-brokered Telegram session and keep it in the loop.
| Condition | Action |
|---|---|
| TMCP unreachable, no token | Notify operator; report unavailable; stop. |
| TMCP unreachable, token present | Direct Connect mode; notify operator of TMCP unavailability; proceed to R2. |
| TMCP reachable | Proceed to R2. |
No token (fresh start): action(type: 'session/start', name: '<AgentName>')
Operator approval dialog (up to 120s). Approved → store token; R3. Denied/timeout → notify; stop.
Token present: probe: action(type: 'reminder/list', token: <token>).
AUTH_FAILED or invalid token → action(type: 'session/reconnect', name: '<AgentName>'); store new token; R3.dequeue(max_wait: 0) — single non-blocking call. If a post_compact_monitor_recovery event is in the batch, call help('compacted') before continuing.
action(type: 'profile/load', key: '<agent-name>') — load own profile (voice, animation, reminders). Use the pod's own identifier (e.g. bt, curator, zhuli, overseer). Idempotent; safe after compaction.
send(type: 'animation', preset: 'working', timeout: 60, token: <token>) — fire next, before any further setup, so the operator sees a presence signal during the remainder of boot. 60s temp auto-clears.
Then help('startup') — covers monitor arm and dequeue defaults.
SSE check (try first): action(type: 'activity/listen').
ok: true → HTTP mode active. Arm: Monitor(command: "<command from response>", persistent: true, description: "Telegram SSE notifier"). Skip to R6.HTTP_MODE_REQUIRED → fall through to Branch A/B below (file-watch path).Branch A — compaction recovery (file-watch path): action(type: 'activity/file/get').
file_path → skip Branch B; proceed to path construction.file_path → fall through to Branch B.Branch B — fresh start (file-watch path): action(type: 'activity/file/create'), then dequeue(max_wait: 10) scanning for event_type: 'ACTIVITY_FILE_MONITOR_INSTRUCTIONS'. Extract file_path from that event.
ALREADY_REGISTERED response (either branch):
details.file_path non-empty → use it; proceed to path construction.details.file_path empty → action(type: 'activity/file/delete'), then re-run Branch B.Path construction and arm (file-watch path):
file_path contains backslash (\) separators, convert to POSIX (forward slash) first.file_path.<TMCP_root>/tools/monitor.sh <file_path>.action(type: 'activity/file/delete'), then action(type: 'activity/file/create'); re-arm watcher.When your monitor fires: handle messages one at a time until there are no pending messages (pending = 0). Then stop — do not re-enter the dequeue loop. Your monitor will bring you back when the next message arrives.
Without monitor (fallback only): blocking dequeue loop (dequeue(token) with session default) is acceptable. Verify session default ≥ 90 s on startup. Never specify max_wait unless you have a clear reason — too-short values burn one full API turn per interval with no message processed.
R8 MUST run on ALL shutdown paths (planned exit, shutdown directive, forced stop).
action(type: 'activity/file/delete').dequeue(max_wait: 0) up to 10 iterations until empty.action(type: 'session/close', token: <captured>). On LAST_SESSION error: retry with force: true.help('startup') — monitor arm, dequeue defaults (profile/load now explicit in R4)help('compacted') — post-compaction monitor recoveryhelp('guide') — communication patterns, etiquette, presencehelp('index') — full topic menu