This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in node_modules/next/dist/docs/ (resolved from this file's directory; in monorepos the next package may not be visible from the repo root) before writing any code. Heed deprecation notices.
This block is written and re-added by next dev — verify at node_modules/next/dist/server/lib/generate-agent-files.js. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean.
If you are an AI assistant (like Claude, Cursor, or ChatGPT) working on this repository, you must adhere to the following architectural guidelines:
- The site uses a 9-stage CSS variable theme system mapped to the planets (plus the Sun).
- Themes are controlled by modifying the
data-themeattribute on the<html>root element. - The
ThemeSwitcher.jscomponent controls this via React state and LocalStorage. - DO NOT use generic class-based theming (e.g.,
dark/light). Always use CSS custom properties defined insrc/app/globals.css. - DO NOT use TailwindCSS. This project uses purely Vanilla CSS modules (
*.module.css).
- The social links in the
Sidebar.jsare positioned using a continuous 360-degree CSS animation (animation: orbit). - To prevent the icons from flipping upside down during the orbit, they are wrapped in a
.counterRotatediv that reverses the animation. - If you need to modify the spacing or add new links, ensure you recalculate the
angleDegmathematically inSidebar.js.
- Research posts and projects are written in Markdown (
.md) and stored insrc/content/postsandsrc/content/projects. - We parse frontmatter using
gray-matterand render components usingnext-mdx-remote. - Frontmatter schema:
title,date,excerpt,logo(for projects),link, andtags. - When adding new fields, you must update
src/lib/mdx.jsand the correspondingpage.jsview components.
- This site is statically exported (
output: 'export'innext.config.mjs) to be hosted on GitHub Pages. - DO NOT introduce Server Actions, API routes (
app/api/*), or any dynamic SSR rendering (e.g.,getServerSideProps). - All dynamic routes (
[slug]) MUST usegenerateStaticParams()to pre-render the pages. paramsin Next.js 15+ Server Components is a Promise. You mustawait paramsbefore accessingparams.slugin both components andgenerateMetadata.