<?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: Ariel Cuenca</title>
    <description>The latest articles on DEV Community by Ariel Cuenca (@arielsebas).</description>
    <link>https://dev.to/arielsebas</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4242081%2Fe136666e-1a78-4240-a112-6c2d60d39536.jpg</url>
      <title>DEV Community: Ariel Cuenca</title>
      <link>https://dev.to/arielsebas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arielsebas"/>
    <language>en</language>
    <item>
      <title>"Spec-Driven Necromancy: Building a Gothic Customs &amp; Courier Oracle with Kiro for Kiroween 2026" published: true</title>
      <dc:creator>Ariel Cuenca</dc:creator>
      <pubDate>Fri, 13 Nov 2026 03:32:40 +0000</pubDate>
      <link>https://dev.to/arielsebas/spec-driven-necromancy-building-a-gothic-customs-courier-oracle-with-kiro-for-kiroween-2026-356j</link>
      <guid>https://dev.to/arielsebas/spec-driven-necromancy-building-a-gothic-customs-courier-oracle-with-kiro-for-kiroween-2026-356j</guid>
      <description>&lt;p&gt;&lt;em&gt;This article was written as part of the **Kiroween 2026 hackathon&lt;/em&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;International online shopping in Ecuador comes with a terrifying boss fight: &lt;strong&gt;Customs Regulations (SENAE)&lt;/strong&gt;. Between the &lt;strong&gt;Category B (4x4 Rule)&lt;/strong&gt; thresholds, weight conversions, annual quotas, and hybrid tracking numbers that switch carriers mid-flight, a single miscalculation can turn a cheap haul into a nightmare of unexpected taxes.&lt;/p&gt;

&lt;p&gt;For the &lt;strong&gt;Kiroween 2026 hackathon&lt;/strong&gt; (&lt;em&gt;Costume Contest&lt;/em&gt; category), I built &lt;strong&gt;PhantasmTrack · GrimCourier&lt;/strong&gt;—a gothic customs grimoire and multi-courier tracking oracle disguised as an interactive haunted web experience, engineered from the ground up using &lt;strong&gt;Kiro IDE&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Deployment:&lt;/strong&gt; &lt;a href="https://phantasm-track-hazel.vercel.app" rel="noopener noreferrer"&gt;https://phantasm-track-hazel.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository (MIT):&lt;/strong&gt; &lt;a href="https://github.com/ArielSebas/phantasm-track" rel="noopener noreferrer"&gt;https://github.com/ArielSebas/phantasm-track&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. The Real-World Problem: Ecuador's SENAE 4x4 Customs Labyrinth
&lt;/h2&gt;

