# AGENTS.md — robskan.nl

Instructions for AI coding and browsing agents working with **robskan.nl**.

## Site purpose

Personal portfolio of Robbie, also Robskan online: product work (Meridian, Dock), tools stack, experience, contact info, and a Spotify-backed `/music` page.

## When to use this site

- **Portfolio / bio questions** — prefer page twins (`.md` / `.txt`, e.g. `/me.md`, `/me.txt`) or MCP docs tools.
- **Live listening data** — `GET /api/get/spotify` or MCP site server; never scrape authenticated Spotify OAuth routes.
- **Code changes** — open source at [github.com/Robskan/robskan.nl](https://github.com/Robskan/robskan.nl); follow `.cursorrules` and this file.

## Repository workflow

Before committing or pushing changes, run `npm run build` and ensure it succeeds. Do not commit or push if the build fails.

## Stack

- Next.js App Router, Tailwind, Convex (listening history), Spotify polling cron
- GSAP ScrollTrigger on `/music` intro — see music invariants below

## Public agent discovery (on-site)

| Resource | URL |
|----------|-----|
| llms.txt | `/llms.txt` |
| auth.md | `/auth.md` |
| ARD catalog | `/.well-known/ard.json` |
| OpenAPI | `/openapi.json` |
| Agent plugin | `/plugin.json` |
| MCP registry card | `/.well-known/mcp/server-card.json` |
| npm SDK | `@robskan/public-api` |
| CLI | `npx @robskan/mcp-cli` |
| skills.sh skill | `/skills/robskan-site/SKILL.md` (register with `npx skills add`) |

## Music page (`/music`) — do not break

The music area has strict invariants documented in the repository `agents.md` (music-only). Summary:

1. Do not tie `SiteChrome` to `intro.active` / `intro.settled` — use `showIntroScroll` only.
2. Latch intro engagement with `introEngagedRef` during render, not `useState`.
3. Do not unmount `MusicIntroScroll` on pause — only when track is lost.
4. No `ScrollTrigger.refresh()` during active morph.
5. Freeze history props during morph; `animateListUpdates={false}` until settled.
6. Rank badges use unfiltered `listeningHistoryLists.top`.

Full detail: [/music/llms.txt](/music/llms.txt) and the music section of the private repo `agents.md`.

## MCP

- **Docs:** `https://robskan.nl/mcp/docs` — fetch llms indexes and markdown pages
- **Site:** `https://robskan.nl/mcp/site` — now playing / history summaries (read-only)

## Contact

Email: agents@a.sift.nu — see [/contact.md](/contact.md).
