<?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>Forem: Jessica Rudd</title>
    <description>The latest articles on Forem by Jessica Rudd (@funsize_engineer).</description>
    <link>https://forem.com/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>Forem: Jessica Rudd</title>
      <link>https://forem.com/funsize_engineer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/funsize_engineer"/>
    <language>en</language>
    <item>
      <title>Zero to V1</title>
      <dc:creator>Jessica Rudd</dc:creator>
      <pubDate>Mon, 06 Apr 2026 12:03:17 +0000</pubDate>
      <link>https://forem.com/gde/zero-to-v1-26c4</link>
      <guid>https://forem.com/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://forem.com/gde/building-funsize-engineer-3k18</link>
      <guid>https://forem.com/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="477"&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="132"&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>
