<?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: Jessica Rudd</title>
    <description>The latest articles on DEV Community by Jessica Rudd (@funsize_engineer).</description>
    <link>https://dev.to/funsize_engineer</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3707183%2F31e35361-b4f2-4b32-a5d3-43b6eb54a516.jpeg</url>
      <title>DEV Community: Jessica Rudd</title>
      <link>https://dev.to/funsize_engineer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/funsize_engineer"/>
    <language>en</language>
    <item>
      <title>Automating My GDE Life: From Manual Entry to One-Click Submission</title>
      <dc:creator>Jessica Rudd</dc:creator>
      <pubDate>Thu, 23 Apr 2026 13:16:15 +0000</pubDate>
      <link>https://dev.to/funsize_engineer/automating-my-gde-life-from-manual-entry-to-one-click-submission-548a</link>
      <guid>https://dev.to/funsize_engineer/automating-my-gde-life-from-manual-entry-to-one-click-submission-548a</guid>
      <description>&lt;h3&gt;
  
  
  &lt;strong&gt;By Jessica Rudd (Co-written &amp;amp; Automated by Antigravity)&lt;/strong&gt;
&lt;/h3&gt;

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

&lt;p&gt;As a Google Developer Expert (GDE), reporting activities is a crucial part of the program. Whether it’s writing articles, speaking at conferences, or mentoring, documentation ensures our impact is recognized. But let’s be honest: manual data entry is a chore.&lt;/p&gt;

&lt;p&gt;Last week, during a rapid prototyping session for &lt;strong&gt;Folio&lt;/strong&gt; , I decided to solve this. Using &lt;strong&gt;Antigravity&lt;/strong&gt; (my AI pair-programmer) and a brilliant MCP server by &lt;strong&gt;Carlos Azaustre&lt;/strong&gt; , I built a “Skill” that automates the whole process.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Problem: The Reporting Gap&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Every time I publish a post on Substack or share it on LinkedIn, I have to manually copy-paste view counts, likes, and links into the Advocu portal. It’s a minor friction point that adds up.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Solution: Model Context Protocol (MCP)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The breakthrough came from leveraging the &lt;strong&gt;Model Context Protocol&lt;/strong&gt;. I installed the &lt;a href="https://github.com/carlosazaustre/advocu-mcp-server" rel="noopener noreferrer"&gt;advocu-mcp-server&lt;/a&gt; created by Carlos Azaustre. This bridge allows an AI agent to communicate directly with the Advocu API.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Building the Scraper&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Antigravity and I developed a Python skill that uses &lt;strong&gt;Playwright&lt;/strong&gt; to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to my Substack stats page.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Search LinkedIn for the article’s URL to find engagement (reactions and reposts).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. The Advocu Handshake&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Once the metrics are gathered, the script calls the &lt;code&gt;submit_gde_content_creation&lt;/code&gt; tool. It maps the data to official GDE categories like &lt;a href="https://cloud.google.com/?utm_campaign=deveco_gdemembers&amp;amp;utm_source=deveco" rel="noopener noreferrer"&gt;Google Cloud&lt;/a&gt; and &lt;a href="https://deepmind.google/technologies/gemini/?utm_campaign=deveco_gdemembers&amp;amp;utm_source=deveco" rel="noopener noreferrer"&gt;Gemini&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpod2nk6127ehm4g9qilg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpod2nk6127ehm4g9qilg.png" width="800" height="516"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Above: A snippet of the Python skill orchestrating the metrics collection.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Result: One-Click Submission&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I tested it live on my recent post, &lt;em&gt;“Zero to V1: Rapid Prototyping with Gemini”&lt;/em&gt;. Within seconds, the skill gathered the stats (46 views on Substack, several reactions on LinkedIn) and successfully created the activity draft in Advocu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcokbb40p5rwi83k0jhfn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcokbb40p5rwi83k0jhfn.png" width="800" height="516"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Terminal output showing the successful API submission ID.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why This Matters&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Automation isn’t just about saving time; it’s about accuracy and consistency. By integrating our developer tools with program management APIs, we can spend more time building and less time filling out forms.&lt;/p&gt;

