Super-Simple Includes Documentation

v0.244.0

Validation Messages

See Errors & Warnings Catalog for the full index, and Errors & Warnings Guide for a narrative explanation of message categories, exit codes, and common fixes.

Messages from the ssi validate command, which checks site output for broken links, HTML structure, and accessibility issues.

Message Exit Code Hint
โš ๏ธ The 'also' emoji '[emoji]' in step [index] shadows a primary emoji in [path] 53 ๐Ÿ’ก The 'also' emoji is already the primary emoji of another step โ€” first-match-wins in config order applies, which may be surprising
โŒ Cannot read git commit hash from [path] (๐Ÿ’ฌio_kind) ๐Ÿ’ก Check repository integrity or use --suffix-timestamp 50 ๐Ÿ’ก The git hash is used for atomic deployment suffixes โ€” if git is unavailable, use an alternative suffix mode
โš ๏ธ Source file '[source]' (step [step]) contains token '[token]' from earlier step (emoji [emoji]) โ€” this token **will not be replaced**. Consider reordering steps or using a different emoji. 53 ๐Ÿ’ก Include tokens are only replaced within the page step they follow โ€” earlier-step tokens are invisible to later steps
unclosed block
bare '@' not followed by identifier
unexpected closing brace
unterminated string
โš ๏ธ CSS parse error in '[path]' (line [line], column [column]): [excerpt] 53 ๐Ÿ’ก Check for unclosed braces, missing semicolons, or invalid property syntax at the indicated location
โš ๏ธ Could not read some CSS source files for structure checks โ€” not valid UTF-8: ๐Ÿงฎquantity_count_encoding; permission or access denied: ๐Ÿงฎquantity_count_permission; other: ๐Ÿงฎquantity_count_other 53 ๐Ÿ’ก Those files were omitted from the CSS structure scan โ€” fix encoding, permissions, or paths, or expect incomplete coverage
Deploy directory set: [path]
โŒ Git repository at [path] has no commits ๐Ÿ’ก Make an initial commit or use --suffix-timestamp instead 50 ๐Ÿ’ก A git hash suffix requires at least one commit in the repository
โš ๏ธ aria-hidden on interactive element in '[path]': aria-hidden="true" on a focusable element removes it from the accessibility tree while keeping it keyboard-reachable โ€” use display:none or remove the element instead. 53 ๐Ÿ’ก Users can still Tab to this element but screen readers won't announce it โ€” this creates a confusing experience
โš ๏ธ ARIA reference to missing id in '[path]': [attribute]="[id]" references an id that does not exist in this page. 53 ๐Ÿ’ก Add an element with id="[id]" to the page, or fix the ARIA reference to use an existing id
โš ๏ธ Div-soup detected in '[path]': [count] <div> elements with no semantic sectioning elements. Use <main>, <nav>, <article>, <section>, <header>, <footer>, or <aside> instead. 53 ๐Ÿ’ก Semantic HTML elements improve accessibility and SEO โ€” replace layout <div> elements with appropriate HTML5 tags
โš ๏ธ Duplicate id attribute in '[path]': id='[id]' appears more than once. Each id must be unique within a page. 53 ๐Ÿ’ก Use class attributes for shared styling โ€” id must be unique per page for links and JavaScript to work correctly
โš ๏ธ Embedded <style> tag in '[path]': move styles to an external stylesheet linked with <link rel="stylesheet"> instead. 53 ๐Ÿ’ก External stylesheets are cached by browsers and can be shared across pages
โš ๏ธ Heading hierarchy skip in '[path]': [tag] follows [other tag] (levels must not skip) 53 ๐Ÿ’ก Headings should follow a logical sequence (h1 โ†’ h2 โ†’ h3) without skipping levels
โš ๏ธ Inline style attribute in '[path]': found style="..." on <[tag]>. Move styles to an external stylesheet linked with <link rel="stylesheet">. 53 ๐Ÿ’ก External stylesheets are cached by browsers and keep content separate from presentation
โš ๏ธ Invalid ARIA role in '[path]': role="[name]" is not a valid ARIA role. See https://www.w3.org/TR/wai-aria/#role_definitions for valid values. 53 ๐Ÿ’ก Common valid roles: banner, navigation, main, complementary, contentinfo, search, form, region
โš ๏ธ Missing alt attribute on <img> in '[path]': add alt="" for decorative images or descriptive alt text for meaningful images. 53 ๐Ÿ’ก Screen readers use alt text to describe images โ€” use alt="" (empty) only for purely decorative images
โš ๏ธ No <h1> element in '[path]': pages with heading elements should have exactly one <h1> as the page title. 53 ๐Ÿ’ก Add an <h1> element as the main page title for accessibility and SEO
โš ๏ธ Missing lang attribute on <html> in '[path]': add lang="en" (or the appropriate language code) so screen readers pronounce content correctly. 53 ๐Ÿ’ก Add lang="en" to your <html> tag (or the appropriate BCP 47 language code for your content)
โš ๏ธ Multiple <h1> elements in '[path]': pages should have exactly one <h1> 53 ๐Ÿ’ก Use <h2> or lower for section headings โ€” the <h1> should be the single page title
โš ๏ธ Non-conforming HTML element in '[path]': <[tag]> is not valid HTML5 โ€” use CSS or a modern semantic equivalent. 53 ๐Ÿ’ก Deprecated elements like <center>, <font>, and <marquee> should be replaced with CSS styling
โš ๏ธ HTML parse error in '[path]': [excerpt] 53 ๐Ÿ’ก Check for malformed tags, unclosed elements, or invalid attribute syntax
โš ๏ธ Unlabeled form input in '[path]': <input> element has no associated label, aria-label, or title attribute. 53 ๐Ÿ’ก Use <label for="id"> or aria-label="description" so assistive technology can identify the input
โŒ Invalid TOML in include source file [path]: [error message] 52 ๐Ÿ’ก Fix the TOML syntax in that file โ€” unclosed tables or string quotes are common causes
โš ๏ธ (not configured) 53 ๐Ÿ’ก Used when expanding include step path validation to show the fallback column
โš ๏ธ Include step [emoji] has no accessible path (primary '[primary path]'; fallback [fallback path]). Pages still reference: [tokens] 53 ๐Ÿ’ก The configured include directory or file does not exist โ€” fix the path, add a valid fallback, or remove tokens that use this step
โŒ Invalid git HEAD format in [path] ๐Ÿ’ก Check repository integrity or use --suffix-timestamp 50 ๐Ÿ’ก The .git/HEAD file should contain a ref pointer or a commit hash โ€” try `git status` to check
โŒ Leftover token '[token]' in [template] โ€” emoji [emoji] is not configured anywhere (possible typo) 50 ๐Ÿ’ก Check that the emoji matches a [[step]] in ssi-config.toml โ€” this emoji is not used by any step
โŒ Leftover token '[token]' in [template] - key not found in [emoji] source 50 ๐Ÿ’ก The emoji is configured but the key doesn't match any file or data entry โ€” check for typos in the token name
โŒ Leftover token '[token]' in [template] โ€” emoji [emoji] is configured for a non-include step, not includes 50 ๐Ÿ’ก Non-include-step emojis cannot be used as include tokens โ€” use an emoji from an include step instead
โš ๏ธ Case mismatch in '[path]': '[URL]' does not match filesystem (found as '[expected value]') 53 ๐Ÿ’ก Many web servers are case-sensitive โ€” update the link to match the exact filename case
โš ๏ธ file: URL in '[path]': '[URL]' โ€” file: URLs are local paths and will not work in a web browser 53 ๐Ÿ’ก Replace the file: URL with a relative path or a proper https: URL; file: URLs are local-only and should not appear in deployed HTML
โš ๏ธ Missing anchor in '[path]': '[URL]' references anchor '[anchor]' which does not exist in the target 53 ๐Ÿ’ก Add an element with id="[anchor]" to the target page, or fix the link's #anchor
โŒ Broken link in '[path]': target '[URL]' does not exist 52 ๐Ÿ’ก Check the href for typos โ€” the linked file must exist in the deployed output
โŒ Template output path '[path]' cannot be normalized to a site-relative path (too many '..' segments escape above the site root) 52 ๐Ÿ’ก This path should be produced by the pipeline; check step paths and output configuration for invalid relative segments
โŒ Loose ref file at ๐Ÿ’ฌpaths_ref_path contains an invalid hash โ€” possibly corrupt or tampered git state ๐Ÿ’ก Check repository integrity or use --suffix-timestamp 50 ๐Ÿ’ก The loose ref file should contain a 40- or 64-character hex git object hash โ€” try `git fsck` to check repository health
โš ๏ธ Missing include sources (referenced but files don't exist): [tokens] 53 ๐Ÿ’ก Your pages reference these tokens but the corresponding source files are missing โ€” create them or remove the tokens
โŒ Not in a git repository (searched from [path]): ๐Ÿ’ฌio_kind ๐Ÿ’ก Use --suffix-timestamp or --suffix-length instead of git hash 50 ๐Ÿ’ก Git hash suffixes require the source directory to be inside a git repository
โš ๏ธ Orphaned include files (generated but not referenced): [file list] 53 ๐Ÿ’ก These files are in your include source but no page uses their tokens โ€” remove them or add the tokens to a page
โš ๏ธ Include step [emoji] ('[path]') appears before all page steps and is invisible to every page โ€” its tokens will **never** be substituted. Move this step after at least one page step. 53 ๐Ÿ’ก The step order in ssi-config.toml matters โ€” page steps must come before include steps that should apply to them
โš ๏ธ Output path '[path]' is written by step [emoji] and also by step [other emoji] โ€” later step wins 53 ๐Ÿ’ก Use different destination paths or remove one of the conflicting steps
โŒ Found subdirectories in [type] source '[source]' 50 ๐Ÿ’ก This source type does not process subdirectories โ€” move files to the top level or use a different source type
โŒ Could not read page source '[source]' at [path] to check for subdirectories: [error message] 50 ๐Ÿ’ก The subdirectory pre-check was skipped; fix permissions or the path, or expect a clearer error when the pipeline reads this directory
โš ๏ธ Token key '[key]' contains invalid character U+[error code] โ€” token key bodies may only contain alphanumeric characters, underscores, and hyphens 53 ๐Ÿ’ก Rename the source file to use only ASCII letters, digits, underscores, and hyphens
โš ๏ธ Token key is empty โ€” empty keys produce invalid automaton behavior and are rejected 53 ๐Ÿ’ก Ensure all source files and TOML keys have non-empty names
โš ๏ธ Token key '[key]' ends with U+[error code] โ€” token keys should end with alphanumeric characters 53 ๐Ÿ’ก Rename the source file to end with an alphanumeric character (letter or digit)
โš ๏ธ Token key '[key]' starts with U+[error code] โ€” token keys should start with alphanumeric characters 53 ๐Ÿ’ก Rename the source file to start with an alphanumeric character (letter or digit)
Skipping '[path]' during unicode scan: I/O error ([I/O error message]) โ€” a binary file would not be reported this way
โš ๏ธ Hidden files in source directory not referenced in any [[step]]: [file list] Consider adding these to .gitignore, or add them to a [[step]] in ssi-config.toml. 53 ๐Ÿ’ก Hidden files (starting with '.') are often editor or system files that don't belong in the site output
โš ๏ธ Unreferenced files in source directory: [file list] These files exist in your source directory but are not used. Remove them or add them to a [[step]] in ssi-config.toml. 53 ๐Ÿ’ก Every file in the source directory should belong to a [[step]] โ€” unused files may indicate a misconfiguration
Checking for unused keys in include sources
โš ๏ธ Unused key '[value]' in source [emoji] 53 ๐Ÿ’ก This key exists in the source but no page uses it โ€” remove the file/entry or add a token referencing it
Checking CSS structure...
โŒ 50 ๐Ÿ’ก Fix the errors listed above in your ssi-config.toml, then run validation again
โŒ 50 ๐Ÿ’ก Fix the errors listed above, then run `ssi validate` again
Checking HTML structure...
โŒ Include validation error: [error message] 50 ๐Ÿ’ก If the text mentions TOML, fix the syntax in that file (unclosed tables or string quotes are common). For path or permission errors, confirm the file exists and is readable. For step or emoji issues, check [[step]] blocks and token names in ssi-config.toml.
Checking include source usage for '[source]'...
Include validation: [count] referenced token entries
Checking internal links...
๐ŸŽ–๏ธ Configuration validation of '[path]' passed
๐Ÿ… Content validation of '[path]' passed
๐ŸŽจ CSS structure validation passed
๐Ÿ›๏ธ HTML structure validation passed
๐Ÿฅˆ Include validation passed
๐Ÿ”— Link validation passed
๐Ÿฅ‰ Source validation of '[path]' passed
๐Ÿ” Source file checks passed
Validation processing complete in [elapsed time] seconds
Running quick validation for [config path] (config only)
Checking source files...
Running source validation for [source]
Content validation collected [count] templates
Unreferenced source file check: [count] unreferenced file warnings
Unused key detection: [count] matched key entries
โŒ File '[path]' has extension '[actual value]' which does not match the declared content type '[content type]' 6 ๐Ÿ’ก Check the file extension or change the content type in your ssi-config.toml