EDGECHAT / DOCS

Tests

Every test run on EDGEchat so far: how to run it again, what to expect, and what it showed. Each phase ends with a test on the dev PC (design, “Phases”); new tests are added here when they are first run.

Last updated 2026-10-23.

At a glance

Test Kind Phase Last run Result
Validate CLI P0, P1 2026-10-23 Pass, one expected warning
Install from the checkout CLI, scratch config P0, P1 2026-10-23 Pass
Install from GitHub CLI, scratch config P1 2026-10-26 Pass, also in one command
Update from GitHub CLI, scratch config P1 2026-10-21 See the section
Plugin servers beside servers added by hand CLI, scratch config P0, P1 2026-10-21 Seen, recorded in the design
Unset options CLI, scratch config P1 2026-10-16 Seen: empty string
redcode server By hand, over stdio P1 2026-10-27 Pass (0.4.0, no wrapper); mesh_items misses outfit sets
edgedeck server through the wrapper By hand, over stdio P1 2026-11-02 Pass (0.30.0)
edgemat server By hand, over stdio P1 2026-10-23 Pass
rednode with no token CLI, game running P1 2026-10-16 Seen: HTTP 401
OAuth sign-in for a plugin server CLI, scratch config; then in the game P4 2026-10-26 Seen with a stand-in; against REDnode 0.40.1 in game: pass
Plugin sign-in in VS Code By hand, in a session P4 2026-10-26 Pass
P1 test in VS Code with the game By hand, in a session P1 2026-10-21 Pass; the ask before deploy failed, fixed in 0.0.5 (asks before changes)
Asks before changes By hand, in a session P1 2026-10-23 Pass
Changing the game folder By hand, in a session P3 2026-10-23 Pass after a restart
new-mod in the game By hand, in a session P3 2026-10-26 Pass
init-project on a real project By hand, in a session P3 2026-10-26 Pass
Clean install By hand, fresh PC or account P4 2026-10-26 Pass
Swap and restore in the game By hand, in a session P4 2026-11-02 Pass
EDGEkit one-click setup By hand, in EDGEkit P4 2026-10-26 Pass, after EDGEkit changed to the install dialog
Evals: archives-and-cr2w claude plugin eval P2 2026-10-23 Skill fires; Δ 0.00
Evals: rednode-mods claude plugin eval P2 2026-10-25 Δ +1.00; with new-mod, mean Δ +0.95
rednode-mods in the game By hand, in a session P2 2026-10-23 Pass
Evals: wolvenkit-projects claude plugin eval P2 2026-10-23 Δ +0.33
Evals: edge-tools claude plugin eval P3 2026-10-26 Skill fires 9 of 9; Δ +1.00
Evals: the whole suite claude plugin eval P2, P3 2026-11-02 0.1.1: 15 cases, all pass; mean Δ +0.73

A scratch config has no Claude login, so the CLI tests check how the plugin installs and starts its servers, not what Claude does with it. The P1 test on 2026-10-21 was the first run of a skill in a session.

A scratch config

CLAUDE_CONFIG_DIR points Claude Code at another settings folder, so a test never touches your own plugins, servers or login. Every CLI test below starts like this (Git Bash):

export CLAUDE_CONFIG_DIR=<an empty scratch folder>

CLI

Validate

claude plugin validate .
claude plugin validate .claude-plugin/plugin.json
claude plugin validate skills --strict

Last run 2026-10-25 with Claude Code 2.1.310, at 0.0.10: pass, the same one warning, plus two new “plugin directory” warnings that do not change the result: no icon (ICON_MISSING) and no privacyPolicyUrl (PRIVACY_URL_MISSING, since rednode is a remote server). Run 2026-10-23 with 2.1.302, at 0.0.5: pass, the one warning. First run 2026-10-16 with 2.1.299.

Check Expected
. (the marketplace manifest) Passes with one warning: CLAUDE.md at the plugin root is not loaded as project context. That file is for sessions working on this repo, so the warning is expected and --strict fails on it
.claude-plugin/plugin.json The same one warning
skills --strict Passes

In P0, marketplace.json failed --strict until it had a top-level description.

Install from the checkout

claude plugin marketplace add "<path to this checkout>"
claude plugin install edge@edgemodders
claude plugin details edge@edgemodders
claude plugin configure edge@edgemodders
claude mcp list

Last run 2026-10-23 at 0.0.5 with Claude Code 2.1.302: pass: “6 userConfig options not yet set”; details lists the four servers, always-on cost about 185 tokens; configure lists the six options, gemini_api_key and openai_api_key sensitive; mcp list connects redcode, edgedeck and edgemat (rednode refused, game closed). Run 2026-10-21 at 0.0.2 with the results below. First run 2026-10-16 at 0.0.1, with the same results less edgedeck and its option.

Check Expected
Install “Successfully installed plugin: edge@edgemodders (scope: user)” and “4 userConfig options not yet set”
details edge 0.0.2; skills init-project, setup; MCP servers rednode, redcode, edgedeck; always-on cost about 150 tokens
configure game_path, rednode_token (sensitive), redbridge_exe, edgedeck_library, all optional and not set
mcp list plugin:edge:redcode ... Connected and plugin:edge:edgedeck ... Connected, each through its wrapper under the checkout’s path. plugin:edge:rednode connects only while the game runs (see rednode with no token)

