[{"data":1,"prerenderedAt":160},["ShallowReactive",2],{"blog-translations":3,"projects-en":14},{"\u002Fblog\u002Fcomo-hacer-migraciones-con-claude-code-y-no-morir-en-el-intento\u002F":4,"\u002Fen\u002Fblog\u002Fhow-to-migrate-with-claude-code-and-not-die-trying\u002F":5,"\u002Fblog\u002Fcontext-architecture-el-repo-entero-es-contexto\u002F":6,"\u002Fen\u002Fblog\u002Fcontext-architecture-the-whole-repo-is-the-context\u002F":7,"\u002Fblog\u002Flo-que-aprendi-construyendo-design-systems-y-que-haria-diferente\u002F":8,"\u002Fen\u002Fblog\u002Fwhat-i-learned-building-design-systems-and-what-i-would-do-differently\u002F":9,"\u002Fblog\u002Foxlint-tailwindcss-el-plugin-de-linting-que-tailwindcss-necesitaba\u002F":10,"\u002Fen\u002Fblog\u002Foxlint-tailwindcss-the-linting-plugin-tailwind-v4-needed\u002F":11,"\u002Fblog\u002Fscreaming-architecture-la-clave-para-un-frontend-escalable\u002F":12,"\u002Fen\u002Fblog\u002Fscreaming-architecture-the-key-to-scalable-frontend\u002F":13},"\u002Fen\u002Fblog\u002Fhow-to-migrate-with-claude-code-and-not-die-trying\u002F","\u002Fblog\u002Fcomo-hacer-migraciones-con-claude-code-y-no-morir-en-el-intento\u002F","\u002Fen\u002Fblog\u002Fcontext-architecture-the-whole-repo-is-the-context\u002F","\u002Fblog\u002Fcontext-architecture-el-repo-entero-es-contexto\u002F","\u002Fen\u002Fblog\u002Fwhat-i-learned-building-design-systems-and-what-i-would-do-differently\u002F","\u002Fblog\u002Flo-que-aprendi-construyendo-design-systems-y-que-haria-diferente\u002F","\u002Fen\u002Fblog\u002Foxlint-tailwindcss-the-linting-plugin-tailwind-v4-needed\u002F","\u002Fblog\u002Foxlint-tailwindcss-el-plugin-de-linting-que-tailwindcss-necesitaba\u002F","\u002Fen\u002Fblog\u002Fscreaming-architecture-the-key-to-scalable-frontend\u002F","\u002Fblog\u002Fscreaming-architecture-la-clave-para-un-frontend-escalable\u002F",[15,55,86,112,134],{"id":16,"title":17,"body":18,"date":35,"description":36,"extension":37,"kind":38,"links":39,"meta":43,"navigation":44,"order":45,"outcome":46,"path":47,"quote":48,"seo":49,"stem":50,"union":51,"url":52,"urlLabel":53,"__hash__":54},"projects_en\u002Fprojects\u002Fen\u002Fh3-percent-encoding.md","h3: preserve percent-encoded req.url for HTTP proxies",{"type":19,"value":20,"toc":30},"minimark",[21],[22,23,24,25,29],"p",{},"After a security fix, h3 (the HTTP router behind Nitro and Nuxt) was decoding ",[26,27,28],"code",{},"req.url"," and breaking any proxy that expected the URL percent-encoded. nuxt-og-image OG images with accented characters returned 400 in the dev server. I reported the issue, proposed the fix and opened the PR, merged in h3 v1.x.",{"title":31,"searchDepth":32,"depth":33,"links":34},"",2,3,[],"2026-03-22","OG images with accented characters returned 400 in the Nuxt dev server. I reported it, proposed the fix and opened the PR.","md","contribution",[40],{"label":41,"url":42},"View issue","https:\u002F\u002Fgithub.com\u002Fh3js\u002Fh3\u002Fissues\u002F1354",{},true,"1","PR merged","\u002Fprojects\u002Fen\u002Fh3-percent-encoding",null,{"title":17,"description":36},"projects\u002Fen\u002Fh3-percent-encoding","h3-percent-encoding","https:\u002F\u002Fgithub.com\u002Fh3js\u002Fh3\u002Fpull\u002F1355","View PR","RARTpPl3V8xRCgoISCjRgkJcJJO-N-DVOGXurQZzw18",{"id":56,"title":57,"body":58,"date":48,"description":65,"extension":37,"kind":66,"links":67,"meta":74,"navigation":44,"order":45,"outcome":48,"path":75,"quote":76,"seo":81,"stem":82,"union":57,"url":83,"urlLabel":84,"__hash__":85},"projects_en\u002Fprojects\u002Fen\u002Foxlint-tailwindcss.md","oxlint-tailwindcss",{"type":19,"value":59,"toc":63},[60],[22,61,62],{},"A native oxlint plugin for Tailwind CSS v4. Autofix and zero-config, built from the ground up for Tailwind v4 and used in production in monorepos with millions of lines.",{"title":31,"searchDepth":32,"depth":33,"links":64},[],"A native oxlint plugin for Tailwind CSS v4, with autofix.","project",[68,71],{"label":69,"url":70},"npm","https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Foxlint-tailwindcss",{"label":72,"url":73},"Read how I built it","https:\u002F\u002Fsergioazocar.com\u002Fen\u002Fblog\u002Foxlint-tailwindcss-the-linting-plugin-tailwind-v4-needed\u002F",{},"\u002Fprojects\u002Fen\u002Foxlint-tailwindcss",{"text":77,"author":78,"role":79,"url":80},"We use it internally in a 3M lines monorepo, and a full type-aware check is still ~1.2s. Amazing work from @sergioazoc.","Felipe Torres","CTO & Co-Founder, Skyward","https:\u002F\u002Fx.com\u002Ffforres\u002Fstatus\u002F2044481779306823819",{"title":57,"description":65},"projects\u002Fen\u002Foxlint-tailwindcss","https:\u002F\u002Fgithub.com\u002Fsergioazoc\u002Foxlint-tailwindcss","GitHub","qE7osNMy1lM_qF434VZe_nsQIiM5wOzxfAFn_e8wtgU",{"id":87,"title":88,"body":89,"date":100,"description":101,"extension":37,"kind":38,"links":102,"meta":103,"navigation":44,"order":104,"outcome":105,"path":106,"quote":48,"seo":107,"stem":108,"union":109,"url":110,"urlLabel":41,"__hash__":111},"projects_en\u002Fprojects\u002Fen\u002Fastro-prerender-errors.md","@astrojs\u002Fcloudflare: surface errors from the prerender server",{"type":19,"value":90,"toc":98},[91],[22,92,93,94,97],{},"The Cloudflare adapter's prerenderer dropped the body of workerd's 500 responses and returned an opaque error that hid the real cause (for example, ",[26,95,96],{},"GetStaticPathsRequired","). I filed the issue with a patch and the Astro team applied it two days later.",{"title":31,"searchDepth":32,"depth":33,"links":99},[],"2026-03-11","The prerenderer dropped the body of 500 responses and hid the real cause. The Astro team applied my patch.",[],{},"2","Issue with a patch","\u002Fprojects\u002Fen\u002Fastro-prerender-errors",{"title":88,"description":101},"projects\u002Fen\u002Fastro-prerender-errors","astro-prerender-errors","https:\u002F\u002Fgithub.com\u002Fwithastro\u002Fastro\u002Fissues\u002F15860","BdGL918BLwelBFRpBNnXQVVPkpfjXuo0GDouf1pCZIM",{"id":113,"title":114,"body":115,"date":48,"description":122,"extension":37,"kind":66,"links":123,"meta":126,"navigation":44,"order":104,"outcome":48,"path":127,"quote":48,"seo":128,"stem":129,"union":130,"url":131,"urlLabel":132,"__hash__":133},"projects_en\u002Fprojects\u002Fen\u002Fhollware.md","Hollware",{"type":19,"value":116,"toc":120},[117],[22,118,119],{},"An open-source CMS for agents, native to Cloudflare. The content of this site (posts, talks, projects and links) lives there.",{"title":31,"searchDepth":32,"depth":33,"links":121},[],"A CMS for agents, native to Cloudflare. This site is managed with it.",[124],{"label":84,"url":125},"https:\u002F\u002Fgithub.com\u002Fhollware\u002Fhollware",{},"\u002Fprojects\u002Fen\u002Fhollware",{"title":114,"description":122},"projects\u002Fen\u002Fhollware","hollware","https:\u002F\u002Fhollware.com","hollware.com","Ccat4pqLlSgRoA9E_Pz1wiRubo8Djsi7aARnJZZnm1A",{"id":135,"title":136,"body":137,"date":48,"description":144,"extension":37,"kind":66,"links":145,"meta":151,"navigation":44,"order":152,"outcome":48,"path":153,"quote":48,"seo":154,"stem":155,"union":156,"url":157,"urlLabel":158,"__hash__":159},"projects_en\u002Fprojects\u002Fen\u002Fcontext-architecture.md","Context Architecture",{"type":19,"value":138,"toc":142},[139],[22,140,141],{},"The practice I created to structure a repo so its intent and behavior are equally legible to people and agents. The repo is the context: they trust the code, not your prompt.",{"title":31,"searchDepth":32,"depth":33,"links":143},[],"How to structure a repo so people and agents understand it the same way.",[146,148],{"label":84,"url":147},"https:\u002F\u002Fgithub.com\u002Fsergioazoc\u002Fcontext-architecture",{"label":149,"url":150},"Read the post","https:\u002F\u002Fsergioazocar.com\u002Fen\u002Fblog\u002Fcontext-architecture-the-whole-repo-is-the-context\u002F",{},"3","\u002Fprojects\u002Fen\u002Fcontext-architecture",{"title":136,"description":144},"projects\u002Fen\u002Fcontext-architecture","context-architecture","https:\u002F\u002Fcontext-architecture.dev","context-architecture.dev","xpafp9i_WDqkZsZ4y7iFhLtG7YHAMhx3Ft3lGgOj0gU",1792609490336]