<?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: shblue21</title>
    <description>The latest articles on DEV Community by shblue21 (@jihun).</description>
    <link>https://dev.to/jihun</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%2F808401%2F3dbdd53b-c46a-4e28-a31f-0d9badeef59e.png</url>
      <title>DEV Community: shblue21</title>
      <link>https://dev.to/jihun</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jihun"/>
    <language>en</language>
    <item>
      <title>ntomb – The Necromancer’s Terminal for Kiroween 2025</title>
      <dc:creator>shblue21</dc:creator>
      <pubDate>Thu, 04 Dec 2025 02:51:36 +0000</pubDate>
      <link>https://dev.to/jihun/ntomb-an-undead-connections-monitor-for-kiroween-4ce3</link>
      <guid>https://dev.to/jihun/ntomb-an-undead-connections-monitor-for-kiroween-4ce3</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;TL;DR: I built &lt;strong&gt;ntomb – The Necromancer’s Terminal&lt;/strong&gt;,&lt;br&gt;&lt;br&gt;
a Halloween-themed TUI that turns boring TCP connection lists into an &lt;strong&gt;undead graveyard&lt;/strong&gt; for a single process, using &lt;strong&gt;Kiro&lt;/strong&gt; in a spec-first + vibe coding workflow.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;🔗 &lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/shblue21/ntomb" rel="noopener noreferrer"&gt;ntomb – The Necromancer’s Terminal&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🎥 &lt;strong&gt;Demo video (3 min)&lt;/strong&gt;: &lt;a href="https://youtu.be/FXGROErwSik?si=WIV1HYpsJDSmuK0P" rel="noopener noreferrer"&gt;Kiroween 2025 submission demo&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What is ntomb?
&lt;/h2&gt;

&lt;p&gt;As an SRE/DevOps engineer, I stare at &lt;code&gt;ss&lt;/code&gt;, &lt;code&gt;netstat&lt;/code&gt;, and &lt;code&gt;/proc&lt;/code&gt; &lt;strong&gt;way too often&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They’re powerful, but when you’re debugging a single long-running process (like &lt;code&gt;nginx&lt;/code&gt;, a Java service, or some internal API), the experience is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;noisy&lt;/li&gt;
&lt;li&gt;hard to “feel”&lt;/li&gt;
&lt;li&gt;and definitely not spooky enough for &lt;strong&gt;Kiroween&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So for Kiroween 2025, I built &lt;strong&gt;ntomb – The Necromancer’s Terminal&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A Linux terminal UI that visualizes &lt;strong&gt;TCP connections for one process&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
as an &lt;strong&gt;undead graveyard&lt;/strong&gt; of remote hosts and “ghost” connections.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of a flat list of sockets, ntomb gives you a split TUI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Left&lt;/strong&gt;: a &lt;em&gt;graveyard&lt;/em&gt; of tombstones, one per remote host
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Right&lt;/strong&gt;: details for the selected host (ports, states, counts)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Top / bottom&lt;/strong&gt;: header + status, with process info and update hints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s a small tool, but it tries to answer a very simple question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“What is this process talking to right now,&lt;br&gt;&lt;br&gt;
and what does its network life &lt;em&gt;feel&lt;/em&gt; like?”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  A quick visual tour 👀
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;(I’ll insert real screenshots on dev.to — placeholders below.)&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Main graveyard view
&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%2Foil1cki3d3nov8b82pru.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%2Foil1cki3d3nov8b82pru.png" alt=" " width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each &lt;strong&gt;tombstone&lt;/strong&gt; on the left is a remote host.&lt;/li&gt;
&lt;li&gt;Selecting a host shows aggregated connection info on the right.&lt;/li&gt;
&lt;li&gt;Colors and symbols give you a quick sense of “how alive” things are.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Host details panel
&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%2Filcpwqps2koexp78ktv9.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%2Filcpwqps2koexp78ktv9.png" alt=" " width="800" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a selected host, ntomb shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;number of connections&lt;/li&gt;
&lt;li&gt;breakdown by &lt;strong&gt;state&lt;/strong&gt; (ESTAB, TIME_WAIT, etc.)&lt;/li&gt;
&lt;li&gt;ports and maybe extra metadata (depending on snapshot)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Process-first view
&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%2Fg2utpkrj3cvu4zooh7dm.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%2Fg2utpkrj3cvu4zooh7dm.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ntomb is &lt;strong&gt;process-centric&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;you point it at a PID or process name&lt;/li&gt;
&lt;li&gt;it tracks the connections &lt;em&gt;for that process only&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;you can keep that view open while you send traffic or run tests&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why I built this (and why it fits Kiroween)
&lt;/h2&gt;