With a local marketplace the plugin is read from the checkout (CLAUDE_PLUGIN_ROOT is the checkout itself), and the checkout’s path has spaces: redcode still connects.

Install from GitHub

What a user does. Needs the commit pushed.

claude plugin marketplace add Edgemodders/EDGEchat
claude plugin install edge@edgemodders
claude mcp list

One command does both, as the README gives it: claude plugin install edge --marketplace Edgemodders/EDGEchat, with --config <key>=<value> for settings. Run 2026-10-26 in a scratch config, with Claude Code 2.1.310 and --config game_path=...: pass. It added the marketplace in user settings, installed 0.0.14 at user scope, saved game_path, and said “4 userConfig options not yet set”.

Run 2026-10-17 at 8fd75a2, just after the repo was renamed to EDGEchat: pass. redcode connects; rednode is ECONNREFUSED with the game closed.

First run 2026-10-16 at 4f07db8, as Edgemodders/EDGEplugin: the same results as from the checkout; the plugin runs from <config>/plugins/cache/edgemodders/edge/0.0.1/, and redcode connects from there.

Update from GitHub

What an existing user sees when a release adds a server and an option. Install the old version from GitHub first, push the new one, then update.

claude plugin marketplace add Edgemodders/EDGEchat     # before the push: installs the old version
claude plugin install edge@edgemodders
# push the new version, then:
claude plugin marketplace update edgemodders
claude plugin update edge@edgemodders
claude plugin details edge@edgemodders
claude mcp list

First run 2026-10-21, 0.0.1 to 0.0.2 (5dbcc7c), Claude Code 2.1.302: pass, with one gap.

Check Seen
plugin update “Plugin “edge” updated from 0.0.1 to 0.0.2 for scope user. Restart to apply changes.”
details edge 0.0.2, MCP servers rednode, redcode, edgedeck
mcp list redcode and edgedeck Connected from <config>/plugins/cache/edgemodders/edge/0.0.2/
configure The new edgedeck_library listed, not set
The gap The update says nothing about the new option, unlike install (“N userConfig options not yet set”). Whether the form opens after an update in VS Code is not seen yet. A new option a server cannot do without must say so in the release notes and in /edge:setup

Plugin servers beside servers added by hand

Run 2026-10-16 in P0, on a throwaway copy of the plugin. Results, recorded in the design’s facts:

Setup claude mcp list showed
Plugin installed plugin:edge:redcode and plugin:edge:rednode: plugin servers are named plugin:<plugin>:<server>
Plugin installed, plus claude mcp add --transport http --scope user rednode http://127.0.0.1:41820/mcp ... Only the hand-added rednode; the plugin’s copy is not listed. After claude mcp remove rednode -s user, plugin:edge:rednode is back
Plugin 0.0.2 installed, plus claude mcp add --scope user edgedeck -- npx -y @edgemodders/edgedeck-mcp@0.27.3 (run 2026-10-21) Both plugin:edge:edgedeck and edgedeck, each Connected: a stdio server added by hand runs beside the plugin’s, so Claude would see every tool twice. /edge:setup finds it
Working inside a folder with the servers in a root .mcp.json The servers also show as that folder’s project servers, “Pending approval”. With the servers inline in plugin.json, they do not

Unset options

Run 2026-10-16 in P1. A test server that writes its argv and environment to a file, with --game ${user_config.game_path} in its args and REDCODE_GAME_PATH, REDBRIDGE_EXE from options in its env.

Options The server got
Not set --game "", REDCODE_GAME_PATH="", REDBRIDGE_EXE=""
game_path set with claude plugin configure edge@edgemodders --values-stdin The path in both places; REDBRIDGE_EXE still ""

Also seen: a server that uses an option userConfig does not declare is dropped, and validate says so. CLAUDE_PLUGIN_ROOT and CLAUDE_PLUGIN_DATA are in every server’s environment.

By hand

redcode server

Speaks MCP to the server directly, with the plugin’s options empty as when they are unset. Needs Node.js, the game and REDbridge, found from REDcode’s VS Code settings. From plugin 0.1.1 the plugin starts redcode-mcp 0.4.0 with npx alone; until then it went through scripts edcode-mcp.cmd, which cleared empty options.

node tools/test/mcp-probe.cjs --empty REDCODE_GAME_PATH --empty REDBRIDGE_EXE "npx -y @edgemodders/redcode-mcp@0.4.0" bridge_info

Last run 2026-10-27 with redcode-mcp 0.4.0, no wrapper: pass, REDbridge 0.11.0 (WolvenKit 10.0.0, from REDcode’s redcode.bridgePath), game 2.5 loaded, 57 archives, 592,071 files; exit 0. Earlier: 2026-10-23 through the wrapper with 0.3.0, pass; 2026-10-16 with 0.2.0, pass.

