---
title: Getting Started
weight: 1
description: "Clone the docs and make a contribution"
---
The Crossplane documentation lives in the
[docs GitHub repository](https://github.com/crossplane/docs).
## Local development
Clone the documentation and use [Hugo](https://gohugo.io/) to
build the Crossplane documentation site locally for development and testing.
### Clone the docs repository
Clone the
[Crossplane docs repository](https://github.com/crossplane/docs) with
```command
git clone https://github.com/crossplane/docs.git
```
### Download Hugo
Download [Hugo](https://github.com/gohugoio/hugo/releases/latest), the
static site generator Crossplane docs uses.
{{< hint "important" >}}
Download the `hugo_extended` version. The standard Hugo package doesn't support
the Crossplane docs CSS.
{{< /hint >}}
Extract and run Hugo with `hugo server`.
Hugo builds the website and launch a local web server on
http://localhost:1313.
Any changes made are instantly reflected on the local web server. No need
to restart Hugo.
### Contribute to a specific version
Each Crossplane version is a unique folder inside `/content`.
{{}}
The next Crossplane release uses `/content/master` as the starting
documentation.
{{< /hint >}}
Make changes to the files in the associated version folder. To make changes
across more than one version, change the files in each version folder.
## Adding new content
To create new content create a new markdown file in the appropriate location.
To create a new section, create a new directory and an `_index.md` file in the
root.
### Types of content
Crossplane documentation has three content sections:
* The [Contributing Guide]({{[}}) with details on
how to contribute to the Crossplane documentation.
* The [Knowledge Base]({{][}}) is for content related to
Crossplane integrations, in-depth articles or how-to guides.
* [User documentation]({{][}}) are for generic documentation,
commonly version-specific.
#### User documentation vs knowledge base articles
User documentation includes both _conceptual_ and _procedural_ instructions.
_Conceptual_ content describes the background and theory behind the technology.
Conceptual documents are helpful to explain the "why" of the technology.
An example of _Conceptual_ content would be describing the role
of a Crossplane Provider.
_Procedural_ content is the step-by-step instructions to do something.
Procedural content details the "how" of a piece of technology.
An example of a _Procedural_ document would be a step-by-step Crossplane
installation guide.
User documentation is more narrowly focused on a single piece or
related pieces of technology. For example, installing a Provider and creating a
ProviderConfig.
Knowledge base articles are more "free-form" and can describe more than one
piece of technology or provide more opinionated examples.
{{< hint "tip" >}}
Not sure if the content would be better as a knowledge base article or user
document? Ask in the `#documentation` channel of the
[Crossplane Slack](https://slack.crossplane.io/).
{{< /hint >}}
### Front matter
Each page contains metadata called
[front matter](https://gohugo.io/content-management/front-matter/). Each page
requires front matter to render.
```yaml
---
title: "A New Page"
weight: 610
---
```
`title` defines the name of the page.
`weight` determines the ordering of the page in the table of contents. Lower
weight pages come before higher weights in the table of contents. The value of
`weight` is otherwise arbitrary.
#### Alpha and beta features
Note features as alpha or beta in the front matter.
For alpha features set `state: alpha` and use `alphaVersion` to provide the
version that introduced the feature.
```yaml
---
title: Composition Functions
state: alpha
alphaVersion: "1.11"
---
```
For beta features set `state: beta` and use both `alhpaVersion` and
`betaVersion` to provide the version that introduced and graduated the feature.
```yaml
---
title: Composition Revisions
state: beta
alphaVersion: "1.4"
betaVersion: "1.11"
---
```
### Headings
Use standard markdown for headings (`#`). The top level heading, a single hash
(`#`) is for the page title. All content headings should be two hashes (`##`) or
more.
### Hiding pages
To hide a page from the left-hand navigation use `tocHidden: true` in the front
matter of the page. The docs website skips pages with `tocHidden:true` when
building the menu.
### Changing page titles
The version dropdown list that links the same page in different versions
together looks for pages with a matching title.
If a page title changes use the front matter value `matchTitle:` and a value of
the old page title.
For example, if an older title was "Original Title" the new page would use:
```yaml
title: New Title
matchTitle: Original Title
```
]