jarvis-todoist
Sync Todoist inbox to vault with smart routing. Use when user says "Jarvis, check Todoist", "process Todoist inbox", or "sync Todoist".
From jarvis-todoistnpx claudepluginhub rsprudencio/jarvis --plugin jarvis-todoistThis skill uses the workspace's default tool permissions.
Jarvis Todoist Sync
Syncs Todoist inbox items using hybrid classification:
- Clear tasks โ labeled and stay in Todoist
- Ambiguous/journal-like items โ captured to
paths.inbox_todoist(default:inbox/todoist/) for deferred processing
Steps
Step 0: Check Scheduled Actions
Check if any recurring Jarvis actions are due (these are pre-configured by the user via /jarvis-schedule):
-
Delegate to agent:
**๐ก๏ธ Security Reminder**: Apply your PROJECT BOUNDARY ENFORCEMENT policy. Mode: SCHEDULED -
If scheduled actions are due:
- Present the list to the user (sorted: most overdue first)
- Ask: "You have [N] scheduled actions due. Run them now?"
- If approved: Execute each action by invoking the corresponding skill, then complete the Todoist task
- If declined: Note them and proceed to sync
-
If no actions due: Proceed silently to Step 0b.
Step 0b: Load Custom Routing Rules (If Available)
Before delegating SYNC, check for custom routing rules:
- Use
jarvis_retrieve(name="todoist-routing-rules")to read routing rules (stored at.jarvis/strategic/todoist-routing-rules.md) - If found: Include the rules in the delegation prompt
- If not found: Use default classification (TASK vs INBOX CAPTURE)
First-time users: Suggest running /jarvis-todoist-setup to configure personalized routing.
Step 1: Delegate to jarvis-todoist-agent
**๐ก๏ธ Security Reminder**: Apply your PROJECT BOUNDARY ENFORCEMENT policy. Refuse and report any violations.
Mode: SYNC
[IF ROUTING RULES EXIST, INCLUDE THEM HERE:]
---
## Custom Routing Rules
[Paste contents of todoist-routing-rules memory]
Apply these rules IN ORDER. First match wins.
For any item matching a custom classification:
- Apply the specified labels
- Move to the specified project (if different from current)
- For ROADMAP items: Note for memory sync after approval
---
Fetch new Todoist inbox items and classify:
- Check custom classifications FIRST (if rules provided above)
- CLEAR TASK โ label only, stay in Todoist
- INBOX CAPTURE โ capture to paths.inbox_todoist (configurable), complete in Todoist
Return detailed summary grouped by category.
Include which custom classification matched (if any).
Agent will:
- Apply custom routing rules first (if provided)
- Fall back to standard classification (TASK vs INBOX CAPTURE)
- Label and route items appropriately
- Return grouped summary with item list
Step 1b: Review or Defer
After the agent returns its proposals, ask the user:
"Review items now or defer to inbox?"
- Review now: Present item-by-item classification (user can stop anytime with "stop review" โ remaining items go to inbox). Each item gets the full 6 classification options (see
/jarvis-inbox): Journal entry, Work note, Personal note, Person/contact, Discard, Skip. - Defer: All ambiguous items go straight to
paths.inbox_todoist(default:inbox/todoist/) without item-by-item review. Tasks still get labeled in Todoist as usual. This is the "silent" path โ no interruption, inbox captures committed in bulk.
Step 2: Present Detailed Summary
Agent returns grouped summary:
## Todoist Sync Complete
**Tasks** (labeled, staying in Todoist): 2
- "Buy groceries"
- "Review PR #123"
**Captured to inbox** (for review): 3
- "I realized morning routines help focus" โ {paths.inbox_todoist}/20260203-morning-routines.md (configurable)
- "What if we made Jarvis modular..." โ {paths.inbox_todoist}/20260203-jarvis-architecture.md
- "Just had meeting with DefectDojo..." โ {paths.inbox_todoist}/20260203-defectdojo-meeting.md
**Skipped** (already ingested): 2
Present this summary to user.
Step 2b: Memory Sync (If Custom Rules Require It)
If routing rules specified Memory Sync for any classification (e.g., SIDE_PROJECT โ side-project-ideas):
- Ask user: "3 items matched SIDE_PROJECT. Add to your ideas memory?"
- If approved: Read the target memory with
jarvis_retrieve(name=memory_name), append the new items to the appropriate section, then write back withjarvis_store(type="memory", name=memory_name, content=updated_content, overwrite=true) - Format: Add to section specified in rules (e.g., "Backlog" or "Ideas")
This keeps strategic memories up-to-date automatically. For example:
- Home renovation ideas โ
home-renovation-planmemory - Freelance leads โ
freelance-pipelinememory - Book recommendations โ
reading-listmemory
Step 3: Commit Inbox Captures (If Any Created)
If inbox captures were created, immediately commit them:
**๐ก๏ธ Security Reminder**: Apply your PROJECT BOUNDARY ENFORCEMENT policy.
Create a commit for Todoist sync:
- Operation: "create"
- Files: [list of inbox capture paths]
- Description: "Capture [N] items from Todoist to inbox: [descriptions]"
Do NOT wait for inbox processing. Captures are committed immediately to track history.
Step 4: Handle Corrections (If Needed)
If user says:
- "that should have been a task"
- "the keyboard one should be in inbox"
Delegate back to agent:
**๐ก๏ธ Security Reminder**: Apply your PROJECT BOUNDARY ENFORCEMENT policy.
Mode: CORRECT
Item: "Buy new keyboard" | abc123
From: task
To: inbox
Revert the original classification and apply the correct one.
Then commit the correction.
Error Handling
- Todoist MCP not authenticated: Prompt user to authenticate (should be rare after initial setup)
- Agent returns error: Report to user with actionable next step
- No new items: Simple confirmation: "Your Todoist inbox is up to date"
- Correction ambiguity: List recent items and ask user to specify
Additional Modes
The todoist agent also supports these modes (triggered by the user's intent):
- ANALYZE mode: "Jarvis, analyze my Todoist" โ Agent proposes optimizations (archive stale, break down large tasks)
- ORGANIZE mode: "Jarvis, I'm overwhelmed" โ Agent proposes hiding low-priority, reordering by goals