dotslash: add linux-aarch64 and linux-x86_64 platforms
Regenerating also picked up the latest upstream releases.

Assisted-by: Claude Opus 5.5 via Claude Code
change mpmwoprnxxwkkzynllmkwmumqxpyskpn
commit 6cfdc993f082de13a26dbeea879db9eda08ea50f
author Alpha Chen <alpha@kejadlen.dev>
date
parent ovtmwwwm
diff --git a/Rakefile b/Rakefile
index 5ade7739..fdd3e60e 100644
--- a/Rakefile
+++ b/Rakefile
@@ -60,29 +60,35 @@ namespace :dotslash do
     nil
   end
 
-  def update_dotslash_release(name:, repo:, path: name, tag: nil, &asset)
+  # The block receives the tag and returns a hash of DotSlash platform to
+  # asset name. A `path` proc receives each asset name.
+  def update_dotslash_release(name:, repo:, path: name, tag: nil, &assets)
     unless tag
       tag = JSON.parse(`gh release view --repo #{repo} --json tagName`)["tagName"]
     end
-    asset_name = asset.call(tag)
-    resolved_path = path.respond_to?(:call) ? path.call(tag) : path
-
-    url = "https://github.com/#{repo}/releases/download/#{tag}/#{asset_name}"
-    entry = JSON.parse(`dotslash -- create-url-entry #{url}`)
-
-    platform = {
-      size: entry["size"],
-      hash: "blake3",
-      digest: entry["digest"],
-      path: resolved_path,
-      providers: [
-        { url: url },
-        { type: "github-release", repo: "https://github.com/#{repo}", tag: tag, name: asset_name },
-      ],
-    }
-    platform[:format] = entry["format"] if entry["format"] && !entry["format"].start_with?("TODO")
 
-    dotslash = { name: name, platforms: { "macos-aarch64" => platform } }
+    platforms = assets.call(tag).transform_values do |asset_name|
+      url = "https://github.com/#{repo}/releases/download/#{tag}/#{asset_name}"
+      output = `dotslash -- create-url-entry #{url}`
+      raise "create-url-entry failed for #{url}" unless $?.success?
+
+      entry = JSON.parse(output)
+
+      platform = {
+        size: entry["size"],
+        hash: "blake3",
+        digest: entry["digest"],
+        path: path.respond_to?(:call) ? path.call(asset_name) : path,
+        providers: [
+          { url: url },
+          { type: "github-release", repo: "https://github.com/#{repo}", tag: tag, name: asset_name },
+        ],
+      }
+      platform[:format] = entry["format"] if entry["format"] && !entry["format"].start_with?("TODO")
+      platform
+    end
+
+    dotslash = { name: name, platforms: platforms }
 
     file = "bin/#{name}"
     previous_tag = dotslash_tag(file)
@@ -103,67 +109,134 @@ namespace :dotslash do
 
   desc "Update jq"
   task(:jq) do
-    update_dotslash_release(name: "jq", repo: "jqlang/jq") { "jq-macos-arm64" }
+    update_dotslash_release(name: "jq", repo: "jqlang/jq") do
+      {
+        "macos-aarch64" => "jq-macos-arm64",
+        "linux-aarch64" => "jq-linux-arm64",
+        "linux-x86_64" => "jq-linux-amd64",
+      }
+    end
   end
 
   desc "Update jj"
   task(:jj) do
-    update_dotslash_release(name: "jj", repo: "jj-vcs/jj") { |tag| "jj-#{tag}-aarch64-apple-darwin.tar.gz" }
+    update_dotslash_release(name: "jj", repo: "jj-vcs/jj") do |tag|
+      {
+        "macos-aarch64" => "jj-#{tag}-aarch64-apple-darwin.tar.gz",
+        "linux-aarch64" => "jj-#{tag}-aarch64-unknown-linux-musl.tar.gz",
+        "linux-x86_64" => "jj-#{tag}-x86_64-unknown-linux-musl.tar.gz",
+      }
+    end
   end
 
   desc "Update just"
   task(:just) do
-      update_dotslash_release(name: "just", repo: "casey/just") { |tag| "just-#{tag}-aarch64-apple-darwin.tar.gz" }
+    update_dotslash_release(name: "just", repo: "casey/just") do |tag|
+      {
+        "macos-aarch64" => "just-#{tag}-aarch64-apple-darwin.tar.gz",
+        "linux-aarch64" => "just-#{tag}-aarch64-unknown-linux-musl.tar.gz",
+        "linux-x86_64" => "just-#{tag}-x86_64-unknown-linux-musl.tar.gz",
+      }
+    end
   end
 
   desc "Update fzf"
   task(:fzf) do
-    update_dotslash_release(name: "fzf", repo: "junegunn/fzf") { |tag| "fzf-#{tag.delete_prefix("v")}-darwin_arm64.tar.gz" }
+    update_dotslash_release(name: "fzf", repo: "junegunn/fzf") do |tag|
+      version = tag.delete_prefix("v")
+      {
+        "macos-aarch64" => "fzf-#{version}-darwin_arm64.tar.gz",
+        "linux-aarch64" => "fzf-#{version}-linux_arm64.tar.gz",
+        "linux-x86_64" => "fzf-#{version}-linux_amd64.tar.gz",
+      }
+    end
   end
 
   desc "Update zizmor"
   task(:zizmor) do
-    update_dotslash_release(name: "zizmor", repo: "zizmorcore/zizmor") { |tag| "zizmor-aarch64-apple-darwin.tar.gz" }
+    update_dotslash_release(name: "zizmor", repo: "zizmorcore/zizmor") do
+      {
+        "macos-aarch64" => "zizmor-aarch64-apple-darwin.tar.gz",
+        "linux-aarch64" => "zizmor-aarch64-unknown-linux-gnu.tar.gz",
+        "linux-x86_64" => "zizmor-x86_64-unknown-linux-gnu.tar.gz",
+      }
+    end
   end
 
   desc "Update sops"
   task(:sops) do
-    update_dotslash_release(name: "sops", repo: "getsops/sops") { |tag| "sops-#{tag}.darwin.arm64" }
+    update_dotslash_release(name: "sops", repo: "getsops/sops") do |tag|
+      {
+        "macos-aarch64" => "sops-#{tag}.darwin.arm64",
+        "linux-aarch64" => "sops-#{tag}.linux.arm64",
+        "linux-x86_64" => "sops-#{tag}.linux.amd64",
+      }
+    end
+  end
+
+  age_assets = lambda do |tag|
+    {
+      "macos-aarch64" => "age-#{tag}-darwin-arm64.tar.gz",
+      "linux-aarch64" => "age-#{tag}-linux-arm64.tar.gz",
+      "linux-x86_64" => "age-#{tag}-linux-amd64.tar.gz",
+    }
   end
 
   desc "Update age"
   task(:age) do
-    update_dotslash_release(name: "age", repo: "FiloSottile/age", path: "age/age") { |tag| "age-#{tag}-darwin-arm64.tar.gz" }
+    update_dotslash_release(name: "age", repo: "FiloSottile/age", path: "age/age", &age_assets)
   end
 
   desc "Update age-keygen"
   task("age-keygen") do
-    update_dotslash_release(name: "age-keygen", repo: "FiloSottile/age", path: "age/age-keygen") { |tag| "age-#{tag}-darwin-arm64.tar.gz" }
+    update_dotslash_release(name: "age-keygen", repo: "FiloSottile/age", path: "age/age-keygen", &age_assets)
   end
 
   desc "Update tree-sitter"
   task(:tree_sitter) do
-    update_dotslash_release(name: "tree-sitter", repo: "tree-sitter/tree-sitter") { "tree-sitter-macos-arm64.gz" }
+    update_dotslash_release(name: "tree-sitter", repo: "tree-sitter/tree-sitter") do
+      {
+        "macos-aarch64" => "tree-sitter-macos-arm64.gz",
+        "linux-aarch64" => "tree-sitter-linux-arm64.gz",
+        "linux-x86_64" => "tree-sitter-linux-x64.gz",
+      }
+    end
   end
 
   desc "Update ramekin"
   task(:ramekin) do
-    update_dotslash_release(name: "ramekin", repo: "kejadlen/ramekin") { "ramekin-aarch64-apple-darwin.tar.gz" }
+    update_dotslash_release(name: "ramekin", repo: "kejadlen/ramekin") do
+      { "macos-aarch64" => "ramekin-aarch64-apple-darwin.tar.gz" }
+    end
   end
 
   desc "Update cq"
   task(:cq) do
-    update_dotslash_release(name: "cq", repo: "technicalpickles/cq", path: ->(tag) { "cq-#{tag.delete_prefix("v")}-aarch64-apple-darwin/cq" }) { |tag| "cq-#{tag.delete_prefix("v")}-aarch64-apple-darwin.tar.gz" }
+    update_dotslash_release(name: "cq", repo: "technicalpickles/cq", path: ->(asset) { "#{asset.delete_suffix(".tar.gz")}/cq" }) do |tag|
+      version = tag.delete_prefix("v")
+      {
+        "macos-aarch64" => "cq-#{version}-aarch64-apple-darwin.tar.gz",
+        "linux-aarch64" => "cq-#{version}-aarch64-unknown-linux-gnu.tar.gz",
+        "linux-x86_64" => "cq-#{version}-x86_64-unknown-linux-gnu.tar.gz",
+      }
+    end
   end
 
   desc "Update ranger"
   task(:ranger) do
-    update_dotslash_release(name: "ranger", repo: "kejadlen/ranger") { "ranger-aarch64-apple-darwin.tar.gz" }
+    update_dotslash_release(name: "ranger", repo: "kejadlen/ranger") do
+      {
+        "macos-aarch64" => "ranger-aarch64-apple-darwin.tar.gz",
+        "linux-aarch64" => "ranger-aarch64-unknown-linux-gnu.tar.gz",
+      }
+    end
   end
 
   desc "Update frork"
   task(:frork) do
-    update_dotslash_release(name: "frork", repo: "kejadlen/frork") { "frork-aarch64-apple-darwin.tar.gz" }
+    update_dotslash_release(name: "frork", repo: "kejadlen/frork") do
+      { "macos-aarch64" => "frork-aarch64-apple-darwin.tar.gz" }
+    end
   end
 
   desc "Update all dotslash files"
