4 tasks overdue, 6 inbox notes older than a week
You wrote 11 notes and finished 14 tasks this week, mostly on the pricing change and hiring. 4 tasks are overdue, the oldest from a meeting on Oct 2.
Every Sunday evening: open tasks across your Obsidian vault by due date, inbox notes older than a week, and a short summary of what you wrote.
What lands on your board
You wrote 11 notes and finished 14 tasks this week, mostly on the pricing change and hiring. 4 tasks are overdue, the oldest from a meeting on Oct 2.
The weekly review is the habit that keeps an Obsidian vault useful, and the first habit to slip. Tasks hide in meeting notes and daily notes, the inbox folder fills with captures nobody processes, and by month three the vault is a place things go to be forgotten.
This skill reads the vault folder directly, so it needs no plugin and no API. It collects every unchecked task with its due date, lists inbox notes that have sat for more than a week, and sums up what you wrote, so Sunday's review starts from a list instead of a blank page.
Read every .md file under the vault folder, skipping .obsidian/, .trash/ and your templates folder. The skill only reads; it never edits or moves a note.
Find unchecked task lines (- [ ], at any indent). Take the due date from the Tasks plugin's due marker (a calendar emoji followed by YYYY-MM-DD) or a Dataview field [due:: YYYY-MM-DD]. Sort into overdue, due in the next 7 days, and undated, keeping the note and heading each came from.
List notes in Inbox/ (or the folder you name) whose last modified time is more than 7 days ago, oldest first, with the first line of each.
Notes modified in the last 7 days, daily notes named YYYY-MM-DD.md from this week, and tasks completed this week (checked - [x] with a done date). Write three lines on the themes, not a list of files.
Overdue and due-soon tasks with their notes, the inbox notes to process, the counts, and the three-line summary.
With BRIEFKIN_TOKEN set, the agent sends the result as one card that updates in place every run. Without it, you get the report in the chat.
Pick your agent, where the data comes from and how to schedule it; the commands below follow.
One command. It puts the SKILL.md in ~/.claude/skills and in ~/.agents/skills, which Codex, Cursor, Gemini CLI, Copilot CLI and OpenCode read too.
shellcurl -fsSL https://briefkin.dev/skills/obsidian-weekly-review/install | shAsk Claude Code:
promptRun the obsidian-weekly-review skillOr paste the prompt instead of installing:
promptRead my Obsidian vault (the folder I connected), skipping .obsidian, .trash and my templates folder, without changing anything. List unchecked tasks (- [ ]) with their due dates from the Tasks plugin due marker or [due:: YYYY-MM-DD], split into overdue, due in the next 7 days and undated, each with its note. List notes in my Inbox folder not modified for more than 7 days. Count notes modified and tasks completed this week, and write three lines on what I worked on. Start with overdue tasks.Sundays at 18:00, from cron on any machine where Claude Code is signed in:
crontab0 18 * * 0 claude -p "Run the obsidian-weekly-review skill"Add it with crontab -e. A laptop asleep at that time runs it when it wakes if you use launchd or Task Scheduler instead; GitHub Actions works for the API route.
Connect Briefkin once with curl -fsSL https://briefkin.dev/install | sh and every run lands on your board as a report card. How setup works
SKILL.md---
name: obsidian-weekly-review
description: "Every Sunday evening: open tasks across your Obsidian vault by due date, inbox notes older than a week, and a short summary of what you wrote. Use when the user asks for this, or when it runs on a schedule."
---
# Obsidian weekly review: open tasks and stale notes
Every Sunday evening: open tasks across your Obsidian vault by due date, inbox notes older than a week, and a short summary of what you wrote.
The weekly review is the habit that keeps an Obsidian vault useful, and the first habit to slip. Tasks hide in meeting notes and daily notes, the inbox folder fills with captures nobody processes, and by month three the vault is a place things go to be forgotten.
This skill reads the vault folder directly, so it needs no plugin and no API. It collects every unchecked task with its due date, lists inbox notes that have sat for more than a week, and sums up what you wrote, so Sunday's review starts from a list instead of a blank page.
## Two ways to get the data
Use the API or MCP route when you have an MCP server, a CLI or an API token for the app. Otherwise, if you can drive a browser the user is signed in to (Claude in Chrome, a Playwright or Chrome DevTools MCP server), use the browser route. Say which one you used.
## Route A: API or MCP server
### What you need
- Claude Code, Claude Cowork or another agent with the vault folder on the same machine and read access to it. A vault in Obsidian Sync or iCloud works as long as it is synced locally.
If something is missing, say what and stop; do not invent numbers.
### Steps
1. **Walk the vault** (Obsidian): Read every `.md` file under the vault folder, skipping `.obsidian/`, `.trash/` and your templates folder. The skill only reads; it never edits or moves a note.
2. **Collect open tasks**: Find unchecked task lines (`- [ ]`, at any indent). Take the due date from the Tasks plugin's due marker (a calendar emoji followed by `YYYY-MM-DD`) or a Dataview field `[due:: YYYY-MM-DD]`. Sort into overdue, due in the next 7 days, and undated, keeping the note and heading each came from.
3. **Find the stale inbox**: List notes in `Inbox/` (or the folder you name) whose last modified time is more than 7 days ago, oldest first, with the first line of each.
4. **Sum up the week**: Notes modified in the last 7 days, daily notes named `YYYY-MM-DD.md` from this week, and tasks completed this week (checked `- [x]` with a done date). Write three lines on the themes, not a list of files.
5. **Post the review**: Overdue and due-soon tasks with their notes, the inbox notes to process, the counts, and the three-line summary.
## Route B: the browser
### What you need
- Signed in to GitHub (or the cloud drive) with read access to the private repository that mirrors the vault, and a sync that ran since you last wrote in Obsidian.
If something is missing, say what and stop; do not invent numbers.
### Steps
Start at https://github.com/. The user is signed in already; never type passwords or codes, and ask if a sign-in page appears.
1. **Open the synced copy of the vault**: Obsidian has no web app, so this route reads a copy of the vault that a website shows. The steps assume a private GitHub repository kept current by the Obsidian Git plugin; open the repository from your list. A vault in iCloud Drive (icloud.com), Dropbox or Google Drive works the same way for reading files, with weaker search.
2. **Find open tasks**: Use the repository search box with `"- [ ]"` to list files with unchecked tasks, or open the folders one by one if search returns too much. Read the due marker (a calendar emoji with `YYYY-MM-DD`) or `[due:: YYYY-MM-DD]` on each line and sort into overdue, due in the next 7 days and undated, noting the file and heading.
3. **Check the inbox folder**: Open `Inbox/` (or the folder you use). The file list shows the last commit time per file; notes untouched for more than 7 days are the stale ones. Open each and read the first line.
4. **Sum up the week**: Open **Commits** for the last 7 days to see which notes changed, including daily notes named `YYYY-MM-DD.md`, and search `"- [x]"` with this week's done dates. Write three lines on the themes rather than a list of files.
5. **Write the review**: Overdue and due-soon tasks with their notes first, then the inbox notes to process, then the counts and the three-line summary. Change nothing in the repository.
Note: This route only works when the vault is synced to a place a browser can show. Obsidian Sync has no web view. GitHub code search treats brackets loosely, so expect a few extra matches to skim; commit times show when a note was pushed, not when it was edited in Obsidian. For a vault over a few hundred notes, the local-file route is far faster.
## The report
- **Overdue tasks** and **tasks due in the next 7 days**, each with its note.
- **Undated tasks**: a count, and the oldest few.
- **Inbox**: notes untouched for more than a week.
- **This week**: notes written, tasks completed, and three lines on the themes.
## Post it to Briefkin
When `BRIEFKIN_TOKEN` is set, or `~/.config/briefkin/env` exists (the installer from https://briefkin.dev/docs writes it), also send the result to the user's Briefkin board as one card. Keep the `item_key` the same on every run so the card updates in place, use a new `event_id` per run, and put today's real numbers in place of the example ones. If the request fails, say so once and carry on.
```bash
[ -n "${BRIEFKIN_TOKEN:-}" ] || . ~/.config/briefkin/env
curl -sS -X POST "${BRIEFKIN_URL:-https://briefkin.dev}/v1/events" \
-H "authorization: Bearer $BRIEFKIN_TOKEN" \
-H "content-type: application/json" \
-d @- <<'JSON'
{
"v": 1,
"event_id": "obsidian-weekly-review/<date of this run, e.g. 2026-10-16>",
"item_key": "obsidian-weekly-review",
"project": "Vault",
"source": "Obsidian weekly review: open tasks and stale notes skill",
"kind": "update",
"title": "4 tasks overdue, 6 inbox notes older than a week",
"summary": "You wrote **11 notes** and finished **14 tasks** this week, mostly on the pricing change and hiring. **4 tasks are overdue**, the oldest from a meeting on Oct 2.",
"widget": [
{
"type": "Table",
"props": {
"columns": [
"Task",
"Note",
"Due"
],
"align": [
"left",
"left",
"right"
],
"rows": [
[
"Send revised offer to the design candidate",
"Hiring - designer",
"Oct 9"
],
[
"Draft FAQ for the pricing change",
"2026-10-02 Pricing sync",
"Oct 10"
],
[
"Book accountant for Q3 close",
"Admin",
"Oct 14"
],
[
"Reply to the podcast invite",
"Inbox/Podcast invite",
"Oct 16"
],
[
"Review onboarding mocks",
"Product - onboarding",
"Oct 20"
]
]
}
},
{
"type": "Grid",
"props": {
"columns": 3
},
"children": [
{
"type": "Stat",
"props": {
"label": "Open tasks",
"value": 37
}
},
{
"type": "Stat",
"props": {
"label": "Done this week",
"value": 14,
"tone": "ok"
}
},
{
"type": "Stat",
"props": {
"label": "Stale inbox notes",
"value": 6,
"tone": "warn"
}
}
]
}
]
}
JSON
```
Widgets come from the Briefkin catalog (https://briefkin.dev/v1/catalog). Without a token, just give the user the report.
## Run it on a schedule
Suggested: Sundays at 18:00 (`0 18 * * 0`). From cron, with the agent signed in on that machine:
```bash
0 18 * * 0 claude -p "Run the obsidian-weekly-review skill"
# Codex: codex exec, Gemini CLI: gemini -p, Copilot CLI: copilot -p, OpenCode: opencode run
```
Or use the agent's own scheduler (Claude Code routines, Codex automations, Claude or ChatGPT scheduled tasks): https://briefkin.dev/skills/obsidian-weekly-review#schedule
Source: https://briefkin.dev/skills/obsidian-weekly-review
Claude Code, Claude Cowork or another agent with the vault folder on the same machine and read access to it. A vault in Obsidian Sync or iCloud works as long as it is synced locally.
claude --add-dir ~/Obsidian/Vault; Codex and Cursor work the same way when opened in the folder. Obsidian's CEO, Steph Ango, publishes Agent Skills for Obsidian Markdown, Bases, JSON Canvas and the CLI: /plugin marketplace add kepano/obsidian-skills, then /plugin install obsidian@obsidian-skills.obsidian search query="meeting notes", obsidian tasks daily or obsidian tags counts against the running app (docs).mcp-obsidian, which talks to the Local REST API community plugin with an OBSIDIAN_API_KEY; it includes tools that append to, patch and delete notes, so check what a server can do before you connect it.A report only needs to read the vault: in Claude Code, add deny rules for Edit and Write on the vault path, or point the skill at a synced read-only copy.
No. An Obsidian vault is a folder of Markdown files, and the agent reads them like any other files. Task due dates follow the Tasks plugin's format if you use it, but plain - [ ] tasks without dates are collected too.
Not in this skill; it only reads, so nothing changes in your vault while you are not looking. If you want it to file inbox notes, give it that job in a separate session where you approve each move.
No. The skill runs with your own agent and gives you the report in the chat. With a Briefkin token set, each run also posts it to your board as a report card, so you can glance at it instead of asking again.
Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot CLI, OpenCode, Windsurf and Amp all read SKILL.md files. The install command puts it in ~/.claude/skills and ~/.agents/skills, where they look. ChatGPT, the Claude app and Grok take the prompt instead. Pick your agent under "Install and run it" and the commands change to match.
Yes. Switch the data source to "Your browser" and the steps change to the Obsidian pages themselves: the agent opens github.com in a browser you are signed in to and reads the numbers off the page. Claude Code, Codex, Cursor, Claude app and ChatGPT can drive a browser out of the box; Gemini CLI, Copilot CLI and OpenCode need a Playwright or Chrome DevTools MCP server first. It is slower than the API and needs you signed in, so it suits a report you run by hand or from a scheduler on your own computer.
Skills are free to use with any agent. Briefkin is where their results land: one board for every report, number and question your agents send, with a ping when something needs you.
Free during the open beta. No card.