<?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: Playful Programming</title>
    <description>The latest articles on DEV Community by Playful Programming (playfulprogramming).</description>
    <link>https://dev.to/playfulprogramming</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%2Forganization%2Fprofile_image%2F3314%2Ffd92caab-2014-431e-a19e-8ab47f2bf5ab.png</url>
      <title>DEV Community: Playful Programming</title>
      <link>https://dev.to/playfulprogramming</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/playfulprogramming"/>
    <language>en</language>
    <item>
      <title>OpenRouter: One API Key to Rule Them All 🔑</title>
      <dc:creator>Domenico Tenace</dc:creator>
      <pubDate>Wed, 12 Aug 2026 07:20:51 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/openrouter-one-api-key-to-rule-them-all-304b</link>
      <guid>https://dev.to/playfulprogramming/openrouter-one-api-key-to-rule-them-all-304b</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Hey everyone 👋&lt;/p&gt;

&lt;p&gt;Managing AI models in 2026 has gotten ridiculous. Anthropic key here, OpenAI key there, a separate billing account for Google, another for Mistral, and if you want to try DeepSeek you're adding yet another dashboard to the pile. It's chaos.&lt;/p&gt;

&lt;p&gt;OpenRouter fixes this. One API key, one credit balance, 300+ models. I've been using it as the backbone of my AI setup for a while now, and recently I wired it directly into OpenCode, which made the whole workflow click into place.&lt;/p&gt;

&lt;p&gt;Let me explain how it all works. Let's dive in! 🤙&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is OpenRouter? 🤔
&lt;/h2&gt;

&lt;p&gt;OpenRouter is a unified API gateway that sits between your application and the underlying LLM providers. You send a request to OpenRouter, it forwards it to the model you specified, and returns the response in a normalized OpenAI-compatible format.&lt;/p&gt;

&lt;p&gt;The catalog currently covers 300+ models from every major provider: Anthropic, OpenAI, Google, Meta, Mistral, xAI, DeepSeek, Qwen, NVIDIA, and dozens of smaller ones. You switch models by changing a single parameter in your request. No code changes, no new integrations, no new billing accounts.&lt;/p&gt;

&lt;p&gt;It's also OpenAI SDK-compatible, which means if you're already using the OpenAI client in your code, you change the base URL and the API key, and everything else works unchanged.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works 🔧
&lt;/h2&gt;

&lt;p&gt;The setup is three steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create a free account at openrouter.ai&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add credits via credit card or crypto (no minimum purchase, no expiration)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Generate an API key and use it across all your tools&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;From that point on, switching models is just changing a string. If you were calling Claude Sonnet directly through Anthropic and want to test Gemini Flash or DeepSeek for the same task, you change one line. That's it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Provider Routing and Fallbacks
&lt;/h3&gt;

&lt;p&gt;One of OpenRouter's strongest practical features is automatic provider fallback. Many popular models are served by multiple infrastructure providers. If one returns an error or hits capacity, OpenRouter silently routes to an alternative and your request succeeds. You don't write retry logic for this, it just works.&lt;/p&gt;

&lt;p&gt;There's also an auto-router mode: set the model to &lt;code&gt;openrouter/free&lt;/code&gt; and OpenRouter selects the best available free model for your request based on what it needs, structured output, tool calling, image understanding, and so on.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Free Tier
&lt;/h3&gt;

&lt;p&gt;OpenRouter offers around 29 free models at any given time, including Llama 3, Gemma 4, DeepSeek Flash, Qwen3, and others. Free accounts get 50 requests per day without adding credits, and 1,000 per day after a first top-up.&lt;/p&gt;

&lt;p&gt;The free model lineup shifts as providers change their policies, so treat it as a useful resource for prototyping, not a guaranteed production tier.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pricing: What You Actually Pay 💰
&lt;/h2&gt;

&lt;p&gt;This changed significantly in 2025. OpenRouter used to add per-token markups on top of provider pricing. That model is gone.&lt;/p&gt;

&lt;p&gt;The current structure is straightforward: a flat 5.5% fee on credit purchases, and provider token prices passed through at cost. So if Claude Sonnet 4.6 is $3/$15 per million tokens at Anthropic, you pay $3/$15 on OpenRouter. The only overhead is the 5.5% you paid when you loaded credits.&lt;/p&gt;

&lt;p&gt;The one additional charge: if you bring your own provider API keys (BYOK) and exceed 1 million requests per month, there's a 5% fee on usage beyond that threshold. Below 1M requests it's free to route through your own keys.&lt;/p&gt;

&lt;p&gt;To put it concretely: loading $100 in credits costs $105.50. Everything you buy with those credits is at direct provider rates.&lt;/p&gt;

&lt;p&gt;For hobbyists and developers running multiple models, this is genuinely competitive. For enterprises burning millions of tokens per day, negotiated direct rates might beat it, but you'd have to be at serious scale.&lt;/p&gt;




&lt;h2&gt;
  
  
  OpenRouter + OpenCode 🔗
&lt;/h2&gt;

&lt;p&gt;This is the combination I've been running, and it's become my default setup.&lt;/p&gt;

&lt;p&gt;OpenCode supports any OpenAI-compatible endpoint, which OpenRouter is. You point OpenCode at OpenRouter, set your API key, and from that moment you can use any model in OpenCode's model selector without managing separate credentials for each provider.&lt;/p&gt;

&lt;p&gt;The practical benefit is flexibility without friction. When I want to try Qwen3 Coder for a refactoring task, I switch the model in OpenCode. When I need Claude Opus for something that requires stronger reasoning, I switch back. One balance covers everything.&lt;/p&gt;

&lt;p&gt;It also means I'm not locked into any single provider's availability. If Anthropic has downtime, I route through Gemini or DeepSeek without touching my workflow. OpenRouter's provider fallback does the heavy lifting.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Pros 👍
&lt;/h2&gt;

&lt;p&gt;One API key and one billing account replace every separate provider integration you'd otherwise manage. For teams or individual developers using more than two models regularly, that alone justifies the overhead.&lt;/p&gt;

&lt;p&gt;The OpenAI-compatible API means zero migration cost if you're already using the OpenAI SDK. Change the base URL, change the key, done.&lt;/p&gt;

&lt;p&gt;Provider fallback is genuinely useful in production. You stop worrying about individual provider outages because OpenRouter handles the retry layer for you.&lt;/p&gt;

&lt;p&gt;The free model catalog gives you a real prototyping environment at zero cost. Qwen3 Coder Free and DeepSeek Flash Free are capable enough for a lot of development tasks.&lt;/p&gt;

&lt;p&gt;Transparent pricing with no hidden per-token markups. The 5.5% credit fee is upfront and easy to account for.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Cons 👎
&lt;/h2&gt;

&lt;p&gt;The 5.5% credit fee is real money at scale. If you're running high-volume production workloads, that overhead adds up. Direct provider APIs will be cheaper once you're large enough to negotiate rates.&lt;/p&gt;

&lt;p&gt;Credits don't expire, but they also aren't refundable. You're committing capital upfront even if your usage patterns shift.&lt;/p&gt;

&lt;p&gt;Free model availability is unstable. Providers can remove free-tier access at any time and OpenRouter has no control over it. Don't build a production workflow that depends on a specific free model being there next month.&lt;/p&gt;

&lt;p&gt;Enterprise teams needing RBAC, per-team budgets, audit logs, and VPC-native routing will hit a ceiling. OpenRouter is primarily a routing and billing layer, not a governance platform. For stricter compliance needs, something like LiteLLM self-hosted or Portkey might be more appropriate.&lt;/p&gt;

&lt;p&gt;The auto-router mode (&lt;code&gt;openrouter/free&lt;/code&gt;) is convenient, but the model selection varies between requests. If you need consistent output style across sessions, pin a specific model ID instead.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who Should Use OpenRouter? 🎯
&lt;/h2&gt;

&lt;p&gt;OpenRouter is the obvious choice if you're using more than one or two AI models regularly and don't want to manage the overhead of multiple accounts and billing setups. For individual developers, it removes a real operational annoyance.&lt;/p&gt;

&lt;p&gt;It's also the right call for tools like OpenCode that support BYOK or custom endpoints but don't manage multi-provider routing themselves. OpenRouter becomes the infrastructure layer your tool sits on top of.&lt;/p&gt;

&lt;p&gt;Where it makes less sense: pure Anthropic shops that only need Claude, or enterprises with compliance requirements that need on-premise routing and audit trails. For those cases, the flexibility isn't worth the trade-offs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts 🌟
&lt;/h2&gt;

&lt;p&gt;OpenRouter started as a scrappy model aggregator with 30 models. In 2026 it's become the most important middleware layer in the independent developer's AI stack, and the pricing reform that eliminated per-token markups made it significantly more honest to use.&lt;/p&gt;

&lt;p&gt;The combination with OpenCode is what made it click for me. Instead of managing Anthropic and Google credentials separately, I load credits into OpenRouter once and switch models from OpenCode's interface as needed. It's the kind of setup that removes decisions you don't want to be making mid-task.&lt;/p&gt;

&lt;p&gt;One key, one balance, hundreds of models. For how messy the provider landscape has gotten, that's a genuinely useful simplification.&lt;/p&gt;

&lt;p&gt;Happy coding! ✨&lt;/p&gt;




&lt;p&gt;Hi 👋🏻&lt;br&gt;&lt;br&gt;
My name is Domenico, software developer passionate of Open Source, I write article about it for share my knowledge and experience.&lt;br&gt;&lt;br&gt;
Don't forget to visit my social links to discover my links and to check out Domenico Tenace Open Labs for my open-source projects! 🫰🏻&lt;/p&gt;

&lt;p&gt;🌲 Links: &lt;a href="https://links.domenicotenace.dev/" rel="noopener noreferrer"&gt;https://links.domenicotenace.dev/&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🐙 Domenico Tenace Open Labs: &lt;a href="https://github.com/Domenico-Tenace-Open-Labs" rel="noopener noreferrer"&gt;https://github.com/Domenico-Tenace-Open-Labs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you like my content or want to support my work, you can support me with a small donation. I would be grateful 🥹&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/domenicotenace" rel="noopener noreferrer"&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%2Fb5vrzbmybu3q0sb5bzs1.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>machinelearning</category>
      <category>developers</category>
    </item>
    <item>
      <title>OpenCode: The Open Source Coding Agent That Doesn't Lock You In 🔓</title>
      <dc:creator>Domenico Tenace</dc:creator>
      <pubDate>Wed, 05 Aug 2026 08:00:00 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/opencode-the-open-source-coding-agent-that-doesnt-lock-you-in-pn3</link>
      <guid>https://dev.to/playfulprogramming/opencode-the-open-source-coding-agent-that-doesnt-lock-you-in-pn3</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Hey everyone 👋&lt;/p&gt;

&lt;p&gt;If you've ever hit your Claude Code token limits mid-task, wondered what's happening under the hood of a closed-source agent, or just wanted to plug in a different model without switching tools entirely, OpenCode might be exactly what you were looking for.&lt;/p&gt;

&lt;p&gt;It's the open source alternative that took the terminal agent concept and made it model-agnostic, and by mid-2026 it had already surpassed Claude Code on GitHub stars. That's not a coincidence.&lt;/p&gt;

&lt;p&gt;Let me break it down. Let's dive in! 🤙&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is OpenCode? 🤔
&lt;/h2&gt;

&lt;p&gt;OpenCode is an open source AI coding agent built in Go that runs in the terminal, desktop, and IDE. Its thesis is simple: you bring the model, OpenCode brings the agent. It supports 75+ LLM providers, from Claude and GPT to local models via Ollama, doesn't store your code, doesn't charge a subscription, and over 7.5 million developers use it monthly.&lt;/p&gt;

&lt;p&gt;It was built by the SST team, the same people behind the popular serverless framework. The design is a client/server architecture, not a single CLI binary, so one backend drives a terminal TUI, a desktop app, and IDE extensions for VS Code and Cursor.&lt;/p&gt;

&lt;p&gt;OpenCode surpassed Claude Code on GitHub stars (160K+ vs 122K+) and is now the most starred open source coding agent. It does what Claude Code does, but lets you plug in any model from 75+ providers, including local models at zero API cost.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works 🔧
&lt;/h2&gt;

&lt;p&gt;Installing OpenCode takes about 30 seconds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://opencode.ai/install | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You land in a polished TUI with two modes, Build and Plan. Build mode executes tasks directly. Plan mode is read-only, it lets the agent analyze your codebase and propose an approach before touching a single file. This is the separation of intent and execution that Claude Code doesn't make as explicit.&lt;/p&gt;

&lt;p&gt;The design choice that matters most is the one in the name. OpenCode separates the agent harness from the model. Claude Code is tuned end to end around Anthropic's models and talks to them and only them. OpenCode connects to 75+ providers through Models.dev, including Anthropic, OpenAI, Google, Moonshot, Z.ai, local runtimes through Ollama, and any OpenAI-compatible endpoint you hand it.&lt;/p&gt;

&lt;p&gt;You can switch models mid-session without restarting. That alone is a feature Claude Code doesn't have.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Pricing Reality 💰
&lt;/h2&gt;

&lt;p&gt;This is where OpenCode makes its strongest argument. There's no subscription for the software itself, you pay for model access directly.&lt;/p&gt;

&lt;p&gt;The options as of mid-2026:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bring your own key&lt;/strong&gt;: pay the provider directly at their posted rates. Full flexibility, full cost visibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OpenCode Zen&lt;/strong&gt;: a pay-as-you-go hosted gateway with access to many models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OpenCode Go&lt;/strong&gt;: $5 for the first month, then $10/month. Includes access to capable open models like GLM, Kimi K2, Qwen, DeepSeek, and MiniMax with generous per-session request limits.&lt;/p&gt;

&lt;p&gt;Compare that to Claude Code's $20/month Pro, $100/month Max 5x, or $200/month Max 20x plans. For individual developers or small teams watching their AI spend, the math is clear.&lt;/p&gt;

&lt;p&gt;The caveat: cost visibility helps when you are counting. Once you settle onto a flat Max plan, the math changes. If you're a power user who hits their limits constantly, Claude Code's flat rate might actually be cheaper per task.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Anthropic Block: What Happened and Where It Stands 🚧
&lt;/h2&gt;

&lt;p&gt;This is the part of the story that redefined what OpenCode actually is.&lt;/p&gt;

&lt;p&gt;On January 9, 2026, Anthropic changed its OAuth policy to block third-party applications from authenticating users through Claude.ai accounts. OpenCode was the primary casualty: users who relied on their Claude Pro login lost access overnight. The official reason was "security and ToS compliance."&lt;/p&gt;

&lt;p&gt;The January block made that choice less about saving money and more about philosophy. You are no longer choosing a cheaper way to run Claude. You are choosing whether you want a managed product or an open one.&lt;/p&gt;

&lt;p&gt;Where it stands today: you can still use Claude models in OpenCode, but only through an Anthropic API key, not your Claude.ai subscription credentials. The more lasting impact was reputational: it accelerated many users migrating to Gemini as their default backend.&lt;/p&gt;


&lt;h2&gt;
  
  
  OpenCode vs Claude Code: The Real Differences 🥊
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Terminal experience
&lt;/h3&gt;

&lt;p&gt;OpenCode tends to win here, and it wins on feel. The TUI is the repeated favorite in nearly every comparison thread. The terminal does not flicker on each update, sections scroll independently, and planning prompts are easy to answer. OpenCode also ships a standalone Tauri desktop app for macOS, Windows, and Linux, something Claude Code doesn't have.&lt;/p&gt;
&lt;h3&gt;
  
  
  Autonomy features
&lt;/h3&gt;

&lt;p&gt;Claude Code has a wider toolset: Agent View for fleet management, /goal for fire-and-forget autonomous runs, instant rewind via double-Esc, and background monitoring. OpenCode has background subagents and sessions that survive a terminal close, but lacks the orchestration depth.&lt;/p&gt;
&lt;h3&gt;
  
  
  Output quality
&lt;/h3&gt;

&lt;p&gt;A controlled benchmark found Claude Code faster and OpenCode more thorough using the same model. The summary: "Claude Code is built for speed. OpenCode is built for thoroughness."&lt;/p&gt;

&lt;p&gt;One practical issue to know about: multiple testers reported that OpenCode, across all tested models, reformats existing code without authorization. On mature codebases with established style guides, this is a trust issue. There's an open GitHub issue tracking this, and it's the most common complaint in real-world use.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Pros 👍
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;True model freedom.&lt;/strong&gt; No other terminal agent lets you swap between Claude, Gemini, DeepSeek, Qwen, or a local Ollama model mid-session. This is OpenCode's defining advantage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open source and inspectable.&lt;/strong&gt; You can read the codebase, fork it, self-host it, and know exactly what the agent is doing with your code. Claude Code is closed source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Better terminal UX.&lt;/strong&gt; The TUI is genuinely nicer. Non-flickering updates, scrollable sections, a dedicated desktop app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost control.&lt;/strong&gt; Bring your own key, use local models at zero cost, or pay $10/month for the Go tier. The ceiling is much lower than Claude Code's $200/month Max plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data compliance.&lt;/strong&gt; Teams with strict data requirements can point OpenCode at a local or self-hosted model so code never leaves their network.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Cons 👎
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The code reformatting issue.&lt;/strong&gt; OpenCode has a known tendency to reformat existing code without being asked. On mature codebases this creates noisy diffs and erodes trust in the agent's edits. Not a dealbreaker, but worth knowing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thinner plugin ecosystem.&lt;/strong&gt; Claude Code has a more mature skills, hooks, and plugin marketplace. OpenCode's extension catalog is catching up, but it's not there yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No subscription path for Claude.&lt;/strong&gt; If you're paying for Claude Pro or Max, you can't use that credit in OpenCode. You need a separate API key, which means paying again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fewer autonomous orchestration features.&lt;/strong&gt; /goal mode, Agent View, instant rewind, and worktree isolation are Claude Code exclusives. For complex multi-agent workflows, Claude Code is still ahead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Broad permissions by default.&lt;/strong&gt; Several developers flag that OpenCode's agent permissions are broad by default. Check opencode.json before you point it at anything sensitive.&lt;/p&gt;


&lt;h2&gt;
  
  
  Who Should Use OpenCode? 🎯
&lt;/h2&gt;

