thiagowfx's avatar

Β¬ just serendipity πŸ€ (not just serendipity)

β˜… pancake workflow (OR: how to solve problems only once)

β€’ 614 words β€’ 3 min β€’ updated

Previously.

Software Engineers / Programmers and the like have had curated dotfiles for ages.

These days (2025s), we’re evolving to times where it makes sense to curate collections of other utilities as well:

pancake is my own little repo for all sorts of CLI utilities. Its first commit was on Sep 25th, 2025, and now it’s a core part of my workflow, which is what this post will dive into.

First of all, obligatory xkcd:

Don't forget the time you spend finding the chart to look up what you save. And the time spent reading this reminder about the time spent. And the time trying to figure out if either of those actually make sense. Remember, every second counts toward your life total, including these right now.

XKCD Courtesy of Randall Munroe

It became really, really cheap (in terms of time) to automate all sorts of tasks with the advent of better coding agents last year. And this totally changes the game.

Workflow #

I have a problem. An issue. A task. Let’s exemplify with today’s1 issue:

Problem statement: given a local git repository with various branches, create a worktree for each of them.

Step 1: go to the pancake repo.

shell
% z pancake

Step 2: prompt the LLM.

❯ create a new script called "wt" (short for worktree).
  Given a local git repo, it should create a worktree for each
  remote branch. Use the same conventions as the other scripts
  in this repo (help2man compatible, -h/--help, etc).

Claude Code reads the existing scripts, matches the conventions, and writes the new one. I review it, maybe nudging it once or twice.

Step 3: commit, push, release.

shell
% git add wt/
% git commit -a -m "new script: wt"
% git push
% just release

just release creates a CalVer tag (e.g. 2026.01.27.0), pushes it, and GitHub Actions updates the Homebrew formula automatically.

Step 4: install it.

shell
% just update

This is a wrapper around brew upgrade thiagowfx/pancake/pancake.

Step 5: use it.

shell
% cd ~/Workspace/some-repo
% wt

That’s it. Problem solved, script in the toolbox, reusable forever.

The whole cycle β€” from “I wish I had a tool for this” to “it’s installed and working” β€” takes O(minutes). The LLM does virtually everything: writes the script, follows the repo conventions, generates help text. I just steer and review.

Before coding agents, I’d weigh whether it was worth the O(hours) to write a proper script with argument parsing, help text, cross-platform support. Most of the time the answer was “no”, and I’d settle for a brittle alias or just remember the command. Now the answer is almost always “yes”.

The xkcd chart above needs to be recalibrated. The “time to automate” column collapsed by an order of magnitude, so long as you’re willing to burn LLM tokens.

As of this writing, pancake has 30+ scripts.

Some highlights:

  • retry β€” retry a command until it succeeds, with timeouts and output diffing (inspired by zsh)
  • murder β€” graceful process killing with signal escalation (TERM β†’ INT β†’ HUP β†’ KILL) (one step above pkill)
  • notify β€” cross-platform desktop notifications (inspired by notify-send)
  • timer β€” countdown timer with notification when done
  • wt β€” the worktree script from today

Each one started the same way: a problem, a prompt, a review, a release.

The repo name is silly but the idea is practical: solve problems once. Every time I catch myself running a multi-step command more than twice or thrice, it becomes a pancake script. The cost of doing so used to be high enough that I’d only bother for frequent tasks. Now it’s so low that even a task I’ll run twice a year gets a script, so long as it’s reusable and comprensive enough.

In 2026, the compounding effect from curating your own toolbox does pay off.


  1. This post has been originally drafted in January 2026, but it was only finished in April 2026. ↩︎