TaskNotes Skill
Manage Obsidian tasks via the TaskNotes plugin HTTP API.
Requirements
- TaskNotes plugin installed in Obsidian
- Enable HTTP API in TaskNotes settings:
- Open Obsidian Settings → TaskNotes
- Enable "HTTP API" toggle
- Set API port (default: 8080)
- API token: leave empty for no auth, or set a token for security
- Environment variables in
.envfile at vault root (if using auth):
If TaskNotes has no auth token set, you don't need aTASKNOTES_API_PORT=8080 TASKNOTES_API_KEY=your_token_here.envfile.
CLI Commands
bash# List all tasks uv run scripts/tasks.py list # List by status (use your configured status values) uv run scripts/tasks.py list --status "in-progress" # List by project uv run scripts/tasks.py list --project "My Project" # Create task uv run scripts/tasks.py create "Task title" --project "My Project" --priority high # Create task with scheduled time uv run scripts/tasks.py create "Meeting prep" --scheduled "2025-01-15T14:00:00" # Update task status uv run scripts/tasks.py update "Tasks/task-file.md" --status done # Add/update task description uv run scripts/tasks.py update "Tasks/task-file.md" --details "Additional context here." # Delete task uv run scripts/tasks.py delete "Tasks/task-file.md" # Get available options (statuses, priorities, projects) uv run scripts/tasks.py options --table # Human-readable output (add --table) uv run scripts/tasks.py list --table
Task Properties
Status and Priority values: Configured in your TaskNotes plugin settings. Run options command to see available values:
bashuv run scripts/tasks.py options --table
Other fields:
projects- Array of project links, e.g.["[[Project Name]]"]contexts- Array like["office", "energy-high"]due- Due date (YYYY-MM-DD)scheduled- Scheduled date/time (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS)timeEstimate- Minutes (number)tags- Array of tagsdetails- Task description (writes to markdown body, not frontmatter)
API Reference
Base URL: http://localhost:8080/api
| Method | Endpoint | Description |
|---|---|---|
| GET | /tasks | List tasks (supports filters) |
| POST | /tasks | Create task |
| GET | /tasks/{id} | Get single task |
| PUT | /tasks/{id} | Update task |
| DELETE | /tasks/{id} | Delete task |
| GET | /filter-options | Available statuses, priorities, projects |
Query Parameters for GET /tasks
status- Filter by statusproject- Filter by project namepriority- Filter by prioritytag- Filter by tagoverdue- true/falsesort- Sort fieldlimit- Max resultsoffset- Pagination offset
When to Use
- "create a task for X" → create task
- "show my tasks" → list all tasks
- "show in-progress tasks" → list --status in-progress
- "mark X as done" → update task status to done
- "what should I work on" → list tasks by status
Example Workflow
bash# Morning: Check what to work on uv run scripts/tasks.py list --status in-progress --table uv run scripts/tasks.py list --limit 5 --table # Create task linked to project uv run scripts/tasks.py create "Finish landing page" \ --project "Website Redesign" \ --priority high # Complete a task uv run scripts/tasks.py update "Tasks/finish-landing-page.md" --status done


