<?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: Joe Seifi</title>
    <description>The latest articles on DEV Community by Joe Seifi (@joeseifi).</description>
    <link>https://dev.to/joeseifi</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F65646%2F6b5a914b-f3c3-4fdc-94d5-ca61d1ab3765.jpg</url>
      <title>DEV Community: Joe Seifi</title>
      <link>https://dev.to/joeseifi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joeseifi"/>
    <language>en</language>
    <item>
      <title>AI Browser Automation: 5 Layers Every Agent Builder Should Know</title>
      <dc:creator>Joe Seifi</dc:creator>
      <pubDate>Wed, 11 Mar 2026 22:45:42 +0000</pubDate>
      <link>https://dev.to/joeseifi/ai-browser-automation-5-layers-every-agent-builder-should-know-72n</link>
      <guid>https://dev.to/joeseifi/ai-browser-automation-5-layers-every-agent-builder-should-know-72n</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; "AI browser automation" covers five distinct approaches, from simple scrapers to full agentic browsers. Most developers grab the most powerful option when a lighter tool would be faster and cheaper. This post breaks down each layer, when to use it, and the silent failure mode that nobody warns you about.&lt;/p&gt;




&lt;p&gt;A developer I know spent three days last month rewriting Playwright tests after a SaaS product redesigned its checkout page. New CSS classes, repositioned buttons, an unexpected loading spinner. Three days of engineering time for a two-minute workflow.&lt;/p&gt;

&lt;p&gt;The core problem: your automation code depends on the page's structure. CSS selectors point to spots in the layout, and when the site changes, your code breaks. Instead of improving your own product, you're fixing issues caused by changes to someone else's site.&lt;/p&gt;

&lt;p&gt;AI browser automation exists because of this pain. Language models interpret a page the way you do; they read meaning instead of addresses. Tell a model "click the checkout button," and it finds the checkout button whether it's a &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt;, a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;, or nested three layers deep in a shadow DOM.&lt;/p&gt;

&lt;p&gt;But "AI browser automation" is misleadingly broad. It covers at least five distinct approaches, and most developers grab the most powerful one when a simpler tool would solve the problem faster and cheaper. If your agent only needs to read a web page, don't give it a full browser. That's like driving a moving truck to pick up a letter.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Five Layers
&lt;/h2&gt;

&lt;p&gt;Imagine you need information from a building across the street. You could peer through the window. You could ask someone who's been inside. You could walk in yourself. You could hire a team to manage operations inside. Or you could buy the building.&lt;/p&gt;

&lt;p&gt;Each level costs more, does more, and introduces more moving parts. The most common mistake: walking into the building when peering through the window would have been enough.&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.amazonaws.com%2Fuploads%2Farticles%2Fmnnhr3lnaqos87gxde46.jpg" 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.amazonaws.com%2Fuploads%2Farticles%2Fmnnhr3lnaqos87gxde46.jpg" alt="AI Browser Automation" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each layer exists because someone hit a problem the layer below couldn't solve. Understanding that progression is the fastest way to pick the right tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 1: Scrapers (When Your Agent Only Needs to Read)
&lt;/h2&gt;

&lt;p&gt;Point at a URL, get back clean content. No browser instance, no rendering engine, no GPU cycles on CSS animations nobody will see.&lt;/p&gt;

