@genclass/mcp 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genclass/mcp",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "mcpName": "io.github.genclass-dev/genclass",
5
5
  "description": "GenClass for coding agents: an MCP server that sees what happens inside your app's pages (clicks, requests, the order responses arrived, state writes, errors), re-runs them with the network answering in different orders to find race conditions, and replays one exact order to prove a fix. Local only, no dependencies.",
6
6
  "type": "module",
Binary file
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "genclass",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "See what happens inside your app's pages in causal order, find race conditions by replaying different response orders, reproduce a bug exactly and prove the fix with a generated Playwright test. Local only.",
5
5
  "author": {
6
6
  "name": "GenClass",
package/plugin/.mcp.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "command": "npx",
5
5
  "args": [
6
6
  "-y",
7
- "@genclass/mcp@0.2.0"
7
+ "@genclass/mcp@0.2.1"
8
8
  ]
9
9
  }
10
10
  }
package/plugin/README.md CHANGED
@@ -20,9 +20,9 @@ page of the dev server. The page side needs `@genclass/runtime` 0.3.0-beta.1 or
20
20
 
21
21
  | part | file | what it does |
22
22
  |---|---|---|
23
- | MCP server `genclass` | `.mcp.json` | runs `npx -y @genclass/mcp@0.2.0`: nine tools (`genclass_status`, `genclass_findings`, `genclass_explain`, `genclass_explore`, `genclass_replay`, `genclass_analytics`, `genclass_setup`, `genclass_scan`, `genclass_clear`) and a bridge on 127.0.0.1:47357 that your app's pages connect to |
24
- | `UserPromptSubmit` hook | `hooks/hooks.json` | runs `npx -y @genclass/mcp@0.2.0 hook` before each prompt: up to five findings recorded since the last prompt are added to the prompt as context |
25
- | skill `genclass` | `skills/genclass/SKILL.md` | tells Claude when to use the tools (an intermittent frontend bug; after changing code that fetches, submits, autosaves, polls or debounces) and how to confirm a fix |
23
+ | MCP server `genclass` | `.mcp.json` | runs `npx -y @genclass/mcp@0.2.1`: nine tools (`genclass_status`, `genclass_findings`, `genclass_explain`, `genclass_explore`, `genclass_replay`, `genclass_analytics`, `genclass_setup`, `genclass_scan`, `genclass_clear`) and a bridge on 127.0.0.1:47357 that your app's pages connect to |
24
+ | `UserPromptSubmit` hook | `hooks/hooks.json` | runs `npx -y @genclass/mcp@0.2.1 hook` before each prompt: up to five findings recorded since the last prompt are added to the prompt as context |
25
+ | skill `genclass` | `skills/genclass/SKILL.md` | the procedure once Claude reaches for the tools (the explore arguments and Playwright pairing, how to read a report, what to say when done, what to do when the tools are missing); its description carries the triggers (an intermittent frontend bug; after changing code that fetches, submits, autosaves, polls or debounces; before calling a UI change done), as do the server's instructions. Without the plugin, `npx -y @genclass/mcp@0.2.1 init` writes the same file to `.claude/skills/genclass/SKILL.md` |
26
26
 
27
27
  The launcher is pinned to the plugin's version, so the plugin runs the exact release it was reviewed with.
28
28
  `plugin.json` and `mcp.json` at this folder's root are the same server in the
@@ -55,7 +55,7 @@ diagnostics, which `GenClass.init({ telemetry: false })` turns off ([PRIVACY.md]
55
55
 
56
56
  - Everything: `/plugin disable genclass@genclass` (or `/plugin uninstall genclass@genclass`).
57
57
  - Only the hook: Claude Code has no switch for one plugin hook; uninstall the plugin and add the server alone
58
- (`claude mcp add genclass -- npx -y @genclass/mcp@0.2.0`), or set `"disableAllHooks": true` in your settings, which
58
+ (`claude mcp add genclass -- npx -y @genclass/mcp@0.2.1`), or set `"disableAllHooks": true` in your settings, which
59
59
  turns off every hook.
60
60
  - In the app: remove the `connectAgent(rt)` line; the page then never talks to the bridge.
61
61
 
@@ -5,7 +5,7 @@
5
5
  "hooks": [
6
6
  {
7
7
  "type": "command",
8
- "command": "npx -y @genclass/mcp@0.2.0 hook",
8
+ "command": "npx -y @genclass/mcp@0.2.1 hook",
9
9
  "timeout": 30
10
10
  }
11
11
  ]
package/plugin/mcp.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "command": "npx",
7
7
  "args": [
8
8
  "-y",
9
- "@genclass/mcp@0.2.0"
9
+ "@genclass/mcp@0.2.1"
10
10
  ]
11
11
  }
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "genclass",
4
- "version": "0.2.0",
4
+ "version": "0.2.1",
5
5
  "description": "See what happens inside your app's pages in causal order, find race conditions by replaying different response orders, reproduce a bug exactly and prove the fix with a generated Playwright test. Local only.",
6
6
  "author": {
7
7
  "name": "GenClass",
@@ -1,20 +1,22 @@
1
1
  ---
2
2
  name: genclass
3
- description: Find, reproduce and prove fixes for web-app bugs that depend on timing (race conditions, stale or flickering results, lost edits, double submits, errors that happen "sometimes", "only in production" or "on slow connections") with the GenClass MCP tools. Use when the user reports an intermittent frontend bug, and after you change code that fetches, submits, autosaves, polls, debounces, paginates or listens to a socket, before you call the change done.
3
+ description: Find, reproduce and prove fixes for web-app bugs that depend on timing or layout with the GenClass MCP tools. Use when the user says something happens "sometimes", "randomly", "only in production" or "on slow connections", when a value "flips back", and for stale or old results, lost edits, double submits or a page that scrolls sideways on a phone; also after you change code that fetches, submits, autosaves, polls, debounces, paginates or listens to a socket, and before you call a page or UI change done.
4
4
  ---
5
5
 
6
6
  # GenClass: see the race, replay it, prove the fix
7
7
 
8
8
  GenClass records what happens inside the app's pages on this machine (each click, request, the order responses
9
9
  were delivered, what each response wrote into the state, uncaught errors with the click and request behind them),