&lt;p&gt;OpenCode is the right choice if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You want model flexibility and don't want to be locked into Anthropic's roadmap&lt;/li&gt;
&lt;li&gt;Budget control matters and you want to use cheaper or local models&lt;/li&gt;
&lt;li&gt;You prefer an open source tool you can inspect, fork, and trust&lt;/li&gt;
&lt;li&gt;Your team has compliance requirements that require on-premise model inference&lt;/li&gt;
&lt;li&gt;You find Claude Code's terminal UX annoying and want something nicer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stay with Claude Code if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need the strongest possible instruction-following on hard tasks&lt;/li&gt;
&lt;li&gt;You use Agent View, /goal, or other orchestration features heavily&lt;/li&gt;
&lt;li&gt;You want a managed product that "just works" without configuration&lt;/li&gt;
&lt;li&gt;You're already paying for Max and want to get full value from it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And honestly, plenty of people run both. OpenCode for day-to-day work with flexible models, Claude Code for the heavy debugging sessions where Opus is worth it.&lt;/p&gt;


&lt;h2&gt;
  
  
  My Honest Take 💭
&lt;/h2&gt;

&lt;p&gt;OpenCode is a serious tool, not a hobby alternative. 178,000 GitHub stars and 7.5 million monthly users don't lie. The model-agnostic design is genuinely useful, and the terminal UX is objectively better than Claude Code's.&lt;/p&gt;

&lt;p&gt;But the January block revealed something important: the moment you depend on Claude's quality and want to pay less, you're in Anthropic's crosshairs. OpenCode solved the tooling problem, not the model dependency problem. If you're using it with Claude via API key, you're still paying Anthropic rates.&lt;/p&gt;

&lt;p&gt;The real freedom comes when you combine OpenCode's harness with open or local models. That's the combination that makes the cost argument actually land, and that's where the project's future clearly points.&lt;/p&gt;

&lt;p&gt;Managed product or open tool? The answer depends on who you want to be as a developer.&lt;/p&gt;

&lt;p&gt;Happy coding! ✨&lt;/p&gt;



&lt;p&gt;Hi 👋🏻&lt;br&gt;
My name is Domenico, software developer passionate of Open Source, I write article about it for share my knowledge and experience.&lt;br&gt;
Don't forget to visit my Linktree to discover my links and to check out Domenico Tenace Open Labs for my open-source projects! 🫰🏻&lt;/p&gt;

&lt;p&gt;🌲 Linktree: &lt;a href="https://linktr.ee/domenicotenace" rel="noopener noreferrer"&gt;https://linktr.ee/domenicotenace&lt;/a&gt;&lt;br&gt;
🐙 Domenico Tenace Open Labs: &lt;a href="https://github.com/Domenico-Tenace-Open-Labs" rel="noopener noreferrer"&gt;https://github.com/Domenico-Tenace-Open-Labs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow me on dev.to for more articles 👇&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__985143"&gt;
    &lt;a href="/dvalin99" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F985143%2Fc4c372a7-0b38-4f9e-b206-7ed65597ea31.png" alt="dvalin99 image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dvalin99"&gt;Domenico Tenace&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dvalin99"&gt;Passionate about the IT world and everything related to it ✌🏻
Open Source enthusiastic 🦠&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;If you like my content or want to support my work, you can support me with a small donation. I would be grateful 🥹&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/domenicotenace" rel="noopener noreferrer"&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%2Fb5vrzbmybu3q0sb5bzs1.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Introducing Argus: The Code Security Colleague Your Team Doesn't Have</title>
      <dc:creator>Davide Imola</dc:creator>
      <pubDate>Thu, 30 Jul 2026 08:56:00 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/introducing-argus-the-code-security-colleague-your-team-doesnt-have-5g81</link>
      <guid>https://dev.to/playfulprogramming/introducing-argus-the-code-security-colleague-your-team-doesnt-have-5g81</guid>
      <description>&lt;p&gt;Most development teams don't have a security engineer. Not because they don't want one. Security expertise is genuinely hard to find, expensive to keep, and most of us would rather ship features than spend an afternoon reading about deserialization gadget chains. So security becomes the thing you'll get to later, and later never comes.&lt;/p&gt;

&lt;p&gt;I've believed for a while that AI is going to change security, and not as a slogan. The reason is structural: there aren't enough people. The industry is short something like 4.8 million security professionals worldwide,&lt;sup id="fnref1"&gt;1&lt;/sup&gt; which is the gap from that first paragraph counted globally, and no hiring spree closes a hole that size. AI won't close it either, and I want to be honest about that. What it can do is make the gap hurt less: take the routine load off the few people who are there, and keep a small team, or a team of one, from being buried. Same as it did for my coding, where it didn't make me smarter, it just stopped the grunt work from being the bottleneck.&lt;/p&gt;

&lt;p&gt;A good model has read more security than most of us ever will: the best practices, the attack patterns, the bugs that hide in plain sight. Point it at code written by someone who isn't a security expert, which is most of us, and it genuinely lifts what they can ship safely. This isn't a spectator take for me either, it's what I spend my days on, building products that live right at that intersection. And the other side already gets it: attackers are using AI right now, so insisting defenders shouldn't is not caution, it's a handicap.&lt;/p&gt;

&lt;p&gt;Concretely, I already use AI for security review, enough that I'm building a talk around how to do it well: lean on the skills that already exist, write your own, and point them at the real tools you already have. Give a capable model the right context and it quietly does a lot of the work a tired reviewer skips under a deadline. What it doesn't do is stick around. Every session starts from zero, knows nothing about your last review, forgets what you told it yesterday.&lt;/p&gt;

&lt;p&gt;Then I started using &lt;a href="https://github.com/openclaw/openclaw" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt;, and it reframed the problem for me. OpenClaw is an always-running agent with a SOUL, a memory, and enough context about you that talking to it feels less like prompting a chatbot and more like messaging a colleague. It remembers. It knows your setup. I used it for useful things and for completely useless ones, and I had a lot of fun. We've mostly stopped since, if I'm honest, but it worked, and somewhere in there the idea landed: what if that colleague did security?&lt;/p&gt;

&lt;p&gt;That's &lt;a href="https://github.com/argusappsec/argus" rel="noopener noreferrer"&gt;Argus&lt;/a&gt;: an open-source application security agent, written in Go, that I've been building with a few colleagues at &lt;a href="https://redcarbon.ai" rel="noopener noreferrer"&gt;RedCarbon&lt;/a&gt;. It's the project that quietly took the place of &lt;a href="https://dev.to/blog/i-built-a-tool-i-dont-use"&gt;Worky&lt;/a&gt;, the tool I built and then never used, except this one has a mission I actually care about, so I'm not going anywhere.&lt;/p&gt;

&lt;p&gt;Fair warning before you get excited: Argus is v0.2.0, and it's as much an idea as a tool. It's the thing I kept wishing existed, so I built a first version with people who actually do security for a living. I'm not sure I've got the shape right, but the shape is the part worth arguing about, and I'd rather do that in the open than sit on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why security review needs a different shape
&lt;/h2&gt;

&lt;p&gt;I want to be clear here, because this is easy to misread. I'm not saying AI security review is a bad idea. It's a great idea. What I don't believe in is doing it with AI alone. Models hallucinate, and a confident, wrong answer about a vulnerability is worse than no answer at all. Lean the whole thing on a model and you get a tool that sounds authoritative while quietly missing the one finding that mattered.&lt;/p&gt;

&lt;p&gt;So the bet behind Argus isn't "point a model at your code". It's the union of three things that each cover for the others' blind spots: deterministic security tools that have been proven for years, a human kept firmly in the loop, and a model to tie it together and reason across the whole picture. Take any one of the three away and it falls over. Especially the human.&lt;/p&gt;

&lt;p&gt;Recognizing a security problem is not something you wing. Get a code suggestion wrong and it's annoying; get a security call wrong and it's a breach. So an agent you'd actually trust with this has to earn that trust in ways a coding assistant never has to. Its answers need to trace back to something real instead of a confident guess. Its memory, from the moment it has one, becomes a thing attackers will try to lie to, so who gets to shape it suddenly matters. And it has to understand your world in particular, not security in the abstract, because a good share of the problems that actually bite only make sense once you know how your systems fit together.&lt;/p&gt;

&lt;p&gt;None of these choices are settled. They're the ones I'd make today, pulled from the years I've spent around cybersecurity and filed down to the few details I think actually matter. I'm genuinely happy to have every one of them argued with. Here's the reasoning, a piece at a time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Structured tools, not a shell
&lt;/h2&gt;

&lt;p&gt;The default way to build a code agent in 2026 is to hand a model a shell and let it run. It works shockingly well for writing code. For security, I didn't want it.&lt;/p&gt;

&lt;p&gt;When an agent has a shell, two things are true at once: it can do anything, and you can't be sure what it did. In a security context that's backwards. You want the opposite. A small, known set of capabilities, each one auditable.&lt;/p&gt;

&lt;p&gt;So Argus doesn't get a shell. It gets tools. Under the hood there are real, boring, deterministic security scanners: &lt;a href="https://semgrep.dev" rel="noopener noreferrer"&gt;Semgrep&lt;/a&gt; for static analysis, &lt;a href="https://github.com/gitleaks/gitleaks" rel="noopener noreferrer"&gt;Gitleaks&lt;/a&gt; for secrets, &lt;a href="https://github.com/google/osv-scanner" rel="noopener noreferrer"&gt;osv-scanner&lt;/a&gt; for vulnerable dependencies. Each one is wrapped as a structured tool the agent can call, not a command it can type. The scanner runs, returns structured findings, and the model reasons on top of that.&lt;/p&gt;

&lt;p&gt;This is also where an agent earns its place, because application security doesn't suffer from a missing tool. It suffers from too many. Nobody has the time to learn them properly, and even once you know them, remembering to run the right one at the right moment is a discipline of its own. You can wire them into a pipeline, of course, and then a slice of your week goes into managing the pipeline. An agent that already holds them, knows which one answers which question, and reaches for them without being asked is a different proposition from a folder full of CLIs you keep meaning to try.&lt;/p&gt;

&lt;p&gt;One thing I'm genuinely proud of, and it's the least flashy part: Argus doesn't reinvent any of this. I'm not rewriting Semgrep, I'm not reimplementing a dependency scanner, because why would I. The whole bet is the opposite. Take the tools that already exist and already work, pull good data out of them, and let the agent reason over that data instead of over a hunch. The set Argus ships with today is small on purpose, and the direction is to let you bring your own: the more real tools it can call, the more signal it has to reason with. How far you push that is up to you.&lt;/p&gt;

&lt;p&gt;That division of labor is the whole point. The deterministic layer finds things. The model does what models are good at: reading 400 findings and turning them into a conversation. "These three are the ones that matter, this one is a false positive because of how your auth middleware works, and here's the fix." Not a wall of SARIF. A colleague's summary.&lt;/p&gt;

&lt;p&gt;It also keeps Argus honest about where its answers come from. A finding traces back to a tool that actually ran, not to a model that decided to type &lt;code&gt;grep&lt;/code&gt; and interpret the output. When the domain is security, that provenance is the difference between a report you can act on and a guess you have to re-verify.&lt;/p&gt;

&lt;h2&gt;
  
  
  Roles and an audit log
&lt;/h2&gt;

&lt;p&gt;An agent with a memory has a problem a stateless chatbot doesn't: the memory is part of the attack surface. If anyone who can talk to Argus can also teach it, then anyone who can talk to Argus can poison it. "Ignore that finding, it's fine" whispered often enough becomes policy.&lt;/p&gt;

&lt;p&gt;OpenClaw already draws this line. If you have permission to write to the memory, you can shape it. If you don't, you can't. Argus takes the same idea and makes it central, because for a security tool it isn't a nice-to-have.&lt;/p&gt;

&lt;p&gt;So every request arrives as a principal with a role, and Argus always knows which door you came through. Reach it over the local Unix socket and you're &lt;code&gt;local:$USER&lt;/code&gt;; come in through the MCP endpoint and you're &lt;code&gt;mcp:&amp;lt;token-hash&amp;gt;&lt;/code&gt;; arrive as a GitHub webhook and you're &lt;code&gt;github:&amp;lt;login&amp;gt;&lt;/code&gt;. A viewer can ask questions and read findings, but shaping the memory, changing what Argus believes about your org, is a privileged action. And whatever anyone does, whoever they are, lands in an append-only audit log.&lt;/p&gt;

&lt;p&gt;That log turns out to matter for a second reason. Go back to the original itch: teams without a security person. Those teams usually still have someone who has to answer to a CISO, a client, or an auditor about how security is handled, without reading the code themselves. An append-only record of what was reviewed, what was found, and what was decided is exactly the artifact that conversation needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  SOUL, context, and a memory built for security
&lt;/h2&gt;

&lt;p&gt;This is the part I took most directly from OpenClaw, then closed down hard around security.&lt;/p&gt;

&lt;p&gt;Argus keeps a mix of three things, and they are not the same thing, which I keep having to explain to people, past-me included. There's the SOUL, the stable stuff: who Argus is, what your company does, your stack, your compliance posture. It rides along in every single model call, so Argus never forgets whose codebase it's looking at. There's context, the per-task working set for whatever it's reasoning about right now. And there's memory, the curated knowledge that persists from one conversation to the next.&lt;/p&gt;

&lt;p&gt;The memory is where the security focus shows. Argus remembers findings. It remembers the things you tell it. And, my favorite part, it remembers your false positives, so the thing you already triaged and dismissed doesn't come back to eat your afternoon next week. That is the single most colleague-like behavior in the whole system. A good reviewer remembers what you already decided.&lt;/p&gt;

&lt;p&gt;Say &lt;code&gt;config.py&lt;/code&gt; in one of your repos only holds deploy-time placeholders that your secret manager swaps out at deploy. Tell Argus once, and it stops flagging them on that repo. The next review comes back clean, with a note explaining why, instead of the same false alarm you waved off last sprint.&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%2Fwrp3bklpmabmti0obnwn.webp" 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%2Fwrp3bklpmabmti0obnwn.webp" alt="A later Argus review on the same repository reporting no new findings, noting that the config.py credentials are known deploy-time placeholders and not a vulnerability in this project" width="800" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The SOUL is what makes the reasoning fit your world instead of the abstract world of security-in-general. And the cross-session, cross-project knowledge is where I think this goes somewhere a single-repo tool can't follow. A coding agent pointed at one repository is blind to how that repository talks to the other twelve. Plenty of the security problems that actually hurt live in exactly that gap: the service that trusts input another service should have sanitized. Feed Argus enough of your world and it can start to reason across that boundary. It's early, but that's the direction.&lt;/p&gt;

&lt;p&gt;OpenClaw is a general assistant, open-ended by design. Argus is the opposite. It knows it's a security tool, and everything (the tools, the skills, the memory, the persona) is shaped for that one job. Narrower, but deeper.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Argus does today (v0.2)
&lt;/h2&gt;

&lt;p&gt;Enough philosophy. Here is what actually runs.&lt;/p&gt;

&lt;p&gt;One thing to set straight first, because the word "security" invites the wrong expectation. Argus doesn't watch your infrastructure, it doesn't sit in front of your traffic, and it is not a SOC. It reads code. That's the job it's built for, and the rest is somebody else's product.&lt;/p&gt;

&lt;p&gt;Argus is a daemon, &lt;code&gt;argusd&lt;/code&gt;, one shared instance per organization. Every way you talk to it (a terminal UI, the MCP endpoint, GitHub webhooks, and Slack soon) is a different door into the same process, sharing one memory, one tool registry, one audit log.&lt;/p&gt;

&lt;p&gt;The most visible thing it does is review pull requests. Connect it as a GitHub App and it turns up on the thread like any other reviewer, except this one only cares about security. When it flags something you can push back right there, "Argus, is this finding real?", and it answers in context instead of making you go and dig. That back-and-forth isn't a nicety, it's the design: Argus is meant to be argued with, not obeyed.&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%2Fa8m1fou1bt4bt0nb9k2e.webp" 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%2Fa8m1fou1bt4bt0nb9k2e.webp" alt="Argus posts a security review on a GitHub pull request, flagging hardcoded AWS credentials in config.py and a SQL injection in the /users endpoint, with two findings on the changed lines" width="800" height="298"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because it's also an MCP server, the AI tools you already use can consult it as a colleague rather than a black box. This is the part I reach for most: I point at something I just wrote and ask whether it's safe. And I want to be fair about the alternative, because the tools you already have are good at this. Claude and friends ship security skills, people write their own, and they work. What none of them has is your company: the other twelve repos, how your services talk to each other, which of your systems actually holds the data worth stealing. Ask Argus whether a pattern is a problem and it answers for your world instead of for security in the abstract, because the SOUL and the memory are right there. And it runs skills, which is how security methodology gets baked in. It ships with a handful: &lt;code&gt;pr-quick-check&lt;/code&gt; for a fast pass over a diff, &lt;code&gt;authz-audit&lt;/code&gt; for hunting authorization flaws, &lt;code&gt;secret-rotation-plan&lt;/code&gt; for finding committed secrets and deciding what to rotate first, and &lt;code&gt;threat-modeling&lt;/code&gt; for a STRIDE pass. You write your own the same way the built-ins are written, as a Markdown &lt;code&gt;SKILL.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Getting started is &lt;code&gt;./argus init&lt;/code&gt; to pick a provider and write your SOUL, &lt;code&gt;./argus doctor&lt;/code&gt; to check the scanners are wired up, &lt;code&gt;./argus codehost setup&lt;/code&gt; to connect GitHub, and plain &lt;code&gt;./argus&lt;/code&gt; to just chat with it. There's a container image on &lt;code&gt;ghcr.io&lt;/code&gt; with the scanners pre-bundled if you'd rather not install Semgrep and friends by hand.&lt;/p&gt;

&lt;p&gt;A word on which model runs all this, because it's a design choice and not an afterthought. Argus is built to run on the AI you already have and already trust, rather than the one a vendor picks for you. The provider layer sits behind an interface, and &lt;code&gt;argus init&lt;/code&gt; is where you choose. Today that choice is still narrow, with one provider implemented, and I won't dress that up as a feature. Support for any OpenAI-compatible endpoint is what I'm building right now, so depending on when you read this it may already be in. That's also the change that opens the door to local models, since most local runners speak the same API, and it matters for the teams I most want to reach: the ones who can't send their code to somebody else's API and don't have the budget to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it's going
&lt;/h2&gt;

