diff --git a/website/docs/developer-docs/contributing.md b/website/docs/developer-docs/contributing.md
index 1706be12adac..e600077f3bda 100644
--- a/website/docs/developer-docs/contributing.md
+++ b/website/docs/developer-docs/contributing.md
@@ -120,7 +120,7 @@ When you are creating an enhancement suggestion, please fill in [the template](h
authentik can be run locally, although depending on which part you want to work on, different prerequisites are required.
-This is documented in the [developer docs](./setup/frontend-dev-environment.md).
+This is documented in the [developer docs](./setup/frontend-dev-environment.mdx).
### Help with the docs
diff --git a/website/docs/developer-docs/setup/_npm-install-scripts-admonition.mdx b/website/docs/developer-docs/setup/_npm-install-scripts-admonition.mdx
new file mode 100644
index 000000000000..23c5d6a2a178
--- /dev/null
+++ b/website/docs/developer-docs/setup/_npm-install-scripts-admonition.mdx
@@ -0,0 +1,11 @@
+:::info NPM install scripts are disabled by default
+The repository's NPM runtime configuration file (`.npmrc`) sets `ignore-scripts=true`. This means that `preinstall`/`install`/`postinstall` lifecycle scripts do not run during `npm ci`. This neutralizes a dominant NPM supply-chain attack pattern at the cost of skipping a few legitimate native-binary unpacks.
+
+If the watch build fails because a package needs its install script (commonly `esbuild`, `chromedriver`, `tree-sitter`, or `tree-sitter-json`), rebuild only that package, for example:
+
+```shell
+npm rebuild --foreground-scripts esbuild chromedriver tree-sitter tree-sitter-json
+```
+
+**Do not** edit `.npmrc` to flip `ignore-scripts` off — that re-introduces the risk repository-wide.
+:::
diff --git a/website/docs/developer-docs/setup/frontend-dev-environment.md b/website/docs/developer-docs/setup/frontend-dev-environment.mdx
similarity index 95%
rename from website/docs/developer-docs/setup/frontend-dev-environment.md
rename to website/docs/developer-docs/setup/frontend-dev-environment.mdx
index 03bcb0256ce1..1f31a59b5b2e 100644
--- a/website/docs/developer-docs/setup/frontend-dev-environment.md
+++ b/website/docs/developer-docs/setup/frontend-dev-environment.mdx
@@ -8,6 +8,8 @@ tags:
- docker
---
+import NPMInstallScriptsAdmonition from "./\_npm-install-scripts-admonition.mdx";
+
If you're focusing solely on frontend development, you can create a minimal development environment using Docker and Node.js. This setup allows you to make and preview changes to the frontend in real-time, without needing to interact with the backend.
### Prerequisites
@@ -55,6 +57,8 @@ If you're focusing solely on frontend development, you can create a minimal deve
make web-watch
```
+
+
5. In a new terminal, navigate to the cloned repository root and start the backend containers with Docker Compose.
```shell
diff --git a/website/docs/developer-docs/setup/full-dev-environment.mdx b/website/docs/developer-docs/setup/full-dev-environment.mdx
index ca9d5bb5dff4..88c474641459 100644
--- a/website/docs/developer-docs/setup/full-dev-environment.mdx
+++ b/website/docs/developer-docs/setup/full-dev-environment.mdx
@@ -11,6 +11,7 @@ tags:
import TabItem from "@theme/TabItem";
import Tabs from "@theme/Tabs";
+import NPMInstallScriptsAdmonition from "./\_npm-install-scripts-admonition.mdx";
## Prerequisites
@@ -126,6 +127,8 @@ Install all required JavaScript and Python dependencies and create an isolated P
make install
```
+
+
### Generate development configuration
Create a local configuration file that uses the local databases for development: