
Spec-first development for the LLM era.
Requirements Markup Language is an LLM-first requirements format that gives coding agents durable project context — so your intent, constraints, and acceptance criteria stay clear from planning to implementation.
Your LLM writes it. Your code gets better.
An RQML document is organized into 11 mostly optional sections, each capturing a different aspect of your requirements.
<meta>
<title>DriveEasy Car Rental Platform - Software Requirements Specification</title>
<system>DriveEasy</system>
<summary>
A web-based system for searching, reserving, picking up, and returning
rental vehicles across multiple branch locations.
</summary>
<authors>
<author>
<name>Anna Sigurdsson</name>
<role>Product Owner</role>
<org>DriveEasy ehf.</org>
</author>
</authors>
<dates>
<created>2026-01-15</created>
<updated>2026-02-20</updated>
<targetRelease>v1.0.0 - 2026-Q3</targetRelease>
</dates>
<profiles>
<profile id="PROF-GDPR" type="compliance">
<description>GDPR compliance for personal data processing.</description>
</profile>
</profiles>
</meta>
Start right now
Create one
.rqmlfile in your project root (by conventionrequirements.rqml, or a descriptive name likemyapp.rqml)Download
AGENTS.mdto your project root—it tells your LLMs to follow spec-first developmentDevelop with your coding agent of choice and it will use RQML as the source of truth for system intent
Tip: Don't write RQML from scratch. Grab the official VS Code extension on RQML.dev for authoring support, real-time schema validation, spec browsing and export. There's even a built-in agent.
Hello world RQML example
<rqml xmlns="https://rqml.org/schema/2.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://rqml.org/schema/2.1.0
https://rqml.org/schema/rqml-2.1.0.xsd"
version="2.1.0" docId="DOC-HELLO-001" status="draft">
<meta>
<title>Hello World CLI</title>
<system>hello</system>
</meta>
<requirements>
<req id="REQ-HELLO-001" type="FR" title="Print greeting"
status="draft" priority="must">
<statement>
The program MUST print "Hello, world!" to standard output
and exit with status code 0.
</statement>
</req>
</requirements>
</rqml>
Try RQML on your next project.
Put your intent in the repo. Make LLM output calmer, cleaner, and easier to trust. And finally start doing requirements right.