Token导航 LogoToken导航TokenDH.com
研究检索操作浏览器github未标认证来源可访问许可证需确认审计提醒

dgDG 搜索

Agent Skill

dg 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

196

周安装

8

GitHub Stars

175

下载量

63
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:dg(DG 搜索)
来源仓库:https://github.com/v1r3n/dinesh-gilfoyle
仓库路径:skills/dg
安装命令:
npx skills add https://github.com/v1r3n/dinesh-gilfoyle --skill dg
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/v1r3n/dinesh-gilfoyle --skill dg

简介

用于查找和筛选相关信息。适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

  • 适合根据关键词快速定位候选结果。
  • 可结合来源仓库和 README 核验具体用法。
  • 安装前建议确认权限范围和命令执行风险。
  • dg 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Dinesh vs Gilfoyle Code Review

Two-agent adversarial code review inspired by HBO's Silicon Valley. Gilfoyle attacks the code with withering technical precision. Dinesh defends it with flustered competence. The banter entertains; the back-and-forth produces genuinely better reviews.

Invocation

  • /dg — review git diff (staged + unstaged)
  • /dg 3 — git diff, max 3 rounds
  • /dg src/auth.ts — review specific file
  • /dg src/auth.ts 3 — specific file, 3 rounds max

Parse Arguments

  1. No args → target = git diff, cap = 5
  2. Number only → target = git diff, cap = that number
  3. Path only → target = that path, cap = 5
  4. Path + number → target = path, cap = number

Orchestration

Step 1: Gather Code

If git diff:

git diff HEAD
git diff --staged

Combine both diffs. If both are empty, tell the user there's nothing to review.

If file/path: Read the target file(s). If path is a directory, read all source files in it.

Always: Gather dependency context. Look for dependency files in the project root and include them in the context sent to agents:

  • package.json, package-lock.json, yarn.lock, pnpm-lock.yaml (Node.js)
  • requirements.txt, pyproject.toml, Pipfile.lock (Python)
  • go.mod, go.sum (Go)
  • pom.xml, build.gradle (Java)
  • Gemfile, Gemfile.lock (Ruby)
  • Cargo.toml, Cargo.lock (Rust)
  • composer.json, composer.lock (PHP)

These are needed for Gilfoyle's dependency vulnerability scan.

Step 2: Run the Debate

Initialize: round = 0, debate_history = []

digraph debate {
    "Gather code" [shape=box];
    "Dispatch Gilfoyle" [shape=box];
    "New issues found?" [shape=diamond];
    "Dispatch Dinesh" [shape=box];
    "All conceded, no pushback?" [shape=diamond];
    "Round >= cap?" [shape=diamond];
    "Ask user: continue?" [shape=diamond];
    "Synthesize final review" [shape=doublecircle];

    "Gather code" -> "Dispatch Gilfoyle";
    "Dispatch Gilfoyle" -> "New issues found?";
    "New issues found?" -> "Synthesize final review" [label="no — converged"];
    "New issues found?" -> "Dispatch Dinesh" [label="yes"];
    "Dispatch Dinesh" -> "All conceded, no pushback?";
    "All conceded, no pushback?" -> "Synthesize final review" [label="yes — converged"];
    "All conceded, no pushback?" -> "Round >= cap?";
    "Round >= cap?" -> "Dispatch Gilfoyle" [label="no — next round"];
    "Round >= cap?" -> "Ask user: continue?" [label="yes"];
    "Ask user: continue?" -> "Dispatch Gilfoyle" [label="yes — extend cap"];
    "Ask user: continue?" -> "Synthesize final review" [label="no"];
}

Each round:

  1. Dispatch Gilfoyle agent (Agent tool, general-purpose) with:

- Full content of gilfoyle-agent.md from this skill's directory - The code under review - Full debate history - Round number - Instruction: "You are doing research only — read the code and produce your review. Do NOT edit any files."

  1. Display Gilfoyle's banter to the user.
  2. Check convergence: Parse Gilfoyle's FINDINGS section. If all findings are repeats from previous rounds → converge.
  3. Dispatch Dinesh agent (Agent tool, general-purpose) with:

- Full content of dinesh-agent.md from this skill's directory - The code under review - Gilfoyle's latest full response - Full debate history - Round number - Instruction: "You are doing research only — read the code and produce your defense. Do NOT edit any files."

  1. Display Dinesh's banter to the user.
  2. Check convergence: Parse Dinesh's FINDINGS section. If every point is [concede] with zero [defend] or [dismiss] → converge.
  3. Append both responses to debate_history, increment round.
  4. If round >= cap: Ask user: *"These two could go all night. Continue for more rounds? (y/N)"*

- Yes → extend cap by original amount, continue loop - No → proceed to synthesis

Convergence announcements (pick one that fits):

  • "Gilfoyle has run out of things to hate. Unprecedented."
  • "Dinesh has conceded defeat. As expected."
  • "These two are going in circles. Separating them before it gets physical."

Step 3: Synthesize Final Review

After the debate ends, produce a structured summary from the full debate transcript.

Display format:

## Dinesh vs Gilfoyle Review — [target]
### [N] rounds of mass destruction

---
### Best of the Banter
[2-4 of the funniest or most insightful exchanges from the debate]

---

### Verdict

