<?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: Domenico Tenace</title>
    <description>The latest articles on DEV Community by Domenico Tenace (@dvalin99).</description>
    <link>https://dev.to/dvalin99</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F985143%2Fc4c372a7-0b38-4f9e-b206-7ed65597ea31.png</url>
      <title>DEV Community: Domenico Tenace</title>
      <link>https://dev.to/dvalin99</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dvalin99"/>
    <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>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>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>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 Switched to pnpm and Never Looked Back 🚀</title>
      <dc:creator>Domenico Tenace</dc:creator>
      <pubDate>Thu, 19 Mar 2026 09:03:03 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/why-i-switched-to-pnpm-and-never-looked-back-56b3</link>
      <guid>https://dev.to/playfulprogramming/why-i-switched-to-pnpm-and-never-looked-back-56b3</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

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

&lt;p&gt;For years, I used npm without questioning it. It's the default, it comes with Node.js, everyone uses it, why change? But after switching to pnpm a few months ago, I genuinely can't imagine going back.&lt;/p&gt;

&lt;p&gt;This isn't about being trendy or jumping on the latest bandwagon. pnpm solves real problems I didn't even realize I had with npm. Let me explain why making the switch was one of the best development decisions I've made this year.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  What's the Actual Difference? 🤔
&lt;/h2&gt;

&lt;p&gt;Before we get into why pnpm is better, let's understand what makes it fundamentally different from npm.&lt;/p&gt;

&lt;h3&gt;
  
  
  npm's Approach: Flat and Duplicated
&lt;/h3&gt;

&lt;p&gt;When you run &lt;code&gt;npm install&lt;/code&gt;, npm creates a flat &lt;code&gt;node_modules&lt;/code&gt; structure. This means all your dependencies and their dependencies end up in the same folder, flattened out. While this solved some earlier problems with nested dependencies, it created new ones:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phantom Dependencies:&lt;/strong&gt;&lt;br&gt;
You can import packages that aren't listed in your &lt;code&gt;package.json&lt;/code&gt; because they happen to be installed as someone else's dependency. This works until that dependency changes, and suddenly your code breaks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disk Space Waste:&lt;/strong&gt;&lt;br&gt;
If you have 10 projects on your machine and they all use Express, npm downloads and stores Express 10 times. Same for React, Lodash, or any other common package.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Slow Installations:&lt;/strong&gt;&lt;br&gt;
Every project needs its own copy of everything, which means longer install times and more network usage.&lt;/p&gt;
&lt;h3&gt;
  
  
  pnpm's Approach: Smart and Efficient
&lt;/h3&gt;

&lt;p&gt;pnpm takes a completely different approach using something called a &lt;strong&gt;content-addressable storage&lt;/strong&gt; system. Here's how it works:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Single Global Store:&lt;/strong&gt;&lt;br&gt;
pnpm keeps one copy of each package version in a global store (usually &lt;code&gt;~/.pnpm-store&lt;/code&gt;). When you install a package, pnpm creates hard links from this store to your project's &lt;code&gt;node_modules&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strict Dependency Tree:&lt;/strong&gt;&lt;br&gt;
Instead of flattening everything, pnpm maintains a proper nested structure using symlinks. You can only import packages that are explicitly listed in your &lt;code&gt;package.json&lt;/code&gt; or their dependencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shared Across Projects:&lt;/strong&gt;&lt;br&gt;
If 10 projects use Express version 4.18.0, pnpm stores it once and creates 10 hard links. No duplication, massive disk space savings.&lt;/p&gt;

&lt;p&gt;This isn't just a minor optimization, it's a fundamentally better architecture.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why pnpm Wins: The Real Benefits 🏆
&lt;/h2&gt;

&lt;p&gt;Let me share the concrete improvements I've experienced since switching.&lt;/p&gt;
&lt;h3&gt;
  
  
  Speed That Actually Matters
&lt;/h3&gt;

&lt;p&gt;pnpm is noticeably faster than npm. We're not talking marginal gains, we're talking "wait, it's already done?" levels of speed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cold Installs:&lt;/strong&gt;&lt;br&gt;
When installing a package for the first time, pnpm downloads it once to the global store. Every subsequent project that uses it just creates a hard link, which is nearly instantaneous.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warm Installs:&lt;/strong&gt;&lt;br&gt;
If you've already got the packages in your global store (which you probably do if you work on multiple projects), installations are blazingly fast. What took npm 2-3 minutes might take pnpm 10-20 seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In Practice:&lt;/strong&gt;&lt;br&gt;
Running &lt;code&gt;pnpm install&lt;/code&gt; on a fresh clone of a project feels almost magical. The speed difference is real and noticeable every single day.&lt;/p&gt;
&lt;h3&gt;
  
  
  Disk Space Savings Are Huge
&lt;/h3&gt;

&lt;p&gt;This one surprised me the most. After switching my entire workspace to pnpm, I freed up over 15GB of disk space. That's not a typo, &lt;strong&gt;15 gigabytes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here's why: with npm, if you have 20 projects and 15 of them use React, you have 15 copies of React sitting on your disk. With pnpm, you have one copy with 15 hard links pointing to it.&lt;/p&gt;

&lt;p&gt;For common dependencies like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React and React DOM&lt;/li&gt;
&lt;li&gt;Lodash&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;ESLint and Prettier&lt;/li&gt;
&lt;li&gt;Testing libraries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The savings add up fast. And this isn't just about disk space, it's about principle. Why should my machine store the same exact files hundreds of times?&lt;/p&gt;
&lt;h3&gt;
  
  
  Strict Dependencies Prevent Bugs
&lt;/h3&gt;

&lt;p&gt;This is the feature I didn't know I needed until I had it.&lt;/p&gt;

&lt;p&gt;With npm, you can accidentally import packages that aren't in your &lt;code&gt;package.json&lt;/code&gt; because they're installed as transitive dependencies. This creates hidden coupling that breaks when those dependencies update.&lt;/p&gt;

&lt;p&gt;pnpm's strict mode prevents this entirely. If it's not in your &lt;code&gt;package.json&lt;/code&gt;, you can't import it. Period.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real Example:&lt;/strong&gt;&lt;br&gt;
I had a project using a utility function from Lodash, but Lodash wasn't in my &lt;code&gt;package.json&lt;/code&gt;. It worked because another package happened to depend on Lodash. When that package updated and removed Lodash, my build broke.&lt;/p&gt;

&lt;p&gt;With pnpm, this would have failed immediately, forcing me to add Lodash explicitly. The error is caught early instead of in production.&lt;/p&gt;
&lt;h3&gt;
  
  
  Monorepo Support Is First-Class
&lt;/h3&gt;

