How to wire nflow lint into VS Code and Zed as a manually invoked task. The current CLI does not expose an LSP — these snippets run lint when you invoke the task explicitly.
First install nflow (for example, with `go install github.com/nexssp/flow/cmd/nflow@main`) and make sure it is available on the editor's task PATH.
Run the task from the repository workspace so relative @include and @require paths resolve as expected. The task runs nflow lint <file.nflow> — it checks preprocessing, parsing, and known atom/modifier names, not runtime input values or security properties.
Create .vscode/tasks.json in the repository:
{
"version": "2.0.0",
"tasks": [
{
"label": "nflow: lint current file",
"type": "process",
"command": "nflow",
"args": ["lint", "${file}"],
"options": { "cwd": "${workspaceFolder}" },
"presentation": { "reveal": "always", "panel": "dedicated" }
}
]
}Open a .nflow file, then select **Terminal → Run Task → nflow: lint current file** (or use the Command Palette and choose **Tasks: Run Task**). This uses a process task and a separate argument for ${file}, so the active file path is not interpolated into a shell command.
Create .zed/tasks.json in the repository:
[
{
"label": "nflow: lint current file",
"command": "nflow",
"args": ["lint", "$ZED_FILE"],
"cwd": "$ZED_WORKTREE_ROOT",
"save": "current",
"use_new_terminal": false,
"reveal": "always",
"show_command": true
}
]Open a .nflow file, invoke **task: spawn**, and choose **nflow: lint current file**. Keeping the path as one args element follows Zed's documented quoting guidance for paths containing spaces.
These configurations run lint only when you explicitly invoke the task. The current CLI does not expose an LSP or an on-save diagnostic service, so neither snippet runs automatically on save or publishes diagnostics into the editor's Problems panel. Lint output is shown in the task terminal.
To check the user-facing examples, run nflow lint ./examples/.... nflow lint ./... also discovers internal developer sources and extension fixtures, some of which currently produce context-specific diagnostics; task examples separately executes the curated runnable flows.