diff --git a/.gitignore b/.gitignore
index ec4e67f05..3a3043e3c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,6 +26,11 @@ lock
registered_data.ini
.vs/
+docs/_site/
+docs/_repo/
+docs/metadata/
+tools/
+
# quickbuild.exe
/VersionGeneratingLogs/
QLogs
diff --git a/docs/contributing.md b/CONTRIBUTING.md
similarity index 100%
rename from docs/contributing.md
rename to CONTRIBUTING.md
diff --git a/docs/api/index.md b/docs/api/index.md
new file mode 100644
index 000000000..a845c1d66
--- /dev/null
+++ b/docs/api/index.md
@@ -0,0 +1,28 @@
+# API Reference
+
+The .NET API for PowerShell Editor Services is organized in a way that allows
+you to easily get started using all of its services but also giving you the
+option to only use the services you care about in your application.
+
+The best starting point is the @Microsoft.PowerShell.EditorServices.EditorSession
+class which can start up all of the following services for use in a single editing
+session.
+
+Use the @Microsoft.PowerShell.EditorServices.LanguageService to provide language
+intelligence behaviors like finding the references or definition of a cmdlet or variable.
+
+Use the @Microsoft.PowerShell.EditorServices.AnalysisService to provide rule-based
+analysis of scripts using [PowerShell Script Analyzer](https://github.com/PowerShell/PSScriptAnalyzer).
+
+Use the @Microsoft.PowerShell.EditorServices.DebugService to easily interact with
+the PowerShell debugger.
+
+Use the @Microsoft.PowerShell.EditorServices.Console.ConsoleService to provide interactive
+console support in the user's editor.
+
+Use the @Microsoft.PowerShell.EditorServices.Extensions.ExtensionService to allow
+the user to extend the host editor with new capabilities using PowerShell code.
+
+The core of all the services is the @Microsoft.PowerShell.EditorServices.PowerShellContext
+class. This class manages a session's runspace and handles script and command
+execution no matter what state the runspace is in.
\ No newline at end of file
diff --git a/docs/docfx.json b/docs/docfx.json
new file mode 100644
index 000000000..8b743686e
--- /dev/null
+++ b/docs/docfx.json
@@ -0,0 +1,69 @@
+{
+ "metadata": [
+ {
+ "src": [
+ {
+ "files": [ "*.csproj" ],
+ "cwd": "../src/PowerShellEditorServices",
+ "exclude": [ "**/obj/**", "**/bin/**" ]
+ }
+ ],
+ "dest": "metadata/api"
+ }
+ ],
+ "build": {
+ "content": [
+ {
+ "cwd": "metadata/api",
+ "files": [
+ "**/**.yml"
+ ],
+ "dest": "api"
+ },
+ {
+ "cwd": "../",
+ "files": [
+ "CONTRIBUTING.md",
+ "CHANGELOG.md"
+ ]
+ },
+ {
+ "cwd": ".",
+ "files": [
+ "toc.yml",
+ "index.md",
+ "api/index.md",
+ "guide/**.md"
+ ],
+ "exclude": [
+ "metadata/**",
+ "_site/**"
+ ]
+ }
+ ],
+ "resource": [
+ {
+ "files": [
+ "images/**"
+ ],
+ "exclude": [
+ "obj/**",
+ "_site/**"
+ ]
+ }
+ ],
+ "overwrite": [
+ {
+ "files": [
+ "apidoc/**.md"
+ ],
+ "exclude": [
+ "obj/**",
+ "_site/**"
+ ]
+ }
+ ],
+ "dest": "_site",
+ "template": [ "default", "template" ]
+ }
+}
\ No newline at end of file
diff --git a/docs/extensions.md b/docs/extensions.md
deleted file mode 100644
index 13c0a9153..000000000
--- a/docs/extensions.md
+++ /dev/null
@@ -1,112 +0,0 @@
-# PowerShell Editor Services Extensibility Model
-
-PowerShell Editor Services exposes a common extensibility model which allows
-a user to write extension code in PowerShell that works across any editor that
-uses PowerShell Editor Services.
-
-## Using Extensions
-
-**TODO**
-
-- Enable-EditorExtension -Name "SomeExtension.CustomAnalyzer"
-- Disable-EditorExtension -Name "SomeExtension.CustomAnalyzer"
-
-## Writing Extensions
-
-Here are some examples of writing editor extensions:
-
-### Command Extensions
-
-#### Executing a cmdlet or function
-
-```powershell
-function MyExtensionFunction {
- Write-Output "My extension function was invoked!"
-}
-
-Register-EditorExtension `
- -Command
- -Name "MyExt.MyExtensionFunction" `
- -DisplayName "My extension function" `
- -Function MyExtensionFunction
-```
-
-#### Executing a script block
-
-```powershell
-Register-EditorExtension `
- -Command
- -Name "MyExt.MyExtensionScriptBlock" `
- -DisplayName "My extension script block" `
- -ScriptBlock { Write-Output "My extension script block was invoked!" }
-```
-
-#### Additional Parameters
-
-##### ExecuteInSession [switch]
-
-Causes the command to be executed in the user's current session. By default,
-commands are executed in a global session that isn't affected by script
-execution. Adding this parameter will cause the command to be executed in the
-context of the user's session.
-
-### Analyzer Extensions
-
-```powershell
-function Invoke-MyAnalyzer {
- param(
- $FilePath,
- $Ast,
- $StartLine,
- $StartColumn,
- $EndLine,
- $EndColumn
- )
-}
-
-Register-EditorExtension `
- -Analyzer
- -Name "MyExt.MyAnalyzer" `
- -DisplayName "My analyzer extension" `
- -Function Invoke-MyAnalyzer
-```
-
-#### Additional Parameters
-
-##### DelayInterval [int]
-
-Specifies the interval after which this analyzer will be run when the
-user finishes typing in the script editor.
-
-### Formatter Extensions
-
-```powershell
-function Invoke-MyFormatter {
- param(
- $FilePath,
- $ScriptText,
- $StartLine,
- $StartColumn,
- $EndLine,
- $EndColumn
- )
-}
-
-Register-EditorExtension `
- -Formatter
- -Name "MyExt.MyFormatter" `
- -DisplayName "My formatter extension" `
- -Function Invoke-MyFormatter
-```
-
-#### Additional Parameters
-
-##### SupportsSelections [switch]
-
-Indicates that this formatter extension can format selections in a larger
-file rather than formatting the entire file. If this parameter is not
-specified then the entire file will be sent to the extension for every
-call.
-
-## Examples
-
diff --git a/docs/guide/extensions.md b/docs/guide/extensions.md
new file mode 100644
index 000000000..cfe5290c9
--- /dev/null
+++ b/docs/guide/extensions.md
@@ -0,0 +1,168 @@
+# Extending the Host Editor
+
+PowerShell Editor Services exposes a common extensibility model which allows
+you to write extension code in PowerShell that works across any editor that
+uses PowerShell Editor Services.
+
+## API Overview
+
+### Introducing `$psEditor`
+
+The entry point for the PowerShell Editor Services extensibility model is the `$psEditor`
+object of the type @Microsoft.PowerShell.EditorServices.Extensions.EditorObject. For
+those familiar with the PowerShell ISE's `$psISE` object, the `$psEditor` object is very
+similar. The primary difference is that this model has been generalized to work against
+any editor which leverages PowerShell Editor Services for its PowerShell editing experience.
+
+> NOTE: For now the `$psEditor` object is limited as it has just been
+> introduced. If you have ideas for other useful APIs it could expose
+> please file an issue on our GitHub page.
+
+This object gives access to all of the high-level services in the current
+editing session. For example, the @Microsoft.PowerShell.EditorServices.Extensions.EditorObject.Workspace
+property gives access to the editor's workspace, allowing you to create or open files
+in the editor.
+
+### Usage Examples
+
+#### Opening a file in the editor
+
+```powershell
+# Open the current user's profile for this editor
+$psEditor.Workspace.OpenFile($profile)
+```
+
+#### Manipulating the user's active file buffer
+
+```powershell
+# Insert new text replacing the user's current selection
+$context = $psEditor.GetEditorContext()
+$context.InsertText("# All your script are belong to us", $context.SelectedRange)
+```
+
+#### Setting the selection based on the cursor position
+
+```powershell
+# Set the selection from their cursor position to the end of the same line
+$context = $psEditor.GetEditorContext()
+$context.SetSelection($context.CursorPosition, $context.CursorPosition.GetLineEnd())
+```
+
+## Registering Editor Commands
+
+The `$psEditor` object gives you the ability to write a script that can automate the
+host editor when run inside of it. However, you may not want to give a user a plain
+script that performs some operation. What if you'd prefer to add a new command to the
+editor which can execute your code when the user invokes it? The `Register-EditorCommand`
+cmdlet allows you to register either a function, cmdlet, or ScriptBlock as a
+command in the host editor.
+
+### Registering a cmdlet or function command
+
+```powershell
+function Invoke-MyCommand {
+ Write-Output "My command's function was invoked!"
+}
+
+Register-EditorCommand `
+ -Name "MyModule.MyCommandWithFunction" `
+ -DisplayName "My command with function" `
+ -Function Invoke-MyCommand
+```
+
+### Registering a script block command
+
+```powershell
+Register-EditorCommand `
+ -Name "MyModule.MyCommandWithScriptBlock" `
+ -DisplayName "My command with script block" `
+ -ScriptBlock { Write-Output "My command's script block was invoked!" }
+```
+
+### The @Microsoft.PowerShell.EditorServices.Extensions.EditorContext parameter
+
+Your function, cmdlet, or ScriptBlock can optionally accept a single parameter
+of type @Microsoft.PowerShell.EditorServices.Extensions.EditorContext which provides
+information about the state of the host editor at the time your command was
+invoked. With this object you can easily perform operations like manipulatin the
+state of the user's active editor buffer or changing the current selection.
+
+The usual convention is that a `$context` parameter is added to your editor
+command's function. For now it is recommended that you fully specify the
+type of the @Microsoft.PowerShell.EditorServices.Extensions.EditorContext object
+so that you get full IntelliSense on your context parameter.
+
+Here is an example of using the `$context` parameter:
+
+```powershell
+Register-EditorCommand `
+ -Name "MyModule.MyEditorCommandWithContext" `
+ -DisplayName "My command with context usage" `
+ -ScriptBlock {
+ param([Microsoft.PowerShell.EditorServices.Extensions.EditorContext]$context)
+ Write-Output "The user's cursor is on line $($context.CursorPosition.Line)!"
+ }
+```
+
+### Suppressing command output
+
+If you would like for your editor command to run without its output being
+written to the user's console, you can use the `-SuppressOutput` switch
+parameter of the `Register-EditorCommand` cmdlet. We recommend that you
+use this parameter if your command does not need to write output to the
+user's console.
+
+Regardless of whether the `-SuppressOutput` parameter is used, any errors
+that occur while running your editor command will be written to the user's
+console.
+
+## Using Editor Commands
+
+If you've registered an editor command, either through your own code or
+a module that you've installed, you can launch it using your editor's **Show
+additional commands from PowerShell modules** command. Running this command
+will cause a list of commands to be displayed.
+
+In Visual Studio Code, press `Ctrl+Shift+P` to open the command palette. Type
+the characters `addi` until you see the following item and then press `Enter`:
+
+
+
+The list that appears next will show all of the editor commands that have
+been registered with PowerShell code. Selecting one of them will cause its
+function or ScriptBlock to be executed.
+
+
+
+Other editors should follow a similar pattern, exposing this command list through
+a "Show additional commands" item in the command palette.
+
+> NOTE: In the future we hope to be able to register editor commands at the top level
+> so that these commands are easier to find and so that they also can be bound to
+> hotkeys for quick access.
+
+## Shipping an Extension Module
+
+You can easily ship a module containing editor commands which get registered
+if the module is loaded into an editor session. Assuming that you've exported
+a function or cmdlet named `Invoke-MyEditorCommand` in your module's psd1
+file, you can add this code at the very end of your module's psm1 file:
+
+```powershell
+if ($psEditor) {
+ Register-EditorCommand `
+ -Name "MyModule.MyEditorCommand" `
+ -DisplayName "My editor command" `
+ -Function Invoke-MyEditorCommand `
+ -SuppressOutput
+}
+```
+
+The user will now be able to import your module in their host editor's profile and
+your editor command will be immediately available after the PowerShell extension
+in that editor starts up.
+
+> NOTE: In the future we plan to provide an easy way for the user to opt-in
+> to the automatic loading of any editor command modules that they've installed
+> from the PowerShell Gallery. If this interests you, please let us know on
+> [this GitHub issue](https://github.com/PowerShell/PowerShellEditorServices/issues/215).
\ No newline at end of file
diff --git a/docs/guide/introduction.md b/docs/guide/introduction.md
new file mode 100644
index 000000000..4c34a76f2
--- /dev/null
+++ b/docs/guide/introduction.md
@@ -0,0 +1,37 @@
+# Introduction
+
+> NOTE: The user guide is currently under development and may be missing
+> important information. If you feel that a particular area is missing or
+> poorly explained, please feel free to file an issue at our [GitHub site](https://github.com/PowerShell/PowerShellEditorServices/issues)
+
+PowerShell Editor Services is a tool that provides useful services to code
+editors that need a great PowerShell editing experience.
+
+## The .NET API
+
+The .NET API provides the complete set of services which can be used in
+code editors or any other type of application. The easiest way to get
+started with it is to add the [Microsoft.PowerShell.EditorServices](https://www.nuget.org/packages/Microsoft.PowerShell.EditorServices/)
+NuGet package to your C# project.
+
+If you're a developer that would like to use PowerShell Editor Services in
+a .NET application, read the page titled [Using the .NET API](using_the_dotnet_api.md)
+to learn more.
+
+## The Host Process
+
+The host process provides a JSON-based API wrapper around the .NET APIs so
+that editors written in non-.NET languages can make use of its capabilities.
+In the future the host process will allow the use of network-based channels
+to enable all of the APIs to be accessed remotely.
+
+If you're a developer that would like to integrate PowerShell Editor Services
+into your favorite editor, read the page titled [Using the Host Process](using_the_host_process.md)
+to learn more.
+
+## Writing Extensions in PowerShell
+
+If you're using an editor that leverages PowerShell Editor Services to provide
+PowerShell editing capabilities, you may be able to extend its behavior using
+our PowerShell-based editor extension API. Read the page titled [Extending the
+Host Editor](extensions.md) to learn more.
\ No newline at end of file
diff --git a/docs/guide/toc.md b/docs/guide/toc.md
new file mode 100644
index 000000000..0e3441770
--- /dev/null
+++ b/docs/guide/toc.md
@@ -0,0 +1,4 @@
+# [Introduction](introduction.md)
+# [Using the .NET API](using_the_dotnet_api.md)
+# [Using the Host Process](using_the_host_process.md)
+# [Extending the Host Editor](extensions.md)
\ No newline at end of file
diff --git a/docs/guide/using_the_dotnet_api.md b/docs/guide/using_the_dotnet_api.md
new file mode 100644
index 000000000..a8c1aaced
--- /dev/null
+++ b/docs/guide/using_the_dotnet_api.md
@@ -0,0 +1,4 @@
+# Using the PowerShell Editor Services .NET API
+
+> NOTE: This page will eventually provide usage examples of the .NET
+> API. For now the [API Reference](../api/index.md) is the best starting point.
\ No newline at end of file
diff --git a/docs/using_the_host_process.md b/docs/guide/using_the_host_process.md
similarity index 96%
rename from docs/using_the_host_process.md
rename to docs/guide/using_the_host_process.md
index 20c9d53bd..4485b4cde 100644
--- a/docs/using_the_host_process.md
+++ b/docs/guide/using_the_host_process.md
@@ -3,18 +3,18 @@
The PowerShell Editor Services host process provides an editor-agnostic interface for
leveraging the core .NET API.
-**WARNING: Some of the information in this file is out of date due to recent protocol
-changes. The general details in the document still apply but the schema of the language service
-message has changed a lot. This document will be updated soon with the correct details.**
+> WARNING: Much of the information in this file is out of date due to recent protocol
+> changes. The general details in the document still apply but the schema of the language service
+> message has changed a lot. This document will be updated soon with the correct details.
## Launching the Host Process
-From your editor's PowerShell plugin code, launch `Microsoft.PowerShell.EditorServices.Host.exe`
-using an editor-native process API that allows you to read and write this process' standard in/out
+From your editor's PowerShell plugin code, launch `Microsoft.PowerShell.EditorServices.Host.exe`
+using an editor-native process API that allows you to read and write this process' standard in/out
streams. All communication with the host process occurs via this channel.
-It is recommended that the process I/O be dealt with as a byte stream rather than read as a
-string since different parts of the message format could be sent with different text encodings
+It is recommended that the process I/O be dealt with as a byte stream rather than read as a
+string since different parts of the message format could be sent with different text encodings
(see next section).
It is expected that an editor will launch one instance of the host process for each PowerShell
@@ -24,7 +24,7 @@ which contains all of the user's PowerShell script files for a given project.
# Message Protocol
A message consists of two parts: a header section and the message body. For now, there is
-only one header, `Content-Length`. This header, written with ASCII encoding, specifies the
+only one header, `Content-Length`. This header, written with ASCII encoding, specifies the
UTF-8 byte length of the message content to follow. The host process expects that all messages
sent to it will come with an accurate `Content-Length` header so that it knows exactly how many
bytes to read. Likewise, all messages returned from the host process will be sent in this manner.
@@ -59,7 +59,7 @@ In this case, the `type` field will be set to `request`.
A response gets sent by the host process when a request completes or fails. In this case,
the `type`field will be set to `response`.
-- `request_seq`: The `seq` number that was included with the original request, used to help
+- `request_seq`: The `seq` number that was included with the original request, used to help
the editor correlate the response to the original request
- `command`: The name of the request command to which this response relates
- `body`: A JSON object body for the response, varies per each response `command`.
@@ -68,7 +68,7 @@ the `type`field will be set to `response`.
### Event Fields
-An event gets sent by the host process when
+An event gets sent by the host process when
- `event`: The name of the event type to which this event relates
- `body`: A JSON object body for the event, varies per each `event` type
@@ -128,19 +128,19 @@ No response is needed for this command.
### `change`
This request is sent by the editor when the user changes the contents of a PowerShell file that has previously
-been opened in the language service. Depending on how the request arguments are specified, the file change could
-either be an arbitrary-length string insertion, region delete, or region replacement.
+been opened in the language service. Depending on how the request arguments are specified, the file change could
+either be an arbitrary-length string insertion, region delete, or region replacement.
It is up to the editor to decide how often to send these requests in response
to the user's typing activity. The language service can deal with change deltas of any length, so it is really
-just a matter of preference how often `change` requests are sent.
+just a matter of preference how often `change` requests are sent.
#### Request
The arguments for this request specify the absolute path of the `file` being changed as well as the complete details
of the edit that the user performed. The `line`/`endLine` and `offset`/`endOffset` (column) numbers indicate the
-1-based range of the file that is being replaced. The `insertString` field indicates the string that will be
-inserted. In the specified range.
+1-based range of the file that is being replaced. The `insertString` field indicates the string that will be
+inserted. In the specified range.
*NOTE: In the very near future, all file locations will be specified with zero-based coordinates.*
@@ -256,9 +256,9 @@ be cancelled server-side and a new delay period will start.
"kindModifiers": null,
"sortText": null
},
-
+
... many more completions ...
-
+
],
"seq": 0,
"type": "response"
@@ -486,9 +486,9 @@ be cancelled server-side and a new delay period will start.
"offset": 19
}
},
-
+
... more occurrences ...
-
+
],
"seq": 0,
"type": "response"
@@ -536,13 +536,13 @@ debugger.
### `disconnect`
-This request is sent by the editor when the user wants to terminate the debugging session before
+This request is sent by the editor when the user wants to terminate the debugging session before
the script completes. When this message is received, execution of the script is aborted and the
instance of the host process is aborted.
*NOTE: For now, it is assumed that debugging will be performed in a separate instance of the
host process. This will change in the next couple of minor releases.*
-
+
#### Request
```json
@@ -573,7 +573,7 @@ instance of the host process is aborted.
```
### `setBreakpoints`
-
+
#### Request
```json
@@ -614,7 +614,7 @@ instance of the host process is aborted.
```
### `pause`
-
+
#### Request
```json
@@ -631,7 +631,7 @@ No response needed for this command. The debugging service will send a `stopped
when execution is stopped due to this request.
### `continue`
-
+
#### Request
```json
@@ -657,7 +657,7 @@ when execution is stopped due to this request.
```
### `next`
-
+
#### Request
```json
@@ -683,7 +683,7 @@ when execution is stopped due to this request.
```
### `stepIn`
-
+
#### Request
```json
@@ -709,7 +709,7 @@ when execution is stopped due to this request.
```
### `stepOut`
-
+
#### Request
```json
@@ -735,7 +735,7 @@ when execution is stopped due to this request.
```
### `threads`
-
+
#### Request
```json
@@ -768,7 +768,7 @@ when execution is stopped due to this request.
```
### `scopes`
-
+
#### Request
```json
@@ -805,7 +805,7 @@ when execution is stopped due to this request.
```
### `variables`
-
+
#### Request
```json
@@ -861,7 +861,7 @@ when execution is stopped due to this request.
},
... more variables ...
-
+
]
},
"seq": 0,
@@ -870,7 +870,7 @@ when execution is stopped due to this request.
```
### `stackTrace`
-
+
#### Request
```json
@@ -936,7 +936,7 @@ when execution is stopped due to this request.
```
### `evaluate`
-
+
#### Request
```json
diff --git a/docs/images/PowerShell_logo.png b/docs/images/PowerShell_logo.png
new file mode 100644
index 000000000..2a656ffc3
Binary files /dev/null and b/docs/images/PowerShell_logo.png differ
diff --git a/docs/images/vsc_command_palette.png b/docs/images/vsc_command_palette.png
new file mode 100644
index 000000000..50115449d
Binary files /dev/null and b/docs/images/vsc_command_palette.png differ
diff --git a/docs/images/vsc_editor_command_list.png b/docs/images/vsc_editor_command_list.png
new file mode 100644
index 000000000..2e58f1441
Binary files /dev/null and b/docs/images/vsc_editor_command_list.png differ
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 000000000..357630f7b
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,27 @@
+# PowerShell Editor Services
+
+PowerShell Editor Services provides common functionality that is needed
+to enable a consistent and robust PowerShell development experience
+across multiple editors.
+
+## [User Guide](guide/introduction.md)
+
+The User Guide describes the high level design of this project and gives
+guidance on how to use it.
+
+## [API Reference](api/index.md)
+
+The API Reference contains details about the .NET API.
+
+## Getting Help
+
+If you run into any issues while using PowerShell Editor Services and this documentation doesn't
+answer your question, feel free to file an issue on our
+[GitHub page](https://github.com/PowerShell/PowerShellEditorServices/issues) or contact the
+via Twitter ([@daviwil](http://twitter.com/daviwil) and [@r_keith_hill](http://twitter.com/r_keith_hill))
+
+## Contributing
+
+We would love to incorporate community contributions into this project. If you would like to
+contribute code, documentation, tests, or bug reports, please read our [Contribution Guide]
+(../CONTRIBUTING.md) to learn more.
diff --git a/docs/template/conceptual.html.primary.tmpl b/docs/template/conceptual.html.primary.tmpl
new file mode 100644
index 000000000..bea049317
--- /dev/null
+++ b/docs/template/conceptual.html.primary.tmpl
@@ -0,0 +1,55 @@
+{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
+{{!include(/^styles/.*/)}}
+{{!include(/^fonts/.*/)}}
+{{!include(favicon.ico)}}
+{{!include(logo.svg)}}
+
+
+
+ {{>partials/head}}
+
+ {{>partials/scripts}}
+
+
diff --git a/docs/template/partials/class.tmpl.partial b/docs/template/partials/class.tmpl.partial
new file mode 100644
index 000000000..c898239f6
--- /dev/null
+++ b/docs/template/partials/class.tmpl.partial
@@ -0,0 +1,135 @@
+{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
+
+{{^_disableContribution}}
+{{#docurl}}{{__global.improveThisDoc}}{{/docurl}}
+{{#sourceurl}}{{__global.viewSource}}{{/sourceurl}}
+{{/_disableContribution}}
+
+{{/exceptions.0}}
+{{/children}}
+{{/children}}
diff --git a/docs/template/partials/footer.tmpl.partial b/docs/template/partials/footer.tmpl.partial
new file mode 100644
index 000000000..47254342c
--- /dev/null
+++ b/docs/template/partials/footer.tmpl.partial
@@ -0,0 +1,7 @@
+{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
+
+
diff --git a/docs/template/partials/head.tmpl.partial b/docs/template/partials/head.tmpl.partial
new file mode 100644
index 000000000..95c6b4424
--- /dev/null
+++ b/docs/template/partials/head.tmpl.partial
@@ -0,0 +1,28 @@
+{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
+
+
+
+
+ {{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}
+
+
+ {{#_description}}{{/_description}}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/template/partials/namespace.tmpl.partial b/docs/template/partials/namespace.tmpl.partial
new file mode 100644
index 000000000..1147b2278
--- /dev/null
+++ b/docs/template/partials/namespace.tmpl.partial
@@ -0,0 +1,21 @@
+{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
+
+{{^_disableContribution}}
+{{#docurl}}
+{{__global.improveThisDoc}}
+{{/docurl}}
+{{#sourceurl}}
+{{__global.viewSource}}
+{{/sourceurl}}
+{{/_disableContribution}}
+