<?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: Tiago Ribeiro de Barros</title>
    <description>The latest articles on Forem by Tiago Ribeiro de Barros (@tiagordebarros).</description>
    <link>https://forem.com/tiagordebarros</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%2F959634%2Fdfd278ac-ec1d-4117-87ca-9d785a66bd9c.png</url>
      <title>Forem: Tiago Ribeiro de Barros</title>
      <link>https://forem.com/tiagordebarros</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tiagordebarros"/>
    <language>en</language>
    <item>
      <title>Building Vero: How I Used Super Context with GitHub Copilot CLI to Create a Premium Visual Debugger</title>
      <dc:creator>Tiago Ribeiro de Barros</dc:creator>
      <pubDate>Mon, 16 Feb 2026 06:40:50 +0000</pubDate>
      <link>https://forem.com/tiagordebarros/building-vero-how-i-used-super-context-with-github-copilot-cli-to-create-a-premium-visual-debugger-198g</link>
      <guid>https://forem.com/tiagordebarros/building-vero-how-i-used-super-context-with-github-copilot-cli-to-create-a-premium-visual-debugger-198g</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-01-21"&gt;GitHub Copilot CLI Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;Vero&lt;/strong&gt; (Latin/Italian for &lt;em&gt;Truth&lt;/em&gt;), a beautiful, simple and visual debugger for the modern web ecosystem.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem
&lt;/h3&gt;

&lt;p&gt;We all use &lt;code&gt;console.log&lt;/code&gt;. It's the most used debugging tool in the world, yet it hasn't evolved much visually. Reading logs often feels like staring at a wall of monochrome text.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Solution
&lt;/h3&gt;

&lt;p&gt;Vero is a "Visual Wrapper" for the native console. It doesn't try to reinvent the wheel; it just makes it roll smoother and look better.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero Dependencies:&lt;/strong&gt; The core is tiny (~80KB unzipped) and pure TypeScript.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Isomorphic:&lt;/strong&gt; Runs everywhere JavaScript runs (Deno, Node.js, Bun, Browsers).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual Hierarchy:&lt;/strong&gt; Uses a custom "Diamond" design system with semantic colors (Amethyst, Emerald, Amber) to make logs scanable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive:&lt;/strong&gt; It detects mobile terminals and automatically switches from Table view to Card view.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Polymorphic&lt;/strong&gt;: Same methods as the native console (and other new ones), without breaking the console.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The philosophy was strictly defined before a single line of code was generated: &lt;strong&gt;Core (Minimal) + Plugins + Themes&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;🎥 Video:&lt;/strong&gt; &lt;a href="https://youtu.be/r9H7T-_UTZI" rel="noopener noreferrer"&gt;Demo&lt;/a&gt; &lt;br&gt;
&lt;strong&gt;🔗 Repository:&lt;/strong&gt; &lt;a href="https://github.com/tiagordebarros/vero" rel="noopener noreferrer"&gt;github.com/tiagordebarros/vero&lt;/a&gt; &lt;br&gt;
&lt;strong&gt;📦 JSR Package:&lt;/strong&gt; &lt;a href="https://jsr.io/@tiagordebarros/vero" rel="noopener noreferrer"&gt;jsr.io/@tiagordebarros/vero&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  📸 Visualizing the "Truth"
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Main Features
&lt;/h4&gt;
&lt;h5&gt;
  
  
  Responsive: works on devices with different screen sizes
&lt;/h5&gt;

&lt;p&gt;Log leves - desktop:&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%2Fk2hzthd7l3sgfl59xuit.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%2Fk2hzthd7l3sgfl59xuit.png" alt=" " width="362" height="140"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Log leves - mobile:&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%2F46ac5kfevcrfh1awqrym.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%2F46ac5kfevcrfh1awqrym.png" alt=" " width="459" height="369"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  Tables with many columns become cards on narrow screens
&lt;/h5&gt;

