Manage tasks by life role with an interactive panel docked inside NotePlan.
Role Focus is a NotePlan plugin for productivity systems organized around personal roles rather than projects or areas. It pulls every open task that belongs to a role — whether it lives in that role's folder or just mentions @rolename in a daily note — into a single focused panel for browsing, triaging, and acting on.
- Plugin ID:
marginalreader.RoleFocus - Version: 1.0.0
- Minimum NotePlan version: 3.3.2
- Repository: https://github.com/marginalreader/role-focus
Role focus enables you to focus on distinct parts of your life. You choose the folder in your sidebar to determine your roles, and you can focus on projects within the roles on the right. Dates and flags appear in line. Single click goes to the note where the task resides. Double click goes into inline edit mode.

Flagged view provides a list of all flagged tasks from the roles. Great if you need a quick hit list.

Missing roles lets you assign roles to the tasks that are outside of your folder structure, such as daily notes or other notes. Available roles are pulled from your folder structure.

- Auto-detected roles from the subfolders of your configured Roles folder. No hardcoded list — add a folder, it appears.
- Two task sources, unified: tasks inside the role's folder and any project or daily note containing an
@rolenamemention. Deduplicated. - Role pills with live task-count badges; collapsible to a single label to save space.
- Resizable project panel on the right (desktop) showing every note in the role's folder with task counts. Click to filter; ⌘-click to multi-select. Collapses to a dropdown on mobile.
- Live text filter, scoped to the current role.
- Date sort (none → ascending → descending) using explicit
>YYYY-MM-DDmarkup or the implicit date of the source daily note. - Flags-on-top sort toggle — flagged tasks float above the rest while date sort still applies within each group. Persists across sessions.
- Filters dropdown combining Hide Tags and Hide Future (with an inline day-threshold input).
- Overdue highlighting with a configurable color; includes tasks due today.
- Sub-content capture — paragraphs indented under a task are folded behind an expand arrow.
- Clickable links in sub-content for
http(s),noteplan://,omnifocus://, andthings://schemes.
- Cross-role hit-list of every task starting with
!across every role. - Excludes future-scheduled tasks, includes undated and past-due ones — so it always shows what's actionable today.
- Shows role and project for each task, not just the source note.
- One-click unflag — the ⚑ button removes the task from the list and from the source note's flagged state.
- Lazy-loaded and auto-invalidated when a task is flagged from another tab.
- Inbox of unassigned tasks — scans your daily/calendar notes for open tasks with no
@rolemention. - 30 Days / All Time lookback toggle.
- Assign a role inline from a dropdown of all detected roles. The mention is written back to the source note and the row fades out.
- Mark complete — sets the source paragraph to
doneand optionally appends a NotePlan-format@done(YYYY-MM-DD HH:MM AM/PM)timestamp. - Open note — single-click the task text to jump to the exact line in the source note.
- Inline edit — double-click the task text to edit; Enter saves, Escape reverts.
- Add tag — append a
#hashtagwithout leaving the panel. - Assign role — add an
@rolenamemention without leaving the panel. - Flag toggle — prepend/strip
!(NotePlan's standard priority marker). - Clear — strip selected
@/#/>tokens from the task text; what gets cleared is configurable.
- Lists every note in the current role's folder, including notes in nested subfolders (rendered as
Subfolder / Note). - Single Actions notes pinned to the top.
- Two-step location picker: section (Top / Bottom / any heading) → position (Top / Bottom of section, when a heading is chosen).
- Pre-selects the destination when exactly one project is selected in the project panel.
- Quit NotePlan.
- Clone or download this repository.
- Place the folder, named exactly
marginalreader.RoleFocus, into your NotePlan plugins directory:~/Library/Containers/co.noteplan.NotePlan3/Data/Library/Application Support/co.noteplan.NotePlan3/Plugins/ - Reopen NotePlan. The plugin will be discovered automatically.
NotePlan syncs installed plugins between devices via iCloud. Install on macOS first; the plugin will appear on your iOS / iPadOS devices on the next sync. Direct manual install on iOS is not supported.
Open the Command Bar (⌘J) and run:
/role focus— open the panel on the Role Focus tab./missing roles— open the panel on the Missing Roles inbox.
Both commands also accept aliases (rf, focus, triage, unassigned).
Create a top-level Roles folder (default: Roles) and add one subfolder per role. For example:
Roles/
01 Husband/
02 Father/
03 Engineer/
04 Reader/
The plugin strips leading ^\d+\s+ for display and @mention matching, so 01 Husband shows as Husband and matches @husband.
Notes inside each role folder contribute their open tasks. Outside the role folder, any task containing @husband (in any note, including daily notes) is also pulled in.
| Command | Aliases | Description |
|---|---|---|
role focus |
rf, focus |
Open the Role Focus panel on the Role Focus tab. |
missing roles |
triage, unassigned |
Open the Role Focus panel on the Missing Roles inbox. |
rf debug |
rfdebug |
Diagnostic: log paragraph structure of the first Roles note. |
roleHTMLMessage is an internal message router used by the panel's webview bridge and is not intended for direct use.
| Setting | Default | Description |
|---|---|---|
rolesFolder |
Roles |
Root folder containing your role subfolders. |
defaultLookbackDays |
30 |
How many days back to scan for unassigned tasks in the Missing Roles tab. Set to 0 for all-time. |
showSubContentByDefault |
false |
If enabled, indented sub-content under each task is expanded by default. |
clearRoles |
true |
The Clear button removes @role mentions from the task. |
clearTags |
false |
The Clear button removes #tags from the task. |
clearDates |
false |
The Clear button removes >date scheduling from the task. |
overdueColor |
#FF3B30 |
Hex color used to highlight overdue tasks. Default is NotePlan red. |
hideTags |
["waiting"] |
Tags to hide when the Hide Tags filter is active. Enter as comma-separated values without #. |
appendCompletionDate |
true |
Append a @done(date time) timestamp when marking a task complete, matching NotePlan's native behavior. |
hideFutureDays |
7 |
Threshold (in days) for the Hide Future filter. Tasks scheduled further out are hidden when the filter is active. |
- NotePlan 3.3.2 or later
- macOS 10.15.7+ / iOS 14+
- A Roles folder structure as described above
- Issues and feature requests: https://github.com/marginalreader/role-focus/issues
- Version history: see the GitHub releases page
MIT — see LICENSE.