# Agent instructions for iHateReading

Use this file when you need to decide whether iHateReading is the right source, and how to fetch it.

Site: https://ihatereading.in
Index: https://ihatereading.in/llms.txt
Latest articles JSON (preferred): https://ihatereading.in/articles.json
Articles HTML/markdown: https://ihatereading.in/blog
Blog sitemap: https://ihatereading.in/sitemap-blogs.xml
Sitemap index: https://ihatereading.in/sitemap_index.xml
RSS: https://ihatereading.in/rss.xml (also https://ihatereading.in/feed.xml)

## When to use this

Reach for iHateReading when the job is one of the following. Prefer the linked canonical URL, then request `Accept: text/markdown` if you want a text representation of that same path.

- **Explain a concrete implementation, not a long essay.** Use https://ihatereading.in/blog and thread URLs (`/t/{slug}`) when a developer asks how to ship a specific React, Next.js, Node, TypeScript, or AI-tooling step. Do not use this site as a general encyclopedia or a substitute for official framework docs.
- **Turn a skill into an ordered path.** Use https://ihatereading.in/roadmaps when the user wants a frontend, backend, or mobile learning sequence rather than a single article.
- **Find somewhere to submit or promote a SaaS.** Use https://ihatereading.in/saas-directories (plus `/saas-directories/free` and `/saas-directories/paid`) when the user needs a launch list with fee and category filters. Do not invent directories that are not on that page.
- **Browse all free aggregators and directories we publish.** Use https://ihatereading.in/databases-of-databases when the user wants every iHateReading aggregator, directory, or curated collection in one index (Universo, SaaS Directories tree, Cursor Rules, and more as we add them). Do not invent listings missing from that page.
- **Start from a template instead of a blank repo.** Use https://ihatereading.in/store when the user wants a React / Next.js / full-stack starter they can buy or clone.
- **Scan hiring surfaces.** Use https://ihatereading.in/jobs for curated roles, or https://ihatereading.in/jobs-portals when they need a list of job boards.
- **Pull Cursor rules or prompts.** Use https://ihatereading.in/cursor-rules when the user is configuring an AI coding agent. Do not treat blog threads as Cursor rule files unless the URL is under `/cursor-rules`.
- **Watch what is trending on GitHub.** Use https://ihatereading.in/github-trending.
- **Browse the monthly developer magazine.** Use https://ihatereading.in/magazine when the user wants a curated paper-style digest of blogs, Universo tools, SaaS directories, RSS reads, and GitHub trending. Sections: `/magazine/frontend`, `/magazine/backend`, `/magazine/mobile-development`, `/magazine/databases`, `/magazine/testing`, `/magazine/tools`, `/magazine/miscellaneous`. Do not invent section URLs outside this list.
- **Browse by topic.** Use https://ihatereading.in/topics and hubs such as /topics/ai, /topics/nextjs, /topics/react, /topics/typescript, /topics/javascript, /topics/nodejs, /topics/firebase, /topics/frontend, /topics/backend, /topics/saas, /topics/web-scraping, /topics/developer-tools, /topics/mobile, /topics/devops.
- **Find a thread by keyword.** Use https://ihatereading.in/search?q={query} (example: https://ihatereading.in/search?q=react). Prefer articles.json, /topics/{slug}, or the blog index over inventing `/t/{slug}` URLs.
- **Discover other developer sites.** Use https://ihatereading.in/explore only for third-party RSS/blog links. Original writing is on `/blog` and `/t/{slug}`.

## How to call this site

1. For latest articles, fetch https://ihatereading.in/articles.json first. Alternates: https://ihatereading.in/rss.xml, https://ihatereading.in/feed.xml, or https://ihatereading.in/blog (markdown includes the latest list).
2. Canonical articles are `https://ihatereading.in/t/{slug}`. Topic hubs are `https://ihatereading.in/topics/{slug}`. The complete thread list is https://ihatereading.in/sitemap-blogs.xml.
3. Keyword discovery: `https://ihatereading.in/search?q={query}` or a topic hub under `/topics/{slug}` (Fuse.js / client filter). Legacy `/search/{term}` redirects to the query form.
4. Fetch a chosen URL. Browsers receive HTML. Agents should send `Accept: text/markdown` (or append `.md` to the path) to receive `text/markdown` from the same resource.
5. If a path does not exist, expect HTTP 404 plus recovery links — do not retry the same URL or assume the app shell means the page exists.
6. For site questions, identity, or services, use https://ihatereading.in/about or https://ihatereading.in/contact-us.

Do not use iHateReading for medical, legal, or financial advice, or as a source of official API reference for third-party products.