&lt;p&gt;The idea list is longer than the changelog, which is the correct ratio for a v0.&lt;/p&gt;

&lt;p&gt;The near stuff: Slack as a first-class channel, so Argus really is the colleague you message. Local models. More skills.&lt;/p&gt;

&lt;p&gt;The stuff I'm actually excited about: service and code discovery, so Argus builds its own map of your systems instead of waiting to be told, and a view of how your projects connect, because that cross-project graph is where the non-obvious problems hide.&lt;/p&gt;

&lt;p&gt;But I want to be careful, because I've made this mistake before. With &lt;a href="https://dev.to/blog/i-built-a-tool-i-dont-use"&gt;Worky&lt;/a&gt; I built a showcase site and full docs for a tool with zero users, then watched it drift because there was no real usage telling me what to build next. A roadmap without users is fiction. So I'm not going to pretend I know exactly what Argus needs. The roadmap comes from whoever picks it up.&lt;/p&gt;

&lt;p&gt;The difference from Worky, the reason I'm not worried this one ends up on the same shelf, is that I use Argus. It has a mission I care about. This is the tool I want to keep alive, and I get a vote in what it becomes precisely because I'm one of its users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Come build in AI and security
&lt;/h2&gt;

&lt;p&gt;There's a bigger thing behind Argus, and it's the reason I'm writing this instead of just pushing a repo.&lt;/p&gt;

&lt;p&gt;AI and cybersecurity are converging fast, and most people are only watching one side of it. Back in June we ran a hackathon at RedCarbon: one day, tiny teams, AI pointed at security problems. I wrote about being on the jury in &lt;a href="https://dev.to/blog/i-built-a-tool-i-dont-use"&gt;the Worky retrospective&lt;/a&gt;, but the part I keep coming back to is the range. One team went after phishing aimed at non-technical family members. Another built for the SOC. Another attacked the security of AI models themselves. Same prompt, completely different directions, all of them real.&lt;/p&gt;

&lt;p&gt;Argus is just my direction, and it comes from something I actually live. I'm lucky here: I have security colleagues at RedCarbon who helped me shape it, pick the tools, and read what those tools are really saying. But they spend their days pointing our own AI agents at SOC problems, and none of them has time to sit behind our code's security posture every single day. So the developers have to, and Argus automates the exact work those colleagues would otherwise do by hand. And that job, it turns out, is increasingly buildable: models are getting good enough at security reasoning that the bottleneck is no longer the model, but whether someone shapes it into something trustworthy and useful.&lt;/p&gt;

&lt;p&gt;A while back I wrote that &lt;a href="https://dev.to/blog/ai-will-not-secure-your-codebase"&gt;AI will not secure your codebase&lt;/a&gt;, that it won't do the job for you but it can surface risk earlier, act as an early-warning system. Argus is me trying to make that concrete. Not a magic box that makes you secure, but a colleague who has read your whole codebase, remembers what you decided, and is awake at 2am when the PR lands.&lt;/p&gt;

&lt;p&gt;It's &lt;a href="https://github.com/argusappsec/argus" rel="noopener noreferrer"&gt;on GitHub&lt;/a&gt;, Apache 2.0, v0.2 and honest about it. If you do security, or you just want the security colleague you don't currently have, clone it, break it, write a skill, and tell me how you use it. Real usage is the one thing that turns a fun experiment into a tool that matters, and I learned that the expensive way.&lt;/p&gt;

&lt;p&gt;Worky has two stars and I made my peace with that. Argus I'd actually like you to star, because this is the one I'm keeping. And if you've been sitting on your own idea at the intersection of AI and security, stop sitting on it. The water's warm.&lt;/p&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;The 4.8 million figure is ISC2's estimate of the global cybersecurity workforce gap: the distance between the security professionals organizations say they need and the ones actually available to hire. Source: &lt;a href="https://www.isc2.org/Insights/2024/10/ISC2-2024-Cybersecurity-Workforce-Study" rel="noopener noreferrer"&gt;ISC2 2024 Cybersecurity Workforce Study&lt;/a&gt;.&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>go</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Gemini 3.6 Flash: Google's Fastest Bet in a Crowded Race 🚀</title>
      <dc:creator>Domenico Tenace</dc:creator>
      <pubDate>Wed, 29 Jul 2026 08:33:15 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/gemini-36-flash-googles-fastest-bet-in-a-crowded-race-2a77</link>
      <guid>https://dev.to/playfulprogramming/gemini-36-flash-googles-fastest-bet-in-a-crowded-race-2a77</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Hey everyone 👋&lt;/p&gt;

&lt;p&gt;Google dropped Gemini 3.6 Flash on July 21, 2026, and it's worth talking about. Not because it's a revolution, but because it quietly improves on almost everything from 3.5 Flash while getting cheaper and faster at the same time. That's a combination you don't see often.&lt;/p&gt;

&lt;p&gt;Let me break down what actually changed, how it stacks up against the competition, and whether you should care.&lt;/p&gt;

&lt;p&gt;Let's dive in! 🤙&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Gemini 3.6 Flash? 🤔
&lt;/h2&gt;

&lt;p&gt;Gemini 3.6 Flash is Google's workhorse model for developers, the go-to for agentic workflows, coding tasks, long-document reasoning, and multimodal work. It's not Google's most capable model (that's still the upcoming 3.5 Pro and eventually Gemini 4), but it's the one most developers will actually use day to day.&lt;/p&gt;

&lt;p&gt;It was released alongside two companion models: Gemini 3.5 Flash-Lite, designed for high-throughput and low-latency tasks like agentic search and document processing, and the limited-pilot Gemini 3.5 Flash Cyber for governments and trusted partners.&lt;/p&gt;

&lt;p&gt;The model is available in Google AI Studio, the Gemini API (model ID &lt;code&gt;gemini-3.6-flash&lt;/code&gt;), the Gemini app, Antigravity, Android Studio, and Vertex AI.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Numbers: What Actually Changed 📊
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Benchmarks
&lt;/h3&gt;

&lt;p&gt;Gemini 3.6 Flash improves on Gemini 3.5 Flash across the board: coding went from 55.1% to 58.7% on SWE-Bench Pro, long-context retrieval went from roughly 27% to 54.0%, and computer use went from 78.4% to 83% on OSWorld Verified.&lt;/p&gt;

&lt;p&gt;Average task time fell from 2.7 minutes to 1.3 minutes, while estimated task cost declined about 18 percent. That's not a minor tweak. That's a meaningfully faster agent in practice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Speed
&lt;/h3&gt;

&lt;p&gt;It runs at about 280 tokens per second, which makes it one of the faster models in its class for interactive use. For agentic workflows where you're chaining multiple LLM calls, this compounds fast.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;p&gt;Gemini 3.6 Flash costs $1.50 per million input tokens and $7.50 per million output tokens. Input pricing is unchanged from Gemini 3.5 Flash, but output dropped from $9.00 to $7.50 per million tokens.&lt;/p&gt;

&lt;h3&gt;
  
  
  Context Window and Knowledge Cutoff
&lt;/h3&gt;

&lt;p&gt;The model runs a 1 million-token context window with a 64,000-token output cap, and its knowledge cutoff is March 2026, up from January 2025 on Gemini 3.5 Flash. That's a 14-month jump, which matters more than it sounds. A model that knows about recent framework releases, pricing changes, and API updates needs less web retrieval to stay useful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Token Efficiency
&lt;/h3&gt;

&lt;p&gt;The model takes fewer reasoning steps and tool calls to complete multi-step workflows, which is a large part of why it uses roughly 17 percent fewer output tokens than its predecessor. You're paying for less and getting more done. That's the ideal direction.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Compares to the Competition 🥊
&lt;/h2&gt;

&lt;h3&gt;
  
  
  vs. Claude Sonnet 5
&lt;/h3&gt;

&lt;p&gt;Claude Sonnet 5 outperforms on 3 benchmarks including SWE-Bench Pro and GDPval-AA, while Gemini 3.6 Flash wins on OSWorld-Verified and CharXiv-R. Claude Sonnet 5 has a slight edge in raw benchmark performance.&lt;/p&gt;

&lt;p&gt;But the cost story is different. Gemini 3.6 Flash is 25% cheaper on both input and output compared to Claude Sonnet 5. At 100,000 tasks per month with 5,000 input and 10,000 output tokens each, that's $2,750/month in savings. For cost-sensitive workloads, Gemini is the clear winner.&lt;/p&gt;

&lt;p&gt;Gemini 3.6 Flash also runs at 304 tokens per second compared to roughly 180 for Claude Sonnet 5. For agent workflows where latency matters, the speed difference is noticeable.&lt;/p&gt;

&lt;p&gt;My take: if code quality at any cost is the priority, Claude Sonnet 5 still wins on most coding benchmarks. If you're building high-volume agent pipelines or cost is a real constraint, Gemini 3.6 Flash makes a strong argument.&lt;/p&gt;

&lt;h3&gt;
  
  
  vs. GPT-5.6 Luna
&lt;/h3&gt;

&lt;p&gt;GPT-5.6 Luna remains cheaper than Gemini 3.6 Flash at public API rates, but Artificial Analysis measured Gemini at 304 output tokens per second compared to 190 for Luna. This creates a practical trade-off: Luna offers lower token rates, while Gemini produces output faster.&lt;/p&gt;

&lt;p&gt;Independent testers report Gemini 3.6 Flash loses most coding benchmarks and GDPVal to Grok 4.5 and GPT-5.6 Luna. So if pure coding benchmark numbers are what you're optimizing for, Google isn't at the top of that list right now.&lt;/p&gt;

&lt;h3&gt;
  
  
  vs. Gemini 3.5 Flash
&lt;/h3&gt;

&lt;p&gt;Both Gemini 3.6 Flash and Gemini 3.5 Flash currently score 50 on the Artificial Analysis Intelligence Index. Existing Gemini 3.5 Flash users have the clearest migration case, especially when latency and output volume drive costs.&lt;/p&gt;

&lt;p&gt;In other words: same intelligence, faster, cheaper, fresher knowledge cutoff. The upgrade is a no-brainer if you're already on 3.5 Flash.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Missing: The Elephant in the Room 🐘
&lt;/h2&gt;

&lt;p&gt;The most notable absence in this announcement is Gemini 3.5 Pro. Google originally said at I/O in May that 3.5 Pro would launch the following month. That deadline passed without a public release. Bloomberg reported on July 16 that the model was running months behind schedule, with Google spending extra time on its coding capabilities.&lt;/p&gt;

&lt;p&gt;Google did not release Gemini 3.5 Pro in this announcement. The company said the Pro model fell short of internal expectations on coding and complex reasoning, so its broader release was delayed.&lt;/p&gt;

&lt;p&gt;This is the real story. A delayed Pro model means that right now, Google's top available offering in the Flash tier competes on price and speed but not on raw reasoning against Claude Opus or GPT-5.6. Google also confirmed that pre-training has begun on Gemini 4, which the team described as its most ambitious pre-training run yet. So the roadmap is clearly ambitious, but the present gap is real.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Pros 👍
&lt;/h2&gt;

&lt;p&gt;Cost efficiency is excellent. Roughly half the output price of Claude Sonnet 5 at production scale is meaningful money. For startups or anyone watching API bills closely, this matters.&lt;/p&gt;

&lt;p&gt;Speed is genuinely impressive. At 304 tokens per second, it's 1.7x faster than Claude Sonnet 5 for agent workflows where latency matters.&lt;/p&gt;

&lt;p&gt;Multimodal support is broad. Gemini 3.6 Flash supports voice, video processing, images, PDFs, and audio as input. Claude Sonnet 5 doesn't support voice or video. For multimodal applications, Gemini is the stronger choice.&lt;/p&gt;

&lt;p&gt;The knowledge cutoff jump is significant. Going from January 2025 to March 2026 in one model generation means you're working with a model that actually knows about tools and frameworks released in the past year and a half.&lt;/p&gt;

&lt;p&gt;Token efficiency means lower costs in practice. Fewer output tokens for the same quality work, combined with a lower output price, compounds into real savings at volume.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Cons 👎
&lt;/h2&gt;

&lt;p&gt;The Pro model is still missing. For developers who need the strongest possible reasoning and coding quality today, Google's delays leave a gap that Claude Opus and GPT-5.6 are filling.&lt;/p&gt;

&lt;p&gt;Raw coding benchmark scores lag behind top competitors. On the benchmarks that matter most to developers, Grok 4.5, GPT-5.6 Luna, and Claude Opus 4.8 still outperform Gemini 3.6 Flash. Speed and cost don't compensate for quality when you're debugging something complex.&lt;/p&gt;

&lt;p&gt;Intelligence Index hasn't moved. Gemini 3.6 Flash and Gemini 3.5 Flash both score 50 on the Artificial Analysis Intelligence Index. Faster and cheaper is great, but it's not smarter. If you were hoping for a reasoning leap, this isn't it.&lt;/p&gt;

&lt;p&gt;Gemini 4 uncertainty. Google teasing their next major model while 3.5 Pro is still delayed creates uncertainty for teams planning their model strategy. Do you build on 3.6 Flash now, or wait?&lt;/p&gt;




&lt;h2&gt;
  
  
  Who Should Use Gemini 3.6 Flash? 🎯
&lt;/h2&gt;

&lt;p&gt;Existing Gemini 3.5 Flash users. The migration is a pure upgrade: same intelligence, faster, cheaper, better knowledge cutoff. No reason not to switch.&lt;/p&gt;

&lt;p&gt;Cost-sensitive teams building agents. If you're running thousands or millions of API calls, the pricing advantage compounds fast. At scale, Gemini 3.6 Flash is the most efficient option in its class.&lt;/p&gt;

&lt;p&gt;Multimodal applications. Voice, video, images, audio all in one model with a 1M token context window. If your use case touches multiple modalities, this is the most capable option at this price point.&lt;/p&gt;

&lt;p&gt;Developers already in the Google ecosystem. Antigravity, AI Studio, Vertex AI, Android Studio. If you're already in these tools, the integration is seamless.&lt;/p&gt;

&lt;p&gt;Who should look elsewhere: if you need the strongest possible code generation today and budget is secondary, Claude Opus 4.8 or GPT-5.6 Luna are stronger choices on raw coding benchmarks.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Take 💭
&lt;/h2&gt;

&lt;p&gt;Gemini 3.6 Flash is a solid, honest upgrade. Google didn't promise a revolution and didn't deliver one. What they delivered is a faster, cheaper, more efficient model with a dramatically improved knowledge cutoff. For most agentic workloads, that's exactly what you need.&lt;/p&gt;

&lt;p&gt;The absence of 3.5 Pro is frustrating, and the coding benchmark gap against the top tier is real. But if you're building cost-sensitive pipelines, working with multimodal content, or already deep in Google's ecosystem, 3.6 Flash makes a compelling case.&lt;/p&gt;

&lt;p&gt;The question isn't "is this the best model?" It's "is this the best model for what I'm building?" For a lot of teams, the answer is yes.&lt;/p&gt;

&lt;p&gt;Happy coding! ✨&lt;/p&gt;




&lt;p&gt;Hi 👋🏻&lt;br&gt;
My name is Domenico, software developer passionate of Open Source, I write article about it for share my knowledge and experience.&lt;br&gt;
Don't forget to visit my Linktree to discover my links and to check out Domenico Tenace Open Labs for my open-source projects! 🫰🏻&lt;/p&gt;

&lt;p&gt;🌲 Linktree: &lt;a href="https://linktr.ee/domenicotenace" rel="noopener noreferrer"&gt;https://linktr.ee/domenicotenace&lt;/a&gt;&lt;br&gt;
🐙 Domenico Tenace Open Labs: &lt;a href="https://github.com/Domenico-Tenace-Open-Labs" rel="noopener noreferrer"&gt;https://github.com/Domenico-Tenace-Open-Labs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow me on dev.to for more articles 👇&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__985143"&gt;
    &lt;a href="/dvalin99" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F985143%2Fc4c372a7-0b38-4f9e-b206-7ed65597ea31.png" alt="dvalin99 image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dvalin99"&gt;Domenico Tenace&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dvalin99"&gt;Passionate about the IT world and everything related to it ✌🏻
Open Source enthusiastic 🦠&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;If you like my content or want to support my work, you can support me with a small donation. I would be grateful 🥹&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/domenicotenace" rel="noopener noreferrer"&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%2Fb5vrzbmybu3q0sb5bzs1.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>google</category>
      <category>gemini</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Automating my Codemotion Badge with Antigravity</title>
      <dc:creator>Luca Del Puppo</dc:creator>
      <pubDate>Wed, 08 Jul 2026 05:50:52 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/automating-my-codemotion-badge-with-antigravity-4gpo</link>
      <guid>https://dev.to/playfulprogramming/automating-my-codemotion-badge-with-antigravity-4gpo</guid>
      <description>&lt;p&gt;Today, I wanna show you how to set up your devices with Antigravity using only the agentic mode, without touching any code.&lt;/p&gt;

&lt;p&gt;At the last CodeMotion Rome, I got my special badge. A &lt;a href="https://www.cmnode.it/en/" rel="noopener noreferrer"&gt;CM Node&lt;/a&gt;, a special hardware board, that you can customise for your conferences.&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%2Fm6q63fq326znwdh88mvn.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%2Fm6q63fq326znwdh88mvn.png" width="800" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm not a super nerd for this kind of stuff, so I decided to use Antigravity and all its capabilities to build and flash the best board ever for my future conferences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Small intro about the board
&lt;/h2&gt;

&lt;p&gt;This board has been delivered with a &lt;a href="https://github.com/Codemotion-Official/CMNode" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt; to understand how to flash it and how it works. In Rome, I saw different attendees with awesome badges. For instance, Soumaya had built a badge with a small plastic hand that used a sensor when someone was near her; it started waving to say hi.&lt;br&gt;&lt;br&gt;
Since that day, I have been thinking about what I can build to have a cool badge. Nothing has come to my mind, so today, with this blog, we will build my badge together, and thanks to Antigravity, we will create the best version possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Antigravity
&lt;/h2&gt;

