# Weekly Review

> Summarize a week's (or single day's) Claude-tracked work from claude-mem into the vault's daily journal "# Work" sections and into the Weekly Review journal file. Use when the user asks to summarize a day or week of work "根据claude-mem总结", "总结这周/这几天的工作并写入journal", or references a date range or an ISO week id like 2026-W32, and wants it written into journals/*.md.

- Skill: `goodluckz/weekly-review` (Agent Skill)
- Install (CLI): `npx skillmds@latest add goodluckz/weekly-review`
- Raw SKILL.md: https://api.skillmd.com/api/skills/goodluckz/weekly-review/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Research & Search
- Author: goodluckz (https://skillmd.com/u/goodluckz)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/goodluckz/weekly-review

---


# Weekly Review

Turn claude-mem's tracked tool-use history into readable entries in the Obsidian vault's journal files: fill in each day's `# Work` section, then roll the week up into the `journals/2026-Wnn.md` Weekly Review file.

Vault root: `/Users/zhaoliang/LocalDocuments/vaults/vault`. Daily files live at `journals/YYYY-MM-DD.md`, weekly files at `journals/YYYY-Wnn.md`.

## 1. Resolve the date range

- If the user gives explicit start/end dates, use those verbatim.
- **This vault's week runs Sunday through Saturday, NOT the ISO Monday–Sunday week** — confirmed by the user 2026-08-21 with the example "W19 = 2026-05-03 (Sun) to 2026-05-09 (Sat)". The week number label still matches the ISO week number of that range's Monday–Saturday span; only the Sunday is shifted from being the *last* day of the ISO week to being the *first* day of this vault's week.
- **Caution: a given Sunday and the Monday right after it fall in DIFFERENT ISO week numbers.** ISO weeks run Mon–Sun, so a Sunday is the *last* day of the ISO week that started the Monday *before* it — one lower than the vault-week label you want. Always take the ISO week of the Monday *following* the Sunday (i.e. the range's 2nd day), never the Sunday's own `isocalendar()` result, or the label will be off by one.
- If the user gives a week id (`2026-W32`) with no explicit dates, compute the Sun–Sat range as (ISO Monday − 1 day) through (ISO Monday + 5 days):
  `python3 -c "import datetime; mon=datetime.date.fromisocalendar(2026,32,1); start=mon-datetime.timedelta(days=1); print([str(start+datetime.timedelta(days=i)) for i in range(7)])"`
- If the user gives a plain date (or "today"/"this week") with no week id, first find which vault-week it falls in, then derive the label from that range's Monday — do NOT reuse an existing week file just because the date is close to it:
  `python3 -c "import datetime; d=datetime.date(2026,8,24); start=d-datetime.timedelta(days=(d.isoweekday()%7)); mon=start+datetime.timedelta(days=1); print(start, mon.isocalendar().week)"`
  (`d.isoweekday()%7` maps Sunday→0, Monday→1, …, Saturday→6, so `start` is the Sunday on/before `d`.) Check whether a `journals/YYYY-Wnn.md` for that computed label already exists before assuming the date belongs to whatever week file was most recently touched.
- Note: weekly files created before 2026-08-21 (W01–W34) were built with ISO Mon–Sun boundaries and have NOT been corrected to this Sun–Sat convention — treat their exact day boundaries with suspicion if precision matters, though the week-number labels stay the same.
- Confirm the range back to the user only if it's genuinely ambiguous; otherwise proceed.

## 2. Gather each day's existing journal content

`Read` each `journals/YYYY-MM-DD.md`. Note what's already under `# Happenings` / `# Quick Notes` — don't duplicate personal-life content that's already there. The `# Work` section is what you're filling in, and it should hold *Claude-Code-tracked technical/task work*, not the day's life narrative.

## 3. Pull claude-mem coverage for each day

Use `mcp__plugin_claude-mem_mem-search__timeline` with an `anchor` timestamp (ISO datetime string). Each call returns roughly ±10 items around the anchor — it does **not** cover a full day in one call. For each day:

- Start with an anchor around midday (`YYYY-MM-DDT12:00:00`).
- If the returned window doesn't reach both early morning and late evening, issue additional anchor calls (e.g. `09:00`, `15:00`, `21:00`) to fill gaps — check the timestamps you got back and probe the uncovered stretches specifically.
- A day with **zero** claude-mem entries usually means pure travel/personal/no-tool-use time (this happens often around trips, holidays, family visits). Do not fabricate work for it — leave `# Work` empty and say so in the rollup.
- Batch independent anchor calls for different days in parallel (single message, multiple tool calls) rather than serially.

## 4. Write each day's `# Work` section

For each day with real findings, `Edit` the file's `# Work` section (old_string `"# Work\n\n# Content"`, insert bullets before `# Content`). Rules:

- Bullets should be concrete and specific: what was debugged/built/decided, key filenames or root causes, not vague activity labels.
- Group related claude-mem entries from the same session into one bullet rather than one bullet per tool call.
- Write in whatever language the vault's journals are in (this vault is Chinese) — match the surrounding file's language, don't translate.
- Never touch other sections (`# Happenings`, `# Quick Notes`, etc.) — this is a surgical `# Work`-only edit.
- If a `# Work` heading is missing (rare), add one in the same position the template uses.

## 5. Roll up into the Weekly Review file

Check whether `journals/YYYY-Wnn.md` exists and read it first.

**Template check — this is the part most likely to go wrong.** The weekly template (`template/temp/Weekly Template.md`) uses:
```
# Weekly Review — {{title}}

## Top 3 Things

## Mind

## Social

## Content

## Grateful for

## Others
```
Note `##` (not `#`) headers, and no `Status`/`Conversations`/`Meal`/`Reflection`/`Quick Notes` sections — those belong only to the *daily* template. If you find a `2026-Wnn.md` file using `#` daily-template headers (this has happened before — a week file was accidentally created from the daily template), rewrite it from scratch with `Write` using the weekly structure above, preserving any existing content by mapping it into the closest weekly section.

Established convention in this vault (not in the template file, but used consistently going forward): add a `## Work` section between `## Mind` and `## Social` to hold the week's rollup.

In the Weekly Review file:
- **Framing**: at the top of `## Top 3 Things`, add a short paragraph giving the week's overall shape/character (e.g. "this week split into X days of Y followed by Z days of W") — this is what makes the rollup readable without opening every daily file.
- **`## Work`**: one bullet per day (or per theme, if multiple days share one thread), bolding the date or theme label, pulling the most important 1-2 sentences from that day's `# Work` section. Call out explicitly which days had no tracked work rather than silently omitting them.
- **`## 杠杆分级`** (established convention, added 2026-08-26): right after `## Work`, classify that same week's items into **高杠杆** / **低杠杆或待观察**. Use the judge criterion from `self-analysis-vault/self-model/模块-方法论迭代.md` 第四节「有没有下游」 — not by task category, but by whether the item changed a subsequent judgment, unblocked something, or produced a reusable artifact (a principle, a skill, working code, a corrected data pipeline). Specifically:
  - 纯知识学习本身不天然算高杠杆 —— 只有当天/近期被用掉（学完当天就应用，闭环）或从中提炼出了可复用工具（principle/skill/代码）才算；否则标「待观察」，不要强行归类。
  - 阻塞性修复（数据管线bug、服务故障）即使看起来琐碎也算高杠杆，因为大量下游判断都建立在它之上。
  - 一次性维护/归档类工作默认低杠杆，除非能具体指出下游。
  - 判不出的条目诚实标「待观察」——这个判据本身「只能事后用」，下周或下下周回看时再挪类。
  - Each bullet: item + which day + one clause on what the downstream is (or why it's unclear).
- Don't touch `## Social` / `## Content` / `## Grateful for` / `## Others` unless the user asked about those too.

## 6. Report back

Give the user a compact chat summary (a few bullets, not a re-paste of the whole file) plus a one-line pointer to which files were edited.

