Claude Code Plugin · Productivity Open source · MIT v0.7.1

Notemind

Notes in plain words, right inside Claude Code.

Type a note like "call Sara tomorrow at 3pm". Notemind works out the date, saves it locally, and shows what is overdue each time a session starts.

License
MIT
Requires
Python 3.9+
Language
Python
Network
None. Runs locally

What it does

Plain-words notes

Write "end of next month" or "the 3rd Friday of May". Claude resolves it to a real date; a note with no date is saved as none.

Session-start brief

A hook shows overdue, due-today and upcoming notes when a session starts, and hands the same text to Claude as context.

Local and private

One SQLite file at ~/.notescos/notes.db. No account, no network calls, standard library only.

You stay in control

Adding and closing notes can only be done by you, so Claude never saves or completes a note on its own.

See it in use

Five steps, from typing a note to closing it. The data below is a sample.

1 · Adding a note

Write the date however you like. Claude reads it and saves the exact time.

Claude Code · local session
/note-add send the invoice tomorrow at 3pm
⏺ Bash(notescos add --due 2026-10-11T15:00 …)

✅ Saved note #3

send the invoice

📅 Sun 11 Oct, 15:00 · task

Assumed “tomorrow” means Sun 11 Oct. Editing notes isn’t available yet, so run the command again with the date written out if that’s wrong.

dentist in the next 2 hours end of next month the 3rd Friday of May waiting on invoice from Sara (no date)

2 · The startup alert

Shown when a session starts, but only if something is overdue or due within 2 days.

Terminal / VS Code

~/project — claude

SessionStart hook

📌 Notes: 2 overdue

! #1 I have a meeting in next 2 hours (overdue 1d)

! #2 remind me tomorrow at 12am (overdue today)

/notemind:note-today for details

>

Claude app (Code tab)

Code · my-projectLocal
Let’s fix the login bug

📌 You have 2 overdue notes

  • #1 I have a meeting in next 2 hours · overdue 1d
  • #2 remind me tomorrow at 12am · overdue today

Run /note-today for details.

Sure, let’s take a look at the login flow. Which error are you seeing?

In the app, Claude opens its first reply with the alert.

3 · What needs attention

/note-today groups notes by urgency.

📌 Today · Sat 10 Oct

🔴 Overdue (2)
#NoteWas due
1I have a meeting in next 2 hoursoverdue 1d
2remind me tomorrow at 12amoverdue today
🟡 Due today (1)
4dentist in the next 2 hours12:30
🔵 Coming up (1)
3send the invoiceSun 11 Oct, 15:00
⚪ No date (1)
5waiting on invoice from Sara

4 · Browsing all notes

/note-list shows every open note. Add finished ones or filter by project or type.

🗒️ Notes · 5 open

#NoteDueStatus
1 I have a meeting in next 2 hours Fri 9 Oct, 05:53 🔴 overdue 1d
2 remind me tomorrow at 12am Sat 10 Oct, 00:00 🔴 overdue today
4 dentist in the next 2 hours Sat 10 Oct, 12:30 🟡 today
3 send the invoice Sun 11 Oct, 15:00 🔵 in 1d
5 waiting on invoice from Sara — ⚪ no date

5 · Marking done

/note-done 1
✅ Done: #1 I have a meeting in next 2 hours

Sample data. All notes stay in ~/.notescos/notes.db on your computer.

Install

Two commands in a terminal, then restart your Claude Code session.

$ claude plugin marketplace add aliyanfaisal/notemind
$ claude plugin install notemind@notemind

Then try:

/notemind:note-add call Sara tomorrow at 3pm

Commands

/notemind:note-add Add a note in plain words. You only
/notemind:note-today Show what is overdue, due today and coming up.
/notemind:note-list List notes, including finished ones or filtered by project or type.
/notemind:note-done Mark a note as done. You only
/notemind:note-help Explain the commands and how to use them.

Commands marked "You only" cannot be triggered by Claude. The others can also be used by Claude when you ask something like "what is due?".

How it works

  1. Date interpretation

    The note-add skill asks Claude to work out the due date from your sentence. The current date and time go into the prompt, and the result is saved as YYYY-MM-DD or YYYY-MM-DDTHH:MM. A rule-based parser lives in core/notescos/parse.py.

  2. Storage

    SQLite with versioned, append-only migrations (store.py). The database is not removed when you uninstall the plugin.

  3. The brief

    brief.py groups notes into overdue, due today, upcoming and no date. hooks.py runs it from one SessionStart hook.

  4. Quiet by design

    The hook stays silent when nothing is overdue, due today or due within 2 days, on compact events, and for notes set to silent. Errors are logged and swallowed so it can never break a session. A run takes about 85 ms.

  5. Least privilege

    Each skill is limited to running the bundled tool, and the two that change data are user-invocable only.

What's in the repository

.claude-plugin/
plugin.json and marketplace.json: the plugin manifest and marketplace.
skills/
note-add, note-today, note-list, note-done and note-help.
core/notescos/
About 900 lines: store.py, brief.py, hooks.py, cli.py and parse.py.
scripts/notescos
A small launcher for the CLI (add, list, today, done, hook).
release.sh
Validates the plugin and builds dist/notemind-v<version>.zip.

Data model

Each note is one row in SQLite with these fields.

Text and status
text, type and status. Types: task, followup, waiting_on, money_owed, money_due, decision, idea, reference. Status: open, done or snoozed.
Timing
due_at, remind_at and snoozed_until.
Importance
priority (0–3) and alert_level (normal, urgent or silent).
Context
person, amount, currency, project, branch and tags.
Origin
source, source_ref and confirmed, plus created, updated and done timestamps.

Where it's headed

The schema and CLI already carry fields that the commands don't fully use yet. This is the direction they point to.

  • Editing notes in place (today you add a corrected note and mark the old one done)
  • Money tracking with amount and currency
  • Snoozing and reminders
  • Priority and urgent or silent alert levels that shape the banner
  • Filtering and grouping by person, project, git branch and tags
  • Notes captured from sessions and other tools, reviewed before they count
  • Richer filtering by type and project, and --json output for scripting

Built with

Python SQLite Claude Code plugin Claude skills Hooks

Use it, read it, improve it

Issues and pull requests are welcome on GitHub.

aliyanfaisal/notemind