&lt;p&gt;If you don't know &lt;a href="https://antigravity.google/" rel="noopener noreferrer"&gt;Antigravity&lt;/a&gt;. Antigravity is a set of tools built by Google. We have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://antigravity.google/product/antigravity-2" rel="noopener noreferrer"&gt;Antigravity 2.0&lt;/a&gt;: is a dedicated platform to work with agents. Orchestrate multiple autonomous agents working in parallel across independent projects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://antigravity.google/product/antigravity-cli" rel="noopener noreferrer"&gt;Antigravity CLI&lt;/a&gt;: terminal-first surface to interact with Antigravity agents. Stay in your flow without context switching&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://antigravity.google/product/antigravity-ide" rel="noopener noreferrer"&gt;Antigravity IDE&lt;/a&gt;: editor view offers tab autocompletion, natural language code commands, and a configurable, and context-aware configurable agent&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://antigravity.google/product/antigravity-sdk" rel="noopener noreferrer"&gt;Antigravity SDK&lt;/a&gt;: build AI agents that autonomously read files, run commands, edit code, and more. The Agent SDK gives you the same tools, agent loop, and context management that power Google Antigravity, programmable in Python.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Today, in this blog post, we will use Antigravity 2.0 to set up the board. You can use this tool to orchestrate many projects from a unique UI. This tool is fully agentic; using natural language, you can spawn agents, plan, and work on your projects. If you want to check the codebase in detail, you must use the Antigravity IDE. I’m not a fan of this decision, I’d prefer one tool for both, but this is what we have, and we must use it as it is.&lt;/p&gt;

&lt;h3&gt;
  
  
  Let’s start cooking
&lt;/h3&gt;

&lt;p&gt;Okay, after this introduction, let’s see what we can do with Antigravity and the CodeMotion Board.&lt;/p&gt;

&lt;p&gt;So, I’m dumb about this board right now, and I want to use Antigravity to figure out what I can do with it and get an idea of what my badge might look like.&lt;/p&gt;

&lt;p&gt;I open the Antigravity app, and from the UI, I start a new project, and in the prompt, I type&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I want to set up my Codemotion Badge.&lt;br&gt;&lt;br&gt;
It's a CMNode v0 &lt;a href="https://www.cmnode.it/en/" rel="noopener noreferrer"&gt;https://www.cmnode.it/en/&lt;/a&gt;, and it can be programmed.&lt;br&gt;&lt;br&gt;
I want to create two different screens: the first a classic one with name, surname, heading, and company, and a QR code linking to my website.&lt;br&gt;&lt;br&gt;
The second one must be fantastic, and I want different options to choose from you.&lt;/p&gt;

&lt;p&gt;I have this repository as an example to set up the badge &lt;a href="https://github.com/Codemotion-Official/CMNode" rel="noopener noreferrer"&gt;https://github.com/Codemotion-Official/CMNode&lt;/a&gt;; you can use it as an example to create my badge.&lt;br&gt;&lt;br&gt;
Lastly, I don't want to flash the ROM every time, so I'd like a small web page I can access via Wi-Fi to update the information.&lt;/p&gt;

&lt;p&gt;Can you plan the work to do it?&lt;br&gt;&lt;br&gt;
Include also two or three possible ideas for the second screen. It must be cool and fancy!&lt;/p&gt;

&lt;p&gt;The badge is already connected to the laptop in case you want to deploy the result.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now, I press enter and let’s see the result and what it will cook.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;h1&gt;
  
  
  &lt;strong&gt;CMNode v0 WiFi Configuration &amp;amp; Dual Screen Setup&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;The goal of this task is to upgrade your CMNode v0 badge by replacing the serial-based configuration with a Wi-Fi-based web interface. We will also save the configured data to flash memory so it persists across reboots, and implement two different display layouts: a "Classic" screen and a "Fantastic" screen.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;User Review Required&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Please review the proposed ideas for the "Fantastic" screen below. Let me know which one you prefer, or if you'd like to combine elements from different ideas!&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Ideas for the "Fantastic" Second Screen:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The "Hacker Terminal"&lt;/strong&gt; : A retro command-line interface aesthetic. The screen features a black background with white text, simulating a terminal session (e.g., &lt;code&gt;&amp;gt; user@cmnode:~$ whoami&lt;/code&gt;, followed by your details). We can use monospace fonts and add some faux hex-dumps or ASCII elements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The "RPG Stats / Gamer Card"&lt;/strong&gt; : Your badge becomes a character stat sheet. It will display you as a "Level 99 Developer" with stats like "INT: 99", "COFFEE: 100%", an energy bar, and your details integrated into a game-like UI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The "Minimalist Cyberpunk"&lt;/strong&gt; : A bold, modern, and high-contrast design. It uses large vertical typography for your name, heavy geometric shapes, thick red accent lines, and a large barcode aesthetic alongside your QR code.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Let me know which of these three ideas (or a mix!) you want me to build for the second screen.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Proposed Changes&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We will modify the firmware to support a captive-like Wi-Fi Access Point and Web Server.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Core Logic Updates&lt;/strong&gt;
&lt;/h3&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;[MODIFY]&lt;/strong&gt; &lt;code&gt;src/main.cpp&lt;/code&gt; &lt;strong&gt;(or&lt;/strong&gt; &lt;code&gt;NodeV0.ino&lt;/code&gt;&lt;strong&gt;)&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Wi-Fi Access Point&lt;/strong&gt; : The ESP32-C3 will broadcast an SSID (e.g., &lt;code&gt;CMNode-Config&lt;/code&gt;). You can connect to it with your phone or laptop.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Web Server&lt;/strong&gt; : A built-in web server will serve a simple, mobile-friendly HTML configuration page at &lt;a href="http://192.168.4.1" rel="noopener noreferrer"&gt;&lt;code&gt;http://192.168.4.1&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Form Submission&lt;/strong&gt; : The webpage will contain a form to update your Name, Surname, Role, Company, QR Link, and a dropdown to select the active screen layout (Classic vs Fantastic).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Persistent Storage&lt;/strong&gt; : Integrate the &lt;code&gt;Preferences&lt;/code&gt; library to save your data to the ESP32's non-volatile storage (NVS). This ensures your badge remembers your details even after turning off.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Display Pipeline&lt;/strong&gt; : Refactor the &lt;code&gt;drawContent()&lt;/code&gt; function to support rendering two completely different layouts based on your selection.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Verification Plan&lt;/strong&gt;
&lt;/h2&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Manual Verification&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;I will write the updated code and you will flash it to your badge via PlatformIO or Arduino IDE.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We will verify that the badge broadcasts the &lt;code&gt;CMNode-Config&lt;/code&gt; Wi-Fi network.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We will connect to it, open the web page, submit new data, and verify that the E-paper display updates immediately.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We will reboot the badge to confirm the data is preserved.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We will toggle between the Classic and Fantastic screens to verify the layouts.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;I commented on the plan, deciding to go with option one and asked for an example design.&lt;br&gt;&lt;br&gt;
Antigravity has started reviewing the plan and updated it in this way&lt;/p&gt;

&lt;blockquote&gt;
&lt;h1&gt;
  
  
  &lt;strong&gt;CMNode v0 WiFi Configuration &amp;amp; Dual Screen Setup&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;The goal of this task is to upgrade your CMNode v0 badge by replacing the serial-based configuration with a Wi-Fi-based web interface. We will also save the configured data to flash memory so it persists across reboots, and implement two different display layouts: a "Classic" screen and a "Fantastic" screen.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Design Choice: "Hacker Terminal"&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;You've selected the &lt;strong&gt;Hacker Terminal&lt;/strong&gt; idea for the second screen. This layout will simulate a retro command-line interface on the E-ink display:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Background&lt;/strong&gt; : Black (inverted).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Text&lt;/strong&gt; : Monospace white font, simulating terminal output (&lt;code&gt;root@cmnode:~$ whoami&lt;/code&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data&lt;/strong&gt; : Your name, surname, role, and company will be displayed as the "output" of the terminal command.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Accents&lt;/strong&gt; : Faux hex-dumps or system logs on the side, and a right-aligned QR code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is a mockup of the design:&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%2Fvlr4ibd3u9ajetq95uiy.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%2Fvlr4ibd3u9ajetq95uiy.png" alt="Hacker Terminal Mockup" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Does this mockup and the updated plan look good to you? If so, I will proceed with the implementation!&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Proposed Changes&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We will modify the firmware to support a captive-like Wi-Fi Access Point and Web Server.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Core Logic Updates&lt;/strong&gt;
&lt;/h3&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;[MODIFY]&lt;/strong&gt; &lt;code&gt;src/main.cpp&lt;/code&gt; &lt;strong&gt;(or&lt;/strong&gt; &lt;code&gt;NodeV0.ino&lt;/code&gt;&lt;strong&gt;)&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Wi-Fi Access Point&lt;/strong&gt; : The ESP32-C3 will broadcast an SSID (e.g., &lt;code&gt;CMNode-Config&lt;/code&gt;). You can connect to it with your phone or laptop.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Web Server&lt;/strong&gt; : A built-in web server will serve a simple, mobile-friendly HTML configuration page at &lt;a href="http://192.168.4.1" rel="noopener noreferrer"&gt;&lt;code&gt;http://192.168.4.1&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Form Submission&lt;/strong&gt; : The webpage will contain a form to update your Name, Surname, Role, Company, QR Link, and a dropdown to select the active screen layout (Classic vs Fantastic).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Persistent Storage&lt;/strong&gt; : Integrate the &lt;code&gt;Preferences&lt;/code&gt; library to save your data to the ESP32's non-volatile storage (NVS). This ensures your badge remembers your details even after turning off.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Display Pipeline&lt;/strong&gt; : Refactor the &lt;code&gt;drawContent()&lt;/code&gt; function to support rendering two completely different layouts based on your selection.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Verification Plan&lt;/strong&gt;
&lt;/h2&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Manual Verification&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;I will write the updated code and you will flash it to your badge via PlatformIO or Arduino IDE.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We will verify that the badge broadcasts the &lt;code&gt;CMNode-Config&lt;/code&gt; Wi-Fi network.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We will connect to it, open the web page, submit new data, and verify that the E-paper display updates immediately.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We will reboot the badge to confirm the data is preserved.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We will toggle between the Classic and Fantastic screens to verify the layouts.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;As you can see, we now have a clear idea of how the second screen should look and a plan to implement everything, but before spawning the agent work, I'd also like to have a design of the first screen of the badge, so using the chat, I ask to include it also in the plan.&lt;br&gt;&lt;br&gt;
After two iterations of the prompt, this is the result&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%2Fekeo6h4eg4w6ca64owdw.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%2Fekeo6h4eg4w6ca64owdw.png" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The implementation
&lt;/h3&gt;

&lt;p&gt;To implement the plan, we just need to press the Proceed button and wait&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%2F91zg60zwkqr2r24ughdg.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%2F91zg60zwkqr2r24ughdg.png" width="799" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;During the implementation, we can check what is happening through the UI&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%2Fm7lais4obiea9cy8kvtl.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%2Fm7lais4obiea9cy8kvtl.png" width="800" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And if we notice something weird, we can stop the agent and type a new prompt to drive it again on the right path.&lt;br&gt;&lt;br&gt;
If you, like me, prefer to get confirmation before running commands or editing files, you must also approve these actions through the UI.&lt;/p&gt;

&lt;p&gt;After 2 minutes, this is the result.&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%2F56rjqczbk93xqy75up3x.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%2F56rjqczbk93xqy75up3x.png" width="800" height="645"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And if I connect my laptop to the badge Wi-Fi, I can configure my badge.&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%2Fovtot820jj87ux346wlo.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%2Fovtot820jj87ux346wlo.png" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The refine
&lt;/h3&gt;

&lt;p&gt;Now we have a badge working, but we want to improve it a bit: first, I want to change the screen by pressing the button on the back without connecting to the badge's Wi-Fi, and I want to set the Wi-Fi password via Environment Variables.&lt;br&gt;&lt;br&gt;
So I can prompt this&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can we also change the screen view using the button on the rear of the badge without connecting to the badge's Wi-Fi?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And after a minute, the result is ready, and my badge has been flashed.&lt;br&gt;&lt;br&gt;
And lastly, I can ask not to hard-code the password but use an environment variable,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;use an environment variable for the wifi password&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;same here, after one minute and a couple of approvals, the result is again ready and in my badge.&lt;/p&gt;

&lt;p&gt;To complete, I want to change the layout by using one of the buttons on the back of the badge. So again I ask Antigravity to do it for me.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can we change the screen view also by using the button in the rear of the badge without connecting to the badge wifi?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and same here, after some minutes, sometimes the result is happier in the badge.&lt;/p&gt;

&lt;p&gt;And the final result is this one&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%2Fd9r92nf2e97kqp6ez3pr.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd9r92nf2e97kqp6ez3pr.jpg" width="800" height="1067"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and this one&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%2F63zj0c26tiy8mki4hohl.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F63zj0c26tiy8mki4hohl.jpg" width="800" height="1067"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;It's time to wrap up!&lt;br&gt;&lt;br&gt;
So my experience with Antigravity has been great! I love to use it to build new things, or as a teammate to learn new technology, or just to prototype a pet project like this one.&lt;/p&gt;

&lt;p&gt;If you are in the agentic development, this tool can be a good one for you!&lt;br&gt;&lt;br&gt;
The experience is great, and if you want to have control over different projects or streams, it can be really helpful. The only pain point for me is the fact that if you want to check the code, you must install another tool, the Antigravity IDE, to check it.&lt;/p&gt;

&lt;p&gt;In this era of agent development, what I find great is the ability to plan and review the changes before the agent implements them! This is the game-changer for me in this moment, and then a lot and a lot of code review!&lt;/p&gt;

&lt;p&gt;Okay, that's it! I hope you enjoy this introduction to Antigravity and that you now want to test it for your project.&lt;/p&gt;

&lt;p&gt;I hope you also like my new super badge 🚀&lt;/p&gt;

&lt;p&gt;&lt;em&gt;p.s. to check the code result, you can navigate to this&lt;/em&gt; &lt;a href="https://github.com/Puppo/codemotion-badge" rel="noopener noreferrer"&gt;&lt;em&gt;repository&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Google Cloud credits are provided for this project.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>agenticarchitect</category>
      <category>googleantigravity</category>
    </item>
    <item>
      <title>Daily Prompt Is Out. Long Live Spellbook of Prompt 🧙🏻‍♂️</title>
      <dc:creator>Domenico Tenace</dc:creator>
      <pubDate>Mon, 06 Jul 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/daily-prompt-is-out-long-live-spellbook-of-prompt-4353</link>
      <guid>https://dev.to/playfulprogramming/daily-prompt-is-out-long-live-spellbook-of-prompt-4353</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Hey everyone 👋&lt;/p&gt;

&lt;p&gt;Some projects start as a quick idea and slowly grow into something you actually want to take seriously. That's exactly what happened with Daily Prompt, a small collection of prompts I put together for personal use that at some point became messy, inconsistent, and honestly a bit embarrassing to share.&lt;/p&gt;

&lt;p&gt;So I restarted from scratch. New name, new structure, new look. Meet &lt;a href="https://github.com/Domenico-Tenace-Open-Labs/spellbook-of-prompt" rel="noopener noreferrer"&gt;&lt;strong&gt;Spellbook of Prompt&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Let's dive in! 🤙&lt;/p&gt;




&lt;h2&gt;
  
  
  What Was Daily Prompt? 🤔
&lt;/h2&gt;

&lt;p&gt;Daily Prompt was exactly what the name suggests: a daily collection of prompts. The idea was fine, a place to gather useful prompt templates to use with ChatGPT, Claude, Gemini, and whatever else was around. But the execution had problems.&lt;/p&gt;

&lt;p&gt;The prompts were scattered with no real organization. There was no clear logic behind the categories. The visual side was the default Starlight theme with zero customization. It felt like a dumping ground more than an actual project.&lt;/p&gt;

&lt;p&gt;And the name itself was limiting. "Daily" implied a frequency I couldn't keep up with. It set the wrong expectations.&lt;/p&gt;

&lt;p&gt;At some point I looked at it and thought: this doesn't represent what I actually want it to be.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Rebrand? 💡
&lt;/h2&gt;

&lt;p&gt;Renaming a project isn't something I do lightly. It breaks URLs, confuses people who already know it, and requires updating everything.&lt;/p&gt;

&lt;p&gt;But sometimes a fresh start is the right call.&lt;/p&gt;

&lt;p&gt;The rebrand to &lt;strong&gt;Spellbook of Prompt&lt;/strong&gt; came from a simple realization: a spellbook is a perfect metaphor for what this is. It's a collection of incantations, each one carefully crafted, tested, and documented. You open it, find what you need, cast the spell (run the prompt), and get a result.&lt;/p&gt;

&lt;p&gt;It fits. And more importantly, it gives the project an identity worth building around.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Changed: The Structure 🏗️
&lt;/h2&gt;

&lt;p&gt;The biggest improvement is the organization. Daily Prompt was a flat list of prompts with loose labels. Spellbook of Prompt organizes everything by use case, so you can actually find what you need without scrolling forever.&lt;/p&gt;

&lt;p&gt;The categories cover the most common real-world scenarios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Content Creation&lt;/strong&gt;: scripts, posts, articles, newsletters&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Generation and Debugging&lt;/strong&gt;: boilerplate, reviews, refactoring&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Analysis and Reporting&lt;/strong&gt;: summaries, structured output, comparisons&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writing and Copywriting&lt;/strong&gt;: tone adjustments, persuasive copy, editing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Design and Creative Direction&lt;/strong&gt;: briefs, feedback loops, mood boards&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning and Education&lt;/strong&gt;: explanations, quizzes, study guides&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each prompt comes with a clear description, at least one input and output example, and notes on edge cases. The goal was to make every entry actually usable, not just a template you have to figure out yourself.&lt;/p&gt;

&lt;p&gt;The documentation is built with Astro and Starlight, which makes browsing fast and the content easy to read. MDX gives us enough flexibility to add interactive examples down the line without switching tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Changed: The Look 🎨
&lt;/h2&gt;

&lt;p&gt;This is where I spent more time than I expected.&lt;/p&gt;

&lt;p&gt;The old project was visually generic. Default colors, default fonts, nothing that connected it to anything else I build. It could have belonged to anyone.&lt;/p&gt;

