Skip to content

Commit 2b4518a

Browse files
authored
Merge branch 'main' into fix/persist-orphan-user-repair
2 parents e42bcee + cbc69d9 commit 2b4518a

4,607 files changed

Lines changed: 219179 additions & 203352 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/skills/crabbox/SKILL.md

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ Blacksmith fallback playbook.
2222
command -v crabbox
2323
../crabbox/bin/crabbox --version
2424
pnpm crabbox:run -- --help | sed -n '1,120p'
25+
../crabbox/bin/crabbox desktop launch --help
26+
../crabbox/bin/crabbox webvnc --help
2527
```
2628

2729
- OpenClaw scripts prefer `../crabbox/bin/crabbox` when present. The user PATH
@@ -30,6 +32,14 @@ pnpm crabbox:run -- --help | sed -n '1,120p'
3032
Even if config still says AWS, maintainer validation should normally pass
3133
`--provider blacksmith-testbox`.
3234
- Prefer local targeted tests for tight edit loops. Broad gates belong remote.
35+
- Do not treat inherited shell env as operator intent. In particular,
36+
`OPENCLAW_LOCAL_CHECK_MODE=throttled` from the local shell is not permission
37+
to move broad `pnpm check:changed`, `pnpm test:changed`, full `pnpm test`, or
38+
lint/typecheck fan-out onto the laptop.
39+
- Only use `OPENCLAW_LOCAL_CHECK_MODE=throttled|full` when the user explicitly
40+
asks for local proof in the current task. If Testbox is queued or capacity is
41+
constrained, report the blocker and keep only targeted local edit-loop checks
42+
running.
3343

3444
## macOS And Windows Targets
3545

@@ -139,6 +149,35 @@ pnpm crabbox:stop -- <id-or-slug>
139149
blacksmith testbox stop --id <tbx_id>
140150
```
141151

152+
## Interactive Desktop And WebVNC
153+
154+
Prefer WebVNC for human inspection because the browser portal can preload the
155+
lease VNC password and avoids a native VNC client's copy/paste/password dance.
156+
Use native `crabbox vnc` only when WebVNC is unavailable, the browser portal is
157+
broken, or the user explicitly wants a local VNC client.
158+
159+
Common desktop flow:
160+
161+
```sh
162+
../crabbox/bin/crabbox warmup --provider hetzner --desktop --browser --class standard --idle-timeout 60m --ttl 240m
163+
../crabbox/bin/crabbox desktop launch --provider hetzner --id <cbx_id-or-slug> --browser --url https://example.com --webvnc --open
164+
```
165+
166+
Useful WebVNC commands:
167+
168+
```sh
169+
../crabbox/bin/crabbox webvnc --provider hetzner --id <cbx_id-or-slug> --open
170+
../crabbox/bin/crabbox webvnc --provider hetzner --id <cbx_id-or-slug> --daemon --open
171+
../crabbox/bin/crabbox webvnc --provider hetzner --id <cbx_id-or-slug> --status
172+
../crabbox/bin/crabbox webvnc --provider hetzner --id <cbx_id-or-slug> --stop
173+
../crabbox/bin/crabbox screenshot --provider hetzner --id <cbx_id-or-slug> --output desktop.png
174+
```
175+
176+
`desktop launch --webvnc --open` is usually the nicest one-shot: it starts the
177+
browser/app inside the visible session, bridges the lease into the authenticated
178+
WebVNC portal, and opens the portal. Keep browsers windowed for human QA; use
179+
`--fullscreen` only for capture/video workflows.
180+
142181
## If Crabbox Fails
143182

144183
Keep the fallback narrow. First decide whether the failure is Crabbox itself,
@@ -167,6 +206,10 @@ Common Crabbox-only failures:
167206
printed Actions URL.
168207
- Cleanup uncertainty: run `blacksmith testbox list` and stop only boxes you
169208
created.
209+
- Testbox queued/capacity pressure: do not convert a broad changed gate or full
210+
suite into local `OPENCLAW_LOCAL_CHECK_MODE=throttled pnpm ...`. Leave the
211+
remote lane queued, switch to a narrower targeted local check, or stop and
212+
report the capacity blocker.
170213