diff --git a/ai/skills/dotslash/SKILL.md b/ai/skills/dotslash/SKILL.md
index feabcc8b..bdd02618 100644
--- a/ai/skills/dotslash/SKILL.md
+++ b/ai/skills/dotslash/SKILL.md
@@ -5,7 +5,7 @@ description: Use when adding, updating, or troubleshooting DotSlash binaries in
 
 # DotSlash Binaries
 
-This repo uses [DotSlash](https://dotslash-cli.com) to manage binaries in `bin/`. DotSlash files are lightweight JSON wrappers that lazily fetch, verify, cache, and run executables. Only `macos-aarch64` platform entries are needed. Run `dotslash --help` for the full CLI; `create-url-entry` is the only subcommand these workflows use.
+This repo uses [DotSlash](https://dotslash-cli.com) to manage binaries in `bin/`. DotSlash files are lightweight JSON wrappers that lazily fetch, verify, cache, and run executables. Each file covers `macos-aarch64`, `linux-aarch64`, and `linux-x86_64`, minus any platform upstream doesn't publish. Run `dotslash --help` for the full CLI; `create-url-entry` is the only subcommand these workflows use.
 
 ## Adding a new DotSlash binary
 
@@ -16,19 +16,24 @@ The `update_dotslash_release` helper in `Rakefile` generates the file for you 
 In the `dotslash` namespace, add a task that calls the helper, then list `<name>` in the `all` task. The helper resolves the latest tag with `gh release view`, runs `create-url-entry`, and writes `bin/<name>`:
 
 ```ruby
-desc "Update ramekin"
-task(:ramekin) do
-  update_dotslash_release(name: "ramekin", repo: "kejadlen/ramekin") { "ramekin-aarch64-apple-darwin.tar.gz" }
+desc "Update jj"
+task(:jj) do
+  update_dotslash_release(name: "jj", repo: "jj-vcs/jj") do |tag|
+    {
+      "macos-aarch64" => "jj-#{tag}-aarch64-apple-darwin.tar.gz",
+      "linux-aarch64" => "jj-#{tag}-aarch64-unknown-linux-musl.tar.gz",
+      "linux-x86_64" => "jj-#{tag}-x86_64-unknown-linux-musl.tar.gz",
+    }
+  end
 end
 ```
 
-The block receives the resolved tag and returns the asset filename. Ignore the tag when the name is fixed (as above), or interpolate it (e.g. `{ |tag| "jj-#{tag}-aarch64-apple-darwin.tar.gz" }`). Pass `path:` when the executable sits inside an archive subdirectory; it defaults to `name`, which is correct when the archive holds a single file at its root. When the subdirectory embeds the version (e.g. `cq-0.2.1-aarch64-apple-darwin/cq`), pass `path:` a proc — it receives the resolved tag just like the asset block, so the generated `path` stays correct across release bumps:
+The block receives the resolved tag and returns a hash of DotSlash platform to asset filename. Ignore the tag when the names are fixed, or interpolate it (as above). Leave out a platform upstream doesn't publish. On Linux, prefer a `musl` asset over `gnu` when both exist, since it's statically linked and runs regardless of the host's glibc.
+
+Pass `path:` when the executable sits inside an archive subdirectory; it defaults to `name`, which is correct when the archive holds a single file at its root. When the subdirectory varies by platform or version (e.g. `cq-0.11.0-aarch64-apple-darwin/cq`), pass `path:` a proc — it receives each asset filename, so the generated `path` stays correct across platforms and release bumps:
 
 ```ruby
-desc "Update cq"
-task(:cq) do
-  update_dotslash_release(name: "cq", repo: "technicalpickles/cq", path: ->(tag) { "cq-#{tag.delete_prefix("v")}-aarch64-apple-darwin/cq" }) { |tag| "cq-#{tag.delete_prefix("v")}-aarch64-apple-darwin.tar.gz" }
-end
+path: ->(asset) { "#{asset.delete_suffix(".tar.gz")}/cq" }
 ```
 
 ### 2. Generate and verify
@@ -43,7 +48,7 @@ bin/<name> --help   # or whatever smoke test is appropriate
 
 Prefer extending `update_dotslash_release` over hand-writing JSON. Reserve hand-writing for cases the helper can't reach — a non-GitHub host, an unusual URL scheme, or a repo with no Rakefile to hold the helper (`Gusto/claude-code` ships DotSlash launchers inside plugins and has none):
 
-1. Find the asset with `gh release view --repo owner/repo --json tagName,assets` and pick the `macos-arm64` / `macos-aarch64` / `darwin-arm64` one.
+1. Find the asset with `gh release view --repo owner/repo --json tagName,assets` and pick the asset for each platform (e.g. `darwin-arm64`, `linux-arm64`, `linux-amd64`).
 2. Run `dotslash -- create-url-entry URL`. It computes size and hash and infers `format` from the URL suffix; you fill in `path`.
    On a private repo it can't do this — it fetches the URL with no auth and gets a 404. Download the asset instead (`gh release download <tag> --repo owner/repo --pattern '<asset>'`), then take `size` from `ls -l` and `digest` from `shasum -a 256`, and set `"hash": "sha256"` to match.
 3. Determine `path`: for a bare binary, the filename to save as (e.g. `"jq"`, omit `format`); for an archive, the executable's relative path inside it (list contents with `curl -sL URL | tar tzf -`, or `tar tzf <file>` on the copy you downloaded above).
@@ -72,7 +77,9 @@ Prefer extending `update_dotslash_release` over hand-writing JSON. Reserve hand-
           "name": "<asset-filename>"
         }
       ]
