plugins/obsidian/skills/tasknotes/SKILL.md
Manages tasks in Obsidian via the TaskNotes Plugin HTTP API. Provides task creation, status updates, filtering by project or status, and vault-wide scanning. Triggers when the user asks to "show my tasks", "create a task", "what should I work on", "mark as done", or wants to filter tasks by status/project.
npx skillsauth add talent-factory/claude-plugins tasknotesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Task management in Obsidian via the TaskNotes Plugin HTTP API.
<example> User: "show my tasks" Action: Execute `list --scan --table` to display all tasks in the vault </example> <example> User: "create a task to finish the landing page" Action: Execute `create "Finish landing page"` </example> <example> User: "what should I work on?" Action: Execute `list --status in-progress --scan --table` to show active tasks </example> <example> User: "mark task X as done" Action: Execute `update "Tasks/task-x.md" --status done` </example>.env file at vault root (if authentication is used):
TASKNOTES_API_PORT=8080
TASKNOTES_API_KEY=your_token_here
If TaskNotes has no auth token configured, no .env file is required.The script is located at ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py.
# List all tasks (API-monitored folders only)
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py list
# Find all tasks in the ENTIRE vault (scans filesystem)
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py list --scan --table
# All active tasks (excluding completed) in the entire vault
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py list --scan --table
# ALL tasks including completed in the entire vault
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py list --all --table
# Filter by status (use your configured status values)
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py list --status "in-progress" --scan
# Filter by project
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py list --project "My Project" --scan
# Create a task
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py create "Task title" --project "My Project" --priority high
# Create a task with scheduled time
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py create "Meeting preparation" --scheduled "2025-01-15T14:00:00"
# Update task status
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py update "Tasks/task.md" --status done
# Add/update description
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py update "Tasks/task.md" --details "Additional context here."
# Delete a task
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py delete "Tasks/task.md"
# Retrieve available options (statuses, priorities, projects)
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py options --table
# Human-readable output (add --table)
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py list --table
Status and priority values: Configured in TaskNotes plugin settings. Execute the options command to view available values:
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py options --table
Additional fields:
projects - Array of project links, e.g., ["[[ProjectName]]"]contexts - Array such as ["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)Base URL: http://localhost:8080/api
| Method | Endpoint | Description | |--------|----------|-------------| | GET | /tasks | List tasks (supports filters) | | POST | /tasks | Create task | | GET | /tasks/{id} | Retrieve single task | | PUT | /tasks/{id} | Update task | | DELETE | /tasks/{id} | Delete task | | GET | /filter-options | Available statuses, priorities, projects |
status - Filter by statusproject - Filter by project namepriority - Filter by prioritytag - Filter by tagoverdue - true/falsesort - Sort fieldlimit - Maximum resultsoffset - Pagination offset| User Request | Action | |--------------|--------| | "create a task for X" | Create task | | "show my tasks" | list --scan --table (finds all tasks in vault) | | "show in-progress tasks" | list --status in-progress --scan --table | | "mark X as done" | Set task status to done | | "what should I work on" | list --scan --table |
IMPORTANT: Always use --scan when listing to find ALL tasks in the entire vault, not just those in the configured TaskNotes folder.
# Morning: Check what to work on (all tasks in vault)
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py list --scan --table
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py list --status in-progress --scan --table
# Show top 5 tasks
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py list --scan --limit 5 --table
# Create a task with project association
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py create "Complete landing page" \
--project "Website Redesign" \
--priority high
# Complete a task
uv run ${CLAUDE_PLUGIN_ROOT}/skills/tasknotes/scripts/tasks.py update "Tasks/complete-landing-page.md" --status done
--table): For human-readable display.env file at the vault root or automatically locates the Obsidian vault--scan): Directly scans the filesystem and finds ALL tasks with the #task tag in the entire vault, regardless of the configured TaskNotes folder. This is the recommended mode for listing tasks.--scan): Uses the TaskNotes HTTP API but only finds tasks in TaskNotes-monitored foldersdocumentation
Creates comprehensive handoff documentation before a /compact operation, enabling a new agent with fresh context to seamlessly continue the work. Activate when the user says "prepare a handoff", "document before compact", "context is getting too large", "I need to hand this off", "create a handoff document", "end of session notes", or "document the current state for tomorrow". Supports --output and --linear-issue options.
documentation
Collects completed tasks, GitHub activity, calendar meetings, wiki learnings, and Linear progress for the past week, then writes a structured retrospective to the Obsidian vault. Activate when the user runs "/weekly-review", asks "what did I accomplish this week", "weekly retrospective", "summarise my week", or "prepare weekly review". Works from any directory.
development
Produces a prioritised daily briefing by aggregating tasks from Obsidian TaskNotes, Google Calendar, Gmail, Linear, and GitHub, then writes the result to today's daily note in the Obsidian vault. Activate when the user runs "/today", asks "what's on my plate today", "give me my daily briefing", "what do I need to do today", or "morning briefing". Works from any directory without requiring Obsidian to be running.
tools
Provides a quick status snapshot of all GitHub repositories in a configured organisation — active, dormant, stalled — plus open pull requests and issues. Terminal output only, optimised for speed. Activate when the user runs "/project-pulse", asks "what is the status of my GitHub projects", "show me my repos", "which projects are active", "project overview", "GitHub pulse", or "what is happening in [org]". Works from any directory.