drafts-manager
Skill9 starsChanged 11 months agoMITView on GitHub
Triage Drafts inbox and route notes to OmniFocus tasks or Obsidian documents
In this repository33 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- assistant-architectSkill
- cfo-briefingSkill
- clawdbot-monitorSkill
- docxSkill
- elevenlabs-ttsSkill
- freshservice-managerSkill
- google-workspaceSkill
- image-genSkill
- knowledge-managerSkill
- legislative-trackerSkill
- local-ttsSkill
- morning-briefingSkill
- multi-model-researchSkill
- obsidian-managerSkill
- omnifocus-managerSkill
- pai-monitorSkill
- pdfSkill
- pdf-to-markdownSkill
- personal-strategic-planningSkill
- pptxSkill
- presentation-masterSkill
- psd-athleticsSkill
- psd-brand-guidelinesSkill
- psd-instructional-visionSkill
- redrover-managerSkill
- researchSkill
- seven-advisorsSkill
- skill-creatorSkill
- sop-creatorSkill
- strategic-planning-managerSkill
- writerSkill
- xlsxSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
21 rules. About 0 are common, 14 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈14
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 22
Use this skill when user wants to:
- Distinctive: line 25
Check what's captured in Drafts
- Distinctive: line 117
When analyzing drafts, look for these signals:
- Very specific: line 280
Import the action files from ./actions/:
- Very specific: line 290
Create new action "Geoffrey Export Inbox"
- Very specific: line 291
Add Script step with code from actions/geoffrey-export-inbox.js
- Very specific: line 298
Check for export file at: ~/Library/Mobile Documents/iCloud~com~agiletortoise~Drafts5/Documents/geoffrey-export.json
- Distinctive: line 305
Use these tags for manual pre-routing:
- Distinctive: line 313
When capturing to Drafts, these patterns help AI routing:
- Distinctive: line 314
Start tasks with verbs: "Call", "Email", "Buy"
- Distinctive: line 315
Start notes with context: "Meeting:", "Idea:", "Note:"
- Distinctive: line 316
Use @ for OmniFocus hints: "@due(tomorrow)", "@project(Work)"
- Distinctive: line 365
Create contact AND follow-up task if there's an action
- Distinctive: line 372
Test data that's no longer needed
- Distinctive: line 394
Follow Up - Tasks requiring follow-up
- Distinctive: line 404
If note contains multiple distinct items, either:
- Distinctive: line 405
Create single task with items as checklist in notes
- Very specific: line 410
Use - [ ] for pending items
- Very specific: line 411
Use - [x] for completed items
- Very specific: line 420
Add to Contacts app via add_contact.js
- Distinctive: line 421
Create follow-up task with contact details in notes
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Drafts Manager Skill
Triage the Drafts inbox using a hybrid AI + human confirmation workflow. Routes content to OmniFocus (tasks) or Obsidian (notes) based on content analysis.
When to Activate
Use this skill when user wants to:
- Triage or process their Drafts inbox
- Route notes to OmniFocus or Obsidian
- Check what's captured in Drafts
- Clean up old drafts
Architecture
Two-Phase Hybrid Triage:
- Export & Analyze - Drafts exports inbox → Geoffrey analyzes → presents suggestions
- Confirm & Process - User confirms routing → Drafts processes each draft → archives
┌─────────┐ URL ┌─────────┐ JSON ┌─────────┐ Table ┌──────┐
│Geoffrey │ ────► │ Drafts │ ─────► │Geoffrey │ ──────► │ User │
│ trigger │ │ export │ │ analyze │ │review│
└─────────┘ └─────────┘ └─────────┘ └──┬───┘
│
Confirmed
│
┌─────────┐ URL ┌─────────┐ Routes ┌──────────┐ ┌───▼────┐
│Geoffrey │ ────► │ Drafts │ ───────► │OmniFocus │ │Process │
│ trigger │ │ process │ │ Obsidian │ │ list │
└─────────┘ └────┬────┘ └──────────┘ └────────┘
│
ArchivesAvailable Scripts
Scripts are in ./scripts/ directory. Run via:
bun ./scripts/script-name.jstrigger_export.js
Triggers the Drafts "Geoffrey Export Inbox" action via URL scheme.
Output: Path to exported JSON file
Use when: Starting triage
trigger_process.js
Triggers the Drafts "Geoffrey Process Draft" action with routing instructions.
Parameters: uuid, destination, project, tags, folder
Use when: Processing confirmed drafts
Required Drafts Actions
IMPORTANT: User must install these Drafts actions (found in ./actions/):
Geoffrey Export Inbox
Exports all inbox drafts to a JSON file for Geoffrey to analyze.
Location: ~/Library/Mobile Documents/iCloud~com~agiletortoise~Drafts5/Documents/geoffrey-export.json
Output format:
{
"exported": "2025-11-23T10:30:00Z",
"count": 5,
"drafts": [
{
"uuid": "ABC123",
"title": "First line of draft",
"content": "Full content...",
"tags": ["inbox"],
"createdAt": "2025-11-22T14:00:00Z",
"modifiedAt": "2025-11-22T14:00:00Z",
"isFlagged": false
}
]
}Geoffrey Process Draft
Processes a single draft based on routing instructions from URL parameters.
URL Parameters:
uuid- Draft to processdestination- "omnifocus", "obsidian", "archive", or "trash"project- OmniFocus project (if destination=omnifocus)tags- Comma-separated tags (if destination=omnifocus)dueDate- Due date (if destination=omnifocus)folder- Obsidian folder (if destination=obsidian)
Content Analysis Rules
When analyzing drafts, look for these signals:
Route to OmniFocus (Task)
Signals:
- Starts with action verb: "call", "email", "buy", "schedule", "review", "check"
- Contains: "todo", "task", "@due", "@defer"
- Short (< 50 words)
- Contains person names
- Shopping lists or errands
Apply omnifocus-manager routing rules for project/tag assignment
Route to Obsidian (Note)
Signals:
- Longer content (> 100 words)
- Meeting notes: "meeting with", "discussed", "attendees"
- Ideas/brainstorms: "idea:", "thought:", "what if"
- Reference material: links, quotes, research
- Journal entries: "today I", feelings, reflections
Archive in Drafts
Signals:
- Reference that may be needed again
- Snippets of code or text
- Temporary notes that are now done
Delete (Trash)
Signals:
- Empty or nearly empty
- Test/scratch content
- Duplicates
- Outdated info no longer needed
Obsidian Routing Rules
| Content Type | Folder | Frontmatter |
| Meeting notes | Meetings/ | date, attendees, topics |
| Ideas/brainstorms | Geoffrey/Inbox/ | tags, created |
| Research | Reference/ | source, tags, related |
| Journal | Journal/ | date |
| General notes | Geoffrey/Inbox/ | tags, created |
Frontmatter template:
---
created: {{date}}
source: drafts
tags: [from-drafts]
related: []
---Main Workflow: Triage Drafts
Phase 1: Export & Analyze
- Trigger export:
open "drafts://x-callback-url/runAction?action=Geoffrey%20Export%20Inbox" - Wait for export file (2-3 seconds)
- Read exported JSON:
cat ~/Library/Mobile\ Documents/iCloud~com~agiletortoise~Drafts5/Documents/geoffrey-export.json - Analyze each draft using content signals above
- Present suggestions table:
## Drafts Inbox Triage Found **5 drafts** to process: | # | Title | Suggestion | Destination | Details | |---|-------|------------|-------------|---------| | 1 | Call John about... | Task | OmniFocus | Project: Meetings, Tags: John, Follow Up | | 2 | Meeting notes 11/22 | Note | Obsidian | Folder: Meetings/ | | 3 | [empty] | Delete | Trash | Empty draft | | 4 | Shopping list | Task | OmniFocus | Project: Single Actions, Tags: Chores | | 5 | Idea for app... | Note | Obsidian | Folder: Geoffrey/Inbox/ | **Questions:** - #4: Should this go to a specific store location tag? Which numbers need changes? (Or type "process all" to confirm)
Phase 2: Process & Archive
- For each confirmed draft, trigger process action:
# OmniFocus task open "drafts://x-callback-url/runAction?action=Geoffrey%20Process%20Draft&uuid=ABC123&destination=omnifocus&project=Meetings&tags=John,Follow%20Up&dueDate=2025-11-30" # Obsidian note open "drafts://x-callback-url/runAction?action=Geoffrey%20Process%20Draft&uuid=DEF456&destination=obsidian&folder=Meetings" # Archive open "drafts://x-callback-url/runAction?action=Geoffrey%20Process%20Draft&uuid=GHI789&destination=archive" # Delete open "drafts://x-callback-url/runAction?action=Geoffrey%20Process%20Draft&uuid=JKL012&destination=trash" - Report results:
## Summary Processed 5 drafts from inbox ## Actions - 2 tasks created in OmniFocus - 2 notes saved to Obsidian - 1 draft deleted ## Status ✅ Complete ## Next Steps - Review tasks in OmniFocus inbox - Check Obsidian notes in Geoffrey/Inbox/
Error Handling
Drafts not running:
Status: ❌ Failed
Error: Drafts app is not running. Please open Drafts and try again.Action not installed:
Status: ❌ Failed
Error: Drafts action "Geoffrey Export Inbox" not found.
Please install from: skills/drafts-manager/actions/Export file not found:
Status: ⚠️ Partial
Error: Export file not created. Drafts may have timed out.
Try running the action manually in Drafts.OmniFocus not running:
Status: ⚠️ Partial
Warning: OmniFocus not running. Task creation may have failed.
Please verify tasks were created.Installation
1. Install Drafts Actions
Import the action files from ./actions/:
Option A: Import from file
- Open Drafts
- Go to Actions → Manage Actions
- Import from
actions/geoffrey-export-inbox.draftsAction - Import from
actions/geoffrey-process-draft.draftsAction
Option B: Create manually
- Open Drafts
- Create new action "Geoffrey Export Inbox"
- Add Script step with code from
actions/geoffrey-export-inbox.js - Repeat for "Geoffrey Process Draft"
2. Verify Installation
Run: open "drafts://x-callback-url/runAction?action=Geoffrey%20Export%20Inbox"
Check for export file at:
~/Library/Mobile Documents/iCloud~com~agiletortoise~Drafts5/Documents/geoffrey-export.json
Tips for Best Results
Tagging in Drafts
Use these tags for manual pre-routing:
task- Force route to OmniFocusnote- Force route to Obsidianarchive- Keep in Drafts archivedelete- Trash without review
Quick Capture Patterns
When capturing to Drafts, these patterns help AI routing:
- Start tasks with verbs: "Call", "Email", "Buy"
- Start notes with context: "Meeting:", "Idea:", "Note:"
- Use @ for OmniFocus hints: "@due(tomorrow)", "@project(Work)"
Regular Triage
Best practice: Triage Drafts daily to keep inbox small
- Morning: Process yesterday's captures
- Evening: Quick review of day's notes
Learned Routing Patterns
These patterns were learned through actual triage sessions with the user.
Content Type → Destination
| Content Type | Destination | Obsidian Folder | OmniFocus Details |
| Meeting notes | Obsidian | Meetings/2025/ | - |
| Conference notes | Obsidian | Meetings/2025/ | - |
| Development roadmap | Obsidian | Work/[Project]/Roadmap.md | Format as checklist |
| API keys/credentials | Delete | - | Security risk |
| Error logs/JSON junk | Delete | - | Cruft |
| Random passwords | Delete | - | Cruft |
| Contact info | Contacts app | - | Also create follow-up task |
| Book recommendations | OmniFocus | - | Tags: Reading |
| Gift ideas | OmniFocus | - | Tags: Chores, Shopping |
| Action items from meetings | OmniFocus | - | Tags: Follow Up |
| Reference links (AI, UDL) | Obsidian | Reference/ | - |
| Personal project ideas | OmniFocus | - | Tags: Coding |
| Presentation schedules | Obsidian | Work/Presentations/ | Future dates → tasks |
| Survey links | OmniFocus | - | Include links in notes |
Signals for Each Destination
→ OmniFocus Task:
- Starts with action verbs: "Submit", "Call", "Email", "Build", "Add"
- Contains due date context: "first week of December", "by end of year"
- Travel approvals, surveys to send, podcasts to record
- Book to read, thing to buy, project to build
- Multiple action items → single task with checklist in notes
→ Obsidian Note:
- Meeting notes (look for date, attendees, discussion points)
- Conference notes (look for session titles, speakers, links)
- Development docs with code/commands (wrap in code blocks)
- Reference material with links to external resources
- Topic brainstorms and idea lists
→ Contacts App:
- Contains name + phone/email
- Create contact AND follow-up task if there's an action
→ Delete:
- Empty or nearly empty
- JSON/error logs
- API keys (security)
- Random strings/passwords
- Test data that's no longer needed
→ Archive in Drafts:
- Outdated but potentially useful later
- Reference that may be needed again
Project/Folder Mappings
Obsidian Folders:
Meetings/2025/- All meeting and conference notesWork/AI-Studio/- AI Studio development docsWork/Jocular-Kangaroo/- Jocular Kangaroo projectWork/Presentations/- Presentation archivesGeoffrey/- Geoffrey roadmap and ideasReference/- Reference materials and links
OmniFocus Projects (go to Inbox if not found):
- CoSN Work - CoSN-related tasks
- Meetings - Follow-ups with people
- Research for Future Plans - Books, research tasks
OmniFocus Tags:
- Follow Up - Tasks requiring follow-up
- Reading - Books to read
- Chores - Shopping, errands
- Coding - Development tasks
- Geoffrey - AI-assistable tasks
- Email - Tasks requiring email
Special Handling
Multi-item notes:
- If note contains multiple distinct items, either:
- Create single task with items as checklist in notes
- Split into separate tasks (ask user preference)
Development roadmaps:
- Format as Obsidian file with checkboxes
- Use
- [ ]for pending items - Use
- [x]for completed items - Include code blocks for commands
Sensitive data:
- API keys → Delete immediately
- Student investigation data → Archive carefully, don't expose
- Credentials → Delete or move to secure storage
Contact + Task pattern:
- Add to Contacts app via add_contact.js
- Create follow-up task with contact details in notes
- Example: "Send maps to Kim Crowder" with email in notes
Future Enhancements
- Batch processing without confirmation for tagged drafts
- Smart date extraction from draft content
- Template matching for common note types
- Sync with omnifocus-manager tag hierarchy
- Obsidian template application
- Draft content search/query
- Auto-detect project roadmaps and format as checklists
- Recognize CoSN, ACPE, Kiwanis contexts for project routing
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