&lt;p&gt;Table viewed on desktop:&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%2Fml8yvtxlazlvlhic4mww.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%2Fml8yvtxlazlvlhic4mww.png" alt=" " width="534" height="252"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The same table viewed as a card on mobile:&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%2Fad84rbtkpix7u23cub3n.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%2Fad84rbtkpix7u23cub3n.png" alt=" " width="471" height="557"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  HTTP methods and statuses receive semantic colors
&lt;/h5&gt;

&lt;p&gt;Table with semantic colors on desktop&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%2Fsi6gi3b5fwxyx6zuv7dj.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%2Fsi6gi3b5fwxyx6zuv7dj.png" alt=" " width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The same table with semantic colors on mobile devices&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%2F99ft2mz6dgene2w3etcd.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%2F99ft2mz6dgene2w3etcd.png" alt=" " width="526" height="282"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  Objects are formatted with better presentation
&lt;/h5&gt;

&lt;p&gt;Objects are presented with “scattered” content, have circular protection, and feature variations in the colors of strings, numbers, booleans, and nulls to facilitate the identification of each value.&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%2Fn94u566wglcdw2izrwjf.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%2Fn94u566wglcdw2izrwjf.png" alt=" " width="506" height="444"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  Timers are designed for immediate identification
&lt;/h5&gt;

&lt;p&gt;The colors and length of the bars clearly define the performance of the times.&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%2Fb00i3psyptpv26i040o0.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%2Fb00i3psyptpv26i040o0.png" alt=" " width="681" height="114"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The mobile version displays timestamps within the card.&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%2Fova0ztgn8uzwgkz6al0f.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%2Fova0ztgn8uzwgkz6al0f.png" alt=" " width="467" height="253"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  Tables do not receive timestamps, so the values in the mobile version are displayed as records.
&lt;/h5&gt;

&lt;p&gt;Beautiful table with curves and semantic colors&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%2Fy1obxv9shr0gq11s9gec.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%2Fy1obxv9shr0gq11s9gec.png" alt=" " width="450" height="121"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example of records in a card generated from a table&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%2Fbkfrjllfnz7jhtbt4ztk.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%2Fbkfrjllfnz7jhtbt4ztk.png" alt=" " width="469" height="242"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;... and many other features!&lt;/p&gt;
&lt;h2&gt;
  
  
  My Experience with GitHub Copilot CLI
&lt;/h2&gt;

&lt;p&gt;When I started this challenge, I had a strict constraint: &lt;strong&gt;very limited time&lt;/strong&gt;. I needed to ship a "Senior Level" open-source library in record time without cutting corners on quality or ethics.&lt;/p&gt;

&lt;p&gt;My strategy wasn't to ask Copilot to "write a debugger". That results in generic code. Instead, I developed a strategy I call &lt;strong&gt;"Super Context Injection"&lt;/strong&gt;. &lt;/p&gt;
&lt;h3&gt;
  
  
  1. The "Spec-First" Strategy
&lt;/h3&gt;

&lt;p&gt;Before opening the CLI, I wrote detailed markdown specifications in a &lt;code&gt;specs/&lt;/code&gt; folder:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;specs/architecture.md&lt;/code&gt;: Defined the "Universal/Isomorphic" requirement.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;specs/brand-identity.md&lt;/code&gt;: Defined the color palette and Unicode glyphs usage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;specs/roadmap.md&lt;/code&gt;: A checklist of features.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  2. The Golden Prompt
&lt;/h3&gt;

&lt;p&gt;I used the &lt;code&gt;@workspace&lt;/code&gt; command in the Copilot CLI to feed this entire context at the start of every session. This transformed the AI from a "Code Generator" into a "Specialized Team Member".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Initialization Prompt:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@workspace /newSession
I am starting the Vero Core development. Please read the specs to align your persona:
1. Architecture: specs/architecture.md
2. Design System: specs/brand-identity.md
3. Contribution Rules: CONTRIBUTING.md

Confirm you understand the "Zero Dependency" rule.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3.Problems along the way
&lt;/h3&gt;

