skills/ehaye/telegram-setup/SKILL.md
Help a user set up Telegram for ehAye Dojo. Default to Personal private bots (recommended). Group setup is advanced for teams/observers/demos.
npx skillsauth add neekware/ehayeskills telegram-setupInstall 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.
This skill is your playbook when a user asks Dojo to set up Telegram on their machine and you cannot see the project source. Walk them through the Personal bots flow first — it is the recommended product path. Only fall back to Group setup if they explicitly want shared/team visibility.
ehAye Engine has two Telegram flavors. Only one is active at a time:
| Flavor | When to use | Listens to | Sends to | | --------------------------- | ------------------------------------------ | ------------------------------------------------ | ------------------------ | | Personal bots (default) | A single user, private 1:1 chats | Their paired private Telegram chat per Dojo lane | Same paired private chat | | Group setup (advanced) | Teams, observers, demos, shared visibility | Configured Telegram group chat IDs | Same groups |
Hard rules to enforce in your guidance:
Settings → Remote Access & Notifications → Telegram. The other flavor’s saved keys stay on disk but are dormant.Enabled switch is the master kill switch for Telegram.If you ever see PIN/wake-word in screenshots or older docs, treat them as out-of-date and skip.
After setup, each lane the user configures will have:
/ehaye:pair <code> messageNo groups. No admin rights. No privacy-mode toggles. No chat ID hunting. No getUpdates.
For each lane the user wants (start with Primary):
Open BotFather
@BotFather (verified blue checkmark).Create a bot
/newbot.Dojo Primary or Val Dojo)._bot (e.g. val_dojo_primary_bot). Try variants if taken.Copy the bot token
123456789:ABC....Open Dojo Settings
ehAye Engine → Settings → Remote Access & Notifications → Telegram.Personal bots card is selected (it shows the small green checkmark).Paste the token
Primary private bot (or Secondary private bot for the secondary lane).Connect.Pair the bot
/ehaye:pair 482913.Open bot in Telegram and a copy icon./ehaye:pair <code>.Check pairing.Connected to <Name> (@username) in green.Save and enable
Enabled switch is on.Save.Smoke test
hey or any short message.Repeat for Secondary if the user wants it. Skipping Secondary is fine.
Once a lane is paired, these commands work in that bot chat:
| Type | Meaning |
| ---------------------------- | -------------------------------- |
| help or 1 | Show help |
| status or 2 | Show this lane’s Telegram status |
| telegram on or 3 | Turn this lane’s Telegram ON |
| telegram off or 4 | Turn this lane’s Telegram OFF |
| verbosity brief or 5 | Brief replies |
| verbosity talkative or 6 | Paragraph replies |
| verbosity chatty or 7 | Detailed replies |
3 / 4 toggle the per-lane flag, not the master switch. The master Enabled switch in Settings is the only way to disable the whole Telegram integration.
getMe./ehaye:pair <code>.chatId, userId, bot username, and pairedAt.Use this only when the user explicitly wants a team/observer/demo experience. It is more work and exposes group access-control decisions to the user.
High level:
-100…).Group setup card.@BotFather → /newbot. Copy the token./setprivacy → select the bot → Disable.
ehAye Dojo (P) for PrimaryehAye Dojo (S) for Secondary-100…). Two reliable methods:
https://api.telegram.org/bot<BOT_TOKEN>/getUpdates
Look for chat.id and chat.title matching the group. Copy the negative number.Group setup card.Group Bot Token.Primary Chat ID and Secondary Chat ID.Test next to each chat to verify a message arrives.Enabled switch on.ehAye Engine no longer enforces a PIN or wake-word for Telegram commands. Trust is delegated to Telegram group membership/permissions.
Ask: “Are you setting this up for just you, or do you want others to see/use Dojo through Telegram?”
| Symptom | Likely cause | Fix |
| ------------------------------------------------- | -------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Pairing never completes | Wrong bot opened in Telegram, code mistyped, or code expired | Click Connect again to get a fresh code; ensure the bot username in the dialog matches the bot in Telegram |
| Pairing succeeds but bot ignores messages | Lane Telegram is off (primaryTelegram/secondaryTelegram) | Send 3 in the bot chat (or telegram on); or toggle in Settings |
| Personal bot suddenly silent | Master Enabled is off, or mode switched to Group setup | Re-enable master switch; reselect Personal bots |
| Group bot replies but UI never showed the message | A stale ehAyeEngine process is running from an old install/dev build | Quit /Applications/ehAyeEngine.app (and its sidecar) and any older dev backends; only one Telegram process should be live |
| Group setup test message fails | Bot is not in the group, not an admin, or wrong chat ID | Re-add bot as admin, recheck chat ID via getUpdates |
| Group bot reads /commands only | Privacy mode is still enabled | BotFather → /setprivacy → Disable, then remove and re-add the bot to the group |
| User reports two messages on each reply | Both Personal and Group were briefly enabled by old code | Confirm there’s only one ehAyeEngine process; switch mode and save once to settle settings |
If something’s still wrong: look at temp/ehaye/logs/be/ehaye-d-be-*.log. Telegram lines are prefixed 📨 TelegramService. Confirm there’s only one backend process talking to Telegram.
If a user also wants Portal alerts (separate product from Dojo):
TELEGRAM_BOT_TOKEN (and recipient chat ID) in Portal env.This is independent of the Dojo flavor selected above.
| Command | Purpose |
| ------------- | ------------------------------------------- |
| /newbot | Create a new bot |
| /mybots | List/manage your bots |
| /setprivacy | Toggle group privacy mode (group flow only) |
| /setname | Rename the bot |
| /setuserpic | Set bot avatar |
| /revoke | Revoke the bot token (issues a new one) |
If a token leaks: /revoke immediately, then paste the new token into the same Primary private bot or Secondary private bot field and re-pair.
tools
# ehAye Multimedia Use this skill for **video, audio, images, media conversion, previews, transcription, thumbnails, frame extraction, Spotter visual search, or FFmpeg-backed processing**. Core rule: use ehAye native media tools first. Do not reach first for shell `ffmpeg`, `ffprobe`, Python, or `mediainfo` when a native media tool can do the job. Native tools use bundled engines, show proper tool UI, respect cancellation/timeouts, integrate with Preview/Spotter, and avoid cross-platform shell
development
Test-driven development skill for writing unit tests, generating test fixtures and mocks, analyzing coverage gaps, and guiding red-green-refactor workflows across Jest, Pytest, JUnit, Vitest, and Mocha. Use when the user asks to write tests, improve test coverage, practice TDD, generate mocks or stubs, or mentions testing frameworks like Jest, pytest, or JUnit. Handles test generation from source code, coverage report parsing (LCOV/JSON/XML), quality scoring, and framework conversion for TypeScript, JavaScript, Python, and Java projects.
development
# Writing Skills ## Overview **Writing skills IS Test-Driven Development applied to process documentation.** **Personal skills live in agent-specific directories (`~/.claude/skills` for Claude Code, `~/.agents/skills/` for Codex)** You write test cases (pressure scenarios with subagents), watch them fail (baseline behavior), write the skill (documentation), watch tests pass (agents comply), and refactor (close loopholes). **Core principle:** If you didn't watch an agent fail without the ski
tools
# Writing Plans ## Overview Write comprehensive implementation plans assuming the engineer has zero context for our codebase and questionable taste. Document everything they need to know: which files to touch for each task, code, testing, docs they might need to check, how to test it. Give them the whole plan as bite-sized tasks. DRY. YAGNI. TDD. Frequent commits. Assume they are a skilled developer, but know almost nothing about our toolset or problem domain. Assume they don't know good test