v1r3n/dinesh-gilfoyle/dg
Claude Code and agent skill by v1r3n/dinesh-gilfoyle
- community
Checking that the SKILL.md file is still in the repository.
Use when the user invokes /dg for an entertaining adversarial code review with Dinesh vs Gilfoyle banter from Silicon Valley
Install
npx vskill@latest install v1r3n/dinesh-gilfoyle/dgSKILL.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
- No args → target = git diff, cap = 5
- Number only → target = git diff, cap = that number
- Path only → target = that path, cap = 5
- Path + number → target = path, cap = number
Orchestration
Step 1: Gather Code
If git diff:
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 = []
Each round:
- Dispatch Gilfoyle agent (Agent tool, general-purpose) with:
- Full content of
gilfoyle-agent.mdfrom 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."
- Display Gilfoyle's banter to the user.
- Check convergence: Parse Gilfoyle's FINDINGS section. If all findings are repeats from previous rounds → converge.
- Dispatch Dinesh agent (Agent tool, general-purpose) with:
- Full content of
dinesh-agent.mdfrom 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."
- Display Dinesh's banter to the user.
- Check convergence: Parse Dinesh's FINDINGS section. If every point is
[concede]with zero[defend]or[dismiss]→ converge.
- Append both responses to debate_history, increment round.
- 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:
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:
- Read the comic template from
comic-template.htmlin this skill's directory. - 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:
{{VERDICT_ITEMS}}— Generate verdict items from the final review:
- 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
- Write the filled HTML to a timestamped file:
/tmp/dg-comic-{timestamp}.html
If `y`:
- Open it in the browser:
open /tmp/dg-comic-{timestamp}.html - Tell the user where the file is saved.
If `pr`:
- Convert to PNG using a headless browser:
```bash # 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.
- Detect the current PR:
``bash gh pr view --json number,url --jq '.number' ``
- Upload the image and comment on the PR:
```bash gh pr comment {PR_NUMBER} --body "$(cat <<'EOF' ## /dg Review Comic Strip
[Image: Dinesh vs Gilfoyle]
_Generated by /dg_ 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.
- 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
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingdg/SKILL.md
Popularity
- Repository stars
- 192
- Repository forks
- 14
- 7-day trend score
- 26
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 13 Sep 2026, a month ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/v1r3n/dinesh-gilfoyle/dg)