<?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: Hardik Soni</title>
    <description>The latest articles on DEV Community by Hardik Soni (@hs094).</description>
    <link>https://dev.to/hs094</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%2F742174%2F3aa2f20b-753a-4727-926b-b63e0b22f5c9.jpeg</url>
      <title>DEV Community: Hardik Soni</title>
      <link>https://dev.to/hs094</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hs094"/>
    <language>en</language>
    <item>
      <title>DebugHook: A New Take at Debugging using AI Agents</title>
      <dc:creator>Hardik Soni</dc:creator>
      <pubDate>Mon, 16 Feb 2026 07:57:42 +0000</pubDate>
      <link>https://dev.to/hs094/debughook-a-new-take-at-debugging-using-ai-agents-2jf</link>
      <guid>https://dev.to/hs094/debughook-a-new-take-at-debugging-using-ai-agents-2jf</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;&lt;strong&gt;DebugHook&lt;/strong&gt; is an attempt to add the missing debug mode to terminal agents. When agents run or generate code in the terminal, there’s usually no way to step through execution or inspect state—you’re left with logs, print statements, or replaying the same command and hoping to spot the bug. This project hooks tools like &lt;strong&gt;pdb&lt;/strong&gt; (Python) and &lt;strong&gt;lldb&lt;/strong&gt; (native/LLVM) into that flow so you can set breakpoints, step through, and inspect variables in agent-executed code, bringing traditional debugging to the terminal-agent workflow.&lt;/p&gt;

&lt;p&gt;The idea came from a recent project where I was working with terminal agents and hit a lot of bugs. I spent a lot of time chasing issues in code that the agent had generated or run: wrong assumptions, off-by-ones, bad state—and no good way to pause and inspect. I had to pick up each bug manually, add prints, re-run, and reason from partial output. That friction is what pushed me to build something in this direction: a way to &lt;em&gt;break in&lt;/em&gt; when the agent runs code, use the same debuggers I’d use for my own code (pdb, lldb), and step through instead of guessing from logs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it takes to use it (and what’s needed to build it):&lt;/strong&gt; You need a terminal agent workflow (e.g. GitHub Copilot CLI or similar) that runs or generates code. DebugHook sits in that pipeline so that when the agent executes Python or native code, execution can be handed off to pdb or lldb instead of running to completion. On the tooling side: pdb (built into Python) or lldb (LLVM debugger) installed, and a way to intercept or wrap the agent’s execution (e.g. running the agent’s code in a subprocess or through a runner that can spawn a debugger). What I built is the direction and glue for that—the “debug mode” that was missing—so that the same workflows you use for normal development (breakpoints, step, inspect) apply when the code is coming from an agent.&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%2F6zespx79uk4i2irbs1je.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%2F6zespx79uk4i2irbs1je.jpg" alt=" " width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://drive.google.com/drive/folders/1_9LZHS29Ed53hkM0c327DezEYrnLz9TQ?usp=sharing" rel="noopener noreferrer"&gt;https://drive.google.com/drive/folders/1_9LZHS29Ed53hkM0c327DezEYrnLz9TQ?usp=sharing&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github Repo: &lt;a href="https://github.com/hs094/DebugHook" rel="noopener noreferrer"&gt;https://github.com/hs094/DebugHook&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience with GitHub Copilot CLI
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What I used it for:&lt;/strong&gt; I used GitHub Copilot CLI while building DebugHook for scaffolding, exploring how to wire pdb/lldb into an agent execution path, and for quick refactors and debugging of my own code. It helped with boilerplate (e.g. runner scripts, subprocess handling), with understanding existing debugger APIs (pdb’s programmatic use, lldb’s Python bindings), and with iterating on the “glue” between the terminal agent and the debugger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt; The main takeaway was how much faster I could move when I could describe the &lt;em&gt;goal&lt;/em&gt; (e.g. “run this script under pdb and capture the first breakpoint”) and get a first version of the integration code, then refine it. I also learned where Copilot CLI shines—repetitive patterns, API lookup, small fixes—and where I still had to think carefully (architecture of when to hand off to the debugger, handling stdin/stdout for pdb in a subprocess). Another learning: it was useful to break the work into small, testable steps and prompt for each step, rather than asking for the whole flow at once.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Impact on the experience:&lt;/strong&gt; Having Copilot CLI in the loop made it easier to try different ways of hooking the debugger (e.g. &lt;code&gt;python -m pdb&lt;/code&gt;, or embedding pdb in the runner) without getting stuck on syntax or docs. When I hit bugs in &lt;em&gt;my&lt;/em&gt; code while building DebugHook, I could describe the symptom and get suggested fixes or tests, which kept the focus on the “debug mode for agents” idea instead of on boilerplate. If I were to do it again, I’d lean on it earlier for the subprocess and TTY handling around pdb, since that was one of the trickier parts.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>cli</category>
      <category>githubcopilot</category>
    </item>
    <item>
      <title>Great learning on Serverless architecture usecase!</title>
      <dc:creator>Hardik Soni</dc:creator>
      <pubDate>Tue, 27 May 2025 15:35:06 +0000</pubDate>
      <link>https://dev.to/hs094/great-learning-on-serverless-architecture-usecase-1f1f</link>
      <guid>https://dev.to/hs094/great-learning-on-serverless-architecture-usecase-1f1f</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/shayy/the-serverless-dream-is-dead-2945" class="crayons-story__hidden-navigation-link"&gt;The Serverless Dream Is Dead&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/shayy" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F2711665%2Fe528db00-6ac0-4654-b0d5-c68d84ed332e.png" alt="shayy profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/shayy" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Shayan
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Shayan
                
              
              &lt;div id="story-author-preview-content-2508140" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/shayy" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F2711665%2Fe528db00-6ac0-4654-b0d5-c68d84ed332e.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Shayan&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/shayy/the-serverless-dream-is-dead-2945" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 20 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/shayy/the-serverless-dream-is-dead-2945" id="article-link-2508140"&gt;
          The Serverless Dream Is Dead
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/shayy/the-serverless-dream-is-dead-2945" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;59&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/shayy/the-serverless-dream-is-dead-2945#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              23&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🚀 QForge — AI-Powered CI/CD Pipeline Generator from Your CLI</title>
      <dc:creator>Hardik Soni</dc:creator>
      <pubDate>Sun, 11 May 2025 19:31:52 +0000</pubDate>
      <link>https://dev.to/hs094/qforge-ai-powered-cicd-pipeline-generator-from-your-cli-22kk</link>
      <guid>https://dev.to/hs094/qforge-ai-powered-cicd-pipeline-generator-from-your-cli-22kk</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is my submission for the Amazon Q Developer “Quack The Code” Challenge: Crushing the Command Line.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&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%2Fre57tvpz2t57pi5qxkkj.png" alt=" " width="800" height="800"&gt;
