Repository hygiene: add/verify .editorconfig and .gitattributes for consistent line endings (LF vs CRLF) and whitespace across Windows/macOS/Linux.
Update README.md with Windows-friendly local workflow from guidelines (bundle exec jekyll serve –livereload –config _config.yml,_config.dev.yml; npm run build:js; troubleshooting tips for webrick/wdm).
Add a CONTRIBUTING.md section on content conventions (front matter defaults, categories/tags, file locations for pages vs. collections).
Establish a clear comments strategy: either configure Staticman/Disqus or disable comments by default in _config.yml and per-collection defaults.
Fill in SEO/social metadata in _config.yml (site description, social.links, twitter username, og_image) and verify jekyll-sitemap/jekyll-feed output.
Decide whether to enable the jemoji plugin (it is whitelisted but not enabled) or remove it from whitelist to reduce confusion.
Review necessity of jekyll-archives: either enable it with proper layouts or remove the gem from Gemfile to reduce build surface area.
Create/verify tag and category archive pages under _pages that match category_archive/tag_archive config (Liquid-driven archives).
Ensure _config.dev.yml turns off analytics and comments provider for local dev; align with chosen comments strategy.
Modernize Node toolchain: update engines.node (>=14) in package.json and plan migration from uglify-js v2 to terser or uglify-js v3 for ES compatibility.
Replace legacy uglify script with a terser-based build (keeping exact concat order) and verify assets\js\main.min.js builds identically/minimally.
Add an npm script alias “build” that runs both JS build and a Jekyll build for local inspection (document in README).
Ensure assets\js\main.min.js is committed (since GitHub Pages won’t run Node); document this requirement in README.
Audit assets/js/plugins and vendor usage; remove unused plugins (e.g., magnific-popup if not used) to shrink JS bundle size.
Add ESLint with a minimal config (browser, jquery) to catch common JS issues; integrate as npm script (npm run lint).
Add Prettier (or EditorConfig-only) for consistent code style; document formatting conventions in CONTRIBUTING.md.
Review Sass structure under _sass; group partials logically and ensure variables/mixins are centralized; keep dev output expanded via _config.dev.yml.
Add a simple stylelint config to catch Sass/CSS issues; integrate as npm script (npm run lint:css) if desired.
Optimize image assets: lossless compression of images/ and creation of appropriately sized variants where needed.
Adopt responsive images for large hero/portfolio media (srcset/sizes) and lazy-load (loading=”lazy”) where it doesn’t impact LCP.
Add width/height attributes to images to reduce CLS; ensure alt text is present and meaningful on all images.
Accessibility pass: add skip-to-content link and focus styles; follow-up to review headings/contrast in a later pass.
Performance pass: audit with Lighthouse; defer or async non-critical scripts, preconnect to required origins (e.g., fonts), and minimize unused CSS/JS.
Add a 404 page (if missing) and ensure it inherits site navigation and has helpful links.
Verify talk/project/publication collection layouts render required metadata; adjust defaults to set author_profile/share/comments appropriately per type.
Review permalink structure and existing content slugs for consistency and backward compatibility; add jekyll-redirect-from where URLs changed.
Decide on analytics provider (Google, custom, or none) and configure it; ensure analytics disabled in development via _config.dev.yml.
Populate author and social profile fields in _config.yml (GitHub, LinkedIn, Scholar, ORCID as applicable) for richer SEO JSON-LD.
Add structured data (JSON-LD) for Person in head include, using fields from _config.yml.
Configure a GitHub Actions workflow to run bundle exec jekyll build and npm run build:js on pull requests to catch build errors (no deploy).
Optionally extend CI with html-proofer to check internal links, images, and HTML validity; added a lenient CI step (continue-on-error) for internal link checks.
Enable Dependabot (or Renovate) for Ruby and Node dependencies to surface security and update PRs.
Add a basic smoke-test script (PowerShell) that runs npm run build:js and bundle exec jekyll build –config _config.yml,_config.dev.yml and validates _site index exists.
Document the markdown_generator scripts: inputs (TSV/Bib), outputs, and a step-by-step guide to regenerate content safely.
Ensure markdown_generator outputs are idempotent and don’t overwrite manual edits; consider adding a data/ source-of-truth note.
Update .gitignore to exclude transient artifacts (e.g., .DS_Store, Thumbs.db, .jekyll-cache) and notebook checkpoints.
Add repository labels and issue templates for content requests vs. code changes to streamline contributions (added .github/ISSUE_TEMPLATE).
Review timezone setting in _config.yml; set to the site owner’s actual timezone to ensure correct timestamps.
Verify pagination usage (jekyll-paginate) or remove if not needed; configure paginate_path if enabled.
Evaluate using minimal number of third-party scripts; audit external calls (fonts, embeds) for privacy/performance.
Ensure breadcrumbs and navigation reflect actual IA; update _data/navigation.yml (if present) or _includes to match desired structure.
Create a backup/export plan for assets and content (at minimum document how to restore site from repo on a new machine).
Add a LICENSE and NOTICE section in README summarizing theme attribution (already present) and any additional assets’ licenses.
Add pre-commit guidance (optional): run npm run build:js and jekyll build locally before pushing; consider Husky pre-commit hooks for linting.
Remove unused configuration stubs (staticman) and explicitly disable comments provider by default in _config.yml.
If using Disqus, set shortname per environment and enable via _config.yml; otherwise ensure comments: true defaults are turned off to avoid broken embeds.
Verify talkmap tooling (talkmap.py, talkmap.ipynb) is documented; include instructions and outputs under talkmap/.
Add a simple release checklist in docs (build JS, run Jekyll, verify _site, push) prior to merging to main.
Consider adding Jekyll includes for common elements (contact buttons, social icons) to reduce duplication across pages.
Periodically run bundle update (respecting github-pages constraints) and test locally; document steps for resolving Gem conflicts (delete Gemfile.lock, reinstall).
Migrate Node package manager to pnpm: declare packageManager in package.json, prefer pnpm commands in docs, remove package-lock.json, and generate/commit pnpm-lock.yaml on next install.