| applyTo | _config.yml,_data/**/*.yml |
|---|
When modifying _config.yml, always update these in pairs:
- url and baseurl must be consistent:
- Personal site:
url: https://username.github.io,baseurl:(leave empty) - Project site:
url: https://username.github.io,baseurl: /projectname/
- Personal site:
- title, first_name, last_name – Site header and metadata
- description – Used in RSS feeds and metadata
- lang – Language code (e.g., "en", "fr")
Look for enabled: false/true patterns. Common ones:
blog.enablednews.enabledprofile.image_circularprofile.show_social_linksprojects.enabledpublications.enabledrelated_blog_posts
- Quote string values containing special characters:
":" - Use
>for multi-line strings (ignore newlines) - Use
|for multi-line strings (preserve newlines) - Indentation matters: always use spaces (2 spaces), never tabs
- No tabs allowed; use only spaces
If you modify _config.yml, verify syntax by running:
docker compose up
# Site should start without YAML parse errors
# Check output for "YAML parse error" or "valid YAML"Data files provide structured content that templates can access via Liquid. Each file serves a specific purpose.
Defines social media links and contact information displayed on the site.
Format: Entries are displayed in the order they are defined (not alphabetically sorted)
For standard socials: Use the key with the appropriate value. Common built-in socials include:
email:– Email addresscv_pdf:– Path to CV PDF filescholar_userid:– Google Scholar IDinspirehep_id:– Inspire HEP author IDrss_icon:– Boolean to show/hide RSS icon- And many others (see jekyll-socials documentation for full list)
For custom socials: Define a custom entry with nested fields:
logo:– URL or path to logo imagetitle:– Display nameurl:– Profile or website URL
Example:
cv_pdf: /assets/pdf/example_pdf.pdf
email: you@example.com
scholar_userid: qc6CJjYAAAAJ
github_username: username
linkedin_username: username
custom_social:
logo: https://example.com/logo.png
title: Custom Profile
url: https://example.com/For more information, see the jekyll-socials documentation.
CV content in RenderCV format (recommended approach for generating professional CVs).
Format: RenderCV YAML format — human-readable and designed specifically for professional resumes with automatic PDF generation capability.
Key Files:
_data/cv.yml— Main CV content in RenderCV formatassets/rendercv/design.yaml— Design and styling customizationassets/rendercv/locale.yaml— Localization and text formattingassets/rendercv/settings.yaml— RenderCV-specific settings
Usage: Rendered by cv.liquid layout on CV page; displayed in about.liquid on home page.
Automatic PDF Generation: When using RenderCV format, a GitHub Actions workflow (render-cv.yml) automatically generates a PDF version whenever you push changes to _data/cv.yml. The generated PDF is saved to assets/rendercv/rendercv_output/ and can be linked via cv_pdf setting in _config.yml.
Alternative Format (JSONResume): For an alternative format, see assets/json/resume.json which uses the JSONResume standard. Switch between formats using the cv_format frontmatter variable in _pages/cv.md (options: rendercv or jsonresume).
For more details: See CUSTOMIZE.md § Modifying the CV information for setup, switching formats, and PDF generation configuration.
Social media citation counts and metrics.
Format: Varies by platform (Google Scholar, ORCID, etc.)
Example:
scholar_userid: YOUR_SCHOLAR_IDGitHub repository listing for the repositories page.
Format: List of repository information
Usage: Used by repositories page to display GitHub projects
Co-author information for bibliography/publications.
Mapping: Author names to profile URLs and affiliations
Format: Maps full names to contact info
Example:
"Einstein, Albert":
url: https://en.wikipedia.org/wiki/Albert_Einstein
affiliation: Princeton University-
Add to
_config.yml:my_feature: enabled: true
-
In Liquid templates use:
{% if site.my_feature.enabled %} ... content ... {% endif %} -
Document the flag in CUSTOMIZE.md
- Edit
_data/socials.yml - Keep entries alphabetically sorted
- Ensure
iconidentifiers match available icons (Academicons or Font Awesome) - Use full profile URLs in
urlfield - Test:
docker compose up→ check social icons on site
Update these in _config.yml:
- title – Site name
- first_name, last_name – Your name
- email – Contact email
- description – Site tagline (used in RSS, metadata)
- keywords – Search keywords
- Edit
_data/coauthors.yml - Add entry with author name as key
- Include
url:andaffiliation:fields - This maps author names in BibTeX to profile links
Always run these checks:
-
YAML syntax check:
# Run Jekyll build to validate YAML docker compose down docker compose up # Wait for "Server running" message # Check output for "YAML parse error" messages
-
Prettier format check:
npx prettier _config.yml _data/ --check npx prettier . --write # Fix formatting
-
Visual verification:
- Open http://localhost:8080
- Check that your changes appear correctly
- Verify navigation, social links, and metadata work
- Check site title and description in page source
- Check for unquoted special characters (
:,&,#,|,>) - Verify indentation uses only spaces (2 spaces per level)
- Ensure closing quotes and braces are present
- Check syntax:
feature: enabled: true(colon after feature name) - Verify spelling in Liquid template:
{% if site.feature.enabled %} - Clear browser cache if using old cached pages
- Verify
_data/socials.ymlhas correct entries - Check icon identifiers exist in Font Awesome or Academicons
- Ensure
url:field is not empty
When working with YAML configuration:
- Always test locally with
docker compose upafter changes - Quote any string containing special characters
- Keep indentation consistent (2 spaces)
- Check output for YAML parse errors before committing
- Only search for additional details if encountering error messages not mentioned here