1Password CLIの導入と認証を確認し、保存したパスワードやAPIキーをコマンドや設定へ渡します。デスクトップ連携やサービスアカウントにも対応します。
- 1Password CLIを導入したいとき
- APIキーをコマンドに渡したいとき
- CIでサービスアカウント認証を使う
OpenClaw Control UIの画面変更を、状態別の比較ギャラリーと実ブラウザの操作テストで確認し、利用者のコメントや変更前後の画像を残すスキル。
Design, test, fix, or extend OpenClaw Control UI GUI; UI stress-test galleries with feedback inputs, Vitest + Playwright end-to-end checks, mocked Gateway flows, screenshots/videos, agent-verifiable browser proof.
OpenClaw Control UIの画面設計や修正を、見た目と操作の両面から確認します。通常、読み込み中、空、エラーなどの状態を並べたHTMLギャラリーを作り、各例へのコメントを保存・書き出せます。VitestとPlaywrightでは、Gatewayの応答を模擬して、画面起動、通信、操作後の表示までを通して検証します。見た目の変更には、確認済みの変更前後の画像を残します。
複数の状態を持つ画面や部品を変更するとき、具体的な表示例を見ながら意見を集めたいときに向いています。チャット送信など、通信と画面表示を一緒に確かめたい開発にも使えます。
OpenClawの開発環境と導入済みの依存パッケージが前提です。通常は実際の認証情報を使わず検証します。ギャラリーは操作テストの代わりにはならず、生成画像や動画は原則コミットしません。
この紹介文は、公開されている SKILL.md をもとに AI(Claude Haiku)が作成しました。正確な仕様は下の原文を確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Control UI design feedback + real browser flows with deterministic Gateway data.
Gallery supports design review; never replaces focused behavior tests or inspected before/after proof from running UI. Preserve final proof in fresh capture directories below, separate from evolving gallery.
ui/src/**/*.e2e.test.ts.ui/src/test-helpers/control-ui-e2e.ts: start Vite Control UI + install mocked Gateway WebSocket..browser.test.ts/unit tests. E2E lane: routing, app boot, Gateway handshake, requests, visible UI behavior together.node scripts/run-vitest.mjs run --config test/vitest/vitest.ui-e2e.config.ts --configLoader runner ui/src/e2e/chat-flow.messaging.e2e.test.ts
pnpm test:ui:e2e
$openclaw-testing: trusted development proof may run locally;
remote proof needs browser/platform, clean-environment, or source-isolation reason.page.clock before fixture; pause with pauseVirtualClock; advance only fixture work needed to enter state. setFixedTime alone does not pause timers. Capture readiness uses native layout delivery without advancing fixture clock.takeControlUiScreenshotFrame from ui/src/test-helpers/control-ui-e2e-screenshot.ts, explicit semantic content + animations: "disabled". Pass viewport changes/intended scroll target through viewport/scrollTo; verifies retained centering, viewport/scroll-clip intersection, settled layout/fonts/visible images.elements; save returned page PNG + crops from that single frame. Crops enclose fractional bounds in measured PNG pixels; dimensions + unchanged bounds asserted. Never combine separate page/locator screenshots as same-frame evidence.pnpm dev:ui:mock -- --port <port>.browser.newContext({ recordVideo: { dir, size }, viewport }), page.screenshot({ path }); close context before reporting video path.createControlUiE2eArtifactDir(scope, parentDir?) from ui/src/test-helpers/control-ui-e2e-artifacts.ts. Each call atomically creates fresh directory + logs actual path. Parent precedence: explicit parent → trimmed existing OPENCLAW_UI_E2E_ARTIFACT_DIR → repository's .artifacts/control-ui-e2e parent. Existing custom output controls select parents; never add/rewrite env vars to enable capture.beforeEach, once per attempt; standalone scripts once per invocation. Pass owner explicitly to shared capture helpers. Keep original gates, feature/stage names, viewports, waits, recording options. Distinct stages: distinct filenames. Keep screenshots/reports/video together.chat-outbox-*, chat-attachment-read-lifecycle: separate owners; coordinate before claiming replay-safe retention there.Start app server; install mock before page.goto; assert Gateway traffic + visible UI:
const server = await startControlUiE2eServer();
const page = await context.newPage();
const gateway = await installMockGateway(page, {
historyMessages: [{ role: "assistant", content: [{ type: "text", text: "Ready." }] }],
});
await page.goto(`${server.baseUrl}chat`);
await page.locator(".agent-chat__composer-combobox textarea").fill("hello");
await page.getByRole("button", { name: "Send message" }).click();
const request = await gateway.waitForRequest("chat.send");
await gateway.emitChatFinal({ runId: String(request.params.idempotencyKey), text: "Done." });
await page.getByText("Done.").waitFor();
New flow needs more Gateway surface: extend installMockGateway with typed
scenario options/method responses.
withControlUiRunInspector from ui/src/test-helpers/control-ui-run-inspector.ts.
Owns separate page; closes on success/failure; leaves caller's Chat page + unsent
draft in place.preparePage: mock Gateway or campaign's existing per-tab authentication setup.
Shared browser context does not copy another tab's session-storage token.RunInspectorSelector +
activityRunInspectorSelectorHref, including selected receipt's decision cursor.data-run-id + data-execution-id: returned present identity,
not just requested URL. Selected detail's data-receipt-selector-id =
DecisionReceiptDisplayV1.selectorId.agent.wait.terminalReceipt.assistantTranscriptIdempotencyKey. Never manufacture
key from DOM selector/history row or claim Inspector evidence repairs its absence.Active run, not Running.playwright test spec; keep recording flow focused:
data-*/user-facing role selectors;
wait on asserted states, not fixed sleeps.sessions.list called with expected search,
offset, limit.まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
1Password CLIの導入と認証を確認し、保存したパスワードやAPIキーをコマンドや設定へ渡します。デスクトップ連携やサービスアカウントにも対応します。
OpenClawへの自然な言葉の依頼をClaude Codeなどの外部コーディングエージェントへ振り分け、作業の開始や継続、スレッド内の会話をつなぐスキルです。
OpenClawにモデル提供サービスを追加し、実際の応答まで確認するスキル。認証情報は環境変数やファイルへの参照で扱い、設定の検証と結果報告も進めます。
AIエージェントの作業ログから、GitHubのPRやissueに添える記録を作ります。関連部分を絞り、機密情報を除いてプレビューと掲載を扱います。
macOSのApple Notesをエージェントから作成・検索・編集・削除し、フォルダ間の移動やHTML・Markdownへの書き出しを行うスキル。
Apple Remindersの予定付きToDoをMacから確認・追加・編集するスキル。リストの管理や完了・削除にも対応し、iPhoneやiPadで見るタスクを整理できます。