Surface and manage your Obsidian Tasks from anywhere -- terminal, Raycast, or AI agent -- without opening Obsidian.
Sift reads your Obsidian vault directly, parses tasks in the emoji format, and lets you query, prioritize, add, and complete tasks from multiple interfaces.
- CLI --
sift summary,sift next,sift add,sift done,sift mark,sift note,sift review, and more - Raycast extension -- search tasks, view priorities, add tasks with a form
- AI agent integration -- Works with Claude Code, Claude Desktop, and OpenCode for conversational task management
- Shared core library -- all interfaces use the same
@sift/corepackage, so they always behave consistently
- Node.js >= 20
- An Obsidian vault using the Obsidian Tasks plugin with emoji format
git clone https://github.com/dru89/sift.git
cd sift
npm install
npm run buildPoint sift at your vault:
node packages/cli/dist/index.js init "/path/to/your/vault"This writes a config file to ~/.siftrc.json. You can also set the SIFT_VAULT_PATH environment variable.
# Quick overview
sift summary
# What should I work on?
sift next
# All open tasks
sift list
# Add a task
sift add "Review the architecture doc" --priority high --due 2026-03-10
# Add a task to a project
sift add "Design the API" --project "MP3 Parser" --priority high
# Mark something done
sift done "architecture doc"
# Mark something in progress or on hold
sift mark "architecture doc" --status in_progress
sift mark "waiting on client" --status on_hold
# Add a note to today's daily note
sift note "Had a great meeting about the roadmap"
# Add a note to a project
sift note --project "MP3 Parser" "Decided to use ID3v2.4 format"
# Weekly review
sift review # since last Friday
sift review --days 30 # last 30 days
sift review --since 2026-03-01 # since a specific dateTo make sift available globally:
npm link --workspace=packages/cliRequires Raycast on macOS.
cd packages/raycast
npm install
npx ray developRaycast will prompt you to set your vault path in the extension preferences on first use. See packages/raycast/README.md for details.
Sift can be integrated with AI coding agents so your assistant can read and manage tasks conversationally.
npx skills add dru89/sift -gThe installer will prompt you to choose which agents to configure (Claude Code, OpenCode, etc.).
For richer integration, sift also ships an MCP server. See docs/agent-integration.md for MCP setup instructions.
| Package | Description | Docs |
|---|---|---|
@sift/core |
Shared library: parser, scanner, writer, config | README |
@sift/cli |
Command-line interface | README |
| Raycast extension | Raycast commands for task management | README |
| Agent skill | MCP server for Claude Code/Desktop + OpenCode skill | Setup guide |
Sift understands the Obsidian Tasks emoji format:
- [ ] Write the proposal β« β³ 2026-03-07 π
2026-03-10
- [x] Review the draft πΌ β
2026-03-06
- [ ] Weekly standup notes π every week π
2026-03-07| Emoji | Meaning | Example |
|---|---|---|
β« |
Highest priority | |
πΌ |
High priority | |
π½ |
Low priority | |
β¬ |
Lowest priority | |
β³ |
Scheduled date | β³ 2026-03-07 |
π
|
Due date | π
2026-03-10 |
π« |
Start date | π« 2026-03-01 |
β
|
Done date | β
2026-03-06 |
β |
Created date | β 2026-03-01 |
π |
Recurrence | π every week |
Sift looks for configuration in this order (later sources override earlier ones):
~/.siftrc.json./.siftrc.jsonSIFT_VAULT_PATHenvironment variable- Explicit options passed to functions or CLI flags
Config file format:
{
"vaultPath": "/Users/you/Documents/My Vault",
"dailyNotesPath": "Daily Notes",
"dailyNotesFormat": "YYYY-MM-DD",
"excludeFolders": ["Templates", "Attachments"],
"projectsPath": "Projects",
"projectTemplatePath": "Templates/Project.md"
}New tasks are added to today's daily note under the ## Journal heading by default. If the daily note doesn't exist yet, sift creates it using a template that matches the standard Obsidian daily note format (frontmatter, tasks query, journal section, dataview query, navigation links).
Tasks can also be added to project files using sift add --project <name>, which inserts them under the ## Tasks heading. Tasks added to project files automatically include a β YYYY-MM-DD created date.
Freeform notes (not tasks) can be added with sift note. By default, notes go under ## Journal in today's daily note. Use --project to target a project file (defaults to ## Notes heading), and --heading to target a custom section. Notes added to projects automatically create a changelog entry.
sift review generates a summary of activity over a time period: tasks completed, tasks created (still open), project changelog entries, new vault notes (meetings, weblinks, etc.), stale tasks, and upcoming tasks. Defaults to since last Friday (designed for weekly reviews). Use --since <date>, --days <N>, or --until <date> for custom periods.
Projects are markdown files in the configured projectsPath folder (default: Projects/) with type: project in their YAML frontmatter. Each project tracks a standard set of metadata:
| Field | Description |
|---|---|
status |
active (default), planning, someday, or done |
created |
Date the project was created (set automatically by sift project create) |
timeframe |
Optional planning horizon (e.g. Q2 2026) |
tags |
Optional list of tags |
sift projects # list all projects
sift projects --tag vibecode # filter by tag
sift project create "My Project" # create from template
sift project set "My Project" --status active --tags ai tooling
sift project path "My Project" # get vault-relative file pathsift summary shows a projects section with active/planning projects at full brightness and someday/done projects dimmed.
sift/
βββ packages/
β βββ core/ # @sift/core - shared library
β β βββ src/
β β βββ parser.ts # Parse/format Obsidian Tasks emoji syntax
β β βββ scanner.ts # Find and filter tasks across the vault
β β βββ writer.ts # Add tasks/notes and complete tasks
β β βββ projects.ts # List, find, and create projects
β β βββ config.ts # Configuration resolution
β β βββ dates.ts # Local timezone date helpers
β β βββ types.ts # TypeScript interfaces
β β βββ index.ts # Public API
β βββ cli/ # @sift/cli - command-line interface
β β βββ src/
β β βββ index.ts # CLI commands (commander.js)
β β βββ format.ts # Terminal formatting (chalk)
β βββ raycast/ # Raycast extension
β β βββ src/
β β βββ summary.tsx # Task overview command
β β βββ list-tasks.tsx # Searchable task list
β β βββ next-tasks.tsx # Priority-sorted view
β β βββ add-task.tsx # Add task form
β β βββ config.ts # Raycast preferences adapter
β βββ agent-skill/ # AI agent integrations
β βββ src/
β β βββ mcp-server.ts # MCP server for Claude Code/Desktop
β βββ SKILL.md # Agent skill definition
β βββ tools/
β βββ sift.ts # OpenCode custom tools
βββ skills/
β βββ sift/ # Symlinks for `npx skills add`
β βββ SKILL.md β packages/agent-skill/SKILL.md
β βββ tools/sift.ts β packages/agent-skill/tools/sift.ts
βββ docs/
β βββ agent-integration.md
βββ AGENTS.md
βββ package.json # npm workspaces root
# Install dependencies
npm install
# Build all packages
npm run build
# Build and watch a specific package
npm run dev --workspace=packages/coreMIT