&lt;p&gt;Special thanks again to &lt;strong&gt;&lt;a href="https://www.linkedin.com/in/carlosazaustre/" rel="noopener noreferrer"&gt;Carlos Azaustre&lt;/a&gt;&lt;/strong&gt; for the open-source MCP server that made this possible.&lt;/p&gt;

&lt;p&gt;If you’re a GDE or MVP looking to automate your workflow, I highly recommend checking out the &lt;a href="https://developers.google.com/experts?utm_campaign=deveco_gdemembers&amp;amp;utm_source=deveco" rel="noopener noreferrer"&gt;Google Developers Experts&lt;/a&gt; program resources and the growing ecosystem of MCP servers.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags&lt;/strong&gt; : #codeinpublic #automation #gde #GoogleCloud #Gemini&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was drafted using the help of a custom Antigravity Substack Automator Skill.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading Data Bytes! Subscribe for free to receive new posts and support my work.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>google</category>
      <category>mcp</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Folio: Reclaiming Social Sharing with Intention</title>
      <dc:creator>Jessica Rudd</dc:creator>
      <pubDate>Tue, 21 Apr 2026 13:15:49 +0000</pubDate>
      <link>https://dev.to/gde/folio-reclaiming-social-sharing-with-intention-8ff</link>
      <guid>https://dev.to/gde/folio-reclaiming-social-sharing-with-intention-8ff</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foidgil5kb8fz731buml5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foidgil5kb8fz731buml5.png" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the age of infinite scrolls, vanity metrics, and algorithm-driven fatigue, the simple act of sharing a memory has become... complicated. We’ve all felt it: the pressure to perform for an audience of thousands when all you really wanted was to show a few close friends that beautiful sunset from last Tuesday.&lt;/p&gt;

&lt;p&gt;Today, we are thrilled to announce the &lt;strong&gt;Folio&lt;/strong&gt; beta release—our answer to social media for people who genuinely hate social media.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem with “Social”
&lt;/h2&gt;

&lt;p&gt;Traditional social platforms are built on a foundation of attention extraction. They need you to stay on the app, so they show you what triggers you. They need you to “engage,” so they quantify your friendships with likes and view counts. In this race for engagement, the intimacy of sharing is often the first casualty.&lt;/p&gt;

&lt;p&gt;Folio was born from a different philosophy. We believe that photo sharing should be &lt;strong&gt;intentional, private, and aesthetic.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A Sanctuary for Your Memories
&lt;/h2&gt;

&lt;p&gt;Folio isn’t a “feed.” It’s a curation ecosystem. When you create a collection in Folio, you aren’t shouting into a void; you are carefully arranging a digital postcard of your life.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Privacy by Design, Not by Accident&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;At the heart of our Beta release is a granular privacy-first architecture. We’ve moved away from the “all or nothing” model of privacy. With Folio, you have total control over who sees what, at a glance.&lt;/p&gt;

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

&lt;p&gt;Our visibility engine offers three distinct tiers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Public&lt;/strong&gt; : For when you want to showcase your curated world to everyone.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Curators&lt;/strong&gt; : A middle ground for those you trust—your inner circle of fellow creators.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Private&lt;/strong&gt; : For your eyes only, or for hyper-specific token-based sharing.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There are no public vanity metrics. While we’ve included likes and comments to maintain the warmth of social connection, they are built on a foundation of &lt;strong&gt;consent and control&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Shared Context Only&lt;/strong&gt; : Interaction is limited to those you’ve explicitly shared your collection with. No shouting into the void, no random trolls—just the people you invited.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Toggle Features&lt;/strong&gt; : You have the ultimate power to turn off likes, comments, or both for any collection, ensuring that the focus remains exactly where you want it: on the curation itself.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No Global Counts&lt;/strong&gt; : Your worth isn’t quantified by a “follower” count on a profile.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How it Works: The Digital Postcard
&lt;/h2&gt;

&lt;p&gt;We’ve reimagined the concept of a social post as a &lt;strong&gt;Digital Postcard&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Physicality in Digital Form&lt;/strong&gt; : Each collection feels like a tangible object. You can add unique stamps, integrate music that captures the mood, and even include a “guest pass” for temporary access to private galleries.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Intentional Interaction&lt;/strong&gt; : Sharing a Folio collection requires an action. You aren’t just popping up in a feed; you are inviting someone into a space you’ve curated.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Beta: What to Expect
&lt;/h2&gt;

