pr-board — what's new on the PRs I authored
The recurring question this answers: "how are my PRs / did I address the
reviews?" — asked constantly during review cycles, and usually answered by
hand-rolling gh because nothing makes the better tool the default reach.
lectio already has the answer: memory_authored_activity is purpose-built for
"reviews and comments by other people on PRs I authored, since I last looked,
excluding my own replies." This skill makes that the default, keeps it
fresh, and adds the cross-source join (PR ↔ local worktree ↔ notes) that
only lectio can do.
Model: lectio is the substrate; this skill is the reach + freshness + presentation layer. lectio reports last-known state; the skill decides whether that's fresh enough and refreshes if not (the "derive current state" move). gh is the fallback for what lectio doesn't cover, never the first reach.
Arguments
--since <dur>— window for "new activity" (e.g.24h,3d). Default24h.--pr <ref>— focus one PR (42090orchainguard-dev/mono#42090); skips the board, deep-dives that PR's review thread + your reply status.--no-refresh— skip the freshness step (use lectio as-is; faster, possibly stale).
Phase 0 — Freshness (derive current state)
lectio's answer is only as current as its last gh sweep. Before reading,
make it fresh — this is now safe to run alongside the launchd sweep timer
(WAL + busy_timeout, lectio bead fa895f), so it won't error on a lock.
- Unless
--no-refresh:lectio sweep --source gh --if-stale 10m(also--source linear --if-stale 10mif the question touches Linear).--if-staleno-ops when gh swept within 10 min, sweeps otherwise — cheap to call every time. - Optional sanity read:
lectio status --jsonshows per-sourcelast_advanced_at— if gh is hours stale and the refresh didn't move it, the sweep service may be wedged (see lectio bead 0618a0); say so rather than silently reporting stale data.
If the
lectioMCP / CLI isn't available at all, skip to Phase 3 (pure gh fallback) and say up front that this is gh-only, no cross-source join.
Phase 1 — Ask lectio the authored-activity question
Call memory_authored_activity with since_nanos = now − --since
(default 24h). It resolves "mine" from your [identity] gh_logins (falls back
to gh.authors) — no need to pass authors. It returns, per PR you authored:
the PR (repo, number, title, state/merged), and the new items — reviews and
review-comments by people who aren't you, since the window — each with author,
path, preview, timestamp. Author attribution is present (lectio bead 380b79),
so "whose review" is answered without falling back to gh.
If it returns an empty/zero result, that's a real answer ("nothing new on your PRs since ") — report it, don't go hunting in gh to manufacture activity.
Phase 2 — Join each PR to your local context (lectio's edge)
For each PR with new activity, a quick memory_search "<number>" (and/or
memory_traverse on the PR URI) surfaces the cross-source threads lectio
uniquely holds: your local review worktree (fs://…/<repo>-pr-<n>-review),
notes files, the commits that touch the same files, prior turns where you
discussed it. This is the value over gh alone — gh knows the PR, the
filesystem knows your worktree, lectio has both joined on one graph.
For --pr <ref>: skip the board, deep-dive this one — full review timeline
(memory_get_timeline on the PR URI), each reviewer's comments, and crucially
whether you replied after their latest comment (compare your latest
authored item's timestamp vs the reviewer's). That's the literal
"did I address the review?" answer.
Phase 3 — Present the board
One scannable block, sorted by what needs you most (unanswered reviews first):
PR board — new since <window> (gh swept <freshness>)
chainguard-dev/mono#42090 — "title" — OPEN — ⚠ NEEDS REPLY
• Mark: 3 review comments (src/foo.rs, src/bar.rs) — 2h ago — you haven't replied since
• local: <worktree-path>/mono-pr-42090-review worktree, notes at <path>
chainguard-dev/mono#39311 — "title" — OPEN — ✓ replied
• Carol: 1 approval — 1d ago
…
2 PRs with new activity · 1 needs your reply
- What needs you: the short list where a reply or decision is pending — the actual point of the board.
- Attribution: name the reviewer (Mark, Carol) — it's in the data now.
- Cite URIs for claims drawn from lectio (per its epistemic contract), and flag any answer that's from stale data if Phase 0 couldn't refresh.
gh fallback (coverage gaps only): if a PR you know exists isn't in lectio's
result, it's likely outside configured gh coverage (memory_list_sources
shows the scopes). For that specific gap, gh pr view <ref> --json … — and
note it's a coverage gap worth adding to [[gh.repo]] or author_scoped, so
next time lectio has it.
Posture
Read-only. This skill answers a question; it never posts a reply, approves, or comments. When the board says "#42090 needs a reply," handing off to compose that reply is a separate, explicit step the user initiates.