&lt;/h2&gt;

&lt;p&gt;Hey builders! 👋&lt;br&gt;&lt;br&gt;
I’m excited to introduce &lt;strong&gt;QForge&lt;/strong&gt; — a smart, AI-driven CLI tool that automates the generation of robust, secure, and self-healing CI/CD pipelines using Amazon Q Developer CLI.&lt;/p&gt;

&lt;p&gt;No copy-pasting YAMLs. No trial-and-error configs. Just a single command to get it all done.&lt;/p&gt;

&lt;p&gt;📦 &lt;a href="https://github.com/yourusername/qforge" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🛠️ Built With: TypeScript, Node.js, Amazon Q Developer CLI&lt;/p&gt;


&lt;h2&gt;
  
  
  💡 The Idea
&lt;/h2&gt;

&lt;p&gt;Setting up CI/CD pipelines for multi-language projects is painful and error-prone — especially when you need to add coverage gates, security scans, and resilience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;QForge&lt;/strong&gt; was created to automate this completely, using deep codebase analysis and the power of Amazon Q Developer to generate intelligent, tailored pipelines for GitHub Actions, AWS CodePipeline, GitLab CI, or CircleCI.&lt;/p&gt;


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

&lt;p&gt;Here's how QForge gets you from zero to production-grade pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;🔍 Project Analysis&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Analyzes your codebase using custom analyzers for Ruby, Go, Rust, PHP, .NET, and more.
&lt;/li&gt;
&lt;li&gt;Detects languages, frameworks, test tools, build systems, and special characteristics.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;📦 Prompt Generation&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Constructs a highly tailored prompt using your project’s context and chosen CI/CD platform.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;🤖 Amazon Q CLI Integration&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sends the prompt to Amazon Q CLI to generate a pipeline with all requested features:

