Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Processes Drafts Pro captures from the Inbox folder. Classifies by intent, shows preview for approval, routes to Ready as tasks. Use when triaging captures, processing mobile notes, or as part of daily review. Triggers on "triage captures", "process captures", "check my captures".
.claude/skills/nicepkg-capture-triage/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 78% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 72% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 163% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 178% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 165% | 0% |
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.
Ed - capturing quick thoughts in Drafts Pro throughout the day.
> 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.
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| 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.
Important: Only check files directly in Inbox/, NOT subdirectories.
bashls /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.
Pull active project names from mission-context skill AND:
Glob: /Users/eddale/Documents/COPYobsidian/MAGI/Zettelkasten/PROJECT - *.mdBuild a list of project names for matching.
This step can run in background. Read and classify all captures before surfacing to user.
For each .md file in Inbox:
Surface to user only after ALL files are read and classified.
For x-bookmark files (filename starts with x-):
tweet_url from YAML frontmatterFor other captures with URLs:
url:, source_url:, or link: in frontmatter[text](url) in bodyIf capture content looks like a summary (has structure, headers, quotes sources):
[PROCESSED]Signals of processed content:
Priority Rule: Inline hints override auto-detection. Check for these FIRST:
IDEA: or Idea: → IDEAResearch: → RESEARCH (triggers swarm option)for [Project Name] → PROJECT_UPDATETask: or TODO: → TASKAuto-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 |
Two-Step Pattern: Show preview table first, then ask decision in a separate message. Let user absorb the information before asking what to do.
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.
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 nowKey points:
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:
[Title](https://x.com/author/status/ID)[Article Title](URL)[[Document Name]][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:
/Users/eddale/Documents/COPYobsidian/MAGI/Zettelkasten/YYYY-MM-DD.md
## Ready section## Captures - that section is for document links onlyExample 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).
Only spawn research-swarm if:
Research: inline hint AND user confirmedFor 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 backgroundWhen a capture mentions a person with action context:
CONTACT - [Name].md exists## Interactions sectionContact Note Template:
markdown--- 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]
After routing each capture:
bashmv "[Inbox file]" "[Processed folder]"
Move files to Inbox/Processed/ as safety net (preserves originals).
markdown## 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)
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?User approves all, including research swarm for #4.
Result:
## Ready section| 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) |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 5,880 | 15,163 | +158% | 1 | 1 | 0% | 458 | 3,923 | +757% | 0 | 0 | — |
case-02 | fail→fail | 5,162 | 9,671 | +87% | 1 | 1 | 0% | 758 | 4,138 | +446% | 0 | 0 | — |
case-03 | fail→fail | 7,401 | 9,768 | +32% | 1 | 1 | 0% | 721 | 3,934 | +446% | 0 | 0 | — |
case-04 | pass→pass | 9,929 | 3,877 | -61% | 1 | 1 | 0% | 1,627 | 3,703 | +128% | 0 | 0 | — |
case-05 | fail→fail | 11,871 | 6,108 | -49% | 1 | 1 | 0% | 1,581 | 4,174 | +164% | 0 | 0 | — |
case-06 | fail→pass | 12,956 | 3,647 | -72% | 1 | 1 | 0% | 2,159 | 3,835 | +78% | 0 | 0 | — |
case-07 | pass→pass | 9,412 | 6,193 | -34% | 1 | 1 | 0% | 1,580 | 4,348 | +175% | 0 | 0 | — |
case-08 | pass→pass | 12,675 | 4,267 | -66% | 1 | 1 | 0% | 1,857 | 3,948 | +113% | 0 | 0 | — |
case-09 | pass→pass | 12,263 | 4,062 | -67% | 1 | 1 | 0% | 1,831 | 3,865 | +111% | 0 | 0 | — |
case-10 | fail→fail | 10,653 | 5,935 | -44% | 1 | 1 | 0% | 1,506 | 4,000 | +166% | 0 | 0 | — |
case-11 | fail→pass | 13,499 | 3,907 | -71% | 1 | 1 | 0% | 2,258 | 3,880 | +72% | 0 | 0 | — |
case-12 | fail→pass | 9,196 | 3,633 | -60% | 1 | 1 | 0% | 1,425 | 3,754 | +163% | 0 | 0 | — |
case-13 | fail→pass | 10,005 | 3,219 | -68% | 1 | 1 | 0% | 1,345 | 3,742 | +178% | 0 | 0 | — |
case-14 | fail→pass | 10,936 | 9,953 | -9% | 1 | 1 | 0% | 1,724 | 4,561 | +165% | 0 | 0 | — |
case-15 | fail→pass | 10,949 | 4,227 | -61% | 1 | 1 | 0% | 1,492 | 3,880 | +160% | 0 | 0 | — |
case-16 | pass→pass | 9,958 | 2,389 | -76% | 1 | 1 | 0% | 1,587 | 3,579 | +126% | 0 | 0 | — |
case-17 | fail→pass | 7,280 | 3,150 | -57% | 1 | 1 | 0% | 1,124 | 3,553 | +216% | 0 | 0 | — |
case-18 | fail→fail | 7,535 | 2,317 | -69% | 1 | 1 | 0% | 1,034 | 3,541 | +242% | 0 | 0 | — |
case-19 | fail→pass | 19,388 | 7,594 | -61% | 1 | 1 | 0% | 2,438 | 4,263 | +75% | 0 | 0 | — |
case-20 | pass→pass | 15,931 | 14,083 | -12% | 1 | 1 | 0% | 2,467 | 5,521 | +124% | 0 | 0 | — |
case-21 | pass→pass | 11,288 | 10,220 | -9% | 1 | 1 | 0% | 2,051 | 4,608 | +125% | 0 | 0 | — |
case-22 | pass→pass | 21,737 | 16,404 | -25% | 1 | 1 | 0% | 3,659 | 5,838 | +60% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +36 percentage points is the difference between those two pass rates over the 19 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.