Skip to content
docs-sitekit

Menu

Type to search the docs.

↑ ↓ move · Enter open · Esc close

Configuration reference

Every key of sitekit.config.json, with its type, its default, the values it accepts and what it does.

This page is generated from the schema in template/src/domain/config.ts, so it cannot drift from it. Run npm run build:docs after changing a key, and a test fails while the page is out of date. An unknown key is an error: the file is a closed contract.

In the Default column, required is a key you must write, and none is an optional key that has no default. A key inside a list is written list[].key.

site

The identity of the site and where it is published.

KeyTypeDefaultAllowed valuesDescription
site.namestringrequiredanyThe name of the site, in the header, the footer and the title of every page.
site.descriptionstringrequiredanyWhat the site is about, in one sentence. It is the meta description of a page that has none, and the line under the name in the footer.
site.urlstring (URL)requiredanyThe origin of the published site, for example https://user.github.io. It is used for canonical links, the sitemap and llms.txt.
site.basestring"/"matches ^\/([\w.-]+\/)*$The path the site is served from: /, or /repository-name/ on GitHub Pages.
site.repositorystring (URL)noneanyThe address of the repository. The header, the footer and llms.txt link to it, and check asks GitHub for its visibility.
site.licensestringnoneanyThe license of the project, shown in the footer.
site.versionstringnoneanyA version to show in the footer. When it is missing, the site reads it from the package.json of the repository.
site.imagestringnoneanyThe picture a link to the site shows, such as /social.png, a file in public/, or a full https address. Use a PNG of 1200 by 630 pixels. Without it the pages name no picture.
site.imageAltstringnoneanyThe alt text of the social picture. Without it the text is the name and the description of the site.
site.installCommandstringnoneanyThe command the hero and the closing band offer to copy, for example npm install my-package.

hero

The top of the home page.

KeyTypeDefaultAllowed valuesDescription
hero.badgestringnoneanyA short status line above the title.
hero.titlestringrequiredanyThe headline of the home page.
hero.ledestringrequiredanyThe text under the headline.
hero.primaryobjectrequired-The main action of the hero.
hero.primary.labelstringrequiredanyThe text of the link.
hero.primary.hrefstringrequiredanyWhere the link goes: a path of the site such as /docs/, or a full URL.
hero.secondaryobjectnone-A second, quieter action.
hero.secondary.labelstringrequiredanyThe text of the link.
hero.secondary.hrefstringrequiredanyWhere the link goes: a path of the site such as /docs/, or a full URL.

features

KeyTypeDefaultAllowed valuesDescription
featuresarray of object[]-The cards of the features section of the home page. Without any, the section is left out.
features[].iconstringrequiredanyA lucide icon in kebab-case, such as shield-check, or a brand logo, such as brand:github or brand:custom/my-logo.
features[].eyebrowstringrequiredanyA short mono label above the title.
features[].titlestringrequiredanyThe title of the card.
features[].textstringrequiredanyThe text of the card.

stats

KeyTypeDefaultAllowed valuesDescription
statsarray of object[]-Two to five numbers under the hero, each with a label. They are written by hand: the kit fetches nothing. Without any, the row is left out.
stats[].valuestringrequiredanyThe number or short value, shown as the large text.
stats[].labelstringrequiredanyWhat the value counts.
stats[].notestringnoneanyA line of text under the value.
KeyTypeDefaultAllowed valuesDescription
navarray of object[]-The links of the header menu. A path that starts with / gets the site base. When it is empty, the header lists the collections and the changelog.
nav[].labelstringrequiredanyThe text of the link.
nav[].hrefstringrequiredanyWhere the link goes: a path of the site such as /docs/, or a full URL.

The footer of every page.

KeyTypeDefaultAllowed valuesDescription
footer.linksarray of object[]-Extra links in the Project column of the footer, after the repository and the issues. A path that starts with / gets the site base.
footer.links[].labelstringrequiredanyThe text of the link.
footer.links[].hrefstringrequiredanyWhere the link goes: a path of the site such as /docs/, or a full URL.

theme

The color theme a visitor sees first.

KeyTypeDefaultAllowed valuesDescription
theme.defaultstring"dark""dark", "light", "system"The theme a visitor sees first. system follows the operating system. A choice the visitor made in the header wins.

sources

Where the repository is, relative to the site folder.

KeyTypeDefaultAllowed valuesDescription
sources.rootstring".."anyThe root of the repository being documented, relative to the site folder.
sources.changelogstring"../CHANGELOG.md"anyThe changelog file, relative to the site folder. It becomes the Changelog page.

collections