171214
If Crabbox cannot dispatch, sync, attach, or stop but Blacksmith itself works,
172215
use direct Blacksmith from the repo root:
@@ -253,9 +296,27 @@ Install/auth for owned Crabbox if needed:
253296

254297
```sh
255298
brew install openclaw/tap/crabbox
256-
printf '%s' "$CRABBOX_COORDINATOR_TOKEN" | crabbox login --url https://crabbox.openclaw.ai --provider aws --token-stdin
299+
crabbox login --url https://crabbox.openclaw.ai --provider aws
257300
```
258301

302+
New users should self-resolve broker auth before anyone asks for AWS keys:
303+
304+
```sh
305+
crabbox config show
306+
crabbox doctor
307+
crabbox whoami
308+
```
309+
310+
- If broker auth is missing, run `crabbox login --url https://crabbox.openclaw.ai --provider aws`.
311+
- If the CLI asks for `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, or AWS
312+
profile setup during normal OpenClaw validation, assume the agent selected
313+
the wrong path. Use brokered `crabbox login`, `--provider blacksmith-testbox`,
314+
or an existing brokered lease before asking the user for cloud credentials.
315+
- Ask for AWS keys only for explicit direct-provider/account administration,
316+
not for normal brokered OpenClaw proof.
317+
- Trusted automation may still use
318+
`printf '%s' "$CRABBOX_COORDINATOR_TOKEN" | crabbox login --url https://crabbox.openclaw.ai --provider aws --token-stdin`.
319+
259320
macOS config lives at:
260321

261322
```text
@@ -266,6 +327,18 @@ It should include `broker.url`, `broker.token`, and usually `provider: aws`
266327
for owned-cloud lanes. Do not let that config override the OpenClaw default
267328
when Blacksmith proof is requested; pass `--provider blacksmith-testbox`.
268329

330+
### Interactive Desktop / WebVNC
331+
332+
For human desktop demos, prefer `webvnc` over native `vnc` and keep the remote
333+
desktop visible/windowed. Do not fullscreen the remote browser or hide the XFCE
334+
panel/window chrome unless the explicit goal is video/capture output. After
335+
launch, verify a screenshot shows the desktop panel plus browser title bar. If
336+
Chrome is fullscreen, toggle it back with:
337+
338+
```sh
339+
crabbox run --id <lease> --shell -- 'DISPLAY=:99 xdotool search --onlyvisible --class google-chrome windowactivate key F11'
340+
```
341+
269342
## Diagnostics
270343

271344
```sh

