Disabling and Uninstalling LumenFlow
LumenFlow is designed to be easy to remove. Adoption trust depends on a credible opt-out. Two first-class commands handle it:
pnpm lumenflow:disable/pnpm lumenflow:enable— reversible enforcement opt-outpnpm lumenflow:uninstall— destructive eject with dry-run default
Reversible Opt-Out
Section titled “Reversible Opt-Out”Use lumenflow:disable when you want to temporarily turn enforcement off without removing any
files. It only flips the enforcement flags to false in workspace.yaml via config:set — since
WU-3543, LumenFlow no longer generates or mutates hooks at all; .claude/ (and other vendor
config) is fully user-owned, so any consumer-owned hook layer must read the flipped workspace.yaml
flags itself. Prior enforcement state is saved to .lumenflow/state/enforcement-prior.json.
-
Disable
Scope to one client:
-
Re-enable later
Prior flag values are restored. If no prior state exists, all enforcement flags default to
true(safe default).
lumenflow:disable is idempotent — running it twice produces no diff.
Full Uninstall
Section titled “Full Uninstall”lumenflow:uninstall removes LumenFlow-generated files from your project. It defaults to
dry-run — you must pass --confirm to actually delete.
Prints the planned deletions without modifying disk. Run this first to inspect scope.
Actually removes files. Prints a restore hint (git checkout -- or git revert).
Uninstall Flags
Section titled “Uninstall Flags”| Flag | Effect |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| --confirm | Actually delete (without this, dry-run). |
| --keep-history | Preserve docs/operations/tasks/wu/ and .lumenflow/state/packs/software-delivery/stamps/. |
| --keep-config | Preserve workspace.yaml and .lumenflow/constraints.md. |
| --client <name> | Accepted for backward compatibility only — no longer narrows scope (WU-3543 retired the last client-specific manifest entries, so every entry now applies regardless of --client). |
| --json | Emit machine-readable JSON output. |
What Gets Removed
Section titled “What Gets Removed”LumenFlow classifies files into these categories, and uninstall acts accordingly:
| Category | Example | Action |
| -------- | ------------------------------------------------------------------------------------ | -------------------------------- |
| hook | .husky/pre-commit | Delete |
| ci | .github/workflows/lumenflow-ci.yml | Delete |
| state | .lumenflow/state/packs/software-delivery/ (and legacy .lumenflow/state/) | Delete |
| stamp | .lumenflow/state/packs/software-delivery/stamps/ (and legacy .lumenflow/stamps/) | Delete (unless --keep-history) |
| config | workspace.yaml, .lumenflow/constraints.md | Delete (unless --keep-config) |
| docs | docs/operations/tasks/wu/ | Delete (unless --keep-history) |
Removing the npm Packages
Section titled “Removing the npm Packages”Uninstall does not touch node_modules or package.json dependencies. Remove the packages
separately:
Restore After Uninstall
Section titled “Restore After Uninstall”Because all deletions happen in your working tree, git is the restore path:
If you ran uninstall in a throwaway branch, simply discard the branch.