{"id":50626927,"url":"https://github.com/driversti/claude-cuckoo","last_synced_at":"2026-06-06T16:01:47.926Z","repository":{"id":362307683,"uuid":"1258343522","full_name":"driversti/claude-cuckoo","owner":"driversti","description":"🐦 A durable personal reminder for Claude Code — date/time reminders that resurface at your next session on/after the due date.","archived":false,"fork":false,"pushed_at":"2026-06-03T13:59:25.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-03T15:23:18.128Z","etag":null,"topics":["claude-code","claude-code-plugin","plugin"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/driversti.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-03T13:45:15.000Z","updated_at":"2026-06-03T14:21:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/driversti/claude-cuckoo","commit_stats":null,"previous_names":["driversti/claude-cuckoo"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/driversti/claude-cuckoo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/driversti%2Fclaude-cuckoo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/driversti%2Fclaude-cuckoo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/driversti%2Fclaude-cuckoo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/driversti%2Fclaude-cuckoo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/driversti","download_url":"https://codeload.github.com/driversti/claude-cuckoo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/driversti%2Fclaude-cuckoo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33988667,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","claude-code-plugin","plugin"],"created_at":"2026-06-06T16:01:47.053Z","updated_at":"2026-06-06T16:01:47.921Z","avatar_url":"https://github.com/driversti.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cuckoo 🐦\n\n🇬🇧 English · [🇺🇦 Українська](README.uk.md)\n\n**A durable personal calendar for Claude Code.** Set a reminder for a future date (optionally a\ntime), and Cuckoo brings it back the next time you start a Claude Code session on or after that date\n— like a cuckoo clock popping out at the right moment. It's a *tickler file* for Claude Code.\n\nReminders live in plain files, so they survive restarts. When nothing is due, Cuckoo costs you\nessentially **zero context tokens**.\n\n## How it works\n\n- A **SessionStart hook** runs a tiny command (`cuckoo check`) at the start of every session. It\n  reads a small index and prints any due reminders — or stays completely silent.\n- A **`/cuckoo:schedule`** command lets you add, list, complete, and reschedule reminders.\n- Reminders are stored in two tiers:\n  - 🌍 **Global** — `~/.claude/cuckoo/` — personal, works in any project.\n  - 📂 **Project** — `\u003cyour-repo\u003e/.cuckoo/` — tied to a specific repo (git-ignored by default).\n\n\u003e **Session-triggered, not an alarm clock.** Cuckoo can't push to your phone, and it is not a terminal\n\u003e popup. At session start the hook hands any due reminders to Claude, which announces them in its\n\u003e **first reply once you send a message** — so a brand-new session you just stare at (without typing\n\u003e anything) shows nothing until you say something. A time of day is the *earliest* surfacing moment,\n\u003e not a real-time alert. (Calendar/push integration is on the roadmap.)\n\n## Install\n\n```\n/plugin marketplace add driversti/claude-cuckoo\n/plugin install cuckoo@cuckoo\n```\n\nThen restart Claude Code (or run `/reload-plugins`).\n\n## Usage\n\n```\n/cuckoo:schedule add tomorrow \"email the tax form\"\n/cuckoo:schedule add 2026-07-01 09:00 \"quarterly review\"\n/cuckoo:schedule add next friday \"call the dentist\" --global\n/cuckoo:schedule list\n/cuckoo:schedule done call-the-dentist\n/cuckoo:schedule reschedule quarterly-review \"next monday 8am\"\n```\n\n- Dates resolve in your local timezone; natural language (\"tomorrow\", \"next friday 9am\", \"in 3\n  days\") works.\n- Default tier is **global**. Inside a git repo, if you don't pass a flag Cuckoo asks whether to\n  scope the reminder to the repo (**project**) or keep it **global** — pass `--global`/`--project`\n  to skip the prompt.\n\nWhen a reminder is due, your next session opens with a note like:\n\n```\n⏰ CUCKOO — scheduled task(s) due\n  • [global] call-the-dentist (due 2026-06-20) -\u003e ~/.claude/cuckoo/call-the-dentist.md\n```\n\nClaude reads the task, brings it up, offers to act on it, then asks whether to mark it done or\nreschedule.\n\n## Why near-zero token cost\n\nThe SessionStart hook runs in your shell, not in the model. It reads only a tiny index\n(`date · status · slug`) and prints nothing unless something is due. The full text of a reminder\nlives in its own file and is read only on the day it fires. An idle session pays only for the\none-line command description.\n\n## Data \u0026 privacy\n\n- Everything is local files. No network, no telemetry.\n- Project reminders live in `\u003crepo\u003e/.cuckoo/`, which ships with a `.gitignore` (`*`) so your personal\n  reminders are never committed.\n\n## Development\n\n```bash\n# Load the plugin locally without installing:\nclaude --plugin-dir /path/to/claude-cuckoo\n# After edits:\n/reload-plugins\n# Run the test suite (zero dependencies):\nbash tests/run.sh\n```\n\nThe data layout and CLI:\n\n```\n~/.claude/cuckoo/            # global tier\n├── _index.md                #   DUE  STATUS  SLUG   (tiny; the hook reads only this)\n└── \u003cslug\u003e.md                #   the reminder body (read only when due)\n\u003crepo\u003e/.cuckoo/              # project tier (same layout, + .gitignore '*')\n\nbin/cuckoo  check | list | dir | add | remove | done | reschedule\n```\n\n## Roadmap\n\n- **Google Calendar** two-way sync — real device push notifications.\n- **In-session precision timer** — fire at the exact minute while a session is open.\n- **Recurring** reminders, **snooze**.\n\n## License\n\nMIT © 2026 Yurii Chekhotskyi\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdriversti%2Fclaude-cuckoo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdriversti%2Fclaude-cuckoo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdriversti%2Fclaude-cuckoo/lists"}