&lt;p&gt;The Beta release marks our first step into the wild. We’ve polished the core experience—the Creator Studio, the profile management, and the high-speed image delivery—to ensure that the act of curation is as joyful as the memories themselves.&lt;/p&gt;

&lt;p&gt;We are keeping things small for now. Folio is currently &lt;strong&gt;Invitation-Only&lt;/strong&gt;. We want to grow a community of curators who value the same things we do: quality over quantity, and connection over content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Join the Waitlist
&lt;/h2&gt;

&lt;p&gt;We are slowly opening the gates to new curators. If you’re tired of the noise and ready for a more intentional way to share your world, we’d love to have you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://curateyourfolio.com/" rel="noopener noreferrer"&gt;Join the Folio Beta Waitlist&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Get early access, influence the product roadmap, and be the first to know about new feature updates as we build the future of private social sharing.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Welcome to the intentional side of the web.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;— &lt;strong&gt;Jessica Rudd ‘Fun Size’&lt;/strong&gt; , Chief Folio Curator&lt;/p&gt;

&lt;p&gt;Thanks for reading Data Bytes! Subscribe for free to receive new posts and support my work.&lt;/p&gt;

</description>
      <category>mentalhealth</category>
      <category>privacy</category>
      <category>showdev</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>Zero to V1</title>
      <dc:creator>Jessica Rudd</dc:creator>
      <pubDate>Mon, 06 Apr 2026 12:03:17 +0000</pubDate>
      <link>https://dev.to/gde/zero-to-v1-26c4</link>
      <guid>https://dev.to/gde/zero-to-v1-26c4</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fntp06ofnhje8vlx63wb6.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fntp06ofnhje8vlx63wb6.jpeg" alt="A high-tech, futuristic infographic titled " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We’ve all been there: a great app idea strikes while you’re mid-commute, but the gap between “cool idea” and “working prototype” often feels like an insurmountable wall of boilerplate and UI design.&lt;/p&gt;

&lt;p&gt;In this “Data Byte,” we’re breaking down a high-speed workflow that turns scattered notes into a functional V1 in minutes. We’re building &lt;strong&gt;Folio&lt;/strong&gt; —a privacy-first social app for digital postcards—using the new agentic trifecta: &lt;strong&gt;AI Studio&lt;/strong&gt; , &lt;strong&gt;Stitch&lt;/strong&gt; , and &lt;strong&gt;Antigravity&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: The Blueprint with Gemini 3 Flash
&lt;/h3&gt;

&lt;p&gt;Every project starts with a spark. I use Apple Notes and Siri to capture my scattered thoughts, but the real magic begins in &lt;a href="https://aistudio.google.com/app?utm_campaign=deveco_gdemembers&amp;amp;utm_source=deveco" rel="noopener noreferrer"&gt;Google AI Studio&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8cmoxwbhzeivjfqv6gev.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8cmoxwbhzeivjfqv6gev.jpeg" alt="A screenshot of the Google AI Studio " width="800" height="738"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I fed my raw notes into &lt;strong&gt;Gemini 3 Flash&lt;/strong&gt;. Because Flash is optimized for speed and high-volume reasoning, it’s the perfect engine to distill messy ideas into structured prompts. I asked it for two specific outputs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;A &lt;strong&gt;Stitch&lt;/strong&gt; design prompt to define the visual “vibe.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An &lt;strong&gt;Antigravity&lt;/strong&gt; implementation prompt to handle the technical build.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21RWU7%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F327759cb-7890-4684-83dd-096d6cb2a65c_1330x1227.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21RWU7%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F327759cb-7890-4684-83dd-096d6cb2a65c_1330x1227.jpeg" title="Click " alt="A screenshot of the Google AI Studio " width="800" height="738"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Zer3%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F5b3ecd55-4908-433e-9a6c-6a7f85088bf6_1330x1227.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Zer3%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F5b3ecd55-4908-433e-9a6c-6a7f85088bf6_1330x1227.jpeg" title="Copy Prompt 1 for Stitch" alt="Copy Prompt 1 for Stitch" width="800" height="738"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Leveraging Gemini 3 Flash in AI Studio to generate development prompts.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: “Vibe Designing” in Stitch (Gemini 3.1 Pro)
&lt;/h3&gt;