&lt;p&gt;For Spellbook of Prompt I brought in my brand colors and made it feel like part of the same ecosystem as my personal site and other projects under Domenico Tenace Open Labs. It's a small thing, but it matters. When you open the docs, you immediately get a sense that someone cared about this, not just about the content but about how it looks.&lt;/p&gt;

&lt;p&gt;Consistency across projects builds trust. And building trust was part of the point.&lt;/p&gt;




&lt;h2&gt;
  
  
  Model-Agnostic by Design 🌍
&lt;/h2&gt;

&lt;p&gt;One thing I wanted to be clear about from the start: Spellbook of Prompt is not tied to any specific AI model.&lt;/p&gt;

&lt;p&gt;Most prompts here work across ChatGPT, Claude, Gemini, and any other LLM you're using. Where there are differences in behavior across models, the documentation mentions it. The collection is validated across at least two different models before anything gets merged.&lt;/p&gt;

&lt;p&gt;This matters because the AI landscape changes fast. Tying a prompt collection to a specific model would make half of it obsolete every few months.&lt;/p&gt;




&lt;h2&gt;
  
  
  It's Open Source and You Can Contribute 🤝
&lt;/h2&gt;

&lt;p&gt;Spellbook of Prompt is fully open source under MIT, and contributions are very welcome.&lt;/p&gt;

&lt;p&gt;If you have a prompt that works well and you've tested it properly, opening a PR is straightforward. The guidelines are in CONTRIBUTING.md and they're simple: keep prompts concise, include at least one example, validate across multiple models, and don't include sensitive data.&lt;/p&gt;

&lt;p&gt;The bar isn't high. The point is quality over quantity. I'd rather have 50 excellent prompts than 500 mediocre ones.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next 🚀
&lt;/h2&gt;

&lt;p&gt;There's still a lot to add. The categories are in place but some of them are thin. The live documentation site is up and running at &lt;a href="https://spellbook-of-prompt.netlify.app" rel="noopener noreferrer"&gt;spellbook-of-prompt.netlify.app&lt;/a&gt;, and I'll keep adding prompts regularly.&lt;/p&gt;

&lt;p&gt;A few things on the roadmap:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interactive prompt examples directly in the docs&lt;/li&gt;
&lt;li&gt;A tagging system for filtering by LLM compatibility&lt;/li&gt;
&lt;li&gt;More prompts for developer workflows (CI/CD explanations, commit messages, PR descriptions)&lt;/li&gt;
&lt;li&gt;Better search across the full collection&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts 🌟
&lt;/h2&gt;

&lt;p&gt;Sometimes a project needs to die to become something better. Daily Prompt served its purpose, but it had hit a ceiling. Spellbook of Prompt is what it should have been from the beginning, cleaner, more organized, and actually worth sharing.&lt;/p&gt;

&lt;p&gt;If you work with AI tools regularly and you keep writing the same prompts from scratch every time, this might save you some time. Go browse the collection, grab what's useful, and if you have something good to add, open a PR.&lt;/p&gt;

&lt;p&gt;The spellbook is open. 🔥&lt;/p&gt;

&lt;p&gt;Happy coding! ✨&lt;/p&gt;




&lt;p&gt;Hi 👋🏻&lt;br&gt;
My name is Domenico, software developer passionate of Open Source, I write article about it for share my knowledge and experience.&lt;br&gt;
Don't forget to visit my Linktree to discover my links and to check out Domenico Tenace Open Labs for my open-source projects! 🫰🏻&lt;/p&gt;

&lt;p&gt;🌲 Linktree: &lt;a href="https://linktr.ee/domenicotenace" rel="noopener noreferrer"&gt;https://linktr.ee/domenicotenace&lt;/a&gt;&lt;br&gt;
🐙 Domenico Tenace Open Labs: &lt;a href="https://github.com/Domenico-Tenace-Open-Labs" rel="noopener noreferrer"&gt;https://github.com/Domenico-Tenace-Open-Labs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow me on dev.to for more articles 👇&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__985143"&gt;
    &lt;a href="/dvalin99" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F985143%2Fc4c372a7-0b38-4f9e-b206-7ed65597ea31.png" alt="dvalin99 image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dvalin99"&gt;Domenico Tenace&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dvalin99"&gt;Passionate about the IT world and everything related to it ✌🏻
Open Source enthusiastic 🦠&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;If you like my content or want to support my work, you can support me with a small donation. I would be grateful 🥹&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/domenicotenace" rel="noopener noreferrer"&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%2Fb5vrzbmybu3q0sb5bzs1.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>astro</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Pasting Code into AI? Here’s Why Your Legal Team is Sweating</title>
      <dc:creator>Hayk Sargsyan</dc:creator>
      <pubDate>Sun, 28 Jun 2026 19:13:25 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/pasting-code-into-ai-heres-why-your-legal-team-is-sweating-49i8</link>
      <guid>https://dev.to/playfulprogramming/pasting-code-into-ai-heres-why-your-legal-team-is-sweating-49i8</guid>
      <description>&lt;p&gt;The integration of Large Language Models (LLMs) like OpenAI’s GPT-5, Anthropic’s Claude, and Google’s Gemini has fundamentally shifted the engineering landscape. For developers, these tools offer unprecedented velocity. However, blind reliance on public AI models &lt;strong&gt;introduces severe legal, financial, and architectural liabilities&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Understanding these legal pitfalls is no longer optional-it is a core engineering competency.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Core Legal Risks of AI in Development
&lt;/h2&gt;

&lt;p&gt;Using AI tools without guardrails exposes your organization to three primary legal vectors: &lt;strong&gt;Intellectual Property (IP) leakage, copyright infringement, and breach of contract&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intellectual Property (IP) Leakage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you paste proprietary code, business logic, or internal database schemas into a public LLM, you may forfeit trade secret protections. Many standard consumer-grade AI terms of service grant the provider the right to use your inputs to train future models. This means your proprietary algorithms could theoretically be generated for a competitor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Copyright Infringement &amp;amp; "Copyleft" Contamination&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;LLMs are trained on massive datasets, including open-source repositories with varying licenses (e.g., GPL, AGPL, MIT).&lt;/p&gt;

&lt;p&gt;An LLM might output a block of code that verbatim matches a copyleft-licensed project (like GPL). If that code is integrated into a commercial product, your organization could legally be forced to open-source its entire codebase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Breach of Client Contracts and NDAs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most enterprise software contracts include strict Non-Disclosure Agreements (NDAs) and data-handling clauses. Pasting client code into third-party AI models without explicit authorization directly violates these agreements, risking litigation and immediate contract termination.&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%2Fu9jlme6706hoglh0k609.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu9jlme6706hoglh0k609.jpg" alt="LLM description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo by &lt;a href="https://www.pexels.com/@googledeepmind/" rel="noopener noreferrer"&gt;Google DeepMind&lt;/a&gt; on &lt;a href="https://www.pexels.com/photo/an-artist-s-illustration-of-artificial-intelligence-ai-this-illustration-depicts-language-models-which-generate-text-it-was-created-by-wes-cockx-as-part-of-the-visualising-ai-project-l-18069697/" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "Blind Copy-Pasting" is a High-Risk Practice
&lt;/h2&gt;

&lt;p&gt;Copying and pasting entire business snippets, complex modules, or sensitive data dumps into tools like Claude or ChatGPT creates distinct liabilities. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pasting entire files often inadvertently includes proprietary APIs, security tokens, internal domain names, and unique business logic.&lt;/li&gt;
&lt;li&gt;Free or standard consumer tiers of Anthropic, OpenAI, and Google retain history by default. Even if you delete the chat, the data may remain on third-party servers for compliance auditing or system optimization.&lt;/li&gt;
&lt;li&gt;When an AI refactors an entire proprietary snippet, it mixes your IP with its statistical training weights. If the output mimics protected code, proving original ownership in a patent or copyright dispute becomes incredibly difficult.&lt;/li&gt;
&lt;/ul&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%2Fnsfbi5cdw2taguyc3vug.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnsfbi5cdw2taguyc3vug.jpg" alt="Mistakes Image" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo by &lt;a href="https://www.pexels.com/@eye4dtail/" rel="noopener noreferrer"&gt;George Becker&lt;/a&gt; on &lt;a href="https://www.pexels.com/photo/1-1-3-374916/" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Paths to Solve the AI Risk Problem
&lt;/h2&gt;

&lt;p&gt;Organizations must move away from ad-hoc AI usage and implement structural, engineered guardrails.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enterprise API Tiers and Zero-Data Retention (ZDR)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consumer interfaces (like the free web chats) are unsafe for corporate IP&lt;/strong&gt;. Businesses must mandate the use of Enterprise platforms or direct API integrations. Major providers guarantee via enterprise contracts that inputs and outputs are never used for model training and are deleted within a fixed window (typically 30 days).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-Hosted and Local LLMs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For highly sensitive core IP, companies should completely cut off third-party network dependencies. Data never leaves the corporate firewall, entirely eliminating third-party data leakage risks. Implement automated safety checks in the CI/CD pipeline. Use tools like GitHub Copilot’s built-in duplication filters or standalone scanners (e.g., Snyk, SonarQube) to catch AI-generated code that matches public repositories before it merges into production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developers must treat LLMs as untrusted, highly competent junior interns.&lt;/strong&gt; You guide them, verify their work, and never hand them the keys to the vault.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Never paste real business logic. Replace proprietary class names, variable names, and internal APIs with generic equivalents (e.g., convert &lt;code&gt;calculateCorporateTaxBracket()&lt;/code&gt; to &lt;code&gt;processNumbers())&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use AI to generate architectural patterns, algorithmic logic, or regex patterns rather than copy-pasting entire production files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Treat AI-generated code with higher skepticism than human code. Review it for security vulnerabilities, licensing compliance, and optimization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Always verify whether your organization utilizes enterprise-grade agreements with providers like Anthropic or OpenAI before utilizing their web interfaces.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fts1oybjhd889ukh5fjib.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fts1oybjhd889ukh5fjib.jpg" alt="Correct Road" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo by &lt;a href="https://www.pexels.com/@christina99999/" rel="noopener noreferrer"&gt;Christina &amp;amp; Peter&lt;/a&gt; on &lt;a href="https://www.pexels.com/photo/path-in-forest-20749988/" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AI is not going anywhere, and trying to ban its use in development is a losing battle.&lt;/strong&gt; The key to staying competitive as a developer isn't avoiding LLMs - it's mastering the guardrails around them. By treating AI as an untrusted third-party service, sanitizing your inputs, and pushing for enterprise-grade infrastructure, you can leverage the full velocity of generative AI without compromising your company's intellectual property.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>openai</category>
      <category>development</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Web MCP: give some tools to your agent</title>
      <dc:creator>Nicolas Frizzarin</dc:creator>
      <pubDate>Thu, 11 Jun 2026 15:50:17 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/web-mcp-give-some-tools-to-your-agent-23o2</link>
      <guid>https://dev.to/playfulprogramming/web-mcp-give-some-tools-to-your-agent-23o2</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Nowadays, AI agents are becoming increasingly powerful at assisting users in their daily web activities. However, we cannot yet allow them to act completely autonomously—there is still a risk of them clicking on the wrong elements, for instance.&lt;/p&gt;

&lt;p&gt;In theory, these agents are capable of performing impressive tasks, provided they are guided step-by-step through the interface. The challenge here is not a lack of intelligence in the model, nor a shortage of web APIs to expose data to the agent. The core issue lies in the fact that the agent must currently "guess" its way through applications that were designed exclusively for humans.&lt;/p&gt;

&lt;p&gt;This is precisely the problem that WebMCP is here to solve.&lt;/p&gt;

&lt;p&gt;It is important to note that these are not intended to replace standard APIs as access points for an application. Instead, they provide a structured way for a web application to "instruct" the AI agent used in the browser on how to navigate its interface. This results in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fewer misplaced clicks.&lt;/li&gt;
&lt;li&gt;Less trial-and-error when interacting with the UI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When utilized to their full potential, WebMCPs could redefine the user experience in the coming years.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is WEBMCP?
&lt;/h2&gt;

&lt;p&gt;As you may have guessed, WebMCP is a browser-side "guide/standard" for exposing tools to an AI agent directly from an active web page.&lt;/p&gt;

&lt;p&gt;During Google I/O, this new feature was introduced as a way for web applications to describe how a page functions—and what actions can be performed—to various AI agents. As a result, agents can execute these described actions faster, more efficiently, and with greater precision.&lt;/p&gt;

&lt;p&gt;Unsurprisingly, the syntax for creating these descriptions relies on JavaScript functions. These functions take natural language descriptions as parameters, along with structured schemas directly exposed from the web page.&lt;/p&gt;

&lt;p&gt;This is exactly where the power of WebMCP lies.&lt;/p&gt;

&lt;p&gt;Today, while we have Playwright (designed for end-to-end testing of web applications) and Playwright MCP (which extends this model to LLMs), WebMCP sits right at the intersection. It allows a page to effectively communicate to the agent: "Here are the actions you can perform on this page, how it works, and how you can trigger them."&lt;/p&gt;

&lt;h2&gt;
  
  
  Difference between WebMCP | MCP | Automation
&lt;/h2&gt;

&lt;p&gt;At first glance, it may seem like all these approaches are similar and perform the same functions. In reality, each serves a well defined purpose, and they are highly complementary. To better understand the distinctions between them, let’s look at things from an AI integration perspective.&lt;/p&gt;

&lt;h3&gt;
  
  
  Backend MCP
&lt;/h3&gt;

&lt;p&gt;At its core, an MCP server acts as a specialized bridge between AI models and external systems. It functions by providing a direct connection to APIs, effectively removing the friction typically involved in integrating new tools. By establishing a structured framework for data access, it ensures that the information exposed to the agent is organized, predictable, and secure. This architecture makes it an ideal solution for executing data-driven actions, allowing AI agents to perform complex, precise tasks with the reliability required for production grade applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Browser Automation
&lt;/h3&gt;

&lt;p&gt;Traditional automation concepts rely on mimicking user behavior to interact with the web. They reproduce human-like interactions, such as clicking buttons or scrolling through pages, and can access any element within the UI by targeting it directly in the DOM. A key characteristic of these methods is that they do not require a predefined data structure, as they operate by observing the visual state of the application. However, because they are so tightly coupled to the underlying HTML structure, the main flow can be quite brittle; even minor UI changes often cause the automation to break, requiring constant maintenance.&lt;/p&gt;

&lt;h3&gt;
  
  
  WebMCP
&lt;/h3&gt;

&lt;p&gt;By design, it shares the current application context directly with the AI, moving beyond what is merely visible on the screen. It structures and describes UI actions, providing the agent with a clear map of what is possible rather than forcing it to guess. This results in a highly reliable, context-aware interaction model that significantly reduces errors. Furthermore, the architecture is designed with human-in-the-loop capabilities at its core, ensuring that users maintain oversight and can intervene whenever necessary for sensitive or complex workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  When to use what: rules to apply.
&lt;/h3&gt;

&lt;p&gt;To ensure your AI agent performs at its best, it is important to select the right integration strategy based on your specific requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When an agent requires direct, structured access to data without interacting with a live web page, an MCP server is the ideal solution.&lt;/li&gt;
&lt;li&gt;When you need to interact with a web interface exactly like a human would—whether for automated testing, task execution, or full application usage—browser automation is the right choice.&lt;/li&gt;
&lt;li&gt;When a user is already actively navigating your web application and requires an agent that can interact with the entire page with high precision, WebMCP is the optimal path forward.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Different layers, different jobs.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use WEBMCP
&lt;/h2&gt;

&lt;p&gt;It is worth noting that, for now, WebMCP is only available in Chrome starting from version 149 (with a strong drive to integrate this feature into the Baseline movement).&lt;/p&gt;

&lt;p&gt;To enable this functionality in Chrome today, you need to use a feature flag:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to &lt;em&gt;chrome://flags&lt;/em&gt; in your browser.&lt;/li&gt;
&lt;li&gt;Search for and enable the &lt;em&gt;enable-webmcp-testing flag&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Relaunch your browser to apply the changes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There are two primary ways to utilize the WebMCP APIs to configure the tools exposed by your page:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Declarative API&lt;/strong&gt;: This method enables you to create WebMCP tools simply by adding annotations to your standard HTML forms, making the integration process more streamlined and semantic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Imperative API:&lt;/strong&gt; This approach allows you to define custom tools such as form submission, navigation, or other specialized actions directly using standard JavaScript functions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Defining tools using the Imperative API
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;modelContext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;registerTool&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;search_product&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;search product based on a user search input&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="na"&gt;inputSchema&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;object&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;search&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nl"&gt;required&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;search&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nl"&gt;outputSchema&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;List of products corresponding to the search&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; 
  &lt;span class="nl"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;search&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;search&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;products&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;?search=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;search&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;products&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Defining Form tool with the Declarative API
&lt;/h3&gt;

&lt;p&gt;As previously mentioned, the Declarative API allows you to create form-based tools using annotations. More specifically, it leverages standard HTML attributes on your forms to define and manage how the tool is created.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;form&lt;/span&gt; &lt;span class="na"&gt;toolname=&lt;/span&gt;&lt;span class="s"&gt;"supportRequestTool"&lt;/span&gt;
  &lt;span class="na"&gt;tooldescription=&lt;/span&gt;&lt;span class="s"&gt;"Submit a request for support."&lt;/span&gt;
  &lt;span class="na"&gt;action=&lt;/span&gt;&lt;span class="s"&gt;"/submit"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"firstName"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;First Name&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;firstName&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"lastName"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Last Name&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;lastName&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;select&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"select"&lt;/span&gt; &lt;span class="na"&gt;required&lt;/span&gt; 
    &lt;span class="na"&gt;toolparamdescription=&lt;/span&gt;&lt;span class="s"&gt;"Determines what team this request is routed to."&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Customer happiness team"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Return my purchase.&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Distribution team"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Check where my package is.&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Website support team"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Get help on the website.&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/select&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;submit&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Submit&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The declaration process relies on specific attributes to define your tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;toolname&lt;/code&gt;: Used to assign a specific name to your tool, reflecting its purpose.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tooldescription&lt;/code&gt;: Used to provide a clear explanation of the action the tool performs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In practice, when the agent invokes the &lt;code&gt;supportRequestTool&lt;/code&gt;, the browser brings the corresponding form to the foreground and fills out the fields while keeping the form visible to the user. Note that if you remove either the &lt;code&gt;toolname&lt;/code&gt; or &lt;code&gt;tooldescription&lt;/code&gt; attribute, the tool will be automatically unregistered and become inaccessible to the agent.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;toolparamdescription&lt;/code&gt;: This optional attribute allows you to map a specific element to a detailed description. If this attribute is omitted, the agent will default to using the field's label as the description.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Security
