<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Jordi López</title><description>Random thoughts</description><link>https://jordilopez.dev/</link><item><title>Git, redact, and cdp extensions went hexagonal</title><link>https://jordilopez.dev/posts/pi-setup/git-redact-and-cdp-extensions-went-hexagonal/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-setup/git-redact-and-cdp-extensions-went-hexagonal/</guid><description>Spent the evening rebuilding the git, redact, and cdp extensions in [pi-setup](https://github.com/jordilopez/pi-setup) around ports and adapters: tool logic now lives in a pure domain layer with the Pi-specific glue behind small interfaces and fakes. Tests moved next to the source while I was at it, so each extension carries its own specs.</description><pubDate>Wed, 28 Oct 2026 05:41:11 GMT</pubDate></item><item><title>A branch-cleanup tool and tidier attribution for pi-setup</title><link>https://jordilopez.dev/posts/pi-setup/a-branch-cleanup-tool-and-tidier-attribution-for-pi-setup/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-setup/a-branch-cleanup-tool-and-tidier-attribution-for-pi-setup/</guid><description>[pi-setup](https://github.com/jordilopez/pi-setup) gained a git_prune_merged_branches tool, so agents can clean up merged branches without hand-running the git incantation. While in there, the design-tokens skill&apos;s attribution wording got a small correctness fix.</description><pubDate>Tue, 27 Oct 2026 21:34:49 GMT</pubDate></item><item><title>No One Will Save You</title><link>https://jordilopez.dev/posts/movie/no-one-will-save-you/</link><guid isPermaLink="true">https://jordilopez.dev/posts/movie/no-one-will-save-you/</guid><description>Big surprise from [Brian Duffield](https://www.imdb.com/name/nm3929259/), and amazing performance by [Kaitlin Dever](https://www.imdb.com/name/nm3239803).

