Your task board is a build artifact: run projects on Markdown and an agent

Your app stack is a state-replication problem

Look at a typical productivity stack and you’ll find the same architecture failure ops people get paid to eliminate: state, copied everywhere. The task app keeps its copy, the notes app keeps another, the research tool holds its threads, and every “integration” is a fragile pipe working overtime to keep them vaguely in sync. Nobody would design this on purpose. So stop.

The setup that replaced most of my stack is two pieces: a folder of Markdown files, and an agent pointed at it (I use Claude Code; anything that can read and edit files safely will do). I landed here partly thanks to an XDA piece on running everything through Obsidian and Claude, and it matches what infrastructure work had already taught me: one source of truth, generated views, and a diff whenever anything changes.

The vault is the database

An Obsidian vault is just a folder of plain text files, which is the entire point. Frontmatter properties — status, priority, due date — behave like a row in a table. Wikilinks are relations. Even Bases, which presents itself as a full-blown database view, is a YAML file underneath, which means an agent can create or update one without ever opening the app.

This is the part people underestimate. Once your data is text, everything downstream becomes automatable, diffable, greppable and scriptable. The apps stop being systems of record and become views — and views are cheap.

Dashboards are generated, never hand-edited

The core trick isn’t note-taking, it’s regeneration. My project notes carry their own checkboxes and deadlines. An /index/ folder holds two generated files: this-week.md and stalled.md. When I ask, the agent rescans the vault, rebuilds both, and shows me a diff of what changed. A deadline I added to a design brief on Tuesday shows up in the weekly view on the next run, without anyone copying anything.

stalled.md earns its keep more than anything else in the vault. Every stuck item gets its blocker quoted from the note itself, and patterns leap out — when half your stall reasons turn out to be the same missing decision, no kanban board will tell you that, but a pattern-reading agent will.

The rules live in CLAUDE.md, where the agent can’t miss them:

## Project dashboards
- /index/this-week.md and /index/stalled.md are generated. Never edit by hand.
- Regenerate only when asked; always show a diff of what changed.
- An item is "stalled" if status is active and updated: is older than 7 days.
- When marking something stalled, quote the blocking text from the note itself.

What it actually replaced

  • The task board. Deadlines and checkboxes live in the project notes they belong to; the weekly view is assembled from them. The board stopped being a place I maintain and became a place I read.
  • The to-do app. Checkboxes in context beat a separate list of orphaned tasks I have to re-decode every time I look at it.
  • Research tool threads. Research-heavy answers get saved as notes in a cache folder, and the agent checks the cache before going back to the source. Same answers, zero re-searching, and the good ones accumulate.
  • Low-fi diagrams. Mermaid and Excalidraw are text. Version-controlled, diffable, living next to the notes they illustrate.

Where text honestly loses

Knowing the edges is what makes the rest of the setup trustworthy:

  • Collaboration. No live multi-user editing on one file. If a doc needs a team poking at it, it goes to a real shared doc — the vault is mine.
  • Notifications. A Markdown file never pings you. File-based scheduled tasks need a machine that’s awake. Phone reminders stay on the phone, full stop.
  • Design. Notes can hold specs and links, but they can’t be the pixels. Figma stays.

Guardrails before you hand over the keys

An agent that edits files is an agent that can edit files wrong. Three rules keep it boring:

  • Generated files are marked as generated, and the agent must show a diff — never a silent rewrite.
  • The vault lives in git. Syncthing keeps devices current; git means an agent mistake is a revert, not a loss.
  • Destructive operations (deletes, bulk moves) require asking first, every time, no matter how confident the agent sounds.

“File over app” isn’t a new idea — Steph Ango was writing it in 2023. What changed is that an agent can now do the transforming. The app stack doesn’t collapse because Markdown got prettier; it collapses because something finally does the chores.

Inspired by Claude and Obsidian now run every workflow I needed separate apps for (XDA Developers).

Leave a Reply

Your email address will not be published. Required fields are marked *

WordPress Appliance - Powered by TurnKey Linux