This pull request introduces several documentation improvements and adds comprehensive Copilot and agent instruction files to the al-folio repository. The most significant changes are the addition of repository-wide and path-specific Copilot instructions, updates to agent documentation to reference these instructions, and improvements to the documentation structure and clarity regarding file purposes and workflows. **Copilot and Agent Instruction Enhancements:** - Added a new `.github/copilot-instructions.md` file providing detailed, repository-wide setup, build, CI/CD, troubleshooting, and file format guidance for Copilot coding agents. - Introduced `.github/instructions/bibtex-bibliography.instructions.md` with specific instructions for editing and validating BibTeX files, including custom keywords, formatting rules, and integration with Jekyll-Scholar. - Updated agent documentation files (`customize.agent.md`, `docs.agent.md`) to reference the new Copilot instruction files and explain their purpose and usage for both repository-wide and path-specific scenarios. [[1]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L57-R65) [[2]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L107-R122) [[3]](diffhunk://#diff-961a46180ce568ce43c20bf7129dc5e4926a9aa4e0d7bc19926ca5ee3ff95cd0L49-R51) [[4]](diffhunk://#diff-961a46180ce568ce43c20bf7129dc5e4926a9aa4e0d7bc19926ca5ee3ff95cd0L106-R137) **Documentation Structure and Clarity Improvements:** - Clarified and reorganized the documentation file list in agent files, removing references to deprecated or merged files (e.g., `MAINTENANCE.md`, `ACCESSIBILITY.md`) and updating descriptions to reflect current usage. [[1]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L57-R65) [[2]](diffhunk://#diff-961a46180ce568ce43c20bf7129dc5e4926a9aa4e0d7bc19926ca5ee3ff95cd0L21-R21) [[3]](diffhunk://#diff-961a46180ce568ce43c20bf7129dc5e4926a9aa4e0d7bc19926ca5ee3ff95cd0L106-R137) - Enhanced documentation on the purpose and application of each documentation file, and added detailed explanations of Copilot instruction files and their role in project development. **Workflow and Validation Updates:** - Updated references and descriptions for GitHub Actions workflows in agent documentation to include the Copilot environment setup and clarify pre-commit and CI/CD requirements. [[1]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L57-R65) [[2]](diffhunk://#diff-961a46180ce568ce43c20bf7129dc5e4926a9aa4e0d7bc19926ca5ee3ff95cd0L49-R51) - Corrected references for accessibility guidance, now directing users to `TROUBLESHOOTING.md` instead of the removed `ACCESSIBILITY.md`. These changes collectively improve the onboarding experience for both human contributors and AI agents, ensuring consistent adherence to project conventions and reducing errors. **References:** [[1]](diffhunk://#diff-227c2c26cb2ee0ce0f46a320fc48fbcbdf21801a57f59161b1d0861e8aad55f5R1-R253) [[2]](diffhunk://#diff-6fd2827fb8d9c2dd6dc973572201853487ecbbd1120b00425d4f1c21dfdcf35fR1-R174) [[3]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L57-R65) [[4]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L107-R122) [[5]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L550-R562) [[6]](diffhunk://#diff-961a46180ce568ce43c20bf7129dc5e4926a9aa4e0d7bc19926ca5ee3ff95cd0L21-R21) [[7]](diffhunk://#diff-961a46180ce568ce43c20bf7129dc5e4926a9aa4e0d7bc19926ca5ee3ff95cd0L49-R51) [[8]](diffhunk://#diff-961a46180ce568ce43c20bf7129dc5e4926a9aa4e0d7bc19926ca5ee3ff95cd0L106-R137) --------- Signed-off-by: George Araújo <george.gcac@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
8.8 KiB
Copilot Coding Agent Instructions
Repository Overview
al-folio is a simple, clean, and responsive Jekyll theme for academics and researchers. It enables users to create professional portfolio and blog websites with minimal configuration. The repository serves both as a template and as a reference implementation.
- Type: Jekyll static site generator template
- Target Users: Academics, researchers, and professionals
- Key Features: CV display, publication bibliography, blog posts, projects, news/announcements, course listings
Tech Stack & Versions
Core Technologies:
- Jekyll: v4.x (Ruby static site generator)
- Ruby: 3.3.5 (primary CI/CD version), 3.2.2 (some workflows)
- Python: 3.13 (for nbconvert, jupyter notebook support)
- Node.js: Latest (for purgecss and prettier)
- Docker: Uses prebuilt image
amirpourmand/al-folio:v0.16.3(Ruby slim-based)
Build Dependencies (from Gemfile):
classifier-reborn– Related posts calculationjekyll-archives-v2– Archive page generationjekyll-jupyter-notebook– Jupyter notebook embeddingjekyll-minifier– CSS/JS minificationjekyll-paginate-v2– Paginationjekyll-scholar– Bibliography managementjekyll-tabs– Tab UI componentsjekyll-toc– Table of contents generationjemoji– Emoji support- Multiple other specialized jekyll plugins
Code Quality Tools:
- Prettier: v3.8.0+ with
@shopify/prettier-plugin-liquid– Code formatter (mandatory for PRs) - Purgecss: CSS purification for production builds
Building & Local Development
Docker (Recommended Approach)
Always use Docker for local development. This ensures consistency with CI/CD and avoids Ruby/Python environment issues.
Initial Setup:
docker compose pull # Pull prebuilt image
docker compose up # Start development server
# Site runs at http://localhost:8080
Rebuilding with Updated Dependencies:
docker compose up --build # Rebuilds Docker image from Dockerfile
docker compose up --force-recreate # Forces complete rebuild
For slim Docker image (if image size is critical):
docker compose -f docker-compose-slim.yml up
If Docker build fails:
- Check disk space and available RAM
- Kill any existing jekyll processes:
docker compose down - For M1/M2 Mac: Ensure Docker Desktop is up-to-date
- Linux users may need Docker group permissions:
sudo usermod -aG docker $USER(then logout/login)
Bundle/Jekyll (Legacy, Use Docker Instead)
bundle install # Install Ruby gems
pip install jupyter # Install Python dependencies
bundle exec jekyll serve --port 4000 # Run at http://localhost:4000
Important Build Requirements
- ImageMagick must be installed – Required for image processing plugins
- Docker: Installed automatically
- Local:
sudo apt-get install imagemagick(Linux) orbrew install imagemagick(Mac)
- nbconvert must be upgraded before build –
pip3 install --upgrade nbconvert - Always set JEKYLL_ENV=production for production builds – Required for CSS/JS minification
Project Layout & Key Files
Root Directory Structure
_bibliography/papers.bib– BibTeX bibliography for publications_config.yml– Primary configuration file (title, author, URLs, baseurl, feature flags)_data/– YAML data files (socials.yml, coauthors.yml, cv.yml, citations.yml, venues.yml, repositories.yml)_includes/– Reusable Liquid template components_layouts/– Page layout templates (about.liquid, post.liquid, bib.liquid, distill.liquid, cv.liquid, etc.)_news/– News/announcement entries_pages/– Static pages (about.md, cv.md, publications.md, projects.md, teaching.md, etc.)_posts/– Blog posts (format: YYYY-MM-DD-title.md)_projects/– Project showcase entries_sass/– SCSS stylesheets_scripts/– JavaScript files for functionality_teachings/– Course and teaching entriesassets/img/– Images, profile picturesdocker-compose.yml– Docker compose configurationDockerfile– Docker image definitionGemfile&Gemfile.lock– Ruby dependency specificationspackage.json– Node.js dependencies (prettier only)purgecss.config.js– PurgeCSS configuration for production CSS optimization
Configuration Priority
When making changes:
- Always start with
_config.ymlfor site-wide settings - Feature flags are in
_config.yml– Look forenabled: true/falseoptions - Social media links:
_data/socials.yml - Content data: Respective
_data/*.ymlfiles - Styling:
_sass/directory (uses SCSS)
CI/CD Pipeline & Validation
GitHub Workflows (in .github/workflows/)
- deploy.yml – Main deployment workflow (runs on push/PR to main/master)
- Sets up Ruby 3.3.5, Python 3.13
- Installs imagemagick, nbconvert
- Runs
bundle exec jekyll buildwith JEKYLL_ENV=production - Runs purgecss for CSS optimization
- Commits built site to gh-pages branch
- Triggers on: Changes to site files, assets, config (NOT documentation files alone)
- prettier.yml – Code formatting validation (mandatory)
- Runs prettier on all files
- Fails PRs if code is not properly formatted
- Generates HTML diff artifact on failure
- Must install prettier locally to avoid failures:
npm install prettier @shopify/prettier-plugin-liquid
- broken-links.yml, broken-links-site.yml – Link validation
- axe.yml – Accessibility testing
- codeql.yml – Security scanning
- update-citations.yml – Automatic citation updates
- render-cv.yml – CV rendering from RenderCV format
Pre-commit Requirements
You must run these locally before pushing:
- Prettier formatting (mandatory):
npm install --save-dev prettier @shopify/prettier-plugin-liquid
npx prettier . --write
- Local build test with Jekyll:
docker compose pull && docker compose up
# Let it build (wait 30-60 seconds)
# Visit http://localhost:8080 and verify site renders correctly
# Exit with Ctrl+C
- Or run full build simulation:
docker compose up --build
bundle exec jekyll build
# Check for errors in output
Common Pitfalls & Workarounds
YAML Syntax Errors in _config.yml
- Problem: Special characters (
:,&,#) in values cause parse errors - Solution: Quote string values:
title: "My: Cool Site" - Debug: Run locally to see detailed error:
bundle exec jekyll build
"Unknown tag 'toc'" Error on Deployment
- Problem: Deploy succeeds locally but fails on GitHub Actions
- Cause: Jekyll plugins don't load properly
- Solution: Verify gh-pages branch is set as deployment source in Settings → Pages
CSS/JS Not Loading After Deploy
- Problem: Site loads but has no styling
- Cause: Incorrect
urlandbaseurlin_config.yml - Fix:
- Personal site:
url: https://username.github.io,baseurl:(empty) - Project site:
url: https://username.github.io,baseurl: /repo-name/ - Clear browser cache (Ctrl+Shift+Del or private browsing)
- Personal site:
Prettier Formatting Failures
- Problem: PR fails prettier check after local builds passed
- Solution: Run prettier before committing:
npx prettier . --write git add . && git commit -m "Format code with prettier"
Port 8080 or 4000 Already in Use
- Docker:
docker compose downthendocker compose up - Ruby: Kill process:
lsof -i :4000 | grep LISTEN | awk '{print $2}' | xargs kill
Related Posts Errors ("Zero vectors cannot be normalized")
- Cause: Empty blog posts or posts with only stop words confuse classifier-reborn
- Solution: Add meaningful content to posts, or set
related_posts: falsein post frontmatter
File Format Specifications
Blog Post Frontmatter (_posts/)
---
layout: post
title: Post Title
date: YYYY-MM-DD
categories: category-name
---
Project Frontmatter (_projects/)
---
layout: page
title: Project Name
description: Short description
img: /assets/img/project-image.jpg
importance: 1
---
BibTeX Format (papers.bib)
- Standard BibTeX format
- al-folio supports custom keywords:
pdf,code,preview,doi, etc. - Check CUSTOMIZE.md for custom bibtex keyword documentation
Trust These Instructions
This guidance documents the tested, working build process and project structure. Trust these instructions and only perform additional searches if:
- Specific information contradicts what you observe in the codebase
- You need implementation details beyond what's documented
- Error messages reference features or files not mentioned here
The instructions are designed to reduce unnecessary exploration and allow you to focus on code changes.