-    }
+    },
+    "linux-aarch64": { ... },
+    "linux-x86_64": { ... }
   }
 }
 ```
diff --git a/bin/age b/bin/age
index 72bb6222..40577e39 100755
--- a/bin/age
+++ b/bin/age
@@ -4,19 +4,55 @@
   "name": "age",
   "platforms": {
     "macos-aarch64": {
-      "size": 9685129,
+      "size": 18106798,
       "hash": "blake3",
-      "digest": "d86f2a77816f81bf07ca2c983649b1a72d026f73aec09c3b80d42e1ac34e2b7b",
+      "digest": "ccb5b4e83bf4ef7ac6f0909b8a6bde008b8f2f865572acbc7205e618e7229813",
       "path": "age/age",
       "providers": [
         {
-          "url": "https://github.com/FiloSottile/age/releases/download/v1.3.1/age-v1.3.1-darwin-arm64.tar.gz"
+          "url": "https://github.com/FiloSottile/age/releases/download/v1.3.2/age-v1.3.2-darwin-arm64.tar.gz"
         },
         {
           "type": "github-release",
           "repo": "https://github.com/FiloSottile/age",
-          "tag": "v1.3.1",
-          "name": "age-v1.3.1-darwin-arm64.tar.gz"
+          "tag": "v1.3.2",
+          "name": "age-v1.3.2-darwin-arm64.tar.gz"
+        }
+      ],
+      "format": "tar.gz"
+    },
+    "linux-aarch64": {
+      "size": 17771923,
+      "hash": "blake3",
+      "digest": "842df011003d958ab7ee045c8124d4d711eed3b88820bda4c95e1db2dfd89795",
+      "path": "age/age",
+      "providers": [
+        {
+          "url": "https://github.com/FiloSottile/age/releases/download/v1.3.2/age-v1.3.2-linux-arm64.tar.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/FiloSottile/age",
+          "tag": "v1.3.2",
+          "name": "age-v1.3.2-linux-arm64.tar.gz"
+        }
+      ],
+      "format": "tar.gz"
+    },
+    "linux-x86_64": {
+      "size": 19405817,
+      "hash": "blake3",
+      "digest": "c823fc14e0c64b2f3358945fe7b61e4bef0805f45b83dee7f2e2995fccb55c62",
+      "path": "age/age",
+      "providers": [
+        {
+          "url": "https://github.com/FiloSottile/age/releases/download/v1.3.2/age-v1.3.2-linux-amd64.tar.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/FiloSottile/age",
+          "tag": "v1.3.2",
+          "name": "age-v1.3.2-linux-amd64.tar.gz"
         }
       ],
       "format": "tar.gz"
diff --git a/bin/age-keygen b/bin/age-keygen
index 0ba3280c..539760a1 100755
--- a/bin/age-keygen
+++ b/bin/age-keygen
@@ -4,19 +4,55 @@
   "name": "age-keygen",
   "platforms": {
     "macos-aarch64": {
-      "size": 9685129,
+      "size": 18106798,
       "hash": "blake3",
-      "digest": "d86f2a77816f81bf07ca2c983649b1a72d026f73aec09c3b80d42e1ac34e2b7b",
+      "digest": "ccb5b4e83bf4ef7ac6f0909b8a6bde008b8f2f865572acbc7205e618e7229813",
       "path": "age/age-keygen",
       "providers": [
         {
-          "url": "https://github.com/FiloSottile/age/releases/download/v1.3.1/age-v1.3.1-darwin-arm64.tar.gz"
+          "url": "https://github.com/FiloSottile/age/releases/download/v1.3.2/age-v1.3.2-darwin-arm64.tar.gz"
         },
         {
           "type": "github-release",
           "repo": "https://github.com/FiloSottile/age",
-          "tag": "v1.3.1",
-          "name": "age-v1.3.1-darwin-arm64.tar.gz"
+          "tag": "v1.3.2",
+          "name": "age-v1.3.2-darwin-arm64.tar.gz"
+        }
+      ],
+      "format": "tar.gz"
+    },
+    "linux-aarch64": {
+      "size": 17771923,
+      "hash": "blake3",
+      "digest": "842df011003d958ab7ee045c8124d4d711eed3b88820bda4c95e1db2dfd89795",
+      "path": "age/age-keygen",
+      "providers": [
+        {
+          "url": "https://github.com/FiloSottile/age/releases/download/v1.3.2/age-v1.3.2-linux-arm64.tar.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/FiloSottile/age",
+          "tag": "v1.3.2",
+          "name": "age-v1.3.2-linux-arm64.tar.gz"
+        }
+      ],
+      "format": "tar.gz"
+    },
+    "linux-x86_64": {
+      "size": 19405817,
+      "hash": "blake3",
+      "digest": "c823fc14e0c64b2f3358945fe7b61e4bef0805f45b83dee7f2e2995fccb55c62",
+      "path": "age/age-keygen",
+      "providers": [
+        {
+          "url": "https://github.com/FiloSottile/age/releases/download/v1.3.2/age-v1.3.2-linux-amd64.tar.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/FiloSottile/age",
+          "tag": "v1.3.2",
+          "name": "age-v1.3.2-linux-amd64.tar.gz"
         }
       ],
       "format": "tar.gz"
diff --git a/bin/cq b/bin/cq
index 52ce4f3d..f47cbce3 100755
--- a/bin/cq
+++ b/bin/cq
@@ -4,19 +4,55 @@
   "name": "cq",
   "platforms": {
     "macos-aarch64": {
-      "size": 12708481,
+      "size": 13045210,
       "hash": "blake3",
-      "digest": "1458254deb97a5113d525e5370cd3ce90fbd08035f95e909c079eb3a73e0d8de",
-      "path": "cq-0.4.0-aarch64-apple-darwin/cq",
+      "digest": "c7cc03f951aa895bd466a34aa53e429ed8cf3927bc5ba7e38934af01bb3bbe66",
+      "path": "cq-0.11.0-aarch64-apple-darwin/cq",
       "providers": [
         {
-          "url": "https://github.com/technicalpickles/cq/releases/download/v0.4.0/cq-0.4.0-aarch64-apple-darwin.tar.gz"
+          "url": "https://github.com/technicalpickles/cq/releases/download/v0.11.0/cq-0.11.0-aarch64-apple-darwin.tar.gz"
         },
         {
           "type": "github-release",
           "repo": "https://github.com/technicalpickles/cq",
-          "tag": "v0.4.0",
-          "name": "cq-0.4.0-aarch64-apple-darwin.tar.gz"
+          "tag": "v0.11.0",
+          "name": "cq-0.11.0-aarch64-apple-darwin.tar.gz"
+        }
+      ],
+      "format": "tar.gz"
+    },
+    "linux-aarch64": {
+      "size": 15371459,
+      "hash": "blake3",
+      "digest": "0018307132bcb9909b42b7b75df0c02dbda068d35a2bc95eaa761f116d76e0b1",
+      "path": "cq-0.11.0-aarch64-unknown-linux-gnu/cq",
+      "providers": [
+        {
+          "url": "https://github.com/technicalpickles/cq/releases/download/v0.11.0/cq-0.11.0-aarch64-unknown-linux-gnu.tar.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/technicalpickles/cq",
+          "tag": "v0.11.0",
+          "name": "cq-0.11.0-aarch64-unknown-linux-gnu.tar.gz"
+        }
+      ],
+      "format": "tar.gz"
+    },
+    "linux-x86_64": {
+      "size": 16405976,
+      "hash": "blake3",
+      "digest": "2692833967c593e04daeb77b683d6ac51c26aebe94513a19dd478011bb276b4e",
+      "path": "cq-0.11.0-x86_64-unknown-linux-gnu/cq",
+      "providers": [
+        {
+          "url": "https://github.com/technicalpickles/cq/releases/download/v0.11.0/cq-0.11.0-x86_64-unknown-linux-gnu.tar.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/technicalpickles/cq",
+          "tag": "v0.11.0",
+          "name": "cq-0.11.0-x86_64-unknown-linux-gnu.tar.gz"
         }
       ],
       "format": "tar.gz"
diff --git a/bin/frork b/bin/frork
index 97e529a2..2e7c05f6 100755
--- a/bin/frork
+++ b/bin/frork
@@ -4,18 +4,18 @@
   "name": "frork",
   "platforms": {
     "macos-aarch64": {
-      "size": 1888259,
+      "size": 1907116,
       "hash": "blake3",
-      "digest": "ee42b9eb63726d3f6ad7b35dda284ef07ec1c762c1cfa518595ce0ee57132b86",
+      "digest": "3ad4bafce412760118bf571d6da6569862bac4e985ba1efef6f6e4497e0060f6",
       "path": "frork",
       "providers": [
         {
-          "url": "https://github.com/kejadlen/frork/releases/download/v2026-08-29+d4a7805/frork-aarch64-apple-darwin.tar.gz"
+          "url": "https://github.com/kejadlen/frork/releases/download/v2026-11-03+e7873dc/frork-aarch64-apple-darwin.tar.gz"
         },
         {
           "type": "github-release",
           "repo": "https://github.com/kejadlen/frork",
-          "tag": "v2026-08-29+d4a7805",
+          "tag": "v2026-11-03+e7873dc",
           "name": "frork-aarch64-apple-darwin.tar.gz"
         }
       ],
diff --git a/bin/fzf b/bin/fzf
index 14cb35c1..fb1a0774 100755
--- a/bin/fzf
+++ b/bin/fzf
@@ -20,6 +20,42 @@
         }
       ],
       "format": "tar.gz"
+    },
+    "linux-aarch64": {
+      "size": 2078357,
+      "hash": "blake3",
+      "digest": "8c9f1b93a19ce6c6c9536bcdc585d943c09dd1b3b7a02029aa667725018bbc61",
+      "path": "fzf",
+      "providers": [
+        {
+          "url": "https://github.com/junegunn/fzf/releases/download/v0.74.5/fzf-0.74.5-linux_arm64.tar.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/junegunn/fzf",
+          "tag": "v0.74.5",
+          "name": "fzf-0.74.5-linux_arm64.tar.gz"
+        }
+      ],
+      "format": "tar.gz"
+    },
+    "linux-x86_64": {
+      "size": 2291079,
+      "hash": "blake3",
+      "digest": "936969d1cb9feab256180ede9c5ca58bd8b9bcea261b5e5d3d840a4f41bf2ac4",
+      "path": "fzf",
+      "providers": [
+        {
+          "url": "https://github.com/junegunn/fzf/releases/download/v0.74.5/fzf-0.74.5-linux_amd64.tar.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/junegunn/fzf",
+          "tag": "v0.74.5",
+          "name": "fzf-0.74.5-linux_amd64.tar.gz"
+        }
+      ],
+      "format": "tar.gz"
     }
   }
 }
diff --git a/bin/jj b/bin/jj
index 9546456e..16e5cb92 100755
--- a/bin/jj
+++ b/bin/jj
@@ -4,19 +4,55 @@
   "name": "jj",
   "platforms": {
     "macos-aarch64": {
-      "size": 10074305,
+      "size": 10642035,
       "hash": "blake3",
-      "digest": "7f1b8cc7da15cc098d7770e19d92beea222e51b0e03eaa3bb50981670948db76",
+      "digest": "8c41a11861940584cdb9c73f636d66893e0a05da81ca19c5921aa31b09c6439d",
       "path": "jj",
       "providers": [
         {
-          "url": "https://github.com/jj-vcs/jj/releases/download/v0.46.0/jj-v0.46.0-aarch64-apple-darwin.tar.gz"
+          "url": "https://github.com/jj-vcs/jj/releases/download/v0.47.1/jj-v0.47.1-aarch64-apple-darwin.tar.gz"
         },
         {
           "type": "github-release",
           "repo": "https://github.com/jj-vcs/jj",
-          "tag": "v0.46.0",
-          "name": "jj-v0.46.0-aarch64-apple-darwin.tar.gz"
+          "tag": "v0.47.1",
+          "name": "jj-v0.47.1-aarch64-apple-darwin.tar.gz"
+        }
+      ],
+      "format": "tar.gz"
+    },
+    "linux-aarch64": {
+      "size": 10989474,
+      "hash": "blake3",
+      "digest": "93d913f0c1018a01db6c2c6518b63b77a4bb47aa3cac44a5db226ee0aa3f3be5",
+      "path": "jj",
+      "providers": [
+        {
+          "url": "https://github.com/jj-vcs/jj/releases/download/v0.47.1/jj-v0.47.1-aarch64-unknown-linux-musl.tar.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/jj-vcs/jj",
+          "tag": "v0.47.1",
+          "name": "jj-v0.47.1-aarch64-unknown-linux-musl.tar.gz"
+        }
+      ],
+      "format": "tar.gz"
+    },
+    "linux-x86_64": {
+      "size": 11743512,
+      "hash": "blake3",
+      "digest": "1eefd06a02a5c31382cad4f4f2a85ecb75e793213274d918978f643cd74b010e",
+      "path": "jj",
+      "providers": [
+        {
+          "url": "https://github.com/jj-vcs/jj/releases/download/v0.47.1/jj-v0.47.1-x86_64-unknown-linux-musl.tar.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/jj-vcs/jj",
+          "tag": "v0.47.1",
+          "name": "jj-v0.47.1-x86_64-unknown-linux-musl.tar.gz"
         }
       ],
       "format": "tar.gz"
diff --git a/bin/jq b/bin/jq
index 30be5414..76319bbd 100755
--- a/bin/jq
+++ b/bin/jq
@@ -19,6 +19,40 @@
           "name": "jq-macos-arm64"
         }
       ]
+    },
+    "linux-aarch64": {
+      "size": 1797688,
+      "hash": "blake3",
+      "digest": "428869e0c7c8b86cc2422a2b1e034cb026776795fb5df707bca3f889c6256626",
+      "path": "jq",
+      "providers": [
+        {
+          "url": "https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-linux-arm64"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/jqlang/jq",
+          "tag": "jq-1.8.2",
+          "name": "jq-linux-arm64"
+        }
+      ]
+    },
+    "linux-x86_64": {
+      "size": 2267912,
+      "hash": "blake3",
+      "digest": "4311c64431be63fb82189e7e0950b060b39046e865ebb796ec3fa974309c4986",
+      "path": "jq",
+      "providers": [
+        {
+          "url": "https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-linux-amd64"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/jqlang/jq",
+          "tag": "jq-1.8.2",
+          "name": "jq-linux-amd64"
+        }
+      ]
     }
   }
 }
diff --git a/bin/just b/bin/just
index e9573f63..ae7e3b57 100755
--- a/bin/just
+++ b/bin/just
@@ -4,19 +4,55 @@
   "name": "just",
   "platforms": {
     "macos-aarch64": {
-      "size": 2146038,
+      "size": 2174952,
       "hash": "blake3",
-      "digest": "7c37991ba1868285631b001a886939d134d5ee83dc1ff64023979681bf9f1d76",
+      "digest": "2f0ec62b393d69332f4fa6a75a4f3ddf32eaf98f9e320769d9cfa8fd711adf70",
       "path": "just",
       "providers": [
         {
-          "url": "https://github.com/casey/just/releases/download/1.58.0/just-1.58.0-aarch64-apple-darwin.tar.gz"
+          "url": "https://github.com/casey/just/releases/download/1.59.0/just-1.59.0-aarch64-apple-darwin.tar.gz"
         },
         {
           "type": "github-release",
           "repo": "https://github.com/casey/just",
-          "tag": "1.58.0",
-          "name": "just-1.58.0-aarch64-apple-darwin.tar.gz"
+          "tag": "1.59.0",
+          "name": "just-1.59.0-aarch64-apple-darwin.tar.gz"
+        }
+      ],
+      "format": "tar.gz"
+    },
+    "linux-aarch64": {
+      "size": 2343258,
+      "hash": "blake3",
+      "digest": "afb69f25939097296b45c74bdab06ff8d1085152bd213b22d1b5f626948c1bfa",
+      "path": "just",
+      "providers": [
+        {
+          "url": "https://github.com/casey/just/releases/download/1.59.0/just-1.59.0-aarch64-unknown-linux-musl.tar.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/casey/just",
+          "tag": "1.59.0",
+          "name": "just-1.59.0-aarch64-unknown-linux-musl.tar.gz"
+        }
+      ],
+      "format": "tar.gz"
+    },
+    "linux-x86_64": {
+      "size": 2572537,
+      "hash": "blake3",
+      "digest": "37d22e85e3e950f8e03c85cc8572a60d17325b481bdd1184b9cc1e0c52540516",
+      "path": "just",
+      "providers": [
+        {
+          "url": "https://github.com/casey/just/releases/download/1.59.0/just-1.59.0-x86_64-unknown-linux-musl.tar.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/casey/just",
+          "tag": "1.59.0",
+          "name": "just-1.59.0-x86_64-unknown-linux-musl.tar.gz"
         }
       ],
       "format": "tar.gz"
diff --git a/bin/ranger b/bin/ranger
index ccaa33bb..a06af8c6 100755
--- a/bin/ranger
+++ b/bin/ranger
@@ -4,22 +4,40 @@
   "name": "ranger",
   "platforms": {
     "macos-aarch64": {
-      "size": 3280335,
+      "size": 3297723,
       "hash": "blake3",
-      "digest": "b1acc4f9c86d25d03adbec6568b65283d2eb6a1aec25dc0e3cd3671a979eb653",
+      "digest": "de838954e25bd54dd44c39e51a6f02c72ee1d5ca91d9f614d28ef8fd439221e8",
       "path": "ranger",
       "providers": [
         {
-          "url": "https://github.com/kejadlen/ranger/releases/download/v2026-10-15+85beda2/ranger-aarch64-apple-darwin.tar.gz"
+          "url": "https://github.com/kejadlen/ranger/releases/download/v2026-11-04+875cca9/ranger-aarch64-apple-darwin.tar.gz"
         },
         {
           "type": "github-release",
           "repo": "https://github.com/kejadlen/ranger",
-          "tag": "v2026-10-15+85beda2",
+          "tag": "v2026-11-04+875cca9",
           "name": "ranger-aarch64-apple-darwin.tar.gz"
         }
       ],
       "format": "tar.gz"
+    },
+    "linux-aarch64": {
+      "size": 3629972,
+      "hash": "blake3",
+      "digest": "2e8adc1b1c30f4ceba11fa6f55fabeb5f67517ef71dd4382a8f8f366ff0aa3f9",
+      "path": "ranger",
+      "providers": [
+        {
+          "url": "https://github.com/kejadlen/ranger/releases/download/v2026-11-04+875cca9/ranger-aarch64-unknown-linux-gnu.tar.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/kejadlen/ranger",
+          "tag": "v2026-11-04+875cca9",
+          "name": "ranger-aarch64-unknown-linux-gnu.tar.gz"
+        }
+      ],
+      "format": "tar.gz"
     }
   }
 }
diff --git a/bin/sops b/bin/sops
index 112c4a51..84154056 100755
--- a/bin/sops
+++ b/bin/sops
@@ -19,6 +19,40 @@
           "name": "sops-v3.13.3.darwin.arm64"
         }
       ]
+    },
+    "linux-aarch64": {
+      "size": 48300194,
+      "hash": "blake3",
+      "digest": "9213c5ad5ce6b89d14b34c67191a4aa6887283b89b057950915f50db03312037",
+      "path": "sops",
+      "providers": [
+        {
+          "url": "https://github.com/getsops/sops/releases/download/v3.13.3/sops-v3.13.3.linux.arm64"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/getsops/sops",
+          "tag": "v3.13.3",
+          "name": "sops-v3.13.3.linux.arm64"
+        }
+      ]
+    },
+    "linux-x86_64": {
+      "size": 52121762,
+      "hash": "blake3",
+      "digest": "2e0d82a8f6389f7a5340c187bc86eeefc9b4cf06b7a4604bbdbc32a5346bb052",
+      "path": "sops",
+      "providers": [
+        {
+          "url": "https://github.com/getsops/sops/releases/download/v3.13.3/sops-v3.13.3.linux.amd64"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/getsops/sops",
+          "tag": "v3.13.3",
+          "name": "sops-v3.13.3.linux.amd64"
+        }
+      ]
     }
   }
 }
diff --git a/bin/tree-sitter b/bin/tree-sitter
index c5cb7b53..b5df9026 100755
--- a/bin/tree-sitter
+++ b/bin/tree-sitter
@@ -4,22 +4,58 @@
   "name": "tree-sitter",
   "platforms": {
     "macos-aarch64": {
-      "size": 6833180,
+      "size": 7372537,
       "hash": "blake3",
-      "digest": "1be7b8abb78b0fe9eb1fbd134360489bef631156001b6612d8908e7f355247f4",
+      "digest": "8a4f7bf32403b0feddb4f77789f0aeefb9fc17f859febf5372908d996e0d7a1a",
       "path": "tree-sitter",
       "providers": [
         {
-          "url": "https://github.com/tree-sitter/tree-sitter/releases/download/v0.26.12/tree-sitter-macos-arm64.gz"
+          "url": "https://github.com/tree-sitter/tree-sitter/releases/download/v0.27.1/tree-sitter-macos-arm64.gz"
         },
         {
           "type": "github-release",
           "repo": "https://github.com/tree-sitter/tree-sitter",
-          "tag": "v0.26.12",
+          "tag": "v0.27.1",
           "name": "tree-sitter-macos-arm64.gz"
         }
       ],
       "format": "gz"
+    },
+    "linux-aarch64": {
+      "size": 8102735,
+      "hash": "blake3",
+      "digest": "bdec51bb51e5300127f9c08bc8eb26c6946360136e4c14ee3a8b09255b2258ed",
+      "path": "tree-sitter",
+      "providers": [
+        {
+          "url": "https://github.com/tree-sitter/tree-sitter/releases/download/v0.27.1/tree-sitter-linux-arm64.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/tree-sitter/tree-sitter",
+          "tag": "v0.27.1",
+          "name": "tree-sitter-linux-arm64.gz"
+        }
+      ],
+      "format": "gz"
+    },
+    "linux-x86_64": {
+      "size": 8702418,
+      "hash": "blake3",
+      "digest": "ce36adfd68a41d37d97c2f7a9c9d73ea0382719b651a167e0c2365bafcf07bdb",
+      "path": "tree-sitter",
+      "providers": [
+        {
+          "url": "https://github.com/tree-sitter/tree-sitter/releases/download/v0.27.1/tree-sitter-linux-x64.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/tree-sitter/tree-sitter",
+          "tag": "v0.27.1",
+          "name": "tree-sitter-linux-x64.gz"
+        }
+      ],
+      "format": "gz"
     }
   }
 }
diff --git a/bin/zizmor b/bin/zizmor
index fd25fefe..eb4b1d99 100755
--- a/bin/zizmor
+++ b/bin/zizmor
@@ -4,22 +4,58 @@
   "name": "zizmor",
   "platforms": {
     "macos-aarch64": {
-      "size": 8490680,
+      "size": 8597835,
       "hash": "blake3",
-      "digest": "117538f5115b97fffff03a478790a1c8e94f63716aabf34bf492ed4f7d7a9bac",
+      "digest": "4df47dd4232eec8e9c2c6c1ec16308a4250a4c95f88c253d72f659df65e45c6f",
       "path": "zizmor",
       "providers": [
         {
-          "url": "https://github.com/zizmorcore/zizmor/releases/download/v1.31.1/zizmor-aarch64-apple-darwin.tar.gz"
+          "url": "https://github.com/zizmorcore/zizmor/releases/download/v1.32.0/zizmor-aarch64-apple-darwin.tar.gz"
         },
         {
           "type": "github-release",
           "repo": "https://github.com/zizmorcore/zizmor",
-          "tag": "v1.31.1",
+          "tag": "v1.32.0",
           "name": "zizmor-aarch64-apple-darwin.tar.gz"
         }
       ],
       "format": "tar.gz"
+    },
+    "linux-aarch64": {
+      "size": 9004349,
+      "hash": "blake3",
+      "digest": "1dde7f7f1003d80ef285c5dbd9c1979d93a169d3db39f6d86b84436a320a7edb",
+      "path": "zizmor",
+      "providers": [
+        {
+          "url": "https://github.com/zizmorcore/zizmor/releases/download/v1.32.0/zizmor-aarch64-unknown-linux-gnu.tar.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/zizmorcore/zizmor",
+          "tag": "v1.32.0",
+          "name": "zizmor-aarch64-unknown-linux-gnu.tar.gz"
+        }
+      ],
+      "format": "tar.gz"
+    },
+    "linux-x86_64": {
+      "size": 9418466,
+      "hash": "blake3",
+      "digest": "2b26e9f38bb0bd636dceb7d95d54e056c5aaae4db2f65b27506d08d4c567c0df",
+      "path": "zizmor",
+      "providers": [
+        {
+          "url": "https://github.com/zizmorcore/zizmor/releases/download/v1.32.0/zizmor-x86_64-unknown-linux-gnu.tar.gz"
+        },
+        {
+          "type": "github-release",
+          "repo": "https://github.com/zizmorcore/zizmor",
+          "tag": "v1.32.0",
+          "name": "zizmor-x86_64-unknown-linux-gnu.tar.gz"
+        }
+      ],
+      "format": "tar.gz"
     }
   }
 }