1<!DOCTYPE html><!--T9lvQ7doSCQTisuwkeYJc--><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/0e54dc4a88da75bb-s.p.b44d99ab.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/6bb62198a3d8dd21-s.p.63658bd0.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/797e433ab948586e-s.p.29207c2f.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/chunks/8859af00b3e1b48e.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/9b2c5451f0b67975.js"/>
1<script src="/_next/static/chunks/cae596c38e6db1f9.js" async=""></script>
1<script src="/_next/static/chunks/d04c15cb61f7e6aa.js" async=""></script>
1<script src="/_next/static/chunks/fcf588a7302715c4.js" async=""></script>
1<script src="/_next/static/chunks/74670ac617919a68.js" async=""></script>
1<script src="/_next/static/chunks/turbopack-d09d69aceeecb72e.js" async=""></script>
1<script src="/_next/static/chunks/683b430f38496863.js" async=""></script>
1<script src="/_next/static/chunks/ff1a16fafef87110.js" async=""></script>
1<script src="/_next/static/chunks/421a37cf1a76b3c0.js" async=""></script>
1<script src="/_next/static/chunks/295d483fd0fe7058.js" async=""></script>
1<script src="/_next/static/chunks/567b1d6107d31fa8.js" async=""></script>
1<script src="/_next/static/chunks/8a53a0a8694269a1.js" async=""></script>
1<script src="/_next/static/chunks/035fa6c9ff806f0a.js" async=""></script>
1<script src="/_next/static/chunks/255b1751c0b1ded3.js" async=""></script>
1<script src="/_next/static/chunks/5eeb81960ac65b6e.js" async=""></script>
1<script src="/_next/static/chunks/7cee46e288c759c8.js" async=""></script>
1<meta name="next-size-adjust" content=""/><title>Vault · Anas Mazouni</title><meta name="description" content="My Obsidian vault, published as a website. Mostly my favorite skills for LLM agents, with the odd note I want to keep around."/><link rel="author" href="https://stormix.co"/><meta name="author" content="Anas Mazouni"/><meta name="keywords" content="Anas Mazouni,Stormix,software engineer,founding engineer,web developer,TypeScript,Next.js,React,Node.js,DevSecOps,automation,Warren,GitGuardian,Marseille,France"/><meta name="creator" content="Anas Mazouni"/><meta name="publisher" content="Anas Mazouni"/><meta name="robots" content="index, follow"/><meta name="googlebot" content="index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1"/><meta name="category" content="technology"/><link rel="canonical" href="https://stormix.co/vault"/><meta property="og:title" content="Vault · Anas Mazouni"/><meta property="og:description" content="My Obsidian vault, published as a website. Mostly my favorite skills for LLM agents, with the odd note I want to keep around."/><meta property="og:url" content="https://stormix.co/vault"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:creator" content="@stormix_dev"/><meta name="twitter:title" content="Anas Mazouni â Software Engineer (Stormix)"/><meta name="twitter:description" content="Software engineer in Marseille. Founding engineer at Warren, ex-GitGuardian. Quietly shipping in the AI era."/><meta name="twitter:image" content="https://stormix.co/opengraph-image"/><link rel="icon" href="/favicon.ico?favicon.0b3bf435.ico" sizes="256x256" type="image/x-icon"/><link rel="icon" href="/icon?f2de397a72f446ab" type="image/png" sizes="32x32"/><link rel="apple-touch-icon" href="/apple-icon?e8f884c40ef709e8" type="image/png" sizes="180x180"/>
1<script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script>
1</head><body class="geist_mono_3f18d4ba-module__FjMTOq__className geist_mono_3f18d4ba-module__FjMTOq__variable space_grotesk_5fe7af91-module__t5t5Va__variable doto_4f592ae7-module__O095IG__variable"><div hidden=""><!--$--><!--/$--></div>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"Person","name":"Anas Mazouni","alternateName":"Stormix","url":"https://stormix.co","jobTitle":"Software Engineer","description":"Software engineer in Marseille, France. Founding engineer at Warren, previously at GitGuardian. I ship useful software in the middle of the AI hype cycle â products, automation, and the boring infrastructure that keeps it all running.","image":"https://stormix.co/opengraph-image","worksFor":{"@type":"Organization","name":"Warren","url":"https://warren.be/"},"alumniOf":[{"@type":"Organization","name":"GitGuardian","url":"https://www.gitguardian.com/"},{"@type":"EducationalOrganization","name":"Ãcole Centrale de Nantes","url":"https://ec-nantes.fr"}],"address":{"@type":"PostalAddress","addressLocality":"Marseille","addressCountry":"FR"},"sameAs":["https://twitter.com/stormix_dev","https://github.com/Stormix","https://www.linkedin.com/in/anasmazouni/","https://stackoverflow.com/users/3370660/stormix"]}</script>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"Stormix","url":"https://stormix.co","description":"Portfolio of Anas Mazouni (Stormix) â Software Engineer","author":{"@type":"Person","name":"Anas Mazouni"}}</script>
1<script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","theme","dark","dark",["light","dark"],null,false,true)</script>
1<div class="fixed top-0 left-0 right-0 z-[60] overflow-hidden select-none border-b border-white/[0.06]" style="height:36px;background:var(--background)"><div class="h-full flex items-center"><div class="marquee-track whitespace-nowrap" style="font-family:var(--font-geist-mono), monospace;font-size:10px;font-weight:500;letter-spacing:0.2em;text-transform:uppercase;color:#555" aria-hidden="true">UNDER CONSTRUCTIONââ·ââWORK IN PROGRESSââ·ââUNDER CONSTRUCTIONââ·ââWORK IN PROGRESSââ·ââUNDER CONSTRUCTIONââ·ââWORK IN PROGRESSââ·ââUNDER CONSTRUCTIONââ·ââWORK IN PROGRESSââ·ââUNDER CONSTRUCTIONââ·ââWORK IN PROGRESSââ·ââUNDER CONSTRUCTIONââ·ââWORK IN PROGRESSââ·ââUNDER CONSTRUCTIONââ·ââWORK IN PROGRESSââ·ââUNDER CONSTRUCTIONââ·ââWORK IN PROGRESS</div></div></div><div class="flex flex-col items-center w-full h-full bg-background dark:bg-background text-foreground overflow-hidden" style="padding-top:36px"><div class="relative z-10 flex flex-col items-center w-full h-full"><header class="fixed top-0 left-0 right-0 z-50 flex flex-col items-center transition-all duration-500 py-5" style="transition-timing-function:var(--ease-out);top:36px"><div class="flex items-center justify-between gap-6 w-full max-w-7xl px-6 md:px-8 py-2.5 border transition-all duration-500 border-transparent bg-transparent" style="transition-timing-function:var(--ease-out);border-radius:2px"><div class="flex-shrink-0" type="button" aria-haspopup="dialog" aria-expanded="false" aria-controls="radix-_R_5d5tlb_" data-state="closed"><div class="relative flex items-center h-8 cursor-pointer transition-transform duration-150 active:scale-[0.97] motion-reduce:active:scale-100" style="transition-timing-function:var(--ease-out)"><span class="border border-primary px-3 py-1 text-lg font-bold uppercase leading-none tracking-tight text-primary select-none" style="font-family:var(--font-doto), monospace">Stormix</span></div></div><nav class="hidden items-center gap-1 lg:flex"><a class="relative px-3 py-1.5 font-mono text-[11px] uppercase tracking-[0.1em] text-muted-foreground cursor-pointer select-none transition-all duration-200 hover:text-foreground hover:bg-white/[0.04] active:scale-[0.97]" style="transition-timing-function:var(--ease-out);border-radius:1px">.<!-- -->about<!-- -->()</a><a class="relative px-3 py-1.5 font-mono text-[11px] uppercase tracking-[0.1em] text-muted-foreground cursor-pointer select-none transition-all duration-200 hover:text-foreground hover:bg-white/[0.04] active:scale-[0.97]" style="transition-timing-function:var(--ease-out);border-radius:1px">.<!-- -->activity<!-- -->()</a><a class="relative px-3 py-1.5 font-mono text-[11px] uppercase tracking-[0.1em] text-muted-foreground cursor-pointer select-none transition-all duration-200 hover:text-foreground hover:bg-white/[0.04] active:scale-[0.97]" style="transition-timing-function:var(--ease-out);border-radius:1px">.<!-- -->resume<!-- -->()</a><a class="relative px-3 py-1.5 font-mono text-[11px] uppercase tracking-[0.1em] text-muted-foreground cursor-pointer select-none transition-all duration-200 hover:text-foreground hover:bg-white/[0.04] active:scale-[0.97]" style="transition-timing-function:var(--ease-out);border-radius:1px">.<!-- -->projects<!-- -->()</a><a class="relative px-3 py-1.5 font-mono text-[11px] uppercase tracking-[0.1em] text-muted-foreground cursor-pointer select-none transition-all duration-200 hover:text-foreground hover:bg-white/[0.04] active:scale-[0.97]" style="transition-timing-function:var(--ease-out);border-radius:1px">.<!-- -->vault<!-- -->()</a><a class="relative px-3 py-1.5 font-mono text-[11px] uppercase tracking-[0.1em] text-muted-foreground cursor-pointer select-none transition-all duration-200 hover:text-foreground hover:bg-white/[0.04] active:scale-[0.97]" style="transition-timing-function:var(--ease-out);border-radius:1px">.<!-- -->contact<!-- -->()</a></nav><button class="lg:hidden flex flex-col justify-center items-center w-8 h-8 gap-[5px] cursor-pointer" aria-label="Toggle menu"><span class="block h-px w-5 bg-foreground transition-all duration-300"></span><span class="block h-px w-5 bg-foreground transition-all duration-300"></span></button></div><div class="lg:hidden w-full max-w-7xl px-6 md:px-8 overflow-hidden transition-all duration-300 max-h-0 opacity-0" style="transition-timing-function:var(--ease-out)"><nav class="flex flex-col mt-1 px-3 py-3 gap-1 border border-white/[0.08] bg-[#0b0d0e]/80 backdrop-blur-xl" style="border-radius:2px"><a class="px-3 py-2.5 font-mono text-[11px] uppercase tracking-[0.1em] text-muted-foreground cursor-pointer select-none transition-all duration-200 hover:text-foreground hover:bg-white/[0.04] active:scale-[0.97]" style="transition-timing-function:var(--ease-out);border-radius:1px">.<!-- -->about<!-- -->()</a><a class="px-3 py-2.5 font-mono text-[11px] uppercase tracking-[0.1em] text-muted-foreground cursor-pointer select-none transition-all duration-200 hover:text-foreground hover:bg-white/[0.04] active:scale-[0.97]" style="transition-timing-function:var(--ease-out);border-radius:1px">.<!-- -->activity<!-- -->()</a><a class="px-3 py-2.5 font-mono text-[11px] uppercase tracking-[0.1em] text-muted-foreground cursor-pointer select-none transition-all duration-200 hover:text-foreground hover:bg-white/[0.04] active:scale-[0.97]" style="transition-timing-function:var(--ease-out);border-radius:1px">.<!-- -->resume<!-- -->()</a><a class="px-3 py-2.5 font-mono text-[11px] uppercase tracking-[0.1em] text-muted-foreground cursor-pointer select-none transition-all duration-200 hover:text-foreground hover:bg-white/[0.04] active:scale-[0.97]" style="transition-timing-function:var(--ease-out);border-radius:1px">.<!-- -->projects<!-- -->()</a><a class="px-3 py-2.5 font-mono text-[11px] uppercase tracking-[0.1em] text-muted-foreground cursor-pointer select-none transition-all duration-200 hover:text-foreground hover:bg-white/[0.04] active:scale-[0.97]" style="transition-timing-function:var(--ease-out);border-radius:1px">.<!-- -->vault<!-- -->()</a><a class="px-3 py-2.5 font-mono text-[11px] uppercase tracking-[0.1em] text-muted-foreground cursor-pointer select-none transition-all duration-200 hover:text-foreground hover:bg-white/[0.04] active:scale-[0.97]" style="transition-timing-function:var(--ease-out);border-radius:1px">.<!-- -->contact<!-- -->()</a></nav></div></header><main class="flex flex-col w-full max-w-7xl mx-auto px-6 md:px-8">
1<div class="flex flex-col w-full gap-6 pt-24 md:pt-28 pb-16 isolate"><div class="sticky top-24 z-30"><div class="flex flex-wrap items-center justify-between gap-3 px-3 py-2 border border-white/8 bg-[#0b0d0e]/70 backdrop-blur-sm" style="border-radius:2px"><div class="flex min-w-0 items-center gap-2 font-mono text-[11px] tracking-[0.02em]"><a class="flex items-center gap-1.5 px-1.5 py-0.5 transition-colors text-foreground" href="/vault"><span aria-hidden="true" class="text-muted-foreground/60">~</span><span>vault</span></a></div><div class="flex items-center gap-2"><span class="hidden md:inline-flex font-mono text-[10px] uppercase tracking-[0.15em] text-muted-foreground/60"><span class="tabular-nums">21</span><span class="mx-1.5 text-muted-foreground/30">·</span><span class="tabular-nums">68</span><span class="ml-1 text-muted-foreground/50">links</span></span><button type="button" class="group inline-flex items-center gap-2 px-2.5 py-1.5 font-mono text-[11px] uppercase tracking-[0.1em] text-muted-foreground border border-white/8 bg-white/2 hover:text-foreground hover:bg-white/4 transition-colors" style="border-radius:2px"><span aria-hidden="true" class="text-muted-foreground/60">/</span><span>search</span><kbd class="font-mono text-[10px] px-1.5 py-0.5 border border-white/8 bg-white/4 text-foreground/70">âK</kbd></button><a aria-label="Open vault graph" class="inline-flex items-center gap-1.5 px-2.5 py-1.5 font-mono text-[11px] uppercase tracking-[0.1em] text-muted-foreground border border-white/8 bg-white/2 hover:text-foreground hover:bg-white/4 transition-colors" style="border-radius:2px" href="/vault/graph"><span aria-hidden="true" class="inline-block size-1.5 rounded-full bg-foreground
1/40 group-hover:bg-foreground/70"></span>graph</a></div></div></div><div class="grid grid-cols-1 gap-8 lg:grid-cols-[14rem_minmax(0,1fr)] lg:gap-10"><aside class="hidden lg:block min-w-0"><div class="sticky top-44 max-h-[calc(100dvh-12rem)] overflow-y-auto pr-1 -mr-1"><nav aria-label="Vault navigation" class="flex flex-col gap-3 min-w-0 overflow-x-hidden"><div class="relative"><input type="text" placeholder="Filter notesâ¦" aria-label="Filter vault notes" class="w-full bg-white/2 border border-white/8 pl-7 pr-2.5 py-1.5 font-mono text-[11px] tracking-[0.02em] text-foreground placeholder:text-muted-foreground/60 outline-none transition-colors focus:bg-white/4 focus:border-white/16 focus:text-foreground" style="border-radius:2px" value=""/><span aria-hidden="true" class="pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 font-mono text-[11px] text-muted-foreground/50">/</span></div><div class="flex flex-col gap-px font-mono text-[11px] tracking-[0.02em] -mx-2" role="list"><a aria-current="page" class="group relative flex items-center justify-between gap-2 min-w-0 mx-2 px-2 py-1 transition-colors border-l-2 text-foreground bg-white/5 border-foreground
1/70" style="border-radius:1px" href="/vault"><span class="flex items-center gap-2 min-w-0"><span aria-hidden="true" class="text-muted-foreground/50">~</span><span class="truncate">vault root</span></span><span class="shrink-0 text-[9px] uppercase tracking-[0.1em] text-muted-foreground/60">home</span></a><div class="flex items-center justify-between gap-2 mx-2 px-2 pt-3 pb-1" style="padding-left:calc(0 * 12px + 8px)"><span class="flex items-center gap-1.5 min-w-0"><span aria-hidden="true" class="inline-block text-muted-foreground/50 leading-none" style="font-size:8px">â¾</span><span class="truncate text-[10px] uppercase tracking-[0.15em] text-foreground/80 font-medium">Ai</span></span><span class="shrink-0 font-mono text-[9px] tabular-nums text-muted-foreground/50" aria-label="21 pages">21</span></div><div class="flex items-center justify-between gap-2 mx-2 px-2 pt-3 pb-1" style="padding-left:calc(1 * 12px + 8px)"><span class="flex items-center gap-1.5 min-w-0"><span aria-hidden="true" class="inline-block text-muted-foreground/50 leading-none" style="font-size:8px">â¾</span><span class="truncate text-[10px] uppercase tracking-[0.15em] text-foreground/80 font-medium">AI Skills</span></span><span class="shrink-0 font-mono text-[9px] tabular-nums text-muted-foreground/50" aria-label="21 pages">21</span></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">AI Skills</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/caveman"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Caveman</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/deslop"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Deslop</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/find-skills"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Find Skills</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/fix-ci"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground
1/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Fix CI</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/fix-merge-conflicts"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Fix Merge Conflicts</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/frontend-design"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Frontend Design</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/git-conventions"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Git Conventions</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/grill-me"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Grill Me</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/handoff"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Handoff</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/humanizer"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Humanizer</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground
1/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/improve-codebase-architecture"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Improve Codebase Architecture</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/iterate-browser"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Iterate Browser</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/recomposing-commits"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Recomposing Commits</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/request-refactor-plan"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Request Refactor Plan</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/simplify"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Simplify</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/split-react-components"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Split React Components</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/thermo-nuclear-code-quality-review"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Thermo-Nuclear Code Quality Review</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground
1/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/weekly-review"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Weekly Review</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/you-might-not-need-an-effect"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">You Might Not Need an Effect</span></a></div><div class="relative mx-2" style="padding-left:calc(1 * 12px + 4px)"><span aria-hidden="true" class="absolute top-0 bottom-0 w-px bg-white/8" style="left:calc(1 * 12px + 9px)"></span><a class="group relative flex items-center gap-2 min-w-0 pl-3 pr-2 py-1 transition-colors border-l-2 text-muted-foreground/85 border-transparent hover:text-foreground hover:bg-white/3" style="border-radius:1px" href="/vault/ai/skills/zoom-out"><span aria-hidden="true" class="shrink-0 transition-colors text-muted-foreground/40 group-hover:text-muted-foreground/70">·</span><span class="min-w-0 truncate">Zoom Out</span></a></div></div></nav></div></aside><div class="min-w-0 w-full"><div class="flex flex-col gap-12"><section class="flex flex-col gap-4"><a aria-label="Vault home" class="block group select-none w-fit" href="/vault"><h1 class="font-semibold uppercase leading-[0.85] tracking-[-0.04em] text-foreground/0 text-balance" style="font-family:var(--font-doto), monospace;font-size:clamp(3rem, 10vw, 7rem);-webkit-text-stroke:1.5px var(--foreground);-webkit-mask-image:linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,0.85) 55%, rgba(0,0,0,0.55) 85%, rgba(0,0,0,0.4) 100%);mask-image:linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,0.85) 55%, rgba(0,0,0,0.55) 85%, rgba(0,0,0,0.4) 100%);transition:opacity 240ms var(--ease-out)">vault</h1></a><p class="text-sm text-muted-foreground max-w-xl text-pretty">My Obsidian vault, published as a website. Mostly my favorite skills for LLM agents. The rest is notes I want to keep around.</p></section><section class="grid grid-cols-1 md:grid-cols-2 gap-10"><div class="flex flex-col gap-4"><h2 class="flex items-center gap-2 font-mono text-[10px] uppercase tracking-[0.15em] text-muted-foreground"><span aria-hidden="true" class="inline-block h-px w-3 bg-white/15"></span>recently updated</h2><ul role="list" class="flex flex-col"><li class="border-b border-white/6 last:border-b-0"><a class="group flex items-baseline justify-between gap-3 py-3 -mx-2 px-2 hover:bg-white/3 transition-colors border-l-2 border-transparent hover:border-foreground
1/30" style="border-radius:1px" href="/vault/ai/skills/deslop"><span class="min-w-0 flex flex-col gap-0.5"><span class="text-foreground/95 group-hover:text-foreground text-sm truncate">Deslop</span><span class="text-xs text-muted-foreground/80 line-clamp-2">Remove AI-generated code slop from a branch diff â unnecessary comments, defensive checks, any-casts, and nested code inconsistent with the surrounding codebase.</span></span><span class="shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/70">2026-06-13</span></a></li><li class="border-b border-white/6 last:border-b-0"><a class="group flex items-baseline justify-between gap-3 py-3 -mx-2 px-2 hover:bg-white/3 transition-colors border-l-2 border-transparent hover:border-foreground/30" style="border-radius:1px" href="/vault/ai/skills/find-skills"><span class="min-w-0 flex flex-col gap-0.5"><span class="text-foreground/95 group-hover:text-foreground text-sm truncate">Find Skills</span><span class="text-xs text-muted-foreground/80 line-clamp-2">Discover and install agent skills from the open skills ecosystem at skills.sh using the npx skills CLI.</span></span><span class="shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/70">2026-06-13</span></a></li><li class="border-b border-white/6 last:border-b-0"><a class="group flex items-baseline justify-between gap-3 py-3 -mx-2 px-2 hover:bg-white/3 transition-colors border-l-2 border-transparent hover:border-foreground
1/30" style="border-radius:1px" href="/vault/ai/skills/fix-ci"><span class="min-w-0 flex flex-col gap-0.5"><span class="text-foreground/95 group-hover:text-foreground text-sm truncate">Fix CI</span><span class="text-xs text-muted-foreground/80 line-clamp-2">Find the first actionable failure in a PR's CI checks, apply the smallest safe fix, and loop until all checks are green.</span></span><span class="shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/70">2026-06-13</span></a></li><li class="border-b border-white/6 last:border-b-0"><a class="group flex items-baseline justify-between gap-3 py-3 -mx-2 px-2 hover:bg-white/3 transition-colors border-l-2 border-transparent hover:border-foreground/30" style="border-radius:1px" href="/vault/ai/skills/fix-merge-conflicts"><span class="min-w-0 flex flex-col gap-0.5"><span class="text-foreground/95 group-hover:text-foreground text-sm truncate">Fix Merge Conflicts</span><span class="text-xs text-muted-foreground/80 line-clamp-2">Resolve merge conflicts non-interactively with correctness-first edits, validate the build, and summarize resolution decisions.</span></span><span class="shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/70">2026-06-13</span></a></li><li class="border-b border-white/6 last:border-b-0"><a class="group flex items-baseline justify-between gap-3 py-3 -mx-2 px-2 hover:bg-white/3 transition-colors border-l-2 border-transparent hover:border-foreground
1/30" style="border-radius:1px" href="/vault/ai/skills/frontend-design"><span class="min-w-0 flex flex-col gap-0.5"><span class="text-foreground/95 group-hover:text-foreground text-sm truncate">Frontend Design</span><span class="text-xs text-muted-foreground/80 line-clamp-2">Build distinctive, production-grade frontends instead of generic AI UI.</span></span><span class="shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/70">2026-06-13</span></a></li><li class="border-b border-white/6 last:border-b-0"><a class="group flex items-baseline justify-between gap-3 py-3 -mx-2 px-2 hover:bg-white/3 transition-colors border-l-2 border-transparent hover:border-foreground/30" style="border-radius:1px" href="/vault/ai/skills/grill-me"><span class="min-w-0 flex flex-col gap-0.5"><span class="text-foreground/95 group-hover:text-foreground text-sm truncate">Grill Me</span><span class="text-xs text-muted-foreground/80 line-clamp-2">Relentlessly interview a plan or design, one question at a time, until every branch of the decision tree is resolved.</span></span><span class="shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/70">2026-06-13</span></a></li><li class="border-b border-white/6 last:border-b-0"><a class="group flex items-baseline justify-between gap-3 py-3 -mx-2 px-2 hover:bg-white/3 transition-colors border-l-2 border-transparent hover:border-foreground
1/30" style="border-radius:1px" href="/vault/ai/skills/humanizer"><span class="min-w-0 flex flex-col gap-0.5"><span class="text-foreground/95 group-hover:text-foreground text-sm truncate">Humanizer</span><span class="text-xs text-muted-foreground/80 line-clamp-2">Remove AI tells from prose so it reads like a person wrote it.</span></span><span class="shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/70">2026-06-13</span></a></li><li class="border-b border-white/6 last:border-b-0"><a class="group flex items-baseline justify-between gap-3 py-3 -mx-2 px-2 hover:bg-white/3 transition-colors border-l-2 border-transparent hover:border-foreground/30" style="border-radius:1px" href="/vault/ai/skills"><span class="min-w-0 flex flex-col gap-0.5"><span class="text-foreground/95 group-hover:text-foreground text-sm truncate">AI Skills</span><span class="text-xs text-muted-foreground/80 line-clamp-2">Reusable operating manuals for LLM agents.</span></span><span class="shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/70">2026-06-13</span></a></li></ul></div><div class="flex flex-col gap-4"><h2 class="flex items-center gap-2 font-mono text-[10px] uppercase tracking-[0.15em] text-muted-foreground"><span aria-hidden="true" class="inline-block h-px w-3 bg-white/15"></span>tags</h2><div class="flex flex-wrap gap-1.5"><a class="inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]" style="border-radius:2px" href="/vault/tags/skill"><span class="text-foreground/90">#<!-- -->skill</span><span class="text-muted-foreground/60 text-[10px] tabular-nums">21</span></a><a class="inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]" style="border-radius:2px" href="/vault/tags/process"><span class="text-foreground/90">#<!-- -->process</span><span class="text-muted-foreground/60 text-[10px] tabular-nums">12</span></a><a class="inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]" style="border-radius:2px" href="/vault/tags/git"><span class="text-foreground/90">#<!-- -->git</span><span class="text-muted-foreground/60 text-[10px] tabular-nums">6</span></a><a class="inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]" style="border-radius:2px" href="/vault/tags/ai"><span class="text-foreground/90">#<!-- -->ai</span><span class="text-muted-foreground/60 text-[10px] tabular-nums">4</span></a><a class="inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]" style="border-radius:2px" href="/vault/tags/frontend"><span class="text-foreground/90">#<!-- -->frontend</span><span class="text-muted-foreground/60 text-[10px] tabular-nums">4</span></a><a class="inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]" style="border-radius:2px" href="/vault/tags/react"><span class="text-foreground/90">#<!-- -->react</span><span class="text-muted-foreground/60 text-[10px] tabular-nums">2</span></a><a class="inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]" style="border-radius:2px" href="/vault/tags/architecture"><span class="text-foreground/90">#<!-- -->architecture</span><span class="text-muted-foreground/60 text-[10px] tabular-nums">1</span></a><a class="inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]" style="border-radius:2px" href="/vault/tags/codebase"><span class="text-foreground/90">#<!-- -->codebase</span>
1<span class="text-muted-foreground/60 text-[10px] tabular-nums">1</span></a><a class="inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]" style="border-radius:2px" href="/vault/tags/communication"><span class="text-foreground/90">#<!-- -->communication</span><span class="text-muted-foreground/60 text-[10px] tabular-nums">1</span></a><a class="inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]" style="border-radius:2px" href="/vault/tags/design"><span class="text-foreground/90">#<!-- -->design</span><span class="text-muted-foreground/60 text-[10px] tabular-nums">1</span></a><a class="inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]" style="border-radius:2px" href="/vault/tags/index"><span class="text-foreground/90">#<!-- -->index</span><span class="text-muted-foreground/60 text-[10px] tabular-nums">1</span></a><a class="inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]" style="border-radius:2px" href="/vault/tags/writing"><span class="text-foreground/90">#<!-- -->writing</span><span class="text-muted-foreground/60 text-[10px] tabular-nums">1</span></a></div></div></section><section class="flex flex-col gap-4"><div class="flex items-baseline justify-between"><h2 class="flex items-center gap-2 font-mono text-[10px] uppercase tracking-[0.15em] text-muted-foreground"><span aria-hidden="true" class="inline-block h-px w-3 bg-white/15"></span>graph</h2><a class="font-mono text-[10px] text-muted-foreground hover:text-foreground transition-colors" href="/vault/graph">open full â</a></div><div class="relative w-full overflow-hidden border border-white/8 bg-[#0b0d0e]/80 [&_canvas]:size-full " style="height:420px;border-radius:2px"><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--></div></section></div><!--$--><!--/$--></div></div></div></main><footer class="z-30 flex flex-col items-center w-full max-w-7xl mx-auto px-6 lg:px-10 py-8 sm:py-12"><div class="w-full grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-12 lg:gap-8"><div><div class="relative flex items-center h-8 cursor-pointer transition-transform duration-150 active:scale-[0.97] motion-reduce:active:scale-100" style="transition-timing-function:var(--ease-out)"><span class="border border-primary px-3 py-1 text-lg font-bold uppercase leading-none tracking-tight text-primary select-none" style="font-family:var(--font-doto), monospace">Stormix</span></div><p class="mt-4 font-mono text-xs text-muted-foreground leading-relaxed max-w-[220px]">Software engineer shipping useful software from Marseille.</p></div><div><h2 class="mb-4 font-mono text-xs uppercase tracking-[0.08em] text-muted-foreground">Sitemap</h2><ul class="flex flex-col gap-3 font-mono text-sm text-muted-foreground"><li><a class="cursor-pointer transition-colors duration-200 hover:text-primary">about</a></li><li><a class="cursor-pointer transition-colors duration-200 hover:text-primary">activity</a></li><li><a class="cursor-pointer transition-colors duration-200 hover:text-primary">resume</a></li><li><a class="cursor-pointer transition-colors duration-200 hover:text-primary">projects</a></li><li><a class="cursor-pointer transition-colors duration-200 hover:text-primary">vault</a></li><li><a class="cursor-pointer transition-colors duration-200 hover:text-primary">contact</a></li></ul></div><div><h2 class="mb-4 font-mono text-xs uppercase tracking-[0.08em] text-muted-foreground">Connect</h2><ul class="flex flex-col gap-3"><li><a href="https://twitter.com/stormix_dev" target="_blank" rel="noreferrer" class="inline-flex items-center gap-2 font-mono text-sm text-muted-foreground transition-colors duration-200 hover:text-primary" style="transition-timing-function:var(--ease-out)"><span class="w-4 text-center"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="twitter" class="svg-inline--fa fa-twitter " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
1<path fill="currentColor" d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path></svg></span><span>Twitter</span></a></li><li><a href="https://github.com/Stormix" target="_blank" rel="noreferrer" class="inline-flex items-center gap-2 font-mono text-sm text-muted-foreground transition-colors duration-200 hover:text-primary" style="transition-timing-function:var(--ease-out)"><span class="w-4 text-center"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="github" class="svg-inline--fa fa-github " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></span><span>Github</span></a></li><li><a href="https://www.linkedin.com/in/anasmazouni/" target="_blank" rel="noreferrer" class="inline-flex items-center gap-2 font-mono text-sm text-muted-foreground transition-colors duration-200 hover:text-primary" style="transition-timing-function:var(--ease-out)"><span class="w-4 text-center"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="linkedin" class="svg-inline--fa fa-linkedin " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg></span><span>LinkedIn</span></a></li><li><a href="https://stackoverflow.com/users/3370660/stormix" target="_blank" rel="noreferrer" class="inline-flex items-center gap-2 font-mono text-sm text-muted-foreground transition-colors duration-200 hover:text-primary" style="transition-timing-function:var(--ease-out)"><span class="w-4 text-center"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="stack-overflow" class="svg-inline--fa fa-stack-overflow " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512">
1<path fill="currentColor" d="M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"></path></svg></span><span>StackOverflow</span></a></li><li><a href="https://discord.com/users/176485196057706496" target="_blank" rel="noreferrer" class="inline-flex items-center gap-2 font-mono text-sm text-muted-foreground transition-colors duration-200 hover:text-primary" style="transition-timing-function:var(--ease-out)"><span class="w-4 text-center"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="discord" class="svg-inline--fa fa-discord " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"></path></svg></span><span>Discord</span></a></li><li><a href="mailto:[email protected]" target="_blank" rel="noreferrer" class="inline-flex items-center gap-2 font-mono text-sm text-muted-foreground transition-colors duration-200 hover:text-primary" style="transition-timing-function:var(--ease-out)"><span class="w-4 text-center"><svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="envelope" class="svg-inline--fa fa-envelope " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M64 112c-8.8 0-16 7.2-16 16l0 22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1l0-22.1c0-8.8-7.2-16-16-16L64 112zM48 212.2L48 384c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-171.8L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128z"></path></svg></span><span>Email</span></a></li></ul></div><div><h2 class="mb-4 font-mono text-xs uppercase tracking-[0.08em] text-muted-foreground">Credits</h2><ul class="flex flex-col gap-3 font-mono text-sm text-muted-foreground"><li><a href="https://brittanychiang.com/" target="_blank" rel="noreferrer" class="transition-colors duration-200 hover:text-primary">Brittany Chang</a></li><li><a href="https://techrez.io/resume/andrew-lu" target="_blank" rel="noreferrer" class="transition-colors duration-200 hover:text-primary">Andrew Lu</a></li><li><a href="https://gurbinder.dev/" target="_blank" rel="noreferrer" class="transition-colors duration-200 hover:text-primary">Gurbinder Singh</a></li></ul></div></div><hr class="w-full my-8 border-border"/><div class="w-full flex flex-col sm:flex-row items-center justify-between gap-4"><div class="flex items-center gap-3 font-mono text-xs text-muted-foreground"><span class="inline-flex items-center gap-1.5"><span class="relative flex h-2 w-2"><span class="absolute inline-flex h-full w-full animate-ping rounded-full bg-emerald-400 opacity-75"></span><span class="relative inline-flex h-2 w-2 rounded-full bg-emerald-500"></span></span><span class="text-foreground">currently @ warren</span></span><span class="hidden sm:inline text-border">·</span><span>marseille, fr</span></div><a href="https://stormix.dev/" target="_blank" rel="noreferrer" class="font-mono text-xs text-muted-foreground transition-colors duration-200 hover:text-primary">© 2015â<!-- -->2026<!-- --> Stormix</a></div><div class="relative w-full overflow-hidden mt-8 select-none pointer-events-none" style="height:clamp(5.5rem, 14vw, 16rem)" aria-hidden="true"><canvas class="absolute inset-0 w-full h-full"></canvas></div></footer></div></div><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$-->
1<script src="/_next/static/chunks/9b2c5451f0b67975.js" id="_R_" async=""></script>
1<script>(self.__next_f=self.__next_f||[]).push([0])</script>
1<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[44636,[\"/_next/static/chunks/683b430f38496863.js\"],\"Providers\"]\n3:I[39756,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/421a37cf1a76b3c0.js\"],\"default\"]\n4:I[37457,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/421a37cf1a76b3c0.js\"],\"default\"]\n5:I[22016,[\"/_next/static/chunks/683b430f38496863.js\",\"/_next/static/chunks/295d483fd0fe7058.js\",\"/_next/static/chunks/567b1d6107d31fa8.js\",\"/_next/static/chunks/8a53a0a8694269a1.js\",\"/_next/static/chunks/035fa6c9ff806f0a.js\",\"/_next/static/chunks/255b1751c0b1ded3.js\",\"/_next/static/chunks/5eeb81960ac65b6e.js\",\"/_next/static/chunks/7cee46e288c759c8.js\"],\"\"]\n6:I[7433,[\"/_next/static/chunks/683b430f38496863.js\"],\"default\"]\nd:I[68027,[],\"default\"]\n:HL[\"/_next/static/chunks/8859af00b3e1b48e.css\",\"style\"]\n:HL[\"/_next/static/media/0e54dc4a88da75bb-s.p.b44d99ab.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/6bb62198a3d8dd21-s.p.63658bd0.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/797e433ab948586e-s.p.29207c2f.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script>
1<script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"T9lvQ7doSCQTisuwkeYJc\",\"c\":[\"\",\"vault\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"(site)\",{\"children\":[\"vault\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/8859af00b3e1b48e.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/683b430f38496863.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"className\":\"dark\",\"children\":[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"className\":\"geist_mono_3f18d4ba-module__FjMTOq__className geist_mono_3f18d4ba-module__FjMTOq__variable space_grotesk_5fe7af91-module__t5t5Va__variable doto_4f592ae7-module__O095IG__variable\",\"children\":[[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Person\\\",\\\"name\\\":\\\"Anas Mazouni\\\",\\\"alternateName\\\":\\\"Stormix\\\",\\\"url\\\":\\\"https://stormix.co\\\",\\\"jobTitle\\\":\\\"Software Engineer\\\",\\\"description\\\":\\\"Software engineer in Marseille, France. Founding engineer at Warren, previously at GitGuardian. I ship useful software in the middle of the AI hype cycle â products, automation, and the boring infrastructure that keeps it all running.\\\",\\\"image\\\":\\\"https://stormix.co/opengraph-image\\\",\\\"worksFor\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"Warren\\\",\\\"url\\\":\\\"https://warren.be/\\\"},\\\"alumniOf\\\":[{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"GitGuardian\\\",\\\"url\\\":\\\"https://www.gitguardian.com/\\\"},{\\\"@type\\\":\\\"EducationalOrganization\\\",\\\"name\\\":\\\"Ãcole Centrale de Nantes\\\",\\\"url\\\":\\\"https://ec-nantes.fr\\\"}],\\\"address\\\":{\\\"@type\\\":\\\"PostalAddress\\\",\\\"addressLocality\\\":\\\"Marseille\\\",\\\"addressCountry\\\":\\\"FR\\\"},\\\"sameAs\\\":[\\\"https://twitter.com/stormix_dev\\\",\\\"https://github.com/Stormix\\\",\\\"https://www.linkedin.com/in/anasmazouni/\\\",\\\"https://stackoverflow.com/users/3370660/stormix\\\"]}\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"WebSite\\\",\\\"name\\\":\\\"Stormix\\\",\\\"url\\\":\\\"https://stormix.co\\\",\\\"description\\\":\\\"Portfolio of Anas Mazouni (Stormix) â Software Engineer\\\",\\\"author\\\":{\\\"@type\\\":\\\"Person\\\",\\\"name\\\":\\\"Anas Mazouni\\\"}}\"}}]],[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"div\",null,{\"className\":\"flex flex-col items-center justify-center w-full min-h-[60vh] gap-6 pt-32 pb-16\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-6xl md:text-8xl font-bold uppercase tracking-tight text-foreground/10\",\"style\":{\"fontFamily\":\"var(--font-doto), monospace\"},\"children\":\"404\"}],[\"$\",\"p\",null,{\"className\":\"font-mono text-sm text-muted-foreground\",\"children\":\"This page doesn't exist.\"}],[\"$\",\"nav\",null,{\"className\":\"flex gap-4 mt-4\",\"children\":[[\"$\",\"$L5\",null,{\"href\":\"/\",\"className\":\"font-mono text-xs uppercase tracking-widest text-foreground/70 hover:text-foreground transition-colors border-b border-white/10 hover:border-white/30 pb-0.5\",\"children\":\"Home\"}],[\"$\",\"$L5\",null,{\"href\":\"/vault\",\"className\":\"font-mono text-xs uppercase tracking-widest text-foreground/70 hover:text-foreground transition-colors border-b border-white/10 hover:border-white/30 pb-0.5\",\"children\":\"Vault\"}],[\"$\",\"$L5\",null,{\"href\":\"/#contact\",\"className\":\"font-mono text-xs uppercase tracking-widest text-foreground
1/70 hover:text-foreground transition-colors border-b border-white/10 hover:border-white/30 pb-0.5\",\"children\":\"Contact\"}]]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$L6\",null,{}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/295d483fd0fe7058.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/567b1d6107d31fa8.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/8a53a0a8694269a1.js\",\"async\":true,\"nonce\":\"$undefined\"}],\"$L7\",\"$L8\"],\"$L9\"]}],{\"children\":[\"$La\",{\"children\":[\"$Lb\",{},null,false,false]},null,false,false]},null,false,false]},null,false,false],\"$Lc\",false]],\"m\":\"$undefined\",\"G\":[\"$d\",[]],\"S\":true}\n"])</script>
1<script>self.__next_f.push([1,"e:I[15334,[\"/_next/static/chunks/683b430f38496863.js\",\"/_next/static/chunks/295d483fd0fe7058.js\",\"/_next/static/chunks/567b1d6107d31fa8.js\",\"/_next/static/chunks/8a53a0a8694269a1.js\",\"/_next/static/chunks/035fa6c9ff806f0a.js\",\"/_next/static/chunks/255b1751c0b1ded3.js\"],\"default\"]\nf:I[97041,[\"/_next/static/chunks/683b430f38496863.js\",\"/_next/static/chunks/295d483fd0fe7058.js\",\"/_next/static/chunks/567b1d6107d31fa8.js\",\"/_next/static/chunks/8a53a0a8694269a1.js\",\"/_next/static/chunks/035fa6c9ff806f0a.js\",\"/_next/static/chunks/255b1751c0b1ded3.js\"],\"default\"]\n10:I[7000,[\"/_next/static/chunks/683b430f38496863.js\",\"/_next/static/chunks/295d483fd0fe7058.js\",\"/_next/static/chunks/567b1d6107d31fa8.js\",\"/_next/static/chunks/8a53a0a8694269a1.js\",\"/_next/static/chunks/035fa6c9ff806f0a.js\",\"/_next/static/chunks/255b1751c0b1ded3.js\"],\"default\"]\n11:I[98044,[\"/_next/static/chunks/683b430f38496863.js\",\"/_next/static/chunks/295d483fd0fe7058.js\",\"/_next/static/chunks/567b1d6107d31fa8.js\",\"/_next/static/chunks/8a53a0a8694269a1.js\",\"/_next/static/chunks/035fa6c9ff806f0a.js\",\"/_next/static/chunks/255b1751c0b1ded3.js\",\"/_next/static/chunks/5eeb81960ac65b6e.js\"],\"VaultToolbar\"]\n12:I[61231,[\"/_next/static/chunks/683b430f38496863.js\",\"/_next/static/chunks/295d483fd0fe7058.js\",\"/_next/static/chunks/567b1d6107d31fa8.js\",\"/_next/static/chunks/8a53a0a8694269a1.js\",\"/_next/static/chunks/035fa6c9ff806f0a.js\",\"/_next/static/chunks/255b1751c0b1ded3.js\",\"/_next/static/chunks/5eeb81960ac65b6e.js\"],\"VaultTree\"]\n1f:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/421a37cf1a76b3c0.js\"],\"ViewportBoundary\"]\n21:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/421a37cf1a76b3c0.js\"],\"MetadataBoundary\"]\n22:\"$Sreact.suspense\"\n7:[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/035fa6c9ff806f0a.js\",\"async\":true,\"nonce\":\"$undefined\"}]\n8:[\"$\",\"script\",\"script-4\",{\"src\":\"/_next/static/chunks/255b1751c0b1ded3.js\",\"async\":true,\"nonce\":\"$undefined\"}]\n"])</script>
1<script>self.__next_f.push([1,"9:[[\"$\",\"$Le\",null,{}],[\"$\",\"div\",null,{\"className\":\"flex flex-col items-center w-full h-full bg-background dark:bg-background text-foreground overflow-hidden\",\"style\":{\"paddingTop\":\"36px\"},\"children\":[\"$\",\"div\",null,{\"className\":\"relative z-10 flex flex-col items-center w-full h-full\",\"children\":[[\"$\",\"$Lf\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex flex-col w-full max-w-7xl mx-auto px-6 md:px-8\",\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"div\",null,{\"className\":\"flex flex-col items-center justify-center w-full min-h-[60vh] gap-6 pt-32 pb-16\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-6xl md:text-8xl font-bold uppercase tracking-tight text-foreground/10\",\"style\":{\"fontFamily\":\"var(--font-doto), monospace\"},\"children\":\"404\"}],[\"$\",\"p\",null,{\"className\":\"font-mono text-sm text-muted-foreground\",\"children\":\"This page doesn't exist.\"}],[\"$\",\"nav\",null,{\"className\":\"flex gap-4 mt-4\",\"children\":[[\"$\",\"$L5\",null,{\"href\":\"/\",\"className\":\"font-mono text-xs uppercase tracking-widest text-foreground/70 hover:text-foreground transition-colors border-b border-white/10 hover:border-white/30 pb-0.5\",\"children\":\"Home\"}],[\"$\",\"$L5\",null,{\"href\":\"/vault\",\"className\":\"font-mono text-xs uppercase tracking-widest text-foreground/70 hover:text-foreground transition-colors border-b border-white/10 hover:border-white/30 pb-0.5\",\"children\":\"Vault\"}],[\"$\",\"$L5\",null,{\"href\":\"/#contact\",\"className\":\"font-mono text-xs uppercase tracking-widest text-foreground/70 hover:text-foreground transition-colors border-b border-white/10 hover:border-white/30 pb-0.5\",\"children\":\"Contact\"}]]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$L10\",null,{}]]}]}]]\n"])</script>
1<script>self.__next_f.push([1,"a:[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/5eeb81960ac65b6e.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"div\",null,{\"className\":\"flex flex-col w-full gap-6 pt-24 md:pt-28 pb-16 isolate\",\"children\":[[\"$\",\"div\",null,{\"className\":\"sticky top-24 z-30\",\"children\":[\"$\",\"$L11\",null,{\"pageCount\":21,\"linkCount\":68}]}],[\"$\",\"div\",null,{\"className\":\"grid grid-cols-1 gap-8 lg:grid-cols-[14rem_minmax(0,1fr)] lg:gap-10\",\"children\":[[\"$\",\"aside\",null,{\"className\":\"hidden lg:block min-w-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"sticky top-44 max-h-[calc(100dvh-12rem)] overflow-y-auto pr-1 -mr-1\",\"children\":[\"$\",\"$L12\",null,{\"tree\":{\"type\":\"root\",\"$ref\":{\"folder\":\"\",\"meta\":\"$undefined\"},\"$id\":\"root\",\"name\":\"Docs\",\"description\":\"$undefined\",\"children\":[{\"type\":\"folder\",\"name\":\"Ai\",\"root\":\"$undefined\",\"defaultOpen\":\"$undefined\",\"description\":\"$undefined\",\"collapsible\":\"$undefined\",\"children\":[{\"type\":\"folder\",\"name\":\"AI Skills\",\"root\":\"$undefined\",\"defaultOpen\":\"$undefined\",\"description\":\"$undefined\",\"collapsible\":\"$undefined\",\"children\":[{\"$id\":\"ai/skills/caveman.md\",\"type\":\"page\",\"name\":\"Caveman\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/caveman\",\"$ref\":\"ai/skills/caveman.md\"},{\"$id\":\"ai/skills/deslop.md\",\"type\":\"page\",\"name\":\"Deslop\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/deslop\",\"$ref\":\"ai/skills/deslop.md\"},{\"$id\":\"ai/skills/find-skills.md\",\"type\":\"page\",\"name\":\"Find Skills\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/find-skills\",\"$ref\":\"ai/skills/find-skills.md\"},{\"$id\":\"ai/skills/fix-ci.md\",\"type\":\"page\",\"name\":\"Fix CI\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/fix-ci\",\"$ref\":\"ai/skills/fix-ci.md\"},{\"$id\":\"ai/skills/fix-merge-conflicts.md\",\"type\":\"page\",\"name\":\"Fix Merge Conflicts\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/fix-merge-conflicts\",\"$ref\":\"ai/skills/fix-merge-conflicts.md\"},{\"$id\":\"ai/skills/frontend-design.md\",\"type\":\"page\",\"name\":\"Frontend Design\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/frontend-design\",\"$ref\":\"ai/skills/frontend-design.md\"},{\"$id\":\"ai/skills/git-conventions.md\",\"type\":\"page\",\"name\":\"Git Conventions\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/git-conventions\",\"$ref\":\"ai/skills/git-conventions.md\"},{\"$id\":\"ai/skills/grill-me.md\",\"type\":\"page\",\"name\":\"Grill Me\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/grill-me\",\"$ref\":\"ai/skills/grill-me.md\"},{\"$id\":\"ai/skills/handoff.md\",\"type\":\"page\",\"name\":\"Handoff\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/handoff\",\"$ref\":\"ai/skills/handoff.md\"},{\"$id\":\"ai/skills/humanizer.md\",\"type\":\"page\",\"name\":\"Humanizer\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/humanizer\",\"$ref\":\"ai/skills/humanizer.md\"},{\"$id\":\"ai/skills/improve-codebase-architecture.md\",\"type\":\"page\",\"name\":\"Improve Codebase Architecture\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/improve-codebase-architecture\",\"$ref\":\"ai/skills/improve-codebase-architecture.md\"},{\"$id\":\"ai/skills/iterate-browser.md\",\"type\":\"page\",\"name\":\"Iterate Browser\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/iterate-browser\",\"$ref\":\"ai/skills/iterate-browser.md\"},{\"$id\":\"ai/skills/recomposing-commits.md\",\"type\":\"page\",\"name\":\"Recomposing Commits\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/recomposing-commits\",\"$ref\":\"ai/skills/recomposing-commits.md\"},{\"$id\":\"ai/skills/request-refactor-plan.md\",\"type\":\"page\",\"name\":\"Request Refactor Plan\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/request-refactor-plan\",\"$ref\":\"ai/skills/request-refactor-plan.md\"},{\"$id\":\"ai/skills/simplify.md\",\"type\":\"page\",\"name\":\"Simplify\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/simplify\",\"$ref\":\"ai/skills/simplify.md\"},{\"$id\":\"ai/skills/split-react-components.md\",\"type\":\"page\",\"name\":\"Split React Components\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/split-react-components\",\"$ref\":\"ai/skills/split-react-components.md\"},{\"$id\":\"ai/skills/thermo-nuclear-code-quality-review.md\",\"type\":\"page\",\"name\":\"Thermo-Nuclear Code Quality Review\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/thermo-nuclear-code-quality-review\",\"$ref\":\"ai/skills/thermo-nuclear-code-quality-review.md\"},{\"$id\":\"ai/skills/weekly-review.md\",\"type\":\"page\",\"name\":\"Weekly Review\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/weekly-review\",\"$ref\":\"ai/skills/weekly-review.md\"},{\"$id\":\"ai/skills/you-might-not-need-an-effect.md\",\"type\":\"page\",\"name\":\"You Might Not Need an Effect\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/you-might-not-need-an-effect\",\"$ref\":\"ai/skills/you-might-not-need-an-effect.md\"},{\"$id\":\"ai/skills/zoom-out.md\",\"type\":\"page\",\"name\":\"Zoom Out\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills/zoom-out\",\"$ref\":\"ai/skills/zoom-out.md\"}],\"$id\":\"ai/skills\",\"$ref\":{\"folder\":\"ai/skills\",\"meta\":\"$undefined\"},\"index\":{\"$id\":\"ai/skills/index.md\",\"type\":\"page\",\"name\":\"AI Skills\",\"description\":\"$undefined\",\"icon\":\"$undefined\",\"url\":\"/vault/ai/skills\",\"$ref\":\"ai/skills/index.md\"},\"icon\":\"$undefined\"}],\"$id\":\"ai\",\"$ref\":{\"folder\":\"ai\",\"meta\":\"$undefined\"},\"icon\":\"$undefined\"}]}}]}]}],\"$L13\"]}]]}]]}]\n"])</script>
1<script>self.__next_f.push([1,"b:[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-12\",\"children\":[[\"$\",\"section\",null,{\"className\":\"flex flex-col gap-4\",\"children\":[[\"$\",\"$L5\",null,{\"href\":\"/vault\",\"aria-label\":\"Vault home\",\"className\":\"block group select-none w-fit\",\"children\":[\"$\",\"h1\",null,{\"className\":\"font-semibold uppercase leading-[0.85] tracking-[-0.04em] text-foreground/0 text-balance\",\"style\":{\"fontFamily\":\"var(--font-doto), monospace\",\"fontSize\":\"clamp(3rem, 10vw, 7rem)\",\"WebkitTextStroke\":\"1.5px var(--foreground)\",\"WebkitMaskImage\":\"linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,0.85) 55%, rgba(0,0,0,0.55) 85%, rgba(0,0,0,0.4) 100%)\",\"maskImage\":\"linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,0.85) 55%, rgba(0,0,0,0.55) 85%, rgba(0,0,0,0.4) 100%)\",\"transition\":\"opacity 240ms var(--ease-out)\"},\"children\":\"vault\"}]}],[\"$\",\"p\",null,{\"className\":\"text-sm text-muted-foreground max-w-xl text-pretty\",\"children\":\"My Obsidian vault, published as a website. Mostly my favorite skills for LLM agents. The rest is notes I want to keep around.\"}]]}],[\"$\",\"section\",null,{\"className\":\"grid grid-cols-1 md:grid-cols-2 gap-10\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-4\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"flex items-center gap-2 font-mono text-[10px] uppercase tracking-[0.15em] text-muted-foreground\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"inline-block h-px w-3 bg-white/15\"}],\"recently updated\"]}],[\"$\",\"ul\",null,{\"role\":\"list\",\"className\":\"flex flex-col\",\"children\":[[\"$\",\"li\",\"/vault/ai/skills/deslop\",{\"className\":\"border-b border-white/6 last:border-b-0\",\"children\":[\"$\",\"$L5\",null,{\"href\":\"/vault/ai/skills/deslop\",\"className\":\"group flex items-baseline justify-between gap-3 py-3 -mx-2 px-2 hover:bg-white/3 transition-colors border-l-2 border-transparent hover:border-foreground
1/30\",\"style\":{\"borderRadius\":\"1px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"min-w-0 flex flex-col gap-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/95 group-hover:text-foreground text-sm truncate\",\"children\":\"Deslop\"}],[\"$\",\"span\",null,{\"className\":\"text-xs text-muted-foreground/80 line-clamp-2\",\"children\":\"Remove AI-generated code slop from a branch diff â unnecessary comments, defensive checks, any-casts, and nested code inconsistent with the surrounding codebase.\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/70\",\"children\":\"2026-06-13\"}]]}]}],[\"$\",\"li\",\"/vault/ai/skills/find-skills\",{\"className\":\"border-b border-white/6 last:border-b-0\",\"children\":[\"$\",\"$L5\",null,{\"href\":\"/vault/ai/skills/find-skills\",\"className\":\"group flex items-baseline justify-between gap-3 py-3 -mx-2 px-2 hover:bg-white/3 transition-colors border-l-2 border-transparent hover:border-foreground
1/30\",\"style\":{\"borderRadius\":\"1px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"min-w-0 flex flex-col gap-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/95 group-hover:text-foreground text-sm truncate\",\"children\":\"Find Skills\"}],[\"$\",\"span\",null,{\"className\":\"text-xs text-muted-foreground/80 line-clamp-2\",\"children\":\"Discover and install agent skills from the open skills ecosystem at skills.sh using the npx skills CLI.\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/70\",\"children\":\"2026-06-13\"}]]}]}],[\"$\",\"li\",\"/vault/ai/skills/fix-ci\",{\"className\":\"border-b border-white/6 last:border-b-0\",\"children\":[\"$\",\"$L5\",null,{\"href\":\"/vault/ai/skills/fix-ci\",\"className\":\"group flex items-baseline justify-between gap-3 py-3 -mx-2 px-2 hover:bg-white/3 transition-colors border-l-2 border-transparent hover:border-foreground/30\",\"style\":{\"borderRadius\":\"1px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"min-w-0 flex flex-col gap-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/95 group-hover:text-foreground text-sm truncate\",\"children\":\"Fix CI\"}],\"$L14\"]}],\"$L15\"]}]}],\"$L16\",\"$L17\",\"$L18\",\"$L19\",\"$L1a\"]}]]}],\"$L1b\"]}],\"$L1c\"]}],[\"$L1d\"],\"$L1e\"]}]\n"])</script>
1<script>self.__next_f.push([1,"c:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L1f\",null,{\"children\":\"$L20\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L21\",null,{\"children\":[\"$\",\"$22\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L23\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\n"])</script>
1<script>self.__next_f.push([1,"29:I[24402,[\"/_next/static/chunks/683b430f38496863.js\",\"/_next/static/chunks/295d483fd0fe7058.js\",\"/_next/static/chunks/567b1d6107d31fa8.js\",\"/_next/static/chunks/8a53a0a8694269a1.js\",\"/_next/static/chunks/035fa6c9ff806f0a.js\",\"/_next/static/chunks/255b1751c0b1ded3.js\",\"/_next/static/chunks/5eeb81960ac65b6e.js\",\"/_next/static/chunks/7cee46e288c759c8.js\"],\"GraphView\"]\n2a:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/421a37cf1a76b3c0.js\"],\"OutletBoundary\"]\n13:[\"$\",\"div\",null,{\"className\":\"min-w-0 w-full\",\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]\n14:[\"$\",\"span\",null,{\"className\":\"text-xs text-muted-foreground/80 line-clamp-2\",\"children\":\"Find the first actionable failure in a PR's CI checks, apply the smallest safe fix, and loop until all checks are green.\"}]\n15:[\"$\",\"span\",null,{\"className\":\"shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/70\",\"children\":\"2026-06-13\"}]\n16:[\"$\",\"li\",\"/vault/ai/skills/fix-merge-conflicts\",{\"className\":\"border-b border-white/6 last:border-b-0\",\"children\":[\"$\",\"$L5\",null,{\"href\":\"/vault/ai/skills/fix-merge-conflicts\",\"className\":\"group flex items-baseline justify-between gap-3 py-3 -mx-2 px-2 hover:bg-white/3 transition-colors border-l-2 border-transparent hover:border-foreground
1/30\",\"style\":{\"borderRadius\":\"1px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"min-w-0 flex flex-col gap-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/95 group-hover:text-foreground text-sm truncate\",\"children\":\"Fix Merge Conflicts\"}],[\"$\",\"span\",null,{\"className\":\"text-xs text-muted-foreground/80 line-clamp-2\",\"children\":\"Resolve merge conflicts non-interactively with correctness-first edits, validate the build, and summarize resolution decisions.\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/70\",\"children\":\"2026-06-13\"}]]}]}]\n17:[\"$\",\"li\",\"/vault/ai/skills/frontend-design\",{\"className\":\"border-b border-white/6 last:border-b-0\",\"children\":[\"$\",\"$L5\",null,{\"href\":\"/vault/ai/skills/frontend-design\",\"className\":\"group flex items-baseline justify-between gap-3 py-3 -mx-2 px-2 hover:bg-white/3 transition-colors border-l-2 border-transparent hover:border-foreground/30\",\"style\":{\"borderRadius\":\"1px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"min-w-0 flex flex-col gap-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/95 group-hover:text-foreground text-sm truncate\",\"children\":\"Frontend Design\"}],[\"$\",\"span\",null,{\"className\":\"text-xs text-muted-foreground/80 line-clamp-2\",\"children\":\"Build distinctive, production-grade frontends instead of generic AI UI.\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/70\",\"children\":\"2026-06-13\"}]]}]}]\n18:[\"$\",\"li\",\"/vault/ai/skills/grill-me\",{\"className\":\"border-b border-white/6 last:border-b-0\",\"children\":[\"$\",\"$L5\",null,{\"href\":\"/vault/ai/skills/grill-me\",\"className\":\"group flex items-baseline justify-between gap-3 py-3 -mx-2 px-2 hover:bg-white/3 transition-colors border-l-2 border-transparent hover:border-foreground
1/30\",\"style\":{\"borderRadius\":\"1px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"min-w-0 flex flex-col gap-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/95 group-hover:text-foreground text-sm truncate\",\"children\":\"Grill Me\"}],[\"$\",\"span\",null,{\"className\":\"text-xs text-muted-foreground/80 line-clamp-2\",\"children\":\"Relentlessly interview a plan or design, one question at a time, until every branch of the decision tree is resolved.\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/70\",\"children\":\"2026-06-13\"}]]}]}]\n19:[\"$\",\"li\",\"/vault/ai/skills/humanizer\",{\"className\":\"border-b border-white/6 last:border-b-0\",\"children\":[\"$\",\"$L5\",null,{\"href\":\"/vault/ai/skills/h"])</script>
1<script>self.__next_f.push([1,"umanizer\",\"className\":\"group flex items-baseline justify-between gap-3 py-3 -mx-2 px-2 hover:bg-white/3 transition-colors border-l-2 border-transparent hover:border-foreground/30\",\"style\":{\"borderRadius\":\"1px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"min-w-0 flex flex-col gap-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/95 group-hover:text-foreground text-sm truncate\",\"children\":\"Humanizer\"}],[\"$\",\"span\",null,{\"className\":\"text-xs text-muted-foreground/80 line-clamp-2\",\"children\":\"Remove AI tells from prose so it reads like a person wrote it.\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/70\",\"children\":\"2026-06-13\"}]]}]}]\n1a:[\"$\",\"li\",\"/vault/ai/skills\",{\"className\":\"border-b border-white/6 last:border-b-0\",\"children\":[\"$\",\"$L5\",null,{\"href\":\"/vault/ai/skills\",\"className\":\"group flex items-baseline justify-between gap-3 py-3 -mx-2 px-2 hover:bg-white/3 transition-colors border-l-2 border-transparent hover:border-foreground
1/30\",\"style\":{\"borderRadius\":\"1px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"min-w-0 flex flex-col gap-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/95 group-hover:text-foreground text-sm truncate\",\"children\":\"AI Skills\"}],[\"$\",\"span\",null,{\"className\":\"text-xs text-muted-foreground/80 line-clamp-2\",\"children\":\"Reusable operating manuals for LLM agents.\"}]]}],[\"$\",\"span\",null,{\"className\":\"shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/70\",\"children\":\"2026-06-13\"}]]}]}]\n"])</script>
1<script>self.__next_f.push([1,"1b:[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-4\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"flex items-center gap-2 font-mono text-[10px] uppercase tracking-[0.15em] text-muted-foreground\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"inline-block h-px w-3 bg-white/15\"}],\"tags\"]}],[\"$\",\"div\",null,{\"className\":\"flex flex-wrap gap-1.5\",\"children\":[[[\"$\",\"$L5\",\"skill\",{\"href\":\"/vault/tags/skill\",\"className\":\"inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]\",\"style\":{\"borderRadius\":\"2px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/90\",\"children\":[\"#\",\"skill\"]}],[\"$\",\"span\",null,{\"className\":\"text-muted-foreground/60 text-[10px] tabular-nums\",\"children\":21}]]}],[\"$\",\"$L5\",\"process\",{\"href\":\"/vault/tags/process\",\"className\":\"inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]\",\"style\":{\"borderRadius\":\"2px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/90\",\"children\":[\"#\",\"process\"]}],[\"$\",\"span\",null,{\"className\":\"text-muted-foreground/60 text-[10px] tabular-nums\",\"children\":12}]]}],[\"$\",\"$L5\",\"git\",{\"href\":\"/vault/tags/git\",\"className\":\"inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]\",\"style\":{\"borderRadius\":\"2px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/90\",\"children\":[\"#\",\"git\"]}],[\"$\",\"span\",null,{\"className\":\"text-muted-foreground/60 text-[10px] tabular-nums\",\"children\":6}]]}],[\"$\",\"$L5\",\"ai\",{\"href\":\"/vault/tags/ai\",\"className\":\"inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]\",\"style\":{\"borderRadius\":\"2px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/90\",\"children\":[\"#\",\"ai\"]}],[\"$\",\"span\",null,{\"className\":\"text-muted-foreground/60 text-[10px] tabular-nums\",\"children\":4}]]}],[\"$\",\"$L5\",\"frontend\",{\"href\":\"/vault/tags/frontend\",\"className\":\"inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]\",\"style\":{\"borderRadius\":\"2px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/90\",\"children\":[\"#\",\"frontend\"]}],[\"$\",\"span\",null,{\"className\":\"text-muted-foreground/60 text-[10px] tabular-nums\",\"children\":4}]]}],[\"$\",\"$L5\",\"react\",{\"href\":\"/vault/tags/react\",\"className\":\"inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]\",\"style\":{\"borderRadius\":\"2px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/90\",\"children\":[\"#\",\"react\"]}],[\"$\",\"span\",null,{\"className\":\"text-muted-foreground/60 text-[10px] tabular-nums\",\"children\":2}]]}],[\"$\",\"$L5\",\"architecture\",{\"href\":\"/vault/tags/architecture\",\"className\":\"inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]\",\"style\":{\"borderRadius\":\"2px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/90\",\"children\":[\"#\",\"architecture\"]}],[\"$\",\"span\",null,{\"className\":\"text-muted-foreground/60 text-[10px] tabular-nums\",\"children\":1}]]}],[\"$\",\"$L5\",\"codebase\",{\"href\":\"/vault/tags/codebase\",\"className\":\"inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]\",\"style\":{\"borderRadius\":\"2px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground
1/90\",\"children\":[\"#\",\"codebase\"]}],[\"$\",\"span\",null,{\"className\":\"text-muted-foreground/60 text-[10px] tabular-nums\",\"children\":1}]]}],[\"$\",\"$L5\",\"communication\",{\"href\":\"/vault/tags/communication\",\"className\":\"inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]\",\"style\":{\"borderRadius\":\"2px\"},\"children\":[\"$L24\",\"$L25\"]}],\"$L26\",\"$L27\",\"$L28\"],false]}]]}]\n"])</script>
1<script>self.__next_f.push([1,"1c:[\"$\",\"section\",null,{\"className\":\"flex flex-col gap-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-baseline justify-between\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"flex items-center gap-2 font-mono text-[10px] uppercase tracking-[0.15em] text-muted-foreground\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"inline-block h-px w-3 bg-white/15\"}],\"graph\"]}],[\"$\",\"$L5\",null,{\"href\":\"/vault/graph\",\"className\":\"font-mono text-[10px] text-muted-foreground hover:text-foreground transition-colors\",\"children\":\"open full â\"}]]}],[\"$\",\"$L29\",null,{\"graph\":{\"nodes\":[{\"id\":\"/vault/ai/skills/caveman\",\"text\":\"Caveman\",\"description\":\"Ultra-terse replies that drop filler while keeping full technical correctness.\",\"url\":\"/vault/ai/skills/caveman\"},{\"id\":\"/vault/ai/skills/deslop\",\"text\":\"Deslop\",\"description\":\"Remove AI-generated code slop from a branch diff â unnecessary comments, defensive checks, any-casts, and nested code inconsistent with the surrounding codebase.\",\"url\":\"/vault/ai/skills/deslop\"},{\"id\":\"/vault/ai/skills/find-skills\",\"text\":\"Find Skills\",\"description\":\"Discover and install agent skills from the open skills ecosystem at skills.sh using the npx skills CLI.\",\"url\":\"/vault/ai/skills/find-skills\"},{\"id\":\"/vault/ai/skills/fix-ci\",\"text\":\"Fix CI\",\"description\":\"Find the first actionable failure in a PR's CI checks, apply the smallest safe fix, and loop until all checks are green.\",\"url\":\"/vault/ai/skills/fix-ci\"},{\"id\":\"/vault/ai/skills/fix-merge-conflicts\",\"text\":\"Fix Merge Conflicts\",\"description\":\"Resolve merge conflicts non-interactively with correctness-first edits, validate the build, and summarize resolution decisions.\",\"url\":\"/vault/ai/skills/fix-merge-conflicts\"},{\"id\":\"/vault/ai/skills/frontend-design\",\"text\":\"Frontend Design\",\"description\":\"Build distinctive, production-grade frontends instead of generic AI UI.\",\"url\":\"/vault/ai/skills/frontend-design\"},{\"id\":\"/vault/ai/skills/git-conventions\",\"text\":\"Git Conventions\",\"description\":\"Conventional commit format and branch naming rules used as a reference when writing commit messages or advising on version control practices.\",\"url\":\"/vault/ai/skills/git-conventions\"},{\"id\":\"/vault/ai/skills/grill-me\",\"text\":\"Grill Me\",\"description\":\"Relentlessly interview a plan or design, one question at a time, until every branch of the decision tree is resolved.\",\"url\":\"/vault/ai/skills/grill-me\"},{\"id\":\"/vault/ai/skills/handoff\",\"text\":\"Handoff\",\"description\":\"Compresses a working session into a document another agent can use to resume without re-reading the whole chat.\",\"url\":\"/vault/ai/skills/handoff\"},{\"id\":\"/vault/ai/skills/humanizer\",\"text\":\"Humanizer\",\"description\":\"Remove AI tells from prose so it reads like a person wrote it.\",\"url\":\"/vault/ai/skills/humanizer\"},{\"id\":\"/vault/ai/skills/improve-codebase-architecture\",\"text\":\"Improve Codebase Architecture\",\"description\":\"Surfaces deepening opportunities so shallow modules become deep, testable seams anchored in domain language and recorded decisions.\",\"url\":\"/vault/ai/skills/improve-codebase-architecture\"},{\"id\":\"/vault/ai/skills\",\"text\":\"AI Skills\",\"description\":\"Reusable operating manuals for LLM agents.\",\"url\":\"/vault/ai/skills\"},{\"id\":\"/vault/ai/skills/iterate-browser\",\"text\":\"Iterate Browser\",\"description\":\"Debug frontend issues autonomously using browser tools and debug traces until the fix is verified â without asking the user to test manually.\",\"url\":\"/vault/ai/skills/iterate-browser\"},{\"id\":\"/vault/ai/skills/recomposing-commits\",\"text\":\"Recomposing Commits\",\"description\":\"Restructure messy branch history into logical commits using worktree isolation and a mandatory review gate.\",\"url\":\"/vault/ai/skills/recomposing-commits\"},{\"id\":\"/vault/ai/skills/request-refactor-plan\",\"text\":\"Request Refactor Plan\",\"description\":\"Interview the user about a refactor, explore the codebase, break the work into tiny commits, and file the plan as a GitHub issue.\",\"url\":\"/vault/ai/skills/request-refactor-plan\"},{\"id\":\"/vault/ai/skills/simplify\",\"text\":\"Simplify\",\"description\":\"Simplify scoped code with parallel read-only review subagents, then apply targeted cleanup fixes without a large refactor.\",\"url\":\"/vault/ai/skills/simplify\"},{\"id\":\"/vault/ai/skills/split-react-components\",\"text\":\"Split React Components\",\"description\":\"Extract inlined sub-components, icons, and data constants out of bloated React files into single-responsibility files.\",\"url\":\"/vault/ai/skills/split-react-components\"},{\"id\":\"/vault/ai/skills/thermo-nuclear-code-quality-review\",\"text\":\"Thermo-Nuclear Code Quality Review\",\"description\":\"An unusually strict code review focu
1sed on structural ambition, abstraction quality, and deleting complexity rather than rearranging it.\",\"url\":\"/vault/ai/skills/thermo-nuclear-code-quality-review\"},{\"id\":\"/vault/ai/skills/weekly-review\",\"text\":\"Weekly Review\",\"description\":\"Synthesize shipped commits from the past 7â10 days into a short categorized summary with highlights by bug fix, tech debt, and new functionality.\",\"url\":\"/vault/ai/skills/weekly-review\"},{\"id\":\"/vault/ai/skills/you-might-not-need-an-effect\",\"text\":\"You Might Not Need an Effect\",\"description\":\"Audit React code for useEffect anti-patterns per react.dev guidelines and optionally apply fixes in place.\",\"url\":\"/vault/ai/skills/you-might-not-need-an-effect\"},{\"id\":\"/vault/ai/skills/zoom-out\",\"text\":\"Zoom Out\",\"description\":\"Asks for a higher-level map of modules, callers, and domain vocabulary before diving into unfamiliar code.\",\"url\":\"/vault/ai/skills/zoom-out\"}],\"links\":[{\"source\":\"/vault/ai/skills/caveman\",\"target\":\"/vault/ai/skills/humanizer\"},{\"source\":\"/vault/ai/skills/caveman\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/deslop\",\"target\":\"/vault/ai/skills/split-react-components\"},{\"source\":\"/vault/ai/skills/deslop\",\"target\":\"/vault/ai/skills/you-might-not-need-an-effect\"},{\"source\":\"/vault/ai/skills/deslop\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/find-skills\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/fix-ci\",\"target\":\"/vault/ai/skills/fix-merge-conflicts\"},{\"source\":\"/vault/ai/skills/fix-ci\",\"target\":\"/vault/ai/skills/git-conventions\"},{\"source\":\"/vault/ai/skills/fix-ci\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/fix-merge-conflicts\",\"target\":\"/vault/ai/skills/fix-ci\"},{\"source\":\"/vault/ai/skills/fix-merge-conflicts\",\"target\":\"/vault/ai/skills/git-conventions\"},{\"source\":\"/vault/ai/skills/fix-merge-conflicts\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/frontend-design\",\"target\":\"/vault/ai/skills/humanizer\"},{\"source\":\"/vault/ai/skills/frontend-design\",\"target\":\"/vault/ai/skills/split-react-components\"},{\"source\":\"/vault/ai/skills/frontend-design\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/git-conventions\",\"target\":\"/vault/ai/skills/fix-ci\"},{\"source\":\"/vault/ai/skills/git-conventions\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/grill-me\",\"target\":\"/vault/ai/skills/request-refactor-plan\"},{\"source\":\"/vault/ai/skills/grill-me\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/handoff\",\"target\":\"/vault/ai/skills/request-refactor-plan\"},{\"source\":\"/vault/ai/skills/handoff\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/humanizer\",\"target\":\"/vault/ai/skills/frontend-design\"},{\"source\":\"/vault/ai/skills/humanizer\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/improve-codebase-architecture\",\"target\":\"/vault/ai/skills/grill-me\"},{\"source\":\"/vault/ai/skills/improve-codebase-architecture\",\"target\":\"/vault/ai/skills/request-refactor-plan\"},{\"source\":\"/vault/ai/skills/improve-codebase-architecture\",\"target\":\"/vault/ai/skills/zoom-out\"},{\"source\":\"/vault/ai/skills/improve-codebase-architecture\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/humanizer\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/frontend-design\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/find-skills\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/git-conventions\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/grill-me\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/iterate-browser\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/request-refactor-plan\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/split-react-components\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/weekly-review\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/you-might-not-need-an-effect\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/deslop\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/fix-ci\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/fix-merge-conflicts\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/caveman\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/handoff\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/improve-codebase-architecture\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/zoom-out\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/recomposing-commits\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/thermo-nuclear-code-quality-review\"},{\"source\":\"/vault/ai/skills\",\"target\":\"/vault/ai/skills/simplify\"},{\"source\":\"/vault/ai/skills/iterate-browser\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/recomposing-commits\",\"target\":\"/vault/ai/skills/git-conventions\"},{\"source\":\"/vault/ai/skills/recomposing-commits\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/request-refactor-plan\",\"target\":\"/vault/ai/skills/grill-me\"},{\"source\":\"/vault/ai/skills/request-refactor-plan\",\"target\":\"/vault/ai/skills/git-conventions\"},{\"source\":\"/vault/ai/skills/request-refactor-plan\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/simplify\",\"target\":\"/vault/ai/skills/deslop\"},{\"source\":\"/vault/ai/skills/simplify\",\"target\":\"/vault/ai/skills/thermo-nuclear-code-quality-review\"},{\"source\":\"/vault/ai/skills/simplify\",\"target\":\"/vault/ai/skills/improve-codebase-architecture\"},{\"source\":\"/vault/ai/skills/simplify\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/split-react-components\",\"target\":\"/vault/ai/skills/frontend-design\"},{\"source\":\"/vault/ai/skills/split-react-components\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/thermo-nuclear-code-quality-review\",\"target\":\"/vault/ai/skills/improve-codebase-architecture\"},{\"source\":\"/vault/ai/skills/thermo-nuclear-code-quality-review\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/weekly-review\",\"target\":\"/vault/ai/skills/git-conventions\"},{\"source\":\"/vault/ai/skills/weekly-review\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/you-might-not-need-an-effect\",\"target\":\"/vault/ai/skills/split-react-components\"},{\"source\":\"/vault/ai/skills/you-might-not-need-an-effect\",\"target\":\"/vault/ai/skills/frontend-design\"},{\"source\":\"/vault/ai/skills/you-might-not-need-an-effect\",\"target\":\"/vault/ai/skills\"},{\"source\":\"/vault/ai/skills/zoom-out\",\"target\":\"/vault/ai/skills/improve-codebase-architecture\"},{\"source\":\"/vault/ai/skills/zoom-out\",\"target\":\"/vault/ai/skills\"}]}
1,\"height\":420}]]}]\n"])</script>
1<script>self.__next_f.push([1,"1d:[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/7cee46e288c759c8.js\",\"async\":true,\"nonce\":\"$undefined\"}]\n1e:[\"$\",\"$L2a\",null,{\"children\":[\"$\",\"$22\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@2b\"}]}]\n"])</script>
1<script>self.__next_f.push([1,"24:[\"$\",\"span\",null,{\"className\":\"text-foreground/90\",\"children\":[\"#\",\"communication\"]}]\n25:[\"$\",\"span\",null,{\"className\":\"text-muted-foreground/60 text-[10px] tabular-nums\",\"children\":1}]\n26:[\"$\",\"$L5\",\"design\",{\"href\":\"/vault/tags/design\",\"className\":\"inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]\",\"style\":{\"borderRadius\":\"2px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/90\",\"children\":[\"#\",\"design\"]}],[\"$\",\"span\",null,{\"className\":\"text-muted-foreground/60 text-[10px] tabular-nums\",\"children\":1}]]}]\n27:[\"$\",\"$L5\",\"index\",{\"href\":\"/vault/tags/index\",\"className\":\"inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]\",\"style\":{\"borderRadius\":\"2px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/90\",\"children\":[\"#\",\"index\"]}],[\"$\",\"span\",null,{\"className\":\"text-muted-foreground/60 text-[10px] tabular-nums\",\"children\":1}]]}]\n28:[\"$\",\"$L5\",\"writing\",{\"href\":\"/vault/tags/writing\",\"className\":\"inline-flex items-baseline gap-2 px-2.5 py-1 border border-white/8 bg-white/2 hover:bg-white/6 hover:border-white/16 transition-colors font-mono text-[11px]\",\"style\":{\"borderRadius\":\"2px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground/90\",\"children\":[\"#\",\"writing\"]}],[\"$\",\"span\",null,{\"className\":\"text-muted-foreground/60 text-[10px] tabular-nums\",\"children\":1}]]}]\n"])</script>
1<script>self.__next_f.push([1,"20:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script>
1<script>self.__next_f.push([1,"2c:I[27201,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/421a37cf1a76b3c0.js\"],\"IconMark\"]\n"])</script>
1<script>self.__next_f.push([1,"23:[[\"$\",\"title\",\"0\",{\"children\":\"Vault · Anas Mazouni\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"My Obsidian vault, published as a website. Mostly my favorite skills for LLM agents, with the odd note I want to keep around.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"author\",\"href\":\"https://stormix.co\"}],[\"$\",\"meta\",\"3\",{\"name\":\"author\",\"content\":\"Anas Mazouni\"}],[\"$\",\"meta\",\"4\",{\"name\":\"keywords\",\"content\":\"Anas Mazouni,Stormix,software engineer,founding engineer,web developer,TypeScript,Next.js,React,Node.js,DevSecOps,automation,Warren,GitGuardian,Marseille,France\"}],[\"$\",\"meta\",\"5\",{\"name\":\"creator\",\"content\":\"Anas Mazouni\"}],[\"$\",\"meta\",\"6\",{\"name\":\"publisher\",\"content\":\"Anas Mazouni\"}],[\"$\",\"meta\",\"7\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"8\",{\"name\":\"googlebot\",\"content\":\"index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1\"}],[\"$\",\"meta\",\"9\",{\"name\":\"category\",\"content\":\"technology\"}],[\"$\",\"link\",\"10\",{\"rel\":\"canonical\",\"href\":\"https://stormix.co/vault\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:title\",\"content\":\"Vault · Anas Mazouni\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:description\",\"content\":\"My Obsidian vault, published as a website. Mostly my favorite skills for LLM agents, with the odd note I want to keep around.\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:url\",\"content\":\"https://stormix.co/vault\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:creator\",\"content\":\"@stormix_dev\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:title\",\"content\":\"Anas Mazouni â Software Engineer (Stormix)\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:description\",\"content\":\"Software engineer in Marseille. Founding engineer at Warren, ex-GitGuardian. Quietly shipping in the AI era.\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:image\",\"content\":\"https://stormix.co/opengraph-image\"}],[\"$\",\"link\",\"20\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0b3bf435.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"21\",{\"rel\":\"icon\",\"href\":\"/icon?f2de397a72f446ab\",\"alt\":\"$undefined\",\"type\":\"image/png\",\"sizes\":\"32x32\"}],[\"$\",\"link\",\"22\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon?e8f884c40ef709e8\",\"alt\":\"$undefined\",\"type\":\"image/png\",\"sizes\":\"180x180\"}],[\"$\",\"$L2c\",\"23\",{}]]\n"])</script>
1<script>self.__next_f.push([1,"2b:null\n"])</script>
1</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.