mcpField
W
websh

websh

github.com/openprose生産性1.8k369 回インストール4 週間前に更新
リポジトリ

websh について

webshは、キャッシュしたページをシェル形式で移動・検索するためのスキルです。コマンドや自然言語でURLを調べたいユーザー向けで、非同期取得とリンクの先読みを行います。

主な機能

  1. 01cdによるURL移動
  2. 02リンクや要素の一覧表示
  3. 03ページ本文の抽出と絞り込み
  4. 04ページの非同期取得
  5. 05リンク先のバックグラウンド先読み

活用シーン

  1. 01ページ内のリンク検索
  2. 02ページ本文から語句を検索
  3. 03リンク先ページへの移動
  4. 04タイトルやメタデータの抽出

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/openprose/prose --skill websh

インストール後、Claude Code で/webshを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

PLAN.md
README.md
commands.md
help.md
shell.md
state/
cache.md
crawl.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           │
└─────────────────────────────────────┘

~>

続いて、次のようにします。

  1. 即座に:バナーとプロンプトを表示します(ユーザーはすぐに入力を開始できます)
  2. バックグラウンド:必要に応じて .websh/ を初期化する haiku タスクを起動します
  3. コマンドを処理します — 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> を実行すると:

  1. 即座に:セッションの作業ディレクトリを更新し、「(fetching...)」付きの新しいプロンプトを表示します
  2. バックグラウンドの haiku タスク:URL を取得し、HTML をキャッシュして、.parsed.md に抽出します
  3. 先行クロールタスク:リンク先のページを 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_CRAWLtrue事前取得を有効化/無効化します
CRAWL_DEPTH2事前取得する階層の深さです
CRAWL_SAME_DOMAINtrue同じドメインのリンクのみ事前取得します
CRAWL_MAX_PER_PAGE201 ページあたりのリンクの最大数です

次のコマンドで制御します:

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 を推奨してください。

コメント