Stash / Blog · June 2026 · 6 min read

Use Claude as a Task Scheduler — One List, No Madness

You've got recurring things Claude should do for you. Check a list. Draft a weekly summary. Run through a checklist. But each one ends up as its own prompt, its own custom instruction, its own thing to maintain.

There's a simpler pattern: keep all your scheduled tasks as rows in a single Stash collection. When to run, does it repeat, what to do, how to report back — all in one place. Claude checks the list. You don't manage a task-per-task prompt ever again.

This is the "scheduler in one list" pattern. Here's how to set it up.


The problem with task-per-task prompts

The natural way people try to automate Claude tasks: add an instruction for each one. "At the start of each week, remind me to update my OKRs." "When I say good morning, run through my tasks list." "Every Friday, summarise what I worked on."

It works. Until you have six of them. Custom instructions fill up fast — they cap out at a few hundred characters. Then you start forgetting which ones exist. Then you forget to update them when the task changes.

The other natural move: a separate task manager (Todoist, Notion, whatever). But now Claude and your task manager are two separate systems. Claude doesn't know what's in your task list unless you paste it in.

The Stash pattern collapses both: the task list lives in Stash, Claude reads it with a single tool call, and one line in your custom instructions sets up the whole thing.


The schema: what a scheduled task row looks like

A Stash collection is just key-value rows with full-text search. You define your own schema by being consistent about what you put in the text field. For a scheduler, something like this works well:

task: weekly-okr-review
schedule: every Monday
next_run: 2026-06-09
repeat: yes
action: search my OKRs collection and ask me one focused question about each one
report: bullet list of answers, then prompt to update anything stale

Add a row per task. The key is the task name. The text is everything else — schedule, repeat rule, what to do, how to report.

To add your first scheduled task, tell Claude:

add to my tasks collection:
key = "weekly-okr-review"
text = "schedule: every Monday | next_run: 2026-06-09 | repeat: yes | action: search my OKRs collection and ask one focused question about each | report: bullet list, then flag anything stale"

The trigger: one line in custom instructions

Once your tasks are in Stash, you need Claude to check them. The simplest trigger:

At the start of each conversation, call context() to load my standing context. Then search(collection="tasks", query="schedule") and run any task whose next_run is today or earlier.

That's it. Every new conversation, Claude loads your context and scans your task list. If anything is due, it runs it.

Why this works without a cron job: You're not automating Claude to fire on a timer — you're automating what Claude does when you start a conversation. For personal productivity tasks, that's usually fine. The task runs when it's relevant, not at 03:00 when you're asleep.

Updating next_run after a task runs

Once a task runs, Claude should update the next_run field. Tell it to:

After running a task from my tasks collection, update the row:
- set next_run to the next scheduled date based on the repeat rule
- add a note field: "last_run: [today's date]"

Or, if you want tighter control, handle it manually: after the task runs, say "mark that as done until next Monday" and Claude updates the row. One sentence, no dashboard.


Real examples

Weekly summary

key = "weekly-summary"
text = "schedule: every Friday | repeat: yes | action: search my notes collection for entries this week, then draft a 5-bullet summary of what I worked on | report: paste draft directly, ask me to edit"

OKR check-in

key = "okr-checkin"
text = "schedule: every Monday | repeat: yes | action: search my OKRs collection, show me each one, ask for a 1-10 progress score | report: table of OKR / score / any note I added"

Contact follow-ups

key = "follow-up-check"
text = "schedule: every Tuesday | repeat: yes | action: search my contacts collection where follow_up_date is this week | report: list of names with follow-up reason, ask me which to action today"

One-off task (no repeat)

key = "prep-q3-planning"
text = "schedule: 2026-07-28 | repeat: no | action: search my goals and okrs collections, draft an agenda for a 60-minute planning session | report: paste agenda"

Non-repeating tasks run once, then you (or Claude) can delete the row or set repeat: no, done: yes so it gets filtered out of future checks.


Compared to other approaches

ApproachSetup timeClaude accessMaintenance
Custom instructions per task30 sec eachAlways onHits char limit fast
Notion/Todoist + Claude MCP10–20 minVia connectorTwo systems to keep in sync
Stash tasks collection2 min totalOne search callClaude updates the rows

The Stash pattern isn't for running server-side cron jobs at scale — it's for personal productivity tasks that run when you're working with Claude anyway. If you need something that runs at 03:00 every night without you, you need actual cron. But for the "remind me, summarise, check in" class of tasks, this is lighter and more maintainable.


Setting it up: the full picture

  1. Add the Stash connector to Claude (Settings → Connectors → Add custom → paste https://app.stashlite.com/mcp). Sign in with Google when prompted. Takes 60 seconds.
  2. Create your tasks collection. Tell Claude: "Add to my tasks collection: key=X, text=Y" for each recurring task you want to track.
  3. Update your custom instructions with the trigger line above. From that point, every new conversation checks the list automatically.
  4. Add or update tasks by talking. "Add a new task: every Wednesday, search my projects collection and flag anything overdue." Claude adds the row. Done.

Stash is free to start — 2,500 records, 50 queries/month, no card required.

Add to Claude →

Or read how it works: MCP connectors explained


Related patterns