&lt;/h2&gt;

&lt;p&gt;As a reminder, LLMs process all text—including instructions and user data—as a single sequence of tokens. Consequently, once your application implements the WebMCP feature, it becomes susceptible to indirect prompt injection, where malicious instructions can be hidden within the content.&lt;/p&gt;

&lt;p&gt;To mitigate these risks, here are several security recommendations for implementing WebMCP:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;untrustedContentHint&lt;/code&gt;: Use this attribute to signal to the agent that the data originates from an external source, prompting it to exercise greater vigilance.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;readOnlyHint&lt;/code&gt;: Apply this attribute to tools that should not modify data states, ensuring they require explicit agent confirmation before execution.&lt;/li&gt;
&lt;li&gt;Character budgets: Define strict character limits for your tool names and descriptions to prevent prompt-injection attempts via long, malicious strings.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;exposedTo&lt;/code&gt;: Use this property to restrict access to your tools, limiting them to specific, trusted domains.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is important to remember that by default, tools are only exposed to the AI agent and are not accessible to other websites or iframes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;WebMCP represents a fundamental shift in how AI agents interact with the web. We are moving beyond the era of "computer-use stunts" where agents must guess intent from messy interfaces toward a model of direct, structured cooperation between sites and assistants.&lt;/p&gt;

&lt;p&gt;By exposing structured actions and context, WebMCP allows the browser to share what it already knows: the current page, the user's session, and the precise moment help is needed. While backend integrations remain the best fit for bulk data processing, WebMCP is the optimal path for sites that want to provide a reliable, context-aware experience during live navigation.&lt;/p&gt;

&lt;p&gt;We have only scratched the surface. In our next article, we will move from theory to practice by diving deep into implementation join us as we explore how to seamlessly integrate WebMCP into Angular applications.&lt;/p&gt;

</description>
      <category>angular</category>
      <category>web</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Google AI Studio: The Playground Every Developer Should Know About 🎮</title>
      <dc:creator>Domenico Tenace</dc:creator>
      <pubDate>Fri, 05 Jun 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/google-ai-studio-the-playground-every-developer-should-know-about-19bd</link>
      <guid>https://dev.to/playfulprogramming/google-ai-studio-the-playground-every-developer-should-know-about-19bd</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Hey everyone 👋&lt;/p&gt;

&lt;p&gt;If you've ever wanted to experiment with Gemini models, build AI-powered features, or grab an API key without going through a complex setup, &lt;strong&gt;Google AI Studio&lt;/strong&gt; is the tool you're looking for.&lt;/p&gt;

&lt;p&gt;It's free, it's browser-based, and it's probably the fastest way to go from "I have an idea" to "I have working code." Today I'll walk you through what it is, what you can actually do with it, and why it belongs in every developer's toolkit.&lt;/p&gt;

&lt;p&gt;Let's dive in! 🤙&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Google AI Studio? 🤔
&lt;/h2&gt;

&lt;p&gt;Google AI Studio is a web-based platform where you can interact with Google's AI models, prototype ideas, fine-tune behavior, and export working code, all without writing a single line of infrastructure.&lt;/p&gt;

&lt;p&gt;Think of it as a sandbox. You can test prompts, switch between Gemini models, tweak parameters, and when something works, click "Get Code" to get a ready-to-use snippet in Python, JavaScript, or REST. No cloud setup, no billing configuration, no long onboarding. Just go to &lt;a href="https://aistudio.google.com" rel="noopener noreferrer"&gt;aistudio.google.com&lt;/a&gt;, sign in with your Google account, and you're in.&lt;/p&gt;

&lt;p&gt;It sits at the intersection of playground and development tool. Researchers use it to experiment. Developers use it to prototype. Teams use it to validate ideas before committing to a full integration.&lt;/p&gt;




&lt;h2&gt;
  
  
  What You Actually Need It For 💡
&lt;/h2&gt;

&lt;p&gt;There are a few scenarios where Google AI Studio becomes indispensable:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Getting a Gemini API Key:&lt;/strong&gt;&lt;br&gt;
This is often the first reason developers land on AI Studio. It's the official way to get a Gemini API key for free, which you then use in your own applications, in tools like Gemini CLI, Antigravity, or any custom integration. No credit card required for the free tier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testing Prompts Before Hardcoding Them:&lt;/strong&gt;&lt;br&gt;
Prompt engineering is trial and error. AI Studio gives you a fast feedback loop where you can iterate on prompts interactively, see the output, adjust, and repeat, before embedding anything in your codebase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exploring Model Capabilities:&lt;/strong&gt;&lt;br&gt;
Not sure if Gemini can handle your specific use case? Test it directly. Upload images, audio, documents, or code and see how different models respond. The multimodal support is all accessible through the UI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prototyping Features Quickly:&lt;/strong&gt;&lt;br&gt;
Even a small team can use it to create prototypes in days instead of weeks. The combination of interactive prompting and instant code export makes it genuinely fast to go from idea to proof of concept.&lt;/p&gt;


&lt;h2&gt;
  
  
  How It Works 🔧
&lt;/h2&gt;

&lt;p&gt;The interface is organized around a few core concepts:&lt;/p&gt;
&lt;h3&gt;
  
  
  Prompts and Conversations
&lt;/h3&gt;

&lt;p&gt;When you open AI Studio, you can start a new prompt immediately. You choose between three modes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chat Prompts:&lt;/strong&gt;&lt;br&gt;
Multi-turn conversations where you can test how the model handles back-and-forth dialogue. Perfect for chatbots, assistants, or any conversational feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stream Mode:&lt;/strong&gt;&lt;br&gt;
Designed for real-time interactivity, it includes webcam integration, screen sharing, and live guidance. This is the mode for live, low-latency applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Structured Output:&lt;/strong&gt;&lt;br&gt;
Force the model to respond in JSON format with a schema you define. Essential when you need predictable, parseable output to feed into your app.&lt;/p&gt;
&lt;h3&gt;
  
  
  Model Selection
&lt;/h3&gt;

&lt;p&gt;The platform features a multi-model playground allowing you to switch between models seamlessly while working. You can compare responses between Gemini 2.5 Pro, Gemini 2.5 Flash, and other variants side by side. Each model has different trade-offs between speed, cost, and reasoning depth, and AI Studio is the best place to understand those differences before committing to one.&lt;/p&gt;
&lt;h3&gt;
  
  
  System Instructions
&lt;/h3&gt;

&lt;p&gt;This is where it gets interesting for developers. You can set a system prompt that shapes the model's behavior, persona, and constraints for the entire session. This is exactly how you'd configure an AI assistant for your product, and you can refine it here until it behaves exactly how you want.&lt;/p&gt;
&lt;h3&gt;
  
  
  Parameters and Controls
&lt;/h3&gt;

&lt;p&gt;On every prompt, you have direct control over:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Temperature&lt;/strong&gt;: How creative or deterministic the output is&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Max output tokens&lt;/strong&gt;: Limit the response length&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Top-P and Top-K&lt;/strong&gt;: Fine-grained sampling controls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety settings&lt;/strong&gt;: Adjust content filtering thresholds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Changing these and seeing how responses shift in real time is one of the most educational things you can do as someone building with AI.&lt;/p&gt;
&lt;h3&gt;
  
  
  Get Code
&lt;/h3&gt;

&lt;p&gt;Once you have a prompt and configuration that works, you can click "Get Code" to instantly generate a working code snippet in Python, Node.js, or REST that you can use to integrate that functionality into your own application via the Gemini API.&lt;/p&gt;

&lt;p&gt;This is the feature that saves the most time. You iterate in the UI, then export the exact configuration as runnable code. No manual translation needed.&lt;/p&gt;


&lt;h2&gt;
  
  
  Multimodal: More Than Just Text 🌈
&lt;/h2&gt;

&lt;p&gt;One of AI Studio's strongest points is how naturally it handles multiple input types. You can drag and drop into a prompt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Images (for visual analysis, OCR, layout understanding)&lt;/li&gt;
&lt;li&gt;PDFs and documents (for summarization, Q&amp;amp;A, data extraction)&lt;/li&gt;
&lt;li&gt;Audio files (for transcription or analysis)&lt;/li&gt;
&lt;li&gt;Videos (for content understanding with timestamps)&lt;/li&gt;
&lt;li&gt;URLs (for web content analysis directly)&lt;/li&gt;
&lt;li&gt;Code files (for explanation, review, or refactoring)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Generative Media Kit unlocks creative potential with tools for generating images, speech, music, and videos. This makes AI Studio useful well beyond pure text use cases.&lt;/p&gt;


&lt;h2&gt;
  
  
  Free vs. Paid: What's the Difference? 💰
&lt;/h2&gt;

&lt;p&gt;AI Studio has a generous free tier, but there are real differences worth knowing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free Tier:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access to most Gemini models&lt;/li&gt;
&lt;li&gt;Rate-limited API calls (enough for prototyping and personal projects)&lt;/li&gt;
&lt;li&gt;Your prompts and data may be used to improve Google's models&lt;/li&gt;
&lt;li&gt;No charge, just a Google account&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Paid Tier (via Gemini API billing):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Higher rate limits and quotas&lt;/li&gt;
&lt;li&gt;Your data is not used for model training, which is a necessity for most commercial or sensitive applications&lt;/li&gt;
&lt;li&gt;Access to advanced features like caching and batch processing&lt;/li&gt;
&lt;li&gt;Suitable for production applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For individual exploration, side projects, and prototyping, the free tier is more than enough. For anything you're shipping to users with sensitive data, upgrade before going live.&lt;/p&gt;


&lt;h2&gt;
  
  
  AI Studio vs. Vertex AI: Which One? 🤷
&lt;/h2&gt;

&lt;p&gt;A common question for developers already in the Google Cloud ecosystem. The short answer:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google AI Studio&lt;/strong&gt; is for individuals, developers, and fast prototyping. Browser-based, simple setup, no infrastructure knowledge required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vertex AI&lt;/strong&gt; is for teams, enterprises, and production-scale deployments. More powerful, more complex, integrates with the full Google Cloud stack, and requires GCP setup and billing configuration.&lt;/p&gt;

&lt;p&gt;If you're just getting started or working on a side project, AI Studio is the right choice. If you're building a production system that needs autoscaling, monitoring, and enterprise compliance, you'll eventually migrate to Vertex AI, but start in AI Studio first.&lt;/p&gt;


&lt;h2&gt;
  
  
  Practical Use Cases 🛠️
&lt;/h2&gt;

&lt;p&gt;Here's how I actually use Google AI Studio in my workflow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Validating prompt ideas for Gemini CLI Skills:&lt;/strong&gt;&lt;br&gt;
Before writing a SKILL.md, I test the core instructions in AI Studio to see how the model responds. If it doesn't behave as expected there, it won't behave as expected in the terminal either.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Grabbing API keys for new projects:&lt;/strong&gt;&lt;br&gt;
Every time I start a new project that needs Gemini integration, AI Studio is where I go first to create a key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding model differences:&lt;/strong&gt;&lt;br&gt;
When deciding between Gemini 2.5 Pro and Flash for a specific task, I run the same prompt against both in AI Studio and compare speed vs. quality trade-offs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exporting prompt configurations:&lt;/strong&gt;&lt;br&gt;
When a prompt works well in AI Studio, I click "Get Code" and drop the exported snippet directly into my project as a starting point.&lt;/p&gt;


&lt;h2&gt;
  
  
  Final Thoughts 🌟
&lt;/h2&gt;

&lt;p&gt;Google AI Studio is the kind of tool that sounds simple until you realize how much time it saves. It's not trying to replace your IDE or your production infrastructure. It's the place you go to think, experiment, and validate before committing to anything.&lt;/p&gt;

&lt;p&gt;If you're building with Gemini, it's effectively mandatory. And even if you're just AI-curious and want to understand what these models can actually do, spending an hour in AI Studio will teach you more than reading documentation for days.&lt;/p&gt;

&lt;p&gt;Free, browser-based, no setup. There's really no reason not to try it.&lt;/p&gt;

&lt;p&gt;Happy coding! ✨&lt;/p&gt;



&lt;p&gt;Hi 👋🏻&lt;br&gt;
My name is Domenico, software developer passionate of Open Source, I write article about it for share my knowledge and experience.&lt;br&gt;
Don't forget to visit my Linktree to discover my links and to check out Domenico Tenace Open Labs for my open-source projects! 🫰🏻&lt;/p&gt;

&lt;p&gt;🌲 Linktree: &lt;a href="https://linktr.ee/domenicotenace" rel="noopener noreferrer"&gt;https://linktr.ee/domenicotenace&lt;/a&gt;&lt;br&gt;
🐙 Domenico Tenace Open Labs: &lt;a href="https://github.com/Domenico-Tenace-Open-Labs" rel="noopener noreferrer"&gt;https://github.com/Domenico-Tenace-Open-Labs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow me on dev.to for more articles 👇&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__985143"&gt;
    &lt;a href="/dvalin99" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F985143%2Fc4c372a7-0b38-4f9e-b206-7ed65597ea31.png" alt="dvalin99 image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dvalin99"&gt;Domenico Tenace&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dvalin99"&gt;Passionate about the IT world and everything related to it ✌🏻
Open Source enthusiastic 🦠&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;If you like my content or want to support my work, you can support me with a small donation. I would be grateful 🥹&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/domenicotenace" rel="noopener noreferrer"&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%2Fb5vrzbmybu3q0sb5bzs1.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>google</category>
      <category>learngoogleaistudio</category>
    </item>
    <item>
      <title>Gemini CLI Skills: Teaching Your Terminal Agent How to Think 🧠</title>
      <dc:creator>Domenico Tenace</dc:creator>
      <pubDate>Tue, 26 May 2026 06:00:00 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/gemini-cli-skills-teaching-your-terminal-agent-how-to-think-2541</link>
      <guid>https://dev.to/playfulprogramming/gemini-cli-skills-teaching-your-terminal-agent-how-to-think-2541</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Hey everyone 👋&lt;/p&gt;

&lt;p&gt;If you've been using Gemini CLI for a while, you've probably noticed that the agent is great at general tasks but sometimes needs guidance for specific workflows. That's exactly what &lt;strong&gt;Skills&lt;/strong&gt; are for.&lt;/p&gt;

&lt;p&gt;Skills are one of the most underrated features of Gemini CLI, and once you start using them, you'll wonder how you ever managed without. Today I'll walk you through what they are, how to create them, and a real-world example you can steal immediately.&lt;/p&gt;

&lt;p&gt;Let's start! 🤙&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Note Before We Start 📢
&lt;/h2&gt;

&lt;p&gt;Google has announced that Gemini CLI will transition to &lt;strong&gt;Antigravity CLI&lt;/strong&gt; on June 18th for free tier and Google One users. The good news? Skills work the same way in both tools, so everything you learn here applies directly to Antigravity CLI. If you're already in the migration window, just replace "Gemini CLI" with "Antigravity CLI" in your head.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Are Skills? 🤔
&lt;/h2&gt;

&lt;p&gt;Think about the difference between a generalist and a specialist. A generalist knows a bit of everything but lacks deep expertise in any one area. A specialist has deep knowledge in their domain and knows exactly how to approach problems in that field.&lt;/p&gt;

&lt;p&gt;By default, Gemini CLI is a generalist. It knows a lot, but it doesn't know your specific project, your team's conventions, or the exact steps your deployment pipeline requires.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skills turn the generalist into a specialist.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Skill is a self-contained directory that packages specialized instructions and context into a discoverable capability. Unlike &lt;code&gt;GEMINI.md&lt;/code&gt; files that are always loaded into context, Skills are loaded &lt;strong&gt;on demand&lt;/strong&gt;, only when the agent determines they're relevant to your current task.&lt;/p&gt;

&lt;p&gt;This distinction matters a lot. If you put everything into &lt;code&gt;GEMINI.md&lt;/code&gt;, you quickly saturate the model's context window with information that's irrelevant to most tasks. Skills solve this with Progressive Disclosure, the agent sees a brief description of every skill, and only loads the full instructions when the skill is actually needed.&lt;/p&gt;

&lt;p&gt;The result: the right knowledge, at the right time, without cluttering the context.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Anatomy of a Skill 🏗️
&lt;/h2&gt;

&lt;p&gt;A Skill is just a folder with a specific structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.gemini/skills/
└── my-skill/
    ├── SKILL.md          # The main definition file (required)
    ├── examples/         # Reference implementations (optional)
    ├── resources/        # Templates and assets (optional)
    └── scripts/          # Helper scripts (optional)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The only required file is &lt;code&gt;SKILL.md&lt;/code&gt;. Everything else is supporting material that the agent can reference when the skill is activated.&lt;/p&gt;
&lt;h3&gt;
  
  
  The SKILL.md File
&lt;/h3&gt;

&lt;p&gt;This is the heart of every skill. It has two parts: a frontmatter header and a body with instructions.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;your-skill-name&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;What this skill does. Use when you need to...&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Skill Title&lt;/span&gt;

Your instructions here.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The frontmatter is crucial. The &lt;code&gt;description&lt;/code&gt; field is what the agent reads at the start of every session to decide whether to load this skill. Write it clearly and specifically, a vague description will cause the skill to be activated at the wrong times (or never).&lt;/p&gt;

&lt;p&gt;Good description:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Reviews code changes for security vulnerabilities, performance issues, and adherence to project conventions. Use when reviewing PRs or checking code before merging."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Bad description:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Code review stuff."&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Where to Put Your Skills 📁
&lt;/h2&gt;

&lt;p&gt;Gemini CLI discovers skills from two locations, and which one you use depends on scope:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project Skills&lt;/strong&gt; (&lt;code&gt;.gemini/skills/&lt;/code&gt; in your repo):&lt;br&gt;
These are tied to a specific project. Commit them to version control and your whole team gets the same specialized behavior. Perfect for project-specific workflows like deployment steps, framework conventions, or codebase-specific review guidelines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Global Skills&lt;/strong&gt; (&lt;code&gt;~/.gemini/skills/&lt;/code&gt; in your home directory):&lt;br&gt;
These work across all your projects. Perfect for personal workflows, general coding standards, or tools you use everywhere.&lt;/p&gt;

