diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000..5b0a536
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,147 @@
+# AGENTS.md — AI Agent Handoff Guide
+
+This file is for the **next AI agent** working on this project. Read this before making any changes.
+
+## What Is This Project?
+
+**malxte.de** is a single-page personal website for **Malxte** (aka ByteMalte) — a Rust programmer, Nostr enthusiast, and content creator. The site introduces who he is, links to his social profiles, and showcases his projects.
+
+- **Live at**: [malxte.de](https://malxte.de)
+- **Stack**: SvelteKit 2 + Svelte 5 + TypeScript + Vite + pnpm
+- **Type**: Static personal about page (no backend, no database, no API)
+
+## Critical Files
+
+| File | What It Does | Edit When |
+|------|-------------|-----------|
+| `src/routes/+page.svelte` | ALL page content — hero, about, connect, projects | Adding/changing content, links, styling |
+| `src/routes/+layout.svelte` | Global shell — header, nav, footer, global CSS | Changing navigation, layout structure, global styles |
+| `src/app.html` | HTML shell — font loading | Adding fonts, meta tags, scripts |
+| `BYTEMALTE.md` | Design system spec (colors, typography, components) | Updating design tokens |
+| `package.json` | Dependencies and scripts | Adding/removing packages |
+
+## Design System
+
+**Always follow the BYTEMALTE Design System** (see `BYTEMALTE.md`).
+
+### Current Color Tokens (v1.1)
+
+| Token | Hex | Used For |
+|-------|-----|----------|
+| Primary | `#8888FF` | Buttons, links, brand accents, hover states |
+| Secondary | `#3DDC84` | Tags, success indicators |
+| Background | `#0F172A` | Page background |
+| Surface | `#1E293B` | Cards, sections, modals |
+| Text High | `#F8FAFC` | Headings, primary text |
+| Text Muted | `#B0BDD0` | Descriptions, footer, secondary text |
+| Error | `#EF4444` | Destructive actions |
+
+### When using these colors in CSS:
+
+- **Primary**: `#8888ff` (hex) or `rgba(136, 136, 255, X)` (for transparency)
+- **Primary hover**: `#9a9aff`
+- **Secondary**: `#3ddc84` or `rgba(61, 220, 132, X)`
+- **Muted text**: `#b0bdd0`
+
+### Border Radii
+
+- Buttons: `8px`
+- Cards/Containers: `16px`
+- Profile images: `50%` (circle)
+
+### Typography
+
+- Font: `Inter, system-ui, sans-serif`
+- h1: `2.5rem`, weight 700
+- h2: `1.8rem`, weight 600
+- h3: `1.2rem`, weight 500
+- Body: `1rem`, weight 400, line-height 1.6
+
+## How Content Is Organized
+
+All page content lives in `src/routes/+page.svelte`. Data is defined as static arrays:
+
+```typescript
+// Social links — add/remove/edit entries here
+const connectLinks = [
+ { title: '...', description: '...', icon: '', href: '...', cta: '...' },
+];
+
+// Projects — add/remove/edit entries here
+const projects = [
+ { title: '...', description: '...', tags: ['...'], link: '...' | null },
+];
+```
+
+SVG icons are inline strings (not components). Copy from [Lucide](https://lucide.dev/) or similar.
+
+## Nostr Identity
+
+The site displays Malxte's Nostr credentials in the hero section:
+
+- **NIP-05**: `_@bytemalte.de`
+- **npub**: `npub1guff8dkdz7k47zh0mx26y0mmx5l6np57jjkvmhnyrak0n50r5hxqjdnsra`
+
+Both have copy-to-clipboard buttons. State is managed via:
+
+```typescript
+let copiedField = $state('');
+function copyToClipboard(text: string, field: string) { ... }
+```
+
+## Common Tasks
+
+### Adding a new social link
+
+1. Open `src/routes/+page.svelte`
+2. Add an entry to the `connectLinks` array
+3. For the icon, use an inline SVG string (24x24 viewBox, stroke-based)
+
+### Adding a new project
+
+1. Open `src/routes/+page.svelte`
+2. Add an entry to the `projects` array
+3. Use `link: null` if there's no external URL
+
+### Changing colors
+
+1. Update `BYTEMALTE.md` with the new values
+2. Find-and-replace in `src/routes/+layout.svelte` and `src/routes/+page.svelte`
+3. Don't forget `rgba()` variants (e.g., `rgba(136, 136, 255, 0.1)`)
+
+### Adding a new page
+
+1. Create `src/routes/new-page/+page.svelte`
+2. It will automatically be available at `/new-page`
+3. Add a nav link in `src/routes/+layout.svelte`
+
+### Updating the footer links
+
+Edit the footer section in `src/routes/+layout.svelte` (around line 189-196).
+
+## Verification Checklist
+
+After making changes, always run:
+
+```bash
+pnpm check # 0 errors, 0 warnings expected
+pnpm build # Must succeed
+```
+
+## Svelte 5 Patterns Used
+
+- **`$state()`** — Reactive state declaration
+- **`$props()`** — Component props (layout uses `let { children } = $props()`)
+- **`{@render children()}`** — Slot rendering (replaces `
+ A young, highly motivated Rust programmer and Nostr enthusiast. + I share my projects, tech news, and tips with the community. +
+_@bytemalte.de
+
+ npub1guff8dkdz7k47zh0mx26y0mmx5l6np57jjkvmhnyrak0n50r5hxqjdnsra
+
+ Passionate about building fast, safe, and reliable systems. Rust is my language of choice for performance-critical applications.
+I believe in open collaboration and sharing knowledge. Building communities where developers can learn and grow together.
+Firm believer in decentralized communication. Nostr is the future of censorship-resistant social networking.
+Find me across the web — let's build something together.
+{link.description}
++ Things I'm building and working on. All my projects are available at + bytemalte.de + — the following are just examples. +
+{project.description}
+ +Rust 🦀 programmer & Nostr Lover ❤️
-- Hi, I am a young highly motivated Rust 🦀 programmer and Nostr Lover ❤️. - I like to share my Projects, Tech News and Tips. -
-- When I'm not coding, I create content or work on my own projects, such as - bytemalte.de a community website or my social media app maltemedia. -
-- A community website where I share insights, tutorials, and connect with other developers. - Built with modern web technologies and a focus on performance. -
-- A social media app that prioritizes privacy and user control. Currently in development - with Rust backend and Svelte frontend. -
-