diff --git a/src/command/render/project.ts b/src/command/render/project.ts
index 4e11ac62eb..192426acf8 100644
--- a/src/command/render/project.ts
+++ b/src/command/render/project.ts
@@ -929,52 +929,61 @@ async function runScripts(
   quiet: boolean,
   env?: { [key: string]: string },
 ) {
+  // initialize the environment if needed
+  if (env) {
+    env = {
+      ...env,
+    };
+  } else {
+    env = {};
+  }
+  if (!env) throw new Error("should never get here");
+
+  // Pass some argument as environment
+  env["QUARTO_PROJECT_SCRIPT_PROGRESS"] = progress ? "1" : "0";
+  env["QUARTO_PROJECT_SCRIPT_QUIET"] = quiet ? "1" : "0";
+
   for (let i = 0; i < scripts.length; i++) {
     const args = parseShellRunCommand(scripts[i]);
     const script = args[0];
 
     if (progress && !quiet) {
-      info(colors.bold(colors.blue(`${script}`)));
+      info(colors.bold(colors.blue(`Running script '${script}'`)));
     }
 
-    const handler = handlerForScript(script);
-    if (handler) {
-      if (env) {
-        env = {
-          ...env,
-        };
-      } else {
-        env = {};
-      }
-      if (!env) throw new Error("should never get here");
-      const input = Deno.env.get("QUARTO_USE_FILE_FOR_PROJECT_INPUT_FILES");
-      const output = Deno.env.get("QUARTO_USE_FILE_FOR_PROJECT_OUTPUT_FILES");
-      if (input) {
-        env["QUARTO_USE_FILE_FOR_PROJECT_INPUT_FILES"] = input;
-      }
-      if (output) {
-        env["QUARTO_USE_FILE_FOR_PROJECT_OUTPUT_FILES"] = output;
-      }
+    const handler = handlerForScript(script) ?? {
+      run: async (
+        script: string,
+        args: string[],
+        _stdin?: string,
+        options?: RunHandlerOptions,
+      ) => {
+        return await execProcess({
+          cmd: script,
+          args: args,
+          cwd: options?.cwd,
+          stdout: options?.stdout,
+          env: options?.env,
+        });
+      },
+    };
 
-      const result = await handler.run(script, args.splice(1), undefined, {
-        cwd: projDir,
-        stdout: quiet ? "piped" : "inherit",
-        env,
-      });
-      if (!result.success) {
-        throw new Error();
-      }
-    } else {
-      const result = await execProcess({
-        cmd: args[0],
-        args: args.slice(1),
-        cwd: projDir,
-        stdout: quiet ? "piped" : "inherit",
-        env,
-      });
-      if (!result.success) {
-        throw new Error();
-      }
+    const input = Deno.env.get("QUARTO_USE_FILE_FOR_PROJECT_INPUT_FILES");
+    const output = Deno.env.get("QUARTO_USE_FILE_FOR_PROJECT_OUTPUT_FILES");
+    if (input) {
+      env["QUARTO_USE_FILE_FOR_PROJECT_INPUT_FILES"] = input;
+    }
+    if (output) {
+      env["QUARTO_USE_FILE_FOR_PROJECT_OUTPUT_FILES"] = output;
+    }
+
+    const result = await handler.run(script, args.splice(1), undefined, {
+      cwd: projDir,
+      stdout: quiet ? "piped" : "inherit",
+      env,
+    });
+    if (!result.success) {
+      throw new Error();
     }
   }
   if (scripts.length > 0) {