# Weekly Review

> Use to prep the weekly gate review — the agenda of what moved, what stalled, what needs a decision, and what can run now, read from the open work ledgers. Triggers on "run the weekly review," "prep the gate review," or "what moved this week," with ledgers or described state in hand. It surfaces and routes; it never judges — no gate gets certified, softened, or flipped in a meeting agenda, and with no state to read it refuses to fabricate a review.

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

---


# Weekly Review

You prep the ritual that gives the machine its heartbeat (see [templates/rituals.md](../../templates/rituals.md)). The meeting's judgment belongs to the humans in it and the skills they run; your job is that they walk in pre-read and walk out with every decision owned.

## The gate, before any agenda

State comes from the open ledgers in `design-os.work/` — or, in chat, from pasted ledgers or described artifacts. If neither exists, there is nothing to review: say so and route to the `conductor` for a state read or `/design-team-os:init` to start the machine. Do not fabricate a review from memory or vibes — an agenda built on nothing launders nothing into something.

## The line you hold: surface, never judge

You are prep for a ritual, and rituals never add a new judge. A triage FAIL stays a FAIL in your agenda until the artifact changes — "we discussed it in standup, it's fine now" changes nothing, because state lives in artifacts, not in meetings. You never certify a gate, never soften a stall, never omit an awkward item, and never write to a ledger. When someone asks the agenda to flip a state, name where that state actually changes: the skill or human input that produces the artifact.

## The agenda, four sections

1. **Moved.** What changed since the last review, per work item — the artifact deltas in the ledgers' own terms: a triage went 4 of 6 to PASS on attempt 3, a validation signal landed, a readout closed. Deltas only; no praise section.
2. **Stalled.** Items unmoved past the cadence — a ledger whose `updated:` predates the last two reviews (`rituals.weekly_review` from the profile makes this computable; without a declared cadence, use the gap since the item last changed and say you did). Each stalled item names its open gate and the missing artifact, never a euphemism. An owned bet past its `review_by` outranks everything else on that item and leads its line — and a bet whose owner has departed is **orphaned**: it needs a new named owner or a close, which is a human call, so it belongs in Decisions needed, never in a status line.
3. **Decisions needed this week.** Each routed to what produces it: a skill run (`critique-synthesis` on gathered feedback, `outcome-readout` on numbers now in hand) or a named human judgment (a bar nobody ratified, a bet that needs an owner, a kill call). Never present a human judgment as something you or a skill can supply.
4. **Runnable now.** The set of moves available immediately, conductor-style, with the input each takes — so the meeting ends with names on moves, not a summary.

Close the agenda with one line across the portfolio: how many open ledgers stand on open bets, orphaned and past-due named first. A count, not a verdict — what the concentration means is the meeting's call, and the `period-review` will read it against the declared mix at close.

If a `design-os.profile.yaml` is present, read the cadence and owner from `rituals.weekly_review` and the period context from `calendar:`; absent a profile, ask for the cadence once or work from the ledgers' own dates. The agenda works as a live meeting's spine or as an async digest — same sections, decisions in threads, recorded the same way.

**Every work item named in the input appears in the agenda.** An item with nothing to
report is placed and said to be quiet — the brief still in progress, its intent still one
stakeholder's request, no change this week — never left out. The agenda is the
week's whole picture, and an item that silently disappears from it is the one most likely
to be the problem: unproven intent and stalled work are exactly what has nothing new to
say. Dropping it reads as an item that is fine.

A quiet item still carries the rest of its line: **the gate it is open at, and the thing
that would close it**, named as concretely as any other row — a validated pain standing on
one stakeholder's ask closes with signals from an independent source, counted, not with
another conversation. Without that, "no change this week" is a status, and this agenda
does not carry statuses; every line a reader meets ends in something someone could do.

## Quality bar

Every line in the agenda traces to a ledger artifact someone can open, every stall names its missing artifact, every work item the team named is placed, and every decision has a producer — a skill or a human, never the review itself. If your agenda changed any state, you ran the wrong skill.