&lt;p&gt;When importing packages into Ecuador via platforms like Temu or US freight forwarders (LaarBox, Upper), buyers must navigate strict customs rules:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Category B (4x4 Exemption):&lt;/strong&gt; Packages weighing &lt;strong&gt;≤ 4 kg (8.81 lb)&lt;/strong&gt; AND with an FOB value &lt;strong&gt;≤ $400 USD&lt;/strong&gt; pay a flat &lt;strong&gt;$20.00 USD SENAE fee&lt;/strong&gt; (0% Ad-Valorem, 0% FODINFA, 0% IVA).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;General Regime Penalty:&lt;/strong&gt; Exceeding either &lt;strong&gt;4 kg&lt;/strong&gt; or &lt;strong&gt;$400 USD&lt;/strong&gt; triggers FODINFA (&lt;strong&gt;0.5%&lt;/strong&gt;), Ad-Valorem tariff (&lt;strong&gt;20%&lt;/strong&gt;), and IVA (&lt;strong&gt;15%&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Annual Mana Cap:&lt;/strong&gt; Every citizen has a &lt;strong&gt;$1,600 USD annual limit&lt;/strong&gt; under the 4x4 regime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hybrid Tracking Numbers:&lt;/strong&gt; A tracking code starting with &lt;code&gt;TMLC...&lt;/code&gt; routes through &lt;strong&gt;LaarCourier&lt;/strong&gt;, whereas &lt;code&gt;SP...EC&lt;/code&gt; is a dual-stage hybrid tracking number handled first by &lt;strong&gt;Far International&lt;/strong&gt; and then handed over locally to &lt;strong&gt;Urbano Express&lt;/strong&gt; or &lt;strong&gt;Servientrega&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  2. How Kiro Transformed the Development Workflow
&lt;/h2&gt;

&lt;p&gt;Instead of jumping straight into UI components and hoping the math worked, I used Kiro's structured &lt;code&gt;.kiro/&lt;/code&gt; architecture to separate formal domain rules from the haunting interface.&lt;/p&gt;

&lt;h3&gt;
  
  
  A. EARS Specifications (&lt;code&gt;.kiro/specs/customs-grimoire/&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Using Kiro's spec workflow (&lt;code&gt;requirements.md&lt;/code&gt;, &lt;code&gt;design.md&lt;/code&gt;, and &lt;code&gt;tasks.md&lt;/code&gt;), I defined 12 formal requirements using strict &lt;strong&gt;EARS (Easy Approach to Requirements Syntax)&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;For example, before writing the tax engine, Kiro helped formalize exact boundary conditions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WHEN&lt;/strong&gt; a shipment's weight is &lt;strong&gt;≤ 4.00 kg&lt;/strong&gt; and FOB value is &lt;strong&gt;≤ $400.00 USD&lt;/strong&gt;, &lt;strong&gt;THE SYSTEM SHALL&lt;/strong&gt; apply the Category B flat fee of &lt;strong&gt;$20.00 USD&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IF&lt;/strong&gt; either threshold is exceeded, &lt;strong&gt;THE SYSTEM SHALL&lt;/strong&gt; transition to the General Regime calculation and compute FODINFA, Ad-Valorem, and IVA rounded strictly to 2 decimal places (&lt;code&gt;round2&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  B. Property-Based Testing + Kiro Hooks (&lt;code&gt;.kiro/hooks/domain-pbt-check.json&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Floating-point arithmetic (&lt;code&gt;0.1 + 0.2 !== 0.3&lt;/code&gt;) is fatal in financial and customs calculators, especially when converting between pounds and kilograms (&lt;strong&gt;1 kg = 2.20462 lb&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;design.md&lt;/code&gt;, we mapped requirements to &lt;strong&gt;Correctness Properties&lt;/strong&gt; tested with &lt;strong&gt;Vitest&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;fast-check&lt;/code&gt;&lt;/strong&gt;. Then, I configured a &lt;strong&gt;Kiro Hook&lt;/strong&gt; (&lt;code&gt;domain-pbt-check.json&lt;/code&gt;) that automatically runs &lt;code&gt;npx vitest run&lt;/code&gt; whenever any file in &lt;code&gt;src/domain/customs/&lt;/code&gt; is modified. Every edge case—from &lt;strong&gt;3.999 kg&lt;/strong&gt; to &lt;strong&gt;4.001 kg&lt;/strong&gt; and annual quota transitions (&lt;code&gt;SAFE&lt;/code&gt;, &lt;code&gt;WARNING&lt;/code&gt;, &lt;code&gt;CRITICAL&lt;/code&gt;)—was mathematically verified across hundreds of generated test cases.&lt;/p&gt;

&lt;h3&gt;
  
  
  C. Steering Files (&lt;code&gt;.kiro/steering/&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;By configuring &lt;code&gt;product.md&lt;/code&gt;, &lt;code&gt;structure.md&lt;/code&gt;, and &lt;code&gt;tech.md&lt;/code&gt;, Kiro always understood the project's constraints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tech Stack:&lt;/strong&gt; Next.js 16.4.4 (App Router), React 19, TypeScript, Tailwind CSS v4.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architectural Boundary:&lt;/strong&gt; Never mix UI animations with &lt;code&gt;src/domain/customs/&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Crafting the "Costume Contest" Haunting UI
&lt;/h2&gt;

&lt;p&gt;With the domain layer locked down by Kiro Specs and PBT, I focused on making the interface unforgettable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Interactive SVG Guardians (&lt;code&gt;SideDecorations.tsx&lt;/code&gt;):&lt;/strong&gt; The &lt;em&gt;Messenger Skull&lt;/em&gt; (left) and &lt;em&gt;Lord Pumpkin&lt;/em&gt; (right) react to user actions with &lt;strong&gt;5 full-screen cinematics&lt;/strong&gt; (&lt;code&gt;welcome&lt;/code&gt;, &lt;code&gt;inscribe&lt;/code&gt; at the packing table, &lt;code&gt;advance&lt;/code&gt; with a SENAE customs scanner, &lt;code&gt;deliver&lt;/code&gt; with a hand-to-hand package delivery, and &lt;code&gt;banish&lt;/code&gt; with a broom sweep).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Multi-Courier Tracking Oracle (&lt;code&gt;TrackingOracle.tsx&lt;/code&gt;):&lt;/strong&gt; Automatically detects &lt;code&gt;TMLC...&lt;/code&gt; (LaarCourier) and &lt;code&gt;SP...EC&lt;/code&gt; (Temu Ecuador Dual-Stage tracking showing both Stage 1 International and Stage 2 Local Delivery), complete with 1-click demo buttons and instant ledger inscription.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Messenger Raven (&lt;code&gt;/api/suggestions&lt;/code&gt;):&lt;/strong&gt; A hardened feedback channel using parallel dispatch (Web3Forms + Discord Webhook) protected by IP rate-limiting (HTTP 429), Honeypot anti-bot traps, and Discord mention sanitization (&lt;code&gt;@everyone&lt;/code&gt; / &lt;code&gt;@here&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Key Takeaways from Building with Kiro
&lt;/h2&gt;

&lt;p&gt;Kiro bridged the gap between creative UI polish and rigorous software engineering. Having &lt;code&gt;.kiro/specs&lt;/code&gt; keep track of tasks (&lt;code&gt;14/14 completed&lt;/code&gt;) while &lt;code&gt;.kiro/hooks&lt;/code&gt; guarded the customs math allowed me to iterate rapidly on responsive SVG animations, bilingual support (&lt;code&gt;ES | EN&lt;/code&gt;), and security headers without breaking a single domain rule.&lt;/p&gt;

&lt;p&gt;Try &lt;strong&gt;PhantasmTrack · GrimCourier&lt;/strong&gt; live at &lt;a href="https://phantasm-track-hazel.vercel.app" rel="noopener noreferrer"&gt;https://phantasm-track-hazel.vercel.app&lt;/a&gt; and check out the &lt;code&gt;.kiro/&lt;/code&gt; directory in the &lt;a href="https://github.com/ArielSebas/phantasm-track" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>kiroween</category>
      <category>webdev</category>
      <category>typescript</category>
      <category>nextjs</category>
    </item>
  </channel>
</rss>
