Skip to main content
Pro and Enterprise plans include CI checks for GitHub repositories.
Use CI checks to lint your docs for errors and provide warnings before you deploy. Mintlify CI checks run on pull requests against a configured deployment branch.

Installation

To begin, follow the steps on the GitHub page.
Only access to the repository where your documentation content exists is required, so it is highly recommended to only grant access to that repository.

Configuration

Configure the CI checks enabled for a deployment by navigating to the Add-ons page of your dashboard. Enable the checks that you want to run. When enabling checks, you can choose to run them at a Warning or Blocking level.
  • A Warning level check will never provide a failure status, even if there is an error or suggestions.
  • A Blocking level check will provide a failure status if there is an error or suggestions.

Available CI checks

Similar to how the CLI link checker works on your local machine, the broken link CI check automatically searches your documentation content for broken internal links. To see the results of this check, visit GitHub’s check results page for a specific commit.

Vale

Vale is an open source rule-based prose linter which supports a range of document types, including Markdown and MDX. Mintlify supports automatically running Vale in a CI check and displaying the results as a check status.

Configuration

If you have a .vale.ini file in the root content directory for your deployment, the Vale CI check uses that configuration file and any configuration files in your specified stylesPath. If you don’t have a Vale config file, the default configuration automatically loads.
Default vale.ini configuration
# Top level styles
StylesPath = /app/styles
MinAlertLevel = suggestion
IgnoredScopes = code, tt, img, url, a
SkippedScopes = script, style, pre, figure, code

# Vocabularies
Vocab = Mintlify

# This is required since Vale doesn't officially support MDX
[formats]
mdx = md

# MDX support
[*.mdx]
BasedOnStyles = Vale
Vale.Terms = NO # Enforces really harsh capitalization rules, keep off

# `import ...`, `export ...`
# `<Component ... />`
# `<Component>...</Component>`
# `{ ... }`
TokenIgnores = (?sm)((?:import|export) .+?$), \
(?<!`)(<\w+ ?.+ ?\/>)(?!`), \
(<[A-Z]\w+>.+?<\/[A-Z]\w+>)

# Exclude:
# `<Component \n ... />`
BlockIgnores = (?sm)^(<\w+\n .*\s\/>)$, \
(?sm)^({.+.*})

CommentDelimiters = {/*, */}
Default Vale vocabulary
Mintlify
mintlify
VSCode
openapi
OpenAPI
Github
APIs

repo
npm
dev

Lorem
ipsum
impsum
amet

const
myName
myObject
bearerAuth
favicon
topbar
url
borderRadius
args
modeToggle
ModeToggle
isHidden
autoplay

_italic_
Strikethrough
Blockquotes
Blockquote
Singleline
Multiline

onboarding

async
await
boolean
enum
func
impl
init
instanceof
typeof
params
stdin
stdout
stderr
stdout
stdin
var
const
let
null
undefined
struct
bool

cors
csrf
env
xhr
xhr2
jwt
oauth
websocket
localhost
middleware
runtime
webhook
stdin
stdout

json
yaml
yml
md
txt
tsx
jsx
css
scss
html
png
jpg
svg

cdn
cli
css
dom
dto
env
git
gui
http
https
ide
jvm
mvc
orm
rpc
sdk
sql
ssh
ssl
tcp
tls
uri
url
ux
ui

nodejs
npm
yarn
pnpm
eslint
pytest
golang
rustc
kubectl
mongo
postgres
redis

JavaScript
TypeScript
Python
Ruby
Rust
Go
Golang
Java
Kotlin
Swift
Node.js
NodeJS
Deno

React
Vue
Angular
Next.js
Nuxt
Express
Django
Flask
Spring
Laravel
Redux
Vuex
TensorFlow
PostgreSQL
MongoDB
Redis
PNPM

Docker
Kubernetes
AWS
Azure
GCP
Terraform
Jenkins
CircleCI
GitLab
Heroku

Git
git
GitHub
GitLab
Bitbucket
VSCode
Visual Studio Code
IntelliJ
WebStorm
ESLint
eslint
Prettier
prettier
Webpack
webpack
Vite
vite
Babel
babel
Jest
jest
Mocha
Cypress
Postman

HTTP
HTTPS
OAuth
JWT
GraphQL
REST
WebSocket
TCP/IP

NPM
Yarn
PNPM
Pip
PIP
Cargo
RubyGems

Swagger
OpenAPI
Markdown
MDX
Storybook
TypeDoc
JSDoc

MySQL
PostgreSQL
MongoDB
Redis
Elasticsearch
DynamoDB

Linux
Unix
macOS
iOS

Firefox
Chromium
WebKit

config
ctx
desc
dir
elem
err
len
msg
num
obj
prev
proc
ptr
req
res
str
tmp
val
vars

todo
href
lang
nav
prev
next
toc
Example Vale file structure
  - docs.json
  - .vale.ini
  - styles/...
  - text.md
Example monorepo Vale file structure
  - main.ts
  - docs/
    - docs.json
    - .vale.ini
    - styles/...
    - text.md
  - test/
Please note that for security reasons, absolute stylesPath, or stylesPath which include .. values aren’t supported. Please use relative paths and include the stylesPath in your repository.

Packages

Vale supports a range of packages, which can be used to check for spelling and style errors. Any packages you include in your repository under the correct stylesPath are automatically installed and used in your Vale configuration. For packages not included in your repository, you may specify any packages from the Vale package registry, and they’re automatically downloaded and used in your Vale configuration.
Please note that for security reasons, automatically downloading packages that aren’t from the Vale package registry is not supported.

Vale with MDX

Vale doesn’t natively support MDX, but Vale’s author has provided a custom extension to support it. If you prefer not to use this extension, the following lines can be added to the configured .vale.ini file:
[formats]
mdx = md

[*.mdx]
CommentDelimiters = {/*, */}

TokenIgnores = (?sm)((?:import|export) .+?$), \
(?<!`)(<\w+ ?.+ ?\/>)(?!`), \
(<[A-Z]\w+>.+?<\/[A-Z]\w+>)

BlockIgnores = (?sm)^(<\w+\n .*\s\/>)$, \
(?sm)^({.+.*})
To use Vale’s in-document comments, use MDX-style comments {/* ... */}. If you use the CommentDelimiters = {/*, */} setting in your configuration, Vale automatically interprets these comments while linting. This means you can easily use Vale’s built-in features, like skipping lines or sections.
{/* vale off */}

This text is ignored by Vale

{/* vale on */}
If you choose not to use CommentDelimiters but still choose to use Vale’s comments, you must wrap any Vale comments in MDX comments {/* ... */}. For example:
{/* <!-- vale off --> */}

This text is ignored by Vale

{/* <!-- vale on --> */}
These comment tags aren’t supported within Mintlify components but will function correctly anywhere at the base level of a document.