APEQS for VS Code
Lightweight, text-based requirements management. Embedded in your code, tracked in Git.
Write requirements as lightweight tags in your source files, in any language, and link them to the code that implements and tests them. APEQS validates those links against a project-defined model so traceability stays correct as the codebase evolves. This extension makes it a first-class part of your editor.
The tags themselves — <treqs-element> and <treqs-link> — are treqs, the open textual-requirements format. APEQS is the tooling built on it: this extension, the apeqs CLI and the daemon behind them.
Getting started
- Install from the VS Code Marketplace.
- Add a
ttim.yaml to your project root. This is the TTIM, the Type and Trace Information Model: it declares which element types and link types your project allows.
- Open the project. The extension starts a local
apeqs daemon automatically if the CLI is installed; otherwise point it at a remote daemon via apeqs.daemonUrl.
The status bar shows the daemon connection (with a $(home) indicator when running locally) and the latest check result.
Features
- Traceability at a glance: every requirement shows how many other items link to and from it; click to see the list and jump.
- Readable links: link targets render with their human-readable title inline, so you don't have to resolve IDs by hand.
- Live validation: broken targets, type mismatches, and missing required traces appear in the Problems panel as you type.
- Smart navigation: Go to Definition jumps to the requirement a link points at; Find References surfaces everything that points back.
- Hover previews: see a requirement's content and allowed link types without leaving the file.
- Autocompletion: snippets for requirements and links, suggesting types and targets from your project model.
- Project check: run a full validation pass on demand; findings show up inline.
- List view: browse and filter every requirement in an interactive table.
- Diagrams: render relationships as PlantUML.
- Copilot Chat: ask
@apeqs model-aware questions from the chat panel.
Settings
| Setting |
Default |
Description |
apeqs.daemonMode |
auto |
auto probes daemonUrl, then spawns a local apeqs daemon if needed. remote uses the URL only. local always spawns locally. |
apeqs.daemonUrl |
http://127.0.0.1:7777 |
URL of the APEQS daemon. |
apeqs.daemonAuth.scheme |
none |
Auth scheme: none, bearer, or basic. |
apeqs.daemonAuth.token |
"" |
Token value (Bearer token, or user:pass for Basic). |
apeqs.binaryPath |
(none) |
Absolute path to the apeqs binary. Empty searches PATH and the default install locations. |
apeqs.dimOutlinks |
false |
Visually dim <treqs-link> tags so element bodies read more cleanly. |
apeqs.hideLinkTargets |
false |
Hide the ID in target="…" except on the cursor's line, so the resolved label fits next to the tag. |
apeqs.templatePath |
(none) |
Relative path to the element template folder. |
apeqs.emptyLinesBetweenElements |
1 |
Blank lines between elements when creating multiple at once. |
apeqs.showWhenRightClickEditor |
true |
Show APEQS commands in the editor context menu. |
apeqs.showWhenRightClickExplorer |
true |
Show APEQS commands in the explorer context menu. |
Connecting to a remote daemon
{
"apeqs.daemonMode": "remote",
"apeqs.daemonUrl": "https://apeqs.example.com",
"apeqs.daemonAuth": {
"scheme": "bearer",
"token": "your-token-here"
}
}
Development
Run from source
npm install # also installs client/, server/ and tree-sitter-treqs/, and copies the wasm files
npm run compile # or `npm run watch`
Press F5 in VS Code ("Run Extension") to launch an Extension Development Host with the extension loaded. Edits to client/ or server/ are picked up on the next reload of that window (Developer: Reload Window).
Build and install a VSIX
npm run package # production webpack bundles -> client/dist, server/dist
npx vsce package --no-update-package-json -o apeqs-vscode-dev.vsix
code --install-extension apeqs-vscode-dev.vsix # then reload VS Code
On WSL, run code --install-extension from the WSL shell so it installs into the WSL remote, not Windows.
Tests
npm test # server (mocha + c8), grammar (tree-sitter), client (vscode-test)
cd server && npm test # server only, fastest loop
npm run lint
License
MIT