&lt;p&gt;The mental model: if a skill is useful for your team and the project, put it in the repo. If it's personal productivity, put it globally.&lt;/p&gt;


&lt;h2&gt;
  
  
  Creating Your First Skill: Step by Step 🔧
&lt;/h2&gt;

&lt;p&gt;Let's create a practical skill for code review. Here's the full process:&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1: Create the Directory
&lt;/h3&gt;

&lt;p&gt;For a project skill:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; .gemini/skills/code-review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;For a global skill:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.gemini/skills/code-review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 2: Write the SKILL.md
&lt;/h3&gt;

&lt;p&gt;Create &lt;code&gt;.gemini/skills/code-review/SKILL.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;code-review&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Reviews code changes for bugs, security issues, performance problems, and style consistency. Use when reviewing PRs, checking diffs, or auditing code quality before merging.&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Code Review Skill&lt;/span&gt;

You are an expert code reviewer. When reviewing code, follow this checklist systematically.

&lt;span class="gu"&gt;## Review Checklist&lt;/span&gt;

&lt;span class="gu"&gt;### Correctness&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Does the code do what it's supposed to do?
&lt;span class="p"&gt;-&lt;/span&gt; Are there logic errors or off-by-one mistakes?
&lt;span class="p"&gt;-&lt;/span&gt; Are all edge cases handled?

&lt;span class="gu"&gt;### Security&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Are inputs validated and sanitized?
&lt;span class="p"&gt;-&lt;/span&gt; Are there potential injection vulnerabilities?
&lt;span class="p"&gt;-&lt;/span&gt; Is sensitive data handled securely?

&lt;span class="gu"&gt;### Performance&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Are there unnecessary loops or redundant operations?
&lt;span class="p"&gt;-&lt;/span&gt; Are database queries optimized?
&lt;span class="p"&gt;-&lt;/span&gt; Are there memory leaks or heavy resource usage?

&lt;span class="gu"&gt;### Style and Conventions&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Does the code follow the project's naming conventions?
&lt;span class="p"&gt;-&lt;/span&gt; Is the code readable and well-structured?
&lt;span class="p"&gt;-&lt;/span&gt; Are functions small and single-responsibility?

&lt;span class="gu"&gt;## How to Provide Feedback&lt;/span&gt;

For each issue found:
&lt;span class="p"&gt;1.&lt;/span&gt; Specify the exact location (file and line number)
&lt;span class="p"&gt;2.&lt;/span&gt; Explain what the problem is and why it matters
&lt;span class="p"&gt;3.&lt;/span&gt; Suggest a concrete fix with a code example when possible

End the review with a summary: overall assessment (Approve / Request Changes / Needs Discussion) and a brief explanation.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 3: Verify the Skill Is Discovered
&lt;/h3&gt;

&lt;p&gt;Start Gemini CLI in your project directory and run:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You should see your &lt;code&gt;code-review&lt;/code&gt; skill listed. If it's not there, double-check the directory structure and file naming.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 4: Use It
&lt;/h3&gt;

&lt;p&gt;Just work normally. When you ask for a code review:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Review the changes in auth.js before I merge this PR
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Gemini CLI sees the request, matches it against the skill description, loads the full &lt;code&gt;SKILL.md&lt;/code&gt;, and follows your checklist systematically. You don't need to explicitly invoke the skill, it happens automatically.&lt;/p&gt;


&lt;h2&gt;
  
  
  A Practical Example: Conventional Commits Skill 📝
&lt;/h2&gt;

&lt;p&gt;Let me share another skill I use constantly, one that enforces Conventional Commits format across all my projects.&lt;/p&gt;

&lt;p&gt;Create &lt;code&gt;.gemini/skills/conventional-commits/SKILL.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;conventional-commits&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Generates commit messages following the Conventional Commits specification. Use when creating, reviewing, or suggesting git commit messages.&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Conventional Commits Skill&lt;/span&gt;

You are an expert at writing clear, structured commit messages following the Conventional Commits 1.0.0 specification.

&lt;span class="gu"&gt;## Format&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;type&amp;gt;&lt;/span&gt;(&lt;span class="nt"&gt;&amp;lt;scope&amp;gt;&lt;/span&gt;): &lt;span class="nt"&gt;&amp;lt;description&amp;gt;&lt;/span&gt;

[optional body]

[optional footer(s)] 

&lt;span class="gu"&gt;## Types&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; &lt;span class="gs"&gt;**feat**&lt;/span&gt;: A new feature
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**fix**&lt;/span&gt;: A bug fix
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**docs**&lt;/span&gt;: Documentation changes only
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**style**&lt;/span&gt;: Formatting changes (no code logic change)
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**refactor**&lt;/span&gt;: Code change that neither fixes a bug nor adds a feature
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**perf**&lt;/span&gt;: Performance improvement
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**test**&lt;/span&gt;: Adding or updating tests
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**chore**&lt;/span&gt;: Build process or auxiliary tool changes

&lt;span class="gu"&gt;## Rules&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; Use the imperative mood in the description ("add feature" not "added feature")
&lt;span class="p"&gt;2.&lt;/span&gt; Lowercase the entire first line
&lt;span class="p"&gt;3.&lt;/span&gt; No period at the end of the description
&lt;span class="p"&gt;4.&lt;/span&gt; Keep the description under 72 characters
&lt;span class="p"&gt;5.&lt;/span&gt; The body explains "what" and "why", not "how"
&lt;span class="p"&gt;6.&lt;/span&gt; Reference issue numbers in the footer: &lt;span class="sb"&gt;`Closes #123`&lt;/span&gt;

&lt;span class="gu"&gt;## Examples&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; feat(auth): add JWT token refresh logic
&lt;span class="p"&gt;-&lt;/span&gt; fix(api): handle null response from payment provider
&lt;span class="p"&gt;-&lt;/span&gt; docs: update README with pnpm installation steps
&lt;span class="p"&gt;-&lt;/span&gt; refactor(utils): extract string validation to dedicated module 

When suggesting a commit message, always explain your reasoning for the chosen type and scope.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now whenever you ask Gemini CLI to help with a commit:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Write a commit message for the changes I just made to the authentication module
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The agent loads the skill, understands the full convention, and generates a properly formatted message with the right type, scope, and description style.&lt;/p&gt;


&lt;h2&gt;
  
  
  Skills vs. GEMINI.md: When to Use What 🔄
&lt;/h2&gt;

&lt;p&gt;A common question: when should you put something in a Skill vs. in &lt;code&gt;GEMINI.md&lt;/code&gt;?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use GEMINI.md for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Information the agent always needs (project name, tech stack, folder structure)&lt;/li&gt;
&lt;li&gt;General coding standards that apply to every task&lt;/li&gt;
&lt;li&gt;Critical context that should never be missing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use a Skill for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Specialized workflows that only run sometimes (deployments, code review, testing)&lt;/li&gt;
&lt;li&gt;Deep expertise for a specific domain (security auditing, accessibility checking)&lt;/li&gt;
&lt;li&gt;Complex checklists that would waste context when not needed&lt;/li&gt;
&lt;li&gt;Anything you only need occasionally but need deeply when you do&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The rule of thumb: if you'd be annoyed by the agent using this knowledge on unrelated tasks, it's a skill. If you'd be annoyed if the agent ever lacked this knowledge, it belongs in &lt;code&gt;GEMINI.md&lt;/code&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Tips for Writing Good Skills 💡
&lt;/h2&gt;

&lt;p&gt;After creating several skills, here's what actually works:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Write narrow descriptions.&lt;/strong&gt; The description is how the agent decides whether to activate the skill. Narrow is better than broad. "Use when reviewing PRs or checking code quality" is better than "Use for coding tasks."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add explicit "do not use" hints when needed.&lt;/strong&gt; If your skill might be over-activated, add clarity: "Do not use for general coding questions or feature implementation."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keep SKILL.md focused.&lt;/strong&gt; Put detailed examples and templates in the &lt;code&gt;examples/&lt;/code&gt; or &lt;code&gt;resources/&lt;/code&gt; subdirectories. The core &lt;code&gt;SKILL.md&lt;/code&gt; should be scannable and concise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One skill, one responsibility.&lt;/strong&gt; Don't create a "general development" mega-skill. Create separate skills for deployment, testing, code review, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test activation.&lt;/strong&gt; After creating a skill, try prompts that should and shouldn't activate it. If it activates when it shouldn't, tighten the description.&lt;/p&gt;


&lt;h2&gt;
  
  
  Final Thoughts 🌟
&lt;/h2&gt;

&lt;p&gt;Skills are a small investment with a big return. You spend 10-15 minutes writing a &lt;code&gt;SKILL.md&lt;/code&gt; once, and the agent follows your exact workflow consistently from that point on.&lt;/p&gt;

&lt;p&gt;The bigger picture: Skills are how you transform Gemini CLI (or Antigravity CLI) from a generic AI assistant into a tool that understands your team, your conventions, and your processes. The more skills you build, the more the agent feels like a teammate rather than a tool.&lt;/p&gt;

&lt;p&gt;Start small, maybe with a code review skill or a commit message skill, and build from there. You'll quickly start noticing the moments where the agent "just knows" what you need, and that's when it clicks.&lt;/p&gt;

&lt;p&gt;Happy coding! ✨&lt;/p&gt;



&lt;p&gt;Hi 👋🏻&lt;br&gt;
My name is Domenico, software developer passionate of Open Source, I write article about it for share my knowledge and experience.&lt;br&gt;
Don't forget to visit my Linktree to discover my links and to check out Domenico Tenace Open Labs for my open-source projects! 🫰🏻&lt;/p&gt;

&lt;p&gt;🌲 Linktree: &lt;a href="https://linktr.ee/domenicotenace" rel="noopener noreferrer"&gt;https://linktr.ee/domenicotenace&lt;/a&gt;&lt;br&gt;
🐙 Domenico Tenace Open Labs: &lt;a href="https://github.com/Domenico-Tenace-Open-Labs" rel="noopener noreferrer"&gt;https://github.com/Domenico-Tenace-Open-Labs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow me on dev.to for more articles 👇&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__985143"&gt;
    &lt;a href="/dvalin99" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F985143%2Fc4c372a7-0b38-4f9e-b206-7ed65597ea31.png" alt="dvalin99 image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dvalin99"&gt;Domenico Tenace&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dvalin99"&gt;Passionate about the IT world and everything related to it ✌🏻
Open Source enthusiastic 🦠&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;If you like my content or want to support my work, you can support me with a small donation. I would be grateful 🥹&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/domenicotenace" rel="noopener noreferrer"&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%2Fb5vrzbmybu3q0sb5bzs1.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>google</category>
      <category>gemini</category>
      <category>programming</category>
    </item>
    <item>
      <title>Gemini CLI: Google's Free AI Agent for Your Terminal 🚀</title>
      <dc:creator>Domenico Tenace</dc:creator>
      <pubDate>Tue, 12 May 2026 06:00:00 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/gemini-cli-googles-free-ai-agent-for-your-terminal-1blj</link>
      <guid>https://dev.to/playfulprogramming/gemini-cli-googles-free-ai-agent-for-your-terminal-1blj</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Hey everyone 👋&lt;/p&gt;

&lt;p&gt;Google recently dropped something that's been flying under the radar: &lt;strong&gt;Gemini CLI&lt;/strong&gt;, a free, open source AI agent that brings the power of Gemini directly into your terminal. While everyone's been debating Cursor vs Claude Code, Google quietly built a terminal AI that's actually free and surprisingly capable.&lt;/p&gt;

&lt;p&gt;I've been using it for a few weeks, and I wanted to share what it is, how it works, where it shines, and where it falls short compared to the competition.&lt;/p&gt;

&lt;p&gt;Let's dive in! 🤙&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Gemini CLI? 🤔
&lt;/h2&gt;

&lt;p&gt;Gemini CLI is an open source AI agent that runs entirely in your terminal. Think of it as having Gemini 2.5 sitting at your command line, able to read your code, write files, run commands, and help you build software through conversation.&lt;/p&gt;

&lt;p&gt;It's not just a chatbot with access to your terminal, it's an agentic tool that uses a ReAct (Reason and Act) loop to complete complex tasks autonomously. You give it a goal, it makes a plan, executes steps, validates results, and iterates until the task is complete.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Core Philosophy
&lt;/h3&gt;

&lt;p&gt;Google built Gemini CLI with a terminal-first philosophy. It's designed for developers who live in the command line and don't want to context-switch to a GUI. Everything happens in a single terminal pane: the conversation, file edits, command execution, and results.&lt;/p&gt;

&lt;p&gt;This is different from tools like Cursor, which give you a full IDE experience. Gemini CLI embraces minimalism, the terminal is your interface, and that's it.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Actually Works 💻
&lt;/h2&gt;

&lt;p&gt;Installing Gemini CLI is dead simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @google/gemini-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Or use it without installing:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @google/gemini-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Once installed, just type &lt;code&gt;gemini&lt;/code&gt; in your project directory, authenticate with your Google account, and you're in.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Authentication Options
&lt;/h3&gt;

&lt;p&gt;Gemini CLI offers several auth methods:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Personal Google Account&lt;/strong&gt; (Free):&lt;br&gt;
60 requests per minute, 1,000 requests per day. This is the generous free tier that makes Gemini CLI attractive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google AI Studio API Key&lt;/strong&gt;:&lt;br&gt;
Pay-as-you-go with usage-based billing. For heavy users who exceed the free quota.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vertex AI&lt;/strong&gt;:&lt;br&gt;
For enterprise users who need Gemini Code Assist integration and higher limits.&lt;/p&gt;

&lt;p&gt;Most individual developers will be perfectly happy with the free tier. 60 requests per minute is generous for typical development workflows.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Agent Experience
&lt;/h3&gt;

&lt;p&gt;When you start Gemini CLI, you get an interactive prompt. You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask questions about your codebase&lt;/li&gt;
&lt;li&gt;Request file edits or new features&lt;/li&gt;
&lt;li&gt;Run terminal commands through the agent&lt;/li&gt;
&lt;li&gt;Search the web for documentation&lt;/li&gt;
&lt;li&gt;Work with images and documents&lt;/li&gt;
&lt;li&gt;Execute multi-step workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent reads your entire project context (up to 1M tokens with Gemini 2.5 Pro), understands your code structure, and makes changes that respect your existing patterns.&lt;/p&gt;

&lt;p&gt;Example conversation:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You: Add user authentication to this Express app with JWT tokens
Agent: [reads codebase, creates plan]
Agent: I'll create:
  1. auth middleware (auth.js)
  2. login/signup routes (routes/auth.js)
  3. JWT token utilities (utils/jwt.js)
  4. update existing routes to use auth middleware

Proceed? (y/n)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You approve, and the agent executes the plan, creating files, writing code, and updating your project.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Built-in Tools 🛠️
&lt;/h2&gt;

&lt;p&gt;Gemini CLI comes with several built-in tools that the agent uses automatically:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google Search Integration&lt;/strong&gt;:&lt;br&gt;
The agent can search the web and ground its responses in current information, perfect for finding documentation or recent API changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File Operations&lt;/strong&gt;:&lt;br&gt;
Read, write, create, delete files across your project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shell Command Execution&lt;/strong&gt;:&lt;br&gt;
Run terminal commands, install dependencies, run tests, commit changes, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Web Fetching&lt;/strong&gt;:&lt;br&gt;
Retrieve web pages and documentation directly into the conversation context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP Server Support&lt;/strong&gt;:&lt;br&gt;
Integrate custom tools via Model Context Protocol. Want to connect Slack, GitHub, databases, or custom APIs? MCP makes it possible.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Competitors 🥊
&lt;/h2&gt;

&lt;p&gt;Gemini CLI isn't alone in the terminal AI space. Let's see how it stacks up against the main players.&lt;/p&gt;
&lt;h3&gt;
  
  
  Claude Code
&lt;/h3&gt;

&lt;p&gt;Claude Code is a terminal-based AI coding assistant built on Anthropic's Claude models. It enables developers to generate, refactor, and reason about code through conversational prompts directly in the command line.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Similarities&lt;/strong&gt;:&lt;br&gt;
Both are terminal-first agents, both support MCP, both handle multi-step tasks autonomously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Differences&lt;/strong&gt;:&lt;br&gt;
Claude Code uses Claude models exclusively (Opus, Sonnet) while Gemini CLI uses Gemini 2.5 Pro/Flash. Claude Code delivers the full 200K token context reliably, with a 1M token beta on Opus 4.6, while Gemini CLI offers up to 1M tokens with Gemini 2.5 Pro from the start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing&lt;/strong&gt;:&lt;br&gt;
Claude Code is pay-per-token (typically $100-200/month for heavy users). Gemini CLI's free tier is genuinely generous at 60 requests/min.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My take&lt;/strong&gt;: Claude Code is more mature and polished, but Gemini CLI's free tier is hard to beat for individuals.&lt;/p&gt;
&lt;h3&gt;
  
  
  Aider
&lt;/h3&gt;

&lt;p&gt;Aider is a Git-native, terminal-based AI coding assistant built to support collaborative, open source workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Similarities&lt;/strong&gt;:&lt;br&gt;
Both are terminal tools, both are open source, both support multiple LLM providers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Differences&lt;/strong&gt;:&lt;br&gt;
Aider's strength is that it thinks in git. Every edit is a commit. Every session is a branch you can review, revert, or cherry-pick. Gemini CLI is less git-centric, it's more general-purpose.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My take&lt;/strong&gt;: If you care deeply about git-native workflows, Aider wins. If you want Google Search integration and broader capabilities, Gemini CLI is better.&lt;/p&gt;
&lt;h3&gt;
  
  
  Cursor
&lt;/h3&gt;

&lt;p&gt;Cursor isn't really a competitor, it's a different category. Cursor operates as a full-featured IDE with AI capabilities embedded throughout the interface, while Gemini CLI is terminal-only.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Difference&lt;/strong&gt;:&lt;br&gt;
Cursor is IDE-first. You drive, the AI assists with completions, suggestions, and edits you approve inline. Gemini CLI is agent-first, you delegate tasks and review results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My take&lt;/strong&gt;: Many developers use both. Cursor for active coding sessions, Gemini CLI for delegated tasks or automation.&lt;/p&gt;


