diff --git a/.gitignore b/.gitignore
index 45de3e979171e38d3b0caec6771c7b60ad32ff46..dea1e7f35017da8ba8292b401f66f42b8d5855a5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,4 +28,5 @@ compile_commands.json
 /prebuilt/config.mk
 /prebuilt/config.mk.bak
 /AnalysisResult/
-/public/
+/public/lib/
+/public/sysroot/
diff --git a/public/README.md b/public/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..f656ee9df74b25177535b0647a46b38a8be74cf9
--- /dev/null
+++ b/public/README.md
@@ -0,0 +1,12 @@
+GN integration for Zircon
+=========================
+
+This directory hosts generated GN files for Zircon. These files are created by
+`//build/zircon/create_gn_rules.py` and should never be manually edited.
+
+In order to expose a Zircon module to GN, set the `MODULE_PACKAGE` attribute in
+its `rules.mk` build file. The possible values are:
+ - `src`: the module's sources are published;
+ - `so`: the module is exposed as a precompiled shared library;
+ - `a`: the module is exposed as a precompiled static library;
+Note that this currently only applies to `ulib` modules.