diff --git a/docfx.cmd b/docfx.cmd
new file mode 100644
index 000000000..64f4656a9
--- /dev/null
+++ b/docfx.cmd
@@ -0,0 +1,15 @@
+SETLOCAL
+SETLOCAL ENABLEEXTENSIONS
+
+docfx.exe build docfx.json > docfx.log
+@IF NOT %ERRORLEVEL% == 0 (
+ type docfx.log
+ ECHO Error: docfx build failed. 1>&2
+ EXIT /B %ERRORLEVEL%
+)
+@type docfx.log
+@type docfx.log | findstr /C:"Build succeeded."
+@IF NOT %ERRORLEVEL% == 0 (
+ ECHO Error: you have introduced build warnings. 1>&2
+ EXIT /B %ERRORLEVEL%
+)
diff --git a/docfx.json b/docfx.json
new file mode 100644
index 000000000..8215dda72
--- /dev/null
+++ b/docfx.json
@@ -0,0 +1,28 @@
+{
+ "build": {
+ "content": [
+ {
+ "files": [
+ "**.md",
+ "toc.yml"
+ ]
+ }
+ ],
+ "resource": [
+ {
+ "files": [
+ ".markdownlint.yaml",
+ ".vscode/settings.json",
+ "**.png"
+ ]
+ }
+ ],
+ "dest": "_site",
+ "globalMetadataFiles": [],
+ "fileMetadataFiles": [],
+ "noLangKeyword": false,
+ "keepFileLink": false,
+ "cleanupCacheHistory": true,
+ "disableGitFeatures": true
+ }
+}
diff --git a/specification/resource/semantic_conventions/faas.md b/specification/resource/semantic_conventions/faas.md
index 50f32adcd..ded443849 100644
--- a/specification/resource/semantic_conventions/faas.md
+++ b/specification/resource/semantic_conventions/faas.md
@@ -8,7 +8,7 @@
|---|---|---|--|
| faas.name | The name of the function being executed. | `my-function` | Yes |
| faas.id | The unique name of the function being executed.
For example, in AWS Lambda this field corresponds to the [ARN] value, in GCP to the URI of the resource, and in Azure to the [FunctionDirectory] field. | `arn:aws:lambda:us-west-2:123456789012:function:my-function` | Yes |
-| faas.version | The version string of the function being executed as defined in [Version Attributes](#version-attributes). | `semver:2.0.0` | No |
+| faas.version | The version string of the function being executed as defined in [Version Attributes](./README.md#version-attributes) | `semver:2.0.0` | No |
| faas.instance | The execution environment ID as a string. | `my-function:instance-0001` | No |
Note: The resource attribute `faas.instance` differs from the span attribute `faas.execution`. For more information see the [Semantic conventions for FaaS spans](../../trace/semantic_conventions/faas.md#difference-between-execution-and-instance).
diff --git a/specification/resource/semantic_conventions/host.md b/specification/resource/semantic_conventions/host.md
index 98150b784..712ad7050 100644
--- a/specification/resource/semantic_conventions/host.md
+++ b/specification/resource/semantic_conventions/host.md
@@ -12,4 +12,4 @@
| host.type | Type of host.
For Cloud this must be the machine type.| `n1-standard-1` |
| host.image.name | Name of the VM image or OS install the host was instantiated from. | `infra-ami-eks-worker-node-7d4ec78312`, `CentOS-8-x86_64-1905` |
| host.image.id | VM image id. For Cloud, this value is from the provider. | `ami-07b06b442921831e5` |
-| host.image.version | The version string of the VM image as defined in [Version Attributes](#version-attributes). | `0.1` |
+| host.image.version | The version string of the VM image as defined in [Version Attributes](./README.md#version-attributes). | `0.1` |
diff --git a/specification/trace/semantic_conventions/faas.md b/specification/trace/semantic_conventions/faas.md
index 11390868b..39655c429 100644
--- a/specification/trace/semantic_conventions/faas.md
+++ b/specification/trace/semantic_conventions/faas.md
@@ -21,7 +21,7 @@ This document defines how to describe an instance of a function that runs withou
Span `name` should be set to the function name being executed. Depending on the value of the `faas.trigger` attribute, additional attributes MUST be set. For example, an `http` trigger SHOULD follow the [HTTP Server semantic conventions](http.md#http-server-semantic-conventions). For more information, refer to the [Function Trigger Type](#function-trigger-type) section.
-If Spans following this convention are produced, a Resource of type `faas` MUST exist following the [Resource semantic convention](../../resource/semantic_conventions/README.md#function-as-a-service).
+If Spans following this convention are produced, a Resource of type `faas` MUST exist following the [Resource semantic convention](../../resource/semantic_conventions/faas.md#function-as-a-service).
| Attribute name | Notes and examples | Required? |
|---|---|--|
diff --git a/toc.yml b/toc.yml
new file mode 100644
index 000000000..ef46cdb93
--- /dev/null
+++ b/toc.yml
@@ -0,0 +1,2 @@
+- name: OpenTelemetry Specification
+ href: ./README.md