Skip to main content

The Great Perl Toolchain Summit CLI Throwdown 2026

·1152 words·6 mins·
cli dotfiles
Table of Contents

Last year a few of us at the Perl Toolchain Summit got together to trade command-line tips. I wrote up the notes. This year there was some demand for a repeat, so we continued the tradition. Hopefully you find some helpful tips.

Full disclosure: I don’t use AI to write the content of my blog posts, but in this case I did get an assist from Claude, particularly in summarizing notes and adding project links. Since this is meant to be a cheat sheet rather than a piece of creative writing, I’m ok with using AI as a tool to help get the job done.

This year’s participants, in order of appearance, were:

The initial post featured male wrestlers, so I’m hoping this year’s photo provides a much needed counterbalance.

featured

Leo’s Picks
#

superpowers
#

An agentic skills framework and software-development methodology for coding agents like Claude Code. Rather than diving straight into writing code, it pushes the agent to tease a spec out of the conversation, get your sign-off, and then work through an implementation plan with an emphasis on test-driven development.

Olaf’s note: superpowers deserves its own series of posts. I rely on this quite heavily for all sorts of daily tasks.

nono
#

A capability-based sandbox for AI agents and other untrusted processes. It uses kernel-level primitives — Landlock on Linux, Seatbelt on macOS — to enforce a default-deny policy, so a process starts with no file, network, or command access until you explicitly grant it.

Olaf’s note: I use nono every day, thanks to Leo having pointed it out shortly before we got together for the summit. Now I spend a lot less time building Docker containers. 😅

Shawn’s Picks
#

eza
#

A modern replacement for ls with colourful, human-friendly output and git integration for directories. Claude’s note: eza was also a pick in last year’s throwdown.

fx
#

A terminal-based JSON viewer and processor. It offers an interactive mode for exploring large JSON documents as well as a scriptable mode for transforming them, which makes it handy as an alternative to reaching for jq.

Flox
#

A package and environment manager built on Nix. Flox installs sandboxed binaries, pins their versions, and lets you reproduce the same development environment across machines and projects.

zoxide
#

A smarter cd command. It remembers the directories you visit most and lets you jump straight to them with a few characters instead of typing out full paths.

fish
#

A user-friendly shell with syntax highlighting, autosuggestions, and smart tab completion out of the box. Claude’s note: fish made the list in the 2025 throwdown too.

fastgron
#

A high-performance implementation of gron, which turns JSON into discrete, greppable assignment statements — one path per line — so you can search structured data with ordinary tools like grep. Running fastgron -u performs the reverse transformation, reassembling the flattened output back into JSON.

wezterm
#

A GPU-accelerated, cross-platform terminal emulator and multiplexer written in Rust. Claude’s note: WezTerm was a 2025 pick as well.

q
#

A tiny command-line DNS client, positioned as a modern replacement for dig. Alongside the classic UDP and TCP transports it speaks DoT, DoH, DoQ, and ODoH, and can emit results as raw dig-style output, JSON, or YAML.

Olaf’s note: fun fact, dig apparently stands for domain information groper

Jujutsu
#

A Git-compatible version control system. Jujutsu (jj) uses a Git repository as its storage layer, so it interoperates with existing Git tooling while offering a different — and arguably simpler — working model on top of it.

dyff
#

A diff tool for YAML (and JSON) files. Unlike a plain textual diff, dyff compares documents structurally, so two YAML files that hold the same data in a different key order are correctly reported as equivalent.

cswap
#

A switcher for multiple Claude accounts that works with both the Claude Code CLI and the VS Code extension. cswap --list shows each account along with its 5-hour and 7-day usage and reset times, so you can check your quotas before deciding which account to switch to.

Maccy
#

A lightweight clipboard-history manager for macOS. It keeps a searchable history of what you have copied and makes earlier entries available again with a keyboard shortcut.

Olaf’s note: I use Alfred as my clipboard history manager, but I should check this out

gcrane
#

A command-line tool from Google’s go-containerregistry project for inspecting and manipulating container images directly in a registry — listing tags, copying images, and examining metadata without a full docker pull.

Paul’s Picks
#

AeroSpace
#

An i3-inspired tiling window manager for macOS. It arranges windows automatically, manages workspaces, and is driven entirely from the keyboard. Claude’s note: AeroSpace was Shawn’s pick last year — this year it changed hands.

Ghostty
#

A fast, native, GPU-accelerated terminal emulator. Paul has switched to Ghostty from WezTerm, which was his terminal of choice in last year’s throwdown.

zsh
#

An extended shell with powerful completion, scripting capabilities, and a deep plugin ecosystem. Claude’s note: zsh also featured in the 2025 throwdown.

Mickey’s One Weird Trick — Shell Wizards HATE Him
#

Process substitution with <()
#

Mickey’s contribution wasn’t a tool to install but a shell feature worth knowing: process substitution. The <(...) syntax runs a command and presents its output as if it were a file, which lets you feed command output to programs that expect a filename.

A couple of examples of where this comes in handy.

Compare the output of two commands without creating temporary files:

# See how the contents of two directories differ
diff <(ls dir-one) <(ls dir-two)

# Compare the installed packages on two hosts
diff <(ssh host1 'dpkg --get-selections') <(ssh host2 'dpkg --get-selections')

Feed remote or generated content to a tool that expects a file on disk:

# grep a remote file without downloading it first
grep 'TODO' <(curl -s https://example.com/notes.txt)

# Find the lines common to two sorted lists
comm -12 <(sort a.txt) <(sort b.txt)

There is also a companion form, >(...), which provides a filename that pipes into a command — useful when a tool insists on writing to an output file but you would rather stream the result somewhere else.

Olaf Should Not Have Chosen to Go Last
#

I didn’t have a lot to contribute this year since I haven’t written much code in the past year, having foisted most of that responsibility onto Claude. Having said that, Leo’s picks of superpowers and nono are game changers for me and I’m still in love with WezTerm. I also did share my talk about us AI skill, which is helpful in auditing everything from blog posts, to resumes. I believe that qualifies as a CLI tool, even if it also works in browsers.

"Jungle Kyona vs Natsumi Maki-japanese female" by sabrebiade is marked with Public Domain Mark 1.0 .


Related

The Great PTS CLI Throwdown
·1628 words·8 mins
cli dotfiles
Battery Power-Ups: Enhancing SketchyBar with "is"
·1042 words·5 mins
is battery bash dotfiles cli go macos sketchybar
How Many Versions of "X" Are in my $PATH?
·506 words·3 mins
is bash cli