| name | review |
| description | Run a structured periodic review (weekly, monthly, or quarterly). Orchestrates the full review workflow — pull data, validate structure, work through checklist, include bear-case/disconfirming evidence, and write the review note. Use when the user says "run a weekly review", "time for the monthly review", "let's do the quarterly", or when briefing.py flags an overdue review. |
/review
Run a structured portfolio review. The depth depends on the period.
Step 1 — Determine period and scope
Ask the user which period (weekly, monthly, quarterly) if not specified. Use the one that briefing.py flagged as overdue if ambiguous.
If the user asks for a weekly "review and/or scan" and a weekly review already exists from the past 7 days, run/write the scan first. Only create another weekly review note if at least one is true:
- new portfolio data or a new snapshot was pulled
- a hypothesis triggered
- a new decision/action needs review context
- the latest scan materially changes thesis health
- the user explicitly asks for a new review note after seeing the scan summary
| Period | Depth | Time | When |
|---|
| Weekly | Light | 15–30 min | Every 7 days |
| Monthly | Full | 2–4 hrs | Start of each calendar month |
| Quarterly | Deep | Half day | Start of each quarter (Jan, Apr, Jul, Oct) |
Step 2 — Pre-work (all periods)
Run these before writing anything:
- Lint:
python3 scripts/lint.py --write-index
- Errors: fix before continuing
- Warnings: note them for the review agenda
- Pull live data (if user approves): call
mcp__snaptrade__list_positions
- Run
scripts/snapshot.py to create today's snapshot (if none exists)
- Run
scripts/portfolio_diff.py to diff against last snapshot
- Read context:
strategy/Investment Strategy.md and docs/session-log.md (last 2–3 entries)
- Read latest scan: if a scan exists from the past 7 days in
scans/, read it. If not, run /weekly-scan first. Weekly reviews should ingest scans, but scans can stand alone when no portfolio review is warranted.
Step 3 — Period-specific checks
Weekly (light)
Monthly (full)
All weekly checks, plus:
Quarterly (deep)
All monthly checks, plus:
Step 4 — Write the review note
Create reviews/YYYY-MM-DD-{period}.md from the review template. Fill in all sections, including ## Bear Case / Disconfirming Evidence. Link to decisions, snapshots, and scans. Record action items with - [ ] checkboxes.
Step 5 — Post-work
- Update session log: append to
docs/session-log.md with what was covered and what was deferred.
- Bump
last_updated on any docs that were touched during the review.
- Report: summarize key findings and action items to the user.
Note: Reviews are self-documenting — the review file in reviews/ is the permanent record. No entry in decisions/log.md is needed (only portfolio actions go in the log).
Constraints
- Don't pull SnapTrade data unless the user approves (it's opt-in per CLAUDE.md).
- Don't change conviction levels without asking the user — surface findings, let them decide.
- Don't create holdings files during the review unless the user explicitly asks — just flag them as pending.
- Fix lint errors before proceeding with the review content. Errors mean broken structure.