diff --git a/scripts/ktx-reset.sh b/scripts/ktx-reset.sh
new file mode 100755
index 00000000..808e0d25
--- /dev/null
+++ b/scripts/ktx-reset.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+# ktx-reset.sh - Reset a ktx project directory back to its seed state.
+#
+# Removes everything in
except ktx.yaml and .ktx/, and prunes .ktx/
+# down to just .ktx/secrets/. Useful when re-running ingest/setup against
+# a known-clean project tree.
+
+set -e
+set -o pipefail
+
+if [ -z "$1" ]; then
+ echo "usage: ktx-reset " >&2
+ exit 1
+fi
+
+dir="${1%/}"
+if [ ! -d "$dir" ]; then
+ echo "ktx-reset: $dir is not a directory" >&2
+ exit 1
+fi
+
+find "$dir" -mindepth 1 -maxdepth 1 ! -name ktx.yaml ! -name .ktx -exec rm -rf {} +
+if [ -d "$dir/.ktx" ]; then
+ find "$dir/.ktx" -mindepth 1 -maxdepth 1 ! -name secrets -exec rm -rf {} +
+fi
+tree -a "$dir"