Run Expected
npx directly, both options empty (0.4.0) gameLoaded: true, the bridge and game taken from REDcode’s settings; exit 0. The log names both
The same with 0.3.0 or older Fails: “The argument ‘file’ cannot be empty. Received ‘’”; exit 1. Why the wrapper existed until 0.1.1 (design)

mesh_items (new in 0.4.0), checked 2026-10-27 through a small MCP client in the same way, game 2.5, REDbridge 0.11.0:

Mesh Seen
basecharactersgarmentplayer_equipment eets1_055_shoe__converses1_055_pma_shoe__converse.mesh (the tool’s example) Items.CasualShoes_01_basic_01 (“Sunny Ammo synthetic high-tops”) and more, each with its .app look and entity appearances
The cop jacket’s t2_064_pwa_jacket__t2_player_heavy_02.mesh (the archives-and-cr2w chain) items: [], looks: [], though outfitset_01.app shows it in appearances.55 and .57. Reported: REDcode#17

edgedeck server through the wrapper

Speaks MCP to the server directly and calls edgedeck_list, which only reads. Needs Node.js 20 or newer. With options set, it makes an empty library in the folder it is given, so give it a scratch folder.

node tools/test/mcp-probe.cjs --empty EDGEDECK_LIBRARY --empty EDGEDECK_GAME "scripts\edgedeck-mcp.cmd" edgedeck_list
EDGEDECK_LIBRARY='<scratch>\deck lib (x86)' EDGEDECK_GAME='<game folder>' node tools/test/mcp-probe.cjs "scripts\edgedeck-mcp.cmd" edgedeck_list

Last run 2026-11-02 with edgedeck-mcp 0.30.0, both options empty: pass, the default library (one mod now), deploy, undo and remove still flagged. Before that 2026-10-27 with 0.29.1: pass. Both options empty: the default library %USERPROFILE%EDGEdeck (empty on the dev PC now: no mods), game 2.5. A scratch library deck lib (x86) with the game folder: no mods, and the folder gets library. edgedeck_deploy, edgedeck_undo and edgedeck_remove still carry anthropic/requiresUserInteraction. Earlier: 2026-10-23 with 0.28.0, pass; 2026-10-21 with 0.27.3, pass.

Run Expected
Both options empty The default library in %USERPROFILE%\EDGEdeck: the dev PC’s mods, starting [x] archivexl 1.26.8
Library only, a scratch folder no mods, and the folder gets a library folder
Library with spaces and parentheses, plus the game folder The same, in that folder

What the first runs found, and why the wrapper is written as it is:

Tried Seen
The folders as args in plugin.json, through the probe: npx ... --library "" --game "" The server got the quotes: mkdir '...\""\library'. The probe’s own quoting may add to it, but arguments through cmd and npx are fragile, so the plugin passes variables
The wrapper with npx ... !ARGS! (delayed expansion) The default library, whatever was set: npx.cmd got the text !ARGS!. The wrapper’s own echo !ARGS! showed the right value, which hid it
endlocal & npx ... -- %ARGS% Works: %ARGS% is expanded before npx.cmd runs
The probe running a wrapper from a folder with a space in its name No answer, for redcode-mcp.cmd too: the probe’s quoting from Git Bash. Claude Code starts both wrappers from such a folder (install from the checkout)

edgemat server

Speaks MCP to the server directly, with the plugin’s options empty. Needs Node.js 20 or newer. mat_library with no arguments only reads.

node tools/test/mcp-probe.cjs --empty EDGEMAT_GAME_PATH --empty REDBRIDGE_EXE --empty GEMINI_API_KEY --empty OPENAI_API_KEY "npx -y @edgemodders/edgemat-mcp@0.3.1" mat_library
node tools/test/mcp-probe.cjs --empty GEMINI_API_KEY --empty OPENAI_API_KEY "npx -y @edgemodders/edgemat-mcp@0.3.1" mat_generate '{"words":"red leather"}'

First run 2026-10-23 with edgemat-mcp 0.3.1: pass.

Run Expected
mat_library, every option empty The library’s counts (17,734 setups on the dev PC), “matchesGame: not checked (the bridge is not running)”, cache %LOCALAPPDATA%\EDGEmat; exit 0. Empty variables are taken as unset
mat_generate, no key “No image service key: set GEMINI_API_KEY or OPENAI_API_KEY …”; exit 1, and no network call

rednode with no token

Seen 2026-10-16 while the game ran, plugin installed in a scratch config with no rednode_token:

plugin:edge:rednode: http://127.0.0.1:41820/mcp (HTTP) - ✘ Failed to connect — Server rejected the configured Authorization header (HTTP 401). ... {"error":"A valid token is required"}

With the game closed it is ECONNREFUSED instead. /edge:setup tells the two apart this way.

OAuth sign-in for a plugin server

