<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pranav Lakhwara</title>
    <description>The latest articles on DEV Community by Pranav Lakhwara (@mythical_hacker).</description>
    <link>https://dev.to/mythical_hacker</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4010159%2F39232c1f-70f9-4fc4-b61d-c830627c7ab7.jpg</url>
      <title>DEV Community: Pranav Lakhwara</title>
      <link>https://dev.to/mythical_hacker</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mythical_hacker"/>
    <language>en</language>
    <item>
      <title>Making Claude, ChatGPT, and Gemini argue until they agree — and now, research together</title>
      <dc:creator>Pranav Lakhwara</dc:creator>
      <pubDate>Mon, 06 Jul 2026 15:36:10 +0000</pubDate>
      <link>https://dev.to/mythical_hacker/making-claude-chatgpt-and-gemini-argue-until-they-agree-and-now-research-together-3lg6</link>
      <guid>https://dev.to/mythical_hacker/making-claude-chatgpt-and-gemini-argue-until-they-agree-and-now-research-together-3lg6</guid>
      <description>&lt;p&gt;&lt;strong&gt;I pay for Claude, ChatGPT, and Gemini. The best answers I get come from making them check each other — and the worst workflow I had was copy-pasting between three tabs to do it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;auto-browser is my fix: an MCP server that attaches to a Chrome session I'm already logged into (over the DevTools Protocol — no API keys) and drives all three chat UIs in parallel. Claude Desktop orchestrates it through MCP tools.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsams0m091yult7pxgsca.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsams0m091yult7pxgsca.png" alt=" " width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Consensus with actual structure
&lt;/h3&gt;

&lt;p&gt;Same prompt to all three; then cross-pollination rounds — each model sees the others' answers and revises. Rounds end with a line-anchored VERDICT: AGREE | DISAGREE vote. Consensus requires at least two unhedged AGREEs and zero DISAGREEs among models that succeeded. The edge cases got the real engineering: dissent stays sticky if the dissenter times out the next round, peer verdict lines are stripped before embedding (so a model quoting another can't cast its vote), and a timeout is never shown to the other models as if it were an answer.&lt;/p&gt;

&lt;p&gt;To be precise about what this measures: convergence, not correctness. Three models agreeing can still be wrong — but where they disagree is reliably where I should be paying attention.&lt;/p&gt;

&lt;h3&gt;
  
  
  The new part: multi-provider deep research
&lt;/h3&gt;

&lt;p&gt;v3.2.0 adds a research pipeline: hand it a batch of research prompts, and it routes each across providers, runs the providers' own deep-research modes, waits out the long runs, harvests the reports, and synthesizes a final per-task report from all of them.&lt;/p&gt;

&lt;h4&gt;
  
  
  Three provider quirks made harvesting genuinely fun to build:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;ChatGPT renders deep-research reports inside a sandboxed cross-origin iframe. The main DOM shows zero assistant messages while a finished report sits right there on screen — naive scraping concludes the run failed. The fix is frame-aware extraction.&lt;/li&gt;
