reqlan {
    semantic *engineering* toolset
}
Get started

Why reqlan

Notes apps store paragraphs. reqlan stores handles — requirements as code, built for LLM workflows.

Six ideas and their edges beat forty files. Hand the agent a shaped slice — never the whole repo.

# /rq-search oauth flow
 auth.login
 auth.session
 auth.logout

# not: dump the whole workspace

Write it like you mean it

The language teaches itself — each rule is a valid idea. Flip to example inside any block for a practical slice.

one-liner
one_line_idea an idea is prose after an identifying name
block
block_idea {
    A name followed by curly braces holds a longer body and optional attributes.
    The first unmarked text is the main description.
}
links & attributes
reference_target a named idea other ideas can point at

links_and_attributes {
    Bracket refs like [reference_target] connect ideas in the graph.
    @status draft
    @tags (syntax, reference)
}
imports
import "pythonmodule.py" as importable_python_module

imports {
    You can import [importable_python_module]  arbitrary files, not only .rq.
}
file refs
file_reference {
    Point at a whole file ["./module.py"], a symbol ["./module.py".SessionStore],
    or a named test ["./module.test.py:rejects expired token"].
}
typescript
// rq:["./syntax.rq".comment_reference]
// An rq: comment in TypeScript pins this location back to an idea.
markdown
<!-- rq:["./syntax.rq".comment_reference] -->
An `rq:` comment in Markdown pins this doc back to an idea.
python
# rq:["./syntax.rq".comment_reference]
# An rq: comment in Python pins this location back to an idea.

A slice of a real graph

Imports, file anchors, wikilinks, status, tags, and tests — one idea that tools can find.

from "auth.rq" import login
import "./session.rq" as session

session_refresh {
    refresh tokens rotate on use
    aligns with [session.session_expiry] and [login]
    implemented in ["./src/auth/session.ts".rotateRefresh]
    proven by ["./src/auth/session.test.ts:rejects reused refresh token"]

    @status: in-progress
    @tags: (auth, security)
    @todo: reject reuse of the old refresh token
}

Go deeper

Packages