&lt;h2&gt;
  
  
  Where Gemini CLI Excels ✨
&lt;/h2&gt;

&lt;p&gt;After using Gemini CLI alongside other tools, here's where it genuinely shines:&lt;/p&gt;
&lt;h3&gt;
  
  
  The Free Tier Is Real
&lt;/h3&gt;

&lt;p&gt;60 requests per minute and 1,000 requests per day is &lt;strong&gt;generous&lt;/strong&gt;. Most developers won't hit these limits in normal usage. This makes Gemini CLI the most accessible terminal AI for individuals and students.&lt;/p&gt;

&lt;p&gt;Claude Code costs money from day one. Gemini CLI is actually free for most use cases.&lt;/p&gt;
&lt;h3&gt;
  
  
  Large Context Window
&lt;/h3&gt;

&lt;p&gt;1M tokens with Gemini 2.5 Pro means you can load massive codebases into context. For large refactoring tasks or understanding complex systems, this is powerful.&lt;/p&gt;

&lt;p&gt;I've successfully used it to analyze entire monorepos that would have required chunking with smaller context windows.&lt;/p&gt;
&lt;h3&gt;
  
  
  Google Search Integration
&lt;/h3&gt;

&lt;p&gt;The built-in Google Search tool is surprisingly useful. When the agent encounters something it doesn't know (a new API, a recent framework update, etc.), it can search the web and incorporate current information.&lt;/p&gt;

&lt;p&gt;This beats having to manually look things up and paste documentation into the conversation.&lt;/p&gt;
&lt;h3&gt;
  
  
  MCP Server Support
&lt;/h3&gt;

&lt;p&gt;Configure MCP servers in ~/.gemini/settings.json to extend Gemini CLI with custom tools. Want to integrate GitHub, Slack, databases, or custom APIs? MCP makes it straightforward.&lt;/p&gt;

&lt;p&gt;This extensibility means Gemini CLI can grow with your needs.&lt;/p&gt;
&lt;h3&gt;
  
  
  Multimodal Capabilities
&lt;/h3&gt;

&lt;p&gt;Gemini's vision capabilities are available in the CLI. You can include images in your prompts, perfect for "implement this UI mockup" or "what's wrong with this screenshot" tasks.&lt;/p&gt;

&lt;p&gt;Not many terminal AIs support this out of the box.&lt;/p&gt;
&lt;h3&gt;
  
  
  Low Barrier to Entry
&lt;/h3&gt;

&lt;p&gt;Install with npm, authenticate with Google, done. No API keys to manage (unless you want to), no credit card required, no complex setup.&lt;/p&gt;

&lt;p&gt;This makes it perfect for trying out terminal AI without commitment.&lt;/p&gt;


&lt;h2&gt;
  
  
  Where Gemini CLI Falls Short 😬
&lt;/h2&gt;

&lt;p&gt;Nothing's perfect, and Gemini CLI has real weaknesses:&lt;/p&gt;
&lt;h3&gt;
  
  
  The UX Needs Polish
&lt;/h3&gt;

&lt;p&gt;Compared to Claude Code's refined interface, Gemini CLI feels rougher around the edges. Error messages aren't always clear, the terminal UI can get cluttered, and occasionally the agent loses track of context mid-task.&lt;/p&gt;

&lt;p&gt;It's usable, but it's not as smooth as more mature tools.&lt;/p&gt;
&lt;h3&gt;
  
  
  Model Quality Varies
&lt;/h3&gt;

&lt;p&gt;Gemini 2.5 Pro is powerful, but it's not Claude Opus. Claude Code for reasoning depth (80.9% SWE-bench). Gemini scores lower on code-specific benchmarks.&lt;/p&gt;

&lt;p&gt;For complex reasoning or nuanced refactoring, Claude Code often produces better results.&lt;/p&gt;
&lt;h3&gt;
  
  
  Limited Community Resources
&lt;/h3&gt;

&lt;p&gt;Claude Code and Aider have large, active communities. Gemini CLI is newer, so there are fewer tutorials, examples, and community-built extensions.&lt;/p&gt;

&lt;p&gt;When you hit an issue, you're more likely to be on your own.&lt;/p&gt;
&lt;h3&gt;
  
  
  Terminal-Only Limitation
&lt;/h3&gt;

&lt;p&gt;Some developers prefer having a visual IDE experience with file trees, side-by-side diffs, and graphical interfaces. Gemini CLI offers none of that, it's terminal or nothing.&lt;/p&gt;

&lt;p&gt;If you're not comfortable working purely in the command line, this is a dealbreaker.&lt;/p&gt;
&lt;h3&gt;
  
  
  Quota Limits for Free Tier
&lt;/h3&gt;

&lt;p&gt;While 60 req/min is generous, heavy users will hit the 1,000 req/day limit. If you're doing intensive work, you'll need to either slow down or pay for API access.&lt;/p&gt;

&lt;p&gt;Claude Code's pay-per-token model might actually be cheaper for very heavy usage.&lt;/p&gt;


&lt;h2&gt;
  
  
  Real-World Use Cases 💼
&lt;/h2&gt;

&lt;p&gt;Here's what I've actually used Gemini CLI for:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Refactoring Legacy Code&lt;/strong&gt;:&lt;br&gt;
I pointed it at an old project with inconsistent patterns and asked it to modernize the code. The 1M token context meant it could understand the entire codebase and make consistent changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation Generation&lt;/strong&gt;:&lt;br&gt;
"Read this codebase and create comprehensive README documentation." It analyzed the code, understood the architecture, and wrote decent docs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Debugging&lt;/strong&gt;:&lt;br&gt;
When I hit errors I couldn't figure out, I'd paste them into Gemini CLI. The Google Search integration meant it could find relevant Stack Overflow answers or GitHub issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prototyping&lt;/strong&gt;:&lt;br&gt;
"Create a simple Express API with user authentication and a todo list." Quick prototypes are where Gemini CLI excels, fast iteration without worrying about costs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learning New Tech&lt;/strong&gt;:&lt;br&gt;
"Explain how this React codebase implements authentication." The agent would analyze the code and explain patterns, great for onboarding to unfamiliar codebases.&lt;/p&gt;


&lt;h2&gt;
  
  
  Who Should Use Gemini CLI? 🎯
&lt;/h2&gt;

&lt;p&gt;Gemini CLI isn't for everyone. Here's who will benefit most:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Students and Learners&lt;/strong&gt;:&lt;br&gt;
The free tier makes it perfect for learning. No financial barrier to experimenting with AI-assisted development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Individual Developers&lt;/strong&gt;:&lt;br&gt;
If you don't need enterprise features and want a free terminal AI, Gemini CLI is excellent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open Source Maintainers&lt;/strong&gt;:&lt;br&gt;
For working on community projects where you don't want to pay out of pocket, the free tier is generous enough for regular use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developers Trying Terminal AI&lt;/strong&gt;:&lt;br&gt;
If you're curious about terminal-based AI agents but don't want to commit to paid tools, start here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Budget-Conscious Teams&lt;/strong&gt;:&lt;br&gt;
Small teams or startups that can't afford $20-40/month per developer for Claude Code or Cursor.&lt;/p&gt;


&lt;h2&gt;
  
  
  Who Should Look Elsewhere? 🤷
&lt;/h2&gt;

&lt;p&gt;Gemini CLI isn't ideal if:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You Need the Best Code Quality&lt;/strong&gt;:&lt;br&gt;
Claude Opus produces higher-quality code for complex tasks. If quality matters more than cost, pay for Claude Code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You Prefer Visual IDEs&lt;/strong&gt;:&lt;br&gt;
If terminal-only feels limiting, use Cursor, Windsurf, or another IDE-based tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You're a Power User&lt;/strong&gt;:&lt;br&gt;
If you'll exceed 1,000 requests/day regularly, the free tier won't cut it, and paying for Gemini API might cost more than a Claude Code subscription.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You Need Enterprise Features&lt;/strong&gt;:&lt;br&gt;
For teams requiring compliance, audit logs, and enterprise support, look at Gemini Code Assist or Claude Code Enterprise.&lt;/p&gt;


&lt;h2&gt;
  
  
  My Honest Take 💭
&lt;/h2&gt;

&lt;p&gt;Gemini CLI is a solid terminal AI that punches above its weight thanks to the generous free tier. It's not the most polished, and it's not the highest quality, but it's &lt;strong&gt;free&lt;/strong&gt; and &lt;strong&gt;good enough&lt;/strong&gt; for most tasks.&lt;/p&gt;

&lt;p&gt;If you're an individual developer who lives in the terminal and wants to try AI-assisted development without paying, Gemini CLI is the obvious choice. The 60 req/min and 1,000 req/day limits are genuinely usable.&lt;/p&gt;

&lt;p&gt;That said, if you're doing professional work where code quality matters and you can afford $20-40/month, Claude Code is still better. The reasoning quality, the polish, and the maturity are worth paying for.&lt;/p&gt;

&lt;p&gt;But for learning, side projects, open source work, and experimentation? Gemini CLI is fantastic. Google's strategy of making it free is smart, it gets developers hooked on terminal AI without financial friction.&lt;/p&gt;


&lt;h2&gt;
  
  
  Try It Yourself 🚀
&lt;/h2&gt;

&lt;p&gt;If you're curious, just run:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @google/gemini-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;No commitment, no credit card, no setup beyond Node.js. Try a few tasks and see how it feels.&lt;/p&gt;

&lt;p&gt;The worst that happens is you waste 10 minutes. The best that happens is you discover a free tool that transforms how you work.&lt;/p&gt;

&lt;p&gt;Happy coding! ✨&lt;/p&gt;



&lt;p&gt;Hi 👋🏻&lt;br&gt;
My name is Domenico, software developer passionate of Open Source, I write article about it for share my knowledge and experience.&lt;br&gt;
Don't forget to visit my Linktree to discover my links and to check out Domenico Tenace Open Labs for my open-source projects! 🫰🏻&lt;/p&gt;

&lt;p&gt;🌲 Linktree: &lt;a href="https://linktr.ee/domenicotenace" rel="noopener noreferrer"&gt;https://linktr.ee/domenicotenace&lt;/a&gt;&lt;br&gt;
🐙 Domenico Tenace Open Labs: &lt;a href="https://github.com/Domenico-Tenace-Open-Labs" rel="noopener noreferrer"&gt;https://github.com/Domenico-Tenace-Open-Labs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow me on dev.to for more articles 👇&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__985143"&gt;
    &lt;a href="/dvalin99" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F985143%2Fc4c372a7-0b38-4f9e-b206-7ed65597ea31.png" alt="dvalin99 image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dvalin99"&gt;Domenico Tenace&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dvalin99"&gt;Passionate about the IT world and everything related to it ✌🏻
Open Source enthusiastic 🦠&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;If you like my content or want to support my work, you can support me with a small donation. I would be grateful 🥹&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/domenicotenace" rel="noopener noreferrer"&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%2Fb5vrzbmybu3q0sb5bzs1.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>gemini</category>
      <category>programming</category>
    </item>
    <item>
      <title>Why I Built CVE Lite CLI: Moving From "Security Debt" to Real-Time Scanning</title>
      <dc:creator>Sonu Kapoor</dc:creator>
      <pubDate>Wed, 29 Apr 2026 02:35:47 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/why-i-built-cve-lite-cli-moving-from-security-debt-to-real-time-scanning-f73</link>
      <guid>https://dev.to/playfulprogramming/why-i-built-cve-lite-cli-moving-from-security-debt-to-real-time-scanning-f73</guid>
      <description>&lt;h2&gt;
  
  
  From Security Noise to Developer Flow: Introducing CVE Lite CLI v1.10.0
&lt;/h2&gt;

&lt;p&gt;We have all lived through it. It is Friday afternoon, you have just finished a complex feature, and your code is ready for the finish line. You push your final commit to the CI/CD pipeline, feeling confident, only to receive a notification ten minutes later: &lt;strong&gt;Build Failed&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When you open the logs, you are handed a massive report with 40 "Critical" vulnerabilities. Suddenly, your weekend is gone while you dig through deep dependency trees, trying to figure out if a vulnerability in a dev-dependency you do not even use is actually a threat. This is the &lt;strong&gt;"Security Debt" cycle&lt;/strong&gt;: a situation where security scanning is loud, late, and incredibly frustrating.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem: When "Standard" Audits Fail You
&lt;/h3&gt;

&lt;p&gt;The issue is not usually the vulnerabilities themselves—it is the timing and the noise. Most traditional scanners treat every vulnerability with the same weight, regardless of whether that code is actually reachable or if a fix is even available.&lt;/p&gt;

&lt;p&gt;Worse, standard tools like &lt;code&gt;npm audit&lt;/code&gt; can create a false sense of security while hiding critical traps. A perfect example is the recent community discussion regarding &lt;strong&gt;lint-staged&lt;/strong&gt; (Issue #1763), where high-severity vulnerabilities can remain "hidden" deep in the dependency tree, escaping standard surface-level scans. This forces teams to choose between shipping features and playing security detective. When security feels like a list of chores rather than a part of the craft, it becomes something developers try to bypass rather than embrace.&lt;/p&gt;

&lt;h3&gt;
  
  
  How We Compare: Workflow vs. Visibility
&lt;/h3&gt;

&lt;p&gt;As I recently explored in &lt;strong&gt;InfoWorld&lt;/strong&gt;, the gap in modern security is not detection—it is the lack of a workflow that developers actually use. While most enterprise tools are built for "organizational visibility," &lt;strong&gt;CVE Lite CLI&lt;/strong&gt; is built for &lt;strong&gt;developer decision-making&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;&lt;code&gt;npm audit&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;Snyk (Free Tier)&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;CVE Lite CLI&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Noise Filtering&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;None (Flags all)&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;High (Heuristic Logic)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Primary Speed&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fast&lt;/td&gt;
&lt;td&gt;Network Dependent&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Ultra-fast (Local Engine)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Actionable Insight&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low (Alert only)&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;High (Direct vs Transitive)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Workflow Fit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Blocking Gate&lt;/td&gt;
&lt;td&gt;Post-Push Audit&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Pre-Commit / Real-Time&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;For a deep dive into how we stack up against other security scanners, check out our &lt;a href="https://github.com/OWASP/cve-lite-cli/blob/main/docs/comparison.md" rel="noopener noreferrer"&gt;Full Comparison Documentation on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  The Solution: Shifting Logic to the Local Terminal
&lt;/h3&gt;

&lt;p&gt;I developed &lt;strong&gt;CVE Lite CLI&lt;/strong&gt; to change this dynamic. The core philosophy is to make security scanning as fast, local, and quiet as a unit test. Instead of waiting for a central server to tell you what is wrong, CVE Lite brings that intelligence directly to your terminal.&lt;/p&gt;

&lt;p&gt;With the release of &lt;a href="https://github.com/OWASP/cve-lite-cli/releases/tag/v1.10.0" rel="noopener noreferrer"&gt;&lt;strong&gt;v1.10.0&lt;/strong&gt;&lt;/a&gt;, we are introducing the &lt;strong&gt;Verified Remediation Engine&lt;/strong&gt;. Key features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Heuristic Logic:&lt;/strong&gt; A refined engine designed to prioritize what is actually actionable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Noise Reduction:&lt;/strong&gt; By focusing on separating "Direct" vulnerabilities (those you can fix with a single command) from "Transitive" noise, it allows you to clean up your dependency tree in real-time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer-First UX:&lt;/strong&gt; It is designed to be a "quiet" tool that only speaks up when there is a legitimate concern, fitting right into your standard git commit or build loop.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Proving the Logic: OWASP Juice Shop Remediation
&lt;/h3&gt;

&lt;p&gt;To prove the efficacy of this approach, we ran CVE Lite CLI against the &lt;a href="https://github.com/OWASP/cve-lite-cli/blob/main/docs/case-studies/owasp-juice-shop.md" rel="noopener noreferrer"&gt;&lt;strong&gt;OWASP Juice Shop&lt;/strong&gt;&lt;/a&gt; —the industry standard for insecure web applications. Rather than just generating a static list of flaws, we used the tool to drive a targeted remediation workflow.&lt;/p&gt;

&lt;p&gt;The results demonstrate how a multi-pass approach can systematically dismantle security debt without overwhelming the developer:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Remediation Stage&lt;/th&gt;
&lt;th&gt;Total Findings&lt;/th&gt;
&lt;th&gt;Critical&lt;/th&gt;
&lt;th&gt;High&lt;/th&gt;
&lt;th&gt;Medium&lt;/th&gt;
&lt;th&gt;Direct&lt;/th&gt;
&lt;th&gt;Transitive&lt;/th&gt;
&lt;th&gt;Unique Advisories&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Baseline Scan&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;71&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;After 1st Pass&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;41&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;After 2nd Pass&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;As the data shows, the first pass alone cleared the majority of "Directly" actionable issues and zeroed out the "High" severity vulnerabilities. This visibility allows a developer to see exactly where their effort will have the highest impact, turning a daunting report into a manageable task.&lt;/p&gt;

&lt;h3&gt;
  
  
  A New Chapter with OWASP
&lt;/h3&gt;

&lt;p&gt;This philosophy recently reached a major milestone: &lt;strong&gt;CVE Lite CLI has been officially adopted by the OWASP Foundation&lt;/strong&gt; as part of their Incubator. &lt;/p&gt;

&lt;p&gt;Joining the OWASP ecosystem means we are now working with global security experts to refine these heuristics and build a roadmap that helps every developer build more secure software without sacrificing velocity. Security should not be a "Friday afternoon surprise". It should be a natural, quiet part of how we write code every day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Next?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you want to move away from noisy scanners and into a workflow that focuses on what is actually fixable, I’d love for you to join us. Check out our progress on the &lt;a href="https://github.com/OWASP/cve-lite-cli" rel="noopener noreferrer"&gt;OWASP CVE Lite Project Page&lt;/a&gt; or use npm to install &lt;code&gt;npm i cve-lite-cli&lt;/code&gt; the latest version to run a scan on your own project.&lt;/p&gt;

&lt;p&gt;Let's make "shifting left" more than just a buzzword.&lt;/p&gt;

</description>
      <category>appsec</category>
      <category>security</category>
      <category>cli</category>
    </item>
  </channel>
</rss>