&lt;p&gt;If you work with monorepos (and increasingly, who doesn't?), pnpm's workspace support is excellent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Built-in Workspaces:&lt;/strong&gt;&lt;br&gt;
Define your workspace structure in &lt;code&gt;pnpm-workspace.yaml&lt;/code&gt;, and pnpm handles linking between packages automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Efficient Sharing:&lt;/strong&gt;&lt;br&gt;
Shared dependencies across workspace packages are stored once and linked everywhere they're needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Better Than Alternatives:&lt;/strong&gt;&lt;br&gt;
I've used npm workspaces and Yarn workspaces. pnpm's implementation feels cleaner and more efficient in practice.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Lock File Is Better
&lt;/h3&gt;

&lt;p&gt;pnpm's &lt;code&gt;pnpm-lock.yaml&lt;/code&gt; is more deterministic than npm's &lt;code&gt;package-lock.json&lt;/code&gt;. It stores more information about dependency relationships and produces more consistent results across different environments.&lt;/p&gt;

&lt;p&gt;I've had fewer "works on my machine" issues since switching to pnpm. The lock file format just seems more robust.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Migration: Easier Than You Think 🔄
&lt;/h2&gt;

&lt;p&gt;I was worried about migrating, but it turned out to be trivial.&lt;/p&gt;
&lt;h3&gt;
  
  
  How to Switch
&lt;/h3&gt;

&lt;p&gt;For an existing project:&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="c"&gt;# Install pnpm globally&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; pnpm

&lt;span class="c"&gt;# Navigate to your project&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;my-project

&lt;span class="c"&gt;# Import your package-lock.json&lt;/span&gt;
pnpm import

&lt;span class="c"&gt;# Install dependencies&lt;/span&gt;
pnpm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That's it. pnpm even converts your &lt;code&gt;package-lock.json&lt;/code&gt; to &lt;code&gt;pnpm-lock.yaml&lt;/code&gt; automatically.&lt;/p&gt;
&lt;h3&gt;
  
  
  Commands Are Nearly Identical
&lt;/h3&gt;

&lt;p&gt;If you know npm, you already know pnpm:&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="c"&gt;# npm commands&lt;/span&gt;
npm &lt;span class="nb"&gt;install &lt;/span&gt;package-name
npm uninstall package-name
npm run build
npm &lt;span class="nb"&gt;test&lt;/span&gt;

&lt;span class="c"&gt;# pnpm equivalents&lt;/span&gt;
pnpm add package-name
pnpm remove package-name
pnpm run build
pnpm &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The only real difference is &lt;code&gt;add&lt;/code&gt; instead of &lt;code&gt;install&lt;/code&gt; and &lt;code&gt;remove&lt;/code&gt; instead of &lt;code&gt;uninstall&lt;/code&gt;. Everything else is identical.&lt;/p&gt;
&lt;h3&gt;
  
  
  Create Aliases If Needed
&lt;/h3&gt;

&lt;p&gt;If you want even less friction:&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;alias &lt;/span&gt;&lt;span class="nv"&gt;npm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;pnpm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Though honestly, once you start using pnpm, you'll appreciate the distinct commands.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Gotchas (Yes, There Are Some) 😬
&lt;/h2&gt;

&lt;p&gt;Let's be honest, pnpm isn't perfect. Here are the issues I've encountered:&lt;/p&gt;
&lt;h3&gt;
  
  
  Some Packages Don't Play Nice
&lt;/h3&gt;

&lt;p&gt;Occasionally, you'll find a package that assumes npm's flat structure and breaks with pnpm's strict linking. This is rare, but it happens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix:&lt;/strong&gt;&lt;br&gt;
pnpm has a &lt;code&gt;.pnpmfile.cjs&lt;/code&gt; where you can configure workarounds. Or you can use the &lt;code&gt;shamefully-hoist&lt;/code&gt; flag to flatten dependencies like npm does (though this defeats some of pnpm's benefits).&lt;/p&gt;

&lt;p&gt;In practice, I've only hit this issue twice in several months, and both times the package maintainers fixed it quickly.&lt;/p&gt;
&lt;h3&gt;
  
  
  Smaller Community
&lt;/h3&gt;

&lt;p&gt;While pnpm's adoption is growing rapidly (Vue, Vite, Astro, and other major projects use it), it's still smaller than npm's massive ecosystem.&lt;/p&gt;

&lt;p&gt;This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fewer Stack Overflow answers&lt;/li&gt;
&lt;li&gt;Less extensive documentation for edge cases&lt;/li&gt;
&lt;li&gt;Occasional confusion when following tutorials that assume npm&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That said, the community is active and helpful, and most npm knowledge transfers directly.&lt;/p&gt;
&lt;h3&gt;
  
  
  Initial Learning Curve
&lt;/h3&gt;

&lt;p&gt;Understanding hard links, symlinks, and the global store takes a minute. The first time you look at &lt;code&gt;node_modules&lt;/code&gt; in a pnpm project, it looks weird.&lt;/p&gt;

&lt;p&gt;But once you understand the model, it makes perfect sense and you appreciate the elegance.&lt;/p&gt;


&lt;h2&gt;
  
  
  When npm Still Makes Sense 🎯
&lt;/h2&gt;

&lt;p&gt;To be fair, there are scenarios where sticking with npm is reasonable:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You're Brand New to JavaScript:&lt;/strong&gt;&lt;br&gt;
If you're just learning, start with npm. It's the default, and you'll find more beginner-friendly resources. Switch to pnpm once you're comfortable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Company Policy:&lt;/strong&gt;&lt;br&gt;
Some organizations have standardized on npm, and switching requires buy-in. Don't fight that battle unless the benefits are worth it for your specific situation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compatibility Concerns:&lt;/strong&gt;&lt;br&gt;
If you're working on legacy projects with lots of old dependencies that have quirks, npm's more permissive structure might save headaches.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You Don't Care About Disk Space or Speed:&lt;/strong&gt;&lt;br&gt;
If you have unlimited disk space and don't mind waiting for installations, npm works fine. Some people genuinely don't care about these optimizations.&lt;/p&gt;

&lt;p&gt;But for most modern development, pnpm is simply better.&lt;/p&gt;


&lt;h2&gt;
  
  
  Real-World Impact 💪
&lt;/h2&gt;

&lt;p&gt;Let me share some concrete numbers from my own experience:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before pnpm (npm):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;npm install&lt;/code&gt; on a typical Next.js project: ~90 seconds&lt;/li&gt;
&lt;li&gt;Disk space for 20 active projects: ~42GB in node_modules&lt;/li&gt;
&lt;li&gt;Frequent phantom dependency issues&lt;/li&gt;
&lt;li&gt;Occasional lock file conflicts between team members&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;After pnpm:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;pnpm install&lt;/code&gt; on the same projects: ~15-20 seconds&lt;/li&gt;
&lt;li&gt;Disk space for the same 20 projects: ~27GB total&lt;/li&gt;
&lt;li&gt;Zero phantom dependency issues&lt;/li&gt;
&lt;li&gt;More consistent installations across the team&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The time savings alone add up. If you run &lt;code&gt;install&lt;/code&gt; 20 times a day (between switching branches, pulling updates, etc.), pnpm saves you about 20-25 minutes daily. That's over 2 hours per week.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Broader Ecosystem Is Adopting It 🌍
&lt;/h2&gt;

&lt;p&gt;pnpm isn't just a niche tool anymore. Major projects have switched:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Projects Using pnpm:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vue 3 and the entire Vue ecosystem&lt;/li&gt;
&lt;li&gt;Vite (one of the fastest build tools)&lt;/li&gt;
&lt;li&gt;Astro (my personal site's framework)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When tools and frameworks this significant adopt pnpm, it's a strong signal that it's production-ready and worth considering.&lt;/p&gt;


&lt;h2&gt;
  
  
  My Recommendation 💡
&lt;/h2&gt;

&lt;p&gt;If you're still using npm and any of these apply to you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You work on multiple projects&lt;/li&gt;
&lt;li&gt;You care about build speed&lt;/li&gt;
&lt;li&gt;Disk space is a concern&lt;/li&gt;
&lt;li&gt;You work with monorepos&lt;/li&gt;
&lt;li&gt;You want stricter dependency management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Switch to pnpm.&lt;/strong&gt; The migration takes 5 minutes, and the benefits are immediate and ongoing.&lt;/p&gt;

&lt;p&gt;Will you encounter the occasional quirk? Probably. Is it worth it? Absolutely.&lt;/p&gt;

&lt;p&gt;The JavaScript ecosystem moves fast, and package managers are evolving. npm was great for its time, but pnpm represents a better approach to dependency management. It's faster, more efficient, and more correct.&lt;/p&gt;


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

&lt;p&gt;Here's my challenge: pick one project and try pnpm for a week. Just one week.&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; pnpm
&lt;span class="nb"&gt;cd &lt;/span&gt;your-project
pnpm import
pnpm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Use it like you'd use npm. Notice the speed. Check your disk space savings. Experience the strict dependency resolution.&lt;/p&gt;

&lt;p&gt;After a week, if you genuinely prefer npm, switch back. But I'd bet that like me, you won't want to.&lt;/p&gt;

&lt;p&gt;Sometimes the best tools are the ones that just work better in ways you didn't realize you needed. For me, pnpm is one of those tools.&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>softwaredevelopment</category>
      <category>npm</category>
      <category>programming</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Rebuilding domenicotenace.dev: How Pure Astro and CSS Reminded Me That Simple Is Better 🌟</title>
      <dc:creator>Domenico Tenace</dc:creator>
      <pubDate>Thu, 12 Mar 2026 16:52:57 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/rebuilding-domenicotenacedev-how-pure-astro-and-css-reminded-me-that-simple-is-better-2gpe</link>
      <guid>https://dev.to/playfulprogramming/rebuilding-domenicotenacedev-how-pure-astro-and-css-reminded-me-that-simple-is-better-2gpe</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

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

&lt;p&gt;I recently did something that felt almost rebellious in today's web development landscape: I completely refactored my personal website using &lt;strong&gt;only Astro and vanilla CSS&lt;/strong&gt;. No React, no Vue, no Tailwind, no animation libraries, no component frameworks. Just HTML, CSS, and a bit of JavaScript where absolutely necessary.&lt;/p&gt;

&lt;p&gt;And you know what? It was the most refreshing development experience I've had in years.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  The Decision: Back to Basics ✨
&lt;/h2&gt;

&lt;p&gt;The turning point came when I was helping a friend debug their website. They'd built it with pure HTML and CSS, no build step, no dependencies. When they made a change, they just refreshed the browser. No waiting for compilation, no hot module replacement issues, no dependency conflicts.&lt;/p&gt;

&lt;p&gt;It was &lt;em&gt;fast&lt;/em&gt;. Not just the website itself, but the entire development experience.&lt;/p&gt;

&lt;p&gt;That's when I decided: my personal website doesn't need all this complexity. It's time to simplify.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Astro? 🚀
&lt;/h2&gt;

&lt;p&gt;I chose Astro for one simple reason: it lets you write components and modern syntax while outputting pure static HTML. No JavaScript runtime, no virtual DOM, no hydration overhead. Just good old HTML, CSS, and minimal JS where needed.&lt;/p&gt;

&lt;p&gt;Astro's philosophy aligned perfectly with what I wanted:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero JavaScript by default&lt;/strong&gt;: Pages are pure HTML unless you explicitly opt-in&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Component-based&lt;/strong&gt;: I can still organize my code cleanly without shipping React&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fast builds&lt;/strong&gt;: Seriously fast, we're talking seconds&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No lock-in&lt;/strong&gt;: If I want to switch frameworks later, I can easily migrate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best part? Astro doesn't force you into any particular way of doing things. Want to use vanilla CSS? Great. Want to sprinkle in some JavaScript? Cool. Want to stay 100% static? Perfect.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Refactoring Process 🔧
&lt;/h2&gt;

&lt;p&gt;The migration was surprisingly straightforward. Here's what I did:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Stripped Everything Down
&lt;/h3&gt;

&lt;p&gt;First, I removed all the dependencies. Every single one. The &lt;code&gt;package.json&lt;/code&gt; went from 40+ dependencies to just Astro itself. It felt liberating, like decluttering a messy room.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Rebuilt the Structure
&lt;/h3&gt;

&lt;p&gt;I created a simple Astro project structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/
├── components/
│   ├── Header.astro
│   ├── Footer.astro
│   └── ProjectCard.astro
├── layouts/
│   └── BaseLayout.astro
└── pages/
    ├── index.astro
    ├── blog/
    └── projects/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Clean, minimal, easy to understand.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 3: Pure CSS, No Frameworks
&lt;/h3&gt;

&lt;p&gt;This is where it got interesting. Instead of reaching for Tailwind, I wrote vanilla CSS. And honestly? It was &lt;em&gt;fun&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I created a simple &lt;code&gt;global.css&lt;/code&gt; file for handle all CSS.&lt;/p&gt;

&lt;p&gt;No build tools, no purging, no configuration. Just CSS that works.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 4: Animations in Pure CSS
&lt;/h3&gt;

&lt;p&gt;Here's where I had the most fun. Instead of importing animation libraries, I wrote CSS animations from scratch:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;fadeIn&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nt"&gt;from&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&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;span class="nc"&gt;.fade-in&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;fadeIn&lt;/span&gt; &lt;span class="m"&gt;0.6s&lt;/span&gt; &lt;span class="n"&gt;ease-out&lt;/span&gt; &lt;span class="n"&gt;forwards&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;p&gt;Simple, performant, and I have complete control over every detail.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 5: JavaScript Only Where Needed
&lt;/h3&gt;

&lt;p&gt;I added minimal JavaScript for interactive features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Theme toggle (dark/light mode)&lt;/li&gt;
&lt;li&gt;Mobile menu toggle&lt;/li&gt;
&lt;li&gt;Smooth scroll behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Total JavaScript: less than 100 lines. No frameworks, no bundlers, just plain vanilla JS.&lt;/p&gt;


&lt;h2&gt;
  
  
  What I Rediscovered 💡
&lt;/h2&gt;

&lt;p&gt;This process taught me (or reminded me) of several important lessons:&lt;/p&gt;
&lt;h3&gt;
  
  
  CSS Is Actually Powerful
&lt;/h3&gt;

&lt;p&gt;Modern CSS is &lt;em&gt;incredibly&lt;/em&gt; powerful. Grid, flexbox, custom properties, container queries, scroll-driven animations, we have everything we need to build beautiful, responsive websites without frameworks.&lt;/p&gt;

&lt;p&gt;I'd forgotten that. Years of using Bulma, Tailwind, ecc made me think I needed utility classes for everything, but honestly? Writing semantic CSS felt more natural and resulted in cleaner markup.&lt;/p&gt;
&lt;h3&gt;
  
  
  Less Is Genuinely More
&lt;/h3&gt;

&lt;p&gt;The final bundle size? &lt;strong&gt;Tiny&lt;/strong&gt;. We're talking kilobytes, not megabytes. The Lighthouse score? 100 across the board. The build time? Under 3 seconds.&lt;/p&gt;

&lt;p&gt;None of this would be possible with my previous stack. All that complexity was weighing the site down, literally and metaphorically.&lt;/p&gt;
&lt;h3&gt;
  
  
  Development Can Be Simple
&lt;/h3&gt;

&lt;p&gt;There's something deeply satisfying about opening a file, changing some CSS, refreshing the browser, and seeing the change instantly. No build process, no hot module replacement quirks, no "hmm, why isn't this updating?"&lt;/p&gt;

&lt;p&gt;The tight feedback loop made development &lt;em&gt;enjoyable&lt;/em&gt; again.&lt;/p&gt;
&lt;h3&gt;
  
  
  You Don't Need a Framework for Everything
&lt;/h3&gt;

&lt;p&gt;This is the big one. I'd internalized the idea that "professional" websites require modern frameworks. But that's not true. Frameworks solve specific problems, and if you don't have those problems, you don't need the framework.&lt;/p&gt;

&lt;p&gt;My personal website doesn't need client-side routing, state management, or component reactivity. It's content, presented nicely. HTML and CSS do that perfectly well on their own.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Results 📊
&lt;/h2&gt;

&lt;p&gt;Let me share some concrete improvements:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initial load time: 0.3s (down from 1.8s)&lt;/li&gt;
&lt;li&gt;Total bundle size: 45KB (down from 380KB)&lt;/li&gt;
&lt;li&gt;Lighthouse score: 100 across all metrics&lt;/li&gt;
&lt;li&gt;Time to Interactive: instant&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Developer Experience:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build time: 2.4s (down from 28s)&lt;/li&gt;
&lt;li&gt;Hot reload: instant&lt;/li&gt;
&lt;li&gt;Dependency updates: basically none&lt;/li&gt;
&lt;li&gt;Mental overhead: significantly reduced&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Maintenance:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Breaking changes: none (it's just HTML/CSS)&lt;/li&gt;
&lt;li&gt;Security vulnerabilities: none (no dependencies to patch)&lt;/li&gt;
&lt;li&gt;Complexity: minimal&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  What About the Trade-offs? 🤔
&lt;/h2&gt;

&lt;p&gt;Let's be honest, there are some trade-offs:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No Component Reactivity:&lt;/strong&gt;&lt;br&gt;
Astro components are static by default. If I need interactivity, I have to add it manually. But for a content site, this is rarely an issue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Less Tooling:&lt;/strong&gt;&lt;br&gt;
No automatic CSS optimization, no tree-shaking, no hot module replacement for styles. But honestly? I don't miss it. The simplicity makes up for the lack of bells and whistles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manual Responsive Design:&lt;/strong&gt;&lt;br&gt;
Without Tailwind's responsive utilities, I write media queries by hand. It takes slightly longer, but the CSS is more maintainable and semantic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;More CSS to Write:&lt;/strong&gt;&lt;br&gt;
No utility classes means writing more CSS. But the total amount of CSS is actually &lt;em&gt;less&lt;/em&gt; than my Tailwind config generated, and it's more readable.&lt;/p&gt;

&lt;p&gt;These trade-offs are worth it for me. Your mileage may vary.&lt;/p&gt;


&lt;h2&gt;
  
  
  Who Should Consider This Approach? 🎯
&lt;/h2&gt;

&lt;p&gt;Pure Astro and CSS isn't for everyone, but it's perfect if:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You're building content sites:&lt;/strong&gt;&lt;br&gt;
Blogs, portfolios, documentation, marketing pages, anything that's primarily content benefits from this approach.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You value simplicity:&lt;/strong&gt;&lt;br&gt;
If you're tired of complex build processes and dependency management, going minimal is refreshing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You want to learn the fundamentals:&lt;/strong&gt;&lt;br&gt;
Writing vanilla CSS makes you a better developer. You understand what your tools are doing under the hood.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance matters:&lt;/strong&gt;&lt;br&gt;
If you need the absolute fastest site possible, less code wins every time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You don't need heavy interactivity:&lt;/strong&gt;&lt;br&gt;
If your site is mostly static content with occasional interactive elements, you don't need a full framework.&lt;/p&gt;


&lt;h2&gt;
  
  
  When You Still Need Frameworks 🔄
&lt;/h2&gt;

&lt;p&gt;To be clear, I'm not saying frameworks are bad. They're excellent tools for the right jobs:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Complex web apps:&lt;/strong&gt;&lt;br&gt;
If you're building a dashboard, SaaS platform, or interactive application, React/Vue/etc. make total sense.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Teams with existing expertise:&lt;/strong&gt;&lt;br&gt;
If your team knows React and you're building something quickly, use React. Don't reinvent the wheel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lots of client-side state:&lt;/strong&gt;&lt;br&gt;
When you need to manage complex client-side state, frameworks provide the structure to do it well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rapid prototyping:&lt;/strong&gt;&lt;br&gt;
Component libraries and frameworks can speed up initial development significantly.&lt;/p&gt;

&lt;p&gt;The key is choosing the right tool for the job, not defaulting to the most popular stack.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Bigger Picture 🌍
&lt;/h2&gt;

&lt;p&gt;This refactoring taught me something important about modern web development: we've collectively become a bit obsessed with complexity.&lt;/p&gt;

&lt;p&gt;We reach for frameworks by default, even when they're overkill. We add dependencies without thinking. We over-engineer simple problems because that's what "professional" developers do.&lt;/p&gt;

&lt;p&gt;But sometimes, the best solution is the simplest one.&lt;/p&gt;

&lt;p&gt;HTML and CSS have been around for decades because they're &lt;em&gt;good&lt;/em&gt;. They're stable, they're fast, they're simple. Modern CSS is powerful enough to build beautiful interfaces without frameworks.&lt;/p&gt;

&lt;p&gt;Astro lets us use modern development practices (components, TypeScript, etc.) while outputting pure, simple code. It's the best of both worlds.&lt;/p&gt;


&lt;h2&gt;
  
  
  My Challenge to You 💪
&lt;/h2&gt;

&lt;p&gt;If you're reading this and thinking "hmm, maybe I've over-engineered my site too," I challenge you:&lt;/p&gt;

&lt;p&gt;Try building something with pure HTML and CSS. No frameworks, no libraries, just the fundamentals. See how it feels.&lt;/p&gt;

&lt;p&gt;You might be surprised at how freeing it is.&lt;/p&gt;

&lt;p&gt;And if you need a static site generator, give Astro a shot. It's genuinely excellent at letting you write simple code that performs beautifully.&lt;/p&gt;


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

&lt;p&gt;Rebuilding domenicotenace.dev with pure Astro and CSS reminded me why I fell in love with web development in the first place: the joy of creating something that works, that's fast, that's simple.&lt;/p&gt;

&lt;p&gt;We don't always need the latest framework or the trendiest library. Sometimes, the best code is the code we don't write.&lt;/p&gt;

&lt;p&gt;If you take one thing from this article, let it be this: question your stack. Ask yourself if you really need all those dependencies. Challenge the assumption that complexity equals professionalism.&lt;/p&gt;

&lt;p&gt;Often, the simplest solution is the best one.&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>astro</category>
      <category>css</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Adding Capacitor to Glif with Antigravity: The Good, The Bad, and The Reality Check 📱</title>
      <dc:creator>Domenico Tenace</dc:creator>
      <pubDate>Thu, 26 Feb 2026 17:46:28 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/adding-capacitor-to-glif-with-antigravity-the-good-the-bad-and-the-reality-check-4pm8</link>
      <guid>https://dev.to/playfulprogramming/adding-capacitor-to-glif-with-antigravity-the-good-the-bad-and-the-reality-check-4pm8</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

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

&lt;p&gt;I recently decided to take &lt;a href="https://github.com/Domenico-Tenace-Open-Labs/glif" rel="noopener noreferrer"&gt;Glif&lt;/a&gt;, my minimalist QR code generator web app, and turn it into a proper mobile app using Capacitor. For those who don't know, Glif is a simple Nuxt app that lets you create and download customizable QR codes, nothing fancy, just clean and functional.&lt;/p&gt;

&lt;p&gt;Since I've been using Google Antigravity for various projects, I figured: why not let it handle the Capacitor integration? It's supposed to be great for frontend work, and mobile development is definitely frontend territory, right?&lt;/p&gt;

&lt;p&gt;Well... let me tell you about that experience. Spoiler alert: Antigravity helped, but it wasn't the smooth ride I expected.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  What Is Capacitor and Why Add It to Glif? 🤔
&lt;/h2&gt;

&lt;p&gt;First, a quick explainer for anyone unfamiliar. &lt;strong&gt;Capacitor&lt;/strong&gt; is Ionic's cross-platform runtime that lets you turn web apps into native mobile apps for iOS and Android. Think of it as a bridge: your web code (HTML, CSS, JavaScript) runs inside a native container, and Capacitor provides APIs to access device features like the camera, filesystem, notifications, etc.&lt;/p&gt;

&lt;p&gt;For a tool like Glif, going mobile made perfect sense:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Glif Needs Mobile:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;QR codes are inherently mobile-first (people scan them with phones)&lt;/li&gt;
&lt;li&gt;Users might want to generate QR codes on the go&lt;/li&gt;
&lt;li&gt;Having a native app feels more legitimate than "just a website"&lt;/li&gt;
&lt;li&gt;Access to device features like sharing, saving to photos, etc.&lt;/li&gt;
&lt;li&gt;Potential for offline functionality&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The web version works fine, but a native mobile app would be the natural evolution. Capacitor seemed like the obvious choice, it's well-maintained, works great with Vue/Nuxt, and doesn't require rewriting the entire app.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Plan: Let Antigravity Handle It ⚡
&lt;/h2&gt;

&lt;p&gt;I've had good experiences using Antigravity for frontend work (&lt;a href="https://dev.to/playfulprogramming/building-plus-ultra-how-antigravity-helped-me-bring-material-design-to-bulma-css-30m6"&gt;I literally built an entire Material Design CSS library with it&lt;/a&gt;), so I was optimistic. My thinking was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Capacitor integration is well-documented&lt;/li&gt;
&lt;li&gt;It's mostly configuration and boilerplate&lt;/li&gt;
&lt;li&gt;Antigravity should be able to follow the Capacitor docs&lt;/li&gt;
&lt;li&gt;The agent can test the mobile build in the browser&lt;/li&gt;
&lt;li&gt;This should be straightforward&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I fired up Antigravity in Planning mode and gave it the task:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Integrate Capacitor into this Nuxt 4 project to create iOS and Android builds. Configure all necessary plugins for a QR code app including Filesystem."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent created a plan, I reviewed it, and we were off to the races.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Went Well ✅
&lt;/h2&gt;

&lt;p&gt;Let me start with the positives, because Antigravity did help in several areas:&lt;/p&gt;

&lt;h3&gt;
  
  
  Initial Setup Was Smooth
&lt;/h3&gt;

&lt;p&gt;The agent handled the initial Capacitor installation perfectly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Installed &lt;code&gt;@capacitor/core&lt;/code&gt; and &lt;code&gt;@capacitor/cli&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Ran &lt;code&gt;npx cap init&lt;/code&gt; with correct project details&lt;/li&gt;
&lt;li&gt;Added Android platforms&lt;/li&gt;
&lt;li&gt;Created the &lt;code&gt;capacitor.config.ts&lt;/code&gt; file with proper configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All the boilerplate stuff that's tedious but straightforward worked flawlessly. This is exactly what AI assistants should excel at.&lt;/p&gt;

&lt;h3&gt;
  
  
  Plugin Installation
&lt;/h3&gt;

&lt;p&gt;Antigravity correctly identified and installed the necessary plugins:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;@capacitor/filesystem&lt;/code&gt; for saving QR codes&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@capacitor/splash-screen&lt;/code&gt; for native app experience&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@capacitor/status-bar&lt;/code&gt; for handle status bar&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@capacitor-community/media&lt;/code&gt; for handle media files (like images)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It even configured them properly in the Capacitor config, which saved me from reading documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Build Configuration
&lt;/h3&gt;

&lt;p&gt;The agent modified the Nuxt config to work with Capacitor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set up the correct output directory&lt;/li&gt;
&lt;li&gt;Configured SSR settings (disabled, since Capacitor needs SPA)&lt;/li&gt;
&lt;li&gt;Adjusted router settings for mobile&lt;/li&gt;
&lt;li&gt;Created proper build scripts in package.json&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This was actually helpful because the Nuxt + Capacitor combo has some quirks that the agent navigated correctly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where Antigravity Struggled 😬
&lt;/h2&gt;

&lt;p&gt;Now for the part where things got messy. Antigravity wasn't terrible, but it definitely wasn't at 100% performance:&lt;/p&gt;

&lt;h3&gt;
  
  
  Native Platform Specifics
&lt;/h3&gt;

&lt;p&gt;The agent struggled with Android-specific configurations. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;AndroidManifest.xml&lt;/code&gt; permissions were incomplete&lt;/li&gt;
&lt;li&gt;Didn't configure proper app theming&lt;/li&gt;
&lt;li&gt;Missed some required Gradle configuration&lt;/li&gt;
&lt;li&gt;Icons and splash screens needed manual adjustment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Again, the agent knew what needed to be done but couldn't execute it properly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Build Errors and Debugging
&lt;/h3&gt;

&lt;p&gt;This is where Antigravity really fell short. When builds failed, the agent struggled to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Diagnose Real Errors:&lt;/strong&gt;&lt;br&gt;
The first Android build threw a Gradle error. I asked Antigravity to fix it, and it suggested changes that didn't address the actual issue. After three attempts, I just Googled the error myself and fixed it in 5 minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understand Native Tooling:&lt;/strong&gt;&lt;br&gt;
Antigravity doesn't actually run Android Studio, so when I pasted error messages from those tools, its suggestions were hit-or-miss. It could recognize &lt;em&gt;common&lt;/em&gt; errors but anything specific required me to debug manually.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Handle Version Conflicts:&lt;/strong&gt;&lt;br&gt;
Dependency conflicts between Capacitor plugins and Nuxt modules were a pain. The agent suggested version combinations that didn't work, and I ended up trial-and-error fixing them myself.&lt;/p&gt;
&lt;h3&gt;
  
  
  Performance Optimization
&lt;/h3&gt;

&lt;p&gt;The agent successfully integrated Capacitor, but the resulting app wasn't optimized:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bundle size was larger than necessary&lt;/li&gt;
&lt;li&gt;Some Nuxt modules loaded unnecessarily in mobile context&lt;/li&gt;
&lt;li&gt;Animation performance on lower-end devices was choppy&lt;/li&gt;
&lt;li&gt;Initial load time was slower than it should be&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When I asked Antigravity to optimize, it made generic suggestions (tree-shaking, lazy loading, etc.) but couldn't implement them effectively for the Capacitor + Nuxt combo.&lt;/p&gt;
&lt;h3&gt;
  
  
  Mobile-Specific UI Issues
&lt;/h3&gt;

&lt;p&gt;The web version of Glif looked fine, but mobile had problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Touch targets were too small in some places&lt;/li&gt;
&lt;li&gt;Bottom navigation issues with Android gesture navigation&lt;/li&gt;
&lt;li&gt;Keyboard behavior wasn't optimized for mobile&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Antigravity suggested CSS fixes, but many required understanding native mobile behavior that it just didn't grasp well enough.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Reality: Manual Work Was Necessary 🔧
&lt;/h2&gt;

&lt;p&gt;Here's what I ended up doing manually:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fix AndroidManifest.xml completely&lt;/li&gt;
&lt;li&gt;Configure proper app theming and colors&lt;/li&gt;
&lt;li&gt;Set up icons and splash screens correctly&lt;/li&gt;
&lt;li&gt;Adjust Gradle dependencies to resolve conflicts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Code Optimization:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manually remove unnecessary Nuxt modules for mobile&lt;/li&gt;
&lt;li&gt;Optimize bundle size by tree-shaking unused code&lt;/li&gt;
&lt;li&gt;Improve touch interactions with mobile-specific CSS&lt;/li&gt;
&lt;li&gt;Fix status bar and safe area issues with custom code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Testing:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test on actual devices (simulator isn't enough)&lt;/li&gt;
&lt;li&gt;Fix device-specific bugs Antigravity couldn't predict&lt;/li&gt;
&lt;li&gt;Optimize performance on lower-end hardware&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Honestly, I'd estimate Antigravity handled about 60% of the work. The other 40% required manual intervention, native tooling knowledge, and debugging skills.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why Antigravity Wasn't at 100% 🧠
&lt;/h2&gt;

&lt;p&gt;After reflecting on the experience, I think I understand why Antigravity underperformed:&lt;/p&gt;
&lt;h3&gt;
  
  
  It Can't Actually Run Native Tooling
&lt;/h3&gt;

&lt;p&gt;Antigravity's browser integration is great for web testing, but it can't Android Studio. This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It can't validate native builds&lt;/li&gt;
&lt;li&gt;It can't see build errors in native IDEs&lt;/li&gt;
&lt;li&gt;It can't test on actual devices or simulators&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For truly mobile-native work, this is a significant limitation.&lt;/p&gt;
&lt;h3&gt;
  
  
  Capacitor Is a Bridging Technology
&lt;/h3&gt;

&lt;p&gt;Capacitor sits at the intersection of web and native, which means you need knowledge of both worlds. Antigravity is strong on the web side but weak on the native side. When problems arise in the native layer, the agent struggles.&lt;/p&gt;
&lt;h3&gt;
  
  
  Documentation Isn't Enough
&lt;/h3&gt;

&lt;p&gt;The agent can read Capacitor docs, but implementing best practices requires experience. Things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Proper safe area handling&lt;/li&gt;
&lt;li&gt;Performance optimization for mobile devices&lt;/li&gt;
&lt;li&gt;Platform-specific UI patterns&lt;/li&gt;
&lt;li&gt;Native permission flows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These require &lt;em&gt;knowing&lt;/em&gt; mobile development, not just reading about it.&lt;/p&gt;
&lt;h3&gt;
  
  
  Nuxt + Capacitor Is a Niche Combo
&lt;/h3&gt;

&lt;p&gt;Most Capacitor tutorials focus on React, Angular, or vanilla JS. The Nuxt integration has specific quirks and gotchas that aren't as well-documented. Antigravity didn't have enough training data on this specific stack.&lt;/p&gt;


&lt;h2&gt;
  
  
  What I Learned 💡
&lt;/h2&gt;

&lt;p&gt;This experience taught me some valuable lessons:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Antigravity Is Still Best for Pure Web:&lt;/strong&gt;&lt;br&gt;
When the work is 100% web-based (HTML, CSS, JavaScript, Vue components), Antigravity excels. The moment you cross into native territory, its effectiveness drops significantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hybrid Frameworks Need Hybrid Knowledge:&lt;/strong&gt;&lt;br&gt;
Using Capacitor effectively requires understanding both web and native development. An AI that's strong in one but weak in the other will struggle with the integration layer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Boilerplate vs. Implementation:&lt;/strong&gt;&lt;br&gt;
Antigravity is excellent at boilerplate and initial setup. But when things go wrong or need optimization, you still need traditional debugging skills.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testing Matters:&lt;/strong&gt;&lt;br&gt;
The agent can't test on actual devices, which is critical for mobile development. Until AI can actually run apps on phones and see visual/performance issues, it'll miss important problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation Has Limits:&lt;/strong&gt;&lt;br&gt;
Reading docs doesn't replace experience. Mobile development has countless edge cases and platform quirks that you only learn by doing.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Current State of Glif Mobile 📱
&lt;/h2&gt;

&lt;p&gt;Despite the struggles, Glif now has working Android builds! The apps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate QR codes with custom colors and sizes&lt;/li&gt;
&lt;li&gt;Save QR codes to the device photo library&lt;/li&gt;
&lt;li&gt;Work offline (since it's all client-side)&lt;/li&gt;
&lt;li&gt;Have proper icons, splash screens, and native feel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's not perfect, there are still optimizations I want to make, but it's functional and feels like a real mobile app.&lt;/p&gt;

&lt;p&gt;Antigravity got me maybe 60-70% of the way there, which isn't nothing. But the final 30-40% required rolling up my sleeves and getting my hands dirty with Android Studio.&lt;/p&gt;


&lt;h2&gt;
  
  
  Should You Use Antigravity for Capacitor Integration? 🎯
&lt;/h2&gt;

&lt;p&gt;Based on my experience, here's my take:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Antigravity if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need help with initial setup and boilerplate&lt;/li&gt;
&lt;li&gt;You're already comfortable with mobile development and just want to speed up configuration&lt;/li&gt;
&lt;li&gt;You're okay handling native tooling yourself when things go wrong&lt;/li&gt;
&lt;li&gt;Your app is relatively simple without complex native integrations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Don't rely solely on Antigravity if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is your first time with Capacitor or mobile development&lt;/li&gt;
&lt;li&gt;Your app needs complex native features or optimizations&lt;/li&gt;
&lt;li&gt;You need production-ready, fully optimized mobile apps without manual work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Reality:&lt;/strong&gt;&lt;br&gt;
Antigravity is a helpful assistant for Capacitor integration, but it's not a replacement for mobile development knowledge. Think of it as a junior developer who can handle setup tasks but needs supervision for the complex stuff.&lt;/p&gt;


&lt;h2&gt;
  
  
  What I'd Do Differently Next Time 🔄
&lt;/h2&gt;

&lt;p&gt;If I were to integrate Capacitor into another project with Antigravity, I'd:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set Realistic Expectations:&lt;/strong&gt;&lt;br&gt;
Go in knowing I'll need to manually handle native configuration and optimization. Don't expect the agent to deliver a production-ready mobile app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use It for What It's Good At:&lt;/strong&gt;&lt;br&gt;
Let Antigravity handle installation, basic config, and documentation. Handle native-specific work myself from the start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test Earlier:&lt;/strong&gt;&lt;br&gt;
Don't wait for the agent to "finish" before testing on actual devices. Test incrementally and catch issues early.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Have Native Tools Ready:&lt;/strong&gt;&lt;br&gt;
Have Android Studio open from the beginning. Don't expect to complete mobile development purely through the Antigravity interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Combine with Traditional Resources:&lt;/strong&gt;&lt;br&gt;
Use Antigravity alongside Stack Overflow, Capacitor docs, and community forums. Don't rely on it exclusively.&lt;/p&gt;


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

&lt;p&gt;Adding Capacitor to Glif was a learning experience. Antigravity helped significantly with setup and boilerplate, but mobile development's native aspects required traditional hands-on work.&lt;/p&gt;

&lt;p&gt;The 60-70% of work the agent handled was genuinely useful and saved me time. But that final 30-40% reminded me that AI coding tools, as impressive as they are, still have clear limitations when you cross platform boundaries.&lt;/p&gt;

&lt;p&gt;Mobile development is complex, spanning web tech and Android. Until AI tools can truly understand and test across all these layers, they'll remain helpful assistants rather than complete solutions.&lt;/p&gt;

&lt;p&gt;That said, would I use Antigravity again for Capacitor integration? Probably yes, but with realistic expectations and my native IDEs ready to go from day one.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Have you tried using AI coding tools for mobile development?&lt;/strong&gt; Drop a comment with your experiences, I'm curious if others have hit similar roadblocks or found better workflows!&lt;/p&gt;

&lt;p&gt;Check out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Domenico-Tenace-Open-Labs/glif" rel="noopener noreferrer"&gt;Glif on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://glif.netlify.app/" rel="noopener noreferrer"&gt;Live web version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Domenico-Tenace-Open-Labs" rel="noopener noreferrer"&gt;Domenico Tenace Open Labs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&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>antigravity</category>
      <category>mobile</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Building Plus Ultra: How Antigravity Helped Me Bring Material Design to Bulma CSS 🎨</title>
      <dc:creator>Domenico Tenace</dc:creator>
      <pubDate>Thu, 12 Feb 2026 11:32:17 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/building-plus-ultra-how-antigravity-helped-me-bring-material-design-to-bulma-css-30m6</link>
      <guid>https://dev.to/playfulprogramming/building-plus-ultra-how-antigravity-helped-me-bring-material-design-to-bulma-css-30m6</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

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

&lt;p&gt;Today I want to share something I've been working on that combines two things I love: clean CSS frameworks and Material Design aesthetics. I just launched &lt;a href="https://github.com/Domenico-Tenace-Open-Labs/plus-ultra" rel="noopener noreferrer"&gt;&lt;strong&gt;Plus Ultra&lt;/strong&gt;&lt;/a&gt;, an open-source CSS library that brings Material Design components to &lt;a href="https://bulma.io/" rel="noopener noreferrer"&gt;Bulma CSS&lt;/a&gt; while keeping all the flexbox goodness that makes Bulma so powerful.&lt;/p&gt;

&lt;p&gt;And here's the kicker: I built most of it using Google Antigravity, which turned out to be an absolute beast for frontend work. If you're wondering whether Antigravity is any good for UI development, let me tell you, it's incredible.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  What Is Plus Ultra? 🚀
&lt;/h2&gt;

&lt;p&gt;First, let me explain what Plus Ultra actually is and why I built it.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Concept
&lt;/h3&gt;

&lt;p&gt;Bulma is one of my favorite CSS frameworks. It's lightweight, pure CSS (no JavaScript), based on flexbox, and incredibly easy to use. The problem? Its default aesthetic is pretty basic. The components work great, but they look... well, vanilla.&lt;/p&gt;

&lt;p&gt;Material Design, on the other hand, is gorgeous. Google's design system is polished, modern, and has that clean "premium" feel. But most Material Design implementations (like Material-UI) are tied to specific JavaScript frameworks, which defeats the purpose of Bulma's simplicity.&lt;/p&gt;

&lt;p&gt;So I thought: what if we could have the best of both worlds? Bulma's flexbox power and simplicity, but with Material Design's visual polish?&lt;/p&gt;

&lt;p&gt;That's Plus Ultra.&lt;/p&gt;

&lt;h3&gt;
  
  
  What It Does
&lt;/h3&gt;

&lt;p&gt;Plus Ultra takes Bulma's components and transforms them into Material Design equivalents using pure CSS/Sass:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Material buttons&lt;/strong&gt; with proper elevation, ripple effects (CSS-only), and Material color schemes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Material cards&lt;/strong&gt; with the signature shadow system and hover states&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Material form inputs&lt;/strong&gt; with floating labels and Material-style validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Material navigation&lt;/strong&gt; components following Material guidelines&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Material modals and dialogs&lt;/strong&gt; with proper transitions and backdrops&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key is that it's built &lt;strong&gt;on top of&lt;/strong&gt; Bulma, not instead of it. You still get all of Bulma's flexbox utilities, grid system, and helper classes. Plus Ultra just makes everything look like Material Design.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why "Plus Ultra"?
&lt;/h3&gt;

&lt;p&gt;The name comes from one of my all-time favorite anime series: &lt;a href="https://en.wikipedia.org/wiki/My_Hero_Academia" rel="noopener noreferrer"&gt;&lt;em&gt;My Hero Academia&lt;/em&gt;&lt;/a&gt; 😄&lt;br&gt;
"Plus Ultra" is actually a Latin Phrase. It translates to "Further Beyond." In My Hero Academia, it has been adopted as the school motto of U.A. High.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Tech Stack 💻
&lt;/h2&gt;

&lt;p&gt;Let me break down what Plus Ultra is built with:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bulma CSS&lt;/strong&gt; as the foundation (obviously)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sass/SCSS&lt;/strong&gt; for all the Material Design styling&lt;/li&gt;
&lt;li&gt;Pure CSS for animations and transitions&lt;/li&gt;
&lt;li&gt;No JavaScript dependencies (keeping Bulma's philosophy)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Build Tools:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pnpm for package management&lt;/li&gt;
&lt;li&gt;Sass compiler for building the final CSS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Material Design System:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Following Google's Material Design 3 guidelines&lt;/li&gt;
&lt;li&gt;Custom color system matching Material palettes&lt;/li&gt;
&lt;li&gt;Elevation system with proper shadows&lt;/li&gt;
&lt;li&gt;Material motion and transitions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The beauty is that it's just CSS. No complicated build process, no JavaScript runtime, no framework lock-in. Install it, import it, and your Bulma components instantly look like Material Design.&lt;/p&gt;


&lt;h2&gt;
  
  
  How Antigravity Changed Everything ⚡
&lt;/h2&gt;

&lt;p&gt;Now here's where it gets interesting. I could have built Plus Ultra the old-fashioned way, manually writing Sass, testing in the browser, iterating on designs. But I decided to use Google Antigravity, and honestly, it transformed the entire development process.&lt;/p&gt;
&lt;h3&gt;
  
  
  Frontend Is Antigravity's Sweet Spot
&lt;/h3&gt;

&lt;p&gt;I've used Antigravity for various projects, but it absolutely shines for frontend work. Here's why:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visual Feedback Loop:&lt;/strong&gt;&lt;br&gt;
Antigravity's integrated browser means the agent can actually see the components it's building. It's not just writing CSS blindly, it's rendering the results, evaluating the visual output, and iterating based on what it sees.&lt;/p&gt;

&lt;p&gt;When I asked the agent to create a Material Design button, it would:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write the initial Sass&lt;/li&gt;
&lt;li&gt;Compile and render it in the browser&lt;/li&gt;
&lt;li&gt;Visually compare it to Material Design specs&lt;/li&gt;
&lt;li&gt;Adjust colors, shadows, and spacing until it matched&lt;/li&gt;
&lt;li&gt;Show me the final result&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This visual validation is huge for UI work. The agent isn't guessing, it's verifying.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Material Design Knowledge:&lt;/strong&gt;&lt;br&gt;
Gemini (which powers Antigravity) has deep knowledge of Material Design principles. When I asked for "Material Design elevation level 2," it knew exactly what shadow values to use. When I requested "Material ripple effect," it understood the animation timing and easing functions.&lt;/p&gt;

&lt;p&gt;This saved me countless hours of referencing Material Design documentation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rapid Iteration:&lt;/strong&gt;&lt;br&gt;
Frontend work is all about iteration. Try a color, see how it looks, adjust. Try a shadow, see if it feels right, tweak. Antigravity excels at this:&lt;/p&gt;

&lt;p&gt;Me: "Make the button shadow more subtle"&lt;br&gt;
Agent: &lt;em&gt;adjusts shadow values, shows result&lt;/em&gt;&lt;br&gt;
Me: "Actually, go back to the original but reduce opacity"&lt;br&gt;
Agent: &lt;em&gt;reverts and modifies, shows result&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This back-and-forth happened in seconds, not minutes.&lt;/p&gt;
&lt;h3&gt;
  
  
  Specific Examples from Building Plus Ultra
&lt;/h3&gt;

&lt;p&gt;Let me share some concrete examples of how Antigravity helped:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example 1: Material Cards&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Task: "Create a Material Design card component that works with Bulma's .card class"&lt;/p&gt;

&lt;p&gt;What Antigravity did:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Analyzed Bulma's existing card structure&lt;/li&gt;
&lt;li&gt;Added Material Design elevation (box-shadow) with proper values&lt;/li&gt;
&lt;li&gt;Implemented hover state with elevation increase&lt;/li&gt;
&lt;li&gt;Added proper border-radius matching Material specs&lt;/li&gt;
&lt;li&gt;Created transition animations for smooth hover effects&lt;/li&gt;
&lt;li&gt;Ensured responsive behavior on mobile&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent created the entire component in one go, tested it visually, and the result was production-ready. I made minor tweaks to spacing, but 95% was perfect on first attempt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example 2: Floating Label Inputs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Task: "Implement Material Design floating labels for Bulma form inputs"&lt;/p&gt;

&lt;p&gt;This is actually complex because floating labels require specific CSS logic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Label starts inside the input&lt;/li&gt;
&lt;li&gt;When focused or filled, label floats up and shrinks&lt;/li&gt;
&lt;li&gt;Smooth transitions between states&lt;/li&gt;
&lt;li&gt;Proper color changes&lt;/li&gt;
&lt;li&gt;Accessible implementation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Antigravity not only wrote the CSS but also created test cases showing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Empty input (label inside)&lt;/li&gt;
&lt;li&gt;Focused input (label floating)&lt;/li&gt;
&lt;li&gt;Filled input (label stays floating)&lt;/li&gt;
&lt;li&gt;Error state (red accent)&lt;/li&gt;
&lt;li&gt;Success state (green accent)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent validated each state visually before showing me the final component.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example 3: Material Color System&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Task: "Implement Material Design color palette with Sass variables compatible with Bulma's color system"&lt;/p&gt;

&lt;p&gt;Antigravity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created Sass maps for Material color palettes (primary, secondary, error, etc.)&lt;/li&gt;
&lt;li&gt;Integrated them with Bulma's existing color variables&lt;/li&gt;
&lt;li&gt;Generated utility classes (&lt;code&gt;.has-background-primary&lt;/code&gt;, &lt;code&gt;.has-text-secondary&lt;/code&gt;, etc.)&lt;/li&gt;
&lt;li&gt;Ensured proper contrast ratios for accessibility&lt;/li&gt;
&lt;li&gt;Created documentation showing all available colors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This would have taken me hours manually. The agent did it in minutes.&lt;/p&gt;
&lt;h3&gt;
  
  
  Planning Mode Was Perfect for This
&lt;/h3&gt;

&lt;p&gt;I used Planning mode extensively for Plus Ultra, and it was ideal for a project like this.&lt;/p&gt;

&lt;p&gt;Before implementing each component, the agent would create a plan showing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which Material Design specs it would follow&lt;/li&gt;
&lt;li&gt;How it would integrate with existing Bulma classes&lt;/li&gt;
&lt;li&gt;What Sass variables and mixins it would create&lt;/li&gt;
&lt;li&gt;What the final output would look like&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I could review the plan, suggest adjustments (like "use Bulma's existing spacing variables instead of creating new ones"), and then approve. This ensured consistency across all components.&lt;/p&gt;


&lt;h2&gt;
  
  
  What I Learned About Antigravity for Frontend 🧠
&lt;/h2&gt;

&lt;p&gt;After building Plus Ultra with Antigravity, here are my takeaways:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Antigravity is exceptionally strong for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Component-based UI development&lt;/li&gt;
&lt;li&gt;Design system implementation&lt;/li&gt;
&lt;li&gt;CSS/Sass architecture&lt;/li&gt;
&lt;li&gt;Responsive design work&lt;/li&gt;
&lt;li&gt;Visual consistency across components&lt;/li&gt;
&lt;li&gt;Rapid prototyping and iteration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The visual feedback loop is critical.&lt;/strong&gt;&lt;br&gt;
For UI work, being able to see results immediately and iterate visually makes Antigravity far more effective than text-based coding assistants.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Material Design knowledge is built-in.&lt;/strong&gt;&lt;br&gt;
Having an AI that deeply understands design systems means less time reading specs and more time building.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Planning mode prevents inconsistency.&lt;/strong&gt;&lt;br&gt;
For a library like Plus Ultra where consistency is crucial, Planning mode's upfront architecture decisions were invaluable.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Current State and What's Next 🌟
&lt;/h2&gt;

&lt;p&gt;Plus Ultra is currently in early development. The foundation is there, core Material components working on top of Bulma, but there's still work to do.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's working now:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Material buttons with elevation and states&lt;/li&gt;
&lt;li&gt;Material cards with proper shadows&lt;/li&gt;
&lt;li&gt;Basic floating label inputs&lt;/li&gt;
&lt;li&gt;Material color palette integration&lt;/li&gt;
&lt;li&gt;Foundation Sass architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What's coming:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complete form component library&lt;/li&gt;
&lt;li&gt;Material navigation components&lt;/li&gt;
&lt;li&gt;Modal and dialog components&lt;/li&gt;
&lt;li&gt;Material tables and lists&lt;/li&gt;
&lt;li&gt;Comprehensive documentation&lt;/li&gt;
&lt;li&gt;Live demo site&lt;/li&gt;
&lt;li&gt;npm package for easy installation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm building this in the open under &lt;a href="https://github.com/Domenico-Tenace-Open-Labs" rel="noopener noreferrer"&gt;Domenico Tenace Open Labs&lt;/a&gt;, so anyone can follow along, contribute, or use what's already there.&lt;/p&gt;

&lt;p&gt;And yes, I'll be continuing to use Antigravity for development. It's been too effective not to.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why Open Source? 🌍
&lt;/h2&gt;

&lt;p&gt;You might wonder why I'm building this as an open-source project instead of keeping it proprietary.&lt;/p&gt;

&lt;p&gt;Simple: the best tools I use every day are open source. Bulma is open source. Material Design specs are open. The entire web is built on open technologies.&lt;/p&gt;

&lt;p&gt;Plus Ultra stands on the shoulders of giants. The least I can do is contribute back to the ecosystem that's given me so much.&lt;/p&gt;

&lt;p&gt;If other developers find it useful, awesome. If someone wants to contribute improvements, even better. And if it helps people build better-looking websites with Bulma, that's the whole point.&lt;/p&gt;


&lt;h2&gt;
  
  
  What I Want to Hear From You 💬
&lt;/h2&gt;

&lt;p&gt;Alright, your turn! I have questions for the community:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you use Bulma:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Would a Material Design version interest you?&lt;/li&gt;
&lt;li&gt;What components would be most valuable?&lt;/li&gt;
&lt;li&gt;What design systems would you like to see integrated with Bulma?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If you use Material Design:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do you prefer React-based Material UI or pure CSS solutions?&lt;/li&gt;
&lt;li&gt;What features are non-negotiable in a Material Design implementation?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If you've used Antigravity for frontend:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How has your experience been with UI development?&lt;/li&gt;
&lt;li&gt;Did you find the browser integration as useful as I did?&lt;/li&gt;
&lt;li&gt;What tricks or workflows have you discovered?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If you're considering trying Antigravity:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What questions do you have about using it for frontend work?&lt;/li&gt;
&lt;li&gt;What kinds of projects are you thinking about building?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Drop a comment below!&lt;/strong&gt; I'm genuinely curious to hear if others are using Antigravity for frontend work and what your experiences have been. The tool is still new, and community knowledge sharing helps everyone.&lt;/p&gt;


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

&lt;p&gt;Building Plus Ultra has been a blast, and Antigravity made the process significantly faster and more enjoyable than traditional development would have been.&lt;/p&gt;

&lt;p&gt;The combination of Bulma's simplicity and Material Design's aesthetics feels like a natural fit, and having an AI assistant that understands both design systems, can write clean Sass, and can visually validate the results is incredibly powerful.&lt;/p&gt;

&lt;p&gt;If you're doing frontend work and haven't tried Antigravity yet, I highly recommend giving it a shot. The browser integration alone makes it worth exploring. And if you're a Bulma user looking for a Material Design aesthetic, keep an eye on Plus Ultra, we're just getting started.&lt;/p&gt;

&lt;p&gt;Check out the repo, star it if you're interested, and feel free to contribute or provide feedback. This is a community project, and the more input we get, the better it becomes.&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>antigravity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Planning vs Fast Mode in Google Antigravity: When and How to Use Each ⚡</title>
      <dc:creator>Domenico Tenace</dc:creator>
      <pubDate>Tue, 03 Feb 2026 09:09:36 +0000</pubDate>
      <link>https://dev.to/playfulprogramming/planning-vs-fast-mode-in-google-antigravity-when-and-how-to-use-each-36n5</link>
      <guid>https://dev.to/playfulprogramming/planning-vs-fast-mode-in-google-antigravity-when-and-how-to-use-each-36n5</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

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

&lt;p&gt;If you've started exploring Google Antigravity, you've probably noticed those two options sitting right there in the agent panel: &lt;strong&gt;Planning&lt;/strong&gt; and &lt;strong&gt;Fast&lt;/strong&gt; modes. At first glance, they might seem like just different speeds for getting stuff done, but trust me understanding when to use each one is the difference between feeling like a productivity wizard and wondering why the agent just did something completely unexpected.&lt;/p&gt;

&lt;p&gt;After spending significant time with Antigravity across various projects (from quick bug fixes to complex refactoring), I've learned that these modes represent fundamentally different approaches to problem solving. Choosing the right one can make or break your workflow.&lt;/p&gt;

&lt;p&gt;Today I want to dive deep into both modes: what makes them different, when to use each, how to get the most out of them, and the gotchas you need to watch out for. By the end, you'll know exactly which mode to reach for in any situation.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  The Core Philosophy: Two Ways to Think 🤔
&lt;/h2&gt;

&lt;p&gt;Before we get into the technical details, let's understand the philosophical difference between these modes, because it affects everything about how they work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Planning Mode: The Architect's Approach
&lt;/h3&gt;

&lt;p&gt;Planning mode is all about &lt;strong&gt;thinking before doing&lt;/strong&gt;. When you give the agent a task in Planning mode, it doesn't immediately start writing code. Instead, it takes a step back and asks itself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What exactly are we trying to achieve?&lt;/li&gt;
&lt;li&gt;What are the different components involved?&lt;/li&gt;
&lt;li&gt;What's the best approach to solve this?&lt;/li&gt;
&lt;li&gt;What files will need to be created or modified?&lt;/li&gt;
&lt;li&gt;What dependencies or technologies should we use?&lt;/li&gt;
&lt;li&gt;What are the potential challenges or edge cases?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only after answering these questions does it create a detailed implementation plan. This plan is a tangible artifact a document you can read, review, comment on, and approve before any code is written.&lt;/p&gt;

&lt;p&gt;Think of it like an architect creating blueprints before construction begins. You get to see the entire vision, suggest changes, and ensure everyone's on the same page before the first line of code is touched.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fast Mode: The Builder's Approach
&lt;/h3&gt;

&lt;p&gt;Fast mode is the opposite philosophy: &lt;strong&gt;just do it&lt;/strong&gt;. When you give the agent a task in Fast mode, it immediately starts executing. No plans, no artifacts, no waiting for approval. It interprets your request and takes action right away.&lt;/p&gt;

&lt;p&gt;This isn't carelessness, it's confidence. Fast mode assumes the task is straightforward enough that the agent can handle it without needing to draft a comprehensive plan first. It's like asking a skilled carpenter to fix a wobbly table leg, they don't need to draw blueprints; they just grab their tools and fix it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The key insight&lt;/strong&gt;: Planning mode prioritizes clarity and control. Fast mode prioritizes speed and efficiency. Neither is "better", they solve different problems.&lt;/p&gt;




&lt;h2&gt;
  
  
  Planning Mode Deep Dive 📋
&lt;/h2&gt;

&lt;p&gt;Let's start with Planning mode since it's the more complex (and often more powerful) of the two.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Planning Mode Works
&lt;/h3&gt;

&lt;p&gt;When you initiate a task in Planning mode, here's what happens behind the scenes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Initial Analysis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The agent reads your prompt and analyzes the scope. It examines your current workspace, identifies relevant files, and understands the context of what you're asking for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Plan Creation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The agent generates an &lt;strong&gt;Implementation Plan&lt;/strong&gt; artifact. This document typically includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Goal&lt;/strong&gt;: A clear statement of what the task aims to achieve&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tech Stack&lt;/strong&gt;: The technologies, frameworks, and libraries it plans to use&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High-Level Approach&lt;/strong&gt;: The overall strategy for solving the problem&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detailed Steps&lt;/strong&gt;: A breakdown of specific actions it will take&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File Changes&lt;/strong&gt;: Which files will be created, modified, or deleted&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing Strategy&lt;/strong&gt;: How it will verify the implementation works&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This plan appears as an artifact in your workspace that you can read, comment on, and interact with.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Your Review and Feedback&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's where the magic happens: you can provide feedback directly on the plan. You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Highlight specific sections and add comments&lt;/li&gt;
&lt;li&gt;Suggest alternative approaches&lt;/li&gt;
&lt;li&gt;Ask clarifying questions&lt;/li&gt;
&lt;li&gt;Request changes before any code is written&lt;/li&gt;
&lt;li&gt;Approve the plan as-is&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent reads your feedback and incorporates it into its understanding before proceeding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Execution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once you approve (explicitly or implicitly by letting it proceed), the agent executes the plan step by step. It follows the roadmap it created, implementing each component methodically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Walkthrough Generation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After completing the task, the agent generates a &lt;strong&gt;Walkthrough&lt;/strong&gt; artifact documenting what it did, what files changed, what features were added, and recommended next steps.&lt;/p&gt;

&lt;h3&gt;
  
  
  When to Use Planning Mode
&lt;/h3&gt;

&lt;p&gt;Planning mode shines in specific scenarios. Here's when you should reach for it:&lt;/p&gt;

&lt;h4&gt;
  
  
  Complex, Multi-Step Tasks
&lt;/h4&gt;

&lt;p&gt;If the task requires multiple components working together, Planning mode is your friend. Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Build a todo list app with user authentication, database storage, and responsive design"&lt;/li&gt;
&lt;li&gt;"Refactor the entire authentication system to use OAuth 2.0"&lt;/li&gt;
&lt;li&gt;"Create a CI/CD pipeline with automated testing and deployment"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These tasks have many moving parts. The planning phase ensures everything is coordinated correctly.&lt;/p&gt;

&lt;h4&gt;
  
  
  When You Need Oversight
&lt;/h4&gt;

&lt;p&gt;If you want to understand the agent's approach before it starts making changes, Planning mode gives you that visibility. This is crucial when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Working on production code&lt;/li&gt;
&lt;li&gt;Making changes to critical systems&lt;/li&gt;
&lt;li&gt;Learning how the agent solves problems&lt;/li&gt;
&lt;li&gt;Ensuring the solution aligns with your architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Unfamiliar Domains
&lt;/h4&gt;

&lt;p&gt;When you're asking the agent to work with technologies or frameworks you're less familiar with, Planning mode lets you review the approach and learn from the plan before implementation.&lt;/p&gt;

&lt;p&gt;For example, if you're new to React and ask the agent to build a component, the plan will show you the React patterns and best practices it intends to use. You can learn from this before any code is written.&lt;/p&gt;

&lt;h4&gt;
  
  
  Large-Scale Refactoring
&lt;/h4&gt;

&lt;p&gt;Refactoring across many files is risky without a plan. Planning mode ensures the agent has thought through all the implications and will make consistent changes throughout the codebase.&lt;/p&gt;

&lt;p&gt;I used this extensively &lt;a href="https://dev.to/this-is-learning/my-experience-with-google-antigravity-how-i-refactored-easy-kit-utils-with-ai-agents-2e54"&gt;when refactoring Easy Kit Utils&lt;/a&gt;, the planning phase showed exactly which files would be touched and how the changes would maintain consistency.&lt;/p&gt;

&lt;h4&gt;
  
  
  Collaborative Development
&lt;/h4&gt;

&lt;p&gt;If you're working on a team project or pair programming with the agent, Planning mode enables better collaboration. Your teammates can review the plan, provide input, and ensure the implementation aligns with team standards.&lt;/p&gt;

&lt;h4&gt;
  
  
  When You're Not Sure What You Want
&lt;/h4&gt;

&lt;p&gt;Sometimes you have a vague idea but haven't fully crystallized the requirements. Planning mode can help you think through the problem by generating a plan you can then refine.&lt;/p&gt;

&lt;p&gt;For example: "I need some kind of data visualization for user analytics" → the agent creates a plan proposing a specific approach → you review and say "actually, I want interactive charts, not static ones" → the plan updates before any coding happens.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Use Planning Mode Effectively
&lt;/h3&gt;

&lt;p&gt;To get the most out of Planning mode, follow these practices:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be Clear About the Goal, Not the Implementation&lt;/strong&gt;&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;"Create a user authentication system with email/password login, password reset functionality, and session management."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Less effective prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Use bcrypt to hash passwords in the users table and create a sessions table with JWT tokens and..."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Planning mode works best when you describe &lt;em&gt;WHAT&lt;/em&gt; you want, not &lt;em&gt;HOW&lt;/em&gt; to build it. Let the agent figure out the implementation details—that's what the planning phase is for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the Plan Thoroughly&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Don't just skim and approve. Actually read the implementation plan. Look for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does the tech stack make sense?&lt;/li&gt;
&lt;li&gt;Are there parts of the problem the agent missed?&lt;/li&gt;
&lt;li&gt;Are there simpler approaches?&lt;/li&gt;
&lt;li&gt;Does this align with your project's architecture?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use Inline Comments&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Antigravity supports Google Docs-style commenting directly on plan artifacts. Highlight a section of the plan and add a comment like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Instead of using PostgreSQL, can we use SQLite for this prototype?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Don't forget to handle the edge case where the user's email isn't verified."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent reads these comments and adjusts its approach accordingly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Iterate on the Plan&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Don't feel pressured to approve immediately. It's okay to go back and forth:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent creates initial plan&lt;/li&gt;
&lt;li&gt;You comment with changes&lt;/li&gt;
&lt;li&gt;Agent updates the plan&lt;/li&gt;
&lt;li&gt;You review again&lt;/li&gt;
&lt;li&gt;Approve when satisfied&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This iteration happens &lt;em&gt;before&lt;/em&gt; any code is written, which is much more efficient than fixing issues after implementation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Approve Explicitly&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you're satisfied with the plan, explicitly approve it by saying something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Looks good, proceed with implementation"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Approved, let's build this"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This signals to the agent that it should move from planning to execution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Common Planning Mode Pitfalls
&lt;/h3&gt;

&lt;p&gt;Even with the best intentions, there are traps to avoid:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Over-Planning Small Tasks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Planning mode has overhead. For tiny tasks like "fix the typo in line 42," the planning phase is overkill. Use Fast mode instead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Analysis Paralysis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Don't get stuck endlessly iterating on the plan. At some point, you need to commit and see the implementation. Perfect plans rarely survive contact with reality anyway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ignoring the Plan&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Some developers approve plans without reading them, defeating the whole purpose of Planning mode. If you're going to skip the plan review, just use Fast mode.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assuming the Plan Is Perfect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The plan is a guide, not gospel. As the agent executes, it might discover issues or better approaches. Be flexible and let it adapt if needed.&lt;/p&gt;




&lt;h2&gt;
  
  
  Fast Mode Deep Dive ⚡
&lt;/h2&gt;

&lt;p&gt;Now let's talk about Fast mode—the quick-and-dirty, get-it-done-now approach.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Fast Mode Works
&lt;/h3&gt;

&lt;p&gt;Fast mode is beautifully simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Interpret the Request&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The agent reads your prompt and immediately understands what action to take.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Execute&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It performs the task right away. No plans, no artifacts, no waiting. It makes the changes or writes the code directly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Report Back&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The agent confirms what it did and shows you the results.&lt;/p&gt;

&lt;p&gt;That's it. Three steps, minimal overhead, maximum speed.&lt;/p&gt;

&lt;h3&gt;
  
  
  When to Use Fast Mode
&lt;/h3&gt;

&lt;p&gt;Fast mode is perfect for specific scenarios:&lt;/p&gt;

&lt;h4&gt;
  
  
  Quick Edits and Fixes
&lt;/h4&gt;

&lt;p&gt;Simple, localized changes are Fast mode's bread and butter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Fix the typo on line 23"&lt;/li&gt;
&lt;li&gt;"Rename this variable to be more descriptive"&lt;/li&gt;
&lt;li&gt;"Add a console.log statement to debug this function"&lt;/li&gt;
&lt;li&gt;"Change the button color to blue"&lt;/li&gt;
&lt;li&gt;"Update the heading text to 'Welcome to Our App'"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These tasks are so straightforward that planning would just slow things down.&lt;/p&gt;

&lt;h4&gt;
  
  
  Obvious Solutions
&lt;/h4&gt;

&lt;p&gt;When there's only one reasonable way to solve a problem, Fast mode is efficient:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Center this div horizontally"&lt;/li&gt;
&lt;li&gt;"Add error handling to this API call"&lt;/li&gt;
&lt;li&gt;"Convert this callback to async/await"&lt;/li&gt;
&lt;li&gt;"Sort this array alphabetically"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The implementation is obvious, so just do it.&lt;/p&gt;

&lt;h4&gt;
  
  
  Iterative Development
&lt;/h4&gt;

&lt;p&gt;When you're rapidly prototyping and trying things out, Fast mode keeps you in flow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Try making the sidebar wider"&lt;/li&gt;
&lt;li&gt;"Add another field to this form"&lt;/li&gt;
&lt;li&gt;"Change the API endpoint to /v2/users"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can make quick changes, see the results, and iterate without the overhead of planning each tiny adjustment.&lt;/p&gt;

&lt;h4&gt;
  
  
  Familiar Patterns
&lt;/h4&gt;

&lt;p&gt;If you're working with code patterns you know well and you're confident in the approach, Fast mode gets you there faster:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Add a new route for /profile"&lt;/li&gt;
&lt;li&gt;"Create a simple React component for displaying user info"&lt;/li&gt;
&lt;li&gt;"Write a unit test for this function"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You know what good looks like, so you don't need to review a plan first.&lt;/p&gt;

&lt;h4&gt;
  
  
  Following Up on Existing Work
&lt;/h4&gt;

&lt;p&gt;When the agent has already done the heavy lifting and you just need small adjustments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Make the font slightly larger"&lt;/li&gt;
&lt;li&gt;"Add a bit more padding"&lt;/li&gt;
&lt;li&gt;"Fix that bug we just discovered"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These follow-up tasks build on existing context and don't need new plans.&lt;/p&gt;

&lt;h4&gt;
  
  
  Exploratory Tasks
&lt;/h4&gt;

&lt;p&gt;When you're just trying something to see if it works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Can you add syntax highlighting to this code block?"&lt;/li&gt;
&lt;li&gt;"Try implementing this feature and let's see how it looks"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If it doesn't work, you'll ask for something different. No need for upfront planning.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Use Fast Mode Effectively
&lt;/h3&gt;

&lt;p&gt;Fast mode is simple, but there are still best practices:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be Specific and Clear&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Since there's no planning phase to clarify ambiguity, your prompt needs to be precise:&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;"Change the primary button background color from blue to green"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Less effective:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Make the button look better"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The second prompt might work, but you're leaving too much to interpretation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Task at a Time&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fast mode works best with single, focused requests:&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;"Add input validation for the email field"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Less effective:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Add input validation, fix the layout issues, and update the error messages"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you have multiple tasks, either make separate requests in Fast mode or switch to Planning mode.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay Engaged&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Since Fast mode executes immediately, watch what the agent does. If it goes in the wrong direction, you can course-correct quickly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Wait, I meant center it vertically, not horizontally"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The fast feedback loop is part of Fast mode's advantage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use It for Learning the Codebase&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fast mode is great for quick explorations:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Show me all the places where this function is called"&lt;/p&gt;

&lt;p&gt;"Add comments explaining what this code does"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These quick tasks help you understand the code without major changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Common Fast Mode Pitfalls
&lt;/h3&gt;

&lt;p&gt;Fast mode's simplicity can also create problems:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using It for Complex Tasks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The biggest mistake is using Fast mode for tasks that actually need planning:&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;"Rebuild the entire user authentication system to use OAuth"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent will try to do it, but without planning, it might make inconsistent changes, miss edge cases, or choose a suboptimal approach.&lt;/p&gt;

&lt;p&gt;If the task touches multiple files or has significant complexity, use Planning mode.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vague Instructions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In Planning mode, vague instructions get clarified during the planning phase. In Fast mode, vague instructions lead to unexpected results:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Make this component better"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Better is subjective. The agent might optimize for performance when you wanted visual improvements, or vice versa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chaining Too Many Fast Requests&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Making dozens of sequential Fast mode requests can lead to inconsistency:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Add field A"&lt;br&gt;
"Add field B"&lt;br&gt;&lt;br&gt;
"Add field C"&lt;br&gt;
"Now style them all"&lt;br&gt;
"Actually, use a different layout"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At this point, you've essentially created a complex task piecemeal. Would've been better to use Planning mode from the start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assuming It'll Get Everything Right&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fast mode trades thoroughness for speed. Always review the results, especially for code that'll go to production.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Practical Comparison: Side by Side 🔄
&lt;/h2&gt;

&lt;p&gt;Let's look at how the same task would play out in each mode.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example Task: "Create a Contact Form"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Planning Mode Approach:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You submit: "Create a contact form with name, email, message fields, and submit functionality"&lt;/li&gt;
&lt;li&gt;Agent creates an implementation plan:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   Goal: Build a functional contact form

   Tech Stack:
   - HTML5 for structure
   - CSS3 for styling
   - Vanilla JavaScript for validation
   - FormSubmit.co for backend handling

   Steps:
   1. Create contact.html with semantic form structure
   2. Implement validation for required fields and email format
   3. Add CSS for responsive design
   4. Include client-side validation with clear error messages
   5. Set up form submission handling
   6. Test across different screen sizes

   Files to create:
   - contact.html
   - contact.css
   - contact.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;You review the plan, notice it's using an external service, comment: "Actually, let's handle the form submission ourselves with a simple PHP backend"&lt;/li&gt;
&lt;li&gt;Agent updates the plan to include a PHP handler&lt;/li&gt;
&lt;li&gt;You approve&lt;/li&gt;
&lt;li&gt;Agent implements everything according to the revised plan&lt;/li&gt;
&lt;li&gt;Agent generates a walkthrough showing what was built and how to test it&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Total time: ~5-10 minutes, most of which is execution&lt;br&gt;
Your involvement: Reading plan, commenting, approving&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fast Mode Approach:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You submit: "Create a contact form with name, email, message fields, and submit functionality"&lt;/li&gt;
&lt;li&gt;Agent immediately creates the form with sensible defaults&lt;/li&gt;
&lt;li&gt;You see the result, realize you wanted it styled differently&lt;/li&gt;
&lt;li&gt;You request: "Make it look more modern with better spacing"&lt;/li&gt;
&lt;li&gt;Agent updates the CSS&lt;/li&gt;
&lt;li&gt;You notice validation is missing&lt;/li&gt;
&lt;li&gt;You request: "Add form validation"&lt;/li&gt;
&lt;li&gt;Agent adds validation&lt;/li&gt;
&lt;li&gt;You realize you need a backend&lt;/li&gt;
&lt;li&gt;You request: "Add a PHP handler for form submission"&lt;/li&gt;
&lt;li&gt;Agent creates the handler&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Total time: Similar overall, but broken into many small requests&lt;br&gt;
Your involvement: Constant back-and-forth adjustments&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Difference:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Planning mode gave you visibility and control upfront, leading to a more coherent result in one go. Fast mode required iteration to arrive at the same place.&lt;/p&gt;

&lt;p&gt;For a task like this, Planning mode is better. But if you just wanted to add one field to an existing form? Fast mode wins every time.&lt;/p&gt;


&lt;h2&gt;
  
  
  Switching Between Modes: When to Change Your Approach 🔀
&lt;/h2&gt;

&lt;p&gt;Here's something important: you're not locked into one mode for your entire session. You can (and should) switch based on the task at hand.&lt;/p&gt;
&lt;h3&gt;
  
  
  How to Switch Modes
&lt;/h3&gt;

&lt;p&gt;It's simple. In the agent panel, you'll see a toggle between "Planning" and "Fast" modes. Click the one you want, or use the keyboard shortcut &lt;strong&gt;Cmd/Ctrl + .&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The current mode is always displayed in the chat interface, usually in the lower left of the input box.&lt;/p&gt;
&lt;h3&gt;
  
  
  Strategic Mode Switching
&lt;/h3&gt;

&lt;p&gt;Here's how experienced Antigravity users flow between modes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start Big, Then Get Small&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use Planning mode to build the initial feature or system, then switch to Fast mode for tweaks and refinements:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Planning: "Build a blog system with posts, comments, and user authentication"&lt;/li&gt;
&lt;li&gt;[Implementation happens]&lt;/li&gt;
&lt;li&gt;Fast: "Make the comment form slightly wider"&lt;/li&gt;
&lt;li&gt;Fast: "Add a character count to the comment field"&lt;/li&gt;
&lt;li&gt;Fast: "Change the submit button text to 'Post Comment'"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Use Planning for Unknowns, Fast for Knowns&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you're unsure of the best approach, use Planning to get the agent's thoughts. Once the pattern is established, use Fast for similar tasks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Planning: "Create a reusable card component with image, title, and description"&lt;/li&gt;
&lt;li&gt;[Review plan, approve, implementation happens]&lt;/li&gt;
&lt;li&gt;Fast: "Create another card component for product listings using the same pattern"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Complex Then Simple&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After completing a complex task in Planning mode, use Fast mode to handle the inevitable small issues:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Planning: "Refactor the API layer to use async/await throughout"&lt;/li&gt;
&lt;li&gt;[Implementation happens]&lt;/li&gt;
&lt;li&gt;Fast: "Fix the error handling in the /users endpoint we just refactored"&lt;/li&gt;
&lt;li&gt;Fast: "Add a TODO comment about the deprecated method we're still using"&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  When Work in Progress, Mode Sticks
&lt;/h3&gt;

&lt;p&gt;Important note: if you switch modes while a task is running, the current task continues in its original mode. The mode switch only affects &lt;em&gt;new&lt;/em&gt; tasks.&lt;/p&gt;

&lt;p&gt;So if you start a complex task in Planning mode, then realize you want to make a quick fix and switch to Fast mode, the Planning task will continue with its plan-based approach while new requests use Fast mode.&lt;/p&gt;


&lt;h2&gt;
  
  
  Advanced Tips: Getting More from Both Modes 🚀
&lt;/h2&gt;

&lt;p&gt;Now that you understand the basics, here are some advanced techniques:&lt;/p&gt;
&lt;h3&gt;
  
  
  For Planning Mode:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Use Sub-Plans for Massive Projects&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For truly large projects, break them into phases and use Planning mode for each phase:&lt;/p&gt;

&lt;p&gt;Phase 1 Planning: "Plan the database schema and authentication system"&lt;br&gt;
Phase 2 Planning: "Plan the API endpoints based on the schema we just created"&lt;br&gt;
Phase 3 Planning: "Plan the frontend components consuming the API"&lt;/p&gt;

&lt;p&gt;This keeps plans focused and manageable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Combine with Knowledge Items&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Antigravity's Knowledge Items system captures important patterns and decisions. In Planning mode, reference these:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Create a new API endpoint following the patterns in Knowledge Item #12"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The plan will incorporate your established patterns automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ask for Multiple Approaches&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can request the agent to propose different strategies:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Create a plan for the image upload feature, but give me two different approaches: one optimized for performance, one optimized for simplicity"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then pick the approach you prefer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Plans as Documentation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Save the implementation plans as project documentation. They serve as a record of architectural decisions and can help future contributors understand why things were built a certain way.&lt;/p&gt;
&lt;h3&gt;
  
  
  For Fast Mode:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Chain Simple Tasks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While I said not to chain too many, you &lt;em&gt;can&lt;/em&gt; chain a few simple, related tasks efficiently:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Add a loading spinner" → [done] → "Make it blue" → [done] → "Position it in the center"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Three Fast mode requests in quick succession can be faster than one Planning mode task for these micro-adjustments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use It for Code Exploration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fast mode excels at helping you understand code:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Add console.log statements showing the data flow through this function"&lt;/p&gt;

&lt;p&gt;"Add comments explaining each regex group in this pattern"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These exploratory tasks don't need planning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rapid Prototyping Loop&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When experimenting with UI/UX:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Try a card-based layout" → [see result] → "Actually, try a list layout" → [see result] → "Go back to cards but make them smaller"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fast mode's immediacy supports this exploratory workflow.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Mental Model: Choosing Between Modes 🧠
&lt;/h2&gt;

&lt;p&gt;After all this information, you might still wonder: "How do I actually decide in the moment?"&lt;/p&gt;

&lt;p&gt;Here's the mental model I use:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ask yourself:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;"If this goes wrong, how bad is it?"&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High stakes → Planning mode&lt;/li&gt;
&lt;li&gt;Low stakes → Fast mode&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;"Do I know exactly what I want?"&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Yes → Fast mode&lt;/li&gt;
&lt;li&gt;No, I need to see options → Planning mode&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;"How many files will this touch?"&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1-2 files → Fast mode&lt;/li&gt;
&lt;li&gt;3+ files → Planning mode&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;"Will I learn something from seeing the plan?"&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Yes → Planning mode&lt;/li&gt;
&lt;li&gt;No → Fast mode&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;"Is this part of a bigger workflow?"&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Yes, it's the foundation → Planning mode&lt;/li&gt;
&lt;li&gt;No, it's a quick fix → Fast mode&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you answer "Planning mode" to 2 or more of these questions, use Planning mode. Otherwise, Fast mode is probably fine.&lt;/p&gt;


&lt;h2&gt;
  
  
  Real-World Examples from My Experience 💼
&lt;/h2&gt;

&lt;p&gt;Let me share some concrete examples from my own Antigravity usage:&lt;/p&gt;
&lt;h3&gt;
  
  
  Example 1: Refactoring Easy Kit Utils (Planning Mode)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task:&lt;/strong&gt; Modernize the entire utility library&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Planning:&lt;/strong&gt; Multi-file changes, needed consistency, wanted to review approach first&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; The agent created a comprehensive plan showing how it would refactor each utility category, update tests, and maintain backward compatibility. I reviewed it, suggested using specific ES6 features, and the execution was smooth.&lt;/p&gt;
&lt;h3&gt;
  
  
  Example 2: Fixing a Typo in Documentation (Fast Mode)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task:&lt;/strong&gt; Correct a misspelling in README&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Fast:&lt;/strong&gt; Trivial change, obvious solution, not worth planning&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; Done in 5 seconds. No overhead needed.&lt;/p&gt;
&lt;h3&gt;
  
  
  Example 3: Adding a New Feature (Planning Mode → Fast Mode)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task:&lt;/strong&gt; Add user profile functionality&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Planning first:&lt;/strong&gt; Complex feature with multiple components&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; Used Planning for the initial implementation (profile page, data storage, API endpoints). Then used Fast mode for tweaks like "add a character limit to the bio field" and "make the avatar circular instead of square."&lt;/p&gt;
&lt;h3&gt;
  
  
  Example 4: Debugging (Fast Mode)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task:&lt;/strong&gt; Figure out why a function isn't working&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Fast:&lt;/strong&gt; Exploratory, trying different things quickly&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; "Add logging to this function" → "Add error handling" → "Try calling it with different parameters",  Fast mode's immediacy helped iterate quickly.&lt;/p&gt;
&lt;h3&gt;
  
  
  Example 5: Learning a New Framework (Planning Mode)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task:&lt;/strong&gt; Build a component in a framework I'm not familiar with&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Planning:&lt;/strong&gt; Wanted to see best practices before code was written&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; The plan showed me the framework patterns and conventions. I learned from the plan, made suggestions to align with project structure, then approved and watched the implementation to learn more.&lt;/p&gt;


&lt;h2&gt;
  
  
  Common Questions and Misconceptions 🤷
&lt;/h2&gt;

&lt;p&gt;Let me address some frequent confusion I've seen:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: "Is Planning mode slower?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A: Yes and no. The planning phase adds time upfront, but often saves time overall by avoiding missteps and rework. For complex tasks, Planning mode can be faster end-to-end.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: "Can I edit the plan before execution?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A: Yes! Use inline comments to request changes. The agent will update the plan based on your feedback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: "Does Fast mode mean lower quality?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A: Not necessarily. It means less deliberation, but for simple tasks, the quality is identical. For complex tasks, yes, Planning mode tends to produce better results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: "What if I start in the wrong mode?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A: You can cancel the current task and restart in a different mode, or just let it finish and switch modes for the next task.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: "Does the agent 'remember' between modes?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A: Yes, the conversation context persists. You can use Planning for one task, Fast for the next, and the agent knows what happened previously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: "Why would I ever use Planning mode if Fast is quicker?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A: Because "quick" isn't always "best." Complex tasks need deliberation, oversight, and structured thinking, exactly what Planning provides.&lt;/p&gt;


&lt;h2&gt;
  
  
  What I Want to Hear From You 💬
&lt;/h2&gt;

&lt;p&gt;Alright, now it's your turn! I've shared my experiences and understanding of Planning vs Fast modes, but I know I'm not the only one experimenting with Antigravity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you've used either or both modes, I want to hear from you:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which mode do you find yourself using more often?&lt;/li&gt;
&lt;li&gt;Have you discovered use cases where one mode clearly outperforms the other?&lt;/li&gt;
&lt;li&gt;What's your decision-making process for choosing between modes?&lt;/li&gt;
&lt;li&gt;Have you found any gotchas or unexpected behaviors?&lt;/li&gt;
&lt;li&gt;Do you have tips or workflows that leverage both modes effectively?&lt;/li&gt;
&lt;li&gt;How do these modes compare to other AI IDEs you've used?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If you're new to Antigravity and considering trying it:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What questions do you have about these modes?&lt;/li&gt;
&lt;li&gt;What kinds of tasks are you hoping to use it for?&lt;/li&gt;
&lt;li&gt;Does the Planning vs Fast distinction make sense, or is it confusing?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Drop a comment below!&lt;/strong&gt; Your experiences help everyone learn faster. Plus, I'm genuinely curious if my mental models align with how others use these tools, or if I'm missing something.&lt;/p&gt;

&lt;p&gt;The community's collective wisdom is how we all get better at this new paradigm of development.&lt;/p&gt;


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

&lt;p&gt;Google Antigravity's dual-mode approach, Planning and Fast, represents a thoughtful design decision. Rather than forcing everyone into a single workflow, it acknowledges that different tasks require different levels of deliberation.&lt;/p&gt;

&lt;p&gt;Planning mode is for when you want to understand the plan before execution, when complexity demands structure, when you're learning, or when stakes are high. It's the architect mode.&lt;/p&gt;

&lt;p&gt;Fast mode is for when you know what you want, when the solution is obvious, when you're iterating rapidly, or when overhead would be counterproductive. It's the builder mode.&lt;/p&gt;

&lt;p&gt;Neither mode is inherently superior. The skill is knowing which to use when.&lt;/p&gt;

&lt;p&gt;As I've worked with Antigravity, I've found that my mode selection has become more intuitive. I don't consciously run through a checklist anymore, I just &lt;em&gt;feel&lt;/em&gt; which mode fits the task. That comes with practice.&lt;/p&gt;

&lt;p&gt;My advice? Start with Planning mode for most things as you learn Antigravity. The plans teach you how the agent thinks. As you get comfortable, you'll naturally start using Fast mode more for the simple stuff.&lt;/p&gt;

&lt;p&gt;And remember: you can always switch modes mid-session. If you realize you chose wrong, just switch and move on. It's a tool, not a commitment.&lt;/p&gt;

&lt;p&gt;The future of development is agentic, and interfaces like Planning vs Fast modes are how we'll navigate this new paradigm. Learning to use them effectively is an investment in your future productivity.&lt;/p&gt;

&lt;p&gt;So experiment, break things, try both modes extensively, and find the workflow that fits your style.&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>antigravity</category>
      <category>google</category>
    </item>
  </channel>
</rss>
