skills/obsidian-tasks/SKILL.md
Manage Obsidian Tasks using natural language. Create, modify, complete, and search tasks with subtask linking, project integration, and urgent next action filtering.
npx skillsauth add neurongraph/skills_repo obsidian-tasksInstall 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.
Manage Obsidian Tasks using natural language with task creation, modification, completion, searching, and filtering capabilities.
Dependency: This skill requires the
obsidian-cliskill for allobsidiancommand operations.Scripts:
task_utils.py,project_utils.py, andfilter_tasks.pylive in thescripts/directory alongside thisSKILL.md. Before running any script, use the Glob tool with pattern**/obsidian-tasks/SKILL.mdto locate this skill. Take the dirname of the result asOBSIDIAN_TASKS_DIR. All scripts are then at$OBSIDIAN_TASKS_DIR/scripts/.
Obsidian Tasks uses the native emoji-based metadata format with standard markdown checkboxes:
- [ ] Task description 🔼 📅 2026-03-25 #Project/Frontend
- [x] Completed task ✅ 2026-03-20
- [ ] Task with subtask [[Link to subtask]] 🔼
Status: Use [ ] for incomplete, [x] for completed
Description: Clear, actionable task description
Priority: ⏫ highest · 🔼 high · (none) normal · 🔽 low · ⏬ lowest
Due date: 📅 YYYY-MM-DD
Done date: ✅ YYYY-MM-DD — added automatically on completion
Start date: 🛫 YYYY-MM-DD — when the task may begin
Scheduled date: ⏳ YYYY-MM-DD — planned work date
Recurrence: 🔁 every day, 🔁 every Monday, etc.
Projects: #Project/Name hierarchical tags — e.g. #Project/Frontend, #Project/Alpha. Use tags, not wikilinks, for project association. This enables Task Genius plugin views.
Tags: #tag-name for other organisation
Place metadata after the description text in this order:
description [[links]] #tags ⏫/🔼/🔽/⏬ 🔁 recurrence 🛫 start ⏳ scheduled 📅 due ✅ done
- [ ] Important task 🔼 📅 2026-03-25
- [ ] Review document #Project/Alpha 📅 2026-03-26
- [ ] Subtask for [[Parent Task]] 🔽
- [ ] Recurring item 🔁 every Monday 🛫 2026-03-21 #Project/Frontend
#Project/Name format (e.g. #Project/Frontend)Tasks.md — all new tasks go here by default:# Always add new tasks to Tasks.md
obsidian append file="Tasks" content="- [ ] Review document #Project/Alpha 📅 2026-03-26"
Note: The default task file is always
Tasks.md. Ifobsidian appendfails with "File not found", create the file first withobsidian write file="Tasks" content="", then retry the append. Do not fall back to the daily note for task creation unless the user explicitly asks for it.
obsidian tasks flagsThe CLI supports these flags — nothing more:
obsidian tasks todo # All incomplete tasks
obsidian tasks done # All completed tasks
obsidian tasks todo daily # Incomplete tasks from today's daily note
obsidian tasks done daily # Completed tasks from today's daily note
obsidian tasks todo file="Tasks" # Incomplete tasks from a specific file
obsidian tasks todo active # Tasks from the currently active file
obsidian tasks todo verbose # Group results by file with line numbers
obsidian tasks todo format=json # JSON output — use this for any advanced filtering
obsidian tasks todo total # Return count of incomplete tasks
The obsidian tasks CLI has no built-in filters for due date, priority, or project. For those, fetch tasks as JSON and pipe to filter_tasks.py.
Note: The
obsidianCLI may emit warning/info lines (e.g. "Loading updated app package...") to stdout before the JSON payload.filter_tasks.pyhandles this automatically by scanning for the first[in stdin.
# Tasks due today
obsidian tasks todo format=json | python3 "$OBSIDIAN_TASKS_DIR/scripts/filter_tasks.py" --today
# Overdue tasks
obsidian tasks todo format=json | python3 "$OBSIDIAN_TASKS_DIR/scripts/filter_tasks.py" --overdue
# Tasks with no due date
obsidian tasks todo format=json | python3 "$OBSIDIAN_TASKS_DIR/scripts/filter_tasks.py" --no-due
# Due within 7 days (or specify N days)
obsidian tasks todo format=json | python3 "$OBSIDIAN_TASKS_DIR/scripts/filter_tasks.py" --due-soon 7
# By priority level: highest | high | normal | low | lowest
obsidian tasks todo format=json | python3 "$OBSIDIAN_TASKS_DIR/scripts/filter_tasks.py" --priority high
# Urgent: high/highest priority + anything overdue or due today, sorted by urgency
obsidian tasks todo format=json | python3 "$OBSIDIAN_TASKS_DIR/scripts/filter_tasks.py" --urgent
# All incomplete tasks ranked by urgency score (default when no filter given)
obsidian tasks todo format=json | python3 "$OBSIDIAN_TASKS_DIR/scripts/filter_tasks.py" --next-action
# Recurring tasks
obsidian tasks todo format=json | python3 "$OBSIDIAN_TASKS_DIR/scripts/filter_tasks.py" --recurring
For project-specific queries (pass all tasks, not just todo, for summary):
# Open tasks for one project, urgency-sorted
obsidian tasks todo format=json | python3 "$OBSIDIAN_TASKS_DIR/scripts/filter_tasks.py" --project "Project Alpha"
# List all project names found in tasks
obsidian tasks format=json | python3 "$OBSIDIAN_TASKS_DIR/scripts/filter_tasks.py" --projects
# Project summary table: open · done · overdue per project
obsidian tasks format=json | python3 "$OBSIDIAN_TASKS_DIR/scripts/filter_tasks.py" --project-summary
You can also search for tasks containing specific text or emoji using obsidian search:
obsidian search query="#Project/Alpha" # Files with tasks for a project
obsidian search query="🔼" # Files with high-priority tasks
obsidian search query="✅ 2026-03-21" # Files with tasks completed on a date
| User asks | What to run |
|---|---|
| "What's urgent / what's next?" | obsidian tasks todo format=json \| filter_tasks.py --urgent |
| "What do I need to do today?" | obsidian tasks todo format=json \| filter_tasks.py --today |
| "Any overdue tasks?" | obsidian tasks todo format=json \| filter_tasks.py --overdue |
| "Tasks without a due date" | obsidian tasks todo format=json \| filter_tasks.py --no-due |
| "High priority tasks" | obsidian tasks todo format=json \| filter_tasks.py --priority high |
| "Recurring tasks" | obsidian tasks todo format=json \| filter_tasks.py --recurring |
| "Daily note tasks" | obsidian tasks todo daily |
| "Tasks in file X" | obsidian tasks todo file="X" |
| "Completed tasks" | obsidian tasks done |
| "What projects do I have?" | obsidian tasks format=json \| filter_tasks.py --projects |
| "Give me a project overview" | obsidian tasks format=json \| filter_tasks.py --project-summary |
| "Open tasks for Project Alpha" | obsidian tasks todo format=json \| filter_tasks.py --project "Project Alpha" |
obsidian search query="exact task description"
obsidian read file="Tasks"
obsidian tasks todo or searchTasks.md to get the full task line:
obsidian read file="Tasks"
[ ] to [x]✅ YYYY-MM-DD (today's date)Tasks.md: edit the file, deleting the completed task lineCompleted_Tasks.md: add the completed task line there
obsidian append file="Completed_Tasks" content="- [x] Review document #Project/Alpha 📅 2026-03-27 ✅ 2026-03-21"
Important: Completed tasks must always be moved — removed from
Tasks.mdand appended toCompleted_Tasks.md. Never leave a[x]task inTasks.md.
Projects are identified by #Project/Name tags in task descriptions. There is no native obsidian tasks project command — use filter_tasks.py for all project operations.
# List all project names
obsidian tasks format=json | python3 "$OBSIDIAN_TASKS_DIR/scripts/filter_tasks.py" --projects
# Summary table (open / done / overdue per project)
obsidian tasks format=json | python3 "$OBSIDIAN_TASKS_DIR/scripts/filter_tasks.py" --project-summary
# Open tasks for one project, sorted by urgency
obsidian tasks todo format=json | python3 "$OBSIDIAN_TASKS_DIR/scripts/filter_tasks.py" --project "Project/Alpha"
# All tasks for a project (includes completed)
obsidian search query="#Project/Alpha"
Create: User asks "Add a task to review the document for Project Alpha due tomorrow"
- [ ] Review document #Project/Alpha 📅 2026-03-22obsidian append file="Tasks" content="- [ ] Review document #Project/Alpha 📅 2026-03-22"Search: User asks "Show me my urgent next actions"
obsidian tasks todo format=json | python3 "$OBSIDIAN_TASKS_DIR/scripts/filter_tasks.py" --urgentModify: User asks "That task should be due on Friday instead"
obsidian search query="Review document"obsidian read file="Tasks"📅 2026-03-22 → 📅 2026-03-27Complete: User says "Mark it done"
Tasks.md, find the task line- [x] Review document #Project/Alpha 📅 2026-03-27 ✅ 2026-03-21Tasks.mdCompleted_Tasks.md: obsidian append file="Completed_Tasks" content="- [x] Review document #Project/Alpha 📅 2026-03-27 ✅ 2026-03-21"#Project/Name format for project association — e.g. #Project/Frontend, #Project/Alpha. This enables Task Genius plugin views.task_utils.py for the reference logic)[[Parent Task#Subtask]]obsidian tasks CLI has no project/date/priority filters — always use filter_tasks.py for thesereferences/TASK_OPERATIONS.mddevelopment
Use this skill any time you need to create or edit a .pptx presentation for Surjit. This skill enforces the IBM Plex design language — typography-forward, flat geometry, sharp corners, restrained color. Trigger whenever the user asks for a deck, slides, or presentation, or references a .pptx file, and especially when they want slides that feel clean, modern, or 'IBM-style'. If the user just says 'make me a deck' or 'build slides', use this skill — it overrides the generic pptx skill for this user.
testing
--- name: obsidian-todo-action description: Action a single Obsidian todo: reads project context and related tasks, adaptively assesses what's needed (sub-tasks, email drafts, calendar invites), generates all artifacts into the project folder, and updates project.md — all in one session. --- # Obsidian Todo Action Skill Actions a single todo from the user's Obsidian vault in one focused session. Reads project context, decides adaptively what help is needed, generates artifacts (sub-tasks, emai
data-ai
Transcribes audio files (voice memos, recordings, meetings) into text using a local ASR model (qwen3_asr_rs). Processes all audio in the configured input directory and saves transcripts as text files. Use this skill whenever the user wants to transcribe audio, convert speech to text, process voice memos, or get spoken content into written form — even if they don't use the word "transcribe".
devops
--- name: obsidian-daily-process description: Orchestrates the full Obsidian vault processing pipeline: transcribes voice memos and audio recordings, classifies them into todos, ideas, or daily notes, and files each into the right place in the vault. Also triggers downstream Obsidian pipelines (wiki update, ArtMind knowledge graph). Use this skill whenever the user wants to process voice memos, audio recordings, or run any Obsidian vault update — even if they only mention "voice memo", "recordin