claude/plugins/local/todoist-flow/skills/extract/SKILL.md
Find Todoist tasks that are really reference material (not actionable) and export them as structured markdown for Dropbox or other storage. Use when the user says 'extract references', 'find non-actionable tasks', 'clean up reference tasks', 'move to dropbox', 'todoist to dropbox', 'separate reference from tasks', or when /todoist dashboard flags many noun-only or URL tasks.
npx skillsauth add paulnsorensen/dotfiles extractInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Identify tasks that aren't really tasks — they're reference material, ideas, bookmarks, or notes masquerading as action items. Extract them into structured markdown the user can save to Dropbox (or wherever they store reference material).
Todoist is an action system. When it fills up with reference material ("look into X", bookmarked URLs, "idea: Y"), it dilutes the signal. Actionable tasks compete with passive notes for attention. Extracting reference material makes the task list honest — everything left is something to do.
Spawn todoist-fetch to retrieve all tasks in a fresh context window:
Agent(subagent_type: "todoist-fetch", prompt: "Fetch all tasks broadly (all projects, or user-specified scope). Include task IDs, titles, projects, priorities, due dates, creation dates, descriptions, labels, and any URLs in descriptions. Flag: tasks with no verb in title, URL-only tasks, tasks 90+ days old with no due date.")
Score each returned task for "reference-ness":
Detection patterns (a task matching 2+ patterns is a strong candidate):
| Pattern | Signal | Example |
|---------|--------|---------|
| No verb | Not actionable | Kubernetes best practices |
| URL-only | Bookmark | https://example.com/article |
| "look into", "check out", "explore" | Passive curiosity | Look into Rust async patterns |
| "remember", "note:", "idea:" | Note, not task | Remember: API rate limit is 100/min |
| "maybe", "someday", "consider" | Speculative | Maybe try Obsidian for notes |
| 90+ days old, no due date | Dormant | Any old undated task |
| Project is "Ideas" or "Someday" | Already filed as non-action | — |
Group by type and present:
## Reference Material Candidates
### Bookmarks (X tasks)
1. "https://example.com/rust-patterns" — in project "Learning", created 4 months ago
2. "Check out htmx docs" — in project "Ideas", created 2 months ago
### Notes & Ideas (X tasks)
3. "Idea: build a CLI for todoist cleanup" — in Inbox, created 3 months ago
4. "Remember: work VPN requires cert renewal every 90 days" — in "Work"
### Dormant (X tasks, 90+ days, no date)
5. "Research home solar panel options" — in "Home", created 6 months ago
Extract all of these? Or review one at a time? (A/R)
Use AskUserQuestion. If (R), walk through each and let the user keep or extract.
Group extracted tasks into a structured reference document:
# Extracted from Todoist — [date]
## Bookmarks
- [Rust async patterns](https://example.com/rust-patterns)
- Source project: Learning
- Originally created: 2025-10-15
- htmx docs — check out the getting started guide
- Source project: Ideas
- Originally created: 2026-02-01
## Ideas
- Build a CLI for todoist cleanup
- Context: [task description if any]
- Originally created: 2026-01-15
## Notes
- Work VPN requires cert renewal every 90 days
- Source project: Work
## To Research (someday)
- Home solar panel options
- Source project: Home
- Originally created: 2025-10-01
Write the markdown file to a temp location:
$TMPDIR/todoist-extract-[date].md
Tell the user where it is:
Saved to: $TMPDIR/todoist-extract-2026-04-09.md
Move this file to your preferred reference storage (Dropbox, Obsidian, etc.).
When you confirm it's saved, I'll remove these tasks from Todoist.
Only after the user confirms they've saved the file, remove extracted tasks from Todoist.
Use AskUserQuestion: "Have you saved the reference file? Ready to remove these X tasks from Todoist? (y/n)"
If yes, run through the write pipeline (distill → scribe → QA):
1. Validate reasoning — spawn todoist-distill:
Agent(subagent_type: "todoist-distill", prompt: "Validate deletion of these extracted reference tasks. User confirmed file is saved. Tasks: [task IDs and titles]")
2. Format commands — spawn todoist-scribe:
Agent(subagent_type: "todoist-scribe", prompt: "Format delete-object commands for these extracted tasks: [distill's validated plan]")
3. Verify and execute — spawn todoist-qa:
Agent(subagent_type: "todoist-qa", prompt: "Verify and execute: [scribe's formatted commands]. Original intent: delete extracted reference tasks after user confirmed save.")
## Extraction Complete
| Category | Count |
|----------|-------|
| Bookmarks | X |
| Ideas | X |
| Notes | X |
| To Research | X |
| **Total extracted** | **X** |
Saved to: [path]
Removed from Todoist: X tasks
If the user wants to evaluate whether a candidate is truly reference material vs. actionable:
Skill(skill="todoist-flow:research", args="Is '[task title]' something actionable or reference material? Context: [description]. Help decide if this belongs in a task list or a reference doc.")
tools
Reconstruct what a past coding-agent session was doing so you can resume it — goal, files touched, last verified state, and the next step — by querying the session logs. Use when the user says "what was I working on", "recover that session", "reconstruct where I left off", "resume my last session", "what did that session change", "rebuild context from logs", or invokes /work-recovery. Report-only — it never scores or judges. Do NOT use for usage scoring (that is /skill-improver, /tool-efficiency, /prompt-analytics) or one-off interactive log queries (that is /session-analytics).
development
Curate this repo's hallouminate wiki (.hallouminate/wiki/, the repo:dotfiles:wiki corpus) — add or update architecture pages, per-harness docs, and gotchas. Use when the user says "update the wiki", "document this in the wiki", "refresh the harness docs", "add a wiki page", "curate the wiki", "the wiki is stale", or invokes /wiki-curator. Also use at session end to write back a non-obvious decision or gotcha worth preserving. Grounds the existing wiki first, follows one-topic-per-file conventions, verifies every external doc URL before writing, and reindexes. Do NOT use for general code search (that is cheez-search) or for editing AGENTS.md command reference.
tools
Audit how a tool, command, or MCP server is actually used across coding-agent sessions and produce calibrated recommendations — tool-vs-task fit, error forensics, fix recommendations, permission friction, MCP health, and token economics. Use when the user says "tool efficiency", "am I using X efficiently", "audit tool usage", "why does X keep failing", "how do I fix this error", "what should I change", "permission friction", "is this MCP worth it", "tool error rate", "fix recommendations", or invokes /tool-efficiency. Do NOT use for auditing a skill or agent definition (that is /skill-improver) or for one-off interactive log queries (that is /session-analytics).
tools
Analyze how prompts and skill routing behave across coding-agent sessions and produce calibrated recommendations — prompt-pattern analysis, routing accuracy, and knowledge gaps. Use when the user says "analyze my prompts", "prompt patterns", "is routing working", "which skill should have fired", "knowledge gaps", "what do I keep asking", or invokes /prompt-analytics. Do NOT use for auditing a single skill/agent definition (that is /skill-improver), tool/MCP efficiency (that is /tool-efficiency), or one-off interactive log queries (that is /session-analytics).