diff --git a/load-all.ghci b/load-all.ghci
new file mode 100644
index 0000000000000000000000000000000000000000..5e904b24c6e4d6f70305b0b9f04de89445731b87
--- /dev/null
+++ b/load-all.ghci
@@ -0,0 +1,7 @@
+:set -isrc -XOverloadedStrings -XNamedFieldPuns -XLambdaCase -XMultiWayIf -XScopedTypeVariables
+
+:set -XNoImplicitPrelude
+:load src/Prelude.hs
+:set -XImplicitPrelude
+
+:load src/QBar/Cli.hs
diff --git a/run-ghci.sh b/run-ghci.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ea18fa0ce18c97a1ab4f85652ac771afaf871643
--- /dev/null
+++ b/run-ghci.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+set -e
+# see https://gitlab.haskell.org/ghc/ghc/-/issues/10920
+stack exec -- ghci -ghci-script load-all.ghci
diff --git a/run-ghcid.sh b/run-ghcid.sh
new file mode 100755
index 0000000000000000000000000000000000000000..c1bc375f260c2800241c3206d8aa1b944958b5f2
--- /dev/null
+++ b/run-ghcid.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -e
+stack exec -- ghcid -c "ghci -ghci-script load-all.ghci"