Reorganize Skylark Reference documentation.

--
MOS_MIGRATED_REVID=126081020
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/FileProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/FileProvider.java
index 0b4dd3b..9d6e4e1 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/FileProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/FileProvider.java
@@ -21,6 +21,7 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 
 /**
  * A representation of the concept "this transitive info provider builds these files".
@@ -28,7 +29,11 @@
  * <p>Every transitive info collection contains at least this provider.
  */
 @Immutable
-@SkylarkModule(name = "file_provider", doc = "An interface for rules that provide files.")
+@SkylarkModule(
+  name = "file_provider",
+  doc = "An interface for rules that provide files.",
+  category = SkylarkModuleCategory.PROVIDER
+)
 public final class FileProvider implements TransitiveInfoProvider {
   public static final FileProvider EMPTY =
       new FileProvider(NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER));
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java
index 35c0b9a..8077a59 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java
@@ -21,14 +21,13 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 
 import javax.annotation.Nullable;
 
-/**
- * Returns information about executables produced by a target and the files needed to run it.
- */
+/** Returns information about executables produced by a target and the files needed to run it. */
 @Immutable
-@SkylarkModule(name = "FilesToRunProvider", doc = "")
+@SkylarkModule(name = "FilesToRunProvider", doc = "", category = SkylarkModuleCategory.PROVIDER)
 public final class FilesToRunProvider implements TransitiveInfoProvider {
   /** The name of the field in Skylark used to access this class. */
   public static final String SKYLARK_NAME = "files_to_run";
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
index d1f1434..0de1b2d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
@@ -32,6 +32,7 @@
 import com.google.devtools.build.lib.packages.BuildType;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.util.Preconditions;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -61,7 +62,11 @@
  * manifests" (see {@link PruningManifest}).
  */
 @Immutable
-@SkylarkModule(name = "runfiles", doc = "An interface for a set of runfiles.")
+@SkylarkModule(
+  name = "runfiles",
+  category = SkylarkModuleCategory.NONE,
+  doc = "An interface for a set of runfiles."
+)
 public final class Runfiles {
   private static final Function<SymlinkEntry, Artifact> TO_ARTIFACT =
       new Function<SymlinkEntry, Artifact>() {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java
index ab533151..6dd8dd7 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java
@@ -17,26 +17,29 @@
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 
 import javax.annotation.Nullable;
 
 /**
  * Multiple {@link TransitiveInfoProvider}s bundled together.
  *
- * Represents the information made available by a {@link ConfiguredTarget} to other ones that
- * depend on it. For more information about the analysis phase, see
- * {@link com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory}.
+ * <p>Represents the information made available by a {@link ConfiguredTarget} to other ones that
+ * depend on it. For more information about the analysis phase, see {@link
+ * com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory}.
  *
- * <p>Implementations of build rules should <b>not</b> hold on to references to the
- * {@link TransitiveInfoCollection}s representing their direct prerequisites in order to reduce
- * their memory footprint (otherwise, the referenced object could refer one of its direct
- * dependencies in turn, thereby making the size of the objects reachable from a single instance
- * unbounded).
+ * <p>Implementations of build rules should <b>not</b> hold on to references to the {@link
+ * TransitiveInfoCollection}s representing their direct prerequisites in order to reduce their
+ * memory footprint (otherwise, the referenced object could refer one of its direct dependencies in
+ * turn, thereby making the size of the objects reachable from a single instance unbounded).
  *
  * @see com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory
  * @see TransitiveInfoProvider
  */
-@SkylarkModule(name = "Target", doc =
+@SkylarkModule(
+  name = "Target",
+  category = SkylarkModuleCategory.BUILTIN,
+  doc =
       "A BUILD target. It is essentially a <code>struct</code> with the following fields:"
     + "<ul>"
     + "<li><h3 id=\"modules.Target.label\">label</h3><code><a class=\"anchor\" "
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index 0499743..012e720 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -53,6 +53,7 @@
 import com.google.devtools.build.lib.rules.test.TestActionBuilder;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.util.CPU;
 import com.google.devtools.build.lib.util.Fingerprint;
 import com.google.devtools.build.lib.util.OS;
@@ -108,6 +109,7 @@
  * <pre>c1.equals(c2) <=> c1==c2.</pre>
  */
 @SkylarkModule(name = "configuration",
+    category = SkylarkModuleCategory.BUILTIN,
     doc = "Data required for the analysis of a target that comes from targets that "
         + "depend on it and not targets that it depends on.")
 public final class BuildConfiguration {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java
index 3fdd4c8..fb1f4ad 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java
@@ -19,6 +19,7 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
 import com.google.devtools.build.lib.syntax.ClassObject;
 
 import javax.annotation.Nullable;
@@ -28,7 +29,9 @@
  */
 // Documentation can be found at ctx.fragments
 @Immutable
-@SkylarkModule(name = "fragments", doc = "Possible fields are "
+@SkylarkModule(name = "fragments",
+    category = SkylarkModuleCategory.NONE,
+    doc = "Possible fields are "
     + "<a href=\"apple.html\">apple</a>, <a href=\"cpp.html\">cpp</a>, "
     + "<a href=\"java.html\">java</a>, <a href=\"jvm.html\">jvm</a> and "
     + "<a href=\"objc.html\">objc</a>. "