Browse documentation

Start here

OverviewYour first siteBuild and inspect your siteWrite useful documentationGlossaryTroubleshooting

Shape your site

ConfigurationAuthoring recipesSections and identityCustomize the home pageThemesCustom CSS (advanced)Machine-readable contractsVisual fixturesMathematics

Publish safely

Audit your documentationGitHub PagesPre-publish checklistHistorical documentationQualification evidenceMigration

Pascal and project internals

PasWeave integrationArchitectureArchitecture analysisProject specification (historical)

Project decisions

BoundariesHistory and customisationRelease-tag publicationReader-first documentationLocal syntax highlightingExisting-repository adoptionGitHub Pages setupDocumentation auditSimple configurationv1.0 stable contractDocSprout rebrand

Troubleshooting

Find the message you saw, then apply the fix. Every heading below is a message or a symptom from DocSprout itself. Run the commands from your project’s top-level folder.

Configuration

both docsprout.json and dockit.json exist

DocSprout refuses to choose between the canonical docs/docsprout.json and the pre-rebrand docs/dockit.json. Keep one of them:

git mv docs/dockit.json docs/docsprout.json   # adopt the canonical name
git rm docs/dockit.json                        # when docsprout.json is already authoritative

required when modern documentation configuration exists

A docs/layout.json exists without its identity file. Create docs/docsprout.json, or remove the layout if the project should use configuration-free discovery. See Configuration.

Unknown field '...'

The named field is not part of schema version 1. Fix the spelling or remove the field; the message suggests the closest supported name. The DocSprout rebrand did not rename any configuration field.

invalid JSON: ...

A configuration file has a syntax error: a missing comma, a trailing comma or an unquoted key. Compare the file with the complete examples in Configuration and fix the punctuation; DocSprout does not guess intent in malformed JSON.

field 'project.name' must be a non-empty string

Every docs/docsprout.json needs a project name. Add "project": {"name": "Your project"} or correct the existing value. See Project metadata and colours.

field 'theme.preset' must be one of ...

A value is misspelled or unsupported. Presets are blue, teal, ocean and purple; styles are classic, paper and midnight; content widths are compact, comfortable and wide. See Themes and Reading width.

... asset '...' does not exist or ... path is unsafe

banner, identity.logo and theme.custom_css must each point at a file that already exists inside the repository. Create the file first, then correct the path. See Add a home-page banner and Custom CSS.

layout.json lists a Markdown file that is not on disk. Create the file or correct its path.

unlisted Markdown document '...'

A Markdown file under docs/ is absent from the navigation. Add it to layout.json, or set "unlisted": "exclude" to keep drafts unpublished. See Pages, home page and navigation.

Build and output

Refusing to replace output directory ... it is not owned by DocSprout

The output directory was not generated by DocSprout. Choose another --output, or delete the directory yourself if it is disposable. DocSprout writes the .docsprout-site ownership marker and also recognises the pre-rebrand .dockit-fp-site marker, so older generated directories rebuild safely.

Generated route collision: ...

Two listed documents would overwrite the same published route, for example index.md and docs-index.md when another page is home, or names differing only by case. Rename or move one file.

A page links outside the repository, or uses an unsupported URL scheme. Correct the link or move the target inside README.md or docs/.

heading fragment errors

A link points at a heading anchor that does not exist on the target page. Correct the fragment or add the heading.

Markdown content

Markdown: unclosed fenced code block or unclosed display math block

A fenced block opened with `` or $$` at the end of the block.

Markdown: unsupported admonition '...'

Only [!NOTE], [!TIP], [!IMPORTANT] and [!WARNING] callouts are supported. Correct the label or write an ordinary blockquote.

GitHub Pages

github-pages: this folder is not a Git repository

Run the command from the repository root, or create the repository first with git init.

<path> is not managed by DocSprout

DocSprout never overwrites a workflow it does not own. Keep your workflow and remove the managed path, or move your workflow aside and rerun docsprout github-pages.

Both .github/workflows/docsprout-pages.yml and .github/workflows/dockit-pages.yml exist

DocSprout refuses to run two deployment workflows. Keep the canonical docsprout-pages.yml, delete the pre-rebrand dockit-pages.yml, then run docsprout github-pages --update.

docsprout-pages.yml does not exist. Run 'docsprout github-pages' first

--update only refreshes a recognised managed workflow. Run the plain command once before using --update.

... is managed by DocSprout but uses vX

A managed workflow pins an older release. Update it deliberately:

docsprout github-pages --update

Release history

invalid version manifest or field 'schema_version' must be 1

docs/versions.json is malformed or missing required fields. It needs schema_version: 1, a current release, and a non-empty versions list that includes current with unique releases and source refs. Compare it with Create the version manifest.

source_ref ... does not exist. Create the tag

docs/versions.json names a tag that is not present locally. Create and push the tag, or correct source_ref. See the pre-publish checklist.

current release ... does not match HEAD

The current release entry must point at the checked-out commit when you run check-release or build-all. Check out the release commit, or create the tag on the current one.

Documentation differs from HEAD. Commit docs changes...

Commit the documentation before publishing the current release; historical publication is always built from committed tags.

Local preview

serve: port must be between 1 and 65535

Choose a valid port, for example docsprout serve --port 8080.

the preview address is already in use

Another process owns the port. Choose another one with docsprout serve --port 8080.

ERROR: docs directory is missing from doctor

There is nothing to document yet. Run docsprout init, or create docs/ with Markdown. See Your first DocSprout site.

Where to go next