agentleFS
dailyherolddailyherold/skills/peer-review/SKILL.md

peer-review

Skill0 starsChanged 33 days agoMITView on GitHub

Request a second opinion or cross-check from another AI agent running in a different tmux pane (opencode, kiro, another Claude Code instance, etc.). Writes context to a reviews/ subdirectory of the skill's base directory, discovers available panes, and injects a review prompt into the target pane via tmux send-keys.

  • Deletes or force-pushes

47 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use usfiscaldata, research-grants and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • yf8578Skill

    usfiscaldata

    Query the U.S. Treasury Fiscal Data API for federal financial data including national debt, government spending, revenue, interest rates, exchange rates, and savings bonds. Access 54 datasets and 182 data tables with no API key required. Use when working with U.S. federal fiscal data, national debt tracking (Debt to the Penny), Daily Treasury Statements, Monthly Treasury Statements, Treasury securities auctions, interest rates on Treasury securities, foreign exchange rates, savings bonds, or any U.S. government financial statistics.

    Also in 7 projects that use this

  • garri333Skill

    research-grants

    Write competitive research proposals for NSF, NIH, DOE, DARPA, and Taiwan NSTC. Agency-specific formatting, review criteria, budget preparation, broader impacts, significance statements, innovation narratives, and compliance with submission requirements.

    Also in 11 projects that use this

  • garri333Skill

    arboreto

    Infer gene regulatory networks (GRNs) from gene expression data using scalable algorithms (GRNBoost2, GENIE3). Use when analyzing transcriptomics data (bulk RNA-seq, single-cell RNA-seq) to identify transcription factor-target gene relationships and regulatory interactions. Supports distributed computation for large-scale datasets.

    Also in 10 projects that use this

  • SoljournerSkill

    get-available-resources

    Enumerate installed packages, databases, and tools for engineering workflows

    Also in 10 projects that use this

  • +8 more from garri333

The file

Show its rules and text

We split this skill into the rules it gives an agent

