takopi/SKILL.md
Telegram bridge for pi, Claude Code, Codex, and OpenCode. Remote coding from your phone — projects, worktrees, file transfer, voice notes, session resume. Use when working with takopi config, projects, or Telegram-based agent workflows.
npx skillsauth add snqb/my-skills takopiInstall 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.
Repo: banteg/takopi (761⭐) Docs: takopi.dev
Telegram ↔ agent CLI bridge. Send messages from Telegram, agent runs on your server, streams progress back. Supports pi, Claude Code, Codex, OpenCode as engines.
uv tool install -U takopi
Requires: uv, Python 3.14+, at least one engine CLI on PATH (pi, claude, codex, opencode).
cd ~/my-project
takopi # setup wizard on first run
takopi --onboard # re-run wizard
takopi --debug # debug logging to debug.log
takopi doctor # validate telegram + config
| Command | Description |
|---------|-------------|
| /<engine> | Use engine for this message: /pi, /claude, /codex, /opencode |
| /<project> | Target a registered project |
| @branch | Run in a git worktree for that branch |
| /cancel | Reply to progress message to stop run |
| /new | Clear session, start fresh thread |
| /agent | Show current default engine |
| /agent set <engine> | Set default engine for chat/topic |
| /agent clear | Remove default engine |
| /ctx | Show current context binding |
| /ctx set <project> [@branch] | Bind context |
| /ctx clear | Remove context binding |
| /model | Show/set model override |
| /file put <path> | Upload file to repo (needs file transfer enabled) |
| /file get <path> | Fetch file/dir from repo (dirs auto-zipped) |
| /topic <project> @branch | Create/bind forum topic |
/pi fix the auth bug # engine only
/dota read the README # project only
/dota @feat/new-detector improve accuracy # project + branch
/claude /dota @main refactor pipeline # engine + project + branch
Directives are parsed from the start of the first line only. Order doesn't matter.
cd ~/mobile-research/twitch-autohighlights-dota2
takopi init dota
Or via config:
takopi config set projects.dota.path "~/mobile-research/twitch-autohighlights-dota2"
takopi config set projects.dota.default_engine "pi"
~/.takopi/takopi.toml)[projects.dota]
path = "~/mobile-research/twitch-autohighlights-dota2"
default_engine = "pi"
[projects.research]
path = "~/mobile-research"
default_engine = "pi"
takopi config set default_project "research"
/dota explain the highlight detection pipeline
/dota @feat/audio add audio-based detection
/research find papers on game highlight detection
Reply to continue in the same project+branch context (the ctx: footer carries forward).
Run on feature branches without touching main checkout:
takopi config set projects.dota.worktrees_dir ".worktrees"
takopi config set projects.dota.worktree_base "main"
/dota @feat/audio-detect add whisper-based kill detection
Creates .worktrees/feat/audio-detect as a git worktree.
| Workflow | Session Mode | Topics | Resume Lines | |----------|-------------|--------|--------------| | assistant | chat (auto-resume) | off | hidden | | workspace | chat | on (forum topics) | hidden | | handoff | stateless | off | shown |
Just send messages — auto-resumes the current thread. /new to reset.
takopi config set transports.telegram.session_mode "chat"
takopi config set transports.telegram.show_resume_line false
Every message is independent. Reply to a message to continue that session.
[pi]
model = "claude-opus-4-6"
provider = "anthropic"
extra_args = []
takopi config set pi.model "claude-opus-4-6"
takopi config set pi.provider "anthropic"
[claude]
model = "claude-sonnet-4-5-20250929"
allowed_tools = ["Bash", "Read", "Edit", "Write"]
dangerously_skip_permissions = false
/claude ...)/agent set)/agent set)default_engine)default_engine at top level)takopi config set transports.telegram.files.enabled true
takopi config set transports.telegram.files.auto_put true
/file put docs/spec.pdf/file get src/main.pytakopi config set transports.telegram.voice_transcription true
Requires OPENAI_API_KEY in environment. Transcribes voice → runs as text prompt.
Bind Telegram forum threads to project+branch:
takopi config set transports.telegram.topics.enabled true
takopi config set transports.telegram.topics.scope "auto"
Inside a topic: /topic dota @feat/audio to bind it.
Use Telegram's built-in schedule: long-press send → Schedule Message.
takopi config set watch_config true
Edit ~/.takopi/takopi.toml while takopi is running — changes apply immediately (except transport).
| Command | Description |
|---------|-------------|
| takopi | Start (runs wizard if no config) |
| takopi <engine> | Start with specific engine |
| takopi init <alias> | Register current repo as project |
| takopi chat-id | Capture current chat ID |
| takopi doctor | Validate config + Telegram |
| takopi plugins | List plugins |
| takopi config list | Show all config |
| takopi config get <key> | Get config value |
| takopi config set <key> <value> | Set config value |
~/.takopi/takopi.toml)watch_config = true
default_engine = "pi"
default_project = "research"
transport = "telegram"
[transports.telegram]
bot_token = "..."
chat_id = 123456789
allowed_user_ids = [123456789]
session_mode = "chat"
show_resume_line = false
message_overflow = "split" # "trim" | "split"
voice_transcription = false
[transports.telegram.files]
enabled = true
auto_put = true
auto_put_mode = "upload" # "upload" | "prompt"
uploads_dir = "incoming"
[transports.telegram.topics]
enabled = false
scope = "auto" # "auto" | "main" | "projects" | "all"
[pi]
model = "claude-opus-4-6"
provider = "anthropic"
extra_args = []
[claude]
model = "claude-sonnet-4-5-20250929"
allowed_tools = ["Bash", "Read", "Edit", "Write"]
[projects.dota]
path = "~/mobile-research/twitch-autohighlights-dota2"
default_engine = "pi"
worktrees_dir = ".worktrees"
worktree_base = "main"
[projects.research]
path = "~/mobile-research"
default_engine = "pi"
| Issue | Fix |
|-------|-----|
| Bot doesn't respond | Check takopi is running in tmux. takopi doctor |
| "unknown project" | Run takopi init <alias> in the repo first |
| Engine CLI not found | Install engine, ensure it's on PATH |
| Resume doesn't work | Reply to message with resume line, or use chat mode |
| Progress stuck on "starting" | Agent doing slow work, or /cancel and retry |
| Context not carrying forward | Reply to ctx: message, or set default_project |
documentation
Enrich Markdown articles with inline Wikipedia links. First mention of each notable entity gets a hyperlink. Use when asked to add wiki links, enrich, or add references to .md files.
development
Structured visual QA: screenshot → batch issues → fix all → verify. Replaces the 300-cycle screenshot→edit death spiral. Optional bishkek review as exit gate. Use when building/polishing UI with browser testing, or when user asks for N iterations/reviews.
development
Find complex code, analyze intent, recommend battle-tested library replacements. Uses radon/eslint for detection, GitHub quality search for alternatives.
research
Research real-world UI patterns from curated galleries (Collect UI, Component Gallery, Mobbin). Use when exploring what exists: dropdowns, accordions, inputs, navigation, cards, modals, etc.