&lt;p&gt;Next, I headed to &lt;a href="https://stitch.withgoogle.com/?utm_campaign=deveco_gdemembers&amp;amp;utm_source=deveco" rel="noopener noreferrer"&gt;Stitch&lt;/a&gt; to bring Folio’s “Premium Editorial” aesthetic to life.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21lLVC%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F03b0db7b-9554-45cd-9644-8f8c9dedebc3_1257x791.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21lLVC%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F03b0db7b-9554-45cd-9644-8f8c9dedebc3_1257x791.jpeg" title="Paste prompt 1 into the prompt window" alt="Paste prompt 1 into the prompt window" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using &lt;strong&gt;Gemini 3.1 Pro&lt;/strong&gt; within Stitch, I pasted the first prompt. Within seconds, it generated a gorgeous creator dashboard and a mobile-optimized gallery. The “vibe design” approach is a game-changer—you can iterate in plain English. I simply asked for a messaging feature, and 3.1 Pro updated the entire design system to include a refined chat interface.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21rY5A%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc55dc556-b905-4d78-a1d1-e921f437d8f9_1330x1227.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21rY5A%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc55dc556-b905-4d78-a1d1-e921f437d8f9_1330x1227.jpeg" title="Make changes or create new designs" alt="Make changes or create new designs" width="800" height="738"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Paste your prompt, make changes, add designs&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21FnSE%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3e899c4b-c658-46ac-9242-81de703b4858_1330x1227.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21FnSE%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3e899c4b-c658-46ac-9242-81de703b4858_1330x1227.jpeg" title="Watch Stitch add/update the design mockup" alt="Watch Stitch add/update the design mockup" width="800" height="738"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Adding comprehensive messaging and chat interfaces in Stitch..&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Zero-Boilerplate Build in Antigravity (Gemini 3.1 Pro)
&lt;/h3&gt;

&lt;p&gt;With the design locked, it was time to move to &lt;strong&gt;Antigravity&lt;/strong&gt; , Google’s agentic IDE.&lt;/p&gt;

&lt;p&gt;I opened the &lt;strong&gt;Agent Manager&lt;/strong&gt; and pasted the second prompt.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%218t9i%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F34ad2f12-e7c7-44c5-8df6-1eca8a485992_1673x969.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%218t9i%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F34ad2f12-e7c7-44c5-8df6-1eca8a485992_1673x969.webp" title="Create a new workspace in the Antigravity agent manager and paste prompt 2 from AI Studio." alt="Create a new workspace in the Antigravity agent manager and paste prompt 2 from AI Studio." width="800" height="463"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Create a new workspace in the Antigravity agent manager and paste prompt 2 from AI Studio.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Using &lt;strong&gt;Gemini 3.1 Pro&lt;/strong&gt; , the agent analyzed the design from Stitch and drafted a full implementation plan. It automatically handled:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Scaffolding a &lt;a href="https://nextjs.org/" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integrating &lt;a href="https://firebase.google.com/docs?utm_campaign=deveco_gdemembers&amp;amp;utm_source=deveco" rel="noopener noreferrer"&gt;Firebase Auth&lt;/a&gt; for secure logins.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setting up &lt;a href="https://firebase.google.com/docs/firestore?utm_campaign=deveco_gdemembers&amp;amp;utm_source=deveco" rel="noopener noreferrer"&gt;Firestore&lt;/a&gt; for postcard storage.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ySLf%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F4cb0163a-eaf7-4b86-8d59-48f1a4b6c678_1552x1012.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ySLf%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F4cb0163a-eaf7-4b86-8d59-48f1a4b6c678_1552x1012.webp" title="Agent Manager will first write an implementation plan. After you review the plan and make changes if needed, Antigravity will start the implementation in the code editor." alt="Agent Manager will first write an implementation plan. After you review the plan and make changes if needed, Antigravity will start the implementation in the code editor." width="800" height="521"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Antigravity’s Agent Manager mapping the design to a Next.js architecture.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Within minutes, the agent finished the heavy lifting, and the app was running on localhost.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21AqjS%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc3f5058e-72a1-4c03-af14-6dd0213dfc86_1821x1426.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21AqjS%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc3f5058e-72a1-4c03-af14-6dd0213dfc86_1821x1426.webp" title="Step" alt="Step" width="800" height="626"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Tj11%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fed314d95-b899-42e8-999a-a54b9380a2b4_1821x1426.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Tj11%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fed314d95-b899-42e8-999a-a54b9380a2b4_1821x1426.webp" title="Step" alt="Step" width="800" height="626"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21gQWO%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F768a5fbc-a8e8-4e42-a54b-b7e8388c1361_1821x1426.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21gQWO%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F768a5fbc-a8e8-4e42-a54b-b7e8388c1361_1821x1426.webp" title="Step" alt="Step" width="800" height="626"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Success! The functional V1 of Folio is live on localhost.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Takeaway
&lt;/h3&gt;