19 rules. 0 are common, 10 are distinctive, and 9 are very specific to this project.

  • 0

    Common

    Most of the 38 edited versions we read keep these.

  • 10

    Distinctive

    This author's own choices. Worth a look.

  • 9

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  • could be automatic: a setting could enforce it
  1. Distinctive:

    If the user requests multiple formats, write to each and send a reviewer prompt per format.

    line 50
  2. Very specific:

    Use this as {reviews_dir} in all subsequent steps.

    line 64
  3. Very specific:

    If a session parameter was provided, use it.

    line 68
  4. Distinctive:

    Run this command and present the output to the user so they can identify the target pane:

    line 84
  5. Very specific:

    Do not choose or default a pane yourself — the user knows which agent they want and may have specific reasons for their choice.

    line 92
  6. Very specific:

    Use its output as {timestamp} below.

    line 106
  7. Distinctive:

    Read that file — it contains write instructions and a reviewer prompt template

    line 111
  8. Distinctive:

    If every format fails, report to the user and stop.

    line 116
  9. Distinctive:

    Multi-format broadcast: If the user explicitly asks for multiple formats, write to each specified format (don't stop at first success) and …

    line 118
  10. Very specific:

    Use the reviewer prompt template from the format file chosen in Step 3.

    line 124
  11. Very specific:

    Do NOT poll or loop waiting for response.md.

    line 145
  12. Distinctive:

    Proactive cleanup check: After confirming the review is sent, run:

    line 148
  13. Distinctive:

    If the count is 10 or more, mention it briefly — e.g.

    line 152
  14. Very specific:

    When the user asks you to read the review, use the Response Location specified in the format file that was used (see its ## Response …

    line 158
  15. Distinctive:

    After reading and summarizing the review, ask: "Would you like to clean up this session?"

    line 164
  16. Very specific:

    Never use rm -rf or wildcards.

    line 173
  17. Distinctive:

    When invoked with "clean up comms" or "clean peer review files" (without starting a new review):

    line 177
  18. Distinctive:

    Ask which session(s) to remove.

    line 184
  19. Very specific:

    If both agents are Claude Code instances in the same session, consider using native Claude Code Teams instead …

    line 190

“Common” is measured: kept by at least 6 in 10 of the 38 edited versions of this file we could read. “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

peer-review skill

Purpose

Bridge between agent harnesses running in separate tmux panes. Use when you want to: check your own work, get a second opinion on a design decision, have another agent verify a refactor, or collaborate on a multi-step task.

Also handles cleanup of comms files — trigger with: "clean up comms", "clean peer review files".

Data Exchange Formats

Try each format in order. Stop at first success. Each linked file specifies where to write, success/failure detection, reviewer prompt, and cleanup for that format. Request content schema is identical across all formats — only the destination varies.

  1. Local Markdown
  2. Obsidian
  3. Logseq

If the user requests multiple formats, write to each and send a reviewer prompt per format.

Step-by-step instructions

Step 0 — Resolve the reviews directory

The skill loader injects a line at the bottom of this skill content:

Base directory for this skill: file:///path/to/peer-review

Extract the path by removing the file:// scheme prefix from the URL. For example, file:///Users/foo/.config/opencode/skills/peer-review becomes /Users/foo/.config/opencode/skills/peer-review. Then append /reviews to get the reviews directory.

Use this as {reviews_dir} in all subsequent steps. This is not a user-supplied parameter — it is derived from the skill loader. Do not hardcode any path.

Step 1 — Establish session name

If a session parameter was provided, use it. Otherwise derive one from the current date and the subject being reviewed:

date +%Y%m%d

Combine that date with a 2-3 word kebab-case slug you infer from what's being reviewed — e.g. 20260304-jwt-refactor, 20260304-rate-limiter, 20260304-email-fix. Prefer concrete nouns over generic terms like "code" or "review". If two sessions might collide, append -2 etc.

This format sorts chronologically in ls output while staying readable.

Step 2 — Discover available panes (if no target provided)

Run this command and present the output to the user so they can identify the target pane:

tmux list-panes -a -F '#{pane_id}  #{session_name}:#{window_name}.#{pane_index}  cmd=#{pane_current_command}  path=#{pane_current_path}'

Present the list to the user and wait for them to pick a target pane. Do not choose or default a pane yourself — the user knows which agent they want and may have specific reasons for their choice. Accept either session:window.pane or pane ID (%N) — both work with tmux send-keys -t.

Note: kiro panes may show fish as the command due to a known bug. Use the session:window.pane format (matches the tmux status bar) to identify them.

Step 3 — Write context using the first available format

First, capture the current UTC timestamp:

date -u +%Y-%m-%dT%H:%M:%SZ

Use its output as {timestamp} below.

Iterate through the Data Exchange Formats list (above). For each format in order:

  1. Extract the relative path from the markdown link (e.g. [Local Markdown](./resources/formats/local-markdown.md) → ./resources/formats/local-markdown.md), then resolve it against {base_dir} to get an absolute path (e.g. {base_dir}/resources/formats/local-markdown.md)
  2. Read that file — it contains write instructions and a reviewer prompt template
  3. Attempt to write the request using the ## Write instructions in that file
  4. On success: record which format was used, load its ## Reviewer Prompt Template for Step 4, and stop
  5. On failure: tell the user (e.g. "Logseq unavailable, trying next format...") and continue to the next format

If every format fails, report to the user and stop.

Multi-format broadcast: If the user explicitly asks for multiple formats, write to each specified format (don't stop at first success) and send a reviewer prompt per format.

Request schema: see {base_dir}/resources/schema.md — read it before writing the request content.

Step 4 — Inject prompt into target pane

Use the reviewer prompt template from the format file chosen in Step 3. Each format file has a ## Reviewer Prompt Template section — substitute actual values (no placeholders) before sending.

The prompt must be self-contained — the reviewing agent has no other context. Every template should make explicit:

  • exactly where to read the request and where to write the response (tool name, page name, or absolute path)

Send with:

tmux send-keys -t '{target}' '{filled-in prompt from format file}' Enter

Where {session-slug} is the human-readable part of the session name (e.g. nix-config-conundrum, jwt-refactor) — not the full session ID with date prefix.

Step 5 — Confirm and wait

Tell the user:

  • The format used (e.g. "Written via Logseq" or "Fell back to local markdown")
  • Where the request was written (page name, vault path, or file path)
  • The prompt has been sent to the target pane
  • Where the response will appear when the reviewer is done (per the format file's "Response location" section)
  • How to read the review when ready (tool and location)

Do NOT poll or loop waiting for response.md. The human will come back and ask you to read it when the reviewing agent has finished.

Proactive cleanup check: After confirming the review is sent, run:

ls {reviews_dir}/*.md 2>/dev/null | wc -l

If the count is 10 or more, mention it briefly — e.g. "By the way, there are N review files in the reviews directory — want me to help clean up old ones when we're done here?" Don't block on it; just flag it and move on.

Reading a review (follow-up)

When the user asks you to read the review, use the Response Location specified in the format file that was used (see its ## Response Location section). For local markdown (the current default): Read {reviews_dir}/{session}-response.md

Then summarize the reviewer's feedback and suggest next steps.

Step 6 — Cleanup (optional)

After reading and summarizing the review, ask: "Would you like to clean up this session?"

Cleanup is format-dependent — follow the ## Cleanup section in the format file used. For local markdown, check each file and delete only those that exist using exact fully-qualified paths:

test -f {reviews_dir}/{session}-request.md && rm {reviews_dir}/{session}-request.md
test -f {reviews_dir}/{session}-response.md && rm {reviews_dir}/{session}-response.md

Never use rm -rf or wildcards.

Cleanup trigger

When invoked with "clean up comms" or "clean peer review files" (without starting a new review):

  1. List all .md files in {reviews_dir}/:
    ls {reviews_dir}/*.md
  2. Group by session prefix and present to the user.
  3. Ask which session(s) to remove.
  4. For each confirmed session, delete its files individually by exact path (see Step 6 above).

Notes

  • Context files are ephemeral scratch space. Don't rely on them persisting across days.
  • If both agents are Claude Code instances in the same session, consider using native Claude Code Teams instead (CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1). This skill is primarily for cross-harness coordination (Claude Code ↔ opencode, etc.).
  • For multi-step collaboration (not just review), use {session}-request.md and {session}-response.md as a back-and-forth scratch pad, incrementally appending.

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.