| name | omnifocus-core |
| description | This skill should be used when querying OmniFocus data, managing tasks, running GTD diagnostics, or configuring perspectives. Triggers when user asks "show tasks", "overdue items", "check inbox", "stalled projects", "waiting for list", "someday maybe", "GTD health check", "AI Agent tasks", "publish plan to OmniFocus", "set up perspectives", "perspective inventory", "configure perspective", "quick stats", or "missing perspectives". Also triggers when the user pastes an `omnifocus://` URL — parse the entity type and ID from the URL, then use `/ofo:info <url>` to look it up directly.
Do NOT trigger for: "create OmniFocus plugin" (use omnifocus-generator skill), "analyze my system" or "discover my patterns" (use attache-analyst skill), pure GTD methodology questions (use gtd-coach skill).
|
| license | MIT |
| metadata | {"version":"11.1.0","author":"totally-tools"} |
| compatibility | {"platforms":["macos"],"requires":["OmniFocus 3 or 4","macOS with automation permissions"]} |
OmniFocus Core
Stateless data access layer for OmniFocus — task CRUD, queries, perspectives, and reporting.
Skill Architecture
| Skill | Focus | Handoff |
|---|
| omnifocus-core (this) | Task CRUD, queries, perspectives | — |
| omnifocus-generator | OmniFocus plugin/script generation | "Create OmniFocus plugin" → defer |
| attache-analyst | System learning, AI coaching, metrics | "Analyze my system" → defer |
| gtd-coach | Pure GTD methodology coaching | "What makes a good next action?" → defer |
ofo CLI (Preferred for All Operations)
The ofo CLI executes Omni Automation scripts directly inside OmniFocus via script URLs. Use ofo for all task CRUD and queries.
scripts/ofo info <id-or-omnifocus-url>
scripts/ofo complete <id-or-omnifocus-url>
scripts/ofo drop <id-or-omnifocus-url>
scripts/ofo drop <id-or-omnifocus-url> --all
scripts/ofo health
scripts/ofo create --name "Task" --project "Work" --due 2026-12-31
scripts/ofo create --name "Subtask" --parent <id|url>
scripts/ofo update <id> --name "New name" --flagged
scripts/ofo update <id> --sequential
scripts/ofo update <id> --parallel
scripts/ofo update <id> --note "text"
scripts/ofo update <id> --note-append "text"
scripts/ofo update <id> --project "Project Name"
scripts/ofo update <id> --project inbox
scripts/ofo search "meeting"
scripts/ofo list inbox
scripts/ofo list today
scripts/ofo list overdue
scripts/ofo list flagged
scripts/ofo list due-soon [N]
scripts/ofo tag <id> --add "Tag" --remove "Other"
scripts/ofo tag <id> --capture question
scripts/ofo tags
scripts/ofo perspective-list
scripts/ofo perspective-rules
scripts/ofo perspective-rules "Name"
scripts/ofo perspective-configure --name "View" --rules '[...]'
scripts/ofo completed-today
scripts/ofo completed-today --markdown
scripts/ofo dump
scripts/ofo stats
Prerequisites: OmniFocus running + external scripts enabled. First command triggers a one-time approval dialog.
JXA Diagnostics (Advanced Queries)
GTD diagnostics via scripts/gtd-queries.js — for queries not yet covered by ofo:
osascript -l JavaScript scripts/gtd-queries.js --action system-health
osascript -l JavaScript scripts/gtd-queries.js --action stalled-projects
osascript -l JavaScript scripts/gtd-queries.js --action waiting-for
osascript -l JavaScript scripts/gtd-queries.js --action someday-maybe
osascript -l JavaScript scripts/gtd-queries.js --action recently-completed --days 7
osascript -l JavaScript scripts/gtd-queries.js --action neglected-projects --threshold 30
osascript -l JavaScript scripts/gtd-queries.js --action ai-agent-tasks
osascript -l JavaScript scripts/gtd-queries.js --action repeating-tasks --days 90
osascript -l JavaScript scripts/gtd-queries.js --action analyze-projects --threshold 30
osascript -l JavaScript scripts/gtd-queries.js --action folder-structure
Action groups via ofo: build N children with ofo create --parent <id> (UUID or omnifocus:// URL), then ofo update <id> --sequential to flip the parent. Replaces the legacy manage_omnifocus.js bulk-create workflow for the common case.
Legacy: scripts/manage_omnifocus.js retained only for whole-project-with-nested-groups creation from a single JSON file. All other commands covered by ofo CLI.
Perspectives
Principle: Perspectives over scripts. Prefer codifying perspectives as the query engine over creating new plugin actions.
scripts/ofo perspective-list
scripts/ofo perspective "Completed Today"
scripts/ofo perspective-rules
scripts/ofo perspective-rules "Dashboard"
scripts/ofo perspective-configure --name "View" --rules '[...]'
Perspective structure: Set via OmniFocus UI (Perspectives → Edit → Structure).
- Flexible — flat list; best for "what's next" scanning across projects
- Organized — grouped + sorted; best for categorical review
Perspectives must be created manually in OmniFocus Pro — the API has no constructor.
See references/perspective_templates.md for 8 canonical GTD perspective JSON configs.
See references/perspective_creation.md for the guided configuration workflow.
Script Conventions
- Prefer ofo CLI for task CRUD:
scripts/ofo <command>
- Single-action pattern: One call = one pasteboard round-trip = reliable results
- Commands use
${CLAUDE_PLUGIN_ROOT}: ${CLAUDE_PLUGIN_ROOT}/skills/omnifocus-core/scripts/
- Smoke test before version bump:
bash scripts/test-queries.sh
Execution Hierarchy
- ofo CLI (preferred):
scripts/ofo <command>
- gtd-queries.js (JXA diagnostics only):
osascript -l JavaScript scripts/gtd-queries.js --action <action>
- manage_omnifocus.js (legacy — bulk-create only):
osascript -l JavaScript scripts/manage_omnifocus.js bulk-create --json-file <path>
Reference Documentation
- Official OmniFocus API - Canonical API reference
references/api_reference.md - Local quick lookup tables
references/jxa_guide.md - Command-line automation
references/gtd_guide.md - GTD-to-OmniFocus mapping
references/perspective_creation.md - Guided configuration (v4.2+)
references/perspective_templates.md - 8 canonical GTD perspective JSON configs
references/omnifocus_url_scheme.md - Quick capture and linking
references/omnifocus_api.md - Full API specification
references/omni_automation_api_mapping.md - JXA vs script URL API differences
references/database_schema.md, references/workflows.md
references/troubleshooting.md - Permission issues, common errors, debugging