Agent skill

fresheyes

Use when the user asks for "fresh eyes", an independent review, or a second opinion on code, commits, plans, or files.

Stars 9
Forks 3

Install this agent skill to your Project

npx add-skill https://github.com/danshapiro/fresheyes/tree/main/skills/fresheyes

SKILL.md

Fresh Eyes - Independent Code Review

Invoke an independent model to perform a code review. The reviewer has zero context from your conversation — only the repo and the scope you give it.

Instructions

Step 1: Ensure changes are committed

The reviewer uses git commands and only sees committed code. Before invoking, verify all relevant changes are committed. If not, commit them first (or tell the user uncommitted changes won't be reviewed).

Step 2: Determine the review scope

{{#if args}} Use the provided scope: {{args}} {{else}} Default scope: "Review the staged changes using git diff --cached. If nothing is staged, review the most recent commit using git show HEAD." {{/if}}

The scope should be a clear, specific instruction telling the reviewer what to examine. The reviewer has NO context from your conversation — only the repo and what you tell it.

The user's instructions are paramount. If the user says "do a security review of src/auth/", pass that through faithfully — the scope becomes "Review the files in src/auth/ for security issues." If the user does not scope the review, DO NOT PROVIDE INSTRUCTIONS THAT LIMIT THE SCOPE OF THE REVIEW. Do not use your judgment about what to review, only relay any opinions by the user, if any. Preserve reviewer independence; do not send instructions to the judge.

Good scope examples:

  • Review the staged changes using git diff --cached.
  • Review commit abc1234 using git show abc1234.
  • Review the files in src/auth/.
  • Review the files in src/auth/ for security issues. (user explicitly asked for security review)
  • Review the plan in docs/plans/2025-01-03-feature.md.
  • Review the changes between main and this branch using git diff main...HEAD.
  • Review the changes in the worktree at ../feature-worktree using git diff

Bad scope examples:

  • check out what we just did (reviewer has no context for "what we just did")
  • review src/auth/ again; the buffer overflow has been fixed (don't add your own context — either say nothing, or pass through what the user asked for)

Step 3: Choose a provider

Default to a different model family from yourself — model diversity improves review quality.

  • You are Claude → use --gpt
  • You are GPT/Codex → use --claude
  • You are neither → use --gpt
  • User explicitly requests a provider → honor it (--gpt or --claude)

The provider keyword controls which model runs the review. Do NOT include it in the scope text.

If the model you chose throws an error, try another. If that also throws an error, stop and ask the user what to do. DO NOT CONTINUE IF YOU CANNOT FOLLOW THESE INSTRUCTIONS.

Step 4: Invoke the independent reviewer

The script path is fresheyes.sh inside this skill's base directory (shown at the top of these instructions).

bash
bash "<base-directory>/fresheyes.sh" [--gpt|--claude] "<scope from step 2>"

If no scope is provided, it defaults to reviewing staged changes or HEAD.

Caller status check: Poll once per minute with bash "<base-directory>/fresheyes-progress.sh"; if the returned line count increases between polls, the review is still progressing.

Timeout handling: This skill has a 15-minute timeout. If the review times out, retry with a 30-minute timeout (1800000ms).

Step 5: Report results

Output the review response exactly as returned.

Common Mistakes

  • Forgetting to commit — The reviewer only sees committed code. Uncommitted changes are invisible.
  • Biasing the reviewer on your own initiative — If the user just said "review src/auth/ with fresh eyes", don't editorialize the scope into "review src/auth/ for security issues." But if the user asked for a security review, pass that through faithfully.
  • Vague scope — "Check our recent work" means nothing to a reviewer with no conversation context. Be specific: which commits, files, or diffs.
  • Including provider in scope — "Review using claude the staged changes" passes "using claude" as scope text. Provider goes as a flag (--claude), not in the scope string.
  • Not waiting - Always wait until the timeout.
  • Doing it yourself - either use the process here, or notify the user. Do not try a different approach.

Didn't find tool you were looking for?

Be as detailed as possible for better results