
Security News
RubyGems Adds Cooldown Feature to Bundler for Newly Published Gems
RubyGems and Bundler 4.0.13 introduced an opt-in cooldown feature that delays newly published gems during dependency resolution.
vault-tasks
Advanced tools
Markdown-file task manager for solo devs building with Claude Code.
Tasks are plain markdown files with YAML frontmatter. They live in your repo (or Obsidian vault), are version-controlled with git, and are readable by humans and LLMs alike. Zero runtime dependencies.
npm install -g vault-tasks
Or use without installing:
npx vault-tasks <command>
Requires Node.js >= 20.
If your project's lockfile is Python-based and you'd rather pin vault-tasks alongside your other dev dependencies:
pip install vault-tasks
# or
uv add --dev vault-tasks
The pip wheel is small (~100 KB) and bundles the same compiled JS that ships on npm. It still requires node (>= 20) on PATH — the wheel does not vendor a Node.js runtime.
# Initialize in your repo/vault root
vt init
# Create a task
vt new "Fix login redirect bug" --priority high --tags auth,bug
# See what's open
vt list
# Start working on it
vt start 1
# Mark it done (auto-archives by default)
vt done 1
vt init creates a .vault-tasks.toml config and a backlog/ directory. Tasks are markdown files with ULID prefixes (e.g., 01HYX3KQPD7NG8RRGSSFQ9XNHY-fix-login-redirect-bug.md). Sequential numeric IDs (0001-...) are also supported via config.
| Command | Description |
|---|---|
vt new <title> | Create a task. Options: --priority, --tags, --source, --commit |
vt list | List open tasks. Options: --status, --priority, --tag, --all |
vt search <keyword> | Search titles and body text. --all includes archived |
vt show <id> | Print full task file |
vt start <id> | Set status to in-progress |
vt done <id> | Set status to done (auto-archives) |
vt edit <id> | Update fields: --status, --priority, --tags |
vt stale | List open tasks older than 14 days. --days to customize |
vt archive | Move all completed tasks to the archive directory |
vt tags | List all tags and their counts |
vt lint | Audit the vault: broken wikilinks, orphan evergreens, stale refs, drift. --only, --scope, --json, --quiet, --no-suggestions |
vt init | Initialize config and backlog directory |
vt install-skills | Install Claude Code skills and rules. --install, --list, --update |
Task lookup (<id>) accepts a ULID prefix (e.g., vt done 01HYX), a numeric ID for sequential vaults (e.g., vt done 1), or a substring match against the filename (e.g., vt done login).
Each task is a markdown file with YAML frontmatter:
---
title: "Fix login redirect bug"
status: open
priority: high
tags:
- auth
- bug
created: 2026-04-02
source: "[[2026-04-02 Session Log]]"
---
# Fix login redirect bug
After OAuth callback, users are redirected to `/` instead of the page they came from.
open, in-progress, done, wont-dohigh, medium, lowvt list --tag[[wikilinks]])Extra frontmatter fields (e.g. due, assignee) are preserved through all operations.
vt init creates .vault-tasks.toml at your vault root:
[paths]
backlog_dir = "backlog" # where task files live
archive_dir = "archive" # relative to backlog_dir
# journal_dir = "journal" # build logs and session notes
# projects_dir = "projects" # project folders with CONTEXT.md
# evergreen_dir = "evergreen" # evergreen/zettelkasten notes
[task]
# statuses = ["open", "in-progress", "done", "wont-do"]
# priorities = ["high", "medium", "low"]
# default_priority = "medium"
# default_status = "open"
# archive_statuses = ["done", "wont-do"]
# auto_archive = true
[id]
# strategy = "ulid" # "ulid" | "sequential" | "timestamp"
# pad_width = 4 # zero-pad width (only used with sequential)
[slugify]
# max_length = 60
The config file is discovered by walking up from the current directory, so it works from any subdirectory.
vault-tasks ships with skill templates that teach Claude Code how to work with your task backlog:
vt install-skills --install
This installs into .claude/skills/ and .claude/rules/:
| Skill | What it does |
|---|---|
/brief | Pre-session briefing: open tasks, last session context, stale threads |
/build-log | End-of-session log: what was built, learned, decided. Extracts tasks |
/weekly-review | Consolidates journal entries, creates evergreen notes, triages backlog |
/task | Quick task creation/management from within a session |
/lint | Vault health check: broken wikilinks, orphans, stale refs, convention drift |
Skills reference configurable vault paths (journal_dir, projects_dir, evergreen_dir) which are substituted from your .vault-tasks.toml at install time. Customize any skill by creating a SKILL.local.md next to the installed SKILL.md -- local files are never overwritten.
An Obsidian Bases dashboard (backlog.base) is also installed for visual task management.
vault-tasks also exports a programmatic API:
import { loadConfig, TaskStore } from "vault-tasks";
const config = loadConfig();
const store = new TaskStore(config);
// Create
const task = store.create({ title: "My task", priority: "high", tags: ["api"] });
// Query
const all = store.loadAll();
const results = store.search("login");
const stale = store.stale(14);
const tags = store.allTags();
// Update
store.update(task, { status: "done", priority: "low", tags: ["api", "shipped"] });
store.archiveCompleted();
TaskStore -- all CRUD operationsloadConfig / findConfigFile -- config discovery and parsingparseFrontmatter / writeFrontmatter -- YAML frontmatter utilitiesslugify -- title to kebab-case filenamelintVault -- run all lint checks; returns a LintReportbuildIndex, resolveTarget,
collectWikilinks, findBrokenLinks, findOrphanEvergreens,
findStaleReferences, findEvergreenDrift, attachSuggestionsTask, CreateTaskOpts, Config, LintReport, LintOptions,
WikiLink, VaultFile, BrokenEntry, SuggestionMIT
FAQs
Markdown-file task manager for solo devs building with Claude Code
We found that vault-tasks demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
RubyGems and Bundler 4.0.13 introduced an opt-in cooldown feature that delays newly published gems during dependency resolution.

Security News
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.

Security News
Federal audit finds NIST lacked a plan to clear the NVD backlog, wasted funds on duplicate work, and delayed use of CISA data.