Personal monorepo: the public CLI tools I maintain.
The Rust CLI tools have moved to their own standalone repos; this monorepo is being repurposed. Each tool now lives at, and is installed from, its own repo:
| Tool | Repo | Language | Description |
|---|---|---|---|
jj-hooks / jj-hp |
mattwilkinsonn/jj-hooks |
Rust | Run pre-commit / lefthook / hk hooks against jj bookmark pushes. |
jj-gt |
mattwilkinsonn/jj-gt |
Rust | Bridge jj bookmark stacks and Graphite PR stacks. |
brew tap mattwilkinsonn/tap
brew install mattwilkinsonn/tap/jj-hooks # ships jj-hooks + jj-hp
brew install mattwilkinsonn/tap/jj-gtMigrating off an old tap. If you previously tapped
mattwilkinsonn/zireael(or a per-tool tap), uninstall the tools and untap it before tappingmattwilkinsonn/tap— Homebrew refuses to install a same-named formula from a second tap while the old one is still installed:# Only the tools/taps you actually have — brew errors on an unknown keg or # an un-added tap. `brew tap` lists what you currently have tapped. brew uninstall jj-hooks jj-gt brew untap mattwilkinsonn/zireael brew untap mattwilkinsonn/jj-hooks brew untap mattwilkinsonn/jj-gt brew tap mattwilkinsonn/tap brew install mattwilkinsonn/tap/jj-hooks mattwilkinsonn/tap/jj-gt
Install cargo binstall first
cargo binstall jj-hooks # ships `jj-hooks` + `jj-hp`
cargo binstall jj-gtbinstall looks for binaries on GitHub Releases first, and falls back to
regular install if it can't find one for your architecture. 99% of the
time it will just install the prebuilt binary, saving you the compile
time.
If you don't want to use binstall, you can always compile yourself with cargo install.
cargo install jj-hooks # ships `jj-hooks` + `jj-hp`
cargo install jj-gtEach tool's tagged releases attach tar.gz binaries for darwin-arm64,
linux-x64, and linux-arm64. Grab them from the standalone repo's Releases
page: jj-hooks /
jj-gt.
direnv allow # one-time: enters the devenv shell (rust, bun, node, moon, hk, jj, linters)
moon ci # run every affected task (the same gate CI + the pre-push hook run)
moon run <p>:ci # one project's checks (p = jj-hooks | jj-gt | tap | root)CI shape: one workflow (.github/workflows/ci.yml) runs moon ci in the devenv shell on every PR.
nightly.ymlruns the full matrix daily;post-merge.ymlre-runs the affected gate onmain.- Toolchains are pinned in
.prototools(bun/node/moon) +rust-toolchain.tomland provided bydevenv.nix.
docs/ holds two kinds of document, mirrored by domain:
designs/<domain>/— point-in-time design records (the why; frozen once decided).specs/<domain>/— the living source of truth for how a component currently behaves.
Domains: platform/ (CI), tools/ (jj-gt, jj-hooks), agents/ (multi-agent coordination). A behavior change updates the matching specs/ doc in the same PR; see docs/README.md.
These tools were briefly consolidated into this monorepo, then moved back to their own standalone repos:
mattwilkinsonn/jj-hooks(jj-hooks/jj-hp)mattwilkinsonn/jj-gt
The full monorepo-era history of each tool is preserved here; ongoing work happens in the standalone repos.
Dual-licensed under MIT OR Apache-2.0. See LICENSE.md for
details.