.agents/skills/openclaw-parallels-smoke/SKILL.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Use this skill for Parallels guest workflows and smoke interpretation. Do not lo
1414
- Stable `2026.3.12` pre-upgrade diagnostics may require a plain `gateway status --deep` fallback.
1515
- Treat `precheck=latest-ref-fail` on that stable pre-upgrade lane as baseline, not automatically a regression.
1616
- Pass `--json` for machine-readable summaries.
17-
- Per-phase logs land under `/tmp/openclaw-parallels-*`.
17+
- Per-phase logs land under `.artifacts/parallels/openclaw-parallels-*` by default. Override with `OPENCLAW_PARALLELS_ARTIFACT_ROOT` when a run needs another artifact volume.
1818
- Do not run local and gateway agent turns in parallel on the same fresh workspace or session.
1919
- Hard-cap every top-level Parallels lane with host `timeout --foreground` (or `gtimeout --foreground` if that is the available binary) so a stalled install, snapshot switch, or `prlctl exec` transport cannot consume the rest of the testing window. Defaults:
2020
- macOS: `75m`
@@ -68,8 +68,16 @@ Use this skill for Parallels guest workflows and smoke interpretation. Do not lo
6868
- The Windows same-guest update helper should write stage markers to its log before long steps like tgz download and `npm install -g` so the outer progress monitor does not sit on `waiting for first log line` during healthy but quiet installs.
6969
- Linux same-guest update verification should also export `HOME=/root`, pass `OPENAI_API_KEY` via `prlctl exec ... /usr/bin/env`, and use `openclaw agent --local`; the fresh Linux baseline does not rely on persisted gateway credentials.
7070
- The npm-update wrapper now prints per-lane progress from the nested log files. If a lane still looks stuck, inspect the nested logs in `runDir` first (`macos-fresh.log`, `windows-fresh.log`, `linux-fresh.log`, `macos-update.log`, `windows-update.log`, `linux-update.log`) instead of assuming the outer wrapper hung.
71-
- If the wrapper fails a lane, read the auto-dumped tail first, then the full nested lane log under `/tmp/openclaw-parallels-npm-update.*`.
71+
- Each run writes both `summary.json` and `summary.md`; read the markdown first for quick human triage, then the JSON/timings for automation.
72+
- For full beta validation after a tag is published, prefer one command:
73+
- `timeout --foreground 150m pnpm test:parallels:npm-update -- --beta-validation beta3 --json`
74+
This resolves `beta3` to the latest `*-beta.3` version, runs latest->that-version same-guest update coverage, and then runs fresh install smoke for that exact published target on the same selected OS matrix. Use `--platform macos|windows|linux` to narrow reruns.
75+
- For beta 4 npm validation with agent turns, the known-good shape is:
76+
- `gtimeout --foreground 150m pnpm test:parallels:npm-update -- --beta-validation beta4 --model openai/gpt-5.4 --json`
77+
Prefer the explicit `beta4` alias over `openclaw@beta` when validating a specific prerelease number; npm tags can move.
78+
- If the wrapper fails a lane, read the auto-dumped tail first, then the full nested lane log under `.artifacts/parallels/openclaw-parallels-npm-update.*`.
7279
- Current known macOS update-lane transport signature when the fallback is missing or bypassed: `Unable to authenticate the user. Make sure that the specified credentials are correct and try again.` Treat that as Parallels current-user authentication before blaming npm or OpenClaw.
80+
- A macOS packaged fresh install with global package directories or bundled files mode `0777` usually means the harness used the root `prlctl exec` fallback under a permissive umask. The POSIX guest transports should prepend `umask 022`; verify the phase preflight line before blaming npm.
7381

7482
## CLI invocation footgun
7583

.agents/skills/openclaw-pr-maintainer/SKILL.md

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
name: openclaw-pr-maintainer
3-
description: Review, triage, close, label, comment on, or land OpenClaw PRs/issues with maintainer evidence checks.
3+
description: Use immediately for any pasted OpenClaw GitHub issue or PR URL/number, and for OpenClaw issue/PR review, triage, duplicate search, opener identity/who wrote it, author account age/activity, comments, labels, close, land, or maintainer evidence checks.
44
---
55

