Perform Task
telegramdesktop/tdesktop
Resolve, start or resume, implement, review, test, and publish exactly one existing ai-tdesktop task by short slug or full dated id, including rare blocked retries and split-required results.
Universal challenge tracker with flexible cadence, intelligent insights, and cross-challenge learning detection.
$ npx skills add ooiyeefei/ccc --skill streak -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ooiyeefei/ccc streak --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ooiyeefei/ccc.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/streak .claude/skills/streak && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "streak" agent skill from https://github.com/ooiyeefei/ccc/tree/main/skills/streak into .claude/skills/streak/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "streak", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ooiyeefei/ccc/tree/main/skills/streakType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ooiyeefei/ccc --skill streak -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ooiyeefei/ccc streak --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ooiyeefei/ccc.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/streak .agents/skills/streak && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "streak" agent skill from https://github.com/ooiyeefei/ccc/tree/main/skills/streak into .agents/skills/streak/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "streak", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ooiyeefei/ccc --skill streak -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ooiyeefei/ccc streak --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ooiyeefei/ccc.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/streak .cursor/skills/streak && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "streak" agent skill from https://github.com/ooiyeefei/ccc/tree/main/skills/streak into .cursor/skills/streak/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "streak", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ooiyeefei/ccc.git --path skills/streak--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ooiyeefei/ccc --skill streak -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ooiyeefei/ccc streak --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ooiyeefei/ccc.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/streak .gemini/skills/streak && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "streak" agent skill from https://github.com/ooiyeefei/ccc/tree/main/skills/streak into .gemini/skills/streak/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "streak", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ooiyeefei/ccc streakInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ooiyeefei/ccc --skill streak -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ooiyeefei/ccc.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/streak .github/skills/streak && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "streak" agent skill from https://github.com/ooiyeefei/ccc/tree/main/skills/streak into .github/skills/streak/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "streak", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ooiyeefei/ccc --skill streak -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ooiyeefei/ccc streak --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ooiyeefei/ccc.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/streak .opencode/skills/streak && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "streak" agent skill from https://github.com/ooiyeefei/ccc/tree/main/skills/streak into .opencode/skills/streak/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "streak", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
streakUniversal challenge tracker with flexible cadence, intelligent insights, and cross-challenge learning detection.
Streak is an agent skill from ooiyeefei/ccc. Universal challenge tracker with flexible cadence, intelligent insights, and cross-challenge learning detection. Use when user wants to track any personal challenge - learning, habits, building, fitness, creative, or custom. Supports daily, weekly, or N-day check-ins with type-adaptive preferences, backlog, and context files.
Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including reference files (for example `README.md`, `references/achievements.md` and `references/file-templates.md`).
It sits in Productivity & Automation. It works with Telegram. The repository describes itself as: Claude Code Custom Plugins - Custom plugins for Claude Code CLI. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c0fd926. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (Python), which the agent can run.
Shell commands in SKILL.md call:
docker-composepythondockerFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
t.medocker.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
TELEGRAM_BOT_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Streak loads about 4k tokens when it runs, and up to ~13k if it reads all its reference files. Until then it costs about 84 tokens; SKILL.md has 1,447 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
4. **Create `.env` file** in your project root:cat > .env << EOF- Check `.env` file exists in project rootecho ".env" >> .gitignore| No .env file | Show: "Create .env first with TELEGRAM_BOT_TOKEN and ALLOWED_USERS" |pty token | Show: "TELEGRAM_BOT_TOKEN in .env is empty - add your bot token from @BotFather" |ot running. Start Docker Desktop or run: sudo systemctl start docker" |Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from ooiyeefei/ccc at commit c0fd926, republished under its MIT licence (© ooiyeefei). 1,447 words, ~4,013 tokens.
.claude/skills/streak/SKILL.md (or your agent's skills folder). This skill also uses 11 other files; get the full folder from GitHub.A universal, flexible challenge tracking system for Claude Code. Track any personal challenge with intelligent insights and cross-challenge learning detection.
Works for any challenge type: Learning, Building, Fitness, Creative, Habit, or Custom.
Trigger phrases -> Flows:
| User Says | Flow |
|---|---|
| "new challenge", "start a streak", "track a goal" | Flow 1: New Challenge |
| "check in", "log progress", "update my streak" | Flow 2: Check-in |
| "list challenges", "show all challenges" | Flow 3: List |
| "switch to [name]", "change challenge" | Flow 4: Switch |
| "show stats", "my progress" | Flow 5: Statistics |
| "show insights", "cross-challenge" | Flow 6: Insights |
| "export calendar", "create reminders" | Flow 7: Calendar |
| "reset challenge", "start fresh" | Flow 8: Reset |
| "pause [name]", "put on hold" | Flow 9: Pause |
| "archive [name]", "shelve challenge" | Flow 10: Archive |
| "resume [name]", "reactivate" | Flow 11: Resume |
| "setup notifications", "telegram reminders" | Flow 12: Notifications |
| "setup telegram bot", "deploy telegram", "streak-telegram" | Flow 13: Telegram Bot Deploy |
All data in .streak/ folder:
.streak/
├── config.md # Global settings
├── active.md # Current challenge pointer
└── challenges/
└── [challenge-id]/
├── challenge-config.md # Metadata, goal, progress
├── challenge-log.md # Progress log with summary
├── today.md # Today's session context
├── backlog.md # Ideas to try
├── preferences.md # Type-adaptive setup
├── context.md # Linked resources
├── insights.md # Auto-generated insights
└── sessions/
└── session-XXX/
└── notes.md # Session notesFile templates: See references/file-templates.md
| Type | Best For | Key Questions |
|---|---|---|
| Learning | Courses, books, skills | "Any aha moments?", "Progress on milestones?" |
| Building | Projects, shipping | "What did you ship?", "Any blockers?" |
| Fitness | Workouts, health | "What exercises?", "How did body feel?" |
| Creative | Art, writing, music | "What did you create?", "Any inspiration?" |
| Habit | Routines, consistency | "Did you complete it?", "How did it feel?" |
| Custom | Anything else | User-defined questions |
Type details: See references/types.md
.streak/ folder if neededreferences/types.mdDetailed steps: See references/flows-detailed.md
Two modes: Pre-session (planning) and Post-session (wrap-up)
references/types.mdreferences/achievements.mdShortcuts during flow:
| Say | Action |
|---|---|
| "Just research" | Only research step |
| "Skip to suggestions" | Skip research |
| "I know what I'm doing: [idea]" | Skip ideation |
| "Done" / "Finished" / "Back" | Jump to wrap-up |
| "Quick check-in" | Minimal logging |
Detailed steps: See references/flows-detailed.md
Display challenges grouped by status, sorted by priority then recency.
Default: Show active + paused challenges
With --all flag: Include archived challenges
Sorting order (within each group):
Display format:
## Active Challenges
| | Name | Type | Pri | Streak | Last Check-in | Sessions |
|---|------|------|-----|--------|---------------|----------|
| * | python-courses | Learning | 10 | 5 days | 1 day ago | 3 |
| | home-fitness | Fitness | 5 | 2 days | 2 days ago | 8 |
## Paused Challenges
| | stories-to-novels | Writing | 0 | - | 10 days ago | 5 |
(2 archived challenges hidden - use --all to show)
* = Active challenge
Pri = Priority (edit in challenge-config.md)With --all flag, also show:
## Archived Challenges
| | old-project | Building | 0 | - | 2 months ago | 20 |active.mdShow for active challenge:
Analyze ALL challenges to detect:
Insight formats: See references/achievements.md
Generate .ics file with check-in reminders:
Template: See references/file-templates.md
Archives current progress and starts fresh:
challenge-log-archived-[date].mdTemporarily pause a challenge (plan to resume later):
challenge-config.md: set **Status:** paused/streak-resume [name] to reactivate."Use cases: Seasonal challenges, focusing on other priorities, taking a break
Move challenge to long-term storage (out of daily view):
challenge-config.md: set **Status:** archived/streak-list --all to see archived challenges."Use cases: Completed goals, abandoned challenges, historical record
Bring a paused or archived challenge back to active:
challenge-config.md: set **Status:** activeactive.mdNote: Resuming does NOT reset streak - it continues from where you left off.
Set up push notifications for due/overdue check-ins via Telegram.
/newbot and follow prompts123456789:ABCdefGHI...)123456789)Add to .streak/config.md:
## Notifications (Optional)
- **Notifications:** enabled
- **Telegram Bot Token:** 123456789:ABCdefGHI...
- **Telegram Chat ID:** 123456789Option A: Cron (Linux/Mac)
# Run daily at 9am
0 9 * * * cd /path/to/project && python .streak/../tools/streak-notify.pyOption B: GitHub Actions
# .github/workflows/streak-notify.yml
name: Streak Reminder
on:
schedule:
- cron: '0 9 * * *' # 9am UTC daily
jobs:
notify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: python tools/streak-notify.py .streakpython tools/streak-notify.py /path/to/.streakDetailed steps: See tools/streak-notify.py header comments.
One-command deployment of the interactive Telegram bot with Docker.
/newbot → save token/start to your bot (required before it can message you).env file in your project root:cat > .env << EOF
TELEGRAM_BOT_TOKEN=your-bot-token
ALLOWED_USERS=your-chat-id
EOFVerify prerequisites:
.env file exists in project rootTELEGRAM_BOT_TOKEN is set (not empty/placeholder)docker --version)Locate skill tools directory:
# Plugin location (typical paths)
~/.claude-code/plugins/ccc-skills@ccc/streak/tools/
# Or within the ccc repo if running locallyCopy bot files to project root:
cp [tools-dir]/streak-bot.py ./streak-bot.py
cp [tools-dir]/Dockerfile ./Dockerfile
cp [tools-dir]/docker-compose.yml ./docker-compose.ymlEnsure .gitignore protects secrets:
# Add if not present
echo ".env" >> .gitignoreStart the bot:
docker-compose up -d --buildVerify bot is running:
docker-compose ps
docker-compose logs --tail=20Confirm to user:
✅ Telegram bot deployed!
Bot is running in Docker and will auto-restart on reboot.
Commands:
- docker-compose logs -f # View logs
- docker-compose restart # Restart bot
- docker-compose down # Stop bot
Open Telegram and send /start to your bot to test!| Issue | Response |
|---|---|
| No .env file | Show: "Create .env first with TELEGRAM_BOT_TOKEN and ALLOWED_USERS" |
| Empty token | Show: "TELEGRAM_BOT_TOKEN in .env is empty - add your bot token from @BotFather" |
| Docker not found | Show: "Docker not installed. Install from https://docker.com" |
| Docker not running | Show: "Docker daemon not running. Start Docker Desktop or run: sudo systemctl start docker" |
| Port conflict | Show: "Another service using the port. Stop other bots first: docker-compose down" |
| Badge | Requirement |
|---|---|
| :fire: First Flame | 3-day streak |
| :fire::fire: On Fire | 7-day streak |
| :fire::fire::fire: Unstoppable | 30-day streak |
| :gem: Diamond Streak | 100-day streak |
| Badge | Requirement |
|---|---|
| :footprints: First Step | First check-in |
| :star: Dedicated | 10 sessions |
| :100: Centurion | 100 sessions |
| Badge | Requirement |
|---|---|
| :link: Connected | First cross-challenge insight |
| :muscle: Comeback | Resume after 7+ days |
| :mortar_board: Graduate | Complete challenge goal |
Full list: See references/achievements.md
| Situation | Response |
|---|---|
No .streak/ folder | "No challenges found. Say: Start a new challenge" |
| No active challenge | List available challenges, prompt to switch or create |
| Challenge not found | List available, suggest closest match |
Your challenges are interconnected. Your fitness affects your work. Your learning enables your building. Your habits shape your creativity.
Streak detects cross-challenge connections - patterns you might miss:
This is the unique value - not just tracking, but understanding how challenges interact.
Put ALL challenges in ONE .streak/ folder, regardless of life area:
.streak/challenges/
├── work-project # Work
├── morning-fitness # Health
├── learn-rust # Learning
└── daily-meditation # HabitUse /streak-switch to navigate. Use /streak-insights to discover connections.
Don't create separate .streak/ folders for different challenges. That defeats the purpose.
.streak/ folder for ALL challenges (work, health, learning, etc.)For detailed content, see:
| File | Contains |
|---|---|
references/file-templates.md | All file templates and structures |
references/types.md | Type-specific questions, preferences, ideation |
references/flows-detailed.md | Step-by-step flow instructions |
references/achievements.md | Achievement system, insight generation |
Type: Building
Goal: Ship one AI-powered micro-app per day
Cadence: Daily
Stack: Python, TypeScript, Claude CodeType: Learning
Goal: Complete Rustlings and build a CLI tool
Cadence: Every 2 days
Resources: Rustlings, The Rust BookType: Fitness
Goal: Build consistent strength training habit
Cadence: Daily (with rest days)
Equipment: Home gym - dumbbells, pull-up barType: Creative
Goal: Draw one sketch per day for 100 days
Cadence: Daily
Medium: Digital art (Procreate)Type: Habit
Goal: Meditate 10 minutes every morning
Cadence: Daily
Trigger: After coffee, before email© ooiyeefei, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 11 other files (references) in skills/streak of ooiyeefei/ccc.
Open the folder on GitHubat commit c0fd926
Streak next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Streak this skillooiyeefei/ccc | 494 | — | ~4k | Automated safety check: Notes | MIT | |
| Perform Tasktelegramdesktop/tdesktop | 33k | 2 repos | ~3k | Automated safety check: Pass | GPL-3.0 | |
| Dependency Watchtelegramdesktop/tdesktop | 33k | — | ~2.2k | Automated safety check: Pass | GPL-3.0 | |
| Continuetelegramdesktop/tdesktop | 33k | 2 repos | ~9.4k | Automated safety check: Pass | GPL-3.0 | |
| Process InboxTDesktop-x64/tdesktop | 3k | 1 repos | ~4.3k | Automated safety check: Pass | GPL-3.0 | |
| Process Inboxtelegramdesktop/tdesktop | 33k | — | ~5.4k | Automated safety check: Pass | GPL-3.0 |
telegramdesktop/tdesktop
Resolve, start or resume, implement, review, test, and publish exactly one existing ai-tdesktop task by short slug or full dated id, including rare blocked retries and split-required results.
telegramdesktop/tdesktop
Audit Telegram Desktop dependencies on freshly fetched origin/dev for releases and security fixes, including upstream lag and backport candidates in patched forks.
telegramdesktop/tdesktop
Continue autonomous Telegram Desktop development from the shared ai-tdesktop repository.
TDesktop-x64/tdesktop
Process the local ignored ai-tdesktop inbox into durable, independently testable Telegram Desktop task records while task execution worktrees remain active.
telegramdesktop/tdesktop
Process the local ignored ai-tdesktop inbox into durable, independently testable Telegram Desktop task records while task execution worktrees remain active.
op7418/Claude-to-IM-skill
Bridge THIS Claude Code or Codex session to Telegram, Discord, Feishu/Lark, QQ, or WeChat so the user can chat with Claude from their phone.
ooiyeefei/ccc
Turns meeting recordings into notes with a chain of custody from audio to claim, auditing transcripts for gaps and low-confidence numbers and names.
ooiyeefei/ccc
Builds marketing and explainer videos in Remotion from rendered scenes, with one real product capture as proof, and cuts them for each platform's formats.
ooiyeefei/ccc
Records a sharp product demo video by driving the real app with a browser agent, from storyboard to Xvfb capture and a narration script synced to the frames.
ooiyeefei/ccc
Generates architecture diagrams as .excalidraw files by analyzing a codebase, with optional PNG or SVG export through Playwright.
ooiyeefei/ccc
Sets up GA4 on a website and wires one real conversion event end to end, verified in DebugView before any money goes into ads.
ooiyeefei/ccc
Builds or rewrites SaaS landing pages by researching the real product, positioning it against alternatives and writing buyer-focused copy, then implementing it in the codebase.
Works with
Universal challenge tracker with flexible cadence, intelligent insights, and cross-challenge learning detection. Streak is an agent skill from ooiyeefei/ccc. Universal challenge tracker with flexible cadence, intelligent insights, and cross-challenge learning detection.
Streak fits situations like: user wants to track any personal challenge - learning.
Run `npx skills add ooiyeefei/ccc --skill streak -a claude-code`. Or copy the skill folder (skills/streak in ooiyeefei/ccc) into .claude/skills/streak in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ooiyeefei/ccc --skill streak -a codex`. Or copy the skill folder (skills/streak in ooiyeefei/ccc) into .agents/skills/streak in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ooiyeefei/ccc --skill streak -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/streak, .gemini/skills/streak, .github/skills/streak and .opencode/skills/streak in your project.
Going by SKILL.md and its folder, Streak needs Python for the scripts in its folder, the command-line tools its instructions call (docker-compose, python and docker) and credentials named TELEGRAM_BOT_TOKEN. Our summary lists: Python 3; Docker; A credential in TELEGRAM_BOT_TOKEN.
SKILL.md names 2 domains. As links in the text: t.me and docker.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file; runs commands with sudo), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Streak is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 8.8k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Streak: Perform Task (telegramdesktop/tdesktop, 33k stars), Dependency Watch (telegramdesktop/tdesktop, 33k stars), Continue (telegramdesktop/tdesktop, 33k stars) and Process Inbox (TDesktop-x64/tdesktop, 3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ooiyeefei (a GitHub user) maintains it in ooiyeefei/ccc, which has 494 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on July 29, 2026.
Source: ooiyeefei/ccc on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.