Filters and prioritizes Notion tasks by due date for daily briefing inclusion. Activates when the user wants to see tasks due today, overdue items, daily task lists, or asks 'what do I need to do today?' Auto-discovers task databases, groups by project, flags overdue items, and handles multiple databases gracefully.
From founder-osnpx claudepluginhub thecloudtips/founder-os --plugin founder-osThis skill uses the workspace's default tool permissions.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Filter Notion tasks by due date, order by priority, group by project or database source, and flag overdue items. Produce a structured task list suitable for inclusion in a daily briefing. Search across multiple task databases using dynamic discovery -- never hardcode database IDs. Aggregate results from all discovered databases into a single unified list. Report summary statistics alongside the task list: total due today, total overdue, total upcoming.
Locate task databases by searching Notion for databases matching common naming patterns. Try each pattern in order and collect all matches:
Use the Notion search API with filter.object: "database" for each pattern. Collect all unique database IDs. Deduplicate by ID when multiple search patterns return the same database.
When no task database is found after trying all patterns, report the source as "unavailable" and include zero tasks with a note: "No task database discovered in Notion -- verify database exists and integration has access."
For each discovered database, detect which properties are present. Map property names flexibly -- different databases use different naming conventions:
When a property is missing, skip the logic that depends on it. A database without a due date property contributes zero tasks to date-based filtering. A database without a priority property uses positional ordering only.
Apply date-based filters relative to today's date at processing time. Evaluate each task against three buckets in this order:
Include when ALL of the following hold:
Include when ALL of the following hold:
Include when ALL of the following hold:
Always exclude:
Assign a numeric sort weight to each task based on its priority property value. Lower weight means higher priority (sorts first).
Map priority values to sort weights using flexible pattern matching:
| Priority Value | Sort Weight | Label |
|---|---|---|
| P0, Critical, Urgent, Highest | 1 | Critical |
| P1, High, Important | 2 | High |
| P2, Medium, Normal, Default | 3 | Medium |
| P3, Low, Minor | 4 | Low |
| P4, Backlog, Someday, Lowest | 5 | Backlog |
| (no priority set) | 3 | Medium |
Match case-insensitively. When a priority value does not match any pattern above, assign sort weight 3 (Medium) as default.
Sort tasks using a multi-key sort. Apply keys in this order:
When no priority property exists in a database, omit key 2 and sort by date bucket, due date, then project name.
After sorting, organize tasks into display groups for the briefing output:
Group tasks by their project/category property value. Use the database name as fallback when no project property exists.
Flag every overdue task with overdue: true. Include the number of days overdue in the task metadata, calculated as: today's date minus the task's due date.
Within each project group, overdue tasks appear first (enforced by the composite sort order's date bucket key).
Produce structured output containing two sections: summary statistics and the grouped task list.
total_due_today: [count]
total_overdue: [count]
total_upcoming: [count]
total_tasks: [sum of above]
databases_searched: [count]
databases_with_results: [count]
For each task, include:
Group tasks under their project name. Within each project, list tasks in composite sort order.
When all three date buckets return zero tasks across all discovered databases, report a clear day. Set all summary counts to 0. Include a positive note: "No tasks due today, none overdue, and nothing upcoming in the next 2 days." Do not fabricate tasks or pull from other date ranges.
When every returned task falls in the overdue bucket (zero due today, zero upcoming), flag the output as attention needed. Prepend a warning to the summary: "All returned tasks are overdue -- no new tasks due today. Review and reschedule or complete overdue items." Continue producing the full grouped output as normal.
When dynamic discovery finds zero matching databases, set task source status to "unavailable." Return zero tasks with summary counts all at 0. Include a diagnostic note: "No task database discovered -- verify Notion databases exist with supported names (Tasks, To-Do, Action Items, Project Tasks) and that the Notion integration has access."
Exclude entirely from date-based filtering. Do not include in any bucket. Do not count in summary statistics. These tasks are invisible to the daily briefing -- they belong in backlog views, not date-driven curation.
When the same task appears in multiple databases (detected by identical title AND identical due date), keep the instance from the first-discovered database only. Deduplicate before grouping.
When a discovered database returns a permission error or API failure during query, skip that database. Decrement databases_with_results accordingly. Add a note to the output: "Database '[name]' was discovered but returned an access error -- results may be incomplete." Continue processing remaining databases.