KeyTypeDefaultAllowed valuesDescription
collectionsarray of object[]-The sets of pages, such as docs, tutorials and examples. Each is a menu entry with its own index.
collections[].idstringrequiredmatches ^[a-z0-9-]+$The route segment and the menu key, unique in the site. changelog, gallery, 404 and _astro are reserved.
collections[].labelstringrequiredanyThe name of the collection in the menu and as its title.
collections[].dirstringrequiredanyThe folder to read, relative to the site folder. A page belongs to the collection with the deepest folder.
collections[].ledestringnoneanyOne sentence under the title of the collection.
collections[].groupsarray of object[]-Headings that sort the pages of the collection. When there is any group, every page must be in one.
collections[].groups[].namestringrequiredanyThe heading of the group.
collections[].groups[].tonestring"neutral""neutral", "brand", "success", "warn"The tone of the badge on the cards of the group.
collections[].groups[].itemsarray of stringrequiredat least 1 itemSlugs of the pages in the group, in the order they appear.

deploy

How and where the site is published.

KeyTypeDefaultAllowed valuesDescription
deploy.targetstring"github-pages""github-pages", "none"Where the site is published. none skips the repository visibility check of check.
deploy.acknowledgePublicPagesbooleanfalsetrue, falseSay that the Pages site of a private repository is meant to be public. Without it, check stops for a repository that is not public.
deploy.repositoryVisibilitystringnone"public", "private", "internal"The visibility of the repository, for a runner where gh cannot tell. Otherwise check asks GitHub.

The search dialog and its index.

KeyTypeDefaultAllowed valuesDescription
search.enabledbooleantruetrue, falseTurn search on. Off, the site has no search button, no dialog and no search-index.json.

anonymize

What is kept out of the site, replaced in it, and treated as a leak.

KeyTypeDefaultAllowed valuesDescription
anonymize.excludePathsarray of string[]anyGlob patterns of files that are never read, relative to sources.root.
anonymize.replacemap of string{}anyLiteral text to swap everywhere, as the text to find and its replacement. For a client name or an internal host.
anonymize.denyPatternsarray of string[]anyRegular expressions that check reports as a leak, besides its built-in credential patterns.
anonymize.allowarray of string[]anyExact texts that check accepts even though a pattern matches them, for example a public support address.

check

KeyTypeDefaultAllowed valuesDescription
checkmap of string{}-How serious each kind of content finding is. Write the kind as the key and error, warning or off as the value. A kind you do not write keeps its default. A name that is not a kind fails the build and check.
check.linksstring"warning""error", "warning", "off"A relative link to a file that does not exist, or that leaves the repository.
check.excludedLinksstring"warning""error", "warning", "off"A link to a file you excluded, so only its text is kept.
check.anchorsstring"warning""error", "warning", "off"A link to a heading that does not exist in the target page, or in the same page.
check.imagesstring"error""error", "warning", "off"A relative image path that does not exist.
check.frontmatterstring"warning""error", "warning", "off"A frontmatter key the kit does not read, such as titel, with the key it looks like.
check.orderstring"error""error", "warning", "off"An order in the frontmatter that is not a number.
check.duplicateHeadingsstring"warning""error", "warning", "off"A second heading in a page that makes the same anchor as an earlier one.
check.calloutsstring"warning""error", "warning", "off"A callout marker that is not one of the five, such as [!NOTES], so the quote stays plain.
check.variablesstring"warning""error", "warning", "off"A {{ name }} that is not declared under vars, so it stays as written.
check.snippetsstring"error""error", "warning", "off"An include of a snippet that does not exist, or an include inside a snippet.
check.cardstring"error""error", "warning", "off"A side card the frontmatter got wrong: an unknown key under meta, a missing text, or a link with an unsafe scheme.

vars

KeyTypeDefaultAllowed valuesDescription
varsmap of string{}anyValues a page writes as {{ name }} in its text, as the name and its value. A name starts with a letter and has letters, digits, _ and -. version is read from the package.json of the repository when it is not set here, and a value written here wins over it.

llms

A llms.txt map of the site, and optionally a Markdown copy of each page. A site without the key gets neither.

KeyTypeDefaultAllowed valuesDescription
llms.enabledbooleanfalsetrue, falseWrite llms.txt at the site base and a discovery link in the head of every page.
llms.optionalarray of string[]anyCollection ids whose pages go under ## Optional, the part a tool may skip. changelog is accepted too.
llms.markdownPagesbooleanfalsetrue, falseWrite a Markdown copy of every page and link each page to its copy. It needs enabled.

A link at the foot of every page to its source file on the repository host. A site without the key has no link.

KeyTypeDefaultAllowed valuesDescription
editLink.enabledbooleanfalsetrue, falseShow an “Edit this page” link at the foot of every page. It needs site.repository: without it, or when the host is not known, the link is turned off with a message.
editLink.branchstring"main"anyThe branch the link opens the file on.
editLink.hoststringnone"github", "gitlab", "bitbucket"The repository host, for a repository on a domain of its own, such as a self-hosted GitLab. Otherwise the host is found from site.repository.

lastUpdated

The date of the last change of each page, at the foot of the page. A site without the key shows none.

KeyTypeDefaultAllowed valuesDescription
lastUpdated.enabledbooleanfalsetrue, falseShow the date of the last commit that changed the file, read from git at build time. It needs the full history: a shallow clone shows no dates.
Edit this page

Last updated