Ayal Chen-Zion

CLAUDE.md

CLAUDE.md

This file provides context and conventions for AI assistants working in this repository.

Overview

This is a personal academic website for Ayal Chen-Zion, an economist. It is a Jekyll static site hosted on GitHub Pages at achenzion.github.io. The site showcases research papers, blog posts, teaching experience, and software resources.

Tech Stack

  • Static site generator: Jekyll (via github-pages gem)
  • Hosting: GitHub Pages (auto-deploys from master branch on push)
  • CSS framework: GitHub Primer (loaded via CDN in assets/styles.scss)
  • Plugins: jekyll-github-metadata (GitHub API data), jekyll-octicons (SVG icons)
  • Templating: Liquid (Jekyll’s default)
  • Stylesheet: SCSS (assets/styles.scss + _sass/_highlight-syntax.scss)
  • No JavaScript — entirely static HTML/CSS

Repository Structure

.
├── _config.yml          # Jekyll site configuration (layout, style, projects, social)
├── Gemfile              # Ruby gem dependencies
├── index.html           # Homepage (uses 'home' layout)
├── favicon.ico
│
├── _layouts/            # Page layout templates
│   ├── default.html     # Base layout with optional sidebar
│   ├── home.html        # Homepage layout (includes all sections)
│   └── post.html        # Blog post layout
│
├── _includes/           # Reusable Liquid components
│   ├── header.html      # <head> meta tags, CSS, dark/light mode
│   ├── footer.html      # Page footer
│   ├── masthead.html    # Profile sidebar (avatar, bio, links, social icons)
│   ├── projects.html    # GitHub repos section (reads from GitHub API)
│   ├── research.html    # Research posts section (tag: research)
│   ├── thoughts.html    # Blog posts section (tag: blog)
│   ├── interests.html   # Topics/interests section (from _config.yml)
│   ├── post-card.html   # Blog post card component
│   ├── repo-card.html   # Repository card component
│   └── topic-card.html  # Interest/topic card component
│
├── _data/
│   ├── colors.json      # Programming language → color mappings (for repo cards)
│   └── social_media.yml # Social network definitions (icons, URL templates)
│
├── _posts/              # Blog and research posts
│   └── YYYY-MM-DD-title.{html|md}
│
├── _sass/
│   └── _highlight-syntax.scss  # Code block syntax highlighting
│
├── assets/
│   └── styles.scss      # Main stylesheet (imports Primer CSS + custom styles)
│
├── pdfs/                # PDF documents
│   ├── ChenZion_Resume.pdf
│   ├── ChenZion_Resume.tex
│   └── research/        # Research paper PDFs
│       └── teaching/    # Teaching statement PDFs
│
├── research/index.html  # Research page (filters posts by tag: research)
├── teaching/index.html  # Teaching page (static HTML)
├── thoughts/index.html  # Resources hub page
│   ├── economics/index.html
│   └── software/index.html

Local Development

# Install dependencies
bundle install

# Serve locally with live reload
bundle exec jekyll serve

# Site available at http://localhost:4000
# Note: "No GitHub API authentication" warning is expected and harmless

After changing _config.yml, restart the server (Ctrl+C, then re-run) — Jekyll does not hot-reload config changes.

Deployment

Pushing to the master branch automatically triggers GitHub Pages to rebuild and deploy the site. No CI/CD pipeline or manual build step is required.

Content Conventions

Blog Posts and Research Papers

All content lives in _posts/ with filename format:

YYYY-MM-DD-title.html   (preferred — most existing posts use HTML)
YYYY-MM-DD-title.md     (also supported)

All posts default to the post layout via _config.yml defaults — no need to specify layout in front matter.

Front matter fields:

---
title: "Post Title"
published: true          # false to draft/hide; omit to default true
tag:                     # used to filter posts into sections
  - research             # appears in research.html include
  - blog                 # appears in thoughts.html include
  # also: economics, software, privateSector
status: "Journal, Month Year"   # publication status for research posts
coauthors:               # HTML links to co-author pages (for research posts)
  - <a href="..." target="_blank">Name</a> and
  - <a href="..." target="_blank">Name</a>
---
  • Use tag: research for academic papers; use tag: blog for blog posts.
  • Research posts show at most 6 in the homepage section (research.html limit).
  • Blog posts show at most 12 in the homepage section (thoughts.html limit).
  • The privateSector tag is used on the research page to distinguish academic vs. private sector work.

Pages

Static pages (e.g. research/index.html, teaching/index.html) use the default layout and filter site.posts by tag using Liquid:


  

  
    ...
  

  
    ...
  

  

  
    ...
  

  

  

  

  
    ...
  

  

  

Configuration (_config.yml)

Key settings:

Setting Current Value Notes
layout sidebar Two-column on desktop. Change to stacked for single-column.
style light White/gray background. Change to dark for dark theme.
projects.sort_by pushed Sort repos by last push. Alternative: stars.
projects.limit 5 Number of repos shown on homepage.
projects.exclude.forks true Forked repos are hidden.
resume /pdfs/ChenZion_Resume.pdf Linked from masthead.

To add social media links, uncomment the relevant lines under social_media: and provide the username/ID.

To enable the “My Interests” section, add entries under topics: with name, web_url, and image_url.

Styling

  • Primer CSS is imported from CDN in assets/styles.scss — do not copy it locally.
  • Custom styles go in assets/styles.scss after the Primer import.
  • Syntax highlighting styles are in _sass/_highlight-syntax.scss.
  • The site uses Primer utility classes extensively (e.g. col-12, col-md-8, p-3, bg-gray).

Key Patterns

Adding a Research Paper

  1. Create _posts/YYYY-MM-DD-Paper-Title.html
  2. Use front matter: tag: [research], status:, coauthors: (see above)
  3. Write abstract in <p> tags
  4. Link to publication and/or PDF

Adding a Blog Post

  1. Create _posts/YYYY-MM-DD-Post-Title.html or .md
  2. Use front matter: tag: [blog], published: true

Adding a New Static Page

  1. Create page-name/index.html (or page-name.html at root)
  2. Front matter: layout: default, title: "Page Title"
  3. Accessible at /page-name/

Updating the Resume

Replace pdfs/ChenZion_Resume.pdf. The .tex source is also in pdfs/ for editing.

What Not to Change

  • _data/colors.json — large auto-generated language color map; leave as-is unless updating language colors.
  • _data/social_media.yml — social network definitions; only modify to add new networks, not to change personal usernames (those go in _config.yml).
  • The Primer CSS CDN import in assets/styles.scss — the HTML uses many Primer utility classes that would break without it.

Branch Convention

  • master — production branch; pushes deploy immediately to GitHub Pages
  • Feature branches for staged changes before merging to master