Webページの移動やフォーム入力、クリックをエージェントに任せ、情報抽出や画面保存、操作前後の比較まで行います。ブラウザ作業の自動化やWebアプリの確認に使えるスキル。
- フォーム入力やクリックを自動化したいとき
- Webページのテキスト抽出
- ページのスクリーンショット・PDF保存
進行中の開発作業を、別のマシンで動くHumanLayerの新しいセッションへ引き継ぎます。変更の保存、引き継ぎ文書、接続先の準備と起動確認まで扱うスキルです。
Move the current task to a new HumanLayer session on another host (sandbox, cloud VM, or a machine you can SSH into).
実行スコア 未検証
インストール方法を見る進行中の作業を、別のホスト上のHumanLayerセッションに引き継ぎます。変更のコミットとプッシュ、目標や決定事項、残作業を記したhandoff.mdの作成を行い、移動先のツール導入や認証、常駐プロセスの起動、新しいセッションの状態確認まで扱います。
開発の続きをサンドボックスやクラウドVMで進めたい場合、SSHやTailscaleで接続できる別のマシンへ作業を移したい場合に向いています。繰り返し使う移動先やエージェントの設定は、秘密情報を含めずに保存できます。
HumanLayer、Git、接続先の環境や認証が必要です。新しいセッションは会話を再開するのではなく、handoff.mdとプッシュ済みのブランチから始まります。未コミットの変更も保存対象です。秘密ファイルは選択したものだけを転送し、値を表示しない手順を取ります。移動後も接続先の計算環境は停止・削除しません。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Move this task to a new session on another host. Ask every question up front, then do the work without more check-ins. Keep messages short.
The remote session is a new session in the same task. It does not resume this conversation. It starts from handoff.md and the pushed branch.
Before asking anything, collect:
Stage: use prod unless HUMANLAYER_SESSION_URL or the user points elsewhere. app.humanlayer.com = prod, app.codelayer.cloud = beta, app.dev.codelayer.gg = dev.
Session, task, task slug, workspace, and host IDs, plus the coding agent, provider, model, effort, and permission mode: read them from the <humanlayer_session> block in your system prompt.
Task directory: .humanlayer/tasks/<task-slug>/.
Git: branch, git status, and the remote to push to (for example origin or upstream). If there is only one remote, use it.
Saved defaults: .humanlayer/teleport.json, if present.
Project workspace, if the workspace ID is set. The new host builds its worktree from the workspace's branch on the project's remote, so read both:
humanlayer api project-workspaces get-status --task-id <task-id> > /tmp/hl-workspace.json
jq -r '.workspace.projectId, (.workspace.repositories[] | [.repositoryIdentity, .remoteUrl, .branch, .default] | @tsv)' /tmp/hl-workspace.json
Push to the git remote whose URL matches the project's remoteUrl, not a fork. If more than one remote matches, ask.
Secret files: .env files, local settings, and keys that git does not carry. Find them and list their key names with references/secrets.md. Never print a value.
Then ask one message covering only what is still unknown:
If the worktree is dirty, say in the same message: "Uncommitted changes will be committed and pushed to <branch> before the move." Do not ask a separate question about it.
If the user gives reusable answers that are not in teleport.json, offer to save them in that same message.
.humanlayer/teleport.json holds project defaults. The user's words in this session win over the file. Never save secrets, tokens, one-time codes, or session IDs. secretFiles holds paths only.
{
"stage": "prod",
"compute": "freestyle",
"host": "my-dev-vm",
"access": "freestyle-ssh",
"agents": ["claude"],
"daemonSupervisor": "systemd",
"secretFiles": [".env", "packages/db/.env"],
"notes": ["Persistent VM. Do not stop it after the move."]
}
.env, keys, credentials) or no writable remote exists, and tell the user the exact blocker.
.humanlayer/tasks/<task-slug>/handoff.md with everything the next agent needs:
Use the provider CLIs already signed in on this machine. Check --help when unsure. Do not stop or delete compute when done.
Run every interactive step in a named tmux session on the host (hl-auth, hl-claude, hl-codex, hl-gh, hl-daemon). Read the pane with tmux capture-pane -p, show the user any URL or code, and send their answers with tmux send-keys.
Install missing tools: tmux, git, Node or Bun, @humanlayer/cli, and the chosen agents.
Update the HumanLayer CLI, Claude Code, and gh to the latest version, even if they are already installed. Base images often ship old copies.
bun add -g @humanlayer/cli@latest # or npm install -g @humanlayer/cli@latest
curl -fsSL https://claude.ai/install.sh | bash # installs to ~/.local/bin and keeps itself updated
sudo apt-get update && sudo apt-get install -y --only-upgrade gh # or brew upgrade gh
Put ~/.local/bin and the HumanLayer CLI's directory first on PATH, then check that command -v humanlayer claude gh finds the new copies.
HumanLayer login: humanlayer login (with --dev or --beta if needed). If the account has more than one organization, the CLI lists them; ask the user which to use and send the choice.
Agent login:
claude, then finish the login. Test with claude -p hi.humanlayer agents auth codex login (stage flag before agents), and pick device code. Do not use codex login: HumanLayer keeps its own Codex credentials, so the Codex CLI login does not reach HumanLayer sessions. Check with humanlayer agents auth codex status, then test with a short humanlayer codelayer prompt.GitHub: gh auth status; if signed out, run gh auth login and finish the device flow. Then gh auth setup-git.
If the task has no workspace ID, clone the repo on the host and check out the pushed branch. Note the clone path; the session launches there.
If the task has a workspace ID, do not clone by hand. Tell HumanLayer where each repository comes from on the new host, after the daemon is running (step 5) and you have its host ID:
humanlayer api projects v2 repository-sources get --project-id <project-id> --host-id <remote-host-id>
humanlayer api projects v2 repository-sources upsert --project-id <project-id> --host-id <remote-host-id> \
--sources '{"<repository-identity>":{"kind":"managed_clone"}}'
Save every unknown source as managed_clone, which makes the daemon clone it under ~/.humanlayer/repos/. If the host already has a checkout, use {"kind":"filesystem","path":"/absolute/path"} instead; it must be the top of a checkout with a remote matching the identity. Keep existing sources as they are.
Copy the secret files the user chose, by the steps in references/secrets.md. For a managed clone that does not exist yet, wait for step 6: the daemon makes the clone during workspace setup.
You start the daemon. Never leave this step to the user.
humanlayer login: follow references/systemd.md.humanlayer daemon launch (with the stage flag) in tmux session hl-daemon.Wait for the startup logs to show the daemon is ready. Read the host ID from ~/.humanlayer/riptide/host_id on the remote host.
Run this from the current host. It records a session for the remote daemon; the daemon picks it up and starts the agent. Prod has no stage flag; dev uses --dev; beta uses --beta. Check --help if a flag fails.
If the task has a workspace ID, save the repository sources first (step 4.7), then:
humanlayer api sessions v2 create \
--task-id <task-id> \
--workspace-id <workspace-id> \
--host-id <remote-host-id> \
--title '"<task name> (teleported)"' \
--text "Read .humanlayer/tasks/<task-slug>/handoff.md, check out <branch>, then continue the task." \
--coding-agent <claude|codelayer> \
--provider <provider> \
--model <model> \
--permissions-mode <mode>
If the workspace ID is none (a task launched in a plain directory), launch in the clone from step 4:
humanlayer api sessions launch \
--task-id '"<task-id>"' \
--working-directory <clone-path-on-remote-host> \
--host-id <remote-host-id> \
--title '"<task name> (teleported)"' \
--text "Read .humanlayer/tasks/<task-slug>/handoff.md, then continue the task." \
--coding-agent <claude|codelayer> \
--provider <provider> \
--model <model> \
--permissions-mode <mode>
Then poll the new session's status until the daemon moves it to launching, running, or ready_for_input, or it fails:
humanlayer api sync sessions --where '{"type":"comparison","field":["id"],"operator":"eq","value":"<new-session-id>"}'
--title takes a JSON value in both commands, so wrap it in both quote styles as shown.
A returned session ID only means the request was saved. Do not report success until the daemon has moved the session forward.
For a project workspace, the session first sits in waiting_for_workspace while the new host clones and makes the worktree. Check setup on the new host:
humanlayer api project-workspaces get-status --task-id <task-id> > /tmp/hl-workspace.json
jq -r '.materializations[] | .hostName as $h | .repositories[] | [$h, .repository.repositoryIdentity, .status.status, (.status.materialization.path // ""), (.status.error // "" | tostring)] | @tsv' /tmp/hl-workspace.json
A setup error before the worktree exists leaves the session waiting forever instead of failing. Show the error, fix the cause, then retry with that repository's status.updatedAt:
humanlayer api project-workspaces retry-repository-setup --task-id <task-id> --host-id <remote-host-id> \
--repository-identity <repository-identity> --expected-updated-at <status.updatedAt>
If secret files were waiting for the managed clone, copy them as soon as the worktree path shows up: into the clone, so later worktrees get them, and into this worktree, which setup made without them.
Give the user:
<app origin>/sessions/<new-session-id>Say what failed, show the error, list the steps to fix it, and offer to run them. Common cases:
ORGANIZATION_REQUIRED or expired login: run humanlayer login again with the stage flag.HOST_NOT_AUTHORIZED: the host ID does not match a daemon signed in to this organization.REPOSITORY_SOURCES_REQUIRED: the new host has no saved source for a repository. Save one with projects v2 repository-sources upsert (step 4.7), then launch again.waiting_for_workspace: read project-workspaces get-status (step 6).failed: read the daemon logs (journalctl --user -u humanlayer-daemon.service -n 100 --no-pager or the hl-daemon pane).まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
Webページの移動やフォーム入力、クリックをエージェントに任せ、情報抽出や画面保存、操作前後の比較まで行います。ブラウザ作業の自動化やWebアプリの確認に使えるスキル。
曖昧で読みにくい英文を、語の意味をそろえた短い能動態の文へ書き直すスキル。指示文やツール説明を見直し、修正理由と変更前後を表で確認できます。
GitHubのPRの状態、レビューの会話、CI失敗のログを専用スクリプトで収集し、変更の確認状況や未解決の指摘、失敗したジョブとステップを調べるスキル。
リリース時に対象パッケージの基準バージョンを更新し、関連ファイルの同期と生成結果を検証して、コミットからPRブランチへのプッシュまで進めるスキル。
Git のコミット間や作業中のコードで、関数の呼び出し構造の違いを確認します。呼び出しツリーの表示や、指定した関数へ至る経路の調査にも使えます。
ターミナルからブラウザのクリックや入力、ページ移動を自動化し、通信やエラー、表示速度も調べられる、Chrome DevToolsのCLI操作を支援するスキル。