&lt;li&gt;Claude puts the full report behind an expandable Document artifact; the message DOM only carries a preview. Harvest opens the artifact and takes the full text.&lt;/li&gt;
&lt;li&gt;Gemini wants its research plan confirmed before it starts; the runner clears that gate automatically.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Deep research costs real money and real quota, so spend-safety is a design invariant, not a feature: a task that sent is never re-sent, chat URLs are preserved so a completed report can always be re-harvested for free, and a persisted quota ledger (e.g. Gemini's daily cap) plus cooldown detection means the queue waits instead of burning.&lt;/p&gt;

&lt;h4&gt;
  
  
  Model selection, because defaults are expensive
&lt;/h4&gt;

&lt;p&gt;Every send resolves an explicit model — per-call → per-task → configured default — and never silently inherits whatever the tab last used. I learned that one the expensive way. Tests pin each provider's cheapest model by design.&lt;/p&gt;

&lt;h3&gt;
  
  
  Honest status
&lt;/h3&gt;

&lt;p&gt;MIT. macOS is live-proven end to end; Windows/Linux Chrome paths exist but are untested. A 22-file Chrome-free unit suite runs in CI (Node 20/22); the live e2e gates need your own logged-in Chrome and never run in CI. And plainly: this automates provider web UIs, which may be restricted by their terms of service — it's built for your own personal, paid accounts, at your own risk. UI automation breaks when UIs change; there's a selector-registry override file for exactly that day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/mythicalhacker/auto-browser" rel="noopener noreferrer"&gt;https://github.com/mythicalhacker/auto-browser&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Release notes:&lt;/strong&gt; &lt;a href="https://github.com/mythicalhacker/auto-browser/releases/tag/v3.2.0" rel="noopener noreferrer"&gt;https://github.com/mythicalhacker/auto-browser/releases/tag/v3.2.0&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>mcp</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I measured whether a Go skill actually makes AI agents write better Go (and open-sourced the benchmark)</title>
      <dc:creator>Pranav Lakhwara</dc:creator>
      <pubDate>Tue, 30 Jun 2026 23:27:57 +0000</pubDate>
      <link>https://dev.to/mythical_hacker/i-measured-whether-a-go-skill-actually-makes-ai-agents-write-better-go-and-open-sourced-the-jff</link>
      <guid>https://dev.to/mythical_hacker/i-measured-whether-a-go-skill-actually-makes-ai-agents-write-better-go-and-open-sourced-the-jff</guid>
      <description>&lt;p&gt;Coding agents write Go that compiles but isn't idiomatic: pre-1.22 habits, missing context, goroutines with no shutdown path, SQL built with fmt.Sprintf. In a one-off snippet you shrug it off; in a long autonomous run it's the difference between a clean build and a cascading failure. I built a skill to fix that — but I didn't want to claim it works. I wanted to measure it, the way only a compiled language lets you.&lt;/p&gt;

&lt;p&gt;go-mastery is an Agent Skill: one always-on SKILL.md plus 36 lazy-loaded reference files (concurrency, errors, modern 1.22–1.26 APIs, security, gRPC, observability, MCP, eBPF, cgo, wasm, cloud-native). It runs in any SKILL.md-compatible agent — Claude Code, Cursor, Codex, and others.&lt;/p&gt;

&lt;p&gt;The part I actually care about is go-mastery-evals, the open benchmark. Go is one of the few languages where correctness can be graded objectively — the toolchain does most of the judging. Every task is generated twice, with and without the skill, and graded by go build / go vet / go test / golangci-lint plus a hidden behavioral test the model never sees — generation and grading are separate processes, so the model only ever receives its own code plus tool diagnostics, never the test or the expected output. No LLM-as-judge. Grading is hermetic (vendored deps, GOPROXY=off) so it reproduces anywhere, and every case ships a must-pass and a must-fail fixture so the benchmark validates its own discrimination.&lt;/p&gt;

&lt;p&gt;The result, across 54 cases, two vendors, six models, with zero in-domain regressions:&lt;/p&gt;

&lt;p&gt;Anthropic:&lt;br&gt;
Haiku +20.0&lt;br&gt;
Sonnet +16.7&lt;br&gt;
Opus +14.1&lt;/p&gt;

&lt;p&gt;OpenAI:&lt;br&gt;
GPT‑5.4‑nano +26.3&lt;br&gt;
GPT‑5.4‑mini +20.7&lt;br&gt;
GPT‑5.5 +12.6&lt;br&gt;
(percentage-point gain in correctness, with vs without the skill)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0tw7o4bizzmttti4a4ou.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0tw7o4bizzmttti4a4ou.png" alt=" " width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The signature is the tell that it's real: the biggest lift lands on the smallest model and compresses as the model saturates. A weak model lacks the knowledge and the skill supplies it; a frontier model already has most of it, so on strong models the gain moves from correctness to a deterministic idiom-quality score instead. It also leads the other Go skills I benchmarked — JetBrains' go-modern-guidelines (+6.7 / +5.2 / +4.5 pp, never behind on a single case) and a leading community-authored one (+6.3 pp) — and stays neutral within sampling noise on an out-of-domain suite (third-party Aider-polyglot Go puzzles).&lt;/p&gt;

&lt;p&gt;Why open-source the harness? Because a benchmark you can't run is just another claim. If you maintain a Go skill, run it through the identical gate — or try to beat these numbers. Both repos are MIT.&lt;/p&gt;

&lt;p&gt;Inspect the source first, then install:&lt;/p&gt;

&lt;p&gt;Skill: &lt;a href="https://github.com/mythicalhacker/go-mastery" rel="noopener noreferrer"&gt;https://github.com/mythicalhacker/go-mastery&lt;/a&gt;&lt;br&gt;
Benchmark + full methodology: &lt;a href="https://github.com/mythicalhacker/go-mastery-evals" rel="noopener noreferrer"&gt;https://github.com/mythicalhacker/go-mastery-evals&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;bashnpx skills add mythicalhacker/go-mastery&lt;/p&gt;

&lt;h2&gt;
  
  
  Claude Code plugin:
&lt;/h2&gt;

&lt;p&gt;/plugin marketplace add mythicalhacker/go-mastery&lt;br&gt;
/plugin install go-mastery@go-mastery&lt;/p&gt;

&lt;p&gt;Honest caveats: the JetBrains head-to-head was samples=5 across all tiers; the community-skill comparison was samples=3 on Sonnet — both on an earlier skill build, so they're conservative. gpt-5.5-pro is excluded (served only via a different API). I'd genuinely value methodology critique — that's the most useful feedback I can get.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
