diff --git a/scripts/update_spec b/scripts/update_spec
new file mode 100755
index 0000000..dc0a11c
--- /dev/null
+++ b/scripts/update_spec
@@ -0,0 +1,27 @@
+#!/usr/bin/env -S ERL_FLAGS=+B elixir
+
+Mix.install(req: "~> 0.4")
+
+files = [
+  {"https://raw.githubusercontent.com/jetpack-io/typeid/main/spec/invalid.yml", "priv/spec/invalid.yml"},
+  {"https://raw.githubusercontent.com/jetpack-io/typeid/main/spec/valid.yml", "priv/spec/valid.yml"}
+]
+
+IO.puts("Updating spec YAML files")
+
+:ok = for {src, dest} <- files, reduce: :ok do
+  :ok ->
+    IO.write("Downloading #{src} to #{dest}... ")
+    with {:ok, io} <- File.open(dest, [:write]),
+      {:ok, _} <- Req.get(src, into: IO.binstream(io, 500)) do
+      IO.puts("OK")
+      :ok
+    else
+      other ->
+        IO.puts("ERROR")
+        other
+    end
+  failure -> failure
+end
+
+IO.puts("Done!")
diff --git a/scripts/update_spec.sh b/scripts/update_spec.sh
deleted file mode 100755
index 0a7678c..0000000
--- a/scripts/update_spec.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env bash -ex
-
-wget https://raw.githubusercontent.com/jetpack-io/typeid/main/spec/invalid.yml -O priv/spec/invalid.yml
-wget https://raw.githubusercontent.com/jetpack-io/typeid/main/spec/valid.yml -O priv/spec/valid.yml