inbox-processorlisted
Install: claude install-skill peter-claude-vault/claude-stem
> **BLOCKED-BY-REDERIVATION** — see `_doc-overhaul/REDERIVATION-REQUIRED.md`
# Inbox Processor
Standing classifier for vault `Inbox/` drops. Picked up by a launchd cron (default
every 15 minutes); processes one batch per tick. The routing decisions are deliberately
conservative: VTT / Zoom / Granola transcripts get routed to `Meetings/`,
reference-shaped notes get routed to `Reference/`, project-shaped items get a hint
frontmatter and stay put (because scaffolding a project tree is too consequential
to do without the user), and genuinely-ambiguous items get tagged `unclassified`
and stay in `Inbox/` for manual triage.
The processor is idempotent. A sha256 content cache means re-running on an
unchanged file is a no-op. Once a file leaves `Inbox/`, the processor forgets it;
nothing is reversed if the user later edits or moves it.
## Invocation
```sh
# One-shot batch (terminal)
./process.sh --vault-root /path/to/vault
# Dry-run — see routing decisions, write nothing
./process.sh --vault-root /path/to/vault --dry-run
# Per-item user-confirmation gate (opt-in; off by default)
./process.sh --vault-root /path/to/vault --gate-each-item
# Install the launchd cron (renders templates/launchd/inbox-processor.plist.tmpl)
./install-cron.sh
# Preview the rendered plist without bootstrapping
./install-cron.sh --dry-run
```
The cron interval is read from `user-manifest.json#/inbox/poll_interval_minutes`
(default 15).
## Flags
| Flag | Default | Meaning |
|---|---|---|
| `--vault-