Movie fact: in the whole movie there are only 5 spoken words.</description><pubDate>Tue, 27 Oct 2026 00:00:00 GMT</pubDate></item><item><title>pi-smart-router now judges each provider on its own merits</title><link>https://jordilopez.dev/posts/pi-smart-router/pi-smart-router-now-judges-each-provider-on-its-own-merits/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-smart-router/pi-smart-router-now-judges-each-provider-on-its-own-merits/</guid><description>[pi-smart-router](https://github.com/jordilopez/pi-smart-router) now classifies each provider on its own merits when you call `setup-tiers`, instead of collapsing them into a single global winner — so when one catalogue says a model is the cheapest and another says it&apos;s the strongest, both can win on their own merits. The same day quieted the dependency noise around it: Dependabot auto-merge for patches, a TypeScript major, and a pass on the high and critical advisories. The toolkit now pins Node 22 and has CI read it, so runtime expectations stop drifting silently across major bumps.</description><pubDate>Sun, 25 Oct 2026 20:39:55 GMT</pubDate></item><item><title>Kept pi-smart-router current with the platform it runs on</title><link>https://jordilopez.dev/posts/pi-smart-router/kept-pi-smart-router-current-with-the-platform-it-runs-on/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-smart-router/kept-pi-smart-router-current-with-the-platform-it-runs-on/</guid><description>Dependency housekeeping on [pi-smart-router](https://github.com/jordilopez/pi-smart-router): the toolkit now runs against the latest pi-coding-agent, and the Node type definitions jumped several majors to catch up with the runtime.</description><pubDate>Sun, 25 Oct 2026 20:32:31 GMT</pubDate></item><item><title>Dependabot auto-merge is now live across the Pi agent projects</title><link>https://jordilopez.dev/posts/pi-agent-skills/dependabot-auto-merge-is-now-live-across-the-pi-agent-projects/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-agent-skills/dependabot-auto-merge-is-now-live-across-the-pi-agent-projects/</guid><description>Dependabot auto-merge for patch and minor bumps is now live on [pi-agent-skills](https://github.com/jordilopez/pi-agent-skills) and [pi-setup](https://github.com/jordilopez/pi-setup). The same workflow covers the dev-tooling group on pi-setup, and the README now steers you to a review skill based on the kind of change you&apos;re shipping. Pinning the noisy minors saves a review round without losing the majors to drift.</description><pubDate>Thu, 22 Oct 2026 06:47:11 GMT</pubDate></item><item><title>A sibling-count demo joins the CSS experiments</title><link>https://jordilopez.dev/posts/css-demos/a-sibling-count-demo-joins-the-css-experiments/</link><guid isPermaLink="true">https://jordilopez.dev/posts/css-demos/a-sibling-count-demo-joins-the-css-experiments/</guid><description>Kicked off a new experiment over on [css-sibling-count](https://github.com/jordilopez/css-sibling-count) — a small live [demo](https://jordilopez.github.io/css-sibling-count/) exploring what you can do once sibling-count() is available, from highlighting the middle item in a list to scaling things based on how many siblings are present. First commit landed along with the demo itself.</description><pubDate>Mon, 19 Oct 2026 10:47:35 GMT</pubDate></item><item><title>A design-tokens skill for Pi agents</title><link>https://jordilopez.dev/posts/pi-setup/a-design-tokens-skill-for-pi-agents/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-setup/a-design-tokens-skill-for-pi-agents/</guid><description>Added a design-tokens skill to [pi-setup](https://github.com/jordilopez/pi-setup) — it teaches agents the Asana-style naming convention for colour tokens, where a token reads like `positive-surface-raised` instead of `green-300`. Usage describes the role rather than the CSS property, so each token stays single-purpose and themeable. One skill, one convention, no more ad-hoc colour names.</description><pubDate>Mon, 19 Oct 2026 04:46:43 GMT</pubDate></item><item><title>A tidy fix for the notice component</title><link>https://jordilopez.dev/posts/css-demos/a-tidy-fix-for-the-notice-component/</link><guid isPermaLink="true">https://jordilopez.dev/posts/css-demos/a-tidy-fix-for-the-notice-component/</guid><description>Small but satisfying fix on [css-grid-lanes](https://github.com/jordilopez/css-grid-lanes): the demo&apos;s callout notice no longer lingers on screen when the `hidden` attribute is set. Turns out the base styles were overriding the UA default, so the component stayed visible — a one-liner to hide it properly, and the demo behaves as expected again.</description><pubDate>Sun, 18 Oct 2026 21:05:55 GMT</pubDate></item><item><title>Launching a css-if demo</title><link>https://jordilopez.dev/posts/css-demos/launching-a-css-if-demo/</link><guid isPermaLink="true">https://jordilopez.dev/posts/css-demos/launching-a-css-if-demo/</guid><description>Launched [css-if](https://github.com/jordilopez/css-if), a [live demo](https://jordilopez.github.io/css-if/) for the CSS `if()` inline conditional function that landed in Chrome and Edge 137. It walks through six examples — `supports()`, `media()`, `style()`, combined and negated conditions, multiple branches, and a nested `if()` — all driven by pure CSS radios and `:has()`, no JavaScript. The page feature-detects support and shows a fallback in browsers that don&apos;t have it yet, and deploys to GitHub Pages on merge. Styling builds on [css-starter](https://github.com/jordilopez/css-starter), reusing its picker and callout components.</description><pubDate>Sun, 18 Oct 2026 21:02:09 GMT</pubDate></item><item><title>Dependabot everywhere</title><link>https://jordilopez.dev/posts/pi-agent-skills/dependabot-everywhere/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-agent-skills/dependabot-everywhere/</guid><description>Spent the morning wiring up automated dependency management: both [pi-agent-skills](https://github.com/jordilopez/pi-agent-skills) and [pi-setup](https://github.com/jordilopez/pi-setup) now have Dependabot config with a CI workflow to validate it.

