diff --git a/quartz/bootstrap-cli.mjs b/quartz/bootstrap-cli.mjs
index 0fbc696..21449f5 100755
--- a/quartz/bootstrap-cli.mjs
+++ b/quartz/bootstrap-cli.mjs
@@ -49,12 +49,6 @@ const SyncArgv = {
     default: true,
     describe: "push updates to your Quartz fork",
   },
-  force: {
-    boolean: true,
-    alias: ["f"],
-    default: true,
-    describe: "whether to apply the --force flag to git commands",
-  },
   pull: {
     boolean: true,
     default: true,
diff --git a/quartz/build.ts b/quartz/build.ts
index 07b51fb..c8b5b02 100644
--- a/quartz/build.ts
+++ b/quartz/build.ts
@@ -99,7 +99,7 @@ async function startServing(ctx: BuildCtx, initialContent: ProcessedContent[]) {
 
           ctx.allSlugs = [...new Set([...contentMap.keys(), ...toRebuild])]
             .filter((fp) => !toRemove.has(fp))
-            .map((fp) => slugifyFilePath(path.relative(argv.directory, fp) as FilePath))
+            .map((fp) => slugifyFilePath(path.posix.relative(argv.directory, fp) as FilePath))
 
           const parsedContent = await parseMarkdown(ctx, filesToRebuild)
           for (const content of parsedContent) {
diff --git a/quartz/plugins/emitters/aliases.ts b/quartz/plugins/emitters/aliases.ts
index 7d2c08a..818b1d7 100644
--- a/quartz/plugins/emitters/aliases.ts
+++ b/quartz/plugins/emitters/aliases.ts
@@ -18,7 +18,7 @@ export const AliasRedirects: QuartzEmitterPlugin = () => ({
 
     for (const [_tree, file] of content) {
       const ogSlug = canonicalizeServer(file.data.slug!)
-      const dir = path.relative(argv.directory, file.dirname ?? argv.directory)
+      const dir = path.posix.relative(argv.directory, file.dirname ?? argv.directory)
 
       let aliases: CanonicalSlug[] = []
       if (file.data.frontmatter?.aliases) {
diff --git a/quartz/plugins/emitters/static.ts b/quartz/plugins/emitters/static.ts
index 043a461..75bcc74 100644
--- a/quartz/plugins/emitters/static.ts
+++ b/quartz/plugins/emitters/static.ts
@@ -1,6 +1,5 @@
 import { FilePath, QUARTZ, joinSegments } from "../../path"
 import { QuartzEmitterPlugin } from "../types"
-import path from "path"
 import fs from "fs"
 import { glob } from "../../glob"
 
@@ -10,7 +9,7 @@ export const Static: QuartzEmitterPlugin = () => ({
     return []
   },
   async emit({ argv, cfg }, _content, _resources, _emit): Promise<FilePath[]> {
-    const staticPath = path.join(QUARTZ, "static")
+    const staticPath = joinSegments(QUARTZ, "static")
     const fps = await glob("**", staticPath, cfg.configuration.ignorePatterns)
     await fs.promises.cp(staticPath, joinSegments(argv.output, "static"), { recursive: true })
     return fps.map((fp) => joinSegments("static", fp)) as FilePath[]
diff --git a/quartz/plugins/transformers/lastmod.ts b/quartz/plugins/transformers/lastmod.ts
index ecdcc41..15dd89e 100644
--- a/quartz/plugins/transformers/lastmod.ts
+++ b/quartz/plugins/transformers/lastmod.ts
@@ -27,7 +27,7 @@ export const CreatedModifiedDate: QuartzTransformerPlugin<Partial<Options> | und
             let modified: MaybeDate = undefined
             let published: MaybeDate = undefined
 
-            const fp = path.join(file.cwd, file.data.filePath as string)
+            const fp = path.posix.join(file.cwd, file.data.filePath as string)
             for (const source of opts.priority) {
               if (source === "filesystem") {
                 const st = await fs.promises.stat(fp)
diff --git a/quartz/plugins/transformers/links.ts b/quartz/plugins/transformers/links.ts
index aecb58f..0765062 100644
--- a/quartz/plugins/transformers/links.ts
+++ b/quartz/plugins/transformers/links.ts
@@ -76,7 +76,7 @@ export const CrawlLinks: QuartzTransformerPlugin<Partial<Options> | undefined> =
                 // don't process external links or intra-document anchors
                 if (!(isAbsoluteUrl(dest) || dest.startsWith("#"))) {
                   dest = node.properties.href = transformLink(dest)
-                  const canonicalDest = path.normalize(joinSegments(curSlug, dest))
+                  const canonicalDest = path.posix.normalize(joinSegments(curSlug, dest))
                   const [destCanonical, _destAnchor] = splitAnchor(canonicalDest)
                   outgoing.add(destCanonical as CanonicalSlug)
                 }
diff --git a/quartz/processors/parse.ts b/quartz/processors/parse.ts
index 23af762..289ca94 100644
--- a/quartz/processors/parse.ts
+++ b/quartz/processors/parse.ts
@@ -91,7 +91,7 @@ export function createFileParser(ctx: BuildCtx, fps: FilePath[]) {
         }
 
         // base data properties that plugins may use
-        file.data.slug = slugifyFilePath(path.relative(argv.directory, file.path) as FilePath)
+        file.data.slug = slugifyFilePath(path.posix.relative(argv.directory, file.path) as FilePath)
         file.data.filePath = fp
 
         const ast = processor.parse(file)