lastlight 0.7.3 → 0.7.5
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/engine/executors/orchestrator.js +1 -0
- package/dist/engine/executors/orchestrator.js.map +1 -1
- package/dist/engine/github/profiles.d.ts +11 -0
- package/dist/engine/github/profiles.js.map +1 -1
- package/dist/sandbox/sandbox.d.ts +3 -0
- package/dist/sandbox/sandbox.js +14 -2
- package/dist/sandbox/sandbox.js.map +1 -1
- package/package.json +1 -1
- package/plugins/lastlight/.claude-plugin/plugin.json +1 -1
- package/plugins/lastlight/skills/lastlight-evals/SKILL.md +30 -7
- package/plugins/lastlight/skills/lastlight-evals/references/authoring-from-pr.md +35 -10
- package/plugins/lastlight/skills/lastlight-evals/references/instance-schema.md +15 -6
- package/skills/README.md +8 -6
- package/skills/browser-qa/SKILL.md +15 -0
- package/skills/browser-qa/scripts/agent-browser.mjs +143 -7
- package/skills/code-review/SKILL.md +28 -5
- package/skills/demo/SKILL.md +10 -2
- package/skills/pr-review/SKILL.md +27 -19
- package/workflows/pr-review.yaml +4 -3
- package/workflows/prompts/demo.md +5 -2
- package/workflows/prompts/guardrails.md +15 -0
|
@@ -35,6 +35,7 @@ export async function withSandbox(ctx, fn) {
|
|
|
35
35
|
env: ctx.env,
|
|
36
36
|
stateDir: ctx.stateDir,
|
|
37
37
|
sandboxDir: ctx.config.sandboxDir,
|
|
38
|
+
repoSubdir: ctx.config.repoSubdir,
|
|
38
39
|
imageName: ctx.config.sandboxImage === "qa" ? SANDBOX_IMAGE_QA : undefined,
|
|
39
40
|
otel: ctx.config.otel,
|
|
40
41
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/engine/executors/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/engine/executors/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,17 @@ export interface ExecutorConfig {
|
|
|
22
22
|
stateDir?: string;
|
|
23
23
|
/** Directory for agent sandboxes (cloned repos). */
|
|
24
24
|
sandboxDir?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Run the agent in a `<workspace>/<repoSubdir>/` SUBDIRECTORY instead of the
|
|
27
|
+
* workspace root, WITHOUT going through the token-gated `prePopulate`/clone
|
|
28
|
+
* path. For callers that pre-seed the repo themselves (e.g. the evals harness
|
|
29
|
+
* in static-token mode): it reproduces production's nested layout — the repo
|
|
30
|
+
* checkout is a child dir, while `AGENTS.md`/`.lastlight-skills/` stay at the
|
|
31
|
+
* workspace root, siblings outside the repo's git tree. Ignored when a real
|
|
32
|
+
* `prePopulate` clone runs (that already nests into `<repo>/`). Use backend
|
|
33
|
+
* `none` so skills stage at the root rather than under the repo.
|
|
34
|
+
*/
|
|
35
|
+
repoSubdir?: string;
|
|
25
36
|
/** Where the shim writes dashboard envelope jsonl. */
|
|
26
37
|
sessionsDir?: string;
|
|
27
38
|
/** Workflow sandbox backend (overrides config-level default). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../src/engine/github/profiles.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,IAAI,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../src/engine/github/profiles.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,IAAI,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAiOzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAqC;IACnE,IAAI,EAAE,MAAM;IACZ,cAAc,EAAE,cAAc;IAC9B,cAAc,EAAE,cAAc;IAC9B,YAAY,EAAE,YAAY;CAC3B,CAAC;AA0CF,MAAM,CAAC,MAAM,0BAA0B,GAAqD;IAC1F,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;KACjB;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;KACjB;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,MAAM;KACjB;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,OAAO;QACf,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,MAAM;KACjB;CACF,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,OAAO,wBAAwB,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -123,6 +123,9 @@ export interface SandboxFactoryOpts {
|
|
|
123
123
|
env: Record<string, string>;
|
|
124
124
|
stateDir: string;
|
|
125
125
|
sandboxDir?: string;
|
|
126
|
+
/** Run the agent in this `<workspace>/<repoSubdir>/` subdir (pre-seeded by the
|
|
127
|
+
* caller) instead of the workspace root — see {@link ExecutorConfig.repoSubdir}. */
|
|
128
|
+
repoSubdir?: string;
|
|
126
129
|
/** Docker image override (the browser-QA image for `sandbox_image: qa`). */
|
|
127
130
|
imageName?: string;
|
|
128
131
|
otel?: OtelConfig;
|
package/dist/sandbox/sandbox.js
CHANGED
|
@@ -238,8 +238,20 @@ class InProcessSandbox {
|
|
|
238
238
|
});
|
|
239
239
|
this.hostWorkspaceDir = workDir;
|
|
240
240
|
// When pre-cloned, cwd is the checkout so the agent runs inside the repo
|
|
241
|
-
// with no `cd` preamble; otherwise the workspace root.
|
|
242
|
-
|
|
241
|
+
// with no `cd` preamble; otherwise the workspace root. `repoSubdir` lets a
|
|
242
|
+
// caller that pre-seeded a `<workspace>/<repo>/` checkout nest the cwd the
|
|
243
|
+
// same way without a clone (the evals harness) — workDir (the root) stays
|
|
244
|
+
// hostWorkspaceDir so AGENTS.md/skills remain siblings outside the repo.
|
|
245
|
+
if (pre) {
|
|
246
|
+
this.agentCwd = join(workDir, pre.repo);
|
|
247
|
+
}
|
|
248
|
+
else if (this.opts.repoSubdir) {
|
|
249
|
+
this.agentCwd = join(workDir, this.opts.repoSubdir);
|
|
250
|
+
mkdirSync(this.agentCwd, { recursive: true });
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
this.agentCwd = workDir;
|
|
254
|
+
}
|
|
243
255
|
return { hostWorkspaceDir: workDir, agentCwd: this.agentCwd };
|
|
244
256
|
}
|
|
245
257
|
stageSkills(phaseKey, skillPaths) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/sandbox/sandbox.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/sandbox/sandbox.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin.json",
|
|
3
3
|
"name": "lastlight",
|
|
4
4
|
"displayName": "Last Light",
|
|
5
|
-
"version": "0.7.
|
|
5
|
+
"version": "0.7.5",
|
|
6
6
|
"description": "Install, configure and operate Last Light (GitHub maintenance agent) — its server, CLI client, deployment overlay, and the Last Light Evals harness.",
|
|
7
7
|
"author": { "name": "Clifton Cunningham" },
|
|
8
8
|
"homepage": "https://github.com/cliftonc/lastlight",
|
|
@@ -19,6 +19,7 @@ compatible. **Node 24+.**
|
|
|
19
19
|
```bash
|
|
20
20
|
node --version # need >= 24
|
|
21
21
|
command -v lastlight-evals >/dev/null && echo "installed" || npm i -g lastlight-evals
|
|
22
|
+
lastlight-evals --version # prints the evals version + the bundled lastlight core version
|
|
22
23
|
```
|
|
23
24
|
|
|
24
25
|
## 2. Scaffold a workspace
|
|
@@ -96,20 +97,36 @@ lastlight-evals run triage --model haiku # fuzzy match in models.json
|
|
|
96
97
|
lastlight-evals run triage --model openai/gpt-5.5,anthropic/claude-opus-4-8
|
|
97
98
|
lastlight-evals run --compare # cross-vendor set (only models whose envKey is present)
|
|
98
99
|
lastlight-evals run triage --runs 3 # repeat each case 3× (worst-case verdict, mean metrics)
|
|
100
|
+
lastlight-evals run pr-review --limit 3 # only the first 3 cases of the tier (controlled/cheap run)
|
|
101
|
+
lastlight-evals run triage --instance <id> # only this exact instance_id (or set EVAL_INSTANCE)
|
|
99
102
|
lastlight-evals run triage --no-open # don't open the report
|
|
100
103
|
# Plain layout: add --overlay . (e.g. lastlight-evals run triage --overlay .)
|
|
104
|
+
|
|
105
|
+
lastlight-evals serve # browse past runs in the dashboard (no models run)
|
|
106
|
+
lastlight-evals clean --dry-run # list killed/crashed runs that are stuck "running"
|
|
107
|
+
lastlight-evals clean # finalize them (mark interrupted; --delete to remove)
|
|
101
108
|
```
|
|
102
109
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
110
|
+
Each run lands in its own dir `./eval-results/<tiers>/<runId>/`: `scorecard.json`
|
|
111
|
+
+ `predictions.jsonl` (SWE-bench format). The report is a **JSON-driven dashboard
|
|
112
|
+
SPA**, not generated HTML — `run` starts a local server and opens it; browse every
|
|
113
|
+
past run later with `lastlight-evals serve`. In the dashboard a code-fix row's
|
|
114
|
+
**files** button opens the agent's captured diff and **log** shows the per-phase
|
|
115
|
+
agent session.
|
|
116
|
+
|
|
117
|
+
If a run is killed or crashes mid-flight it stays stuck showing "running" (its
|
|
118
|
+
scorecard never got its final write). `lastlight-evals clean` finalizes such runs
|
|
119
|
+
— marks them *interrupted* (default; keeps the partial scorecard + transcripts)
|
|
120
|
+
or `--delete` removes the run dir.
|
|
106
121
|
|
|
107
122
|
## 5. Author eval cases (optional)
|
|
108
123
|
|
|
109
|
-
|
|
110
|
-
workflow with held-out tests)
|
|
111
|
-
|
|
112
|
-
|
|
124
|
+
Three tiers ship: **triage** (cheap, issue-triage), **code-fix** (heavy, build
|
|
125
|
+
workflow with held-out tests), and **pr-review** (PR-review precision, graded by
|
|
126
|
+
an LLM judge against a gold set → precision / recall / **F0.5**). To add cases or
|
|
127
|
+
a custom tier, read **`references/instance-schema.md`** — it has the
|
|
128
|
+
`SweBenchInstance` schema, the exact files to create for each tier, and worked
|
|
129
|
+
examples.
|
|
113
130
|
|
|
114
131
|
Quick shape (paths are relative to the workspace's `evals/` dir):
|
|
115
132
|
- **Triage case:** append a `SweBenchInstance` to `evals/datasets/triage/instances.json`
|
|
@@ -117,6 +134,12 @@ Quick shape (paths are relative to the workspace's `evals/` dir):
|
|
|
117
134
|
- **Code-fix case:** add the instance to `evals/datasets/code-fix/instances.json` **and**
|
|
118
135
|
create `evals/datasets/code-fix/repos/<instance_id>/` (fixture repo at base) +
|
|
119
136
|
`evals/datasets/code-fix/tests/<instance_id>/` (held-out tests applied at grade time).
|
|
137
|
+
- **PR-review case:** a `SweBenchInstance` with a `pr` fixture (base/head refs +
|
|
138
|
+
commits, checked out at the PR head) and a `review_gold` set (severity +
|
|
139
|
+
description). The `pr-review` tier ships empty — populate the full Martian
|
|
140
|
+
[Code Review Bench](https://codereview.withmartian.com/) 50 with
|
|
141
|
+
`npx tsx scripts/import-martian.ts`. Grading needs a judge model
|
|
142
|
+
(`EVAL_JUDGE_MODEL`, else a strong default per provider key).
|
|
120
143
|
- **Custom tier:** a new `evals/datasets/<tier>/` with `tier.json` +
|
|
121
144
|
`instances.json` (+ `repos/` & `tests/` for code-fix-style tiers). Discovery is
|
|
122
145
|
automatic — no code change.
|
|
@@ -7,6 +7,20 @@ extraction with `gh` + `git`; **you** refine the judgement parts. The result is
|
|
|
7
7
|
the repo into the gitignored `./.eval-cache/` and checks out `base_commit` (see
|
|
8
8
|
the `instance-schema.md` "Git-source" flavor).
|
|
9
9
|
|
|
10
|
+
## Two grading modes (default: suite)
|
|
11
|
+
|
|
12
|
+
- **Suite (default).** Nothing is held out. The agent works on the repo, then the
|
|
13
|
+
case is graded by running the repo's own `test_cmd` against the agent's **final
|
|
14
|
+
tree** — resolved iff it exits 0. This grades "did the agent leave the repo with
|
|
15
|
+
a passing suite?", and matches how the agent itself judges done (it ran the same
|
|
16
|
+
tests). Note: for a *feature* PR the suite is usually already green at base, so a
|
|
17
|
+
no-op would resolve it — `add-case` warns when it detects this.
|
|
18
|
+
- **Hold-out (`--hold-out`).** SWE-bench style: the PR's test files are **hidden**
|
|
19
|
+
from the agent and applied only at grade time, scored by named `FAIL_TO_PASS`
|
|
20
|
+
red→green (+ `PASS_TO_PASS`). Use this when you want to grade against the
|
|
21
|
+
maintainer's exact tests the agent must satisfy blind. Stored as
|
|
22
|
+
`hold_out_tests: true` on the instance.
|
|
23
|
+
|
|
10
24
|
> **Trust + network.** Validation and the run-time checkout execute the repo's own
|
|
11
25
|
> code (`setup_cmd` / `test_cmd` / its tests). Only point this at repos you trust.
|
|
12
26
|
> The first run per repo fetches over the network; after that the cache makes it
|
|
@@ -34,9 +48,11 @@ Options:
|
|
|
34
48
|
| `--id <slug>` | `instance_id` (default derived from repo + number) |
|
|
35
49
|
| `--datasets <dir>` | datasets root to write into (a `<tier>/` subdir). Default `./datasets`, else `./evals/datasets` |
|
|
36
50
|
| `--overlay <dir>` | write into `<dir>/evals/datasets` instead |
|
|
37
|
-
| `--test-cmd "<cmd>"` |
|
|
51
|
+
| `--test-cmd "<cmd>"` | test command (default `node --test`); stored as `test_cmd` |
|
|
38
52
|
| `--setup-cmd "<cmd>"` | install/build run before tests (e.g. `"npm ci"`); stored as `setup_cmd` |
|
|
39
|
-
| `--
|
|
53
|
+
| `--hold-out` | SWE-bench mode: hold the PR's tests out, grade named `FAIL_TO_PASS` (default is suite mode) |
|
|
54
|
+
| `--pass-list` | (hold-out only) enumerate every green test in `PASS_TO_PASS` (default `["*"]`) |
|
|
55
|
+
| `--no-validate` | don't run the repo's tests to validate the case (just scaffold) |
|
|
40
56
|
| `--dry-run` | print the proposed instance JSON; don't write |
|
|
41
57
|
|
|
42
58
|
## The recommended flow (CLI extracts → you refine)
|
|
@@ -45,12 +61,15 @@ Options:
|
|
|
45
61
|
The CLI derives:
|
|
46
62
|
- `repo`, `base_commit` (the **merge-base** of the base branch and the PR head —
|
|
47
63
|
the true fork point, not the base-branch tip), and `head_commit`;
|
|
48
|
-
- `test_patch` — the diff of the PR's **test** files (path heuristic: `test/`,
|
|
49
|
-
`tests/`, `__tests__/`, `spec/`, or `*.test.*` / `*.spec.*` / `*_test.*`);
|
|
50
64
|
- gold `patch` — the diff of the non-test files (reference only, never graded);
|
|
51
|
-
- `
|
|
52
|
-
|
|
53
|
-
|
|
65
|
+
- `test_cmd` / `setup_cmd` — the suite command + install step you pass;
|
|
66
|
+
- **suite mode (default):** validation just *probes* the suite — green at head ⇒
|
|
67
|
+
gradeable; green at base ⇒ a no-op would resolve it (a warning to reconsider
|
|
68
|
+
the case or use `--hold-out`). No `test_patch` / `FAIL_TO_PASS` written.
|
|
69
|
+
- **`--hold-out`:** also derives `test_patch` (the PR's **test** files; path
|
|
70
|
+
heuristic `test/`, `tests/`, `__tests__/`, `spec/`, `*.test.*` / `*.spec.*` /
|
|
71
|
+
`*_test.*`), auto-detects `FAIL_TO_PASS` (base+test_patch → red, head → green),
|
|
72
|
+
sets `PASS_TO_PASS: ["*"]` (or `--pass-list`), and `hold_out_tests: true`;
|
|
54
73
|
- `issue` + `problem_statement` (the PR's linked issue if it closes one, else the
|
|
55
74
|
PR title/body) and `expect_github: { pr_opened: { base, head_is_branch } }`.
|
|
56
75
|
|
|
@@ -84,9 +103,15 @@ Options:
|
|
|
84
103
|
- **`node --test` (default).** Emits TAP; the CLI extracts per-test names and grades
|
|
85
104
|
each `FAIL_TO_PASS` / `PASS_TO_PASS` by name.
|
|
86
105
|
- **Any other runner via `--test-cmd`.** If it emits TAP with stable names, named
|
|
87
|
-
grading still works.
|
|
88
|
-
|
|
89
|
-
|
|
106
|
+
grading still works. Most runners can be told to emit TAP — prefer this so you get
|
|
107
|
+
per-test `FAIL_TO_PASS` grading instead of all-or-nothing:
|
|
108
|
+
- **vitest:** `--test-cmd "npx vitest run --reporter=tap"` (vitest 4 emits nested
|
|
109
|
+
TAP the CLI parses; a bare `npm test` uses the default reporter → no names).
|
|
110
|
+
- **mocha:** `--test-cmd "npx mocha --reporter tap"`.
|
|
111
|
+
- **jest:** `--test-cmd "npx jest"` with `jest-tap-reporter` configured, else suite mode.
|
|
112
|
+
Otherwise the case runs in **suite mode**: `FAIL_TO_PASS` stays empty and the case
|
|
113
|
+
is resolved iff the test command exits 0 (after the held-out `test_patch` is
|
|
114
|
+
applied). Use `--setup-cmd` for install/build. The CLI prints which mode it picked.
|
|
90
115
|
|
|
91
116
|
## Triage from an issue
|
|
92
117
|
|
|
@@ -28,8 +28,9 @@ Datasets are discovered from (overlay > user > built-in): `<overlay>/evals/datas
|
|
|
28
28
|
"problem_statement": "short issue text",
|
|
29
29
|
"patch": "...", // gold patch — reference only, NOT graded
|
|
30
30
|
"test_patch": "...", // held-out tests (code-fix), git-apply form
|
|
31
|
-
"
|
|
32
|
-
"
|
|
31
|
+
"hold_out_tests": true, // opt into SWE-bench held-out grading (default: suite mode)
|
|
32
|
+
"FAIL_TO_PASS": ["test id 1"], // hold-out only: must go red→green. Empty ⇒ suite mode
|
|
33
|
+
"PASS_TO_PASS": ["*"], // hold-out only: must stay green; ["*"] = whole suite
|
|
33
34
|
"test_cmd": ["npm", "test"], // held-out test argv (default: node --test)
|
|
34
35
|
"setup_cmd": ["npm", "ci"], // optional install/build before tests (git-source)
|
|
35
36
|
"head_commit": "abc123...", // PR head SHA — reference/authoring only
|
|
@@ -94,10 +95,18 @@ and `tests/<id>/`. Discovery auto-finds it — no code change. Run it with
|
|
|
94
95
|
- **Behavioral:** did the workflow take the expected GitHub actions
|
|
95
96
|
(`expect_github`)?
|
|
96
97
|
- **Triage:** did the decision match `triage_gold`?
|
|
97
|
-
- **Execution (code-fix)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
- **Execution (code-fix)** — two modes:
|
|
99
|
+
- **Suite (default).** Nothing held out: run the repo's own `test_cmd` against the
|
|
100
|
+
agent's final tree, **resolved iff it exits 0**. Grades "did the agent leave the
|
|
101
|
+
repo with a passing suite?" The captured output (setup log + TAP) is saved per
|
|
102
|
+
case and shown in the dashboard's **tests** view, for resolved and unresolved
|
|
103
|
+
cases alike.
|
|
104
|
+
- **Hold-out (`hold_out_tests: true`).** SWE-bench style: the maintainer's
|
|
105
|
+
`test_patch` is hidden from the agent and applied only at grade time; resolved
|
|
106
|
+
iff all `FAIL_TO_PASS` go green AND all `PASS_TO_PASS` stay green. `PASS_TO_PASS:
|
|
107
|
+
["*"]` is a wildcard meaning "the whole suite must stay green" (robust to tests
|
|
108
|
+
being renamed/added; `--pass-list` to enumerate). If the runner emits no TAP
|
|
109
|
+
names, hold-out also falls back to exit-code grading.
|
|
101
110
|
- With `--runs N` (N>1) the binary verdict is **worst-case** (passes only if every
|
|
102
111
|
trial passed); the scorecard also shows per-verdict pass counts to expose
|
|
103
112
|
variance.
|
package/skills/README.md
CHANGED
|
@@ -17,22 +17,24 @@ or editing a skill.
|
|
|
17
17
|
| [`chat`](chat/) | chat | Conversational assistant for Slack/Discord threads — answer repo/PR/issue questions, guide to natural-language triggers. |
|
|
18
18
|
| [`issue-triage`](issue-triage/) | `issue-triage.yaml`, chat | Move issues through the canonical triage state machine — categorise, label, dedupe, manage stale, write a problem-statement summary (not a solution design), re-triage on reporter replies. |
|
|
19
19
|
| [`issue-comment`](issue-comment/) | `issue-comment.yaml` | Handle non-build maintainer comments on issues/PRs — close, label, answer briefly, redirect build requests. |
|
|
20
|
-
| [`pr-review`](pr-review/) | `pr-review.yaml`, chat | Review a PR with
|
|
20
|
+
| [`pr-review`](pr-review/) | `pr-review.yaml`, chat | Review a PR with precision-first, tiered feedback and post a formal review. A pure code review — no building (CI validates the change). |
|
|
21
21
|
| [`pr-comment`](pr-comment/) | `pr-comment.yaml` | Answer a maintainer's question about an open PR with concrete, code-cited evidence (not a full review). |
|
|
22
22
|
| [`repo-health`](repo-health/) | `repo-health.yaml`, chat | Generate a repository health report — open issues, PR backlog, CI status, action items. |
|
|
23
23
|
| [`security-review`](security-review/) | `security-review.yaml` | Diff-scoped SDLC security review; file one dated summary issue with a task-list of findings. |
|
|
24
24
|
| [`security-feedback`](security-feedback/) | `security-feedback.yaml` | Process a maintainer's comment on a security scan summary — break findings into issues or record suppressions. |
|
|
25
|
-
| [`building`](building/) | build (executor, reviewer), `pr-fix.yaml
|
|
25
|
+
| [`building`](building/) | build (executor, reviewer), `pr-fix.yaml` | Shared craft: install-first + package-manager detection, the test/lint/typecheck gate, and TDD discipline in the sandbox. |
|
|
26
26
|
| [`code-review`](code-review/) | build (reviewer), `pr-review.yaml` | Shared rubric: finding tiers (Critical/Important/Suggestions/Nits) and what-to-check. Referenced by both the branch-diff reviewer and the PR reviewer. |
|
|
27
27
|
| [`verify`](verify/) | `verify.yaml` | Test a behaviour claim as an investigator — CONFIRMED / REFUTED / INCONCLUSIVE with bash-captured evidence. |
|
|
28
28
|
| [`qa-test`](qa-test/) | `qa-test.yaml` | Run an automated QA flow against a CLI or locally-served app and report step-level pass/fail with evidence. |
|
|
29
29
|
| [`browser-qa`](browser-qa/) | `verify.yaml`, `qa-test.yaml`, `demo.yaml` | Drive a real headless browser against a locally-served web UI and capture screenshot (and, for `demo`, video) evidence. Gated to the docker QA image. |
|
|
30
30
|
| [`demo`](demo/) | `demo.yaml` | Record a short demo VIDEO of a PR/feature — drive the web UI, screen-record, and composite a titled, size-capped mp4 with ffmpeg. Gated to the docker QA image. |
|
|
31
31
|
|
|
32
|
-
`building` and `code-review` are **shared building blocks**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
`building` and `code-review` are **shared building blocks** so the install
|
|
33
|
+
gate and the review rubric each live in one place. `building` is staged by the
|
|
34
|
+
build cycle (executor + reviewer) and `pr-fix`; `code-review` by the build
|
|
35
|
+
reviewer and `pr-review` (which stages `code-review` but **not** `building` — a
|
|
36
|
+
pure code review). They're staged alongside the phase's primary skill/prompt and
|
|
37
|
+
read on demand.
|
|
36
38
|
|
|
37
39
|
The live set is enforced at startup: `validateAssets()` (`src/workflows/loader.ts`)
|
|
38
40
|
resolves every workflow `skill:` reference and `CHAT_SKILL_NAMES`
|
|
@@ -91,11 +91,26 @@ Step keys (a step may combine an action **plus** a trailing `screenshot`):
|
|
|
91
91
|
| `waitFor` | selector | Wait until the element is visible (~10s timeout). |
|
|
92
92
|
| `assertText` | string | Pass if the text is visible anywhere on the page; else step FAIL.|
|
|
93
93
|
| `text` | selector | Extract `textContent` into the step result (for you to read). |
|
|
94
|
+
| `pause` | milliseconds | Hold for N ms — a readable beat after a state change (demo videos).|
|
|
94
95
|
| `screenshot` | basename | Write `<out-dir>/<basename>.png` (full page). |
|
|
95
96
|
|
|
96
97
|
The whole flow runs in **one Chromium session** — login state, cookies, and
|
|
97
98
|
navigation persist across steps.
|
|
98
99
|
|
|
100
|
+
### Demo mode (recording only)
|
|
101
|
+
|
|
102
|
+
When the session is **recorded** (`--record-dir`, `"record": true`, or an
|
|
103
|
+
explicit `--demo`), the driver switches on "demo mode" so the capture is
|
|
104
|
+
watchable — headless Chromium otherwise paints no cursor and fires actions
|
|
105
|
+
instantly. Demo mode adds a **synthetic cursor overlay** that animates to each
|
|
106
|
+
target, types `type` steps **character-by-character**, and holds a beat
|
|
107
|
+
**between steps**. For screenshot QA (no recording) these are all no-ops, so
|
|
108
|
+
QA runs stay fast. Prefer `type` over `fill` in a recorded flow so the typing is
|
|
109
|
+
visible, and use `pause` for deliberate holds. Tunables:
|
|
110
|
+
`--step-delay MS` (default 700), `--type-delay MS` (default 70),
|
|
111
|
+
`--move-steps N` (default 25), `--no-cursor` to drop the overlay (env:
|
|
112
|
+
`LASTLIGHT_STEP_DELAY_MS`, `LASTLIGHT_TYPE_DELAY_MS`, `LASTLIGHT_MOVE_STEPS`).
|
|
113
|
+
|
|
99
114
|
## Run the flow
|
|
100
115
|
|
|
101
116
|
```bash
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
// The skill runs this first to decide browser-vs-text.
|
|
19
19
|
//
|
|
20
20
|
// run <flow.json> [--base-url URL] [--out-dir DIR] [--record-dir DIR]
|
|
21
|
+
// [--demo] [--no-cursor] [--step-delay MS] [--type-delay MS]
|
|
22
|
+
// [--move-steps N]
|
|
21
23
|
// Executes a FLOW in ONE Chromium session (state preserved across steps) and
|
|
22
24
|
// prints a single JSON report.
|
|
23
25
|
//
|
|
@@ -27,6 +29,17 @@
|
|
|
27
29
|
// reported as `video` in the JSON. Used by the `/demo` workflow, which then
|
|
28
30
|
// composites the raw webm into a titled mp4 with compose-demo.sh.
|
|
29
31
|
//
|
|
32
|
+
// DEMO MODE (auto-on whenever recording; also --demo or `"demo": true` in the
|
|
33
|
+
// flow) makes the capture human-watchable — headless Chromium otherwise
|
|
34
|
+
// paints no cursor and fires actions instantly:
|
|
35
|
+
// - a synthetic cursor overlay (opt out with --no-cursor) that animates to
|
|
36
|
+
// each target before acting, driven by real page.mouse events;
|
|
37
|
+
// - `type` steps that key in char-by-char (--type-delay, default 70ms);
|
|
38
|
+
// - a deliberate hold between steps (--step-delay, default 700ms).
|
|
39
|
+
// Outside demo mode every one of these is a no-op, so screenshot QA runs
|
|
40
|
+
// behave exactly as before. Env equivalents: LASTLIGHT_STEP_DELAY_MS,
|
|
41
|
+
// LASTLIGHT_TYPE_DELAY_MS, LASTLIGHT_MOVE_STEPS.
|
|
42
|
+
//
|
|
30
43
|
// Flow shape:
|
|
31
44
|
// { "baseUrl": "http://localhost:3000",
|
|
32
45
|
// "viewport": {"width":1280,"height":800},
|
|
@@ -38,10 +51,13 @@
|
|
|
38
51
|
// {"press":"Enter"},
|
|
39
52
|
// {"waitFor":"#dashboard"},
|
|
40
53
|
// {"assertText":"Welcome"},
|
|
54
|
+
// {"pause": 1200},
|
|
41
55
|
// {"text":"h1"},
|
|
42
56
|
// {"screenshot":"after-login"}
|
|
43
57
|
// ] }
|
|
44
|
-
// A step may combine an action plus a trailing `screenshot`.
|
|
58
|
+
// A step may combine an action plus a trailing `screenshot`. `pause` holds
|
|
59
|
+
// for N ms (a readable beat after a state change, for demo recordings);
|
|
60
|
+
// `type` shows visible per-character typing, `fill` sets the value instantly.
|
|
45
61
|
//
|
|
46
62
|
// Per-step semantics:
|
|
47
63
|
// - A step error (selector not found, assertion fail, timeout) is recorded
|
|
@@ -77,6 +93,81 @@ const WAIT_TIMEOUT = 10_000; // sane default for waitFor / assertText probes
|
|
|
77
93
|
// watchable tail. Override with --record-settle-ms / LASTLIGHT_RECORD_SETTLE_MS.
|
|
78
94
|
const RECORD_SETTLE_MS = Number(process.env.LASTLIGHT_RECORD_SETTLE_MS) || 1500;
|
|
79
95
|
|
|
96
|
+
// ── Demo-mode pacing ─────────────────────────────────────────────────────────
|
|
97
|
+
// Headless Chromium paints NO cursor and fires actions instantly, so a raw
|
|
98
|
+
// recording looks like the UI mutating on its own. "Demo mode" (auto-on whenever
|
|
99
|
+
// the session is recorded — see run()) makes the capture human-watchable: a
|
|
100
|
+
// synthetic cursor overlay that animates to each target, char-by-char typing,
|
|
101
|
+
// and a deliberate pause between steps. These are no-ops outside demo mode, so
|
|
102
|
+
// screenshot QA runs are untouched. All tunable via flags / env.
|
|
103
|
+
const DEMO_STEP_DELAY_MS = Number(process.env.LASTLIGHT_STEP_DELAY_MS) || 700;
|
|
104
|
+
const DEMO_TYPE_DELAY_MS = Number(process.env.LASTLIGHT_TYPE_DELAY_MS) || 70;
|
|
105
|
+
const DEMO_MOVE_STEPS = Number(process.env.LASTLIGHT_MOVE_STEPS) || 25;
|
|
106
|
+
|
|
107
|
+
// Synthetic cursor overlay, adapted from Puppeteer's mouse-helper (Apache-2.0),
|
|
108
|
+
// made self-installing so it can be injected via context.addInitScript and picked
|
|
109
|
+
// up by Playwright's recordVideo (it's page DOM, so it lands in the .webm). It
|
|
110
|
+
// follows the REAL mouse events that page.mouse.move/down/up dispatch.
|
|
111
|
+
const MOUSE_HELPER_SRC = `(() => {
|
|
112
|
+
const install = () => {
|
|
113
|
+
if (window.__mouseHelperInstalled || !document.body) return;
|
|
114
|
+
window.__mouseHelperInstalled = true;
|
|
115
|
+
const box = document.createElement('div');
|
|
116
|
+
box.classList.add('mouse-helper');
|
|
117
|
+
const style = document.createElement('style');
|
|
118
|
+
style.innerHTML = \`
|
|
119
|
+
.mouse-helper {
|
|
120
|
+
pointer-events: none;
|
|
121
|
+
position: absolute;
|
|
122
|
+
z-index: 2147483647;
|
|
123
|
+
width: 20px; height: 20px;
|
|
124
|
+
margin-left: -10px; margin-top: -10px;
|
|
125
|
+
border-radius: 10px;
|
|
126
|
+
border: 2px solid rgba(255,255,255,.9);
|
|
127
|
+
background: rgba(0,0,0,.35);
|
|
128
|
+
box-shadow: 0 0 0 1px rgba(0,0,0,.4);
|
|
129
|
+
transition: background .15s, border-radius .15s, transform .08s;
|
|
130
|
+
}
|
|
131
|
+
.mouse-helper.button-1 {
|
|
132
|
+
transition: none;
|
|
133
|
+
background: rgba(30,120,255,.7);
|
|
134
|
+
transform: scale(.75);
|
|
135
|
+
}
|
|
136
|
+
\`;
|
|
137
|
+
document.head.appendChild(style);
|
|
138
|
+
document.body.appendChild(box);
|
|
139
|
+
const move = (e) => { box.style.left = e.pageX + 'px'; box.style.top = e.pageY + 'px'; };
|
|
140
|
+
document.addEventListener('mousemove', move, true);
|
|
141
|
+
document.addEventListener('mousedown', (e) => { move(e); box.classList.add('button-1'); }, true);
|
|
142
|
+
document.addEventListener('mouseup', (e) => { move(e); box.classList.remove('button-1'); }, true);
|
|
143
|
+
};
|
|
144
|
+
if (document.readyState === 'loading') {
|
|
145
|
+
document.addEventListener('DOMContentLoaded', install, false);
|
|
146
|
+
} else {
|
|
147
|
+
install();
|
|
148
|
+
}
|
|
149
|
+
})();`;
|
|
150
|
+
|
|
151
|
+
// Animate the synthetic cursor to the centre of a selector, best-effort. Returns
|
|
152
|
+
// the target box when it landed (so the caller can click at those coords), or
|
|
153
|
+
// null to fall back to Playwright's own targeting.
|
|
154
|
+
async function moveCursorTo(page, selector, demo) {
|
|
155
|
+
try {
|
|
156
|
+
const loc = page.locator(selector).first();
|
|
157
|
+
await loc.waitFor({ state: 'visible', timeout: WAIT_TIMEOUT });
|
|
158
|
+
await loc.scrollIntoViewIfNeeded({ timeout: WAIT_TIMEOUT }).catch(() => {});
|
|
159
|
+
const box = await loc.boundingBox();
|
|
160
|
+
if (!box) return null;
|
|
161
|
+
const cx = box.x + box.width / 2;
|
|
162
|
+
const cy = box.y + box.height / 2;
|
|
163
|
+
await page.mouse.move(cx, cy, { steps: demo.moveSteps });
|
|
164
|
+
await page.waitForTimeout(140).catch(() => {});
|
|
165
|
+
return { cx, cy };
|
|
166
|
+
} catch {
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
80
171
|
function emit(obj) {
|
|
81
172
|
process.stdout.write(JSON.stringify(obj) + '\n');
|
|
82
173
|
}
|
|
@@ -140,6 +231,7 @@ function actionOf(step) {
|
|
|
140
231
|
'waitFor',
|
|
141
232
|
'assertText',
|
|
142
233
|
'text',
|
|
234
|
+
'pause',
|
|
143
235
|
]) {
|
|
144
236
|
if (k in step) return k;
|
|
145
237
|
}
|
|
@@ -147,7 +239,7 @@ function actionOf(step) {
|
|
|
147
239
|
return 'noop';
|
|
148
240
|
}
|
|
149
241
|
|
|
150
|
-
async function execStep(page, step, baseUrl, outDir, screenshots) {
|
|
242
|
+
async function execStep(page, step, baseUrl, outDir, screenshots, demo) {
|
|
151
243
|
const result = {};
|
|
152
244
|
let fatal = false;
|
|
153
245
|
|
|
@@ -164,15 +256,31 @@ async function execStep(page, step, baseUrl, outDir, screenshots) {
|
|
|
164
256
|
});
|
|
165
257
|
}
|
|
166
258
|
} else if ('click' in step) {
|
|
167
|
-
|
|
259
|
+
// Demo mode: animate the cursor to the target and click at its coordinates
|
|
260
|
+
// so the pointer travel + press are visible. Fall back to Playwright's own
|
|
261
|
+
// targeting when the box can't be resolved (or outside demo mode).
|
|
262
|
+
const at = demo.enabled ? await moveCursorTo(page, step.click, demo) : null;
|
|
263
|
+
if (at) {
|
|
264
|
+
await page.mouse.down();
|
|
265
|
+
await page.mouse.up();
|
|
266
|
+
} else {
|
|
267
|
+
await page.click(step.click, { timeout: WAIT_TIMEOUT });
|
|
268
|
+
}
|
|
168
269
|
} else if ('fill' in step) {
|
|
169
270
|
const [sel, val] = step.fill;
|
|
271
|
+
if (demo.enabled) await moveCursorTo(page, sel, demo);
|
|
170
272
|
await page.fill(sel, val, { timeout: WAIT_TIMEOUT });
|
|
171
273
|
} else if ('type' in step) {
|
|
172
274
|
const [sel, val] = step.type;
|
|
275
|
+
if (demo.enabled) await moveCursorTo(page, sel, demo);
|
|
173
276
|
await page.locator(sel).first().pressSequentially(val, {
|
|
174
277
|
timeout: WAIT_TIMEOUT,
|
|
278
|
+
delay: demo.enabled ? demo.typeDelay : 0,
|
|
175
279
|
});
|
|
280
|
+
} else if ('pause' in step) {
|
|
281
|
+
// Explicit hold — for reading a state change before the next action.
|
|
282
|
+
const ms = Number(step.pause) || 0;
|
|
283
|
+
if (ms > 0) await page.waitForTimeout(ms);
|
|
176
284
|
} else if ('press' in step) {
|
|
177
285
|
await page.keyboard.press(step.press);
|
|
178
286
|
} else if ('waitFor' in step) {
|
|
@@ -210,7 +318,7 @@ async function execStep(page, step, baseUrl, outDir, screenshots) {
|
|
|
210
318
|
return { result, fatal };
|
|
211
319
|
}
|
|
212
320
|
|
|
213
|
-
async function run(flowPath, baseUrlArg, outDirArg, recordDirArg) {
|
|
321
|
+
async function run(flowPath, baseUrlArg, outDirArg, recordDirArg, opts = {}) {
|
|
214
322
|
let flow;
|
|
215
323
|
try {
|
|
216
324
|
flow = JSON.parse(readFileSync(resolve(flowPath), 'utf8'));
|
|
@@ -229,6 +337,17 @@ async function run(flowPath, baseUrlArg, outDirArg, recordDirArg) {
|
|
|
229
337
|
// `"record": true`. The .webm lands in the record dir (default: out-dir).
|
|
230
338
|
const doRecord = !!recordDirArg || flow.record === true;
|
|
231
339
|
const videoDir = resolve(recordDirArg || outDir);
|
|
340
|
+
// Demo mode = recording, an explicit --demo, or flow.demo. It slows the run
|
|
341
|
+
// down (cursor animation, char-by-char typing, inter-step holds) so the
|
|
342
|
+
// capture is watchable; it's a no-op for plain screenshot QA. Cursor overlay
|
|
343
|
+
// is on by default in demo mode, opt out with --no-cursor.
|
|
344
|
+
const demo = {
|
|
345
|
+
enabled: opts.demo === true || flow.demo === true || doRecord,
|
|
346
|
+
cursor: opts.cursor !== false,
|
|
347
|
+
stepDelay: Number.isFinite(opts.stepDelay) ? opts.stepDelay : DEMO_STEP_DELAY_MS,
|
|
348
|
+
typeDelay: Number.isFinite(opts.typeDelay) ? opts.typeDelay : DEMO_TYPE_DELAY_MS,
|
|
349
|
+
moveSteps: Number.isFinite(opts.moveSteps) ? opts.moveSteps : DEMO_MOVE_STEPS,
|
|
350
|
+
};
|
|
232
351
|
try {
|
|
233
352
|
mkdirSync(outDir, { recursive: true });
|
|
234
353
|
} catch {
|
|
@@ -267,6 +386,11 @@ async function run(flowPath, baseUrlArg, outDirArg, recordDirArg) {
|
|
|
267
386
|
// the clip isn't letterboxed. The .webm is flushed on context.close().
|
|
268
387
|
...(doRecord ? { recordVideo: { dir: videoDir, size: viewport } } : {}),
|
|
269
388
|
});
|
|
389
|
+
// Inject the synthetic cursor before the first navigation so it's present on
|
|
390
|
+
// every page (addInitScript re-runs on each document). Only in demo mode.
|
|
391
|
+
if (demo.enabled && demo.cursor) {
|
|
392
|
+
await context.addInitScript(MOUSE_HELPER_SRC).catch(() => {});
|
|
393
|
+
}
|
|
270
394
|
const page = await context.newPage();
|
|
271
395
|
|
|
272
396
|
page.on('console', (msg) => {
|
|
@@ -288,7 +412,7 @@ async function run(flowPath, baseUrlArg, outDirArg, recordDirArg) {
|
|
|
288
412
|
|
|
289
413
|
const started = Date.now();
|
|
290
414
|
try {
|
|
291
|
-
const { result } = await execStep(page, step, baseUrl, outDir, screenshots);
|
|
415
|
+
const { result } = await execStep(page, step, baseUrl, outDir, screenshots, demo);
|
|
292
416
|
steps.push({ index: i, action, ok: true, ms: Date.now() - started, ...result });
|
|
293
417
|
} catch (err) {
|
|
294
418
|
const entry = {
|
|
@@ -301,6 +425,12 @@ async function run(flowPath, baseUrlArg, outDirArg, recordDirArg) {
|
|
|
301
425
|
steps.push(entry);
|
|
302
426
|
if (err && err.fatal) fatalHit = true; // navigation failure: skip the rest
|
|
303
427
|
}
|
|
428
|
+
|
|
429
|
+
// Demo mode: hold between steps so the video breathes (skip after an
|
|
430
|
+
// explicit `pause`, which already held, and after a fatal step).
|
|
431
|
+
if (demo.enabled && demo.stepDelay > 0 && action !== 'pause' && !fatalHit) {
|
|
432
|
+
await page.waitForTimeout(demo.stepDelay).catch(() => {});
|
|
433
|
+
}
|
|
304
434
|
}
|
|
305
435
|
|
|
306
436
|
// Finalize a recording (if any) BEFORE emitting: saving the video requires
|
|
@@ -370,18 +500,24 @@ async function main() {
|
|
|
370
500
|
let baseUrl;
|
|
371
501
|
let outDir;
|
|
372
502
|
let recordDir;
|
|
503
|
+
const opts = {};
|
|
373
504
|
for (let i = 0; i < rest.length; i++) {
|
|
374
505
|
const a = rest[i];
|
|
375
506
|
if (a === '--base-url') baseUrl = rest[++i];
|
|
376
507
|
else if (a === '--out-dir') outDir = rest[++i];
|
|
377
508
|
else if (a === '--record-dir') recordDir = rest[++i];
|
|
509
|
+
else if (a === '--demo') opts.demo = true;
|
|
510
|
+
else if (a === '--no-cursor') opts.cursor = false;
|
|
511
|
+
else if (a === '--step-delay') opts.stepDelay = Number(rest[++i]);
|
|
512
|
+
else if (a === '--type-delay') opts.typeDelay = Number(rest[++i]);
|
|
513
|
+
else if (a === '--move-steps') opts.moveSteps = Number(rest[++i]);
|
|
378
514
|
else positional.push(a);
|
|
379
515
|
}
|
|
380
516
|
if (!positional[0]) {
|
|
381
|
-
emit({ ok: false, error: 'usage: agent-browser.mjs run <flow.json> [--base-url URL] [--out-dir DIR] [--record-dir DIR]' });
|
|
517
|
+
emit({ ok: false, error: 'usage: agent-browser.mjs run <flow.json> [--base-url URL] [--out-dir DIR] [--record-dir DIR] [--demo] [--no-cursor] [--step-delay MS] [--type-delay MS] [--move-steps N]' });
|
|
382
518
|
process.exit(1);
|
|
383
519
|
}
|
|
384
|
-
await run(positional[0], baseUrl, outDir, recordDir);
|
|
520
|
+
await run(positional[0], baseUrl, outDir, recordDir, opts);
|
|
385
521
|
return;
|
|
386
522
|
}
|
|
387
523
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: code-review
|
|
3
|
-
description: The shared rubric for reviewing a code change —
|
|
4
|
-
version:
|
|
3
|
+
description: The shared rubric for reviewing a code change — precision-first, high-signal findings only (Critical/Important), plus what to check (correctness, security, edge cases, regression risk, test coverage). Use when reviewing a PR or a branch diff.
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
tags: [review, code-quality]
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -17,17 +17,40 @@ modified functions, check callers of anything whose signature or behaviour
|
|
|
17
17
|
changed for regression risk, and check that tests cover the actual risk areas,
|
|
18
18
|
not just the happy path.
|
|
19
19
|
|
|
20
|
+
## Precision first — post only what matters
|
|
21
|
+
|
|
22
|
+
A review is only useful if people trust it. A noisy reviewer gets muted; every
|
|
23
|
+
low-value comment you post spends the credibility of the ones that matter. So
|
|
24
|
+
the bar is **high-signal only**:
|
|
25
|
+
|
|
26
|
+
- **Post only Critical and Important findings.** Suggestions and Nits (below)
|
|
27
|
+
are *not* worth a formal review comment on their own — drop them, or fold at
|
|
28
|
+
most one genuinely valuable line into the summary. When in doubt, leave it out.
|
|
29
|
+
- **If you cannot name the concrete impact — what breaks, and for which input or
|
|
30
|
+
caller — do not post it.** "This could be cleaner" is not a finding; "this
|
|
31
|
+
crashes when `items` is empty because line 42 indexes `[0]`" is.
|
|
32
|
+
- **Confidence gate.** Before you finalise, re-read each finding against the
|
|
33
|
+
actual code and try to *refute your own claim*. If you can't defend it against
|
|
34
|
+
what the code actually does (not what you assumed), drop it. A missed marginal
|
|
35
|
+
issue costs far less than a wrong one.
|
|
36
|
+
|
|
20
37
|
## Finding tiers
|
|
21
38
|
|
|
22
|
-
Categorise every finding into exactly one tier
|
|
39
|
+
Categorise every finding into exactly one tier. **Only Critical and Important
|
|
40
|
+
are posted** (see Precision first):
|
|
23
41
|
|
|
24
42
|
- **Critical** — security issues, data loss, breaking changes, silent
|
|
25
43
|
data-dropping (see Correctness below). Blocks merge.
|
|
26
44
|
- **Important** — missing tests, performance problems, type errors, **avoidable
|
|
27
45
|
duplication**, **excessive complexity**, **compiler-silencing assertions**.
|
|
28
46
|
Should fix.
|
|
29
|
-
- **Suggestions** — clarity, naming, minor DRY tidy-ups.
|
|
30
|
-
|
|
47
|
+
- **Suggestions** — clarity, naming, minor DRY tidy-ups. *Not posted* — noise
|
|
48
|
+
in a formal review.
|
|
49
|
+
- **Nits** — style, formatting. *Not posted* — this is the linter's job.
|
|
50
|
+
|
|
51
|
+
Every posted finding carries a **one-line concrete impact**: the consequence
|
|
52
|
+
(what breaks / for whom) and, where it helps, the fix. That local reasoning is
|
|
53
|
+
what makes a comment actionable rather than a vague worry.
|
|
31
54
|
|
|
32
55
|
## What to check
|
|
33
56
|
|
package/skills/demo/SKILL.md
CHANGED
|
@@ -82,10 +82,18 @@ Author a `flow.json` (same shape as **browser-qa**) that scripts the
|
|
|
82
82
|
interaction as a *director*, not an operator:
|
|
83
83
|
|
|
84
84
|
- **Record the baseline first** — the starting state is act one.
|
|
85
|
-
- **Hold after state changes** — add a `
|
|
85
|
+
- **Hold after state changes** — add a `{"pause": 1200}` (or `waitFor`) so the
|
|
86
|
+
result is readable before moving on.
|
|
86
87
|
- **Verify between steps** — `waitFor` the expected element before the next
|
|
87
88
|
action; don't blindly fire keys into an unsettled page.
|
|
88
89
|
|
|
90
|
+
Because recording auto-enables the driver's **demo mode**, you get a visible
|
|
91
|
+
**synthetic cursor** that animates to each target, and holds between steps —
|
|
92
|
+
you don't script those. To make typing visible on screen, prefer **`type`**
|
|
93
|
+
(character-by-character) over `fill` (instant) for any input the viewer should
|
|
94
|
+
watch being filled. Tune pacing with `--step-delay` / `--type-delay` if a flow
|
|
95
|
+
feels rushed or draggy (see the browser-qa skill).
|
|
96
|
+
|
|
89
97
|
Record the session by passing `--record-dir`:
|
|
90
98
|
|
|
91
99
|
```bash
|
|
@@ -134,7 +142,7 @@ Composite the raw recording(s) into the final mp4 with the bundled wrapper:
|
|
|
134
142
|
--output <artifact-dir>/demo.mp4 \
|
|
135
143
|
--title "PR #42 — Add dark mode toggle" \
|
|
136
144
|
--subtitle "Toggling persists the theme across reloads" \
|
|
137
|
-
--layout single --speed 1
|
|
145
|
+
--layout single --speed 1 \
|
|
138
146
|
/tmp/demo-cap/session.webm
|
|
139
147
|
|
|
140
148
|
# Before/after comparison — first clip = left/BEFORE, second = right/AFTER
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pr-review
|
|
3
|
-
description: Review a GitHub pull request and post one formal review — advance the existing discussion
|
|
4
|
-
version:
|
|
3
|
+
description: Review a GitHub pull request and post one formal review — advance the existing discussion and give precision-first, high-signal feedback. A pure code review — no building. Use when asked to review a PR or on a cron PR scan.
|
|
4
|
+
version: 5.0.0
|
|
5
5
|
tags: [github, review, code-quality]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# PR Review
|
|
9
9
|
|
|
10
|
-
Review an open PR and post **one formal review
|
|
11
|
-
|
|
10
|
+
Review an open PR and post **one formal review** — high-signal findings only.
|
|
11
|
+
This is a **pure code review**: read the change and reason about it. Do **not**
|
|
12
|
+
install dependencies, build, or run tests — that is CI's job, and it validates
|
|
13
|
+
whether the change actually works far more reliably than you re-running it here.
|
|
14
|
+
Your job is judgement on the diff, not a build gate. A noisy review gets muted,
|
|
15
|
+
so precision matters more than volume.
|
|
12
16
|
|
|
13
|
-
This skill is the PR-specific procedure. It uses
|
|
14
|
-
|
|
15
|
-
the **code-review** skill for the finding tiers and what-to-check rubric.
|
|
17
|
+
This skill is the PR-specific procedure. It uses the **code-review** skill for
|
|
18
|
+
the precision bar and what-to-check rubric.
|
|
16
19
|
|
|
17
20
|
## Workspace
|
|
18
21
|
|
|
@@ -63,27 +66,32 @@ git diff --stat origin/<baseRef>...HEAD # churn
|
|
|
63
66
|
git diff origin/<baseRef>...HEAD # the patch
|
|
64
67
|
```
|
|
65
68
|
|
|
66
|
-
### 4.
|
|
69
|
+
### 4. Assess and submit
|
|
67
70
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
Apply the **code-review** skill's rubric — read each changed file in context;
|
|
72
|
+
check correctness / edge-cases / security / regression-risk / test-coverage.
|
|
73
|
+
Reason about the code statically; **don't build or run it** — trust CI to catch
|
|
74
|
+
what only running reveals, and spend your effort on what a human reviewer sees.
|
|
75
|
+
Follow that skill's **precision-first** rule: post **only Critical and Important**
|
|
76
|
+
findings, each with a `path:line` reference and a one-line concrete impact (what
|
|
77
|
+
breaks, for which input or caller) plus an inline code suggestion where it helps.
|
|
78
|
+
Drop Suggestions and Nits.
|
|
72
79
|
|
|
73
|
-
|
|
80
|
+
Before submitting, run the **confidence gate**: re-read each finding against the
|
|
81
|
+
actual code and try to refute it; drop any you can't defend against what the code
|
|
82
|
+
really does. A clean PR should be approved with few or no comments — that is a
|
|
83
|
+
good review, not a lazy one.
|
|
74
84
|
|
|
75
|
-
|
|
76
|
-
check correctness/edge-cases/security/regression-risk/test-coverage, and
|
|
77
|
-
categorise findings into the tiers. Then write the review:
|
|
85
|
+
Then write the review:
|
|
78
86
|
|
|
79
87
|
- One or two sentences on what the PR does.
|
|
80
|
-
-
|
|
81
|
-
suggestion where it helps.
|
|
88
|
+
- The surviving Critical/Important findings, each with its `path:line` + impact.
|
|
82
89
|
- For a complex PR, an impact note (affected paths, regression risks).
|
|
83
90
|
- An overall assessment, and thanks to the contributor.
|
|
84
91
|
|
|
85
92
|
Submit with `github_create_pull_request_review` (a **formal** review, not a plain
|
|
86
|
-
issue comment), event `APPROVE` / `REQUEST_CHANGES` / `COMMENT` to match
|
|
93
|
+
issue comment), event `APPROVE` / `REQUEST_CHANGES` / `COMMENT` to match what
|
|
94
|
+
survived the gate.
|
|
87
95
|
|
|
88
96
|
## Verification
|
|
89
97
|
|
package/workflows/pr-review.yaml
CHANGED
|
@@ -13,8 +13,9 @@ description: |
|
|
|
13
13
|
phases:
|
|
14
14
|
- name: review
|
|
15
15
|
label: Review
|
|
16
|
-
# pr-review: the PR procedure (primary).
|
|
17
|
-
#
|
|
18
|
-
|
|
16
|
+
# pr-review: the PR procedure (primary). code-review: the finding-tier +
|
|
17
|
+
# what-to-check rubric. No `building` — pr-review is a pure code review; CI
|
|
18
|
+
# validates that the change builds/runs.
|
|
19
|
+
skills: [pr-review, code-review]
|
|
19
20
|
model: "{{models.review}}"
|
|
20
21
|
variant: "{{variants.review}}"
|
|
@@ -76,7 +76,10 @@ wrong — STOP and fix it; do not ship a side-by-side that proves nothing.{{/if}
|
|
|
76
76
|
|
|
77
77
|
Author a `flow.json` (shape in the `browser-qa` skill) that scripts the
|
|
78
78
|
interaction like a director — record the baseline first, hold after state
|
|
79
|
-
changes, verify between steps.
|
|
79
|
+
changes (use `{"pause": 1200}` steps), verify between steps. Recording
|
|
80
|
+
auto-enables the driver's demo mode, so a **visible cursor** animates to each
|
|
81
|
+
target and a beat is held between steps — prefer `type` over `fill` so typing
|
|
82
|
+
shows on screen. Record with `--record-dir`:
|
|
80
83
|
|
|
81
84
|
```
|
|
82
85
|
node <browser-qa skill dir>/scripts/agent-browser.mjs run flow.json \
|
|
@@ -89,7 +92,7 @@ writing it into **`{{issueDir}}/demo.mp4`** (the harness harvests that dir):
|
|
|
89
92
|
```
|
|
90
93
|
<demo skill dir>/scripts/compose-demo.sh \
|
|
91
94
|
--output {{issueDir}}/demo.mp4 --title "<PR # — what it does>" \
|
|
92
|
-
--subtitle "<one line>" --layout single --speed 1
|
|
95
|
+
--subtitle "<one line>" --layout single --speed 1 --target-size-mb 5 \
|
|
93
96
|
/tmp/demo-cap/session.webm
|
|
94
97
|
```
|
|
95
98
|
|
|
@@ -10,6 +10,21 @@ THE ISSUE THIS BUILD WILL IMPLEMENT (use it to judge the escape hatch below):
|
|
|
10
10
|
SKIP CHECK — if {{issueDir}}/status.md already exists and contains
|
|
11
11
|
guardrails_status: READY, output "READY — guardrails already verified" and stop.
|
|
12
12
|
|
|
13
|
+
INSTALL DEPENDENCIES FIRST (do this before running ANY check command):
|
|
14
|
+
The harness pre-clones the repo but does NOT install dependencies, so the
|
|
15
|
+
test/lint/typecheck binaries (vitest, oxlint, tsc, eslint, ruff, …) will not
|
|
16
|
+
resolve until you install them. Detect the ecosystem and run the install:
|
|
17
|
+
- Node — pick the package manager from the lockfile: `pnpm-lock.yaml` → `pnpm install`,
|
|
18
|
+
`yarn.lock` → `yarn install`, `package-lock.json` (or none) → `npm ci`
|
|
19
|
+
(fall back to `npm install` if `npm ci` fails for a lockfile mismatch).
|
|
20
|
+
- Python — `pip install -e .` / `pip install -r requirements.txt`, or `poetry install` / `uv sync`.
|
|
21
|
+
- Rust — cargo fetches on first build; no separate step.
|
|
22
|
+
Only AFTER a successful install should you judge whether a command "runs". A
|
|
23
|
+
binary that is missing *after* dependencies installed cleanly is a real gap; a
|
|
24
|
+
binary missing *because deps were never installed* is NOT — do not BLOCK on it.
|
|
25
|
+
If the install itself fails (bad lockfile, missing manifest), that IS a blocking
|
|
26
|
+
guardrail — report it as such.
|
|
27
|
+
|
|
13
28
|
CHECK THESE GUARDRAILS:
|
|
14
29
|
|
|
15
30
|
1. **Test Framework** — Does the repo have a test runner (vitest, jest, pytest, cargo test, etc.)?
|