&lt;p&gt;By offloading prompt engineering to &lt;strong&gt;Gemini 3 Flash&lt;/strong&gt; and the complex execution to &lt;strong&gt;Gemini 3.1 Pro&lt;/strong&gt; , the path from idea to execution is now a straight line. By the time I finished my morning coffee, Folio was a working application ready for its first users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s next?&lt;/strong&gt; I’ll be using the &lt;a href="https://console.firebase.google.com/?utm_campaign=deveco_gdemembers&amp;amp;utm_source=deveco" rel="noopener noreferrer"&gt;Firebase Console&lt;/a&gt; and &lt;a href="https://console.cloud.google.com/home/dashboard?utm_campaign=deveco_gdemembers&amp;amp;utm_source=deveco" rel="noopener noreferrer"&gt;Google Cloud&lt;/a&gt; to move this from localhost to the world.&lt;/p&gt;

&lt;p&gt;Stay tuned for the next byte!&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>gemini</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Building funsize-engineer</title>
      <dc:creator>Jessica Rudd</dc:creator>
      <pubDate>Tue, 20 Jan 2026 22:13:31 +0000</pubDate>
      <link>https://dev.to/gde/building-funsize-engineer-3k18</link>
      <guid>https://dev.to/gde/building-funsize-engineer-3k18</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In the modern software landscape, the barrier between an idea and a deployable artifact is often the friction of boilerplate and configuration. This post documents the creation of funsize-engineer, a Python package designed to serve as my terminal-based “business card”. Inspired by David Neal’s npm calling card, I wanted to create a Python equivalent that could be easily distributed and run via PyPI.The goal was simple: create a distributable Python package that, when run, displays professional contact information and ASCII art in a visually appealing format. However, the method of creation was novel. Instead of writing every line of code manually, I utilized Google Antigravity, an agentic coding platform. This article demonstrates how the “Agent-First” development paradigm shifts the engineer’s role from typist to architect, focusing on task orchestration and verification rather than syntax.&lt;/p&gt;

&lt;h2&gt;
  
  
  Antigravity Core Functionality
&lt;/h2&gt;

&lt;p&gt;Antigravity operates on a fundamental shift in the developer-tool relationship. It is not merely an autocomplete engine; it is an autonomous agent capable of executing complex, multi-step tasks.&lt;/p&gt;

&lt;p&gt;Two core components enable this workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The Manager View&lt;/strong&gt;: Unlike a standard chat interface, Antigravity maintains a structured “Manager View” of the project. It tracks high-level objectives, breaks them down into sub-tasks (e.g., “Scaffold Repository”, “Implement Core Logic”, “Configure CI/CD”), and maintains context across the entire development lifecycle. This allows the agent to “remember” architectural decisions made in step one while executing step ten.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Artifact-Driven Workflow&lt;/strong&gt;: The agent does not just stream code into a void. It generates Artifacts—structured documents like Implementation Plans, Task Lists, and Code Diffs. These artifacts serve as checkpoints. The agent proposes a plan, the engineer reviews and approves it, and only then does the agent execute. This “Human-in-the-Loop” model ensures that autonomy does not come at the cost of control. &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Package Creation Workflow
&lt;/h2&gt;

&lt;p&gt;The development of funsize-engineer followed a structured lifecycle, orchestrated by the agent.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 1: Planning and Scaffolding
&lt;/h3&gt;

&lt;p&gt;The project began with a high-level directive. The agent analyzed the requirements—a Python package, rich library for UI, and PyPI distribution—and generated an implementation plan. It then scaffolded the directory structure, creating pyproject.toml for modern standards-compliant packaging and setting up the initial git repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 2: Core Logic Development
&lt;/h3&gt;

