Skip to main content

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.

RQML is the missing piece in your LLM workflow.

RQML workflow illustrating goals, requirements, and verification

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>
<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

  1. Create one .rqml file in your project root (by convention requirements.rqml, or a descriptive name like myapp.rqml)

  2. Download AGENTS.md to your project root—it tells your LLMs to follow spec-first development

  3. Develop 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.