&lt;p&gt;This is the right tool when your agent needs to consume web content without interacting with it: pulling docs into a RAG pipeline, extracting product specs, feeding articles into a summarization workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.everydev.ai/tools/firecrawl" rel="noopener noreferrer"&gt;Firecrawl&lt;/a&gt;&lt;/strong&gt; handles most scraping needs. Crawls whole sites, outputs markdown and structured data, and has an extraction API that works with LLMs. Their &lt;code&gt;/agent&lt;/code&gt; endpoint takes a natural-language prompt and returns structured data without requiring URLs. In my experience, it works well about 80% of the time; the other 20%, it stops partway through with no error. Good for batch research where you can rerun failures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.everydev.ai/tools/apify" rel="noopener noreferrer"&gt;Apify&lt;/a&gt;&lt;/strong&gt; is the platform play. Founded in 2015, it has 3,000+ pre-built "Actors" for specific sites. Need to scrape Google Maps results or extract Amazon product data? Someone has already built and maintained a scraper for it. More complex than Firecrawl, but the marketplace saves days when a specific Actor exists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.everydev.ai/tools/jina-ai" rel="noopener noreferrer"&gt;Jina Reader&lt;/a&gt;&lt;/strong&gt; is zero-configuration. Prepend &lt;code&gt;r.jina.ai/&lt;/code&gt; to any URL and you get markdown back. No SDK, no auth for basic use, no setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.everydev.ai/tools/crawl4ai" rel="noopener noreferrer"&gt;Crawl4AI&lt;/a&gt;&lt;/strong&gt; is open source for teams that want full control. Parallel crawling, multiple output formats, JavaScript execution. No per-request pricing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where scrapers stop:&lt;/strong&gt; They can't log in. They can't click "load more." If data sits behind authentication or requires user interaction, you need the next layer up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 2: Search APIs (When Your Agent Doesn't Know Where to Look)
&lt;/h2&gt;

&lt;p&gt;Scrapers need a URL. Sometimes your agent doesn't have one. The task starts with "find the latest pricing for AWS Bedrock," not a specific address.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.everydev.ai/tools/exa" rel="noopener noreferrer"&gt;Exa&lt;/a&gt;&lt;/strong&gt; uses neural search, finding relevant content even when queries don't match keywords. Returns full page content, not snippets, so you often don't need a scraper as a second step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.everydev.ai/tools/tavily" rel="noopener noreferrer"&gt;Tavily&lt;/a&gt;&lt;/strong&gt; is purpose-built for AI agents. Optimizes for single queries with enough context that the agent can act on the first response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pairing layers:&lt;/strong&gt; A research agent might use Exa to discover 5 relevant sources, then Firecrawl to extract structured data from each. Search finds the pages; scraping reads them thoroughly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 3: Browser Automation Frameworks (Where the Complexity Lives)
&lt;/h2&gt;

&lt;p&gt;This is the layer most people picture when they hear "AI browser automation." It's also where most teams overspend solving problems they didn't need to solve.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Traditional Automation Breaks
&lt;/h3&gt;

&lt;p&gt;When you write &lt;code&gt;page.locator('.checkout-btn')&lt;/code&gt;, you're writing an address. Addresses break when things move. Every CSS class rename, component refactor, or A/B test variant can cascade into broken scripts.&lt;/p&gt;

&lt;p&gt;AI replaces addresses with descriptions. Instead of "find the element with class &lt;code&gt;checkout-btn&lt;/code&gt;," you say "click the checkout button." The model locates it regardless of CSS class, DOM position, or element type.&lt;/p&gt;

&lt;h3&gt;
  
  
  Three Frameworks, Three Bets
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.everydev.ai/tools/stagehand" rel="noopener noreferrer"&gt;Stagehand&lt;/a&gt;&lt;/strong&gt; keeps Playwright's programming model and adds AI on top. Three primitives: &lt;code&gt;act()&lt;/code&gt;, &lt;code&gt;extract()&lt;/code&gt;, and &lt;code&gt;observe()&lt;/code&gt;. You still write code. You still have full Playwright access. The AI handles the 20% of interactions that break during redesigns.&lt;/p&gt;

&lt;p&gt;Stagehand calls the LLM only when it encounters uncertainty. Playwright handles the rest deterministically. That keeps token costs lower than the alternatives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.everydev.ai/tools/browser-use" rel="noopener noreferrer"&gt;Browser Use&lt;/a&gt;&lt;/strong&gt; is AI-first. Describe a task in natural language, and the framework decides how to navigate and click. Roughly 78K GitHub stars, supports GPT-4o, Claude, Gemini, and local models via Ollama. Its standout feature: multi-page memory, where agents accumulate context across navigations.&lt;/p&gt;

&lt;p&gt;The trade-off is cost. Every interaction is an LLM call. A complex workflow might need 15-20 model calls. The same workflow in Stagehand might need three or four.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.everydev.ai/tools/playwright-mcp" rel="noopener noreferrer"&gt;Playwright MCP&lt;/a&gt;&lt;/strong&gt; is Microsoft's entry. It's an MCP server that lets any compatible AI agent control a browser through structured accessibility snapshots instead of screenshots. Faster, cheaper, and more reliable than vision-based approaches. Setup is one command: &lt;code&gt;npx @playwright/mcp init&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I Found Testing These Side by Side
&lt;/h3&gt;

&lt;p&gt;I ran identical scenarios across Stagehand, Browser Use, and Skyvern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Selector resilience:&lt;/strong&gt; Both Stagehand and Browser Use handled moderate layout changes well through semantic understanding. Where both struggled: when a &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; became a clickable &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; with no accessible label. That's not exotic; it's exactly what a React component library migration produces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Structured extraction:&lt;/strong&gt; Stagehand's &lt;code&gt;extract()&lt;/code&gt; accepts a Zod schema and returns typed data. Four out of five runs returned correct data. The fifth returned a plausible-looking value that wasn't anywhere on the page.&lt;/p&gt;

&lt;p&gt;That 80% accuracy rate matters. For batch research where you can tolerate noise, it works. For anything feeding into financial systems or customer-facing workflows without human review, it's a liability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The failure nobody talks about:&lt;/strong&gt; When Playwright can't find an element, it throws an exception. You know it broke. You get a stack trace.&lt;/p&gt;

&lt;p&gt;AI agents don't fail that way.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When extraction hallucinates, it returns a clean, well-typed object that contains incorrect data. No error, no warning, no indication that anything went sideways.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This silent failure mode is the single most important difference between AI and traditional browser automation. Most comparison articles skip it, and it's exactly the kind of thing that causes real damage in production.&lt;/p&gt;

&lt;h3&gt;
  
  
  Framework Comparison
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Playwright&lt;/th&gt;
&lt;th&gt;Stagehand&lt;/th&gt;
&lt;th&gt;Browser Use&lt;/th&gt;
&lt;th&gt;Skyvern&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Natural language control&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code-level control&lt;/td&gt;
&lt;td&gt;Full&lt;/td&gt;
&lt;td&gt;Full (Playwright underneath)&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Selector resilience&lt;/td&gt;
&lt;td&gt;Low (address-based)&lt;/td&gt;
&lt;td&gt;High (semantic)&lt;/td&gt;
&lt;td&gt;High (semantic)&lt;/td&gt;
&lt;td&gt;Very high&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-page memory&lt;/td&gt;
&lt;td&gt;Manual only&lt;/td&gt;
&lt;td&gt;Not built-in&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Structured extraction&lt;/td&gt;
&lt;td&gt;Manual parsing&lt;/td&gt;
&lt;td&gt;Zod schema (typed)&lt;/td&gt;
&lt;td&gt;LLM-driven&lt;/td&gt;
&lt;td&gt;LLM + vision&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost per action&lt;/td&gt;
&lt;td&gt;Compute only&lt;/td&gt;
&lt;td&gt;Medium (selective LLM calls)&lt;/td&gt;
&lt;td&gt;High (every action = LLM call)&lt;/td&gt;
&lt;td&gt;Highest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Deterministic testing&lt;/td&gt;
&lt;td&gt;Hybrid workflows&lt;/td&gt;
&lt;td&gt;AI-first research&lt;/td&gt;
&lt;td&gt;Fully managed automation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Which Framework Fits Your Team
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;TypeScript teams that want resilience without losing control:&lt;/strong&gt; Stagehand. Playwright for predictable steps, &lt;code&gt;act()&lt;/code&gt; for the parts that break. Lowest LLM cost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python teams building research workflows with multi-page context:&lt;/strong&gt; Browser Use. Budget for token costs and validate extraction results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Teams already building with MCP:&lt;/strong&gt; Playwright MCP. Lightweight, and the accessibility-tree approach avoids vision-model pricing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 4: Cloud Browser Infrastructure
&lt;/h2&gt;

&lt;p&gt;Running browsers locally works for prototyping. It stops working when you need 50 concurrent sessions, session-level debugging, residential proxies, or CAPTCHA solving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.everydev.ai/tools/browserbase" rel="noopener noreferrer"&gt;Browserbase&lt;/a&gt;&lt;/strong&gt; is the most established platform (approximately $300M valuation). Cloud browser sessions compatible with Playwright, Puppeteer, and Selenium. They also built Stagehand, which means tight integration but also means Stagehand's roadmap is shaped by what drives Browserbase subscriptions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.everydev.ai/tools/browser-use" rel="noopener noreferrer"&gt;Browser Use Cloud&lt;/a&gt;&lt;/strong&gt; bundles the open-source framework with managed infrastructure: stealth browsers, CAPTCHA solving, residential proxies in 195+ countries, and 1Password integration for credential management. You get the agent and the infrastructure in one service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.everydev.ai/tools/hyperbrowser" rel="noopener noreferrer"&gt;Hyperbrowser&lt;/a&gt;&lt;/strong&gt; bundles support for Browser Use, Claude Computer Use, OpenAI CUA, and Gemini through one SDK, plus built-in scrape and crawl endpoints. $0.10 per browser hour, sub-second cold starts, 10K+ concurrent sessions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to make the jump:&lt;/strong&gt; Move to managed infrastructure when at least two of these are true: you need sustained concurrency, session recording for debugging, proxy management has become a burden, or your reliability requirements are tied to SLAs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 5: Agentic Browsers
&lt;/h2&gt;

&lt;p&gt;Fellou, Opera Neon, Perplexity Comet. End-user products with AI built into the browser itself. Not developer tools today, but they point to where things are heading: the browser and the automation agent becoming the same thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where AI Browser Automation Fails
&lt;/h2&gt;

&lt;p&gt;Benchmarks show 80-90% accuracy on controlled sites. Real-world automation hits the edge cases benchmarks skip.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extraction hallucination:&lt;/strong&gt; The agent makes up data that looks right but isn't. Treat AI-generated data like user input: validate before using.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt injection from web content:&lt;/strong&gt; If your agent reads a page and acts on it, a malicious site can steer those actions through hidden instructions or invisible text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Non-determinism in CI/CD:&lt;/strong&gt; AI tests produce different results on identical pages across runs. Reproducing failures requires logging the full agent state, not just the broken assertion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost surprises at scale:&lt;/strong&gt; Teams using Browser Use at scale have seen bigger API bills than expected. Before going all-in, run the numbers for your actual volume.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Choose
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Your agent needs to...&lt;/th&gt;
&lt;th&gt;Start with...&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Read content from known URLs&lt;/td&gt;
&lt;td&gt;Firecrawl, Jina Reader, Crawl4AI, or Apify&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Find relevant content by query&lt;/td&gt;
&lt;td&gt;Exa or Tavily&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Click, type, and navigate pages&lt;/td&gt;
&lt;td&gt;Stagehand, Browser Use, or Playwright MCP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Run interactions at production scale&lt;/td&gt;
&lt;td&gt;Browserbase, Browser Use Cloud, or Hyperbrowser&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Most real agents combine two or more layers. The key: reach for the lightest layer that gets the work done, then add complexity only when you've hit a wall.&lt;/p&gt;

&lt;h3&gt;
  
  
  Starter Stacks
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Research assistant:&lt;/strong&gt; Exa for source discovery, Firecrawl for content extraction, Browser Use as fallback for interactive content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Back-office workflow agent:&lt;/strong&gt; Stagehand or Browser Use for form interactions. Browser Use Cloud if you need credential management built in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SEO and monitoring pipeline:&lt;/strong&gt; Search API for discovery, scraper for extraction. Apify's Actor marketplace is strong here; someone has likely built a scraper for the sites you're monitoring.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Trade-Off
&lt;/h2&gt;

&lt;p&gt;The developer who spent three days on broken Playwright selectors could have used &lt;code&gt;act('click the checkout button')&lt;/code&gt; and been done. The model looks for meaning, not addresses, and the meaning stayed the same after the redesign.&lt;/p&gt;

&lt;p&gt;But you trade fixing selectors for checking outputs. AI automation returns confident results that are sometimes wrong. No stack trace, no error. You have to validate.&lt;/p&gt;

&lt;p&gt;For most teams, output validation is cheaper than selector maintenance. Go in knowing what you're buying and what you're giving up. Start with the lightest layer that solves your problem; you can always move up.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://www.everydev.ai/p/blog-ai-browser-automation-5-layers-every-agent-builder-should-know" rel="noopener noreferrer"&gt;EveryDev.ai&lt;/a&gt;, where we track &lt;a href="https://www.everydev.ai/topics/browser-automation" rel="noopener noreferrer"&gt;31+ browser automation tools&lt;/a&gt; with reviews, pricing, and feature breakdowns. You can also &lt;a href="https://www.everydev.ai/tools/compare/browser-use-vs-browserbase-vs-hyperbrowser-vs-notte" rel="noopener noreferrer"&gt;compare tools side by side&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>automation</category>
      <category>playwright</category>
    </item>
    <item>
      <title>We Need to Talk About AI Agent Rule File Chaos</title>
      <dc:creator>Joe Seifi</dc:creator>
      <pubDate>Wed, 30 Jul 2025 18:21:56 +0000</pubDate>
      <link>https://dev.to/joeseifi/we-need-to-talk-about-ai-agent-rule-file-chaos-1coa</link>
      <guid>https://dev.to/joeseifi/we-need-to-talk-about-ai-agent-rule-file-chaos-1coa</guid>
      <description>&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.amazonaws.com%2Fuploads%2Farticles%2F9pm4nbvj9f93iwey9z8j.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.amazonaws.com%2Fuploads%2Farticles%2F9pm4nbvj9f93iwey9z8j.png" alt="Can We Please Agree on One Damn Format" width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've been working a lot with AI coding tools lately—Claude Code, GitHub Copilot Chat, Cursor, Replit’s agent, v0, you name it.&lt;/p&gt;

&lt;p&gt;And here's the thing no one seems to be talking about:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Every single one uses a different format for configuring how the agent behaves.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Cursor wants &lt;code&gt;.cursorrules&lt;/code&gt; (or now &lt;code&gt;.cursor/rules/*.mdc&lt;/code&gt;). Claude has &lt;code&gt;CLAUDE.md&lt;/code&gt;, &lt;code&gt;.claude/settings.json&lt;/code&gt;, and a whole command system. GitHub Copilot uses &lt;code&gt;copilot-instructions.md&lt;/code&gt;. VS Code has &lt;code&gt;.chatmode.md&lt;/code&gt;. Some tools want YAML frontmatter, others need Markdown sections, some are just XML pretending to be Markdown.&lt;/p&gt;

&lt;p&gt;Even new formats like &lt;code&gt;AGENT.md&lt;/code&gt; and &lt;code&gt;llms.txt&lt;/code&gt; are cropping up. Meanwhile, you’re never quite sure if your configuration is even being &lt;em&gt;used&lt;/em&gt; or silently ignored.&lt;/p&gt;

&lt;p&gt;The result?&lt;/p&gt;

&lt;p&gt;You're juggling 5+ config syntaxes across tools that don't talk to each other, can't share rules, and often bury the docs three links deep.&lt;/p&gt;

&lt;p&gt;I got so frustrated trying to make sense of it all that I started keeping notes and eventually wrote a longform breakdown of what each system does, where the overlaps are, and whether there’s any hope of standardization.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.cursorrules&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.mdc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.chatmode.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;copilot-instructions.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;llms.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AGENT.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;…and on and on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔗 &lt;a href="https://www.everydev.ai/p/blog-ai-coding-agent-rules-files-fragmentation-formats-and-the-push-to-standardize" rel="noopener noreferrer"&gt;Here’s the deep dive if you’re interested&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Would love to hear how others are managing this. Is your team standardizing on anything? Are you writing converters? Or just copying and pasting the same prompt to five tools?&lt;/p&gt;

&lt;p&gt;Let's talk. Because this is getting… out of hand.&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>vscode</category>
      <category>cursor</category>
      <category>claudecode</category>
    </item>
    <item>
      <title>Gatsby commenting system in Node</title>
      <dc:creator>Joe Seifi</dc:creator>
      <pubDate>Fri, 04 Sep 2020 15:05:35 +0000</pubDate>
      <link>https://dev.to/joeseifi/gatsby-commenting-system-in-node-3hmd</link>
      <guid>https://dev.to/joeseifi/gatsby-commenting-system-in-node-3hmd</guid>
      <description>&lt;p&gt;I wrote a how to on this topic in my blog. Using an open source library written in Node you can add a drop in commenting system to your Gatsby blog.&lt;/p&gt;

&lt;p&gt;It’s one step before completely rolling your own. But you still get to own your own comments. &lt;/p&gt;

&lt;p&gt;Hoping it can be helpful to others. Blog post is &lt;a href="https://seifi.org/gatsby/add-comments-to-your-gatsby-blog-using-schnack.html" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gatsby</category>
      <category>node</category>
      <category>howto</category>
      <category>commenting</category>
    </item>
  </channel>
</rss>
