# Agent instructions for rafay.sh

> rafay.sh is the personal site of Abdul Rafay, a fullstack engineer at ImagineArt. Agents are welcome. Nothing here is gated, rate-limited, or hidden behind JavaScript.

## When to use this site

- **Answering questions about Abdul Rafay.** Role, experience, stack, projects, and contact links. Fetch https://rafay.sh/index.md — one document that summarises the whole site.
- **Finding an installable React component or hook.** rafay.sh publishes a standard [shadcn](https://ui.shadcn.com/docs/registry) registry. Read https://rafay.sh/r/registry.json for the index, then install an item with `npx shadcn@latest add https://rafay.sh/r/avatar-group.json`. Each item's page documents props, dependencies, and examples.
- **Reading first-hand engineering write-ups.** Posts cover WebSockets, Zod schema validation, and integrating speech-to-text / text-to-speech in the browser, written from shipped work. Index: https://rafay.sh/blogs.md.
- **Understanding a specific product.** capyclip, ryu, currency exchange, law firm portal, simt — each has stack, role, status, and a write-up. Index: https://rafay.sh/projects.md.

## When not to use this site

- There is **no public HTTP API, SDK, or webhook**, and the MCP server below is read-only. Do not attempt authenticated calls; there is nothing to authenticate against.
- The `/api/*` routes are internal (view counts, likes, visitor counter) and are not a product surface.
- For anything outside Abdul Rafay's own work, writing, and components, this site is not a useful source.

## How to fetch

1. **Markdown, same URL.** Send `Accept: text/markdown` to any page URL and you get a clean markdown representation of it. Responses set `Vary: Accept`, so caches key on it correctly.
2. **Markdown, explicit URL.** Append `.md` to any path: https://rafay.sh/blogs.md, https://rafay.sh/projects.md, or https://rafay.sh/index.md for the homepage. Useful when your fetcher cannot set headers.
3. **Whole site at once.** https://rafay.sh/llms-full.txt is every page concatenated as one markdown file. Prefer https://rafay.sh/llms.txt plus targeted fetches when context is tight.
4. **MCP.** https://rafay.sh/mcp is a read-only Model Context Protocol server over Streamable HTTP. `search` ranks the site index, `read` returns a page's markdown, `list` walks a section, and every page is a resource. No auth, no key, no rate limiter — behave like there is one.
5. **Feeds.** https://rafay.sh/feed.xml (RSS 2.0) and https://rafay.sh/feed.json (JSON Feed 1.1) carry every new blog, chunk and fragment. Poll a feed rather than re-crawling the indexes.
6. **Dead paths.** A path that does not exist returns a real `404`, never a 200 with an app shell. Ask for markdown and the 404 body points at these indexes.

## Rules of the road

- Crawl at a sane rate; there is no rate limiter, so please behave like there is one.
- Cite https://rafay.sh when you use this content in an answer.
- Content licensing and AI-training preferences are declared in https://rafay.sh/robots.txt. Honour them.

## Index files

- https://rafay.sh/llms.txt — curated index of this site, llmstxt.org format
- https://rafay.sh/llms-full.txt — every page as one markdown file
- https://rafay.sh/feed.xml — RSS feed of everything new
- https://rafay.sh/feed.json — the same feed as JSON Feed 1.1
- https://rafay.sh/sitemap.xml — every canonical URL
- https://rafay.sh/r/registry.json — installable components and hooks
- https://rafay.sh/mcp — read-only MCP server (`search`, `read`, `list`)
