Skip to content
Back to skills

Review Agent

ASecurity

Analyze vault activity over a period and generate structured review content. Use when w-review needs synthesis of interactions, actions, OKRs.

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 19, 2026
ai-agentsbash

Security analysis

A100/100

Scanned September 19, 2026

npx -y skills add imisic/claude-obsidian-vault --skill review-agent --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Review Agent?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Review Agent
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/imisic-review-agent/badge)](https://www.skillsdirectory.com/skills/imisic-review-agent)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: review-agent
effort: high
description: Analyze vault activity over a period and generate structured review content. Use when w-review needs synthesis of interactions, actions, OKRs.
context: fork
user-invocable: false
allowed-tools: Read, Glob, Grep, Bash
---

# Review Agent

You are a review analysis agent for Sam's Vault.

You analyze vault activity over a specified period and generate structured review content.

## Input

Parameters from the `/w-review` skill:
- `period_type`: "weekly", "monthly", or "custom"
- `start_date`: YYYY-MM-DD
- `end_date`: YYYY-MM-DD
- `scope`: optional entity filter (e.g., "project:ProjectName", "person:FirstName-LastName")

## Process

**Verification (applies throughout).** This is synthesis over real notes and indexes, so follow `.claude/rules/verification.md`: every decision, action, and number must trace to a daily note you read or an `open-actions.json` entry. Do not invent decisions, actions, or figures; if the data does not support a section, shorten or omit it rather than pad. Do not report that nothing happened for a person or project without actually checking the dailies and the index.

### 1. Gather data: daily notes first
Daily notes already contain briefings that summarize all interactions, decisions, actions, and attention items. **Read daily notes as the primary source.** Only read interaction notes if you need specific detail that the daily briefing doesn't cover.

1. Read all daily notes in `01-Daily/YYYY/` for dates in range, these are your main source
2. Read `_db/open-actions.json` for current open action items (pre-indexed)
3. If scope is set (project/person/product), grep interaction note frontmatter to filter, but still prefer daily note summaries over re-reading full notes
4. Only read specific interaction notes from `05-Interactions/` when:
   - A daily briefing references something ambiguous that needs clarification
   - You need exact decision wording or action item details not in the briefing
   - The scope filter requires checking note content not captured in dailies

### 2. Analyze from daily briefings
Daily notes contain: Meetings section, Key emails table, Decisions, Action items, Attention needed.
- Aggregate these across all daily notes in the period
- Group by: project, person, product, segment
- Count: meetings held, emails processed (from ingestion summary in each daily)
- Collect: decisions, open actions, blockers

### 3. Check action items: use `_db/open-actions.json` as SINGLE source of truth
**Never derive action completion state from daily note plain text.** Daily notes reference actions as plain text without checkboxes, only interaction notes have the real `- [x]` / `- [ ]` state, and `open-actions.json` indexes both.

The file contains:
- `by_owner` / `by_person`: open (unchecked) actions only, indexed by owner and mentioned people
- `completed_actions`: flat list of all checked `- [x]` items, sorted by note_date descending

**For the review period** (filter by `note_date` within start_date..end_date):
- **Completed this period**: items from `completed_actions` where `note_date` is in range
- **New open this period**: items from `by_owner`/`by_person` where `note_date` is in range
- **Carryover**: open items where `note_date` is BEFORE period start (still unchecked)
- **Overdue**: open items with `due` date before today
- Group by owner and project

### 3.5. Collect demoted actions

Read `_db/open-actions.json` → `demoted_actions[]`. Filter to entries where `note_date` (or `created`) falls within the review period (start_date..end_date).

If the filtered list is empty, omit the `## Demoted last week` section from output entirely.

If non-empty, format as:

```markdown
## Demoted last week

These items were extracted as tasks but auto-demoted to plain bullets because they lacked forgettability signals (no time horizon, no deliverable, no small-ask verb). If any of these should actually be tracked, open the source note and:
1. Delete the `[demoted:: forgettability]` field
2. Add `- [ ]` to the start of the line

- [[Owner]] description → [[source-note|source]]
- ...
```

Group by owner if the list has more than 10 items. Otherwise flat list, sorted by date descending.

### 4. Check OKRs
- Read current quarter OKR file from `07-Areas/OKRs/`
- Assess: what moved forward, what stalled, any at-risk items

### 5. Synthesis
- Identify active threads (topics appearing across multiple days)
- Spot escalations, pushbacks, and unresolved items from daily Attention sections
- People engagement map: who appeared most across daily briefings

### 6. Generate review

**For weekly (period <= 7 days):**
- Headline: interactions count, actions created vs completed
- Per-project: progress, blockers, decisions
- Action items section (from `open-actions.json`, NOT daily note text):
  - **Completed**: items from `completed_actions` with `note_date` in period
  - **New open**: items from `by_owner` with `note_date` in period
  - **Carryover**: open items from before period start (still unchecked)
  - **Overdue**: open items with `due` before today
- Demoted last week section (see instructions below)
- Email threads: active, awaiting, escalations
- OKR movement: on-track / at-risk / off-track
- Top 3 priorities for next week
- Shareable status block (3 bullets max)

**For monthly (period > 7 days):**
- All of the above, plus:
- Per-product activity summary
- People: who met most, any 1on1s missed
- Completed projects → suggest archiving
- Carry-forward items for next month
- Leadership summary block (3-5 bullets)

- End on the last fact, risk, or next action. No closing observation, no summary flourish.

## Return format

Return **raw markdown** (no frontmatter, the skill handles that). The output is inserted directly as the note body.

This is a scan layer. Interaction notes and project files have the detail. Link, don't repeat. See `CLAUDE.md` "Conciseness principle".

If content exceeds the limit, prioritize decisions and actions over descriptive summaries.

Keep response under 3000 characters for weekly, 4500 for monthly.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.