&lt;p&gt;With the foundation in place, the agent implemented the core functionality in funsize_engineer/card.py. It utilized the rich library to create a grid layout, integrating ASCII art loaded from an asset file and styling the text with specific color tokens (e.g., #8A2BE2 for branding).&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 3: CI/CD and Versioning
&lt;/h3&gt;

&lt;p&gt;The most complex phase involved automating the release process. The agent configured GitHub Actions workflows to handle dual publishing streams:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;TestPyPI&lt;/strong&gt;: For development snapshots from the develop branch.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PyPI&lt;/strong&gt;: For stable releases from the main branch.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Agentic Artifact Review: Validating the Workflow
&lt;/h2&gt;

&lt;p&gt;A critical moment in the project was the configuration of the CI/CD pipeline. The agent proposed a GitHub Actions workflow to automate publishing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Initial Plan Artifact (Excerpt):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Task: Configure GitHub Actions for PyPI publishing.&lt;/li&gt;
&lt;li&gt;Action: Create .github/workflows/publish.yml.&lt;/li&gt;
&lt;li&gt;Developer Review: Required.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Code Diff (Excerpt):&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;This artifact allowed the developer to verify that the workflow was correctly targeting both branches and, crucially, that fetch-depth: 0 was included to ensure setuptools-scm could correctly calculate versions from git tags.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting and Iteration
&lt;/h2&gt;

&lt;p&gt;No development process is without friction. We encountered two significant technical hurdles that required agentic problem-solving.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The “Dev Version” Trap
&lt;/h3&gt;

&lt;p&gt;During the setup of the automated versioning, we encountered an issue where releases from the main branch were being tagged with “dev” suffixes (e.g., 0.2.11.dev0) instead of clean release versions, despite having a correct git tag (e.g., v0.2.11).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Issue&lt;/strong&gt;: setuptools-scm calculates versions based on the distance from the last tag. In our GitHub Actions workflow, we were creating a tag and then checking it out. However, setuptools-scm saw the commit after the tag (the one triggering the workflow) and assumed it was a “dirty” state, appending a .dev suffix. Additionally, the workflow wasn’t properly stripping the v prefix from tags before passing them to the build system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Resolution&lt;/strong&gt;: The agent diagnosed the issue and implemented a robust fix:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Explicit Versioning&lt;/strong&gt;: Instead of relying on git state, we forced setuptools-scm to use the exact version we wanted by setting the SETUPTOOLS_SCM_PRETEND_VERSION environment variable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefix Handling&lt;/strong&gt;: We added logic to strip the v prefix from git tags (e.g., v0.2.11 -&amp;gt; 0.2.11) to ensure Python package compatibility.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h3&gt;
  
  
  2. Rendering Diagrams on GitHub Pages
&lt;/h3&gt;

&lt;p&gt;We wanted to include a Mermaid.js diagram to visualize the agentic workflow. However, GitHub Pages (via Jekyll) rendered the mermaid code blocks as raw text instead of diagrams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix&lt;/strong&gt;: The agent identified that the default markdown code block syntax ( `&lt;code&gt;mermaid ) wasn’t being processed by the Mermaid JavaScript library. We switched to using raw HTML &amp;lt;pre class=”mermaid”&amp;gt;&lt;/code&gt; tags, which allowed the diagram to render perfectly without requiring complex Jekyll plugins.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Final Code &amp;amp; Output
&lt;/h2&gt;

&lt;p&gt;The result is a lightweight, installable package. The core logic resides in funsize_engineer/card.py, which orchestrates the rich components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Example Code:&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Example Output:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Running pipx run funsize-engineer now renders the following in the terminal:&lt;/p&gt;

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

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

&lt;p&gt;The creation of funsize-engineer highlights the power of the Agent-First methodology. By offloading the implementation details—from directory scaffolding to complex CI/CD scripting—to Antigravity, I was able to focus on the what and why of the product. The result is a professional-grade Python package built in a fraction of the time, with the agent acting not just as a coder, but as a partner in the engineering process.&lt;/p&gt;

</description>
      <category>antigravity</category>
      <category>ai</category>
      <category>gemini</category>
    </item>
  </channel>
</rss>
