@muggleai/works 4.12.1 → 4.12.2
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/dist/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/plugin/.cursor-plugin/plugin.json +1 -1
- package/dist/plugin/skills/muggle-pr-followup/SKILL.md +2 -1
- package/dist/plugin/skills/muggle-pr-followup/bootstrap.md +4 -2
- package/dist/plugin/skills/muggle-pr-followup/output-templates/bootstrap.md +1 -1
- package/dist/plugin/skills/muggle-test/SKILL.md +14 -6
- package/dist/release-manifest.json +4 -4
- package/package.json +6 -6
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.cursor-plugin/plugin.json +1 -1
- package/plugin/skills/muggle-pr-followup/SKILL.md +2 -1
- package/plugin/skills/muggle-pr-followup/bootstrap.md +4 -2
- package/plugin/skills/muggle-pr-followup/output-templates/bootstrap.md +1 -1
- package/plugin/skills/muggle-test/SKILL.md +14 -6
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "muggle",
|
|
3
3
|
"description": "Run real-browser end-to-end (E2E) acceptance tests on your web app from any AI coding agent. Generate test scripts from plain English, replay them on localhost, capture screenshots, and validate user flows like signup, checkout, and dashboards. Works across Claude Code, Cursor, Codex, and Windsurf.",
|
|
4
|
-
"version": "4.12.
|
|
4
|
+
"version": "4.12.2",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Muggle AI",
|
|
7
7
|
"email": "support@muggle-ai.com"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "muggle",
|
|
3
3
|
"displayName": "Muggle AI",
|
|
4
4
|
"description": "Ship quality products with AI-powered end-to-end (E2E) acceptance testing that validates your web app like a real user — from Claude Code and Cursor to PR.",
|
|
5
|
-
"version": "4.12.
|
|
5
|
+
"version": "4.12.2",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Muggle AI",
|
|
8
8
|
"email": "support@muggle-ai.com"
|
|
@@ -27,10 +27,11 @@ The skill recognizes two modes by inspecting `$ARGUMENTS` and falling back to on
|
|
|
27
27
|
| `<pr-number>` alone | zero or multiple matches | **error:** ambiguous; list candidates and exit |
|
|
28
28
|
| empty / `help` / `?` | — | **help:** list active loops per [`output-templates/help.md`](output-templates/help.md) |
|
|
29
29
|
|
|
30
|
-
Bootstrap accepts
|
|
30
|
+
Bootstrap accepts three optional trailing flags:
|
|
31
31
|
|
|
32
32
|
- `--slug=<name>` — override the default `<repo>-pr<n>` slug
|
|
33
33
|
- `--resume` — opt in to reusing an existing session slot (default is refuse on conflict)
|
|
34
|
+
- `--forward-only` — pin cursor past existing reviews (skip history). Default is cursor 0, which processes prior submitted reviews on the first tick.
|
|
34
35
|
|
|
35
36
|
## Folder TOC
|
|
36
37
|
|
|
@@ -12,11 +12,12 @@ Bootstrap is **non-interactive**: it runs straight through, prompts the user for
|
|
|
12
12
|
|
|
13
13
|
## Input
|
|
14
14
|
|
|
15
|
-
`$ARGUMENTS = <pr-url> [--slug=<name>] [--resume]`
|
|
15
|
+
`$ARGUMENTS = <pr-url> [--slug=<name>] [--resume] [--forward-only]`
|
|
16
16
|
|
|
17
17
|
- `<pr-url>` matches `https?://github\.com/[^/]+/[^/]+/pull/\d+` — required.
|
|
18
18
|
- `--slug=<name>` overrides the default `<repo>-pr<n>` slug.
|
|
19
19
|
- `--resume` opts into refreshing an existing slot instead of refusing on conflict.
|
|
20
|
+
- `--forward-only` pins the cursor past existing reviews (skip history). Default is cursor 0 — the watcher will pick up prior submitted reviews on its first tick.
|
|
20
21
|
|
|
21
22
|
## Procedure
|
|
22
23
|
|
|
@@ -47,7 +48,8 @@ If `.muggle-do/sessions/<slug>/` exists:
|
|
|
47
48
|
|
|
48
49
|
### Step 6 — Resolve the initial cursor
|
|
49
50
|
|
|
50
|
-
|
|
51
|
+
- **Default (no `--forward-only`):** cursor is `0`. The watcher will pick up every existing submitted review on its first tick. This matches the common case where the user opened the PR, left review comments they want addressed, and is now running bootstrap.
|
|
52
|
+
- **With `--forward-only`:** fetch reviews per [`../_shared/github-cli-recipes/submitted-reviews.md`](../_shared/github-cli-recipes/submitted-reviews.md), then take `max(id)`. The watcher only acts on later submissions. Use when bootstrapping a PR with stale/already-handled prior reviews you don't want re-processed.
|
|
51
53
|
|
|
52
54
|
### Step 7 — Seed state files
|
|
53
55
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
```
|
|
6
6
|
Bootstrapped PR follow-up for <owner>/<repo>#<n>
|
|
7
7
|
Slug: <slug>
|
|
8
|
-
Cursor: review #<id> (forward-only) | empty (no prior reviews)
|
|
8
|
+
Cursor: 0 (will process <N> existing review(s) on first tick) | review #<id> (forward-only) | empty (no prior reviews)
|
|
9
9
|
Working tree: <toplevel>
|
|
10
10
|
Dispatching: /loop 1m /muggle:muggle-pr-followup <slug> <n>
|
|
11
11
|
```
|
|
@@ -54,19 +54,19 @@ Gates run per `preference-gates/README.md`.
|
|
|
54
54
|
|
|
55
55
|
Parse the user's query and explicitly confirm their expectation. There are exactly two modes:
|
|
56
56
|
|
|
57
|
-
### Mode A: Local Test Generation
|
|
57
|
+
### Mode A: Local Test Generation (default for PRs)
|
|
58
58
|
> Test impacted use cases/test cases against **localhost** using the Electron browser.
|
|
59
59
|
>
|
|
60
60
|
> Execution tool: `muggle-local-execute-test-generation`
|
|
61
61
|
|
|
62
|
-
Signs the user wants this: mentions "localhost", "local", "my machine", "dev server", "my changes locally", or just "test my changes" in a repo context.
|
|
62
|
+
Signs the user wants this: mentions "localhost", "local", "my machine", "dev server", "my changes locally", or just "test my changes" in a repo context. **Also: passing a GitHub PR/issue/repo URL (`github.com/<org>/<repo>/pull/<n>`) defaults to Local mode** — PR review almost always means checking out the branch and validating against the dev server, not testing the PR's preview deployment.
|
|
63
63
|
|
|
64
64
|
### Mode B: Remote Test Generation
|
|
65
65
|
> Ask Muggle Test's cloud to generate test scripts against a **preview/staging URL**.
|
|
66
66
|
>
|
|
67
67
|
> Execution tool: `muggle-remote-workflow-start-test-script-generation`
|
|
68
68
|
|
|
69
|
-
Signs the user wants this: mentions "preview", "staging", "deployed", "preview URL", "test on preview", "test the deployment", or provides
|
|
69
|
+
Signs the user wants this: mentions "preview", "staging", "deployed", "preview URL", "test on preview", "test the deployment", or provides an actual **deployed** preview/staging URL (e.g. `*.vercel.app`, `staging.foo.com`, custom preview domains). GitHub PR URLs do **not** count — see Mode A.
|
|
70
70
|
|
|
71
71
|
### Confirming (gated by `defaultExecutionMode`)
|
|
72
72
|
|
|
@@ -87,15 +87,23 @@ Gate `autoDetectChanges` (per `preference-gates/README.md`):
|
|
|
87
87
|
|
|
88
88
|
### Analysis (when scan is enabled)
|
|
89
89
|
|
|
90
|
-
Analyze the
|
|
90
|
+
Analyze the changes to understand what's impacted. Two sources, picked by what the user passed:
|
|
91
91
|
|
|
92
|
+
**Working directory** (default):
|
|
92
93
|
1. Run `git status` and `git diff --stat` for an overview
|
|
93
94
|
2. Run `git diff` (or `git diff --cached` if staged) to read actual diffs
|
|
94
|
-
|
|
95
|
+
|
|
96
|
+
**PR URL** (user passed `github.com/<org>/<repo>/pull/<n>`):
|
|
97
|
+
1. `gh pr diff <n> --repo <org>/<repo> --name-only` for the changed file list
|
|
98
|
+
2. `gh pr diff <n> --repo <org>/<repo>` for the actual diff
|
|
99
|
+
3. The repo lives at a sibling path (e.g. `C:\Users\stan4\Github\<repo>`) — `cd` into it and verify the PR branch is checked out before running tests; if not, ask the user to check it out (or offer to do it).
|
|
100
|
+
|
|
101
|
+
Either way:
|
|
102
|
+
1. Identify impacted feature areas:
|
|
95
103
|
- Changed UI components, pages, routes
|
|
96
104
|
- Modified API endpoints or data flows
|
|
97
105
|
- Updated form fields, validation, user interactions
|
|
98
|
-
|
|
106
|
+
2. Produce a concise **change summary** — a list of impacted features
|
|
99
107
|
|
|
100
108
|
Present:
|
|
101
109
|
> "Here's what changed: [list]. I'll scope E2E acceptance testing to these areas."
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"release": "4.12.
|
|
3
|
-
"buildId": "run-
|
|
4
|
-
"commitSha": "
|
|
5
|
-
"buildTime": "2026-05-
|
|
2
|
+
"release": "4.12.2",
|
|
3
|
+
"buildId": "run-40-1",
|
|
4
|
+
"commitSha": "9039582dcc85172dff58bcebc185d8aaa495f947",
|
|
5
|
+
"buildTime": "2026-05-22T04:16:07Z",
|
|
6
6
|
"serviceName": "muggle-ai-works-mcp"
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@muggleai/works",
|
|
3
3
|
"mcpName": "io.github.multiplex-ai/muggle",
|
|
4
|
-
"version": "4.12.
|
|
4
|
+
"version": "4.12.2",
|
|
5
5
|
"description": "Ship quality products with AI-powered E2E acceptance testing that validates your web app like a real user — from Claude Code and Cursor to PR.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -41,14 +41,14 @@
|
|
|
41
41
|
"test:watch": "vitest"
|
|
42
42
|
},
|
|
43
43
|
"muggleConfig": {
|
|
44
|
-
"electronAppVersion": "1.0.
|
|
44
|
+
"electronAppVersion": "1.0.93",
|
|
45
45
|
"downloadBaseUrl": "https://github.com/multiplex-ai/muggle-ai-works/releases/download",
|
|
46
46
|
"runtimeTargetDefault": "production",
|
|
47
47
|
"checksums": {
|
|
48
|
-
"darwin-arm64": "
|
|
49
|
-
"darwin-x64": "
|
|
50
|
-
"linux-x64": "
|
|
51
|
-
"win32-x64": "
|
|
48
|
+
"darwin-arm64": "79edb82904ff247a3176d7f25e6aea879bde0befe9f50ae1c977f9de01e09278",
|
|
49
|
+
"darwin-x64": "2b13541aee90eec7cff3e0d92a963fa2508f91a195aee3774edd851f69a45442",
|
|
50
|
+
"linux-x64": "438d8c80602c6c9746a2b5a11c9236d11997827ca74376e0e0fef1952f38640c",
|
|
51
|
+
"win32-x64": "6ccac8d05d40ce6d6b976f3079cbc7ca4bb3714d3d5b67776a72cd9bbf324f53"
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "muggle",
|
|
3
3
|
"description": "Run real-browser end-to-end (E2E) acceptance tests on your web app from any AI coding agent. Generate test scripts from plain English, replay them on localhost, capture screenshots, and validate user flows like signup, checkout, and dashboards. Works across Claude Code, Cursor, Codex, and Windsurf.",
|
|
4
|
-
"version": "4.12.
|
|
4
|
+
"version": "4.12.2",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Muggle AI",
|
|
7
7
|
"email": "support@muggle-ai.com"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "muggle",
|
|
3
3
|
"displayName": "Muggle AI",
|
|
4
4
|
"description": "Ship quality products with AI-powered end-to-end (E2E) acceptance testing that validates your web app like a real user — from Claude Code and Cursor to PR.",
|
|
5
|
-
"version": "4.12.
|
|
5
|
+
"version": "4.12.2",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Muggle AI",
|
|
8
8
|
"email": "support@muggle-ai.com"
|
|
@@ -27,10 +27,11 @@ The skill recognizes two modes by inspecting `$ARGUMENTS` and falling back to on
|
|
|
27
27
|
| `<pr-number>` alone | zero or multiple matches | **error:** ambiguous; list candidates and exit |
|
|
28
28
|
| empty / `help` / `?` | — | **help:** list active loops per [`output-templates/help.md`](output-templates/help.md) |
|
|
29
29
|
|
|
30
|
-
Bootstrap accepts
|
|
30
|
+
Bootstrap accepts three optional trailing flags:
|
|
31
31
|
|
|
32
32
|
- `--slug=<name>` — override the default `<repo>-pr<n>` slug
|
|
33
33
|
- `--resume` — opt in to reusing an existing session slot (default is refuse on conflict)
|
|
34
|
+
- `--forward-only` — pin cursor past existing reviews (skip history). Default is cursor 0, which processes prior submitted reviews on the first tick.
|
|
34
35
|
|
|
35
36
|
## Folder TOC
|
|
36
37
|
|
|
@@ -12,11 +12,12 @@ Bootstrap is **non-interactive**: it runs straight through, prompts the user for
|
|
|
12
12
|
|
|
13
13
|
## Input
|
|
14
14
|
|
|
15
|
-
`$ARGUMENTS = <pr-url> [--slug=<name>] [--resume]`
|
|
15
|
+
`$ARGUMENTS = <pr-url> [--slug=<name>] [--resume] [--forward-only]`
|
|
16
16
|
|
|
17
17
|
- `<pr-url>` matches `https?://github\.com/[^/]+/[^/]+/pull/\d+` — required.
|
|
18
18
|
- `--slug=<name>` overrides the default `<repo>-pr<n>` slug.
|
|
19
19
|
- `--resume` opts into refreshing an existing slot instead of refusing on conflict.
|
|
20
|
+
- `--forward-only` pins the cursor past existing reviews (skip history). Default is cursor 0 — the watcher will pick up prior submitted reviews on its first tick.
|
|
20
21
|
|
|
21
22
|
## Procedure
|
|
22
23
|
|
|
@@ -47,7 +48,8 @@ If `.muggle-do/sessions/<slug>/` exists:
|
|
|
47
48
|
|
|
48
49
|
### Step 6 — Resolve the initial cursor
|
|
49
50
|
|
|
50
|
-
|
|
51
|
+
- **Default (no `--forward-only`):** cursor is `0`. The watcher will pick up every existing submitted review on its first tick. This matches the common case where the user opened the PR, left review comments they want addressed, and is now running bootstrap.
|
|
52
|
+
- **With `--forward-only`:** fetch reviews per [`../_shared/github-cli-recipes/submitted-reviews.md`](../_shared/github-cli-recipes/submitted-reviews.md), then take `max(id)`. The watcher only acts on later submissions. Use when bootstrapping a PR with stale/already-handled prior reviews you don't want re-processed.
|
|
51
53
|
|
|
52
54
|
### Step 7 — Seed state files
|
|
53
55
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
```
|
|
6
6
|
Bootstrapped PR follow-up for <owner>/<repo>#<n>
|
|
7
7
|
Slug: <slug>
|
|
8
|
-
Cursor: review #<id> (forward-only) | empty (no prior reviews)
|
|
8
|
+
Cursor: 0 (will process <N> existing review(s) on first tick) | review #<id> (forward-only) | empty (no prior reviews)
|
|
9
9
|
Working tree: <toplevel>
|
|
10
10
|
Dispatching: /loop 1m /muggle:muggle-pr-followup <slug> <n>
|
|
11
11
|
```
|
|
@@ -54,19 +54,19 @@ Gates run per `preference-gates/README.md`.
|
|
|
54
54
|
|
|
55
55
|
Parse the user's query and explicitly confirm their expectation. There are exactly two modes:
|
|
56
56
|
|
|
57
|
-
### Mode A: Local Test Generation
|
|
57
|
+
### Mode A: Local Test Generation (default for PRs)
|
|
58
58
|
> Test impacted use cases/test cases against **localhost** using the Electron browser.
|
|
59
59
|
>
|
|
60
60
|
> Execution tool: `muggle-local-execute-test-generation`
|
|
61
61
|
|
|
62
|
-
Signs the user wants this: mentions "localhost", "local", "my machine", "dev server", "my changes locally", or just "test my changes" in a repo context.
|
|
62
|
+
Signs the user wants this: mentions "localhost", "local", "my machine", "dev server", "my changes locally", or just "test my changes" in a repo context. **Also: passing a GitHub PR/issue/repo URL (`github.com/<org>/<repo>/pull/<n>`) defaults to Local mode** — PR review almost always means checking out the branch and validating against the dev server, not testing the PR's preview deployment.
|
|
63
63
|
|
|
64
64
|
### Mode B: Remote Test Generation
|
|
65
65
|
> Ask Muggle Test's cloud to generate test scripts against a **preview/staging URL**.
|
|
66
66
|
>
|
|
67
67
|
> Execution tool: `muggle-remote-workflow-start-test-script-generation`
|
|
68
68
|
|
|
69
|
-
Signs the user wants this: mentions "preview", "staging", "deployed", "preview URL", "test on preview", "test the deployment", or provides
|
|
69
|
+
Signs the user wants this: mentions "preview", "staging", "deployed", "preview URL", "test on preview", "test the deployment", or provides an actual **deployed** preview/staging URL (e.g. `*.vercel.app`, `staging.foo.com`, custom preview domains). GitHub PR URLs do **not** count — see Mode A.
|
|
70
70
|
|
|
71
71
|
### Confirming (gated by `defaultExecutionMode`)
|
|
72
72
|
|
|
@@ -87,15 +87,23 @@ Gate `autoDetectChanges` (per `preference-gates/README.md`):
|
|
|
87
87
|
|
|
88
88
|
### Analysis (when scan is enabled)
|
|
89
89
|
|
|
90
|
-
Analyze the
|
|
90
|
+
Analyze the changes to understand what's impacted. Two sources, picked by what the user passed:
|
|
91
91
|
|
|
92
|
+
**Working directory** (default):
|
|
92
93
|
1. Run `git status` and `git diff --stat` for an overview
|
|
93
94
|
2. Run `git diff` (or `git diff --cached` if staged) to read actual diffs
|
|
94
|
-
|
|
95
|
+
|
|
96
|
+
**PR URL** (user passed `github.com/<org>/<repo>/pull/<n>`):
|
|
97
|
+
1. `gh pr diff <n> --repo <org>/<repo> --name-only` for the changed file list
|
|
98
|
+
2. `gh pr diff <n> --repo <org>/<repo>` for the actual diff
|
|
99
|
+
3. The repo lives at a sibling path (e.g. `C:\Users\stan4\Github\<repo>`) — `cd` into it and verify the PR branch is checked out before running tests; if not, ask the user to check it out (or offer to do it).
|
|
100
|
+
|
|
101
|
+
Either way:
|
|
102
|
+
1. Identify impacted feature areas:
|
|
95
103
|
- Changed UI components, pages, routes
|
|
96
104
|
- Modified API endpoints or data flows
|
|
97
105
|
- Updated form fields, validation, user interactions
|
|
98
|
-
|
|
106
|
+
2. Produce a concise **change summary** — a list of impacted features
|
|
99
107
|
|
|
100
108
|
Present:
|
|
101
109
|
> "Here's what changed: [list]. I'll scope E2E acceptance testing to these areas."
|