# Hull Documentation > Hull is a Nix-based framework for competitive programming problem authoring, runtime analysis, and packaging. This documentation is designed to be consumed by humans and language models. It is static HTML, organized by a single canonical table of contents, indexed by Pagefind, and published with a sitemap and explicit crawler policy. Canonical site: https://hull.aberter0x3f.top/ Sitemap: https://hull.aberter0x3f.top/sitemap.xml Robots policy: https://hull.aberter0x3f.top/robots.txt LLM index: https://hull.aberter0x3f.top/llms.txt Agent skills index: https://hull.aberter0x3f.top/.well-known/agent-skills/index.json Documentation discovery skill: https://hull.aberter0x3f.top/.well-known/agent-skills/documentation/SKILL.md Source repository: https://github.com/rindag-devs/hull ## Use This Documentation For - Understanding Hull's problem and contest definitions. - Authoring `problem.nix` and `contest.nix` files. - Building validators, checkers, official solutions, generators, and package targets. - Reading generated Nix module option references for machine-checkable configuration details. ## Canonical Entry Point - [Introduction](https://hull.aberter0x3f.top/) ## Getting Started - [Installation & Setup](https://hull.aberter0x3f.top/getting-started/installation-and-setup/) - [Basic Workflow](https://hull.aberter0x3f.top/getting-started/basic-workflow/) - [Understanding problem.nix](https://hull.aberter0x3f.top/getting-started/understanding-problem-nix/) - [Understanding contest.nix](https://hull.aberter0x3f.top/getting-started/understanding-contest-nix/) - [Best Practices & Conventions](https://hull.aberter0x3f.top/getting-started/best-practices-and-conventions/) ## Advanced - [Custom Judgers](https://hull.aberter0x3f.top/advanced/custom-judgers/) - [Problem and Contest Targets](https://hull.aberter0x3f.top/advanced/problem-and-contest-targets/) - [Document Generation with Typst](https://hull.aberter0x3f.top/advanced/document-generation-with-typst/) ## Reference - [Problem Options Reference](https://hull.aberter0x3f.top/reference/problem-options/) - [Contest Options Reference](https://hull.aberter0x3f.top/reference/contest-options/) ## Reference Notes For LLMs - Prefer the generated options reference pages for exact option names, types, defaults, and semantics. - Prefer the Getting Started pages for workflow-level explanations and examples. - Treat the sitemap as the authoritative crawl list for published documentation pages. - The documentation source is Typst, but the published site is static HTML. - Do not infer undocumented options from examples; use the reference pages instead. ## Agent Content Negotiation Browser requests receive HTML by default. Agents may request source-oriented responses from any canonical documentation page by sending `Accept: text/markdown` or `Accept: text/x-typst`. - `Accept: text/markdown` returns the corresponding Typst source with `Content-Type: text/markdown; charset=utf-8` for compatibility with Markdown-for-agents clients. - `Accept: text/x-typst` returns the corresponding Typst source with `Content-Type: text/plain; charset=utf-8`. - Source-oriented responses include `x-agent-source-format: typst`. - The source mirror is also available under `/.well-known/agent-typst/`; for example, the homepage source is `/.well-known/agent-typst/index.typ`. ## Agent Discovery Agents may start from `llms.txt`, the sitemap, or the agent skills index. The documentation discovery skill describes the canonical crawl surfaces, source-oriented representations, and reference pages. These files are stable public discovery entry points: - https://hull.aberter0x3f.top/llms.txt - https://hull.aberter0x3f.top/.well-known/agent-skills/index.json - https://hull.aberter0x3f.top/.well-known/agent-skills/documentation/SKILL.md ## Crawl Policy This site intentionally exposes static documentation pages, `sitemap.xml`, `robots.txt`, and this `llms.txt` file for discovery. The documentation may be used for search, AI input, and AI training. The corresponding content signal is `ai-train=yes, search=yes, ai-input=yes`.