Goal
Refresh obsidian/Timatron/GTD/_DAILY.md for today (local date) by pulling:
- •Asana tasks assigned to me that are overdue or due today
- •TODOs/topics referenced in the last 14 days of
obsidian/Timatron/daily/notes
File locations
- •Active file:
obsidian/Timatron/GTD/_DAILY.md— contains today's section plus persistent sections (Goals, Scratchpad, etc.) - •Archive file:
obsidian/Timatron/GTD/_DAILY_archive.md— stores all previous daily sections - •Run log:
obsidian/Timatron/GTD/DAILY_TASK_RUN_LOG.md— agent memory across sessions
Step 1 — Read run log for context
Before starting, read DAILY_TASK_RUN_LOG.md to retrieve:
- •Task-specific notes from prior conversations (e.g., "user said to defer X until March")
- •Classification decisions confirmed by user (e.g., "insurance tasks → Personal")
- •Pending #CREATE/#POSTPONE actions that were proposed but not yet confirmed
- •Any other context that affects today's run
Step 2 — Archive previous daily sections (preserve other sections)
Before generating today's content:
- •Read
_DAILY.mdand identify:- •Daily sections: Headers matching
## YYYY-MM-DDpattern (with or without day abbreviation, including[OLD]variants) - •Persistent sections: Any other
##headers (e.g.,## Goals,## Scratchpad) and content before the first daily section
- •Daily sections: Headers matching
- •Prepend only the daily sections to
_DAILY_archive.md(newest at top) - •Keep persistent sections and any content before the first daily section in
_DAILY.md
This means ## Goals, ## Scratchpad, or freeform notes at the top are preserved across runs.
Step 3 — Get Asana tasks (assigned to me; any project; overdue or due today)
Hard requirement: Asana MCP must be available for this command to work.
- •If the Asana MCP server/tools are not available, throw an error and fail the task immediately (do not partially update
_DAILY.md).
Use the Asana MCP tools (server name: user-asana):
- •Call
asana_get_userwithuser_id="me"to confirm identity. - •Call
asana_list_workspacesand pick the correct workspace. - •Fetch tasks assigned to me that are incomplete only (never include completed tasks):
- •Due today:
asana_search_taskswithassignee_any="me",completed=false,due_on=<today YYYY-MM-DD> - •Overdue:
asana_search_taskswithassignee_any="me",completed=false,due_on_before=<today YYYY-MM-DD>
- •Due today:
- •Always request
opt_fields:name,permalink_url,due_on,projects.name,resource_subtype - •Deduplicate by task GID (some tasks appear in multiple projects).
Step 4 — Review last 14 days of daily notes for TODOs/topics
Scan obsidian/Timatron/daily/ for daily notes within the last 14 days (inclusive).
- •Use filenames (e.g.
YYYY-MM-DD.md) as the date source. - •Read each note and extract explicit and implicit TODOs from the text, plus any important topics to consider.
- •checkbox TODO lines (
- [ ] ...) - •explicit "TODO:" / "TODOs" / "Next:" / "Action:" blocks
- •recurring "Topics" sections (capture topic bullets)
- •checkbox TODO lines (
- •For any extracted item, keep a source link back to the daily note using
([[daily/YYYY-MM-DD.md]])format.
Step 5 — Scan archive for completed items (deduplication)
Read _DAILY_archive.md and scan for checked-off items:
- •
- [x] ...lines indicate completed tasks/topics - •Use these to omit the same/similar items from today's fresh list
- •If unsure whether an item matches a completed one, include it
Step 6 — Process #CREATE and #POSTPONE markers
Scan the current _DAILY.md (before clearing daily sections) for tasks with markers:
#POSTPONE markers
Format: #POSTPONE to DD Mon or // #POSTPONE to DD Mon
For tasks with existing Asana links + #POSTPONE:
- •Parse the new due date from the marker
- •Check current due date in Asana
- •Add to proposed changes list — do NOT execute yet
#CREATE markers
Formats:
- •
#CREATE Project > Section, due DD Mon— create in specified project/section with due date - •
#CREATE Project > Section— create in specified project/section (will prompt for due date) - •
#CREATE as subtask— create as subtask of the parent task above
For each #CREATE:
- •Search Asana to check if a task with the same name already exists
- •If found: treat as existing Asana task, plan to add link and remove marker
- •If not found: add to proposed creations list
- •Validate project and section names exist in Asana
- •If close match found (typo): note the correction
- •If not found: note that project/section needs to be created
- •If no due date specified: note that user confirmation of due date is required
Propose all Asana changes
After scanning, present a single confirmation prompt listing:
## Proposed Asana Changes ### Tasks to create: - [ ] "Hang basement hallway mirror" → Favourites > Twin Ponds Projects, due: [NEEDS DATE] - [ ] "Claim Oxford Health Insurance payment" → Favourites > Finance, due: 2026-02-05 ### Due dates to update: - [ ] "Refresh insurance claims/EOBs" — change due from 2026-01-12 → 2026-02-05 ### Notes: - Section "Finances" not found; did you mean "Finance"? - Task "Activate free dash pass" already exists in Asana (will link instead of create) Proceed with these changes? (y/n, or specify modifications)
Wait for explicit user confirmation before making any Asana API calls.
After confirmation:
- •Execute the approved changes via Asana API
- •Remove processed markers from tasks
- •Add Asana links to newly created tasks
Step 7 — Deduplicate tasks
Before writing the daily section:
- •Identify obviously identical tasks (same text, same Asana GID)
- •Dedupe these automatically
- •For tasks that might be duplicates but have different markers/dates/details, ask the user which to keep
Step 8 — Classify tasks into Personal / Work / Misc
Classify each task into one of three categories:
Work
- •Technical, business, product, engineering tasks
- •Arda-related tasks
- •Customer/partner tasks
- •Anything explicitly work-related
Personal
- •TimTracker (this is a personal project, not work)
- •Home maintenance, family, health, finance
- •Relational tasks (calls, scheduling with friends/family)
- •Personal errands
Misc
- •Tasks that don't clearly fit Personal or Work
- •Productivity/tooling tasks that span both
- •When uncertain, default to Misc
Use context from:
- •Task content and keywords
- •Project names (e.g., "Favourites" → Personal, work project names → Work)
- •Run log notes about prior classifications
Step 9 — Write today's section to _DAILY.md
Append today's section after the preserved persistent sections:
Header format
## YYYY-MM-DD Day
Example: ## 2026-02-05 Wed
Always include the three-letter day abbreviation (Mon, Tue, Wed, Thu, Fri, Sat, Sun).
Section structure
## 2026-02-05 Wed ### Personal #### Asana ##### Favourites (overdue) - [ ] Task name [Asana](url) due YYYY-MM-DD ##### Favourites - [ ] Task name [Asana](url) due YYYY-MM-DD ##### No project - [ ] Task name [Asana](url) due YYYY-MM-DD #### Notes - [ ] Task from daily notes ([[daily/2026-01-22.md]]) ### Work #### Asana ##### ProjectName - [ ] Task name [Asana](url) due YYYY-MM-DD #### Notes - [ ] Task from daily notes ([[daily/2026-01-22.md]]) ### Misc - [ ] Task that doesn't fit elsewhere ([[daily/2026-01-22.md]]) ### Topics - [ ] Topic to consider ([[daily/2026-01-22.md]])
Sort order
Within each category (Personal/Work/Misc):
- •Asana tasks first, grouped by project
- •Overdue tasks before due-today tasks (oldest → newest within overdue)
- •Notes-derived tasks after Asana tasks
Task format
- •
- [ ] <taskSentence> [Asana](<permalink_url>) due YYYY-MM-DDfor Asana tasks - •
- [ ] <taskSentence> ([[daily/YYYY-MM-DD.md]])for notes-derived tasks - •Keep task text short and imperative
Step 10 — Update run log
Append an entry to DAILY_TASK_RUN_LOG.md:
## YYYY-MM-DD HH:MM ### Summary - Asana tasks: X overdue, Y due today - Notes items: Z extracted from N daily notes - Created in Asana: [list or "none"] - Updated in Asana: [list or "none"] ### Classifications confirmed - [any new classification decisions user confirmed] ### Task-specific notes - [any notes user provided about specific tasks] ### Pending items - [any #CREATE/#POSTPONE that were proposed but not confirmed] ### Issues encountered - [any errors, ambiguities, or items needing follow-up]
Keep entries concise. The purpose is to provide context for future runs, not exhaustive logging.
Summary
After running this command:
- •
_DAILY.mdcontains persistent sections (Goals, Scratchpad, etc.) plus exactly one daily section for today - •Daily section is organized into Personal / Work / Misc categories
- •All daily sections use
## YYYY-MM-DD Dayformat (e.g.,## 2026-02-05 Wed) - •
_DAILY_archive.mdcontains all prior daily sections (prepended, newest first) - •Any #CREATE/#POSTPONE markers have been processed (with user confirmation) and removed
- •Completed items in the archive are used for deduplication, not repeated
- •Run log updated with session context for future runs