@muggleai/works 4.10.0 → 4.10.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/README.md +3 -3
- package/dist/{chunk-RK6XKSZK.js → chunk-Q7WNEMN4.js} +109 -43
- package/dist/{chunk-UVXOHXY2.js → chunk-ZKRHFTIC.js} +832 -89
- package/dist/cli.js +2 -2
- package/dist/index.js +2 -2
- package/dist/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/plugin/.cursor-plugin/plugin.json +1 -1
- package/dist/plugin/README.md +4 -2
- package/dist/plugin/agents/acceptance-tester.md +24 -10
- package/dist/plugin/commands/m.md +7 -0
- package/dist/plugin/commands/mdo.md +7 -0
- package/dist/plugin/commands/mfeedback.md +7 -0
- package/dist/plugin/commands/mimport.md +7 -0
- package/dist/plugin/commands/mpr.md +7 -0
- package/dist/plugin/commands/mprefs.md +7 -0
- package/dist/plugin/commands/mregen.md +7 -0
- package/dist/plugin/commands/mrelease.md +7 -0
- package/dist/plugin/commands/mrepair.md +7 -0
- package/dist/plugin/commands/mstatus.md +7 -0
- package/dist/plugin/commands/mtest.md +7 -0
- package/dist/plugin/commands/mtestlocal.md +7 -0
- package/dist/plugin/commands/mtestprep.md +7 -0
- package/dist/plugin/commands/mupgrade.md +7 -0
- package/dist/plugin/scripts/ensure-electron-app.sh +35 -8
- package/dist/plugin/skills/_aliases.json +18 -0
- package/dist/plugin/skills/_shared/dev-server-readiness.md +231 -0
- package/dist/plugin/skills/_shared/failure-mode-handling.md +244 -0
- package/dist/plugin/skills/_shared/post-merge-cleanup.md +10 -0
- package/dist/plugin/skills/_shared/rebase-before-e2e.md +15 -0
- package/dist/plugin/skills/_shared/telemetry-emit.md +15 -0
- package/dist/plugin/skills/_shared/use-worktrees.md +53 -0
- package/dist/plugin/skills/do/e2e-acceptance.md +63 -18
- package/dist/plugin/skills/do/impact-analysis.md +45 -5
- package/dist/plugin/skills/do/open-prs.md +13 -4
- package/dist/plugin/skills/do/pr-followup.md +225 -0
- package/dist/plugin/skills/do/pre-flight.md +18 -11
- package/dist/plugin/skills/m/SKILL.md +8 -0
- package/dist/plugin/skills/mdo/SKILL.md +8 -0
- package/dist/plugin/skills/mfeedback/SKILL.md +8 -0
- package/dist/plugin/skills/mimport/SKILL.md +8 -0
- package/dist/plugin/skills/mpr/SKILL.md +8 -0
- package/dist/plugin/skills/mprefs/SKILL.md +8 -0
- package/dist/plugin/skills/mregen/SKILL.md +8 -0
- package/dist/plugin/skills/mrelease/SKILL.md +8 -0
- package/dist/plugin/skills/mrepair/SKILL.md +8 -0
- package/dist/plugin/skills/mstatus/SKILL.md +8 -0
- package/dist/plugin/skills/mtest/SKILL.md +8 -0
- package/dist/plugin/skills/mtestlocal/SKILL.md +8 -0
- package/dist/plugin/skills/mtestprep/SKILL.md +8 -0
- package/dist/plugin/skills/muggle/SKILL.md +9 -6
- package/dist/plugin/skills/muggle-do/SKILL.md +22 -4
- package/dist/plugin/skills/muggle-do-pr-followup/SKILL.md +37 -0
- package/dist/plugin/skills/muggle-do-task/SKILL.md +134 -0
- package/dist/plugin/skills/muggle-feedback/SKILL.md +38 -0
- package/dist/plugin/skills/muggle-feedback/ops/delete.md +49 -0
- package/dist/plugin/skills/muggle-feedback/ops/list.md +65 -0
- package/dist/plugin/skills/muggle-feedback/ops/submit.md +117 -0
- package/dist/plugin/skills/muggle-pr-visual-walkthrough/SKILL.md +68 -43
- package/dist/plugin/skills/muggle-pr-visual-walkthrough/e2e-report-assembly.md +86 -0
- package/dist/plugin/skills/muggle-preferences/SKILL.md +16 -108
- package/dist/plugin/skills/muggle-preferences/ops/change-one.md +10 -0
- package/dist/plugin/skills/muggle-preferences/ops/configure.md +49 -0
- package/dist/plugin/skills/muggle-preferences/ops/list.md +9 -0
- package/dist/plugin/skills/muggle-preferences/ops/reset.md +6 -0
- package/dist/plugin/skills/muggle-preferences/ops/set.md +10 -0
- package/dist/plugin/skills/muggle-preferences/preference-gates/README.md +1 -1
- package/dist/plugin/skills/muggle-preferences/preference-gates/autoCleanup.md +11 -0
- package/dist/plugin/skills/muggle-preferences/preference-gates/autoCreatePR.md +13 -0
- package/dist/plugin/skills/muggle-preferences/preference-gates/autoDetectChanges.md +3 -3
- package/dist/plugin/skills/muggle-preferences/preference-gates/autoE2ETest.md +11 -0
- package/dist/plugin/skills/muggle-preferences/preference-gates/autoLogin.md +1 -1
- package/dist/plugin/skills/muggle-preferences/preference-gates/autoPublishLocalResults.md +2 -2
- package/dist/plugin/skills/muggle-preferences/preference-gates/autoRebase.md +11 -0
- package/dist/plugin/skills/muggle-preferences/preference-gates/autoSelectLocalHost.md +19 -0
- package/dist/plugin/skills/muggle-preferences/preference-gates/autoSelectProject.md +1 -2
- package/dist/plugin/skills/muggle-preferences/preference-gates/autoUseWorktree.md +11 -0
- package/dist/plugin/skills/muggle-preferences/preference-gates/checkForUpdates.md +4 -4
- package/dist/plugin/skills/muggle-preferences/preference-gates/defaultExecutionMode.md +1 -1
- package/dist/plugin/skills/muggle-preferences/preference-gates/openTestResultsAfterRun.md +1 -1
- package/dist/plugin/skills/muggle-preferences/preference-gates/postPRVisualWalkthrough.md +8 -25
- package/dist/plugin/skills/muggle-preferences/preference-gates/showElectronBrowser.md +1 -1
- package/dist/plugin/skills/muggle-preferences/preference-gates/suggestRelatedTestCases.md +4 -4
- package/dist/plugin/skills/muggle-preferences/preference-gates/suggestRelatedUseCases.md +4 -4
- package/dist/plugin/skills/muggle-repair/SKILL.md +4 -2
- package/dist/plugin/skills/muggle-status/SKILL.md +8 -5
- package/dist/plugin/skills/muggle-test/SKILL.md +110 -86
- package/dist/plugin/skills/muggle-test-feature-local/SKILL.md +73 -66
- package/dist/plugin/skills/muggle-test-import/SKILL.md +28 -23
- package/dist/plugin/skills/muggle-test-prepare/SKILL.md +79 -18
- package/dist/plugin/skills/muggle-test-regenerate-missing/SKILL.md +34 -18
- package/dist/plugin/skills/muggle-test-regenerate-missing/evals/evals.json +9 -9
- package/dist/plugin/skills/muggle-upgrade/SKILL.md +4 -2
- package/dist/plugin/skills/muggle-works-npm-release/SKILL.md +6 -4
- package/dist/plugin/skills/mupgrade/SKILL.md +8 -0
- package/dist/release-manifest.json +4 -4
- package/dist/{src-GD3YFCCW.js → src-2G7ENRGI.js} +1 -1
- package/package.json +9 -7
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.cursor-plugin/plugin.json +1 -1
- package/plugin/README.md +4 -2
- package/plugin/agents/acceptance-tester.md +24 -10
- package/plugin/commands/m.md +7 -0
- package/plugin/commands/mdo.md +7 -0
- package/plugin/commands/mfeedback.md +7 -0
- package/plugin/commands/mimport.md +7 -0
- package/plugin/commands/mpr.md +7 -0
- package/plugin/commands/mprefs.md +7 -0
- package/plugin/commands/mregen.md +7 -0
- package/plugin/commands/mrelease.md +7 -0
- package/plugin/commands/mrepair.md +7 -0
- package/plugin/commands/mstatus.md +7 -0
- package/plugin/commands/mtest.md +7 -0
- package/plugin/commands/mtestlocal.md +7 -0
- package/plugin/commands/mtestprep.md +7 -0
- package/plugin/commands/mupgrade.md +7 -0
- package/plugin/scripts/ensure-electron-app.sh +35 -8
- package/plugin/skills/_aliases.json +18 -0
- package/plugin/skills/_shared/dev-server-readiness.md +231 -0
- package/plugin/skills/_shared/failure-mode-handling.md +244 -0
- package/plugin/skills/_shared/post-merge-cleanup.md +10 -0
- package/plugin/skills/_shared/rebase-before-e2e.md +15 -0
- package/plugin/skills/_shared/telemetry-emit.md +15 -0
- package/plugin/skills/_shared/use-worktrees.md +53 -0
- package/plugin/skills/do/e2e-acceptance.md +63 -18
- package/plugin/skills/do/impact-analysis.md +45 -5
- package/plugin/skills/do/open-prs.md +13 -4
- package/plugin/skills/do/pr-followup.md +225 -0
- package/plugin/skills/do/pre-flight.md +18 -11
- package/plugin/skills/m/SKILL.md +8 -0
- package/plugin/skills/mdo/SKILL.md +8 -0
- package/plugin/skills/mfeedback/SKILL.md +8 -0
- package/plugin/skills/mimport/SKILL.md +8 -0
- package/plugin/skills/mpr/SKILL.md +8 -0
- package/plugin/skills/mprefs/SKILL.md +8 -0
- package/plugin/skills/mregen/SKILL.md +8 -0
- package/plugin/skills/mrelease/SKILL.md +8 -0
- package/plugin/skills/mrepair/SKILL.md +8 -0
- package/plugin/skills/mstatus/SKILL.md +8 -0
- package/plugin/skills/mtest/SKILL.md +8 -0
- package/plugin/skills/mtestlocal/SKILL.md +8 -0
- package/plugin/skills/mtestprep/SKILL.md +8 -0
- package/plugin/skills/muggle/SKILL.md +9 -6
- package/plugin/skills/muggle-do/SKILL.md +22 -4
- package/plugin/skills/muggle-do-pr-followup/SKILL.md +37 -0
- package/plugin/skills/muggle-do-task/SKILL.md +134 -0
- package/plugin/skills/muggle-feedback/SKILL.md +38 -0
- package/plugin/skills/muggle-feedback/ops/delete.md +49 -0
- package/plugin/skills/muggle-feedback/ops/list.md +65 -0
- package/plugin/skills/muggle-feedback/ops/submit.md +117 -0
- package/plugin/skills/muggle-pr-visual-walkthrough/SKILL.md +68 -43
- package/plugin/skills/muggle-pr-visual-walkthrough/e2e-report-assembly.md +86 -0
- package/plugin/skills/muggle-preferences/SKILL.md +16 -108
- package/plugin/skills/muggle-preferences/ops/change-one.md +10 -0
- package/plugin/skills/muggle-preferences/ops/configure.md +49 -0
- package/plugin/skills/muggle-preferences/ops/list.md +9 -0
- package/plugin/skills/muggle-preferences/ops/reset.md +6 -0
- package/plugin/skills/muggle-preferences/ops/set.md +10 -0
- package/plugin/skills/muggle-preferences/preference-gates/README.md +1 -1
- package/plugin/skills/muggle-preferences/preference-gates/autoCleanup.md +11 -0
- package/plugin/skills/muggle-preferences/preference-gates/autoCreatePR.md +13 -0
- package/plugin/skills/muggle-preferences/preference-gates/autoDetectChanges.md +3 -3
- package/plugin/skills/muggle-preferences/preference-gates/autoE2ETest.md +11 -0
- package/plugin/skills/muggle-preferences/preference-gates/autoLogin.md +1 -1
- package/plugin/skills/muggle-preferences/preference-gates/autoPublishLocalResults.md +2 -2
- package/plugin/skills/muggle-preferences/preference-gates/autoRebase.md +11 -0
- package/plugin/skills/muggle-preferences/preference-gates/autoSelectLocalHost.md +19 -0
- package/plugin/skills/muggle-preferences/preference-gates/autoSelectProject.md +1 -2
- package/plugin/skills/muggle-preferences/preference-gates/autoUseWorktree.md +11 -0
- package/plugin/skills/muggle-preferences/preference-gates/checkForUpdates.md +4 -4
- package/plugin/skills/muggle-preferences/preference-gates/defaultExecutionMode.md +1 -1
- package/plugin/skills/muggle-preferences/preference-gates/openTestResultsAfterRun.md +1 -1
- package/plugin/skills/muggle-preferences/preference-gates/postPRVisualWalkthrough.md +8 -25
- package/plugin/skills/muggle-preferences/preference-gates/showElectronBrowser.md +1 -1
- package/plugin/skills/muggle-preferences/preference-gates/suggestRelatedTestCases.md +4 -4
- package/plugin/skills/muggle-preferences/preference-gates/suggestRelatedUseCases.md +4 -4
- package/plugin/skills/muggle-repair/SKILL.md +4 -2
- package/plugin/skills/muggle-status/SKILL.md +8 -5
- package/plugin/skills/muggle-test/SKILL.md +110 -86
- package/plugin/skills/muggle-test-feature-local/SKILL.md +73 -66
- package/plugin/skills/muggle-test-import/SKILL.md +28 -23
- package/plugin/skills/muggle-test-prepare/SKILL.md +79 -18
- package/plugin/skills/muggle-test-regenerate-missing/SKILL.md +34 -18
- package/plugin/skills/muggle-test-regenerate-missing/evals/evals.json +9 -9
- package/plugin/skills/muggle-upgrade/SKILL.md +4 -2
- package/plugin/skills/muggle-works-npm-release/SKILL.md +6 -4
- package/plugin/skills/mupgrade/SKILL.md +8 -0
- package/scripts/postinstall.mjs +11 -1
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: muggle-test-regenerate-missing
|
|
3
|
-
description: "Bulk-regenerate test scripts for every test case in a Muggle AI project that doesn't currently have an active script. Scans the project, finds test cases stuck in DRAFT or GENERATION_PENDING (no usable script attached), shows the user the list, and on approval kicks off bulk remote test script generation via the Muggle cloud. Use this skill whenever the user asks to 'regenerate missing scripts', 'fill in missing test scripts', 'generate scripts for test cases without one', 'regen all the test cases that don't have scripts', 'rebuild scripts for stale test cases', 'fix test cases with no script', 'bulk regenerate', or any phrasing that means 'kick off script generation across a project for the cases that need it'. Triggers on: 'regenerate missing test scripts', 'generate scripts for all empty test cases', 'fill the gaps in my test scripts', 'bulk test script regen', 'all my test cases without active scripts'. This is the go-to skill for project-wide script catch-up — it handles discovery, filtering, confirmation, and remote workflow dispatch end-to-end."
|
|
3
|
+
description: "Bulk-regenerate test scripts for every test case in a Muggle AI project that doesn't currently have an active script. Scans the project, finds test cases stuck in DRAFT or GENERATION_PENDING (no usable script attached), shows the user the list, and on approval kicks off bulk remote test script generation via the Muggle Test cloud. Use this skill whenever the user asks to 'regenerate missing scripts', 'fill in missing test scripts', 'generate scripts for test cases without one', 'regen all the test cases that don't have scripts', 'rebuild scripts for stale test cases', 'fix test cases with no script', 'bulk regenerate', or any phrasing that means 'kick off script generation across a project for the cases that need it'. Triggers on: 'regenerate missing test scripts', 'generate scripts for all empty test cases', 'fill the gaps in my test scripts', 'bulk test script regen', 'all my test cases without active scripts'. This is the go-to skill for project-wide script catch-up — it handles discovery, filtering, confirmation, and remote workflow dispatch end-to-end."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Muggle Test — Regenerate Missing Test Scripts
|
|
7
7
|
|
|
8
|
+
> Telemetry first step: see [`_shared/telemetry-emit.md`](../_shared/telemetry-emit.md). Use `skillName: "muggle-test-regenerate-missing"`.
|
|
9
|
+
|
|
8
10
|
A bulk maintenance skill for Muggle AI projects. It finds every test case in a project that does **not** currently have an active (ready-to-run) test script, shows the list to the user, and on approval triggers a remote test script generation workflow for each one. Useful after creating a batch of new test cases or when cleaning up a project that has drifted.
|
|
9
11
|
|
|
10
|
-
Execution is **remote only** — Muggle's cloud generates the scripts in parallel against the project URL. The user's machine is not involved beyond making API calls.
|
|
12
|
+
Execution is **remote only** — Muggle Test's cloud generates the scripts in parallel against the project URL. The user's machine is not involved beyond making API calls.
|
|
11
13
|
|
|
12
14
|
## Preferences
|
|
13
15
|
|
|
@@ -16,11 +18,11 @@ Gates run per `preference-gates/README.md`.
|
|
|
16
18
|
| Preference | Step | Decision it gates |
|
|
17
19
|
|------------|------|-------------------|
|
|
18
20
|
| `autoLogin` | 1 | Reuse saved credentials when auth is required |
|
|
19
|
-
| `autoSelectProject` | 2 | Reuse last-used Muggle project for this repo |
|
|
21
|
+
| `autoSelectProject` | 2 | Reuse last-used Muggle Test project for this repo |
|
|
20
22
|
|
|
21
23
|
## Concept: what counts as "no active script"
|
|
22
24
|
|
|
23
|
-
In the Muggle data model, a test case carries a status that reflects whether it has a usable script attached:
|
|
25
|
+
In the Muggle Test data model, a test case carries a status that reflects whether it has a usable script attached:
|
|
24
26
|
|
|
25
27
|
| Status | Meaning | Regenerate? |
|
|
26
28
|
|:-------|:--------|:-----------:|
|
|
@@ -38,9 +40,9 @@ Treat this filter as a default, not a law. If the user explicitly says "include
|
|
|
38
40
|
|
|
39
41
|
## UX Guidelines — Minimize Typing
|
|
40
42
|
|
|
41
|
-
**Every selection-based question MUST use the `
|
|
43
|
+
**Every selection-based question MUST use the `AskUserQuestion` tool** (or the platform's equivalent structured selection tool). Never ask the user to "reply with a number" — always present clickable options.
|
|
42
44
|
|
|
43
|
-
- **Selections** (project, which test cases to include): Use `
|
|
45
|
+
- **Selections** (project, which test cases to include): Use `AskUserQuestion`, with `allow_multiple: true` for the test case picker.
|
|
44
46
|
- **Free-text inputs** (project URL when creating, override filters): Only ask as plain text when the option set isn't finite.
|
|
45
47
|
- **Batch related questions** when independent. Don't ask sequentially what could be one screen.
|
|
46
48
|
|
|
@@ -50,8 +52,9 @@ Treat this filter as a default, not a law. If the user explicitly says "include
|
|
|
50
52
|
|
|
51
53
|
1. Call `muggle-remote-auth-status`.
|
|
52
54
|
2. If **authenticated and not expired** → gate `autoLogin` (per `preference-gates/README.md`):
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
+
- `always` → proceed with saved session.
|
|
56
|
+
- `never` → `muggle-remote-auth-login` with `forceNewSession: true`, then `muggle-remote-auth-poll`.
|
|
57
|
+
- `ask` → run Picker 1 from `preference-gates/autoLogin.md` via `AskUserQuestion`; map the answer back to one of the actions above.
|
|
55
58
|
3. If **not authenticated or expired** → call `muggle-remote-auth-login`, then poll with `muggle-remote-auth-poll`.
|
|
56
59
|
4. Do not skip auth and do not assume a stale token still works.
|
|
57
60
|
|
|
@@ -61,9 +64,9 @@ If auth keeps failing, suggest the user run `muggle logout && muggle login` from
|
|
|
61
64
|
|
|
62
65
|
A **project** is the unit on the Muggle AI dashboard that groups test cases, scripts, and runs. The user must pick the one to scan — never auto-select from repo name, branch, or URL heuristics.
|
|
63
66
|
|
|
64
|
-
The per-repo project cache lives at `<cwd>/.muggle-ai/last-project.json` (via the `muggle-local-last-project-get` / `muggle-local-last-project-set` MCP tools). Look for `Muggle Last Project: id=… url=… name="…"` in session context.
|
|
67
|
+
The per-repo project cache lives at `<cwd>/.muggle-ai/last-project.json` (via the `muggle-local-last-project-get` / `muggle-local-last-project-set` MCP tools). Look for `Muggle Test Last Project: id=… url=… name="…"` in session context.
|
|
65
68
|
|
|
66
|
-
Gate `autoSelectProject` (per `preference-gates/README.md`). Cache: `Muggle Last Project` session line.
|
|
69
|
+
Gate `autoSelectProject` (per `preference-gates/README.md`). Cache: `Muggle Test Last Project` session line.
|
|
67
70
|
- `always` + cache → use cached `projectId`, proceed to Step 3. No cache → fall through to `ask`.
|
|
68
71
|
- `never` → full project list; skip Picker 2.
|
|
69
72
|
- `ask` → project list picker (see gate file for spec + Picker 2 override). Skip Picker 2 if "Create new project".
|
|
@@ -71,7 +74,7 @@ Gate `autoSelectProject` (per `preference-gates/README.md`). Cache: `Muggle Last
|
|
|
71
74
|
### Logic
|
|
72
75
|
|
|
73
76
|
1. Call `muggle-remote-project-list` (only when not satisfied by the `always` cache).
|
|
74
|
-
2. Use `
|
|
77
|
+
2. Use `AskUserQuestion` to present projects as clickable options. Include the project URL in each label so the user can disambiguate. Always include "Create new project" as the last option.
|
|
75
78
|
3. Wait for explicit selection.
|
|
76
79
|
4. If the user picks "Create new project": collect `projectName`, `description`, and `url`, then call `muggle-remote-project-create`.
|
|
77
80
|
|
|
@@ -107,7 +110,7 @@ If after filtering the list is empty, congratulate the user — every test case
|
|
|
107
110
|
|
|
108
111
|
### Step 5 — Present and Confirm Selection
|
|
109
112
|
|
|
110
|
-
Use `
|
|
113
|
+
Use `AskUserQuestion` with `allow_multiple: true` to present every candidate test case as a clickable option. The user must explicitly approve which ones to regenerate.
|
|
111
114
|
|
|
112
115
|
For each option label, show enough context for the user to make a real decision:
|
|
113
116
|
|
|
@@ -120,12 +123,12 @@ For example:
|
|
|
120
123
|
- `[GENERATION_PENDING] Add item to cart — use case: Checkout Flow`
|
|
121
124
|
|
|
122
125
|
Default behavior:
|
|
123
|
-
- If there are **≤ 25** candidates, present all of them in a single `
|
|
126
|
+
- If there are **≤ 25** candidates, present all of them in a single `AskUserQuestion` with everything pre-checked and let the user deselect anything they want to skip.
|
|
124
127
|
- If there are **> 25** candidates, show the first 25 ranked by status priority (`DRAFT` → `GENERATION_PENDING`), plus a tail option **"Include all N — don't make me click each one"**. The user can also pick "Show next batch" to see more.
|
|
125
128
|
|
|
126
|
-
After selection, call `
|
|
129
|
+
After selection, call `AskUserQuestion` once more for a final confirmation:
|
|
127
130
|
|
|
128
|
-
> "About to start remote test script generation for **N** test cases against `<projectUrl>`. This will consume Muggle workflow budget. Proceed?"
|
|
131
|
+
> "About to start remote test script generation for **N** test cases against `<projectUrl>`. This will consume Muggle Test workflow budget. Proceed?"
|
|
129
132
|
>
|
|
130
133
|
> - "Yes, start all N"
|
|
131
134
|
> - "No, cancel"
|
|
@@ -162,6 +165,19 @@ Total: 17 dispatched | 16 started | 1 failed
|
|
|
162
165
|
|
|
163
166
|
For failures: include a one-line error excerpt from the item's error field and (where possible) a hint at the cause (e.g., "missing instructions field — edit the test case in the dashboard, then re-run this skill").
|
|
164
167
|
|
|
168
|
+
### Per-item failure routing (regen)
|
|
169
|
+
|
|
170
|
+
For every item with a non-success dispatch status, follow [`_shared/failure-mode-handling.md`](../_shared/failure-mode-handling.md) section C (regen failure buckets: `transient` / `infra` / `agent-course` / `product-uxux`).
|
|
171
|
+
|
|
172
|
+
Because this skill is bulk-dispatch (no live user attention per item), batch the routing — don't ask the user per item:
|
|
173
|
+
|
|
174
|
+
1. Group failed items by AI-classified bucket using the signal heuristics in the shared doc (most failures here will be `transient` or `infra` since dispatch failures rarely surface product-uxux signals).
|
|
175
|
+
2. Emit one `regen-failure-classified` event per failed item via `muggle-local-telemetry-event-emit`.
|
|
176
|
+
3. Present the buckets to the user via a single `AskUserQuestion` summarizing counts: e.g., "12 transient (recommend retry), 3 infra (recommend report-bug). What do you want to do?" Options: "Retry transient items", "Report all to Muggle AI", "muggle-feedback for selected items", "Skip — leave them as-is".
|
|
177
|
+
4. Emit one `regen-failure-resolved` event per item with the user's batch decision applied.
|
|
178
|
+
|
|
179
|
+
Bulk regen does not run replays, so the section B (replay) router does not apply here.
|
|
180
|
+
|
|
165
181
|
### Step 8 — Open the Dashboard
|
|
166
182
|
|
|
167
183
|
Open the Muggle AI dashboard so the user can watch progress visually:
|
|
@@ -200,11 +216,11 @@ Add item to cart rt-ghi789 COMPLETED 12
|
|
|
200
216
|
|
|
201
217
|
## Non-negotiables
|
|
202
218
|
|
|
203
|
-
- **The user MUST select the project** — present projects via `
|
|
204
|
-
- **The user MUST approve which test cases to regenerate** — show the candidates via `
|
|
219
|
+
- **The user MUST select the project** — present projects via `AskUserQuestion`, never infer from cwd, repo name, or URL guesses.
|
|
220
|
+
- **The user MUST approve which test cases to regenerate** — show the candidates via `AskUserQuestion`, let them deselect, then confirm again before any dispatch. Bulk-regenerating without approval can waste meaningful workflow budget.
|
|
205
221
|
- **Default filter is `DRAFT` + `GENERATION_PENDING`** — never include `GENERATING`, `ACTIVE`, `DEPRECATED`, `ARCHIVED`, `REPLAYING`, or `REPLAY_PENDING` unless the user explicitly says so. `GENERATING` already has a workflow in flight and dispatching another races against it. `ACTIVE` test cases already have working scripts. The rest reflect deliberate user decisions or in-flight replays the skill should not interfere with.
|
|
206
222
|
- **Use the bulk endpoint for dispatch** — call `muggle-remote-workflow-start-test-script-generation-bulk` once with all selected test case IDs rather than dispatching one-by-one. The backend resolves full test case details internally.
|
|
207
223
|
- **Failures don't abort the batch** — the bulk API returns per-item status. Surface failures in the report. Partial progress beats no progress.
|
|
208
224
|
- **Open the dashboard, don't poll by default** — the runs page is the canonical view of progress. Only poll if the user explicitly asks.
|
|
209
|
-
- **Use `
|
|
225
|
+
- **Use `AskUserQuestion` for every selection** — never ask the user to type a number.
|
|
210
226
|
- **Can be invoked at any state** — if the user already has a project chosen in conversation context, skip Step 2 and go straight to scanning.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"skill_name": "muggle-test-regenerate-missing",
|
|
3
|
-
"notes": "These evals test the PLAN behavior. Because Muggle MCP tools require live auth and a real project, the subagents can't actually execute the workflow — each prompt tells them to write a step-by-step plan instead. The assertions check whether the plan reflects the skill's non-negotiables (correct filter,
|
|
3
|
+
"notes": "These evals test the PLAN behavior. Because Muggle MCP tools require live auth and a real project, the subagents can't actually execute the workflow — each prompt tells them to write a step-by-step plan instead. The assertions check whether the plan reflects the skill's non-negotiables (correct filter, AskUserQuestion-based selection, no auto-select, dispatch via the remote workflow tool, batch-failure tolerance, dashboard open-at-end).",
|
|
4
4
|
"evals": [
|
|
5
5
|
{
|
|
6
6
|
"id": 0,
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
"files": [],
|
|
10
10
|
"assertions": [
|
|
11
11
|
{ "name": "calls_auth_status_first", "text": "Plan starts by calling muggle-remote-auth-status (and login/poll if needed) before any other Muggle tool." },
|
|
12
|
-
{ "name": "project_selection_via_AskQuestion", "text": "Plan calls muggle-remote-project-list and presents projects via
|
|
12
|
+
{ "name": "project_selection_via_AskQuestion", "text": "Plan calls muggle-remote-project-list and presents projects via AskUserQuestion rather than auto-selecting 'Acme Checkout QA' by name match." },
|
|
13
13
|
{ "name": "default_filter_is_draft_and_generation_pending", "text": "Plan states that the status filter is DRAFT + GENERATION_PENDING and explicitly excludes GENERATING, ACTIVE, DEPRECATED, ARCHIVED, REPLAYING, and REPLAY_PENDING." },
|
|
14
14
|
{ "name": "uses_test_case_list_paginated", "text": "Plan calls muggle-remote-test-case-list with pagination (or equivalent full-enumeration) for the project scan step." },
|
|
15
15
|
{ "name": "test_case_get_before_dispatch", "text": "Plan calls muggle-remote-test-case-get for each candidate before dispatching generation, to obtain the full payload (goal, precondition, instructions, expectedResult, url)." },
|
|
16
16
|
{ "name": "dispatch_via_remote_workflow_tool", "text": "Plan dispatches each regeneration via muggle-remote-workflow-start-test-script-generation (not a local Electron tool)." },
|
|
17
|
-
{ "name": "candidate_list_via_AskQuestion_multi_select", "text": "Plan presents the candidate test cases via
|
|
18
|
-
{ "name": "final_confirmation_step", "text": "Plan includes a final yes/no confirmation
|
|
17
|
+
{ "name": "candidate_list_via_AskQuestion_multi_select", "text": "Plan presents the candidate test cases via AskUserQuestion with multi-select (allow_multiple: true) so the user can deselect individuals." },
|
|
18
|
+
{ "name": "final_confirmation_step", "text": "Plan includes a final yes/no confirmation AskUserQuestion before any dispatch, showing the count of test cases about to be regenerated." },
|
|
19
19
|
{ "name": "batch_failure_tolerance", "text": "Plan explicitly states that a single dispatch failure does not abort the batch — failures are logged and the loop continues." },
|
|
20
20
|
{ "name": "opens_dashboard_runs_page_at_end", "text": "Plan ends by opening the Muggle dashboard project runs page for the user to watch progress." }
|
|
21
21
|
]
|
|
@@ -27,12 +27,12 @@
|
|
|
27
27
|
"files": [],
|
|
28
28
|
"assertions": [
|
|
29
29
|
{ "name": "calls_auth_status_first", "text": "Plan starts by calling muggle-remote-auth-status before any other Muggle tool." },
|
|
30
|
-
{ "name": "project_selection_via_AskQuestion", "text": "Plan uses
|
|
30
|
+
{ "name": "project_selection_via_AskQuestion", "text": "Plan uses AskUserQuestion to let the user confirm project choice; does not auto-select 'Tanka Staging' by name match alone." },
|
|
31
31
|
{ "name": "honors_override_to_include_generating", "text": "Plan explicitly honors the user's override and includes GENERATING in the filter for this run, noting that this is a deliberate override of the default filter." },
|
|
32
32
|
{ "name": "still_excludes_active_deprecated_archived", "text": "Even with the override, the plan still excludes ACTIVE, DEPRECATED, ARCHIVED, REPLAY_PENDING, and REPLAYING — it only widens the filter to include GENERATING, not everything." },
|
|
33
33
|
{ "name": "handles_large_candidate_list", "text": "Plan acknowledges that with ~200 test cases the candidate list may exceed 25 and describes paging or bulk-include handling (e.g., 'Include all N' tail option)." },
|
|
34
34
|
{ "name": "dispatch_via_remote_workflow_tool", "text": "Plan dispatches each regeneration via muggle-remote-workflow-start-test-script-generation." },
|
|
35
|
-
{ "name": "final_confirmation_step", "text": "Plan includes a final yes/no
|
|
35
|
+
{ "name": "final_confirmation_step", "text": "Plan includes a final yes/no AskUserQuestion confirmation before any dispatch, showing the total count." },
|
|
36
36
|
{ "name": "batch_failure_tolerance", "text": "Plan states that a single dispatch failure does not abort the batch." },
|
|
37
37
|
{ "name": "opens_dashboard_runs_page_at_end", "text": "Plan ends by opening the Muggle dashboard project runs page." }
|
|
38
38
|
]
|
|
@@ -44,12 +44,12 @@
|
|
|
44
44
|
"files": [],
|
|
45
45
|
"assertions": [
|
|
46
46
|
{ "name": "calls_auth_status_first", "text": "Plan starts by calling muggle-remote-auth-status before any other Muggle tool." },
|
|
47
|
-
{ "name": "project_selection_via_AskQuestion", "text": "Plan uses
|
|
47
|
+
{ "name": "project_selection_via_AskQuestion", "text": "Plan uses AskUserQuestion to let the user pick the project — does not infer it." },
|
|
48
48
|
{ "name": "default_filter_is_draft_and_generation_pending", "text": "Plan states that the status filter is DRAFT + GENERATION_PENDING by default." },
|
|
49
|
-
{ "name": "small_list_all_preselected", "text": "Plan describes presenting all candidates in a single
|
|
49
|
+
{ "name": "small_list_all_preselected", "text": "Plan describes presenting all candidates in a single AskUserQuestion with everything pre-checked (since the candidate list is ≤ 25)." },
|
|
50
50
|
{ "name": "test_case_get_before_dispatch", "text": "Plan calls muggle-remote-test-case-get for each candidate before dispatching generation." },
|
|
51
51
|
{ "name": "dispatch_via_remote_workflow_tool", "text": "Plan dispatches each regeneration via muggle-remote-workflow-start-test-script-generation." },
|
|
52
|
-
{ "name": "final_confirmation_step", "text": "Plan includes a final yes/no
|
|
52
|
+
{ "name": "final_confirmation_step", "text": "Plan includes a final yes/no AskUserQuestion confirmation before any dispatch." },
|
|
53
53
|
{ "name": "batch_failure_tolerance", "text": "Plan states that a single dispatch failure does not abort the batch." },
|
|
54
54
|
{ "name": "opens_dashboard_runs_page_at_end", "text": "Plan ends by opening the Muggle dashboard project runs page." }
|
|
55
55
|
]
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: muggle-upgrade
|
|
3
|
-
description: Update Muggle AI to latest version. Use when user types muggle upgrade or asks to update Muggle tools.
|
|
3
|
+
description: Update Muggle AI to latest version. Use when user types muggle upgrade or asks to update Muggle Test tools.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Muggle Upgrade
|
|
6
|
+
# Muggle Test Upgrade
|
|
7
|
+
|
|
8
|
+
> Telemetry first step: see [`_shared/telemetry-emit.md`](../_shared/telemetry-emit.md). Use `skillName: "muggle-upgrade"`.
|
|
7
9
|
|
|
8
10
|
Update all Muggle AI components to the latest published version. This means **both** the `@muggleai/works` CLI on npm **and** the Electron runner the CLI manages.
|
|
9
11
|
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: muggle-works-npm-release
|
|
3
3
|
description: >-
|
|
4
|
-
Cut @muggleai/works release:
|
|
4
|
+
Cut @muggleai/works release: AskUserQuestion (major/minor/patch), sync master, stop if
|
|
5
5
|
nothing ships, semver baseline + Electron from GitHub, confirm plan, bump
|
|
6
6
|
package.json + sync:versions, full local verify, chore(release) PR, merge via gh,
|
|
7
7
|
dispatch publish-works-to-npm.yml—no local npm publish.
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
# Muggle Works — npm release (single playbook)
|
|
10
|
+
# Muggle Test Works — npm release (single playbook)
|
|
11
|
+
|
|
12
|
+
> Telemetry first step: see [`_shared/telemetry-emit.md`](../_shared/telemetry-emit.md). Use `skillName: "muggle-works-npm-release"`.
|
|
11
13
|
|
|
12
14
|
Repo: **`multiplex-ai/muggle-ai-works`**. Workflow: **`.github/workflows/publish-works-to-npm.yml`** (“Publish Works to npm”). **Never** run local **`npm publish`** (OIDC trusted publishing in CI).
|
|
13
15
|
|
|
@@ -17,7 +19,7 @@ Repo: **`multiplex-ai/muggle-ai-works`**. Workflow: **`.github/workflows/publish
|
|
|
17
19
|
|
|
18
20
|
**Stop until the user answers.**
|
|
19
21
|
|
|
20
|
-
**Prefer `
|
|
22
|
+
**Prefer `AskUserQuestion`** with exactly these three options: **major**, **minor**, **patch** (fix). If the environment has no structured question tool, ask the same in plain text:
|
|
21
23
|
|
|
22
24
|
> Is this release a **major**, **minor**, or **patch** (fix)?
|
|
23
25
|
|
|
@@ -185,7 +187,7 @@ Give the user the **Actions run URL**. If npm lags, wait ~60s and retry.
|
|
|
185
187
|
## Rules
|
|
186
188
|
|
|
187
189
|
- **No local `npm publish`.**
|
|
188
|
-
- **Phase 1:** use **`
|
|
190
|
+
- **Phase 1:** use **`AskUserQuestion`** for major / minor / patch when available (see Phase 1).
|
|
189
191
|
- Phases 1–3: keep chat concise; Phase 4–5 can be terse status lines.
|
|
190
192
|
- If the user cancels after Phase 3, **do not** merge or dispatch CI.
|
|
191
193
|
- **Tag vs npm:** **`v*`** tags are for the **npm** package; **`electron-app-v*`** is separate — **`electronAppVersion`** can move independently of **`version`**.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mupgrade
|
|
3
|
+
description: Explicit short alias for the `muggle-upgrade` skill. ONLY invoke when the user explicitly types `mupgrade` or `/mupgrade` — never auto-trigger from any other phrasing.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# mupgrade — alias for muggle-upgrade
|
|
7
|
+
|
|
8
|
+
Invoke the `muggle-upgrade` skill via the Skill tool. Forward any user-provided arguments unchanged.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"release": "4.10.
|
|
3
|
-
"buildId": "run-
|
|
4
|
-
"commitSha": "
|
|
5
|
-
"buildTime": "2026-05-
|
|
2
|
+
"release": "4.10.1",
|
|
3
|
+
"buildId": "run-32-1",
|
|
4
|
+
"commitSha": "8be7ac283bd1924e1d2e2df90f214a40d85a3038",
|
|
5
|
+
"buildTime": "2026-05-13T18:34:37Z",
|
|
6
6
|
"serviceName": "muggle-ai-works-mcp"
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { DEFAULT_PREFERENCES, PREFERENCES_FILE_NAME, PREFERENCES_PROJECT_DIR_NAME, PREFERENCES_SCHEMA, PREFERENCES_VERSION, PREFERENCE_ALLOWED_VALUES, PreferenceKey, PreferenceValue, buildElectronAppChecksumsUrl, buildElectronAppReleaseAssetUrl, buildElectronAppReleaseTag, calculateFileChecksum, createApiKeyWithToken, createChildLogger, deleteApiKeyData, deleteCredentials, e2e_exports as e2e, formatPreferencesOneLiner, getApiKey, getApiKeyFilePath, getAuthService, getBundledElectronAppVersion, getCallerCredentials, getCallerCredentialsAsync, getChecksumForPlatform, getConfig, getCredentialsFilePath, getDataDir, getDownloadBaseUrl, getElectronAppChecksums, getElectronAppDir, getElectronAppVersion, getElectronAppVersionSource, getLocalQaTools, getLogger, getPlatformKey, getQaTools, getValidApiKeyData, getValidCredentials, hasApiKey, isElectronAppInstalled, isFirstRun, loadApiKeyData, loadCredentials, local_exports as localQa, mcp_exports as mcp, openBrowserUrl, performLogin, performLogout, pollDeviceCode, e2e_exports as qa, readGlobalPreferences, readProjectPreferences, resetConfig, resetLogger, resetPreference, resolvePreferences, saveApiKey, saveApiKeyData, saveCredentials, startDeviceCodeFlow, toolRequiresAuth, validatePreference, verifyFileChecksum, writePreferences } from './chunk-
|
|
1
|
+
export { DEFAULT_PREFERENCES, PREFERENCES_FILE_NAME, PREFERENCES_PROJECT_DIR_NAME, PREFERENCES_SCHEMA, PREFERENCES_VERSION, PREFERENCE_ALLOWED_VALUES, PreferenceKey, PreferenceValue, buildElectronAppChecksumsUrl, buildElectronAppReleaseAssetUrl, buildElectronAppReleaseTag, calculateFileChecksum, createApiKeyWithToken, createChildLogger, deleteApiKeyData, deleteCredentials, e2e_exports as e2e, formatPreferencesOneLiner, getApiKey, getApiKeyFilePath, getAuthService, getBundledElectronAppVersion, getCallerCredentials, getCallerCredentialsAsync, getChecksumForPlatform, getConfig, getCredentialsFilePath, getDataDir, getDownloadBaseUrl, getElectronAppChecksums, getElectronAppDir, getElectronAppVersion, getElectronAppVersionSource, getLocalQaTools, getLogger, getPlatformKey, getQaTools, getValidApiKeyData, getValidCredentials, hasApiKey, isElectronAppInstalled, isFirstRun, loadApiKeyData, loadCredentials, local_exports as localQa, mcp_exports as mcp, openBrowserUrl, performLogin, performLogout, pollDeviceCode, e2e_exports as qa, readGlobalPreferences, readProjectPreferences, resetConfig, resetLogger, resetPreference, resolveElectronAppPathOrNull, resolvePreferences, saveApiKey, saveApiKeyData, saveCredentials, startDeviceCodeFlow, toolRequiresAuth, validatePreference, verifyFileChecksum, writePreferences } from './chunk-ZKRHFTIC.js';
|
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.10.
|
|
4
|
+
"version": "4.10.1",
|
|
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",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
],
|
|
17
17
|
"scripts": {
|
|
18
18
|
"clean": "rimraf dist",
|
|
19
|
-
"build": "tsup && node scripts/write-release-manifest.mjs && node scripts/sync-versions.mjs && node scripts/build-plugin.mjs",
|
|
19
|
+
"build": "tsup && node scripts/strip-telemetry-comments.mjs && node scripts/write-release-manifest.mjs && node scripts/sync-versions.mjs && node scripts/build-plugin.mjs",
|
|
20
20
|
"build:plugin": "node scripts/build-plugin.mjs",
|
|
21
21
|
"sync:versions": "node scripts/sync-versions.mjs",
|
|
22
22
|
"build:release": "npm run build",
|
|
@@ -41,20 +41,21 @@
|
|
|
41
41
|
"test:watch": "vitest"
|
|
42
42
|
},
|
|
43
43
|
"muggleConfig": {
|
|
44
|
-
"electronAppVersion": "1.0.
|
|
44
|
+
"electronAppVersion": "1.0.82",
|
|
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
|
-
"win32-x64": "
|
|
51
|
-
"linux-x64": "
|
|
48
|
+
"darwin-arm64": "ceab8a6ea1982cff9385896d392519ef2b5545d3f99e1409eec247e888334b02",
|
|
49
|
+
"darwin-x64": "423b23d98a2858c7e4d203133aab586bbc5014b7cd50a4aa7125803ccaf7deed",
|
|
50
|
+
"win32-x64": "c231ae9ae512ab97d3ee7980309a807c31b9d8033daab47c50bc1d6f4c112e4f",
|
|
51
|
+
"linux-x64": "0dd15add46ca7bed5ad8e4d4cb751c63506b9dbb2eec294d9039426baeba8c32"
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
56
56
|
"@muggleai/mcp": "file:packages/mcps",
|
|
57
57
|
"@muggleai/workflows": "file:packages/workflows",
|
|
58
|
+
"applicationinsights": "^3.14.0",
|
|
58
59
|
"axios": "^1.7.9",
|
|
59
60
|
"commander": "^14.0.3",
|
|
60
61
|
"open": "^11.0.0",
|
|
@@ -64,6 +65,7 @@
|
|
|
64
65
|
"zod": "^4.3.6"
|
|
65
66
|
},
|
|
66
67
|
"devDependencies": {
|
|
68
|
+
"@anthropic-ai/claude-agent-sdk": "^0.2.133",
|
|
67
69
|
"@eslint/js": "^10.0.1",
|
|
68
70
|
"@types/node": "^25.5.2",
|
|
69
71
|
"@types/uuid": "^11.0.0",
|
|
@@ -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.10.
|
|
4
|
+
"version": "4.10.1",
|
|
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.10.
|
|
5
|
+
"version": "4.10.1",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Muggle AI",
|
|
8
8
|
"email": "support@muggle-ai.com"
|
package/plugin/README.md
CHANGED
|
@@ -15,7 +15,7 @@ For npm installs:
|
|
|
15
15
|
npm install -g @muggleai/works
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
This updates the CLI, configures Cursor MCP (`~/.cursor/mcp.json`), and syncs `muggle-*` skills into `~/.cursor/skills/`. Claude slash commands remain plugin-managed, so use `/plugin update muggleai@muggle-works` to refresh them.
|
|
18
|
+
This updates the CLI, configures Cursor MCP (`~/.cursor/mcp.json`), and syncs `muggle-*` skills (plus their short `m*` aliases) into `~/.cursor/skills/`. Claude slash commands remain plugin-managed, so use `/plugin update muggleai@muggle-works` to refresh them.
|
|
19
19
|
|
|
20
20
|
## Skills
|
|
21
21
|
|
|
@@ -23,7 +23,7 @@ Type `muggle` to discover the full command family.
|
|
|
23
23
|
|
|
24
24
|
| Skill | What it does |
|
|
25
25
|
|:---|:---|
|
|
26
|
-
| `/muggle:muggle` | Router and menu for all Muggle commands. |
|
|
26
|
+
| `/muggle:muggle` | Router and menu for all Muggle Test commands. |
|
|
27
27
|
| `/muggle:muggle-do` | Autonomous dev pipeline: requirements, code, unit tests, E2E acceptance tests, PR. |
|
|
28
28
|
| `/muggle:muggle-test` | Change-driven E2E acceptance router: detects code changes, maps to use cases, runs test generation locally or remotely, publishes to dashboard, opens in browser, posts E2E acceptance results to PR. |
|
|
29
29
|
| `/muggle:muggle-test-feature-local` | Test a feature on localhost with AI-driven browser automation. Offers publish to cloud after each run. |
|
|
@@ -33,6 +33,8 @@ Type `muggle` to discover the full command family.
|
|
|
33
33
|
| `/muggle:muggle-repair` | Diagnose and fix broken installation automatically. |
|
|
34
34
|
| `/muggle:muggle-upgrade` | Update Electron browser test runner and MCP server to latest version. |
|
|
35
35
|
|
|
36
|
+
Each skill above also ships a short alias to save typing — `m` (router), `mtest`, `mdo`, `mpr`, `mprefs`, `mstatus`, `mrepair`, `mupgrade`, `mfeedback`, `mimport`, `mtestlocal`, `mtestprep`, `mregen`, `mrelease`. Type `/m` (Claude Code) or `m` (Cursor) to open the menu, or jump straight to one (e.g. `/mtest`).
|
|
37
|
+
|
|
36
38
|
## MCP Tools
|
|
37
39
|
|
|
38
40
|
The plugin ships an MCP server with 70+ tools for project management, test case generation, browser automation, and reporting. The server starts automatically when the plugin is enabled.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: acceptance-tester
|
|
3
|
-
description: "E2E acceptance testing agent — runs real-browser tests against web apps and reports structured results with blocking issues and suggested fixes. Also imports existing test artifacts, manages Muggle preferences, and operates the Muggle AI suite (status checks, repairs). Dispatch this agent when the team needs acceptance test feedback, test coverage for a feature, or Muggle suite operations."
|
|
3
|
+
description: "E2E acceptance testing agent — runs real-browser tests against web apps and reports structured results with blocking issues and suggested fixes. Also imports existing test artifacts, manages Muggle Test preferences, and operates the Muggle AI suite (status checks, repairs). Dispatch this agent when the team needs acceptance test feedback, test coverage for a feature, or Muggle Test suite operations."
|
|
4
4
|
model: sonnet
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Acceptance Tester
|
|
8
8
|
|
|
9
|
-
You are the team's acceptance testing specialist. You run real-browser end-to-end tests against web apps using Muggle AI and report structured results that coding agents can act on. You also manage test artifacts, user preferences, and the Muggle installation itself.
|
|
9
|
+
You are the team's acceptance testing specialist. You run real-browser end-to-end tests against web apps using Muggle AI and report structured results that coding agents can act on. You also manage test artifacts, user preferences, and the Muggle Test installation itself.
|
|
10
10
|
|
|
11
11
|
You operate through skills — never call raw MCP tools directly.
|
|
12
12
|
|
|
@@ -16,9 +16,9 @@ You operate through skills — never call raw MCP tools directly.
|
|
|
16
16
|
|-------|-------------|
|
|
17
17
|
| `muggle-test` | Run acceptance tests. Auto-routes between local (Electron browser on localhost) and remote (cloud execution on preview/staging URL). Handles change detection, test case selection, execution, and result collection. |
|
|
18
18
|
| `muggle-test-import` | Import existing test artifacts into Muggle Test — Playwright specs, Cypress tests, PRDs, Gherkin feature files, test plan documents. |
|
|
19
|
-
| `muggle-preferences` | View, set, or reset the 12 preference knobs that control Muggle behavior. |
|
|
20
|
-
| `muggle-repair` | Diagnose and fix broken Muggle installation components. |
|
|
21
|
-
| `muggle-status` | Check health of the Muggle installation — Electron app, MCP server, auth, CLI version. |
|
|
19
|
+
| `muggle-preferences` | View, set, or reset the 12 preference knobs that control Muggle Test behavior. |
|
|
20
|
+
| `muggle-repair` | Diagnose and fix broken Muggle Test installation components. |
|
|
21
|
+
| `muggle-status` | Check health of the Muggle Test installation — Electron app, MCP server, auth, CLI version. |
|
|
22
22
|
|
|
23
23
|
Select the skill based on what the orchestrator asks you to do. If the task doesn't clearly map to one skill, ask for clarification.
|
|
24
24
|
|
|
@@ -36,20 +36,27 @@ The orchestrator provides a dispatch prompt with:
|
|
|
36
36
|
|
|
37
37
|
### When Running Tests
|
|
38
38
|
|
|
39
|
-
Always return two sections:
|
|
39
|
+
Always return two sections. **This is the agent's text report back to the orchestrator — it is NOT the PR comment.** The PR comment is rendered separately by `muggle build-pr-section` via the `muggle-pr-visual-walkthrough` skill, and it has its own formatting (don't paste this template into a PR comment, don't add a "Verdict" line to a hand-written PR comment, don't add a "Project:" footer or `Tested on:` line — the CLI emits none of those).
|
|
40
40
|
|
|
41
41
|
**Section 1 — Test Summary**
|
|
42
42
|
|
|
43
43
|
```
|
|
44
44
|
## Test Summary
|
|
45
|
-
- **Tests:** {total} total — {passed} passed, {failed} failed
|
|
46
|
-
- **Verdict:** PASS | FAIL
|
|
47
|
-
- **Dashboard:** {link to Muggle dashboard, if results were published}
|
|
45
|
+
- **Tests:** {total} total — {passed} passed, {failed} failed, {inconclusive} inconclusive
|
|
46
|
+
- **Verdict:** PASS | FAIL | INCONCLUSIVE
|
|
47
|
+
- **Dashboard:** {link to Muggle Test dashboard, if results were published}
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
+
Verdict policy (matches the CLI's `computeVerdict`):
|
|
51
|
+
- Any failed → **FAIL**.
|
|
52
|
+
- No failures but any inconclusive → **INCONCLUSIVE**.
|
|
53
|
+
- All passed → **PASS**.
|
|
54
|
+
|
|
55
|
+
A test is **inconclusive** when the run could not yield a pass/fail signal for reasons outside the product itself: no replayable script, environment precondition unmet, infra error blocked execution, agent stalled before reaching the assertion (auth/cookie banner, missing secret). The product is not implicated. If you are tempted to call a run "passed except for one that didn't really run," that one is inconclusive.
|
|
56
|
+
|
|
50
57
|
**Section 2 — Per-Test Highlights**
|
|
51
58
|
|
|
52
|
-
Order failures first, then passes.
|
|
59
|
+
Order failures first, then inconclusives, then passes.
|
|
53
60
|
|
|
54
61
|
For each **failed** test:
|
|
55
62
|
|
|
@@ -59,6 +66,13 @@ For each **failed** test:
|
|
|
59
66
|
- **Suggested fix:** {What the coding agent should investigate. Reference UI flows and components, not specific file paths — the acceptance tester operates at the UI layer.}
|
|
60
67
|
```
|
|
61
68
|
|
|
69
|
+
For each **inconclusive** test:
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
### {Test Name} — INCONCLUSIVE
|
|
73
|
+
- **Reason:** {Why the run could not yield a pass/fail signal — one short sentence.}
|
|
74
|
+
```
|
|
75
|
+
|
|
62
76
|
For each **passed** test, list the name only:
|
|
63
77
|
|
|
64
78
|
```
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run a browser automation task on a website in natural language (alias for /muggle-do-task)
|
|
3
|
+
argument-hint: [task description and target site]
|
|
4
|
+
allowed-tools: [Skill]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Invoke the `muggle-do-task` skill via the Skill tool. Forward `$ARGUMENTS` as the skill's `args`.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Submit, list, or delete Muggle Test feedback (alias for /muggle-feedback)
|
|
3
|
+
argument-hint: [optional feedback text or action]
|
|
4
|
+
allowed-tools: [Skill]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Invoke the `muggle-feedback` skill via the Skill tool. Forward `$ARGUMENTS` as the skill's `args`.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Import existing tests/PRDs/specs INTO Muggle Test (alias for /muggle-test-import)
|
|
3
|
+
argument-hint: [path or source of tests to import]
|
|
4
|
+
allowed-tools: [Skill]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Invoke the `muggle-test-import` skill via the Skill tool. Forward `$ARGUMENTS` as the skill's `args`.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Post the Muggle E2E visual walkthrough to a PR (alias for /muggle-pr-visual-walkthrough)
|
|
3
|
+
argument-hint: [optional PR number]
|
|
4
|
+
allowed-tools: [Skill]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Invoke the `muggle-pr-visual-walkthrough` skill via the Skill tool. Forward `$ARGUMENTS` as the skill's `args`.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: View, set, or reset Muggle AI preferences (alias for /muggle-preferences)
|
|
3
|
+
argument-hint: [optional preference key or action]
|
|
4
|
+
allowed-tools: [Skill]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Invoke the `muggle-preferences` skill via the Skill tool. Forward `$ARGUMENTS` as the skill's `args`.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Bulk-regenerate test scripts for test cases missing one (alias for /muggle-test-regenerate-missing)
|
|
3
|
+
argument-hint: [optional project hint]
|
|
4
|
+
allowed-tools: [Skill]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Invoke the `muggle-test-regenerate-missing` skill via the Skill tool. Forward `$ARGUMENTS` as the skill's `args`.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Cut a @muggleai/works npm release (alias for /muggle-works-npm-release)
|
|
3
|
+
argument-hint: [major|minor|patch]
|
|
4
|
+
allowed-tools: [Skill]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Invoke the `muggle-works-npm-release` skill via the Skill tool. Forward `$ARGUMENTS` as the skill's `args`.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run change-driven E2E acceptance tests on your changes (alias for /muggle-test)
|
|
3
|
+
argument-hint: [optional context, e.g. "on staging"]
|
|
4
|
+
allowed-tools: [Skill]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Invoke the `muggle-test` skill via the Skill tool. Forward `$ARGUMENTS` as the skill's `args`.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run a real-browser E2E acceptance test against localhost (alias for /muggle-test-feature-local)
|
|
3
|
+
argument-hint: [feature or flow to test]
|
|
4
|
+
allowed-tools: [Skill]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Invoke the `muggle-test-feature-local` skill via the Skill tool. Forward `$ARGUMENTS` as the skill's `args`.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Prepare local dev servers and sibling services for E2E testing (alias for /muggle-test-prepare)
|
|
3
|
+
argument-hint: [no args]
|
|
4
|
+
allowed-tools: [Skill]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Invoke the `muggle-test-prepare` skill via the Skill tool. Forward `$ARGUMENTS` as the skill's `args`.
|