10
- can run the page again with responses delivered in different orders, and can replay one exact order.
10
+ can run the page again with responses delivered in different orders, and can replay one exact order. It needs
11
+ Claude Code (or another MCP client) on the developer's machine, next to the app's dev server; the chat app cannot
12
+ run it. The server's instructions say when to reach for it; this file is the procedure.
11
13
 
12
- ## 0. Is it connected?
14
+ ## 0. Check the connection
13
15
 
14
16
  Call `genclass_status`. If no page is listed, call `genclass_setup` and add the two lines it shows to the app's
15
17
  browser entry (development builds only), then load a page of the dev server.
16
18
 
17
- ## 1. A reported bug ("sometimes the results are wrong")
19
+ ## 1. From a finding to a proven fix
18
20
 
19
21
  1. `genclass_findings`, then `genclass_explain` on the most relevant finding. Read the causal chain (which click
20
22
  started which request, which response wrote over what).
@@ -26,25 +28,27 @@ browser entry (development builds only), then load a page of the dev server.
26
28
  not hide the symptom.
27
29
  4. Replay again: "not reproduced" (with the same steps) is the evidence. Add the regression test from
28
30
  `genclass_explain` to the repo's Playwright tests.
29
- 5. Run `genclass_explore` once more to check other orders.
31
+ 5. Run explore once more (section 2) to check other orders.
30
32
 
31
33
  If nothing was recorded, reproduce it with explore (section 2), using the page and endpoint the user named
32
34
  (`route`, `focus: ["METHOD /path/:id"]`). For production-only reports, `genclass_analytics {source:"production"}`
33
35
  shows which pages and endpoints the GenClass dashboard flagged.
34
36
 
35
- ## 2. After changing data-fetching or submit code
37
+ ## 2. Explore response orders
36
38
 
37
39
  1. `genclass_explore {action:"start", runs: 6, slow_ms: 600}` (add `route` to limit it to one page).
38
40
  2. Run the same scenario once per armed page load (2 baselines + 6), each a fresh load: with Playwright
39
41
  `--repeat-each 8 --workers 1`, or with a browser tool. After the steps, wait for
40
42
  `window.__GENCLASS_AGENT__.whenSettled()`.
41
- 3. `genclass_explore {action:"report"}`. "No race found" for every scenario, with the reordered runs compared
42
- ("Compared: 6 of 6"): done. "No verdict" or "0 compared": nothing was compared, so it is not a negative result; run
43
- it again with `route` set and the same steps on every load. "RACE": `genclass_explain` the race finding and go to
44
- section 1, step 3. "Internal state only" and "Along the way only" are not races: store values the page did not show
45
- (a cache's own bookkeeping depends on arrival order by construction), and overwrites a later response repaired.
43
+ 3. `genclass_explore {action:"report"}` and read the verdict per scenario:
44
+ - "No race found" with the reordered runs compared ("Compared: 6 of 6"): done.
45
+ - "No verdict" or "0 compared": nothing was compared, so it is not a negative result; run it again with `route`
46
+ set and the same steps on every load.
47
+ - "RACE": `genclass_explain` the race finding and go to section 1, step 3.
48
+ - "Internal state only" and "Along the way only" are not races: store values the page did not show (a cache's
49
+ own bookkeeping depends on arrival order by construction), and overwrites a later response repaired.
46
50
 
47
- ## 3. Before calling a page or UI change done
51
+ ## 3. Scan a page
48
52
 
49
53
  `genclass_scan {url}` (the dev server's page, e.g. `http://localhost:5173/pricing`) loads it headless at desktop and
50
54
  phone sizes and lists what the measured visual checks found: unreadable text, broken images, fonts and stylesheets,
@@ -62,3 +66,14 @@ Playwright's Chromium is missing, install it (`npx playwright install chromium`)
62
66
  model's detections are its opinion.
63
67
  - Report what you verified: say "reproduced", "not reproduced" or "no race in N orders", not "fixed", unless a replay
64
68
  or explore showed it.
69
+
70
+ ## Without the genclass_* tools
71
+
72
+ The tools come from the GenClass MCP server, which runs on the developer's machine. When this session has none of
73
+ them:
74
+
75
+ - Add the server and restart the client. Claude Code: `claude mcp add genclass -- npx -y @genclass/mcp@0.2.1`
76
+ (other clients: `npx -y @genclass/mcp@0.2.1 config <client>` prints their lines).
77
+ - For the visual checks alone, no server needed: `npx @genclass/runtime@beta scan <url> --json` in a terminal.
78
+ - In a chat app with no terminal on that machine, say so and give the developer the install line; GenClass cannot
79
+ run there.
package/server.json CHANGED
@@ -9,13 +9,13 @@
9
9
  "source": "github",
10
10
  "subfolder": "packages/mcp"
11
11
  },
12
- "version": "0.2.0",
12
+ "version": "0.2.1",
13
13
  "packages": [
14
14
  {
15
15
  "registryType": "npm",
16
16
  "registryBaseUrl": "https://registry.npmjs.org",
17
17
  "identifier": "@genclass/mcp",
18
- "version": "0.2.0",
18
+ "version": "0.2.1",
19
19
  "transport": {
20
20
  "type": "stdio"
21
21
  }