If you have an AGENTS.md file, you can source it in your CLAUDE.md using @AGENTS.md to maintain a single source of truth.— docs.claude.com
This may be the first time Claude Code is embracing AGENTS.md, finally.
If you have an AGENTS.md file, you can source it in your CLAUDE.md using @AGENTS.md to maintain a single source of truth.— docs.claude.com
This may be the first time Claude Code is embracing AGENTS.md, finally.
Clicking will open your email client to send a reply
I wanted to always have up to date hash of contents of the directory after any change to use as a cache key. Started to list files, hashing them only to realize jj is already constantly doing that 😬
$ jj log --limit 1 -r "ancestors(@)" -T "self.commit_id()" --no-graph src/
# git hash
$ jj log --limit 1 -r "ancestors(@)" -T "self.commit_id().short()" --no-graph src/
# short hash
ThinkPad X13 Gen 4 with AMD 7840U
My X390 bricked a few years ago after I lost power during a BIOS update, without warranty, and I needed some kind of usable on-the-go backup laptop.
In December, Lenovo DE had 30-40% discounts on some of the models, and the X13 Gen 4 AMD looked VERY interesting! Given uncertainty about RAM, SSD, and what else prices, I decided to get it. Compared to Framework 13" which is more expensive now.
After getting it, I had mixed feelings: 100% worse screen than my work MBP, okayish keyboard but it’s small and light! So my criteria would be to keep it as long as it wouldn’t run SIGNIFICANTLY slower than my PC that needs ~160W idling. I didn’t have any ready to go Elixir project to stress the CPU/MEM so I used “jj”. I compile it every 1st Wednesday of the month when the new release drops! Oh, and apparently, run all tests too, because it’s installed via Nix flake.
The setup:
All in “power” mode, with connected power cable.
A simple benchmark, with empty “target” directory in “jj” repository
| MBP M1 | ThinkPad X13 Gen 4 7840U | PC 5950X | |
|---|---|---|---|
| cargo build | 51s | 48s | 35s |
| cargo test | 360s | 193s | 124s |
I’m sure the M4 10 Core in MacBook Air would be faster than any of them, and no active cooling too, but then for 32GB RAM, 1 SSD and 3y warranty it wouldn’t cost 1000€, but 2100€.
One of my most used commands gets better and better - jj prpr.
When using “jj”, I’m on the squash/changes as TODO workflow:
jj sq, or better: jj absorbThis handles the local part, what about the PRs? I don’t want to repeat my commits
in GitHub PR description. It’s already in my commits! This was how prpr was born.
jj prprfirst change on top of trunk()?
Confirm/skip AI code review for quick sanity check
Push bookmarks in the stack
No PR? Create PR via gh CLI
PR exists?
Link to draft PR is now in clipboard. PR description is created out of commit messages.
There’s a lot of asterisks here and little QoL fixes like handling multiple changes,
stacking PRs and more. I freaking love it. At some point hopefully jj sync
will be there and it will get even better.
I asked Claude to describe the full flow in ASCII:
desc - description of the PR
┌─────────────────────────────────────────┐
│ jj prpr │
└────────────────┬────────────────────────┘
│
┌────────┴────────┐
▼ ▼
┌─────────┐ ┌─────────┐
│ desc │ │ prpr │
│ command │ │ command │
└────┬────┘ └────┬────┘
│ │
▼ ▼
Show title & ┌──────────────┐
description │ Get Title │
│ │ (1st line) │
▼ └──────┬───────┘
EXIT │
▼
┌────────────────┐
│ Title exists? │
└───────┬────────┘
NO │ YES
┌──────────┴──────────┐
▼ │
┌─────────────────┐ │
│ Working changes │ │
│ exist? │ │
└────────┬────────┘ │
YES │ NO │
┌──────┴──────┐ │
▼ ▼ │
┌─────────┐ ┌─────────┐ │
│ Commit │ │ EXIT │ │
└────┬────┘ └─────────┘ │
│ │
└────────────────────────────┤
▼
┌──────────────────┐
│ Bookmark exists? │
└────────┬─────────┘
NO │ YES
┌────────┴────────┐
▼ │
┌─────────────────┐ │
│ Create bookmark │ │
│ + git push │ │
└────────┬────────┘ │
│ │
▼ │
┌─────────────────┐ │
│ AI Code review? │ │
│ (optional) │ │
└────────┬────────┘ │
└────────┬────────┘
▼
┌──────────────────┐
│ Find PR for │
│ bookmark │
└────────┬─────────┘
NO │ YES
┌────────┴────────┐
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ CREATE PR │ │ Compare local │
│ (draft/ready) │ │ vs remote desc │
│ │ └────────┬────────┘
│ gh pr create │ │
│ │ ┌─────┴─────┐
└────────┬────────┘ ▼ ▼
│ ┌──────────┐ ┌──────────┐
│ │ Checksums│ │ Checksums│
│ │ DIFFER │ │ MATCH │
│ └────┬─────┘ └────┬─────┘
│ ▼ │
│ ┌─────────────┐ │
│ │ Show diff │ │
│ └──────┬──────┘ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Overwrite? │ │
│ └──────┬──────┘ │
│ YES │ NO │
│ ┌──────┴──────┐ │
│ ▼ ▼ │
│ Update Skip & │
│ PR desc EXIT │
│ │ │
└────┴──────────┬──────────┘
▼
┌──────────────────┐
│ Update PR desc │
│ (if changed) │
└────────┬─────────┘
▼
┌──────────────────┐
│ jj git push │
│ -b bookmark │
└────────┬─────────┘
▼
┌──────────────────┐
│ Save checksum │
│ to local state │
└────────┬─────────┘
▼
┌──────────────────┐
│ Copy new PR URL │
│ to clipboard │
└──────────────────┘
Just sharing it out there, little QoL commands that are fun and easy. I had the initial version working in bash in ~2024 but in 2025 I let Claude rewrite it in fish-shell, and add all the little improvements that really made it enjoyable.