---
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