&lt;p&gt;On paper, ntomb is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a tiny &lt;strong&gt;SRE utility&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;a bit of &lt;strong&gt;network observability&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;and a lot of &lt;strong&gt;terminal cosplay&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the hackathon, I submitted it to the &lt;strong&gt;Costume Contest&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Build any app but show us a haunting user interface that’s polished and unforgettable.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ntomb tries to be exactly that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It re-skins a familiar debugging workflow into a &lt;strong&gt;graveyard metaphor&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;It stays &lt;strong&gt;practical&lt;/strong&gt; (real data from &lt;code&gt;ss&lt;/code&gt; or &lt;code&gt;/proc&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;But it adds enough Halloween flavor that you &lt;em&gt;enjoy&lt;/em&gt; leaving it open.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is something I’d actually keep in my toolbox after the hackathon—&lt;br&gt;
just with a slightly less cursed theme in production. Maybe.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stack &amp;amp; architecture
&lt;/h2&gt;

&lt;p&gt;Under the hood, ntomb is intentionally simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🦀 &lt;strong&gt;Language&lt;/strong&gt;: Rust (TUI-friendly, fast, great ecosystem)
&lt;/li&gt;
&lt;li&gt;🧱 &lt;strong&gt;TUI framework&lt;/strong&gt;: a Rust terminal UI library (panel layout, events, rendering)&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;Data source&lt;/strong&gt;: system-level networking info (&lt;code&gt;ss&lt;/code&gt;, &lt;code&gt;/proc&lt;/code&gt; or similar)&lt;/li&gt;
&lt;li&gt;🔁 &lt;strong&gt;Update loop&lt;/strong&gt;: periodic snapshots + diffing to update the “graveyard”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The architecture is split into a few clear parts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Data collection&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;ss&lt;/code&gt; / read &lt;code&gt;/proc&lt;/code&gt; for a specific PID
&lt;/li&gt;
&lt;li&gt;Parse into a normalized &lt;code&gt;Connection&lt;/code&gt; model
&lt;/li&gt;
&lt;li&gt;Group by remote host and state&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Domain model&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;code&gt;Host&lt;/code&gt; aggregates many &lt;code&gt;Connection&lt;/code&gt;s
&lt;/li&gt;
&lt;li&gt;Each host tracks: address, counts, and some derived metrics&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;TUI layer&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Header (process info)&lt;/li&gt;
&lt;li&gt;Left panel (hosts list)&lt;/li&gt;
&lt;li&gt;Right panel (details)&lt;/li&gt;
&lt;li&gt;Keybindings for navigation / refresh&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This split becomes really important when we talk about &lt;strong&gt;how I used Kiro&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building ntomb &lt;em&gt;inside&lt;/em&gt; Kiro
&lt;/h2&gt;

&lt;p&gt;I didn’t just write ntomb in a regular editor and occasionally ask an LLM for help.&lt;/p&gt;

&lt;p&gt;I tried to go &lt;strong&gt;all-in on Kiro&lt;/strong&gt; and its &lt;strong&gt;spec-driven + vibe coding&lt;/strong&gt; workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Spec-driven development
&lt;/h3&gt;

&lt;p&gt;Instead of one huge spec, I created multiple &lt;code&gt;.kiro/specs/...&lt;/code&gt; files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ntomb-core.md&lt;/code&gt; – core concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what a &lt;em&gt;connection&lt;/em&gt; is&lt;/li&gt;
&lt;li&gt;how to group them by host&lt;/li&gt;
&lt;li&gt;what fields and states I care about&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;code&gt;ntomb-ui-layout.md&lt;/code&gt; – TUI structure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;panels (header, graveyard list, detail panel)&lt;/li&gt;
&lt;li&gt;minimum sizes and layout rules&lt;/li&gt;
&lt;li&gt;keybindings and navigation behavior&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;code&gt;ntomb-themes.md&lt;/code&gt; – vibes &amp;amp; theming:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;color tokens for “graveyard”, “ghost”, “danger”&lt;/li&gt;
&lt;li&gt;symbols/emojis allowed&lt;/li&gt;
&lt;li&gt;constraints so it stays readable in real terminals&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Each spec wasn’t just a wishlist—it described:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;behavior&lt;/li&gt;
&lt;li&gt;constraints&lt;/li&gt;
&lt;li&gt;examples of what “good” looks like&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From there, Kiro could generate and refactor code in a way that &lt;strong&gt;respected&lt;/strong&gt; those specs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vibe coding on top
&lt;/h3&gt;

&lt;p&gt;Once the structure felt right, I switched into more &lt;strong&gt;vibe coding&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;brainstorming metaphors:

&lt;ul&gt;
&lt;li&gt;“How can we make this feel more like a necromancer’s dashboard?”&lt;/li&gt;
&lt;li&gt;“What should a ‘ghost connection’ look like?”&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;polishing UX details:

&lt;ul&gt;
&lt;li&gt;naming (tombstones, graveyard, ghosts)&lt;/li&gt;
&lt;li&gt;panel copy and status messages&lt;/li&gt;
&lt;li&gt;small layout tweaks to improve readability&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;This was the fun part:&lt;br&gt;&lt;br&gt;
with the big shapes locked by specs, I could safely tell Kiro:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“This looks too boring. Make it weirder,&lt;br&gt;&lt;br&gt;
but don’t break the layout or the data model.”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  How Kiro actually helped (beyond ‘autocomplete but bigger’)
&lt;/h2&gt;

&lt;p&gt;A few concrete ways Kiro made a difference:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. TUI layout scaffolding
&lt;/h3&gt;

&lt;p&gt;Designing a multi-panel TUI with decent ergonomics is non-trivial:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;header + status&lt;/li&gt;
&lt;li&gt;left list + right detail panel&lt;/li&gt;
&lt;li&gt;proper handling of resize, scroll, and selection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From my specs, Kiro generated an initial layout with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;data structures for the UI state&lt;/li&gt;
&lt;li&gt;an event loop&lt;/li&gt;
&lt;li&gt;keybindings and focus management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I would never ask a generic model to do this in one shot—&lt;br&gt;&lt;br&gt;
but with &lt;strong&gt;clear specs&lt;/strong&gt;, Kiro’s output was surprisingly solid.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Data model + parsing glue
&lt;/h3&gt;

&lt;p&gt;Turning &lt;code&gt;ss&lt;/code&gt; output or &lt;code&gt;/proc&lt;/code&gt; into a nice internal model is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;boring&lt;/li&gt;
&lt;li&gt;easy to get subtly wrong&lt;/li&gt;
&lt;li&gt;highly repetitive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With a spec that defined &lt;code&gt;Connection&lt;/code&gt; and &lt;code&gt;Host&lt;/code&gt; types, Kiro helped:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;write the parsing boilerplate&lt;/li&gt;
&lt;li&gt;keep field names &amp;amp; types consistent&lt;/li&gt;
&lt;li&gt;refactor when I changed the model shape&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I still reviewed everything, but it took away a lot of tedious work.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Staying in a tight loop with hooks
&lt;/h3&gt;

&lt;p&gt;I also used &lt;strong&gt;Kiro hooks&lt;/strong&gt; to automate small workflows, like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;grabbing fresh connection snapshots into JSON files&lt;/li&gt;
&lt;li&gt;running &lt;code&gt;cargo fmt&lt;/code&gt; + &lt;code&gt;cargo test&lt;/code&gt; after bigger refactors&lt;/li&gt;
&lt;li&gt;rebuilding and running the TUI with one command&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This meant I could stay &lt;strong&gt;inside Kiro&lt;/strong&gt; for much longer stretches:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;spec → code → run → tweak → repeat&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;instead of constantly bouncing between editor, terminal, and browser.&lt;/p&gt;




&lt;h2&gt;
  
  
  Spec-driven vs vibe coding (for real)
&lt;/h2&gt;

&lt;p&gt;Kiroween asks a lot about “vibe coding,” but for ntomb,&lt;br&gt;
the real magic was the &lt;strong&gt;combination&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Spec-driven&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;locked in architecture&lt;/li&gt;
&lt;li&gt;made Kiro’s behavior predictable&lt;/li&gt;
&lt;li&gt;safe for larger refactors&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Vibe coding&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;perfect for UX, naming, and theming&lt;/li&gt;
&lt;li&gt;fun for exploring weird ideas&lt;/li&gt;
&lt;li&gt;low risk once the structure was stable&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;If I had to summarize:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Specs gave me &lt;strong&gt;confidence&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Vibes gave me &lt;strong&gt;personality&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Together, they let me ship something small but cohesive in a short hackathon window.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I’d like to add next
&lt;/h2&gt;

&lt;p&gt;If I keep working on ntomb after Kiroween, here’s what’s on my list:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;multiple processes / split views&lt;/li&gt;
&lt;li&gt;basic filters (states, ports, subnets)&lt;/li&gt;
&lt;li&gt;simple latency or error indicators&lt;/li&gt;
&lt;li&gt;a less Halloween-intense theme for everyday use&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And of course… even more over-engineered spooky modes for next Halloween. 🧟‍♀️&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing thoughts
&lt;/h2&gt;

&lt;p&gt;Kiroween was the perfect excuse to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;take a boring but important part of my job (connection debugging),&lt;/li&gt;
&lt;li&gt;push it through a &lt;strong&gt;necromancer / graveyard UI filter&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;and really lean into &lt;strong&gt;spec-driven development with Kiro&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;live in a terminal,&lt;/li&gt;
&lt;li&gt;debug network issues a lot,&lt;/li&gt;
&lt;li&gt;and like the idea of your tools wearing costumes,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;then I hope &lt;strong&gt;ntomb&lt;/strong&gt; feels like something you’d actually run during an incident…&lt;br&gt;&lt;br&gt;
even if you have to pretend you’re not enjoying the vibes too much.&lt;/p&gt;

&lt;p&gt;Thanks for reading — and if you have ideas or feedback,&lt;br&gt;&lt;br&gt;
feel free to open an issue or PR on GitHub:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/shblue21/ntomb" rel="noopener noreferrer"&gt;ntomb – The Necromancer’s Terminal&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kiro</category>
      <category>kiroween</category>
      <category>kirodotdev</category>
      <category>rust</category>
    </item>
  </channel>
</rss>
