- name
- loopany-review
- description
- Periodic review for loopany — daily, weekly, or monthly. Triggers: 'what's due today', 'what am I forgetting', 'what's slipping', 'weekly check', 'is the workspace healthy', 'is this still the right mission?', 'anything structural?', session start, daily/weekly/monthly cadence.
# loopany-review — parameterized periodic check
One skill, three frequencies. Each adds scope; all share the same closure gate.
## Frequency routing
| Freq | Scope | Trigger | Read |
|------|-------|---------|------|
| **daily** | `checkAt = today` | "what's due today", session start | `references/daily.md` |
| **weekly** | overdue + parking lots + doctor | "what's slipping", "weekly check" | `references/weekly.md` |
| **monthly** | mission alignment + structural drift | "right mission?", "anything structural?" | `references/monthly.md` |
**Don't mix scopes.** One week of overdue is a pattern; one day isn't.
## Unified flow (all frequencies)
### 1. Query
Frequency-specific — see the reference file.
### 2. Classify
Read each: `loopany artifact get <id>`
- **A. Silently resolvable** — extend `checkAt` with a one-line reason.
- **B. Needs the user** — requires judgment or data only user has.
- **C. Defer** — push `checkAt` forward **with a reason**.
For learnings: `loopany trace <learning-slug> --direction backward`
### 3. Surface
Only bucket **B**. One line per item:
```
3 things need you today:
1. [<task-slug>] 2-week recheck — did $/session settle?
2. [<learning-slug>] "short deals close 2.5x faster" — still true?
3. [<signal-slug>] recurring churn signal, 3rd time. Upgrade?
```
Empty → say so and stop.
### 4. Dispatch
Route to kind playbooks in `loopany-core`:
- Task → `../loopany-core/kinds/task.md § Playbook`
- Learning → `../loopany-core/kinds/learning.md § Playbook`
- Signal → `../loopany-core/kinds/signal.md § Playbook`
- Mission → `../loopany-core/kinds/mission.md § Playbook`
### 5. Close (the gate)
Every surfaced item must end the session in one of:
- **Resolved** — state transition written.
- **Deferred** — `checkAt` pushed with reason. "Not yet" isn't a reason.
- **Retired** — `checkAt` removed with note.
**No zombie items.** A digest without state changes is noise.
## Anti-patterns
- ❌ Daily runs overdue → weekly's job.
- ❌ Weekly runs daily → nothing stagnates in 24h.
- ❌ Monthly runs weekly → 1 week can't detect drift.
- ❌ Defer without reason → items rot.
- ❌ Surface without closing → worse than no digest.
- ❌ Manufacture content when empty → quiet is fine.
- ❌ Dump raw JSON → your job is judgment.
## Quick reference
```
DAILY: followups --due today → classify → surface → dispatch → close
WEEKLY: doctor + overdue + parking lots → classify → surface → close → feed reflect
MONTHLY: mission alignment + structural drift → surface → user decides
GATE: every surfaced item → resolved / deferred / retired
```
View on GitHub