Packs / Weekly Review

Weekly Review

Workflowv1.0.0

A Stop hook that appends a structured summary of every session to REVIEW.md, plus a skill that rolls the week up when it is due.

Install

# once per machine
curl -fsSL https://hookcrate.com/install | bash
# then
hookcrate install weekly-review

Get access

One license covers all packs.

What it does

Memory for the week. The Stop hook runs at the end of every turn and appends a compact entry to REVIEW.md: timestamp, session, the task in one line, files edited, commands run and the outcome — derived from the transcript, no model call. Once a week (or whenever you ask) the weekly-review skill reads the log, groups entries by project and theme, and writes a rollup: shipped, decided, left open, time sinks, next week's three priorities. The hook nudges you when a rollup is overdue, at most once a day.

Usage: Entries accumulate in REVIEW.md automatically. Run /weekly-review on Friday (or when the hook nudges).

When to use this

Use Weekly Review when you run many agent sessions a week and cannot say, on Friday, what actually shipped. Each session leaves a transcript nobody re-reads; the decisions, dead ends and half-finished threads evaporate. The Stop hook fixes the capture side with no model call and no cost: at the end of every turn it appends a compact entry to REVIEW.md — timestamp, session id, the task in one line, the outcome sentence from the final message, files edited, and counts of tool calls, commands and test runs, all derived from the transcript. The skill handles the synthesis side once a week: it groups entries by theme, separates shipped from decided from open, names the time sinks honestly (clusters of sessions with no shipped outcome), carries over last week's open items, and commits to exactly three priorities. The hook nudges when a rollup is more than seven days old, at most once a day. It suits solo operators and small teams who want a record of agent-assisted work without adopting a project-management tool, and anyone billing time who needs to reconstruct what happened. The raw entries are plain markdown you can grep; the rollups read well enough to paste into a status update.

When it triggers

  • Stop hook — end of every Claude turn (appends an entry; nudges when rollup is 7+ days overdue)
  • User invokes /weekly-review, or asks for a weekly summary, rollup, retro or 'what did I do this week'

Preview — a sample session

Illustrative transcript showing the pack in use.

User: Add a --dry-run flag to the deploy script.

Claude: Added --dry-run to scripts/deploy.ts: it prints the rsync and restart commands without executing them. Verified with bun scripts/deploy.ts --dry-run (exit 0, 3 commands echoed) and the existing deploy test still passes (4/4).

✓ Stop hook (weekly-review)
  appended to REVIEW.md:
  ### 2026-03-06 16:21 · session 7c2e91aa
  - task: Add a --dry-run flag to the deploy script.
  - outcome: Added --dry-run to scripts/deploy.ts: it prints the rsync and restart commands without executing them.
  - edited: deploy.ts, deploy.test.ts
  - activity: 14 tool calls, 5 commands, 1 test runs

  Stop hook feedback: weekly-review: the rollup in REVIEW.md is 8 days old.
  Suggest running /weekly-review when the user has a moment.

Claude: Done. Also — the weekly rollup is 8 days overdue; want me to run it now?

User: Yes, /weekly-review.

● Read(REVIEW.md)
  ⎿  23 entries since "## Rollup — 2026-02-26"

Claude:

## Rollup — 2026-03-06

_Range: 2026-02-27 → 2026-03-06 · Entries: 23 (shipped 11, decided 4, open 5, noise 3) · Sessions: 17_

### Shipped
- **Webhook reliability** — retry queue with DLQ (9 tests), DeliveryError on 5xx, per-delivery idempotency header (3 sessions)
- **Deploy tooling** — --dry-run flag, deploy test suite 4/4 (1 session)
- **CSV export** — empty-file bug fixed with before/after capture, regression test (1 session)

### Decided
- Backoff policy 1m·2^n capped at 6h, 6 attempts — matches both providers' retry windows
- Keep SQLite per-tenant; revisit at 5k tenants (research report, 13 verified sources)

### Left open
- Provider B still returns 409 on the first retry in staging — header is sent; suspect their cache (next: capture full request/response pair)
- Rate limiter Retry-After uses wall clock, not window end

### Carry-over from last rollup
- "Migrate CI to bun" — resolved (2026-03-01)
- "Write ADR for queue design" — still open

### Time sinks
- **Flaky e2e login test** — 4 sessions, 210 tool calls, no shipped outcome. Diagnosis: fixing symptoms; needs a reproduction capture, not another retry.

### Next week — three priorities
1. Capture the Provider B 409 with full headers and close it (→ open item 1)
2. Reproduce-first on the flaky login test; delete it if it cannot be captured (→ time sink)
3. Write the queue ADR (→ carry-over)

Appended to REVIEW.md after the entries. The honest finding this week: a third of the tool calls went into a test nobody has reproduced.

settings.json registration

The CLI prints this after install; --apply merges it for you.

{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "bun \"${CLAUDE_PROJECT_DIR}/.claude/hooks/weekly-review.ts\"",
            "timeout": 15
          }
        ]
      }
    ]
  }
}

FAQ

Does the hook slow down my sessions or call a model?

No. It reads the transcript file, extracts counts and file names, and appends a few lines. There is no network call and it always exits 0 — it can never block Claude from stopping.

What if the transcript format changes?

The parser is schema-tolerant: any field it cannot find is left blank and the entry is still written with the outcome line from last_assistant_message, which Claude Code's hooks docs recommend over reading the transcript.

Can I run the rollup more or less often than weekly?

Yes. Set WEEKLY_REVIEW_DAYS for the nudge cadence, and invoke /weekly-review whenever you like — it always rolls up everything since the previous rollup heading.