Skip to main content

The 'Always Allow' Trap: Auditing the Permissions You've Granted Your Coding Agent

· 14 min read
Pere Pages
Software Engineer
A long row of open gates guarded by a single distracted gatekeeper waving everything through

Every "always allow" click quietly trades a little control for a little convenience — and after a few months of daily agent use, those clicks add up to a security posture nobody designed. Here's how to audit what your coding agent can already do without asking, which grants deserve scrutiny, and how to put deliberate guardrails back.

Modular Claude Code Skills: Building a Dependency Graph That Doesn't Exist

· 10 min read
Pere Pages
Software Engineer
A small graph of connected nodes with one shared hub node highlighted, representing skills depending on a common skill

Claude Code skills have no requires: field, no imports, no dependency resolver — and yet you can build a real graph of skills that depend on each other. This post lays out the mental model, the three composition mechanisms that fall out of it, and a refactor of this blog's own skill folder as a case study in what happens when you skip them.

Beyond HTTP, Part 2: Two-Way Streets

· 9 min read
Pere Pages
Software Engineer
A browser window on the left and a server on the right joined by a broad channel carrying amber arrows flowing right and teal arrows flowing left at the same time, showing full-duplex two-way traffic

In Part 1 the server learned to talk without being asked — but the browser could still only listen. A chat, a multiplayer game, a collaborative editor: these need both sides speaking freely over one connection. This is Part 2 of the series, and it's about the browser's true two-way channels — WebSockets, the workhorse, and WebTransport, its modern successor.