telegram-project
Skill4 starsChanged 7 months agoMITView on GitHub
Manage Telegram group → project directory mappings for the kronus daemon. Use when the user wants to map a Telegram group to a project, list mappings, or configure project settings.
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 2 are distinctive, and 9 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 53
Read ~/.claude/channels/telegram/projects.json (handle missing file).
- Very specific: line 58
Read projects.json (create default if missing).
- Very specific: line 59
Default --path to current working directory (run pwd).
- Very specific: line 60
Default --name to basename of the path.
- Very specific: line 61
Default --mode to "acceptEdits".
- Very specific: line 65
Check if group exists in ~/.claude/channels/telegram/access.json groups.
- Very specific: line 70
Read, delete projects[<group_id>], write.
- Distinctive: line 78
Update the key, write back.
- Very specific: line 83
Run pwd to get current directory.
- Very specific: line 86
If group_id provided as additional arg: proceed like add <group_id> --path <cwd>.
- Distinctive: line 92
Always Read the file before Write — don't clobber.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Telegram Project Mapping
Manages project-to-group mappings in ~/.claude/channels/telegram/projects.json.
The kronus daemon reads this file to route Telegram group messages to the correct Claude Code session.
Arguments passed: $ARGUMENTS
State shape
~/.claude/channels/telegram/projects.json:
{
"projects": {
"<group_id>": {
"name": "project-name",
"path": "/absolute/path/to/project",
"allowedTools": ["Read", "Write", "Edit", "Glob", "Grep", "Bash"],
"permissionMode": "acceptEdits",
"addedAt": "2026-03-22T00:00:00Z"
}
},
"defaults": {
"allowedTools": ["Read", "Glob", "Grep"],
"permissionMode": "default"
}
}Missing file = create with empty projects and safe defaults.
Dispatch on arguments
Parse $ARGUMENTS (space-separated). If empty or unrecognized, show status.
No args — status
- Read
~/.claude/channels/telegram/projects.json(handle missing file). - Show: number of mapped projects, each with name, path, group_id, permissionMode.
add <group_id> (optional: --name <name>, --path <path>, --mode <permissionMode>)
- Read projects.json (create default if missing).
- Default
--pathto current working directory (runpwd). - Default
--nameto basename of the path. - Default
--modeto"acceptEdits". - Default
allowedToolsto["Read", "Write", "Edit", "Glob", "Grep", "Bash"]. - Set
projects[<group_id>]with the config and current ISO timestamp. - Write back.
- Check if group exists in
~/.claude/channels/telegram/access.jsongroups. If not, warn user to run/telegram:access group add <group_id>. - Confirm the mapping.
rm <group_id>
- Read, delete
projects[<group_id>], write. - Confirm.
set <group_id> <key> <value>
- Read projects.json.
- Validate group_id exists.
- Supported keys:
name,path,permissionMode,allowedTools(JSON array string). - Update the key, write back.
- Confirm.
init
- Run
pwdto get current directory. - Read projects.json.
- Tell user: "To map this project, provide the Telegram group ID. You can find it by adding @raw_data_bot to your group."
- If group_id provided as additional arg: proceed like
add <group_id> --path <cwd>.
Implementation notes
- Always Read the file before Write — don't clobber.
- Pretty-print JSON (2-space indent).
- Group IDs are negative numbers (e.g.,
-1001234567890) — store as strings. - Validate paths exist before saving (run
lson the path). - The daemon re-reads this file on each incoming message, so changes take effect immediately.
In this repository31 other files it gives its agents.
- .claude/CLAUDE.mdCLAUDE.md
- CLAUDE.mdCLAUDE.md
- global/CLAUDE.mdCLAUDE.md
- auditSkill
- case-studySkill
- ci-commentSkill
- cold-outreachSkill
- daily-briefingSkill
- dep-checkSkill
- github-readmeSkill
- hub-statusSkill
- invoice-genSkill
- kronus-helpSkill
- kronusSkill
- kronus-troubleshootSkill
- lead-qualifySkill
- linkedin-postSkill
- manifest-validateSkill
- meeting-notesSkill
- planSkill
- profile-optimizeSkill
- project-summarySkill
- quick-reviewSkill
- reviewSkill
- secret-scanSkill
- seo-articleSkill
- standup-updateSkill
- test-genSkill
- test-runSkill
- testSkill
- upwork-proposalSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

