Capture Triage
What This Does
Turns mobile captures into actionable tasks in your Ready queue. Everything captured has intent - this skill makes it explicit so task-clarity-scanner can decide what's important.
Who It's For
Ed - capturing quick thoughts in Drafts Pro throughout the day.
The Philosophy
Everything captured has intent. Route to Ready, let task-clarity-scanner decide what moves to Someday/Maybe.
No passive filing. Every capture becomes a decision point.
Paths
Inbox: /Users/eddale/Documents/COPYobsidian/MAGI/Zettelkasten/Inbox/
Processed: /Users/eddale/Documents/COPYobsidian/MAGI/Zettelkasten/Inbox/Processed/
Daily note: /Users/eddale/Documents/COPYobsidian/MAGI/Zettelkasten/YYYY-MM-DD.md
Projects: /Users/eddale/Documents/COPYobsidian/MAGI/Zettelkasten/PROJECT - *.md
Contacts: /Users/eddale/Documents/COPYobsidian/MAGI/Zettelkasten/CONTACT - *.md
Important: Naming Clarification
| Term | What It Means |
|------|---------------|
| Inbox folder | /Zettelkasten/Inbox/ - where Drafts Pro sends mobile notes |
| Captures section | ## Captures in daily note - links to docs created today |
| Ready destination | ## Ready section in daily note - where triaged tasks go |
Remember: This skill reads from the Inbox FOLDER and routes to the Ready SECTION. Tasks go to Ready section only - Captures section is for document links.
Instructions
Step 1: Check Inbox Folder (Root Only)
Important: Only check files directly in Inbox/, NOT subdirectories.
ls /Users/eddale/Documents/COPYobsidian/MAGI/Zettelkasten/Inbox/*.md 2>/dev/null
If no files found: Report "No captures waiting" and stop. If files found: Continue to Step 2.
Step 2: Load Context
Pull active project names from mission-context skill AND:
Glob: /Users/eddale/Documents/COPYobsidian/MAGI/Zettelkasten/PROJECT - *.md
Build a list of project names for matching.
Step 3: Read and Classify Each Capture (Background OK)
This step can run in background. Read and classify all captures before surfacing to user.
For each .md file in Inbox:
- Read full content
- Extract source URL from frontmatter (see Step 3b)
- Detect if already-processed (see Step 3a)
- Classify by intent (see Step 4)
Surface to user only after ALL files are read and classified.
Step 3b: Extract Source URLs
For x-bookmark files (filename starts with x-):
- Read
tweet_urlfrom YAML frontmatter - This URL MUST be included when routing to Ready
For other captures with URLs:
- Check for
url:,source_url:, orlink:in frontmatter - Check for markdown links
[text](url)in body - Preserve any URLs found for routing step
Step 3a: Detect Already-Processed Content
If capture content looks like a summary (has structure, headers, quotes sources):
- Flag as
[PROCESSED] - Will suggest routing as REFERENCE
- Won't offer research-swarm (already researched)
Signals of processed content:
- Has markdown headers (##, ###)
- Contains bullet lists with structured info
- Quotes or attributes other sources
- Looks like notes from a video/article
Step 4: Classify Each Capture
Priority Rule: Inline hints override auto-detection. Check for these FIRST:
IDEA:orIdea:→ IDEAResearch:→ RESEARCH (triggers swarm option)for [Project Name]→ PROJECT_UPDATETask:orTODO:→ TASK
Auto-Detection (if no inline hint):
| Signal | Classification |
|--------|----------------|
| Starts with verb (call, email, buy, check, send, schedule) | TASK |
| Contains Research: hint or explicit question needing investigation | RESEARCH |
| "What if..." or speculative language | IDEA |
| Mentions active project name | PROJECT_UPDATE |
| Person's name + action context | CONTACT |
| Links, articles, saved content, observations | REFERENCE |
Step 5: Show Classification Preview (Two-Step)
Two-Step Pattern: Show preview table first, then ask decision in a separate message. Let user absorb the information before asking what to do.
Step 5a: Present the Table
Show what you found. Let user absorb the information first:
## Capture Triage Preview
Found [N] captures. Here's how I've classified them:
| # | File | Preview | Classification | Suggested Routing |
|---|------|---------|----------------|-------------------|
| 1 | note1.md | "Call dentist..." | TASK | Ready: Call dentist (MM-DD) |
| 2 | note2.md | "What if we..." | IDEA | Ready: Consider: [idea] (MM-DD) |
| 3 | summary.md | [PROCESSED] "Article about..." | REFERENCE | Ready: Review: [title] (MM-DD) |
| 4 | question.md | "Research: how do..." | RESEARCH | Spawn research-swarm? |
Pause here. Let the user see and absorb the table before asking for a decision.
Step 5b: Ask for Decision
After showing the table, ask ONE question using AskUserQuestion:
How would you like to proceed?
1. **Approve all** - Route everything as shown
2. **Go one-by-one** - Review each item individually
3. **Modify** - Change specific classifications before routing
4. **Skip all** - Don't process any captures right now
Key points:
- Show [PROCESSED] flag for already-summarized content
- RESEARCH items present in preview table with spawn option - user approves before spawning
- Let user approve, modify, or skip before any changes
Step 6: Route by Classification
After approval, route each capture:
| Classification | Destination | Format |
|----------------|-------------|--------|
| TASK | Ready | - [ ] [action] (MM-DD) |
| IDEA | Ready | - [ ] Consider: [idea] (MM-DD) |
| REFERENCE | Ready | - [ ] Review: [linked title](URL) - brief context (MM-DD) |
| RESEARCH | If approved: spawn agent | See Step 7 |
| PROJECT_UPDATE | Project file | Timestamped append to ## Context Gathered |
| CONTACT | Create note + Ready | - [ ] Follow up with [Name] (MM-DD) |
IMPORTANT: Review tasks MUST include links.
For REFERENCE items, always include the source link so Ed can find it:
- X bookmarks:
[Title](https://x.com/author/status/ID) - Articles:
[Article Title](URL) - Obsidian docs:
[[Document Name]] - YouTube:
[Video Title](URL)
If a capture has no URL but references external content, note this: (source needed)
Edit Instructions:
For each item routed to Ready:
- Open today's daily note at:
/Users/eddale/Documents/COPYobsidian/MAGI/Zettelkasten/YYYY-MM-DD.md - Find the
## Readysection - Use Edit tool to append the task in the format shown above
- Do NOT add to
## Captures- that section is for document links only
Example Edit operation:
old_string: "## Ready\n- [ ] existing task"
new_string: "## Ready\n- [ ] existing task\n- [ ] [new task from capture] (01-06)"
If creating PROJECT or CONTACT files: Those files get created separately, and a
LINK to them goes in Ready as a task (e.g., - [ ] [[PROJECT - Name]] - brief desc).
Step 7: Handle Research (Only When Requested)
Only spawn research-swarm if:
- User explicitly approved during Step 5 preview
- Capture has
Research:inline hint AND user confirmed
For each approved RESEARCH item:
Task(
description="Research: [Topic]",
prompt="Research question: [Full capture content]
Use research-swarm pattern to investigate. Save findings to Zettelkasten.
When complete, add review task to Ready: '- [ ] Review: [[Research - Topic]] (MM-DD)'",
subagent_type="research-swarm",
run_in_background=true
)
Add placeholder to daily note:
- [RESEARCH] [Topic] - swarm running in background
Step 8: Handle Contacts
When a capture mentions a person with action context:
- Check if
CONTACT - [Name].mdexists - If exists: Append to
## Interactionssection - If new: Create contact note using template
- Always add follow-up task to Ready
Contact Note Template:
---
type: contact
created: YYYY-MM-DD
source: capture-triage
---
# [Person Name]
## Context
[Original capture content]
## Interactions
- YYYY-MM-DD: Initial capture - [summary]
## Follow-up
[Any implied next steps]
Step 9: Move to Processed
After routing each capture:
mv "[Inbox file]" "[Processed folder]"
Move files to Inbox/Processed/ as safety net (preserves originals).
Step 10: Generate Triage Summary
## Capture Triage - YYYY-MM-DD HH:MM
**Processed:** N items | **Research spawned:** M (if any)
### Routed to Ready
- [N] tasks
- [N] ideas (Consider:)
- [N] references (Review:)
### Research Running
- [Topic] - spawned at HH:MM
### Actions Taken
- Moved N files to Inbox/Processed/
- Created CONTACT - [Name].md (if any)
- Updated PROJECT - [Name].md (if any)
Examples
Example 1: Dry Run Preview
Inbox folder contains 4 files:
1. "Call dentist Monday about cleaning"
2. "What if we did a 5-day hook challenge?"
3. [PROCESSED] "Summary of Karpathy video - 6 paradigm shifts..."
4. "Research: how do successful coaches use AI?"
Skill shows:
## Capture Triage Preview
| # | Capture | Classification | Suggested Action |
|---|---------|----------------|------------------|
| 1 | "Call dentist..." | TASK | → Ready: "Call dentist Monday (01-05)" |
| 2 | "What if we..." | IDEA | → Ready: "Consider: 5-day hook challenge (01-05)" |
| 3 | [PROCESSED] "Summary of Karpathy..." | REFERENCE | → Ready: "Review: [Karpathy video](URL) - 6 paradigm shifts (01-05)" |
| 4 | "Research: how do coaches..." | RESEARCH | → Spawn research-swarm? |
Approve all, modify, or skip items?
Example 2: After Approval
User approves all, including research swarm for #4.
Result:
- Ready gets 3 new tasks + 1 research placeholder
- Research-swarm spawns in background
- All 4 files moved to Processed/
- Summary generated
Guidelines
- Two-step preview - Show table first, ask decision second (separate messages)
- Ready, not Captures - All triaged items become tasks in
## Readysection - Dry run is standard - Always show preview before routing
- Respect inline hints - They override auto-detection
- Research-swarm is opt-in - Ask before spawning
- [PROCESSED] content - Flag summaries, suggest REFERENCE routing
- Everything to Ready - Let task-clarity-scanner handle prioritization
- Preserve originals - Move to Processed/ folder as safety net
- Review tasks need links - Always include source URL or wikilink so Ed can find the content
Version History
| Version | Date | Changes | |---------|------|---------| | 1.0 | 2025-01-05 | Initial build as inbox-triage | | 2.0 | 2025-01-05 | Renamed to capture-triage, added dry run, AskUserQuestion flow, all routes to Ready | | 2.1 | 2026-01-06 | Renamed folder Captures→Inbox, split Step 5 into two-step preview, explicit Ready section routing, background OK for classification | | 2.2 | 2026-01-12 | Added requirement: Review tasks MUST include source links (URL or wikilink). Added Step 3b to extract URLs from frontmatter (especially x-bookmark tweet_url) |
Notes & Learnings
- Day 1 test processed 32 captures with backlog - dry run prevented overwhelm
- [PROCESSED] detection helps avoid re-researching already-summarized content
- Research-swarm opt-in prevents runaway agent spawning
- Review tasks without links are useless - Ed can't find the content to review (added v2.2)