1Passwordに保存したパスワードやAPIキーを、コマンド実行や設定テンプレートで使うためのスキル。CLIの導入、認証、秘密情報の取得・受け渡しを案内します。
- 1Password CLIの導入と設定
- 保存済みAPIキーでコマンド実行
- 設定テンプレートへの秘密情報の埋め込み
起動中のHermesデスクトップアプリに接続し、画面要素のDOMやCSS、適用中のスタイル、コンソール出力を調べるスキルです。
Read the live Hermes desktop DOM/CSS over CDP.
実行スコア 未検証
インストール方法を見る開発中のHermesデスクトップアプリに接続し、実際に描画されたDOMやCSSをChrome DevTools Protocol(CDP)経由で読み取ります。要素が表示されているか、計算後のスタイルやサイズ、適用されたCSSルール、レンダラーのコンソール出力などを確認できます。見た目をコードから推測する代わりに、実際の画面でどのルールが適用されたかを調べる用途に向いています。
UIの変更が起動中のアプリに反映されたか確認したいときや、スタイルが効かない原因、安定して使える要素セレクターを調べたいときに便利です。色や余白の印象など、見た目の良し悪しを判断する用途ではなく、DOMやスタイルの事実確認に使います。
Hermesデスクトップアプリの開発サーバー起動時に開くCDPポートが必要です。パッケージ版ではポートが開きません。接続できない場合はユーザーのアプリを再起動せず、別の分離したインスタンスを使います。画面の美しさやレイアウトの印象は、この方法だけでは判断できません。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
SKILL.md の記述から、注意が要る操作と導入の前提を AI が確認しました。点数は実際に動かした結果(実行検証)だけで付けています。
点数には入れていません。 2026年10月30日 時点で AI(OpenAI Codex)が判定しました。目安なので、入れる前に原文も確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
When you are developing apps/desktop and the user is running that same app
(hgui / npm run dev), you can read the live rendered DOM of the window
they are looking at — computed styles, geometry, which CSS rule actually won,
console output — instead of inferring it from .tsx and being wrong.
Dev-server runs open a Chrome DevTools Protocol port on 127.0.0.1:9222
automatically. The renderer is a Chromium page, so everything DevTools can read,
a script can read.
This does not replace looking at it. CDP answers factual questions ("what is the computed padding", "did this element render", "which selector matches"). It cannot tell you whether the result looks good. Colour balance, spacing feel, and "is this ugly" still need the user's eyes or a screenshot. Answer facts with CDP; hand aesthetics to the user.
Don't use for: perf profiling or heap work (node-inspect-debugger,
debugging-hermes-desktop), or anything where the real question is "does this
look right".
Open on 127.0.0.1:9222 for any dev-server run. Closed in exactly two cases
(apps/desktop/electron/dev-cdp.ts):
HERMES_DESKTOP_DEV_SERVER — an unpackaged electron . against
dist/ is how the packaged app gets smoke tested, so it behaves like one.HERMES_DESKTOP_CDP_PORT moves the port (=9333) or disables it (=off).
Check before doing anything else:
curl -s --max-time 3 http://127.0.0.1:${HERMES_DESKTOP_CDP_PORT:-9222}/json/version
Empty → no port. Do not guess another port silently.
Never relaunch the user's app to get a port. That destroys their session and their state. Launch your own isolated instance instead (below).
apps/desktop/scripts/eval.mjs is the one-liner:
cd apps/desktop
node scripts/eval.mjs "document.querySelectorAll('[data-slot]').length"
For multi-step work use the shared client — it has target discovery and promise-aware eval:
import { CDP, SELECTORS } from './scripts/perf/lib/cdp.mjs'
const cdp = await CDP.connect({ port: 9222, match: '5174' })
const out = await cdp.eval(`JSON.stringify({
radius: getComputedStyle(document.documentElement).getPropertyValue('--radius-scalar').trim(),
composer: !!document.querySelector('[data-slot="composer-rich-input"]')
})`)
cdp.close()
SELECTORS in scripts/perf/lib/cdp.mjs holds the stable data-slot hooks
(composer, thread viewport, assistant message, turn pair, profile rail). Prefer
them over inventing a querySelector — they are updated as a unit when
components move.
Editing every call site because a style "isn't applying" is the classic waste. Read the real node first:
const el = document.querySelector('[data-slot="aui_assistant-message-root"] a')
JSON.stringify({
ownClasses: el.className,
weight: getComputedStyle(el).fontWeight,
parents: (() => {
const out = []
let n = el
while ((n = n.parentElement) && out.length < 6) out.push(n.className)
return out
})()
})
If the node carries no class of its own, the value is inherited — sweeping
call sites will not fix it, and you need the ancestor rule. A plugin stylesheet
(e.g. @tailwindcss/typography's prose a { font-weight: 500 }) routinely beats
a utility class; override on the shared class, not at each usage.
When there is no port, or you must not disturb the user's window:
cd apps/desktop
HERMES_HOME=$HOME/.hermes/cache/scratch/cdp-probe-home \
HERMES_DESKTOP_DEV_SERVER=http://127.0.0.1:5174 \
HERMES_DESKTOP_CDP_PORT=9333 \
npx electron . --user-data-dir=$HOME/.hermes/cache/scratch/cdp-probe-userdata
The separate --user-data-dir dodges Electron's single-instance lock, so it
cannot collide with a running hgui; the separate HERMES_HOME keeps it away
from real sessions. Pick a port other than 9222 for the same reason. Run it in
the background and kill it when done.
npm run perf:serve does the same with a temp HERMES_HOME baked in, if you
also want the perf harness.
ERR_NETWORK_CHANGED
gets blamed on whatever you just changed.HERMES_HOME has no backend. The app logs ECONNREFUSED for
hermes:api and may exit on its own. The renderer still mounts and the DOM is
readable — read promptly, and don't mistake a self-exited probe for a broken
port. Chromium logs DevTools listening on ws://127.0.0.1:<port>/… when it
binds; that line is the proof the port opened.outerHTML will bury your context. Project down to a small JSON object inside
the evaluated expression.match to CDP.connect. Without it you may attach to the pet
overlay, quick-entry window, or a devtools target instead of the main window.cdp.eval returns the value; raw Runtime.evaluate double-nests it
(.result.result.value). Use the wrapper.import.meta.env.DEV is true under vite dev in this repo. The note in
apps/desktop/scripts/profile-typing-lag.md claiming otherwise is stale.まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
1Passwordに保存したパスワードやAPIキーを、コマンド実行や設定テンプレートで使うためのスキル。CLIの導入、認証、秘密情報の取得・受け渡しを案内します。
損益計算書・貸借対照表・キャッシュフロー計算書を数式で連動させるExcelモデルを作ります。実績と予測の入力、前提を変えた比較、財務三表の整合性確認を段階的に進めます。
既存のPyTorch学習コードを少ない変更で複数GPUや複数マシン向けに整え、混合精度やメモリを節約する設定、学習の起動方法まで案内します。
HermesでActual Computerを使い、自分の機器でAIモデルを動かすための接続設定を支援します。中継サービスとローカル接続に対応し、モデル選択や応答確認も扱います。
技術が苦手で不満を抱きやすい利用者になりきってアプリを試し、操作の分かりにくさや離脱の原因を発見。実際の改善課題と個人的な不満を分け、修正案をまとめます。
2つのエージェントが別々に加えた変更のGit競合を、双方の差分と意図から中立的に解決。競合箇所ごとの判断理由を記録し、ビルドやテストで統合結果を確認します。