diff --git a/src/main/java/com/google/devtools/build/docgen/DocgenConsts.java b/src/main/java/com/google/devtools/build/docgen/DocgenConsts.java
index d50a299..da7a1da 100644
--- a/src/main/java/com/google/devtools/build/docgen/DocgenConsts.java
+++ b/src/main/java/com/google/devtools/build/docgen/DocgenConsts.java
@@ -100,7 +100,7 @@
    * (e.g. common-definitions.label-expansion).
    */
   public static final Pattern BLAZE_RULE_LINK = Pattern.compile(
-      "\\$\\{link (([a-z_-]+)(\\.([a-z_-]+))?)\\}");
+      "\\$\\{link (([a-zA-Z_-]+)(\\.([a-zA-Z_\\.-]+))?)\\}");
 
   /**
    * i.e. <!-- #BLAZE_RULE(NAME = RULE_NAME, TYPE = RULE_TYPE, FAMILY = RULE_FAMILY) -->
diff --git a/src/main/java/com/google/devtools/build/docgen/RuleDocumentation.java b/src/main/java/com/google/devtools/build/docgen/RuleDocumentation.java
index 2fec7c4..f173bdf 100644
--- a/src/main/java/com/google/devtools/build/docgen/RuleDocumentation.java
+++ b/src/main/java/com/google/devtools/build/docgen/RuleDocumentation.java
@@ -209,10 +209,18 @@
    * Returns a string containing any extra documentation for the name attribute for this
    * rule.
    */
-  public String getNameExtraHtmlDoc() {
-    return docVariables.containsKey(DocgenConsts.VAR_NAME)
+  public String getNameExtraHtmlDoc() throws BuildEncyclopediaDocException {
+    String expandedDoc = docVariables.containsKey(DocgenConsts.VAR_NAME)
         ? docVariables.get(DocgenConsts.VAR_NAME)
         : "";
+    if (linkExpander != null) {
+      try {
+        expandedDoc = linkExpander.expand(expandedDoc);
+      } catch (IllegalArgumentException e) {
+        throw new BuildEncyclopediaDocException(fileName, startLineCount, e.getMessage());
+      }
+    }
+    return expandedDoc;
   }
 
   /**
diff --git a/src/main/java/com/google/devtools/build/docgen/RuleLinkExpander.java b/src/main/java/com/google/devtools/build/docgen/RuleLinkExpander.java
index 8ac8cbc..65147d0 100644
--- a/src/main/java/com/google/devtools/build/docgen/RuleLinkExpander.java
+++ b/src/main/java/com/google/devtools/build/docgen/RuleLinkExpander.java
@@ -13,8 +13,10 @@
 // limitations under the License.
 package com.google.devtools.build.docgen;
 
+import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 
+import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
 import java.util.regex.Matcher;
@@ -28,16 +30,32 @@
 class RuleLinkExpander {
   private static final String EXAMPLES_SUFFIX = "_examples";
   private static final String ARGS_SUFFIX = "_args";
+  private static final String FUNCTIONS_PAGE = "functions";
 
   private static final Set<String> STATIC_PAGES = ImmutableSet.<String>of(
       "common-definitions",
       "make-variables",
       "predefined-python-variables");
+  private static final Map<String, String> FUNCTIONS = ImmutableMap.<String, String>builder()
+      .put("load", FUNCTIONS_PAGE)
+      .put("subinclude", FUNCTIONS_PAGE)
+      .put("PYTHON-PREPROCESSING-REQUIRED", FUNCTIONS_PAGE)
+      .put("package", FUNCTIONS_PAGE)
+      .put("package_group", FUNCTIONS_PAGE)
+      .put("description", FUNCTIONS_PAGE)
+      .put("distribs", FUNCTIONS_PAGE)
+      .put("licenses", FUNCTIONS_PAGE)
+      .put("exports_files", FUNCTIONS_PAGE)
+      .put("glob", FUNCTIONS_PAGE)
+      .put("select", FUNCTIONS_PAGE)
+      .put("workspace", FUNCTIONS_PAGE)
+      .build();
 
-  private final Map<String, String> ruleIndex;
+  private final Map<String, String> ruleIndex = new HashMap<>();
 
   RuleLinkExpander(Map<String, String> ruleIndex) {
-    this.ruleIndex = ruleIndex;
+    this.ruleIndex.putAll(ruleIndex);
+    this.ruleIndex.putAll(FUNCTIONS);
   }
 
   private void appendRuleLink(Matcher matcher, StringBuffer sb, String ruleName, String ref) {
