Nimble Task Notes
Obsidian plugin for task management that integrates with existing tools rather than replacing them — built to solve a bloat problem, not add to it.
Everyone has opinions about task management. That’s why there are hundreds of apps, and most people still aren’t happy with any of them. When I needed task management for my Obsidian vault, I tried the popular plugins. They had everything: time tracking, Pomodoro timers, dependency graphs, recurring tasks, built-in kanban boards. They also had 20,000+ lines of code, 600KB+ bundles, and 2-5 second load times.
I didn’t need all that. I needed four things: convert checkboxes to task files with natural language dates (“friday”, “in 2 weeks”), pull calendar meetings into my daily notes, associate tasks with projects via frontmatter, and have it all work with other plugins I already use.
So I built Nimble Task Notes. It does those four things really well and nothing else.
Why Less is More
The existing plugins forced you into their way of doing things. Want a different view of your tasks? Too bad, use their built-in views. But Obsidian already has the Bases plugin for custom views, and it’s excellent. Why would I rebuild that?
This became the guiding principle: if another plugin already solves a problem well, don’t duplicate it. Just make sure Nimble Task Notes plays nice with it.
That philosophy shaped every decision about what to include and what to leave out.
What I Built
- Natural language date parsing with chrono-node
- Outlook calendar integration via ICS feeds
- Configurable property names so it works with existing vault setups
- Auto-completion dates when you mark tasks done
- Lazy-loaded services so startup stays fast
What I Deliberately Didn’t Build
Custom views. The Bases plugin handles that beautifully.
Time tracking. There are dedicated plugins for that if you need it.
Recurring task logic. Most people don’t actually use this, and it adds a lot of complexity.
Dependency management. For a personal task list? Overkill.
Built-in kanban. Again, other plugins do this better.
This discipline kept the codebase at ~2,500 lines. The comparable plugins run 20,000+. And because Nimble Task Notes does task file management well and lets other tools handle the rest, the architecture is ready for MCP integration when LLMs become part of how we manage tasks.
Making It Fast
The “small and focused” philosophy only works if it actually feels fast. So I put real effort into performance.
The plugin loads in under 100ms thanks to lazy service instantiation. Services don’t spin up until you actually use them. The bundle comes in at 384KB, well under Obsidian’s 500KB recommendation. Instead of maintaining internal state, it reads directly from Obsidian’s metadata cache. Calendar fetching happens in the background after startup, so it never blocks you from getting to work.
I wrote 104 unit tests covering all the core services: TaskManager, FieldMapper, ServiceContainer, NaturalLanguageParser. The whole thing is TypeScript with full type coverage, and I develop on both Windows and Linux to catch platform-specific issues early.
The first version of the plugin took about 5 seconds to load. After the lazy loading refactor, it’s under 100ms. That 50x improvement proved the architecture was right.
How It’s Working Out
I use this plugin every day. It does exactly what I need and stays out of my way. The natural language parsing means I can type “due friday” and move on. The calendar sync means my meetings show up in my daily notes automatically. When I check off a task, it timestamps the completion.
The project is open-source on GitHub and installable via BRAT for anyone in the Obsidian community who wants task management without the bloat. Building it taught me something useful: sometimes the best product decision is recognizing what not to build.