&lt;ul&gt;
&lt;li&gt;Test coverage
&lt;/li&gt;
&lt;li&gt;Linting
&lt;/li&gt;
&lt;li&gt;Security scanning
&lt;/li&gt;
&lt;li&gt;Self-healing automation
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;🛠️ Output&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Saves a production-ready pipeline YAML (e.g., &lt;code&gt;ci.yml&lt;/code&gt;, &lt;code&gt;aws-pipeline.yml&lt;/code&gt;) into your project directory.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  🚀 Getting Started
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1️⃣ Install Dependencies
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run build
npm &lt;span class="nb"&gt;link&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Make sure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js ≥ 16
&lt;/li&gt;
&lt;li&gt;Amazon Q Developer CLI installed (&lt;code&gt;pip install amazon-q-cli&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  2️⃣ Authenticate Amazon Q
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;q login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🧪 Usage
&lt;/h2&gt;
&lt;h3&gt;
  
  
  ▶️ Generate Pipeline
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;qforge generate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;By default, this analyzes your current directory and generates a GitHub Actions workflow.&lt;/p&gt;
&lt;h3&gt;
  
  
  ▶️ Customize Options
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;qforge generate &lt;span class="nt"&gt;--platform&lt;/span&gt; aws &lt;span class="nt"&gt;--directory&lt;/span&gt; ./my-project &lt;span class="nt"&gt;--output&lt;/span&gt; ./ci/aws-pipeline.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Available platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;github&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;aws&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gitlab&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;circleci&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use &lt;code&gt;--yes&lt;/code&gt; to skip confirmation prompts.&lt;/p&gt;


&lt;h2&gt;
  
  
  📄 Sample Output (GitHub Actions)
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CI Pipeline&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;main&lt;/span&gt;
  &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Checkout code&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v3&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Setup Node.js&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/setup-node@v3&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;node-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;18&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Install dependencies&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm install&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Lint&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm run lint&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run tests with coverage&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;npm run test -- --coverage&lt;/span&gt;
          &lt;span class="s"&gt;npm run coverage:check&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Security scan&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm audit --audit-level=critical&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Build project&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm run build&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;✅ Fully-commented AWS CodePipeline templates are also supported via &lt;code&gt;--platform aws&lt;/code&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  🧪 Tests
&lt;/h2&gt;

&lt;p&gt;QForge includes a test suite powered by Jest. Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Test coverage thresholds are enforced and configurable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// jest.config.js&lt;/span&gt;
&lt;span class="nx"&gt;coverageThreshold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;global&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;functions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;lines&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;statements&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also test prompts independently:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run &lt;span class="nb"&gt;test&lt;/span&gt;:prompt:aws
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ✨ Why You’ll Love It
&lt;/h2&gt;

&lt;p&gt;QForge:&lt;/p&gt;

&lt;p&gt;✅ Saves hours of manual YAML wrangling&lt;br&gt;&lt;br&gt;
🧠 Uses deep project analysis to optimize CI/CD pipelines&lt;br&gt;&lt;br&gt;
🔐 Adds security and test coverage gates automatically&lt;br&gt;&lt;br&gt;
🛠️ Enables self-healing for resilient pipelines&lt;br&gt;&lt;br&gt;
🤝 Works seamlessly with Amazon Q CLI&lt;/p&gt;




&lt;h2&gt;
  
  
  🔭 What’s Next
&lt;/h2&gt;

&lt;p&gt;Coming soon:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📊 CI Coverage Dashboard
&lt;/li&gt;
&lt;li&gt;🧩 VS Code integration
&lt;/li&gt;
&lt;li&gt;🦺 Linter for pipeline configurations
&lt;/li&gt;
&lt;li&gt;🦾 Auto-fix for failed builds based on logs
&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;QForge is built to remove friction and empower developers to deliver faster and safer. Thanks to Amazon Q Developer CLI, it bridges code understanding with intelligent automation — all from the CLI.&lt;/p&gt;

&lt;p&gt;Let your pipelines write themselves! 🔧🧠&lt;/p&gt;




&lt;p&gt;Let me know what you think or drop a ⭐️ on the GitHub repo if you find it helpful!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>awschallenge</category>
      <category>ai</category>
      <category>cli</category>
    </item>
  </channel>
</rss>