As a bonus, Dependabot immediately started doing its job — a first wave of action runner and dev-tooling bumps is already queued as pull requests.</description><pubDate>Thu, 15 Oct 2026 13:43:59 GMT</pubDate></item><item><title>pi-setup gained a git_create_pr tool</title><link>https://jordilopez.dev/posts/pi-setup/pi-setup-gained-a-git-create-pr-tool/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-setup/pi-setup-gained-a-git-create-pr-tool/</guid><description>Added a proper `git_create_pr` tool to [pi-setup](https://github.com/jordilopez/pi-setup), with tests covering the PR state classification (new vs. update) so the branching logic is proven rather than guessed. The git-create-pr skill now just delegates to the tool instead of hand-rolling the push-and-open dance every time.</description><pubDate>Sat, 10 Oct 2026 16:49:25 GMT</pubDate></item><item><title>Colour tokens got a four-axis naming convention</title><link>https://jordilopez.dev/posts/css-starter/colour-tokens-got-a-four-axis-naming-convention/</link><guid isPermaLink="true">https://jordilopez.dev/posts/css-starter/colour-tokens-got-a-four-axis-naming-convention/</guid><description>Rebuilt the colour token naming in [css-starter](https://github.com/jordilopez/css-starter) around an Asana-style four-axis convention, so a token&apos;s name tells you exactly where and how it&apos;s allowed to be used. The naming reference now lists every cross-usage call site, and a guardrail script enforces the convention so the naming can&apos;t quietly drift again.</description><pubDate>Sat, 10 Oct 2026 10:58:09 GMT</pubDate></item><item><title>Hope</title><link>https://jordilopez.dev/posts/movie/hope/</link><guid isPermaLink="true">https://jordilopez.dev/posts/movie/hope/</guid><description>Maybe it&apos;s not the best movie of [Na Hong-jin](https://www.imdb.com/es/name/nm2947553/)&apos;s filmography, but it&apos;s probably (in my opinion) the best action movie of the year.</description><pubDate>Fri, 09 Oct 2026 16:49:25 GMT</pubDate></item><item><title>Artificial Analysis benchmarks now feed pi-smart-router&apos;s tiers</title><link>https://jordilopez.dev/posts/pi-smart-router/artificial-analysis-benchmarks-now-feed-pi-smart-router-s-tiers/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-smart-router/artificial-analysis-benchmarks-now-feed-pi-smart-router-s-tiers/</guid><description>Folded [Artificial Analysis](https://artificialanalysis.ai/) benchmark data into [pi-smart-router](https://github.com/jordilopez/pi-smart-router) tier classification. The fast tier now requires measured latency instead of guessing from specs, and a balanced pick bumped out of the way by a collision gets re-homed from the fast or powerful runner-ups. Also migrated the AA integration to their newer paginated models endpoint.</description><pubDate>Mon, 05 Oct 2026 21:27:57 GMT</pubDate></item><item><title>Cost-aware tier classification comes to pi-smart-router</title><link>https://jordilopez.dev/posts/pi-smart-router/cost-aware-tier-classification-comes-to-pi-smart-router/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-smart-router/cost-aware-tier-classification-comes-to-pi-smart-router/</guid><description>Tightened how [pi-smart-router](https://github.com/jordilopez/pi-smart-router) picks its tier models. The router now dedupes models that show up across multiple providers under different names, and tier classification is cost-aware — cheaper candidates win when specs tie, so the routes sort by what they actually cost.</description><pubDate>Sat, 03 Oct 2026 19:21:02 GMT</pubDate></item><item><title>Upgraded pi-smart-router to virtual models</title><link>https://jordilopez.dev/posts/pi-smart-router/upgraded-pi-smart-router-to-virtual-models/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-smart-router/upgraded-pi-smart-router-to-virtual-models/</guid><description>Shipped the virtual router upgrade on [pi-smart-router](https://github.com/jordilopez/pi-smart-router) today — pi now ships native virtual-model routing, so our custom dispatch layer had become overlap and got deleted. Retry/fallback now lives in the main route call, and the classifier has the final say over rules.</description><pubDate>Thu, 01 Oct 2026 07:55:22 GMT</pubDate></item><item><title>Upright</title><link>https://jordilopez.dev/posts/tv/upright/</link><guid isPermaLink="true">https://jordilopez.dev/posts/tv/upright/</guid><description>Australian road movie with Milly Alcock and Tim Minchin crossing Australia from Sydney to Perth with no money and an upright piano.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Three little basics, each into their own folder</title><link>https://jordilopez.dev/posts/css-starter/three-little-basics-each-into-their-own-folder/</link><guid isPermaLink="true">https://jordilopez.dev/posts/css-starter/three-little-basics-each-into-their-own-folder/</guid><description>Spent today decluttering [css-starter](https://github.com/jordilopez/css-starter): the blockquote, list, and hr styles each moved out of the big basics stylesheet and into their own folder.

