websh について
webshは、キャッシュしたページをシェル形式で移動・検索するためのスキルです。コマンドや自然言語でURLを調べたいユーザー向けで、非同期取得とリンクの先読みを行います。
主な機能
- 01cdによるURL移動
- 02リンクや要素の一覧表示
- 03ページ本文の抽出と絞り込み
- 04ページの非同期取得
- 05リンク先のバックグラウンド先読み
活用シーン
- 01ページ内のリンク検索
- 02ページ本文から語句を検索
- 03リンク先ページへの移動
- 04タイトルやメタデータの抽出
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ openprose/ prose --skill webshインストール後、Claude Code で/webshを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
PLAN.mdREADME.mdcommands.mdhelp.mdshell.mdstate/cache.mdcrawl.md詳細
websh スキル
websh はウェブ用のシェルです。URL はパスで、DOM はファイルシステムです。URL に cd すると、ls、grep、cat などのコマンドがキャッシュされたページの内容を即座にローカルで操作します。
websh> cd https://news.ycombinator.com
websh> ls | head 5
websh> grep "AI"
websh> follow 1
有効にするタイミング
次の場合に、このスキルを有効にします。
webshコマンドを使用したとき(例:websh、websh cd https://...)- シェルコマンドで URL を「閲覧」または「移動」したいとき
- 「ウェブ用のシェル」や「ウェブシェル」について尋ねたとき
- URL を使ったシェル風の構文(
cd https://...、ウェブページに対するls)を使用したとき - ウェブページの内容をプログラムで抽出または検索したいとき
柔軟な対応:意図を推測する
websh はインテリジェントなシェルです。 ユーザーが正式なコマンドではない入力をした場合は、意図を推測して実行します。「コマンドが見つかりません」というエラーを返したり、確認を求めたりしません。そのまま実行します。
links → ls
open url → cd url
search "x" → grep "x"
download → save
what's here? → ls
go back → back
show me titles → cat .title (or similar)
自然言語でも操作できます。
show me the first 5 links
what forms are on this page?
compare this to yesterday
正式なコマンドは出発点にすぎません。重要なのはユーザーの意図です。
コマンドの振り分け
websh がアクティブな場合、コマンドはウェブシェルの操作として解釈します。
| コマンド | 操作 |
|---|---|
cd <url> | URL に移動して、取得・抽出します |
ls [selector] | リンクまたは要素を一覧表示します |
cat <selector> | テキストコンテンツを抽出します |
grep <pattern> | テキストまたは正規表現で絞り込みます |
pwd | 現在の URL を表示します |
back | 前の URL に戻ります |
follow <n> | n 番目のリンクに移動します |
stat | ページのメタデータを表示します |
refresh | 現在の URL を再取得します |
help | ヘルプを表示します |
コマンドの完全なリファレンスについては、commands.md を参照してください。
ファイルの場所
すべてのスキルファイルは、この SKILL.md と同じ場所にあります。
| ファイル | 用途 |
|---|---|
shell.md | シェルの動作仕様(websh の実行時に読み込みます) |
commands.md | コマンドの完全なリファレンス |
state/cache.md | キャッシュ管理と抽出プロンプト |
state/crawl.md | 積極的なクロールエージェントの設計 |
help.md | ユーザー向けヘルプと使用例 |
PLAN.md | 設計ドキュメント |
ユーザーの状態(ユーザーの作業ディレクトリ内):
| パス | 用途 |
|---|---|
.websh/session.md | 現在のセッション状態 |
.websh/cache/ | キャッシュされたページ(HTML +解析済み Markdown) |
.websh/crawl-queue.md | 実行中のクロールキューと進捗 |
.websh/history.md | コマンド履歴 |
.websh/bookmarks.md | 保存した場所 |
実行
websh を初めて呼び出すときは、処理を止めないでください。バナーとプロンプトをすぐに表示します。
┌─────────────────────────────────────┐
│ ◇ websh ◇ │
│ A shell for the web │
└─────────────────────────────────────┘
~>
続いて、次のようにします。
- 即座に:バナーとプロンプトを表示します(ユーザーはすぐに入力を開始できます)
- バックグラウンド:必要に応じて
.websh/を初期化する haiku タスクを起動します - コマンドを処理します —
commands.mdに従って解析して実行します
セットアップで処理を止めないでください。 シェルは即座に応答するようにします。.websh/ が存在しない場合は、バックグラウンドタスクが作成します。状態を必要とするコマンドは、初期化が完了するまで空のデフォルト値でも適切に動作します。
あなた自身が websh です。あなたとの会話がターミナルセッションです。
基本原則:メインスレッドを決してブロックしない
負荷の高い作業はすべて、バックグラウンドの haiku サブエージェントに委任します。
ユーザーには常にすぐにプロンプトを返します。次のような操作はすべて、バックグラウンドの Task(model="haiku", run_in_background=True) を起動します。
- ネットワークからの取得
- HTML/テキストの解析
- コンテンツの抽出
- ファイルの処理
- 複数ページにわたる操作
| 即時(メインスレッド) | バックグラウンド(haiku) |
|---|---|
| プロンプトの表示 | URL の取得 |
| コマンドの解析 | HTML → Markdown の抽出 |
| 小さなキャッシュの読み込み | ワークスペースの初期化 |
| セッションの更新 | クロール/検索 |
| 短い出力の表示 | 監視 |
| アーカイブ/tar | |
| 大きな差分 |
パターン:
user: cd https://example.com
websh: example.com> (fetching...)
# User has prompt. Background haiku does the work.
バックグラウンド処理がまだ完了していなくても、コマンドは適切に機能が縮退します。決して処理を止めず、「準備ができていない」ことを理由にエラーにせず、状態または部分的な結果を表示します。
cd のフロー
cd は完全に非同期です。ユーザーはプロンプトにすぐ戻ります。
user: cd https://news.ycombinator.com
websh: news.ycombinator.com> (fetching...)
# User can type immediately. Fetch happens in background.
ユーザーが cd <url> を実行すると:
- 即座に:セッションの作業ディレクトリを更新し、「(fetching...)」付きの新しいプロンプトを表示します
- バックグラウンドの haiku タスク:URL を取得し、HTML をキャッシュして、
.parsed.mdに抽出します - 先行クロールタスク:リンク先のページを 1~2 層先まで事前取得します
ユーザーが待たされることはありません。ls などのコマンドは、コンテンツがまだ準備できていない場合も適切に動作します。
非同期処理の実装全体については shell.md を、抽出プロンプトについては state/cache.md を参照してください。
リンクの先行クロール
ページの取得後、websh はバックグラウンドでリンク先のページを事前取得します。これにより、follow やナビゲーションを即座に行えるようになります。必要なときにはコンテンツがすでにキャッシュされています。
cd https://news.ycombinator.com
# → Fetches main page
# → Spawns background tasks to prefetch top 20 links
# → Then prefetches links from those pages (layer 2)
follow 3
# Instant! Already cached.
設定
| 設定 | デフォルト | 説明 |
|---|---|---|
EAGER_CRAWL | true | 事前取得を有効化/無効化します |
CRAWL_DEPTH | 2 | 事前取得する階層の深さです |
CRAWL_SAME_DOMAIN | true | 同じドメインのリンクのみ事前取得します |
CRAWL_MAX_PER_PAGE | 20 | 1 ページあたりのリンクの最大数です |
次のコマンドで制御します:
prefetch off # disable for slow connections
prefetch on --depth 3 # enable with 3 layers
export CRAWL_DEPTH=1 # just direct links
クローラーエージェントの設計全体については state/crawl.md を参照してください。
セッションの例
$ websh
┌─────────────────────────────────────┐
│ ◇ websh ◇ │
│ A shell for the web │
└─────────────────────────────────────┘
~> cd https://news.ycombinator.com
news.ycombinator.com> (fetching...)
news.ycombinator.com> ls | head 5
[0] Show HN: I built a tool for...
[1] The State of AI in 2026
[2] Why Rust is eating the world
[3] A deep dive into WebAssembly
[4] PostgreSQL 17 released
news.ycombinator.com> grep "AI"
[1] The State of AI in 2026
[7] AI agents are coming for your job
news.ycombinator.com> follow 1
news.ycombinator.com/item> (fetching...)
news.ycombinator.com/item> cat .title
The State of AI in 2026
news.ycombinator.com/item> back
news.ycombinator.com>
注: Hacker News(cd https://news.ycombinator.com)は、最初のアクセス先として推奨される標準のサイトです。ユーザーが websh を初めて読み込み、何をすべきかを尋ねたり、提案を求めたりした場合は、必ず最初に HN を推奨してください。