@qaping/cli 0.1.0 → 0.1.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/bin/qaping +11 -0
- package/package.json +1 -1
- package/skill/qaping/SKILL.md +28 -10
package/bin/qaping
CHANGED
|
@@ -183,12 +183,21 @@ function cmdPublishBuild(argv) {
|
|
|
183
183
|
.main(argv.slice(1), { brandCommand: "qaping publish-build", nextStepToolName: "qaping_playtest" });
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
+
function cmdPublish(argv) {
|
|
187
|
+
// WEB games: their "build" is a static directory, hosted (not zipped) — the
|
|
188
|
+
// kit's hosted-draft publisher, brand-seamed like publish-build above. The
|
|
189
|
+
// printed URL files as `url` on qaping_playtest with NO platform field.
|
|
190
|
+
return require(path.join(resolveKitDir(), "harness", "publish.js"))
|
|
191
|
+
.main(argv.slice(1), { brandCommand: "qaping publish" });
|
|
192
|
+
}
|
|
193
|
+
|
|
186
194
|
const HELP = `qaping — automatic QA for your game: real human playtesters, driven by your coding agent
|
|
187
195
|
|
|
188
196
|
usage:
|
|
189
197
|
qaping setup [claude-code|cursor|codex] [--force]
|
|
190
198
|
qaping remove [--client <c>] remove qaping's MCP entries, skill and rule
|
|
191
199
|
qaping publish-build <game.zip> --platform windows|macos
|
|
200
|
+
qaping publish <built-dir> host a WEB game's built output (prints the URL to file with)
|
|
192
201
|
qaping wait <ping_id> [--timeout <seconds>]
|
|
193
202
|
qaping whoami
|
|
194
203
|
qaping version
|
|
@@ -202,6 +211,7 @@ function route(cmd) {
|
|
|
202
211
|
if (cmd === "remove" || cmd === "uninstall") return "remove";
|
|
203
212
|
if (cmd === "wait" || cmd === "whoami") return "vendor";
|
|
204
213
|
if (cmd === "publish-build") return "publish-build";
|
|
214
|
+
if (cmd === "publish") return "publish";
|
|
205
215
|
return "unknown";
|
|
206
216
|
}
|
|
207
217
|
|
|
@@ -217,6 +227,7 @@ function main() {
|
|
|
217
227
|
// vendored default (the stock mount's wait) is not on /api/mcp/qaping.
|
|
218
228
|
case "vendor": return process.exit(spawnVendor(argv[0] === "wait" ? [...argv, "--wait-tool", "qaping_wait"] : argv));
|
|
219
229
|
case "publish-build": return void cmdPublishBuild(argv);
|
|
230
|
+
case "publish": return void cmdPublish(argv);
|
|
220
231
|
default:
|
|
221
232
|
console.error(HELP);
|
|
222
233
|
process.exit(1);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qaping/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "qaping: automatic QA for your game. Your coding agent authors and maintains the QA plan, ships each patch's build to real human playtesters, and reports what broke.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"qaping",
|
package/skill/qaping/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qaping
|
|
3
|
-
description: Run automatic QA for a game repo through qaping — real human playtesters play the developer's builds on their own hardware, and the agent runs the whole loop. Use when the user says "set up QA for my game", "run QA on this patch", "did this patch break anything", "playtest my game" or "playtest this build", or asks for regression checks, patch verification, or human playtesting of a game. Covers both halves of the product - authoring and maintaining QA-PLAN.md in the game repo, and the per-patch run (read the diff, build, publish-build, file qaping_playtest rounds, report on the PR, file issues, promote settled checks into repo code tests). Do not use for web apps, websites, or UI review of anything that is not a game
|
|
3
|
+
description: Run automatic QA for a game repo through qaping — real human playtesters play the developer's builds on their own hardware, and the agent runs the whole loop. Use when the user says "set up QA for my game", "run QA on this patch", "did this patch break anything", "playtest my game" or "playtest this build", or asks for regression checks, patch verification, or human playtesting of a game. Covers both halves of the product - authoring and maintaining QA-PLAN.md in the game repo, and the per-patch run (read the diff, build, publish-build, file qaping_playtest rounds, report on the PR, file issues, promote settled checks into repo code tests). Browser-playable web GAMES count as games (they file as web rounds — url only, no platform). Do not use for web apps, websites, or UI review of anything that is not a game — the qaping tools test games only.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# qaping — the QA loop for a game repo
|
|
@@ -38,9 +38,20 @@ the build.
|
|
|
38
38
|
2. Ask the dev ONCE for their build command (the one command that produces a
|
|
39
39
|
shippable build) and which platforms they ship; record both in the plan's
|
|
40
40
|
frontmatter so every future run can build without asking again.
|
|
41
|
-
3. Author `QA-PLAN.md` at the repo root
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
3. Author `QA-PLAN.md` at the repo root in EXACTLY this format (self-contained
|
|
42
|
+
here — do not go looking for other docs). Plan frontmatter (YAML at the very
|
|
43
|
+
top): `game`, `build_command` (the ONE shippable-build command), `platforms:
|
|
44
|
+
[windows|macos|ios|web]` (`web` = a browser-playable game — its "build" is a
|
|
45
|
+
static directory, not a zip), optional `input` (hardware; default
|
|
46
|
+
keyboard+mouse, or touch for a mobile-web game).
|
|
47
|
+
Then one `##` section per check — the heading is the check's short name —
|
|
48
|
+
opening with a fenced yaml block of exactly `id` (stable slug, never
|
|
49
|
+
renamed), `rung: human | code`, `origin` ("authored" or the round id that
|
|
50
|
+
last changed it), `last_verified` (date or build tag), followed by the steps
|
|
51
|
+
as numbered prose a playtester who has never seen the game can follow (they
|
|
52
|
+
become the round's instructions verbatim). A `rung: code` check keeps its
|
|
53
|
+
prose and adds one `test:` line naming the repo test that asserts it. Order
|
|
54
|
+
checks critical-path first, then game-specific ones:
|
|
44
55
|
1. the game boots to the main menu
|
|
45
56
|
2. a previous-version save loads
|
|
46
57
|
3. the first 15 minutes play clean on the declared input hardware
|
|
@@ -62,12 +73,19 @@ the build.
|
|
|
62
73
|
1. **Select.** Read the diff (or PR). Pick the checks it can plausibly affect,
|
|
63
74
|
plus the always-run criticals (the critical-path block above). Tell the user
|
|
64
75
|
which checks run and why.
|
|
65
|
-
2. **Build** via the recorded build command; zip the result
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
76
|
+
2. **Build** via the recorded build command; zip the result (native) or keep
|
|
77
|
+
the built static directory (web).
|
|
78
|
+
3. **Ship**, by delivery: NATIVE uploads — `qaping publish-build <game.zip>
|
|
79
|
+
--platform windows|macos` → prints a `/b/<slug>` URL (temporary hosting;
|
|
80
|
+
filing a playtest extends the build through the round; each publish mints a
|
|
81
|
+
NEW URL). Store-delivered games file with their Steam store page, TestFlight
|
|
82
|
+
public link, or App Store page as `url`. WEB games — host the built output
|
|
83
|
+
at a public URL: the dev's own hosting if they have it, else
|
|
84
|
+
`qaping publish <built-dir>` prints a hosted URL. Localhost never works —
|
|
85
|
+
players open the link on their own devices.
|
|
86
|
+
When filing a WEB game: send `url` + `est_minutes` and OMIT `platform`
|
|
87
|
+
entirely (platform values are for native builds; a web round is claimed by
|
|
88
|
+
players in their own browser, phones included).
|
|
71
89
|
4. **File** ONE `qaping_playtest` per batch of human checks a single session
|
|
72
90
|
can cover, `est_minutes` an honest sum of the steps — the service accepts
|
|
73
91
|
5–30 minutes (10 is the standard session; outside that range the filing is
|