Whether a plugin’s HTTP server gets Claude Code’s OAuth sign-in, for connecting to REDnode by approving in the game instead of pasting a token (REDnode#19). Run 2026-10-26 with Claude Code 2.1.310 in a scratch config: a stand-in server on 127.0.0.1:41899 that answers /mcp with 401 and WWW-Authenticate: Bearer resource_metadata="...", serves the two .well-known documents and /register, and logs every request; a scratch plugin whose only server is {"type": "http", "url": "http://127.0.0.1:41899/mcp"}.

Step Seen
claude mcp list, the same URL also added by hand Only the hand-added server listed, “Needs authentication”: it hides the plugin’s
claude mcp list, plugin only plugin:otest:srv ... ! Needs authentication. Requests: POST /mcp, then both .well-known documents
claude mcp login plugin:otest:srv, stdin not a terminal POST /register with client_name “Claude Code (plugin:otest:srv)” and a http://localhost:<port>/callback redirect; prints the authorize URL (PKCE S256, state, resource); then stops: “stdin isn’t a terminal”
Token exchange Not run: needs an interactive sign-in. Test it against REDnode’s build

Then against REDnode itself, 2026-10-26, by the user on the dev PC: game 2.5, REDnode 0.40.0, then 0.40.1. REDnode’s test “MCP sign-in: test” in its docs/mcp.md, with a header-less rednode-signin added by hand beside the plugin’s (which still sends the token). Pass on 0.40.1, every step: authenticate, the same code in the browser and the game’s Connect window, Allow, game_state answered, Connected assistants listed it, still connected after a game restart, Revoke, Deny, a request lapsing after 2 minutes. On 0.40.0, signing in again after Revoke failed with “Unknown client”; 0.40.1 fixed it (REDnode#19, closed).

Seen What it means for EDGEchat
After a Revoke, Claude Code shows the server connected until its next request, which gets a 401 /edge:setup should take “connected” with a failing call as “signed out”: authenticate again
A plain {"type": "http", "url": "http://127.0.0.1:41820/mcp"} signs in by itself The plugin can drop rednode_token and the Authorization header once REDnode 0.40.1 is released
Whether the VS Code extension’s /mcp offers Authenticate Yes: seen in the plugin sign-in in VS Code

Plugin sign-in in VS Code

The plugin’s own rednode (0.0.13, the URL alone) signing in from the VS Code extension, then /edge:setup with all four servers. Run 2026-10-26 by the user on the dev PC: plugin 0.0.13 from GitHub, game 2.5, REDnode 0.40.1, the hand-added rednode removed first (claude mcp remove rednode -s user), game_path set back to the 2.5 folder. Pass.

Step Seen
/mcp before signing in plugin:edge:rednode with Authenticate, and also Reconnect (the user’s recollection)
Authenticate The browser and the game’s Connect window showed the same code; Allow signed in
/edge:setup All four connected. rednode: REDnode 0.40.1, main menu, overlay interactive. redcode: REDbridge 0.10.0 reporting WolvenKit 10.0.0, 57 archives, 592,071 files (2.5). edgedeck: library C:\Users\VYRAL\EDGEdeck, no mods, game 2.5. edgemat: library built, 17,867 setups. No EDGE server added by hand

Found on the way: the plugin’s settings form in VS Code has its Save configuration button below the fold with five options, and the user missed it, so game_path stayed on the 2.31 backup. It was set with claude plugin configure edge@edgemodders --values-stdin instead (a JSON object of strings on stdin; options left out keep their values). The README and /edge:setup now say to scroll down to the button.

P1 test in VS Code with the game

The test that ends P1 (design). Needs your own Claude Code login, so it runs in your real config.

  1. Remove a rednode added by hand, which hides the plugin’s: claude mcp remove rednode -s user.
  2. In the VS Code extension: /plugins, add the marketplace Edgemodders/EDGEchat, install edge.
  3. Start the game and load a save. Open the REDnode launcher (F10 for REDnode’s overlay, then the REDNODE tab at the bottom left), and its Settings panel with the gear at the right of the Theme row (REDnode 0.32.2 or newer; before that the switches were in the launcher itself): MCP server on, Copy setup. Do not run the copied command. Put only the token (after Bearer ) in the plugin’s rednode_token: the gear on the edge row.
  4. Start a new session and run /edge:setup.
Check Expected
The settings form Opens after install with the four options
/edge:setup A table: rednode connected with the game state, redcode connected with REDbridge’s version and the archive count, edgedeck connected with the mods
The tool names mcp__plugin_edge_rednode__*, mcp__plugin_edge_redcode__*, mcp__plugin_edge_edgedeck__*
api_call, edgedeck_deploy, edgedeck_undo Ask before they run (now its own test, asks before changes)

First run 2026-10-21, plugin 0.0.2 installed from GitHub on a second PC (the user’s laptop, with the game, EDGEdeck and REDcode’s REDbridge), in the VS Code extension. Steered from the dev PC’s session, which could not run /plugins through Remote Control (“isn’t available in this environment”), so the user installed it locally. Pass, one check not seen.

Check Seen
The settings form Pass: opened after install with the four options, empty
/edge:setup, game closed, options empty A correct table: edgedeck connected (18 mods, frameworks line “game 2.31”); redcode started (REDbridge 0.10.0, WolvenKit 9.1.0) with no game folder and 0 archives, and the next step named the right folder, the one EDGEdeck uses; rednode refused, “start the game”. It found edgemat added by hand and said it duplicates nothing. It changed nothing
/edge:setup after setting game_path and rednode_token, game at the main menu Pass: all three connected. rednode: REDnode 0.26.15, main menu, overlay interactive. redcode: REDbridge 0.10.0, 57 archives, 583,798 files. edgedeck: 18 mods, 15 on
The tool names Not looked at; the skill called each server’s tools, so they loaded
Asks before api_call, deploy, undo Fail for deploy. Asked to deploy, Claude called edgedeck_deploy with no prompt; only EDGEdeck’s refusal while the game runs stopped it (that refusal comes from inside the deploy, so the call was made). Whether api_call prompted was not noted. The session’s permission mode was not reported; auto mode is the likely reason. Fixed in the servers: see asks before changes
An approval step for the servers None: the servers connected without asking (the user’s recollection)

Found on the way: the user did not know where “the REDNODE tab” was. 0.0.3 names the REDnode launcher everywhere. redcode did not fall back to REDcode’s VS Code setting on that PC (whether REDcode’s setting is set there, or the editor was EDGEkit, is not known), so game_path was needed.

Changing the game folder

Run 2026-10-23 on the dev PC, plugin 0.0.8, game closed. The game had updated to 2.5, which the EDGE tools do not support yet, so the user pointed the tools at a backup of 2.31. Pass once the plugin’s option was changed and Claude Code restarted.

Step Seen
REDcode’s redcode.gamePath in VS Code set to the backup, plugin’s game_path still the 2.5 folder redcode, edgedeck: still the 2.5 folder. The plugin’s game_path comes first
Plugin’s game_path changed in /plugins, no restart Saved in settings.json; the servers still on the 2.5 folder: they read it only at start
After a restart, /edge:setup All on the backup. redcode: 57 archives, 583,798 files (592,071 on 2.5). edgedeck: 12 mods, 7 on, frameworks line “game 2.31 · 2 updates”, the mods shown as deployed. edgemat: 17,734 setups, built 2026-10-21. rednode: refused, game closed
A session started before the update to 0.0.8 Ran the servers from the 0.0.8 cache but the skills from the 0.0.2 cache, until a restart

To change folders: set the plugin’s game_path, not only REDcode’s setting, then restart Claude Code.

Asks before changes

Needs REDnode 0.26.16 or newer in the game, and plugin 0.0.5 or newer for the edgedeck rows (it runs edgedeck-mcp 0.28.0, the first with the flag). Run it in auto mode, the mode that skipped the prompt in P1. Game at a loaded save for the rednode rows, closed for the edgedeck rows. Deny every prompt, except the one allowed api_call.

Ask Claude Expected
“What’s the player’s money?” (or another read) It uses api_read, which runs without a prompt
“Give the player 1 eddie” api_call prompts, with no “don’t ask again”; denied, nothing changes
Again, after allowing api_call once It prompts again
“Reload my mod’s archive” archives_reload prompts
“Deploy my mods” edgedeck_deploy prompts; denied, the game folder is unchanged
“Undo the last deploy”, “Remove mod X” edgedeck_undo, edgedeck_remove prompt
/edge:setup with REDnode older than 0.26.16 It says to update REDnode, since api_read is missing

First run 2026-10-23 on the user’s laptop, in the VS Code extension in auto mode, plugin 0.0.5, REDnode 0.32.1: pass. The user’s words: every prompt appeared as expected, and each was allowed or denied as the steps said.

Asked Seen
“How much money does V have right now? Just read it.” No prompt (api_read)
“Give V 1 eddie.”, denied api_call prompted
“Give V 1 eddie.” again, allowed Prompted
“Give V 1 more eddie.”, denied Prompted again after the allow
Reload an archive in archive/pc/mod, denied archives_reload prompted
Game closed: “Deploy my mods.”, denied edgedeck_deploy prompted. In P1 it ran without one
“Undo the last deploy.”, denied edgedeck_undo prompted

Not run: “remove a mod” (edgedeck_remove carries the same flag in edgedeck-mcp 0.28.0; not tried, to keep the mods safe), the default mode, and /edge:setup with an old REDnode.

new-mod in the game

The P3 test: /edge:new-mod run by the user as a modder who does not code, with the game running: it asks what the mod should do, picks the kind of mod, makes the project, builds a first small version, and tests it in the game. Changes to the game and the game folder ask first. Run 2026-10-26 by the user on the dev PC: plugin 0.0.14, game 2.5, REDnode 0.40.1, REDbridge 0.11.0. Pass, by the user’s report; the details were not recorded.

Clean install

The P4 test: the README’s steps alone on a fresh PC or Windows account, with REDbridge from its releases zip and the .NET 10 runtime, then /edge:setup and the REDnode sign-in. Run 2026-10-26 by the user on the dev PC: plugin 0.0.14, game 2.5, REDnode 0.40.1, REDbridge 0.11.0. Pass, by the user’s report; the details were not recorded.

Swap and restore in the game

The wolvenkit-projects loop for 0.1.1: a WolvenKit project deployed by EDGEdeck, changed and swapped into the running game through REDswap, then EDGEdeck brought back in step. Run 2026-11-02 by the user on the dev PC, in claude --plugin-dir <checkout> (plugin 0.1.1 from the checkout, with game_path and edgedeck_library copied to edge@inline), game 2.5, REDnode 0.50.2 (REDswap 1.0.3), REDbridge 0.11.0, redcode-mcp 0.4.0, edgedeck-mcp 0.30.0. Pass.

The project: E:ModdingCyberpunk 2077RedmodsEDGEchatSwapTest, made with EDGEmat: the jacket of Items.Cop_01_Set_Jacket (cop_blue_black, four player meshes and a new .mlsetup), recoloured red. It packed as a REDmod (packed/mods/EDGEchatSwapTest/).

Step Seen
Pack, edgedeck_install_project, edgedeck_pending Library mod edgechatswaptest, version dev. Pending listed it and three UV Texture Framework mods waiting from before; Claude offered to deploy the test mod only
Deploy Asked first. EDGEdeck ran REDmod’s deploy: r6/cache/modded/mods.json lists the mod
Start the game Not red at first: the game was started without -modded. Red after a start through EDGEdeck’s Run (16:08), which adds it
Recolour green, pack, archives_reload Asked first. Swapped in 88 ms, no errors, V’s outfit applied again; green at once
edgedeck_pending after the swap One file, mods/EDGEchatSwapTest/archives/EDGEchatSwapTest.archive, “changed in the game folder”, with keep and restore explained
edgedeck_install_project, deploy with restore Asked first. After a restart the jacket stayed green

Found on the way:

Finding What came of it
An earlier swap of EDGEmatA.archive (a file from the laptop, never deployed by EDGEdeck) added it to archive/pc/mod unmanaged; Claude offered to delete it by hand wolvenkit-projects now says what a swap does with an archive the game has not mounted, and never to delete it by hand
A REDmod needs -modded In wolvenkit-projects
The first recolour changed the citizen vest (citizen_casual... 2_073_ma/wa...), not V’s: the user’s slip in EDGEmat’s Find view, not a fault None
cr2w_search does not look inside a mesh’s localMaterialBuffer; cr2w_get_node reads it For REDcode
Three UV Texture Framework mods (left over from an EDGEdeck fix) were deployed at 16:08 Not a fault: EDGEdeck’s records (deploys/) show the deploys for one mod (15:47, 16:16) touched only it, and 16:08 was a full deploy: EDGEdeck’s Run, which deploys every switched-on mod and starts the game with -modded (the user’s account). The user turned the UV mods off

EDGEkit one-click setup

The P0 decision (design): EDGEkit sets up the plugin in one click (EDGEkit#5). In an EDGEkit with Claude Code signed in, and the plugin not installed:

Step Expected
Finish EDGEkit’s first-run steps, answer Set Up to “Set up Claude Code for EDGE?” Claude Code’s plugin dialog opens on edge (its install link, edgekit://anthropic.claude-code/install-plugin?plugin=edge&marketplace=Edgemodders/EDGEchat)
Confirm the marketplace, Install edge@edgemodders installed (plugins/installed_plugins.json)
After the install EDGEkit opens a new Claude Code session with /edge:setup in the prompt box
Run /edge:setup The servers’ table, as in a VS Code install

Run 2026-10-26 on the dev PC, EDGEkit 1.140.2 (signed in, Claude Code 2.1.310), plugin 0.0.15. Pass, by the user’s report and EDGEkit’s on #5, after one change in EDGEkit:

Build What happened
da32f12 (the P0 plan) EDGEkit wrote extraKnownMarketplaces and enabledPlugins["edge@edgemodders"] into the user settings. Claude Code added the marketplace but installed nothing: claude plugin list said “No plugins installed”. enabledPlugins only turns on an installed plugin (Claude Code’s docs, “Choose an install scope”)
d342a8b EDGEkit opens Claude Code’s install link instead, then /edge:setup once the plugin is installed. Every step above passed. Released in EDGEkit 1.140.2 the same day

EDGEkit also pointed out that Claude Code leaves auto-update off for this marketplace; the README and setup now say how to turn it on.

Evals: archives-and-cr2w

The P2 test (design): each case runs with the plugin and without it, and the difference (Δ) is what the skill adds. Runs as you, on your Claude login; the plugin’s servers are not started (no mocks), so only the skill is tested. The report stays local with --no-publish; results go to evals/results/, which git ignores.

claude plugin eval . --tag archives-and-cr2w --runs 1 -j 3 --no-publish --trust-plugin

First run 2026-10-23, Claude Code 2.1.302, one run per arm: 3 cases, $0.49, 41 s.

Case With Without Seen
item-to-files (item to its files, in order, with the linking fields) 1.00 1.00 Without the plugin, Claude gave the same chain from memory, down to colorScale in the .mlsetup
path-capitals (a replaced file with capitals in its path) 1.00 1.00 Both named the capitals and the path hash
edit-app-mesh (components or compiledData) 1.00 1.00 Both said components

The skill fired in every run with the plugin. Δ 0.00: general WolvenKit knowledge is already in the model, so this skill adds little. See the design’s P2 note.

Evals: rednode-mods

claude plugin eval . --tag rednode-mods --runs 1 -j 3 --no-publish --trust-plugin

Run 2026-10-25 at 0.0.10, Claude Code 2.1.310, guide copied from REDnode 00c1947 (0.37.0), with development folders and services in the skill, together with --tag new-mod and --judge-model sonnet: 5 cases, $1.16, 71 s, mean Δ +0.95. The three rednode-mods cases Δ +1.00 each as before (hud-widget still names red4ext/plugins/REDnode/apps); money-on-screen +1.00, cheaper-jackets +0.75. money-on-screen again loaded rednode-mods, not new-mod.

First run 2026-10-23, Claude Code 2.1.302, one run per arm, skill copied from REDnode 7e0d9ca (0.32.1): 3 cases, $0.63, 49 s. Δ +1.00: without the plugin, Claude failed every case; with it, it passed every one, and the skill fired each time.

Case With Without
hud-widget (manifest, page and folder for a HUD widget showing V’s position) 1.00 0.00, and no red4ext/plugins/REDnode/apps
mod-output (where a Node mod’s console.log goes; mod.js with import) 1.00 0.00
data-folder (a mod writing into its own folder restarts under hot reload) 1.00 0.00, no pkg.dataDir

Evals: the whole suite

Every case, three runs per arm, judged by Sonnet. The first runs used the default judge (Haiku), which failed correct answers that were long or covered more than the rubric asked (check-mod found all three planted problems and got FAIL three times; Sonnet passed the same case). Use --judge-model sonnet from now on.

claude plugin eval . --runs 3 -j 6 --judge-model sonnet --no-publish --trust-plugin

Run 2026-11-02 at 0.1.1, before the release, after the wiki was copied again (EDGEweb 842dae8) and the connect-claude and into-the-game rubrics said which correct answers are not failures: 15 cases, all pass with the plugin, mean Δ +0.73, $10.63, 6 min 38 s. connect-claude and into-the-game 1.00 each (Δ +1.00). As before, check-mod and new-mod did not fire on plain prompts (broken-package, money-on-screen pass through the other skills).

Run 2026-11-02, --tag wolvenkit-projects only, after the skill learned REDmods and swaps of undeployed archives: changed-after-swap 1.00 (Δ +0.33), pack-resources 1.00 (Δ 0.00), into-the-game 0.67: the failing answer had every PASS step again, as on 2026-10-27; the judge, a second time.

Run 2026-11-02, --tag rednode-mods only, after REDnode’s guide was copied again from 0.50.2: Δ +1.00 each (data-folder, hud-widget, mod-output), $2.39.

Run 2026-10-27 at 0.1.1 (local, before the push): 15 cases, mean Δ +0.66, $10.31, 5 min 15 s. Two cases short, both checked:

Case With What it was
into-the-game (wolvenkit-projects) 0.33, then 1.00 in a rerun The judge. Both failing answers had every PASS step; Sonnet, asked for its reason on one, passed it twice and called archives_reload a rednode tool, not an invented one
connect-claude (edge-tools) 0.67, and 0.67 in two reruns The eval withholds the servers, so setup’s description (“when the tools are missing”) fires and Claude runs its checks instead of naming /edge:setup. In a real session with the servers missing that is right. A stricter edge-tools rule did not change it and was dropped. 0.0.15’s three runs passed
edgemat-library (edge-tools) 0.67, then 1.00 in a rerun One answer added the wiki’s caveat that the library folder also holds EDGEmat’s MCP server; the judges read it as losing something

Every other case as at 0.0.15 (cheaper-jackets without the plugin: 0.42).

Run 2026-10-26 at 0.0.15, Claude Code 2.1.310, after the skills’ recheck on game 2.5: 15 cases (with edge-tools’s three), mean Δ +0.70, $9.92, 5 min 40 s. Two misses, both from graders out of date, not the plugin: money-on-screen failed one run because its rubric wanted the apps folder and the answer chose a REDnode development folder, which the skills teach from 0.0.10; cheaper-jackets’s checks-tweakdb regex wanted tweakdb_ where the answers said “check it with the TweakDB tools” (seen 2026-10-23 too). The rubric now takes either folder, and checks-tweakdb is an llm grader. Rerun of --tag new-mod with them: both 1.00 with the plugin (cheaper-jackets Δ +0.67, money-on-screen Δ +1.00), $1.62.

Case Skill With Without (3 runs) Δ
hud-widget, mod-output, data-folder rednode-mods 1.00 each 0 each +1.00 each
changed-after-swap wolvenkit-projects 1.00 0.67 +0.33
into-the-game wolvenkit-projects 1.00 0 +1.00
pack-resources wolvenkit-projects 1.00 1.00 0.00
money-on-screen new-mod 1.00 (after the rubric fix) 0 +1.00
cheaper-jackets new-mod 1.00 (after the grader fix) 0.33 +0.67
broken-package check-mod 1.00 0 +1.00
edit-app-mesh archives-and-cr2w 1.00 0 +1.00
item-to-files, path-capitals archives-and-cr2w 1.00 each 1.00 each 0.00 each
connect-claude, edgemat-library, vortex-switch edge-tools 1.00 each 0 each +1.00 each

As before, new-mod and check-mod did not fire on plain-language prompts (rednode-mods and the others carried the answers); the commands are run as /edge:new-mod and /edge:check-mod, and passed that way in the game.

Run 2026-10-23 at 0.0.8, Claude Code 2.1.302: 12 cases, 10 pass, mean Δ +0.68, $7.91, 5 min 22 s.

Case Skill With Without (3 runs) Δ
hud-widget, mod-output, data-folder rednode-mods 1.00 each 0, 0, 0 +1.00 each
changed-after-swap wolvenkit-projects 1.00 0, 0, 0 +1.00
into-the-game wolvenkit-projects 0.67 (one run failed) 0, 0, 0 +0.67
pack-resources wolvenkit-projects 1.00 1, 1, 1 0.00
money-on-screen new-mod 1.00 0, 0, 0 +1.00
cheaper-jackets new-mod 0.83 0.25 each +0.58
broken-package check-mod 1.00 0, 0, 0 +1.00
edit-app-mesh archives-and-cr2w 1.00 0, 1, 0 +0.67
item-to-files archives-and-cr2w 1.00 1, 1, 0.33 +0.22
path-capitals archives-and-cr2w 1.00 1, 1, 1 0.00

Seen:

Evals: wolvenkit-projects

claude plugin eval . --tag wolvenkit-projects --runs 1 -j 3 --no-publish --trust-plugin

First run 2026-10-23, Claude Code 2.1.302, one run per arm: 3 cases, $0.47, 40 s. Δ +0.33.

Case With Without Seen
into-the-game (the steps and tools from an edited project to the game) 1.00 0.00 Without the plugin, Claude did not know the EDGE servers’ flow
pack-resources (.xl and tweak files missing after project_pack) 1.00 1.00 The prompt said project_pack ran on source/archive, which gives the answer away
changed-after-swap (EDGEdeck reports a hot-swapped archive) 1.00 1.00 The prompt described keep and restore; plain Claude reasoned it out

The two Δ 0 cases test reasoning from a detailed prompt more than knowledge. They stay as they are: rewording prompts until plain Claude fails would only flatter the skill.

Evals: edge-tools

claude plugin eval . --tag edge-tools --runs 3 -j 6 --judge-model sonnet --no-publish --trust-plugin

First run 2026-10-26, Claude Code 2.1.310, plugin 0.0.12 (the wiki copied from EDGEweb 8b425af), three runs per arm: 3 cases, $1.78, 51 s. The skill fired in all 9 runs with the plugin. Mean Δ +0.93 as run; +1.00 without the regex grader removed after it (below).

Case With Without Seen
vortex-switch (moving from Vortex to EDGEdeck, and back) 1.00 0.00 Without the wiki, Claude did not know EDGEdeck’s Import from Vortex, the purge first, or Undo deploy
edgemat-library (where the library is, game updates, deleting it) 1.00 0.00 Without it, a wrong folder or a guess
connect-claude (connecting Claude Code, the plugin installed) 0.78 0.00 The judge passed all 3 answers with the plugin: /edge:setup, REDnode’s MCP server switch. A regex grader for “no claude mcp add” failed 2 of them, which only warned to remove servers added by hand that way. The regex was removed; the rubric fails real advice to add servers by hand. Without the plugin, Claude gave claude mcp add steps

rednode-mods in the game

What the evals cannot show: Claude building a package in the running game with the skill and the rednode server. Plugin 0.0.6 or newer, the game at a loaded save, Hot reload on in the REDnode launcher’s Settings panel (the gear at the right of the Theme row). In a new session:

Make me a small REDnode HUD widget at the top of the screen that shows V’s position. Build it in my game and check it works.

Check Expected
Before writing It looks up the game functions it uses (gameapi_lookup)
Where A folder in red4ext/plugins/REDnode/apps/, with rednode-app.json ("kind": "hud") and a page; Claude Code asks before writing
After writing It checks the package with apps, logs or a screenshot, and says what it checked
In the game The widget shows V’s position at the top of the screen

First run 2026-10-23 on the user’s laptop, in the VS Code extension, plugin 0.0.6, REDnode 0.32.1: pass, in the user’s words “it showed up properly and worked”. The package folder can be deleted afterwards.

init-project on a real project

Run 2026-10-26 by the user on the dev PC: plugin 0.0.14, game 2.5, REDnode 0.40.1, REDbridge 0.11.0. Pass, by the user’s report; the details were not recorded. Run on the mod made in new-mod in the game.

In a session with the plugin, in a WolvenKit project (for example one under E:\Modding\Cyberpunk 2077\Projects) and in a REDnode package folder:

/edge:init-project
Check Expected
What it finds The project’s kind from its files, and the frameworks from source/resources
An existing CLAUDE.md It asks before changing it and adds an ## EDGE section
The paths it writes Only ones in skills/init-project/layouts.md or the project itself