#### Critical (Gilfoyle won, Dinesh conceded)
[Issues where Dinesh couldn't mount a defense — these are real and need fixing]
- `file:line` — issue — fix

#### Important (Gilfoyle won after debate)
[Issues Dinesh tried to defend but Gilfoyle's argument was stronger]
- `file:line` — issue — fix

#### Contested (Dinesh held his ground)
[Issues where Dinesh's defense was valid — code is likely fine]
- `file:line` — what was raised — why the defense holds

#### Dismissed (Gilfoyle was nitpicking)
[Issues both sides agree don't matter]
- `file:line` — what was raised — why it's a non-issue

### Strengths
[Things even Gilfoyle grudgingly acknowledged were good]

### Score
Gilfoyle: X | Dinesh: Y
[Tongue-in-cheek tally of who won more arguments]

### Recommended Changes
[Clean checklist — no banter, no context, just what to do]
- [ ] `file:line` — what to change
- [ ] `file:line` — what to change
- [ ] ...

If no changes needed: "Nothing to fix. Gilfoyle is furious."

Step 4: Offer Comic Strip

After displaying the final review, ask the user:

*"Want a comic strip of the best moments? (y/N/pr)"* - y — generate and open in browser - pr — generate, convert to PNG, and attach to the current PR as a comment - N — skip

If y or pr, generate an HTML comic strip:

  1. Read the comic template from comic-template.html in this skill's directory.
  2. Fill in the template placeholders:

- {{REVIEW_TARGET}} — the target reviewed (e.g., "UI Codebase", "git diff", file path) - {{ROUND_COUNT}} — number of debate rounds - {{GILFOYLE_SCORE}} / {{DINESH_SCORE}} — final scores - {{DATE}} — current date - {{PANELS}} — Generate 4-8 comic panels from the best banter exchanges. Each panel uses this HTML structure:

<!-- Gilfoyle panel -->
<div class="panel gilfoyle">
  <span class="panel-number">1</span>
  <div class="panel-header">
    <div class="avatar"><svg><use href="#gilfoyle-avatar"/></svg></div>
    GILFOYLE
  </div>
  <div class="panel-body">
    <div class="speech">The quote goes here. Use <code>inline code</code> for technical references.</div>
  </div>
</div>

<!-- Dinesh panel -->
<div class="panel dinesh">
  <span class="panel-number">2</span>
  <div class="panel-header">
    <div class="avatar"><svg><use href="#dinesh-avatar"/></svg></div>
    DINESH
  </div>
  <div class="panel-body">
    <div class="speech">The response goes here.</div>
  </div>
</div>

<!-- Full-width panel for dramatic moments -->
<div class="panel gilfoyle full-width">
  <span class="panel-number">3</span>
  <div class="panel-header">
    <div class="avatar"><svg><use href="#gilfoyle-avatar"/></svg></div>
    GILFOYLE
  </div>
  <div class="panel-body">
    <div class="speech">A particularly devastating line that deserves the full width.</div>
  </div>
</div>
  • {{VERDICT_ITEMS}} — Generate verdict items from the final review:
<div class="verdict-item">
  <span class="tag tag-fixed">FIXED</span> CSP nonce replaced with deploy-time placeholder
</div>
<div class="verdict-item">
  <span class="tag tag-contested">CONTESTED</span> MutationObserver lifetime — Dinesh held ground
</div>
<div class="verdict-item">
  <span class="tag tag-dismissed">DISMISSED</span> prop-types — tree-shakes out
</div>
  1. Select the best moments for panels. Prioritize:

- The funniest exchanges (back-and-forth pairs work best) - Moments where Gilfoyle conceded (rare, dramatic) - Dinesh's best zingers - The most technically devastating lines - Keep quotes concise — trim to 1-3 sentences per speech bubble

  1. Write the filled HTML to a timestamped file: /tmp/dg-comic-{timestamp}.html

If y: 5. Open it in the browser: open /tmp/dg-comic-{timestamp}.html 6. Tell the user where the file is saved.

If pr: 5. Convert to PNG using a headless browser:

# Try puppeteer/chromium first, fall back to wkhtmltoimage, then to Safari
npx --yes puppeteer-screenshot /tmp/dg-comic-{timestamp}.html /tmp/dg-comic-{timestamp}.png 2>/dev/null \
  || wkhtmltoimage --quality 90 /tmp/dg-comic-{timestamp}.html /tmp/dg-comic-{timestamp}.png 2>/dev/null \
  || /usr/bin/osascript -e 'tell application "Safari" to open POSIX file "/tmp/dg-comic-{timestamp}.html"'

If screenshot tools aren't available, tell the user to screenshot manually from the browser. 6. Detect the current PR:

gh pr view --json number,url --jq '.number'
  1. Upload the image and comment on the PR: gh pr comment {PR_NUMBER} --body "$(cat <<'EOF' ## /dg Review Comic Strip![Dinesh vs Gilfoyle](/tmp/dg-comic-{timestamp}.png) _Generated by [/dg](https://github.com/v1r3n/dinesh-gilfoyle)_ EOF)" Note: If gh pr comment doesn't support local image upload, upload the image to the PR body as a drag-drop suggestion, or convert to base64 and embed.
  2. Tell the user the comment was posted with a link to the PR.

Key Principles

  • The banter is the feature, not decoration — it keeps reviews entertaining and thorough
  • Dinesh's concessions are the strongest signal — when he can't defend, it's a real issue
  • Successful defenses validate code — if Dinesh can justify it under Gilfoyle's assault, it's solid
  • Always end with actionable summary — fun on the outside, useful on the inside
  • Be technically correct — the humor only works if the technical substance is real

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

36.54%
按下载量换算23

Claude

29.32%
按下载量换算18

Cursor

21.81%
按下载量换算14

Gemini CLI

9.01%
按下载量换算6

安全审计

Gen Agent Trust Hub

可疑

Socket

通过

Snyk

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills