Help us improve
Share bugs, ideas, or general feedback.
From ai-brain-starter
Extracts action items from non-meeting notes (class notes, book notes, podcast transcripts) and routes them to the correct to-do file with wikilinks and owner tags.
npx claudepluginhub adelaidasofia/ai-brain-starterHow this skill is triggered — by the user, by Claude, or both
Slash command
/ai-brain-starter:note-todos [filename, path, or keyword — omit to scan recent unprocessed notes][filename, path, or keyword — omit to scan recent unprocessed notes]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Action items hide in notes you don't think of as task lists. A class note, a book chapter, a podcast transcript, a panel writeup — each one accumulates "I should do X" between the substantive content. Without a routing pass, those items stay invisible until weeks later when you wonder why nothing got done.
Extracts action items from a meeting note and adds them to a to-do file, separating your tasks from others'. Invoke via /meeting-todos.
Processes audio recordings, transcripts, podcasts, lectures into structured Obsidian notes with action items, decisions, glossary via intake interview. Multilingual support.
Processes raw meeting transcripts into structured Obsidian notes with YAML frontmatter, action items, summary, and formatted transcript. Useful for Granola transcripts or direct pastes.
Share bugs, ideas, or general feedback.
Action items hide in notes you don't think of as task lists. A class note, a book chapter, a podcast transcript, a panel writeup — each one accumulates "I should do X" between the substantive content. Without a routing pass, those items stay invisible until weeks later when you wonder why nothing got done.
This skill does the routing pass. It reads a note in full, extracts every actionable item, decides which scope each task belongs to (personal / team / consulting / etc), wraps entities in wikilinks, tags owners inline, writes to the correct canonical to-do file, and annotates the source note so future reads know the items have been ported.
It is the non-meeting counterpart to /meeting-todos, which carries the 8-step meeting workflow cascade (transcript fetch, speaker attribution, decision capture, etc) on top of the same extraction logic. If the input is a meeting, route to /meeting-todos instead.
/note-todos — optionally followed by a path, filename, or keyword:
/note-todos → finds candidate notes in recent activity (modified within 14 days, contain 3+ open - [ ] items, no "filed-on" annotation at the section head)/note-todos {keyword} → globs for notes matching keyword in filename or first 200 chars of body/note-todos {full-path-to-note.md} → opens the exact fileTell the user which file you found before proceeding.
Always read the entire note. Action items can appear:
Don't skim. Skipping prose-buried items is the failure mode this skill exists to prevent.
A vault commonly has multiple to-do files for different areas of life or work. The skill needs to route each task to the right file. Determine scope from a combination of: (a) the source note's path, (b) entities mentioned in the task, (c) verbs in the task ("ship the deck for X" vs "memorize 10 facts").
Configure your scopes in your vault's CLAUDE.md or in a sibling note-todos.config.md file with this shape:
scopes:
- name: personal
to_do_file: "To-dos/Get to-do.md"
detection_signals:
paths: ["Notes/", "Books/", "Journals/"]
keywords: [] # default scope when no team/consulting signals fire
inline_fields_template: "[impact:: 1-5] [urgency:: 1-5] [effort:: S|M|L] [commit:: Y|N]"
- name: team
to_do_file: "Team/To-dos/Team To-dos.md"
detection_signals:
paths: ["Team/"]
keywords: ["{client name}", "{product name}", "{cofounder names}"]
inline_fields_template: "[owner:: NAME] [area:: AREA] [priority:: 1|2|3]"
- name: consulting
to_do_file: "Consulting/To-dos/Get to-do.md"
detection_signals:
paths: ["Consulting/"]
keywords: ["{your consulting brand}", "{client list}"]
inline_fields_template: "[impact:: 1-5] [urgency:: 1-5] [effort:: S|M|L] [commit:: Y|N]"
If your vault only has one scope, the config simplifies to one entry and Step 2 is a no-op.
If a single note crosses scopes (e.g. a class note has both team-marketing tasks and personal-life tasks), split routing per-task. If unclear, ask the user once: "This note has tasks for {scope A} and {scope B}. Route accordingly?"
For each - [ ] item or imperative line:
Cleanup. Strip stale arrow-notation (-> owner: NAME), parenthetical class meta, trailing fluff like "{teacher} expects this for retention." Keep the verb-first action core.
Identify owner. Two cases:
[owner:: TEAMMATE_NAME]. Do NOT write to a per-person file directly — Dataview views render per-person lists from the canonical file.Wikilink entities. Wrap people, projects, companies, frameworks, and concepts in [[wikilinks]]. Check existing notes for the canonical wikilink form before guessing — if "[[Jane Smith]]" exists in the vault, don't write "[[Jane]]" or "[[J. Smith]]." Don't auto-wikilink generic verbs (audit, email, review).
Add inline fields per scope. Use the inline_fields_template from the scope config. Common templates:
[impact:: 1-5] [urgency:: 1-5] [effort:: S|M|L] [commit:: Y|N] [score:: COMPUTED] [priority:: P1|P2|P3][owner:: NAME] [area:: AREA] [priority:: 1|2|3]Self-contained-task rule. Every task MUST be readable out of session context. If a task fails the self-contained test, enrich from the source note before filing. Apply the 4-anchor minimum: at least one of (a) bracketed context prefix like [Class Day 5], (b) wikilink, (c) URL, (d) file path. Tasks like "Verify PDF" or "Review the doc" without anchors FAIL — add [{source-note-name}] or similar before writing.
Show a routing preview grouped by destination scope:
Routing preview from {Note Name}.md:
→ Personal (To-dos/Get to-do.md):
• [Class Day 5] Memorize 60-second scripts for 3 conviction lines [impact:: 4] [urgency:: 3] [effort:: M] [commit:: Y]
→ Team (Team/To-dos/Team To-dos.md):
• [[Pitch Deck v3]] Re-frame the opening to lead with reward, not pain [owner:: SELF] [area:: marketing] [priority:: 2]
3 tasks total. Proceed?
Wait for confirmation before writing.
Append each task to its destination file under an appropriate section header:
## From {Note Name} — YYYY-MM-DD matching the file's existing section style.For team scope: write to the canonical team file with the right [owner::]. Do not write to per-person files; let Dataview views render them.
At the head of the action-items section in the source note, prepend:
> Filed to {to-do-file} on YYYY-MM-DD by /note-todos. {N} tasks routed ({A} personal, {B} team, ...).
This signals to future readers that the items are tracked and avoids the "list lives here, no one ever sees it" failure mode. The annotation is also a guard against this skill re-routing the same items twice — Step 0's candidate scan skips notes that already have a "Filed to" annotation.
After writing, optionally invoke a vault-wide orphan-task-list scanner if your vault has one configured. The guard's job is to confirm the source note no longer triggers as a violator (because action items have been ported AND the section is annotated). If the source note is still flagged, surface the residual unowned items for review.
/meeting-todos continues to fire on /meeting-todos and runs the meeting workflow cascade (transcript fetch, speaker attribution, decision capture, doc generation), which is more than just to-do extraction. /note-todos does the to-do extraction subset for non-meeting notes.
If a user runs /note-todos on a meeting note: warn that /meeting-todos is the better skill for meetings, but proceed if confirmed.
Action items in source notes that aren't ported to canonical to-do files are invisible work. Notes accumulate, the action items bloat, and weeks later you find a list that nobody surfaced. The orphan-action-items pattern is the failure mode this skill closes for non-meeting notes.
Generalizing the meeting-todos extraction logic to handle any note type lets the same routing + wikilink + owner-tagging pattern flow through the whole reading pipeline, not just meetings.