Members

IdeaFileStatusSummary
cli reqlan rq/ai-support.rq done Headless twin of extension / MCP analysis: [cli_package] ( `reqlan` / `rq` ), same `<base>/.reqlan` index. [commands]: `init` · `parse <file>` · `analyse` / `analyze` · `search <query>` · `export` / `export html`. `--json` for machines; `--cwd` / `REQLAN_WORKSPACE`; `REQLAN_INDEX_PATH` overrides index dir.
skills reqlan rq/ai-support.rq done rq- * skills ( [chat_skill_naming], [cursor_skills_install] ) teach the graph, not the whole repo. Ontology in one breath — this project as example: - [idea] — named unit of intent ( `cli_package`, `skills` ) - [file] / [ideaset] — containers ( `reqlan rq/cli/cli_package.rq`; file = implicit ideaset ) - [base] — `.reqlan` boundary; one ideas index per base - [reference] — `[idea]` / `[[wiki]]` / `["./path".idea]` to ideas and code - [attribute] / [attribute_body] — `@name …`; first unmarked text is the body Prefer focused search / file context / local graph over full dumps ( [ai_integration] ).
special_attributes reqlan rq/ai-support.rq done When creating or updating ideas, skills MUST set: - `@status` — lifecycle ( `draft` | `pending` | `in-progress` | `done` | … ) - `@todo` — open gaps / follow-ups ( bare or with a note ) - `@tests` — quoted test paths that prove the idea ( optional `:test name` suffix ) Do not bury status, todos, or test links in body prose.
brand reqlan rq/brand.rq reqlan has a simple brand . Dark rust ; and aqua blue pallete . Pink for highlights . Logo is nodular graph / crosshair
extension_brand reqlan rq/brand.rq The extension uses the brand logo from ["../site/public/logo.svg"]. PNG is used for marketplace, language file icon, activity bar, README, and chat participant surfaces ( Azure Marketplace rejects SVG ). WebP is generated as a raster fallback.
file_icon reqlan rq/brand.rq the file icon for. rq files should use the reqlan logo.
general_purpose reqlan rq/constitution.rq The language should work in any stack . And ideally , even in non-software development environments .
inspiration reqlan rq/constitution.rq This project draws upon ideas from the following fields: - LLMS - Software development - Obsidian / Personal Knowledge Management systems. - Industrial Control Engineering - Ontology based business information systems
llm_first reqlan rq/constitution.rq The language should be designed to be easy to use with llms. It should be support token minimisation.
mission_statement reqlan rq/constitution.rq This project offers a structred semantic framework for supporting people working with llms to document their semantic requirements as code ; and provide ergonomic consumption and definition of them .
scope reqlan rq/constitution.rq The scope of these requirments spans the entire project , including the language itself , the developer-user tooling , and the reqlan-developer environment .
simplicity reqlan rq/constitution.rq The language should be simple to understand and use , and offer flexibility in the syntax for minimised friction and bp .
supply_chain reqlan rq/constitution.rq The supply chain for this project should be open and transparent, minimising risk and immature dependencies.
vsc_first reqlan rq/constitution.rq The language should be designed to be easy to use with vscode .
analytical_package reqlan rq/core-architecture.rq `packages/analytical` ( `@reqlan/analytical` ) is the shared requirement graph index and analysis layer. It owns the [indexer]: extracts ideas and edges from Langium ASTs into a sql. js SQLite store ( [workspace_index] ), holds Zustand analytical state, and exposes analysers and an analysis API. Headless entry is [analysis_runtime] via `createAnalysisRuntime` / `WorkspaceIndex`. Consumers: [extension_package] ( thin editor adapter ), [mcp_package], [cli_package]. Depends on [language_package]. Published to npm alongside [cli_package]; version graph role: [package_versioning].
base_containers reqlan rq/core-architecture.rq Ideas are organised in [bases]; each base holds the [ideas_index] store under its `.reqlan` application memory. Discovery and nesting: ["./bases/base.rq".base], ["./bases/base.rq".base_nesting].
cli_package reqlan rq/core-architecture.rq `packages/cli` ( `@reqlan/cli` ) is a Clipanion CLI over [language_package] ( parse ) and [analytical_package] ( `AnalysisApi` for analyse / search ). Entry: [cli_main]. Binary name `reqlan` ( alias `rq` ). Published to npm with language and analytical per [package_versioning] and [distribution.version_management].
extension_package reqlan rq/core-architecture.rq `packages/extension` ( npm `reqlan-extension` ) is the editor product per [distribution.extension_package]. It registers `.rq` language support, TextMate grammars, starts the language client, and owns activity bar, Ideas Summary, chat, skills, and mutation hooks. Ideas index engine lives in [analytical_package] / [indexer]; the extension only hosts a thin VS Code adapter ( [editor_index_adapter] ) for watchers and UI. Host entry: [extension_main]. LSP process entry: [language_server_main]. Depends on [language_package] and [analytical_package]. Follows [extension_architecture.event_driven] and [extension_architecture.state_machine_mindset] ( zustand ) for JS state. This is the one Marketplace / Open VSX shippable; see [package_versioning].
extension_surfaces reqlan rq/core-architecture.rq Product surfaces on [extension_package] are specified in module / feature docs, not here: - Activity bar sidebar: [activitybar.activity_bar] - Composed context model ( any workspace file ): [context_scope_doc.context_scope] - Context scope v2 ( signals, synthesis, show-don ' t-tell widgets ): [context_scope_v2.context_scope_v2] - Webview surfaces ( shared discipline + catalog ): [webview_doc.webview] - Ideas Summary tables / graph webview: [ideas_summary_doc.ideas_summary] - Chat participant `@reqlan` and MCP wrap: [chat_participant_doc.chat_participant], [skills_and_mcp] - Create / split / merge / rename mutation hooks: [mutation_hooks] - Analysers and index behaviour: [graph_analysers]
grammar_and_parser reqlan rq/core-architecture.rq Grammar is Langium ( Chevrotain ), not tree-sitter. Main `.rq` grammar: [reqlan_grammar]. Comment-token grammar for `rq:[…]` in non- `.rq` sources: [comment_grammar]. `langium generate` produces AST / grammar modules and TextMate JSON; TextMate is patched and copied into the extension at build time per [development_build.build_prepare]. Syntax requirements that the grammar must satisfy live in [syntax]; conceptual units in [ontology.idea], [ontology.ideaset], [ontology.reference], [ontology.import_statement]. Services are wired in [language_module].
hierarchy_of_truth reqlan rq/core-architecture.rq Align with [development_core.hierarchy_of_requirements]: - User request trumps these requirements; these requirements trump current implementation. - Language concepts: [ontology]; syntax rules: [syntax]. - Package seams and process topology: this file ( [workspace_packages], [language_runtime] ). - Editor UI and host contracts: extension / module and features- * files ( [product_map] ). - Distribution and publishables: [distribution]; internal vs shippable versioning: [package_versioning].
ideas_index reqlan rq/core-architecture.rq The ideas index is built and maintained by the [indexer] in [analytical_package]. Path: parse with [language_package] → extract ideas / edges → SQLite via [workspace_index]. Application memory: each [bases.base] holds SQLite under `<base>/.reqlan/` ( shared by extension, [cli_package], and [mcp_package] ) — see ["./extension/module/index.rq".application_memory]. Multi-base: a BaseRegistry owns one [workspace_index] per discovered base; the extension adapter routes file events to the owning base. In the editor, [editor_index_adapter] watches `**\*.rq` and forwards changes to the owning base's [workspace_index]; it serves UIs, commands, chat, and analysers. Headless ( MCP / CLI ) uses [analysis_runtime] ( nearest base containing cwd when several exist ). Capability requirements: [graph_analysers.index_ideas], [graph_analysers.index_technology], and sibling analysers in that file. Triggers: [indexer.triggers] and ["./extension/module/index.rq".idea_index_triggers].
language_package reqlan rq/core-architecture.rq `packages/language` ( `@reqlan/language` ) is the canonical language definition. It owns Langium grammars, generated AST and parser, scoped linking, validators, and LSP service providers. Public DI entry is [language_module] via `createReqlanServices`. Consumers: [analytical_package] ( indexer / analysis ), [extension_package] ( LSP ), [cli_package]. Published to npm as a library dependency of [analytical_package] and [cli_package]; not Marketplace-published. See [distribution.version_management] and [package_versioning].
language_runtime reqlan rq/core-architecture.rq Ideaset (language_runtime)
language_server reqlan rq/core-architecture.rq The language server is a separate Node process started by the extension host over IPC ( [extension_main] → [language_server_main] ). It runs [language_module] `createReqlanServices` for live editing: definition, completion, semantic tokens, inlays, document links, validation. It owns open-document language intelligence for `.rq` files ( and related language features ), not the full-workspace SQLite ideas index. Product expectation for LSP navigation and validation: [extension_scope.lsp_support].
mcp_package reqlan rq/core-architecture.rq `packages/mcp` ( `reqlan-mcp` ) is a stdio MCP server over the analytical analysis API — no VS Code host required. Entry: [mcp_main]. Used by Cursor and other MCP clients per [chat_participant_doc.mcp] and [skills_and_mcp.mcp_tools]. Ignored by Changesets and `private` ( not an npm publishable ) per [distribution.version_management].
monorepo reqlan rq/core-architecture.rq The workspace is a pnpm monorepo ( `packages\*`, extension webviews, and `site` ) per ["../pnpm-workspace.yaml"]. TypeScript project references build in order language → analytical → mcp → cli → extension per ["../tsconfig.build.json"]. Living requirements for the product live in this `reqlan rq` folder. Root orchestration ( Langium generate, package builds, Cursor skill sync ) lives in ["../package.json"]. Why libraries are separate packages ( and how Changesets sees them ): [package_versioning].
package_versioning reqlan rq/core-architecture.rq Separate workspace packages exist for build isolation and reuse — not because each ships to every channel. [language_package] and [analytical_package] are leaf libraries shared by LSP, index, MCP, and CLI; they need their own package boundaries for TypeScript project refs and a single grammar / index ownership point. Release-driving channels: - Marketplace / Open VSX: [extension_package] ( `ext/v*` ) - GitHub Pages: [site_package] ( `site/v*` ) - npm registry: [language_package], [analytical_package], and [cli_package] ( `language/v*`, `analytical/v*`, `cli/v*` ) via Changesets `changeset publish` Changesets config is [changeset_config]. It ignores [mcp_package] only. [language_package] and [analytical_package] stay in the Changesets graph so a lib change can bump their versions and patch dependents via `updateInternalDependencies: "patch"` ( including the extension and CLI ). Extension webview folders may be private pnpm members ( e. g. `@reqlan/ideas-summary-webview` ) so Vite / Svelte can own deps; they bundle into extension media and are not Changesets publish targets. Activity-bar UI is not a separate package. json product. Contributors record release intent with a changeset on publishable packages when user-facing behaviour changes; see [distribution.version_management].
product_map reqlan rq/core-architecture.rq Ideaset (product_map)
runtime_topology reqlan rq/core-architecture.rq Two Langium runtimes share [language_package] but not one process. - LSP process: live `.rq` editing intelligence via [language_server_main]. - Analytical [workspace_index] ( extension host via [editor_index_adapter], MCP / CLI via [analysis_runtime] ): full-workspace graph for tables, local graph, chat, MCP. Editor ↔ extension host: VS Code APIs and webview postMessage. Editor ↔ LSP: vscode-languageclient IPC. Attribute catalog and similar custom notifications may sync from the index side into the LSP for completions. Stack sketch: [development_core.stack].
scope reqlan rq/core-architecture.rq These requirements describe the cross-package system architecture of the reqlan monorepo: language definition, language server, ideas index, editor product, and companion tools. They are distinct from [extension_scope.scope], which bounds only the VS Code extension and LSP product surface. Language concepts live in [ontology]; syntax truth lives in [syntax]; editor module contracts live under extension / module. Grouped as [workspace_packages], [language_runtime], and [product_map].
site_package reqlan rq/core-architecture.rq `site` is the marketing / docs Next. js site per [distribution.site_package]. It is off the language-service and ideas-index path. Release-driving publishable alongside [extension_package]; see [package_versioning].
workspace_packages reqlan rq/core-architecture.rq Ideaset (workspace_packages)
atlas reqlan rq/ontology.rq A challenge with navigating complex graphs is that they can be overwhelming. One extension to the product is to have atlases
attribute reqlan rq/ontology.rq attributes are for classification , functional or nonfunctional metadata .
attribute_body reqlan rq/ontology.rq the first attribute in an idea , if not marked otherwise , is the main ' body' attribute . It is unstructured text .
base reqlan rq/ontology.rq A base is a container for ideas, ideasets, and files — the boundary of one ideas graph. Discovery: a directory is a base only when it owns a `.reqlan` application-memory folder. There is no implicit base from a bare workspace folder; the product prompts the user to create `.reqlan` at the workspace-folder root when none exist. Bases may be nested: a child directory with its own `.reqlan` is a separate base; the parent base's index stops at that child boundary. Each base holds its own ideas index under its `.reqlan`. Details: ["./bases/base.rq".base].
cartographic_map reqlan rq/ontology.rq a cartographic map is a visual representation of a graph , optimised / curated by the user for context
configuration reqlan rq/ontology.rq There are multiples scopes for configuration . At the [base] level and at at the [extension] level .
extension reqlan rq/ontology.rq the extension contains all of the actual features
file reqlan rq/ontology.rq files store ideas and form ideasets
grammar_rule reqlan rq/ontology.rq grammar rules describe the syntax features
idea reqlan rq/ontology.rq a reqlan core unit is an idea .
idea_name reqlan rq/ontology.rq the idea name is a string / handle / variable that uniquely identifies the idea ( within the ideaset / file ) . It shouldn't be a reserved keyword .
ideaset reqlan rq/ontology.rq ideasets are namespace containers for ideas .
import_statement reqlan rq/ontology.rq Imports are used to decribe refrences . some [keyword] s are reserved for imports
keyword reqlan rq/ontology.rq as a language , reqlan has some keywords that are reserved in some contexts .
reference reqlan rq/ontology.rq References are used to link ideas to other ideas , files , and symbols .
referenced_files reqlan rq/ontology.rq are non rq files / ideasets that are referenced by ideas , or that reference ideas . these may be shared . they should be captured in the [index]
activity_bar_site_link reqlan rq/phonebook.rq The activity bar Context webview header info control opens phonebook link id `site` per ["./extension/module/activitybar.rq".info_site_link].
extension_readme_links reqlan rq/phonebook.rq The extension VSIX README uses phonebook link ids `site`, `github`, `vsc`, `openvsx`, and `email` for site, repository, marketplace, Open VSX, and contact URLs. Generation is defined in ["./distribution/distribution.rq".extension_readme].
npm_package_readme_links reqlan rq/phonebook.rq Publishable npm package READMEs ( `@reqlan/language`, `@reqlan/analytical`, `@reqlan/cli` ) use the same phonebook link ids as [extension_readme_links]. Generation is defined in ["./distribution/distribution.rq".npm_package_readme].
npm_packages reqlan rq/phonebook.rq Publishable npm packages ( `@reqlan/language`, `@reqlan/analytical`, `@reqlan/cli` ) live under the `packages` key in ["./phonebook.json"]. Package ids are `language`, `analytical`, and `cli`. The site Links section renders them under Packages per ["../site/reqs/core.rq".links] / ["../site/reqs/icons.rq".package_icons]. Typed helpers: `phonebookPackages`, `getPhonebookPackage` in ["../scripts/phonebook.ts"].
phonebook reqlan rq/phonebook.rq Canonical project links and publishable npm package URLs live in ["./phonebook.json"]. Modules that need contact, repo, marketplace, or npm package URLs should read from there instead of hardcoding values. Typed access is shared via ["../scripts/phonebook.ts"] for the site and extension README generator.
phonebook_icons reqlan rq/phonebook.rq Icon sets and lookup URLs live under the `icons` key in ["./phonebook.json"]. Each link or package icon references a set id ( `simple-icons`, `mdi`, … ) and slug `name` from that set's catalog. Search a set at its `search` URL when renaming or replacing icons. The site renders icons with Iconify via the packages listed in each set's `package` field per ["../site/reqs/icons.rq"]. Registry: ["../site/src/lib/phonebook-icons.ts"].
root_readme_links reqlan rq/phonebook.rq The repository README uses phonebook link ids `site`, `github`, `vsc`, `openvsx`, and `email` for site, repository, marketplace, Open VSX, and contact URLs. Generation is defined in ["./distribution/distribution.rq".root_readme].
show_dont_tell reqlan rq/ui.rq copy should be minimal and user facing. no long lists, no avoidable labels.