diff --git a/devTools/makeTwineCSSPassage.bat b/devTools/makeTwineCSSPassage.bat
new file mode 100644
index 0000000000000000000000000000000000000000..9ac31514777781a95093238c4ec817460a6a6707
--- /dev/null
+++ b/devTools/makeTwineCSSPassage.bat
@@ -0,0 +1,23 @@
+@echo off
+:: Generates devNotes/twineCSS.txt from all .css files in src/ subdir
+
+:: See if we can find a git installation
+setlocal enabledelayedexpansion
+
+for %%k in (HKCU HKLM) do (
+	for %%w in (\ \Wow6432Node\) do (
+		for /f "skip=2 delims=: tokens=1*" %%a in ('reg query "%%k\SOFTWARE%%wMicrosoft\Windows\CurrentVersion\Uninstall\Git_is1" /v InstallLocation 2^> nul') do (
+			for /f "tokens=3" %%z in ("%%a") do (
+				set GIT=%%z:%%b
+				set GITFOUND=yes
+				goto FOUND
+			)
+		)
+	)
+)
+
+:FOUND
+if %GITFOUND% == yes (
+	set "PATH=%GIT%bin;%PATH%"
+	bash --login -c ./makeTwineCSSPassage.sh
+)
diff --git a/devTools/makeTwineCSSPassage.sh b/devTools/makeTwineCSSPassage.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d8ccc4726b949c1ba132b15a26a1cf094f2428c4
--- /dev/null
+++ b/devTools/makeTwineCSSPassage.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+# Generates devNotes/twine CSS.txt from all .css files in src/ subdir
+
+# Joins all .css files from the current dir (recursive) into a Twee [script] passage
+# arguments:
+# $1: root repo dir
+# $2: output file name
+collectCSSForTwine() {
+	local files=$(find . -iname '*.css' -print)
+	files=$(echo "$files" | sort)
+	echo "" > "$2"
+	for f in $files; do
+		echo -e "\n/* ${f} */\n" >> "$2"
+		cat "$f" >> "$2"
+	done
+}
+
+ROOT_REPO_DIR="$(git rev-parse --show-toplevel)"
+cd "${ROOT_REPO_DIR}"/src
+collectCSSForTwine "${ROOT_REPO_DIR}" "${ROOT_REPO_DIR}/devNotes/twine CSS.txt"