agentleFS
jamestexasjamestexas/agents/skills/pr-board/SKILL.md

pr-board

Skill2 starsChanged 6 months agoApache-2.0View on GitHub

Answers "how are my PRs?", "did I address the review?", "anything waiting on me?". Lectio-first via authored-PR activity (reviews/comments by others, excluding your own replies), falls back to gh for coverage gaps, joins to local worktrees, prints a board of what needs you. Read-only.

The file

We split this skill into the rules it gives an agent

4 rules. About 0 are common, 2 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Call memory_authored_activity with since_nanos = now − --since (default 24h).

    line 80
  2. Distinctive:

    If it returns an empty/zero result, that's a real answer ("nothing new on your PRs since <t>") — report it, don't go hunting in gh to …

    line 88
  3. Very specific:

    gh fallback (coverage gaps only): if a PR you know exists isn't in lectio's result, it's likely outside configured gh coverage …

    line 130
  4. Distinctive:

    Read-only. This skill answers a question.

    line 140

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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.

Three views of one question, and where the numbers come from. "Does anything need me?" is answered in three places, and it is worth knowing the lineage before you trust a number:

  1. Canonical Hours' own pr-board skill — scheduled (cron, default every five minutes), it triages pre-fetched lifecycle events into needs_you/active/opened/resolved and writes the board. It is a renderer with judgment, not a crawler, and it has its own lectio connection for enrichment. This is where the board is produced.
  2. The work HUD's needs-you dial and MY PRS panel — ambient display. The HUD reads a local work-board service, which reads the board Canonical Hours wrote. The dial does no triage of its own; it shows that work.
  3. This skill — the interactive mode. You ask, it refreshes, and it answers the follow-up an always-on dial cannot ("did I address the review?") by joining PR threads to your local worktrees.

Two substrates on purpose: lectio is historical and cross-source; Canonical Hours is a scheduled fold serving a current board. Reach for the dial to notice, and for this skill to act — and remember a stale dial usually means the tick did not run, not that nothing needs you.

Arguments

  • --since <dur> — window for "new activity" (e.g. 24h, 3d). Default 24h.
  • --pr <ref> — focus one PR (42090 or owner/repo#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.

  1. Unless --no-refresh: lectio sweep --source gh --if-stale 10m (also --source linear --if-stale 10m if the question touches Linear). --if-stale no-ops when gh swept within 10 min, sweeps otherwise — cheap to call every time.
  2. Optional sanity read: lectio status --json shows per-source last_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 lectio MCP / 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 <t>") — 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>)

owner/repo#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>
owner/repo#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.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.