&lt;p&gt;It wasn't easy to create an MVP for Vero in such a short time frame. Without the help of Copilot CLI, it would have been impossible. Just to show you a few images of various errors and tests I had to work through with Copilot:&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%2Fe8bvupoxvbr6mjas0qgc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe8bvupoxvbr6mjas0qgc.jpg" alt=" " width="495" height="716"&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzzx1hjjln33h36p4jwh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzzx1hjjln33h36p4jwh.jpg" alt=" " width="485" height="716"&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc8smnm51kn2t1frre1b3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc8smnm51kn2t1frre1b3.jpg" alt=" " width="502" height="716"&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmikca3opl5jxhjupwye1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmikca3opl5jxhjupwye1.jpg" alt=" " width="305" height="716"&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbwt6ellm8nuqvayz8dyx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbwt6ellm8nuqvayz8dyx.jpg" alt=" " width="495" height="716"&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9q2395ambeko96xi2pg0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9q2395ambeko96xi2pg0.jpg" alt=" " width="800" height="500"&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wwt5pd11bz9vv6ak9ff.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wwt5pd11bz9vv6ak9ff.jpg" alt=" " width="495" height="716"&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F80lovkbmxit916fnffwb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F80lovkbmxit916fnffwb.jpg" alt=" " width="495" height="716"&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu4o51rm9h27wwyy1xwu2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu4o51rm9h27wwyy1xwu2.jpg" alt=" " width="489" height="655"&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fszlmc1duqiz2psph76uo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fszlmc1duqiz2psph76uo.jpg" alt=" " width="482" height="653"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There would be countless mistakes. These were just a taste! I found out about the competition a week ago, and I only had the weekend and a few hours from Monday to Friday. &lt;br&gt;
And with that came many long prompts, even though I had already provided a lot of context. Despite this, the context and detailed information helped to achieve promising results. Human review was just as important. In a way, sometimes Copilot helped me, and sometimes I helped Copilot. We were a team! &lt;/p&gt;

&lt;p&gt;Prompts and more prompts...&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%2Fpd9qskkfslenkfr7vnr8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpd9qskkfslenkfr7vnr8.jpg" alt=" " width="800" height="500"&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5cw5fdj61eeweyx6ok06.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5cw5fdj61eeweyx6ok06.jpg" alt=" " width="800" height="500"&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvcwdiqv11150i9rjwczg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvcwdiqv11150i9rjwczg.jpg" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Automating Governance with &lt;code&gt;.github/copilot-instructions.md&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;This was a game-changer. I created a persistent instruction file that forced the CLI to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Always use &lt;strong&gt;Conventional Commits&lt;/strong&gt; (feat, fix, chore).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Never suggest &lt;code&gt;npm&lt;/code&gt; packages for the Core (enforcing the architecture).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Always use &lt;strong&gt;JSDoc&lt;/strong&gt; with specific tags for the JSR documentation score.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Result? I didn't have to correct the AI's style. It generated production-ready commits like &lt;code&gt;feat: implement responsive table layout&lt;/code&gt; automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. The "Big Refactor"
&lt;/h3&gt;

&lt;p&gt;Midway through, the code became a monolith. I asked the CLI to refactor the project based on the &lt;em&gt;Clean Architecture&lt;/em&gt; concept: dividing "Utils" (generic) from "Helpers" (domain-specific). The CLI understood the nuance and moved files to &lt;code&gt;src/formatting/&lt;/code&gt; and &lt;code&gt;src/core/&lt;/code&gt; flawlessly, respecting imports.&lt;/p&gt;

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

&lt;p&gt;GitHub Copilot CLI didn't just write code; it acted as an &lt;strong&gt;Architectural Guardian&lt;/strong&gt;. By feeding it my "Laws" (Zero Deps, Isomorphism), it prevented me from introducing accidental complexity. Vero is now a robust, maintainable project that feels like it was built by a team of ten, but it was just me and the CLI.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>cli</category>
      <category>githubcopilot</category>
    </item>
  </channel>
</rss>
