# https://www.robotstxt.org/robotstxt.html
#
# Content-Signal (https://contentsignals.org) states what our content may be
# USED for, which is a separate question from who may CRAWL it:
#
# search=yes index it and link to it
# ai-input=yes ground an answer in it, with attribution — this is the point
# ai-train=no do not train or fine-tune a model on it
#
# This line is ours on purpose. Cloudflare's "Managed robots.txt" toggle emits
# an equivalent signal, but it emits it alongside `Disallow: /` for ClaudeBot,
# GPTBot, Google-Extended, Applebot-Extended, CCBot, Amazonbot, Bytespider and
# meta-externalagent — and a named group beats `User-agent: *`, so every
# assistant we want citing us reads "crawl nothing" and obeys. Keeping the
# policy here means the training reservation survives that toggle being off.
# Any restriction expressed here is an express reservation of rights under
# Article 4 of EU Directive 2019/790.
User-agent: *
Content-Signal: search=yes,ai-input=yes,ai-train=no
Allow: /
Disallow: /admin/
Disallow: /instructor/
Disallow: /letter_opener/
Sitemap: https://mykahal.com/sitemap.xml
# AI crawlers and assistants are welcome on the public pages. Start with the
# structured summary rather than the rendered HTML — it is cheaper for both of us.
# Product summary: https://mykahal.com/llms.txt
# Crawler policy: https://mykahal.com/ai.txt
# OpenAPI 3.1 spec: https://mykahal.com/openapi.json
# Developer docs: https://mykahal.com/developers