66
# OpenClaw PR Maintainer
@@ -24,10 +24,68 @@ gitcrawl search openclaw/openclaw --query "<scope or title keywords>" --mode hyb
2424
gitcrawl cluster-detail openclaw/openclaw --id <cluster-id> --member-limit 20 --body-chars 280 --json
2525
```
2626

27+
## Surface opener identity
28+
29+
- For every reviewed, triaged, closed, or landed issue/PR, show the opener's human name when available, GitHub login, and account age.
30+
- Get the login from `gh issue view` / `gh pr view` (`author.login`), then fetch profile metadata once with `gh api users/<login> --jq '{login,name,created_at,type}'`.
31+
- Report opener identity as one compact line:
32+
`By: Jane Doe (@jane, acct 2021-04-03) | OpenClaw: 4 PRs, 2 issues, 11 commits/12mo | GitHub: 9 repos, 86 commits, 9 PRs, 3 issues, 12 reviews`
33+
- Always show recent activity in two lanes: OpenClaw-local PRs, issues, and commits in the last 12 months; and general public GitHub activity over the same window. For linked issue-fixing PRs, include both the PR author and issue opener when they differ.
34+
- Prefer the bundled helper for activity lookups:
35+
36+
```bash
37+
.agents/skills/openclaw-pr-maintainer/scripts/github-activity.sh <login> [other-login...]
38+
.agents/skills/openclaw-pr-maintainer/scripts/github-activity.sh --global <login>
39+
```
40+
41+
- The helper reports repo-local activity first and can fetch public GitHub contribution totals for the same window with `--global`; run the global form by default for review/triage identity summaries.
42+
- If the global contribution graph reports zero or looks inconsistent with visible public activity, sanity-check with `gh api users/<login>`, `gh api 'users/<login>/events/public?per_page=100'`, and recent public repo commits before calling the account inactive.
43+
- The helper is intentionally cache-friendly for gitcrawl-backed `gh`: it rounds repo-local windows to the UTC day, rounds global contribution windows to the UTC hour, and counts PRs/issues from one paginated issues response before fetching commits separately. Prefer reusing the helper instead of hand-rolling several `gh api` loops.
44+
- If the contribution graph is misleading or zero but public events/repos show activity, keep it one line, for example:
45+
`By: pickaxe (@ProspectOre, acct 2019-08-24) | OpenClaw: 5 PRs, 0 issues, 5 commits/12mo | GitHub: 5 repos, 29 recent events, 100 public own-repo commits; graph=0`
46+
- If `name` is empty, use the login only. If profile lookup is rate-limited or unavailable, say `account age unknown` rather than omitting the opener.
47+
- Use identity and activity as triage signal, not proof by itself: new, low-activity, or bot-like accounts can raise review caution, but code, repro, and CI evidence still decide.
48+
49+
## Suppress top-maintainer items in issue triage
50+
51+
When Peter asks for issue triage, hot issues, pressing bugs, Discord-correlated issues, or "what is still open", do not surface issues or PRs authored by top maintainers by default. He wants external/user-reported hot issues and external PRs, not maintainer-owned work queues.
52+
53+
Suppress by default when the opener/author is one of:
54+
55+
- `@vincentkoc`
56+
- `@Takhoffman`
57+
- `@gumadeiras`
58+
- `@obviyus`
59+
- `@shakkernerd`
60+
- `@mbelinky`
61+
- `@joshavant`
62+
- `@ngutman`
63+
- `@vignesh07`
64+
- `@huntharo`
65+
66+
Also suppress lower-priority maintainer-owned noise from the broader keep/top-maintainer group unless it is directly relevant:
67+
68+
- `@thewilloftheshadow`
69+
- `@onutc` / `@osolmaz`
70+
- `@jacobtomlinson`
71+
- `@tyler6204`
72+
- `@velvet-shark`
73+
- `@jalehman`
74+
- `@frankekn`
75+
- `@ImLukeF`
76+
- `@mcaxtr`
77+
78+
Exceptions:
79+
80+
- Show maintainer-authored items when Peter explicitly asks for maintainer PRs/issues, PR landing candidates, release-blocking maintainer work, or a specific PR/issue number.
81+
- Show a maintainer-authored item when it is the canonical fix for an external hot issue, but frame it as the fix path rather than as a user-facing issue candidate.
82+
- Do not close, label, or deprioritize solely because an item is maintainer-authored; this section only controls what appears in triage shortlists.
83+
2784
## Apply close and triage labels correctly
2885

2986
- If an issue or PR matches an auto-close reason, apply the label and let `.github/workflows/auto-response.yml` handle the comment/close/lock flow.
3087
- Do not manually close plus manually comment for these reasons.
88+
- If an issue/PR is already fixed on current `main` or solved by a new release, comment with proof plus the canonical commit/PR/release, then close it.
3189
- `r:*` labels can be used on both issues and PRs.
3290
- Current reasons:
3391
- `r: skill`

0 commit comments

Comments
 (0)