LumenFlow is friction-free for any AI coding assistant. If your AI can read project files, it can use LumenFlow.
Universal Entry Points
Every project includes plain markdown files that work with ANY AI: - AGENTS.md — Universal
agent instructions - LUMENFLOW.md — Workflow fundamentals - .lumenflow/constraints.md —
Non-negotiable rules - .lumenflow/skills/ — Canonical skill catalog
No Vendor Lock-in
Point any AI at these files and it understands the workflow. No special setup, no proprietary
formats, no per-vendor feature gap.
lumenflow init
There is no --client/--vendor flag any more — lumenflow init always scaffolds exactly these
universal surfaces, for every project, regardless of which AI tool you use.
Every consumer of LumenFlow — including LumenFlow’s own first-party desktop app — reads this same
public contract. There is no private field, no app-only side-channel, and no vendor-specific
capability you are missing out on by adapting the contract yourself instead of waiting for a
vendor integration LumenFlow will not ship. Enhanced first-party experiences are built by layering
the control plane (@lumenflow/control-plane-sdk, hosted telemetry, hosted A2A transport) on top
of the exact same public surfaces documented here — never by reading something a third-party
integration cannot also read.
LumenFlow does not generate, own, or maintain any vendor-specific projection (.claude/,
.codex/, .cursor/, .windsurf/, .clinerules, .aider.conf.yml, or equivalents). If your repo
has one of these from an older LumenFlow version, it is a snapshot — your file now, never
touched by LumenFlow again. Three integration depths, in increasing order:
Read the universal files directly. Any tool that reads a repo-root instruction file (most
agentic CLIs and IDEs do) needs nothing further — point it at AGENTS.md and LUMENFLOW.md.
Fold them into your tool’s native mechanism. If your tool expects its own file (a
.cursorrules, a CLAUDE.md, a system-prompt include), concatenate or symlink the universal
files into it. That file is yours to maintain; LumenFlow will never write to or overwrite it.
Wire a hook layer, if your tool supports one, for enforcement or fast feedback. See the
copyable example below.
This is the shape of the hook LumenFlow itself used to generate for Claude Code (WU-1367, retired
as a product feature in WU-3543 — the pattern below is now something you own and adapt):
// Example hook-registration format (Claude Code's shape shown — adapt the// wiring syntax to your own tool; the underlying script logic is portable){ "hooks": { "PreToolUse": [ { "matcher": "Write|Edit", "hooks": [{ "type": "command", "command": "./hooks/validate-worktree-path.sh" }], }, ], },}
#!/bin/bash# Illustrative sketch of the hook script's decision logic.set -euo pipefail# 1. Parse the file path your hook mechanism handed you.FILE_PATH="$(read_file_path_from_hook_payload)"# 2. Read LumenFlow's own claim state — do not maintain a second source of truth.if [[ -f ".lumenflow/state/wu-events.jsonl" ]] && grep -q '"claimed_mode":"branch-pr"' .lumenflow/state/wu-events.jsonl; then exit 0 # branch-pr mode is exemptfi# 3. Graceful degradation: if LumenFlow state can't be determined, allow.if [[ ! -d ".lumenflow" ]]; then exit 0fi# 4. Your enforcement decision here (block outside worktree, require a# claimed WU, etc.).exit 0
A legacy agents.clients.<id>.enforcement block in workspace.yaml still parses without error
(the schema tolerates it with a deprecation warning) — reuse those same flag names in your own
adapter if you want the config surface to stay familiar, or drop the block once you’ve migrated.
Generated agent overlays can be routed through a vendor-neutral model contract:
model_profile: fast | balanced | deepreasoning_effort: low | medium | high | xhigh
Shared agent definitions express intent with those semantic fields. If you maintain your own
vendor-specific overlay, translate model_profile/reasoning_effort into your tool’s native
routing fields (e.g. a model + effort pair, or a model_reasoning_effort field) yourself.
Workspace owners can set a per-client profile map in workspace.yaml as a reference for their own
adapter to read:
Creates AGENTS.md, LUMENFLOW.md, .lumenflow/, and agent onboarding docs (including CLI command reference) — works with any AI that can read files. Use --minimal to skip onboarding docs.
Adapt it to your tool
Read the Universal Contract section above and fold the universal
files into your tool’s native instruction/rules/hook mechanism. There is no --client flag —
every project gets the same universal scaffold.
Want to add support for another AI assistant? There is no registry to update — adapt the contract
into your tool following the three integration depths above, then contribute the pattern back:
Write up your adapter (hook script, rules-file mapping, or both) as a short guide.
Test it against a real project: lumenflow init followed by your own adapter setup.