Along the way I also fixed a bug where the reset layer was stripping the default bullets and numbers off lists — markers are back.</description><pubDate>Wed, 30 Sep 2026 20:51:15 GMT</pubDate></item><item><title>Keeping the drums and simplifying downloads in de-drum</title><link>https://jordilopez.dev/posts/de-drum/keeping-drums-and-simplifying-downloads-in-de-drum/</link><guid isPermaLink="true">https://jordilopez.dev/posts/de-drum/keeping-drums-and-simplifying-downloads-in-de-drum/</guid><description>Two merges landed on
[de-drum](https://github.com/jordilopez/de-drum) today. The video
workflow now keeps the isolated drums stem around instead of tossing
it, and the download path got simpler — a single yt-dlp call with URL
sanitization and a local output folder.

Also restored the interactive
installer section that an earlier reformat had dropped.</description><pubDate>Fri, 25 Sep 2026 08:29:30 GMT</pubDate></item><item><title>Every starter&apos;s README now links its deployed Storybook</title><link>https://jordilopez.dev/posts/framework-starters/storybook-readme-deploy-links/</link><guid isPermaLink="true">https://jordilopez.dev/posts/framework-starters/storybook-readme-deploy-links/</guid><description>Storybook now publishes to GitHub Pages for each of the starters, so I pointed every README straight at the live demo. [css-starter](https://github.com/jordilopez/css-starter), [angular-starter](https://github.com/jordilopez/angular-starter), [react-starter](https://github.com/jordilopez/react-starter), and [vue-starter](https://github.com/jordilopez/vue-starter) all picked up the same one-line docs tweak. No code changed — just the deploy links catching up to the pipeline.</description><pubDate>Thu, 24 Sep 2026 06:36:36 GMT</pubDate></item><item><title>Added question variants</title><link>https://jordilopez.dev/posts/pi-voice/added-question-variants/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-voice/added-question-variants/</guid><description>[pi-voice](https://github.com/jordilopez/pi-voice) has to be near-instant, so I added question variants — the same prompt can now flip between short phrasings without asking the model. Before that, the LLM was dressing up each announcement with extra context, which meant a whole model request every time. Way too slow.</description><pubDate>Wed, 23 Sep 2026 17:44:01 GMT</pubDate></item><item><title>Consolidating the model-tier setup skill</title><link>https://jordilopez.dev/posts/pi-smart-router/consolidating-the-model-tier-setup-skill/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-smart-router/consolidating-the-model-tier-setup-skill/</guid><description>On [pi-smart-router](https://github.com/jordilopez/pi-smart-router), replaced the model-tier-setup skill&apos;s tier-by-tier Jev classification with a single `smart-router-setup-tiers` tool call that filters, classifies, dedupes, and returns ready-to-write routes in one pass. The skill now only reviews the proposal and applies it. Trade-off: less inspectable mid-flight, faster end-to-end.</description><pubDate>Wed, 23 Sep 2026 08:40:16 GMT</pubDate></item><item><title>Storybook dark mode + GitHub Pages on the framework starters</title><link>https://jordilopez.dev/posts/framework-starters/storybook-dark-mode-github-pages-on-the-framework-starters/</link><guid isPermaLink="true">https://jordilopez.dev/posts/framework-starters/storybook-dark-mode-github-pages-on-the-framework-starters/</guid><description>Storybook dark mode is now first-class on the [Angular](https://github.com/jordilopez/angular-starter), [React](https://github.com/jordilopez/react-starter), and [Vue](https://github.com/jordilopez/vue-starter) starters — ArgsTable respects dark mode (after working around emotion&apos;s !important overrides) and Storybook ships straight to GitHub Pages from each repo&apos;s deploy pipeline. Per-repo: notice-component on React, Callout component with stories on Angular and Vue, plus a second-pass dark-mode table fix on Vue.</description><pubDate>Tue, 22 Sep 2026 16:52:58 GMT</pubDate></item><item><title>Cheaper spoken cues on pi-voice</title><link>https://jordilopez.dev/posts/pi-voice/cheaper-spoken-cues-on-pi-voice/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-voice/cheaper-spoken-cues-on-pi-voice/</guid><description>[pi-voice](https://github.com/jordilopez/pi-voice) feedback is cheaper now. Random cue phrases replace the model summary, fewer model calls per feedback cycle — still audible, much less spendy.</description><pubDate>Tue, 22 Sep 2026 10:32:21 GMT</pubDate></item><item><title>Cost-aware tier routing on pi-smart-router</title><link>https://jordilopez.dev/posts/pi-smart-router/cost-aware-tier-routing-on-pi-smart-router/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-smart-router/cost-aware-tier-routing-on-pi-smart-router/</guid><description>Shipped cost-aware tier routing on [pi-smart-router](https://github.com/jordilopez/pi-smart-router). Routine coding prompts hit the cheap tier by default; only heavier work climbs to the bigger models. Cheaper day-to-day, no slowdown for the easy stuff.</description><pubDate>Tue, 22 Sep 2026 10:08:17 GMT</pubDate></item><item><title>github-branch-protection skill added to pi-setup</title><link>https://jordilopez.dev/posts/pi-setup/github-branch-protection-skill-added-to-pi-setup/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-setup/github-branch-protection-skill-added-to-pi-setup/</guid><description>Added a `github-branch-protection` skill to [pi-setup](https://github.com/jordilopez/pi-setup). Lets the agent apply and audit branch protection rules without hand-editing jobs/settings — captured as a reusable skill the agent can call directly.</description><pubDate>Tue, 22 Sep 2026 06:39:23 GMT</pubDate></item><item><title>Callout component merged into css-starter</title><link>https://jordilopez.dev/posts/css-starter/callout-component-merged-into-css-starter/</link><guid isPermaLink="true">https://jordilopez.dev/posts/css-starter/callout-component-merged-into-css-starter/</guid><description>The Callout component landed in [css-starter](https://github.com/jordilopez/css-starter) — the design-system repo. The Angular, React, and Vue starters pull it from there now.</description><pubDate>Tue, 22 Sep 2026 05:16:26 GMT</pubDate></item><item><title>Smart-router tools for the agent, sharper tier docs</title><link>https://jordilopez.dev/posts/pi-smart-router/smart-router-tools-for-the-agent-sharper-tier-docs/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-smart-router/smart-router-tools-for-the-agent-sharper-tier-docs/</guid><description>Gave [pi-smart-router](https://github.com/jordilopez/pi-smart-router)
two new agent-facing tools: one that queries the model catalog with
filters, and one that writes tier assignments into the router config —
so an agent can reconfigure routing tiers without hand-editing JSON.
Also enriched the Jev classifier input with model-family positioning and
tier instructions, and reworked the tier-setup skill to classify one
candidate pool per tier instead of model by model.</description><pubDate>Mon, 21 Sep 2026 22:11:47 GMT</pubDate></item><item><title>Launching pi-voice, a voice extension for Pi</title><link>https://jordilopez.dev/posts/pi-voice/launching-pi-voice-a-voice-extension-for-pi/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-voice/launching-pi-voice-a-voice-extension-for-pi/</guid><description>Launched a new project today: [pi-voice](https://github.com/jordilopez/pi-voice),
a Pi extension that adds text-to-speech, speech-to-text, and an
auto-send catchphrase to the coding agent. It now announces ask_user
prompts out loud with a condensed version of the question topic.</description><pubDate>Mon, 21 Sep 2026 18:40:32 GMT</pubDate></item><item><title>A Callout component, everywhere at once</title><link>https://jordilopez.dev/posts/framework-starters/a-callout-component-everywhere-at-once/</link><guid isPermaLink="true">https://jordilopez.dev/posts/framework-starters/a-callout-component-everywhere-at-once/</guid><description>Built a Callout component in [css-starter](https://github.com/jordilopez/css-starter)
today — four tones plus an icon slot — and shipped it as v0.4.0.

Then
the same move landed across the framework starters: a Callout wrapper
with stories and tests for
[react-starter](https://github.com/jordilopez/react-starter),
[vue-starter](https://github.com/jordilopez/vue-starter), and
[angular-starter](https://github.com/jordilopez/angular-starter). The
[css-grid-lanes](https://github.com/jordilopez/css-grid-lanes) demo got
the same treatment, swapping its hand-rolled notice for the new shared
component.</description><pubDate>Mon, 21 Sep 2026 08:10:36 GMT</pubDate></item><item><title>Storybook for css-starter now lives on GitHub Pages</title><link>https://jordilopez.dev/posts/css-starter/storybook-for-css-starter-now-lives-on-github-pages/</link><guid isPermaLink="true">https://jordilopez.dev/posts/css-starter/storybook-for-css-starter-now-lives-on-github-pages/</guid><description>Set up continuous deployment for
[css-starter](https://github.com/jordilopez/css-starter): the Storybook
build now publishes straight to GitHub Pages, so the component
documentation is always in sync with main.</description><pubDate>Sun, 20 Sep 2026 22:04:43 GMT</pubDate></item><item><title>A headless TextField for vue-starter</title><link>https://jordilopez.dev/posts/vue-starter/a-headless-text-field-for-vue-starter/</link><guid isPermaLink="true">https://jordilopez.dev/posts/vue-starter/a-headless-text-field-for-vue-starter/</guid><description>Added a headless TextField component to
[vue-starter](https://github.com/jordilopez/vue-starter) — all the
behavior, none of the imposed styling — and bumped the css-starter
dependency along the way.</description><pubDate>Sun, 20 Sep 2026 22:03:08 GMT</pubDate></item><item><title>A tier-setup skill and leaner docs for pi-smart-router</title><link>https://jordilopez.dev/posts/pi-smart-router/a-tier-setup-skill-and-leaner-docs-for-pi-smart-router/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-smart-router/a-tier-setup-skill-and-leaner-docs-for-pi-smart-router/</guid><description>Shipped two things to
[pi-smart-router](https://github.com/jordilopez/pi-smart-router) today:
a new model-tier-setup skill that walks you through configuring the
router&apos;s four tiers, and the merged per-turn-classifier work with Jev as
the main classifier and the heuristic kept as a fallback.

While in
there, stripped the file-based observability and gave the README a
proper haircut — far less duplication, clearer guidance on when the
heuristic still applies.</description><pubDate>Sun, 20 Sep 2026 13:02:58 GMT</pubDate></item><item><title>Jev takes over classification in pi-smart-router</title><link>https://jordilopez.dev/posts/pi-smart-router/jev-takes-over-classification-in-pi-smart-router/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-smart-router/jev-takes-over-classification-in-pi-smart-router/</guid><description>Big day for [pi-smart-router](https://github.com/jordilopez/pi-smart-router):
TypeSafe Jev is now the primary classifier, so every turn gets classified
by a real model instead of the keyword heuristics. Added a proper client
for it, renamed the escalation plumbing to match its new role, and made
skill invocations show up as markers in the classifier transcript so you
can see what it&apos;s looking at.</description><pubDate>Sat, 19 Sep 2026 09:40:31 GMT</pubDate></item><item><title>Small but annoying: a package-root fix in pi-agent-skills</title><link>https://jordilopez.dev/posts/pi-agent-skills/small-but-annoying-a-package-root-fix-in-pi-agent-skills/</link><guid isPermaLink="true">https://jordilopez.dev/posts/pi-agent-skills/small-but-annoying-a-package-root-fix-in-pi-agent-skills/</guid><description>Fixed a package-root resolution bug in
[pi-agent-skills](https://github.com/jordilopez/pi-agent-skills) — the
agent-delivery skill was climbing one directory too far when resolving
its own package root, which broke installs from unexpected locations.
Quick surgical fix, merged first thing in the morning.</description><pubDate>Fri, 18 Sep 2026 08:33:10 GMT</pubDate></item><item><title>Public experiment space for CSS Grid Lanes</title><link>https://jordilopez.dev/posts/css-grid-lanes/public-experiment-space-for-css-grid-lanes/</link><guid isPermaLink="true">https://jordilopez.dev/posts/css-grid-lanes/public-experiment-space-for-css-grid-lanes/</guid><description>Put up a public experiment for [css-grid-lanes](https://github.com/jordilopez/css-grid-lanes)
today — a scratch repo where I&apos;m exploring what shipping this CSS
feature would actually feel like, with a [live demo](https://jordilopez.github.io/css-grid-lanes/) and a README that
explains the idea.</description><pubDate>Wed, 16 Sep 2026 07:27:01 GMT</pubDate></item></channel></rss>