<?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>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>