Communitygithub.com

Scrawl

Scrawlの画面キャプチャを読み取り、分析します。ユーザーが画面を録画・描画した内容を元に、問題を特定し質問に答えます。

Scrawl とは?

このスキルは、Scrawlアプリで記録された画面・音声・クリック・赤インクの描画を含むバンドル(.scrawlフォルダ)を読み取り、分析するためのものです。ユーザーはバグ報告の代わりにScrawlキャプチャを送信するため、このスキルはキャプチャ内の詳細を注意深く解釈し、すでに記録されている内容について再度説明を求めることを避けます。 主な機能として、コンタクトシート(contact-sheet.png)とフレーム画像(frames/)の表示、各キーフレームのタイムスタンプと発言・操作の関連付け、赤インクの描画やレーザーポインターの意味の説明、そしてscrawl CLIを使って特定の瞬間にズームイン(scrawl zoom)、フレーム抽出(scrawl frames)、OpenCodeセッションへの送信(scrawl send)、ビデオへのエクスポート(scrawl export)などを行います。 このスキルはmacOS上でScrawlがインストールされている環境でのみCLIコマンドを実行でき、それ以外の環境では画像とJSONを直接読み取ります。問題がアニメーションやモーションに関連する場合、またはマークが何を指しているか不明な場合に、ズーム機能を使ってより詳細な分析を提供します。

対応~Claude Code~Codex CLI✓Cursor✓OpenCode
npx skills add https://github.com/huaxel/dotfiles/tree/main/skills/scrawl

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Scrawlのキャプチャー

Scrawlは、誰かの画面、音声、クリック、赤インクを記録し、その結果を.scrawlフォルダー(バンドル)にまとめます。ユーザーは問題を説明する代わりにそれを送ってくるので、キャプチャーそのものがバグレポートです。回答する前にそれを注意深く読み、キャプチャーがすでに示していることを改めて説明するよう求めないでください。不明な点があれば、まずscrawl zoomで詳しく確認してください。

ペーストの見た目

[scrawl 0:33 · OpenCode “Settings” · /Users/me/Library/Application Support/scrawl/captures/scrawl-1792432139176.scrawl]
Open contact-sheet.png and frames/ in that folder before changing anything: the marks and words only make sense on the images, which can show more than the text does.
Cropped to: the activity in OpenCode (full frames in frames-full/)
- #1 (0:04) [clicked “New tab”] “Command T makes a new session, but here it should make a tab.”
- #2 (0:07) “No, it doesn't.”
- #3 (0:10) ⚑ “It says command shift B makes a new tab.”
- #4 (0:18) clicked (x 0.51, y 0.93)
  • 最初の行には、長さ、記録されたアプリとウィンドウ、バンドルのパスが含まれています。
  • 次の行は、最初に画像を開くよう求めています。実際に行ってください:テキストは言われたことと行われたことだけであり、問題はマークや言及がなくてもフレームに現れることがあります。
  • 各#N (M:SS)行はキーフレームです:その瞬間に行われたこと(括弧内)、次にそれが画面に表示されている間に言われたことです。引用がない行はアクションのみです。
  • ⚑は意図的にその瞬間にフラグを立てたことを意味します。⟨名前⟩はアプリが新しい画面を報告したことを意味します。·で始まる行は、アプリがログに記録したイベントや値です。
  • 上部近くのオプション行:For session:(Scrawlが送信した先)、Screen:(アプリのコンテキスト付き)、Note:、Cropped to:。
  • 座標はキャプチャー領域の左上からの比率で、x 0.51は中央のやや右です。

回答するときは、「#3 (0:10)」のように同じ方法で瞬間を参照してください。そうすれば、相手はコンタクトシート上でそれらを見つけることができます。

バンドルの読み方

  1. まずバンドル内のcontact-sheet.pngを確認します(多くの場合既に添付されています)。すべてのキーフレームが時系列順に左から右、上から下に表示され、それぞれに上部コーナーの小さな白いチップに番号N(summary.mdの#N)が付いています。
  2. その横のトランスクリプト行を読みます。音声認識は名前やコード用語を聞き間違えるため、両者が異なる場合は画面を信頼してください。
  3. 必要に応じてframes/frame-NN.pngを開いてキーフレームをフルサイズで表示します(frame-03.pngは#3)。概要にCropped to:とある場合、トリミングされていない画面はframes-full/にあります。

図の意味:

  • 赤いストローク、円、下線、矢印はその人のマークであり、問題を示しています。同じ画面に描かれたマークはすべて1つのキーフレームに表示されます。複数ある場合、テキストは描画順に番号を振ります(✎① 0:06 …、✎② 0:09 …)。画像はインクのみを表示するため、scrawl zoom --markを使用してどのインクがどのマークかを確認してください。
  • カーソルの周りの波紋はクリックまたはタップを示し、指の跡はスワイプを示します。
  • 先端が細くなる光る赤い跡はレーザーポインターで、跡を残さずに指すために使用されます。

その他のファイル:scrawl.jsonは完全なマニフェスト(キーフレーム、形状とボックス付きのmarks、events、時刻付きのtranscript.words、アプリのcontext、autocrop)。recording.mp4またはrecording.movとaudio.wavはソースメディアです。.media-pendingファイルは、ビデオが別のMacからまだコピー中であることを意味します。

scrawl CLI

scrawlはScrawlアプリの独自バイナリです。command -v scrawlで見つからない場合は、/Applications/Scrawl.app/Contents/MacOS/scrawl(または同じパスを~/Applicationsの下で)を使用し、Scrawlの設定 › エージェントでインストールしてPATHに追加できることを相手に伝えてください。ScrawlがインストールされたMacでのみ動作します。他の場所では、contact-sheet.png、frames/、scrawl.jsonを直接読んでください。すべてのコマンドはバンドルパスを受け取り、ほとんどのデフォルトはlatest(最新のキャプチャー)です。パスには通常Application Supportが含まれるため、引用符で囲んでください。

瞬間を詳しく見る

問題が動き(アニメーション、ジャンプ、ちらつき)である場合、キーフレーム間で発生する場合、またはマークが何を指しているかわからない場合にzoomを使用します:

scrawl zoom <bundle> --at 0:21                 # 時刻、M:SSまたは秒
scrawl zoom <bundle> --at "the width changes"  # または言ったフレーズ
scrawl zoom <bundle> --at 0:21 --span 1 --frames 16 --full
scrawl zoom <bundle> --mark 2                  # テキストで✎②として表示されるマーク
scrawl zoom <bundle> --mark 1 --frame 4        # 複数のキーフレームに✎①がある場合、キーフレーム#4の✎①

その瞬間の前後のフレームのPNGシートのパス、各セルの時刻、言われたことを出力します。フィードバックに基づいて行動する前にPNGを開いて確認してください。--spanはカバーする秒数(デフォルト2、その4分の1は瞬間の前)、--framesはセル数(デフォルト12)、--fullはクロップではなく全画面を表示します。セルはシート内で#1から番号が振られるため、これらの番号はキーフレーム番号ではありません。

--markはテキストまたはID(m2)からのマークの番号を取り、それが描かれた時刻を中心にシートを配置し、そのマークのインクのみを表示し、開始時点から全体を描画します。scrawl inspect <bundle> --marksはすべてのマークを一覧表示します(#2 ✎② 0:09 marked (2 strokes) · m2:キーフレーム、番号、時刻、形状、描画対象、ID)。--marks --jsonは同じ情報をJSONで返します。

その他のコマンド

scrawl inspect <bundle>               # summary.md、上記のテキスト
scrawl inspect <bundle> --json        # scrawl.json
scrawl inspect <bundle> --marks       # テキストと同じ番号のマーク [--json]
scrawl frames <bundle> --from 0:04 --to 0:06 [--fps 4]   # 範囲のプレーンPNG、パスを出力
scrawl send <bundle> --session ses_…  # キャプチャーをOpenCodeセッションにキューイング
scrawl send <bundle> --clipboard      # サマリーテキストをクリップボードにコピー
scrawl export <bundle> [--out demo.mp4] [--zoom] [--crop auto|full|x,y,w,h] [--size 1920]
  • zoomとframesは<bundle>/zoom/に書き込みます。バンドルの残りの部分はそのままにしてください。Scrawlがそれらのファイルを管理し、クリーンアップするためです。
  • --sessionなしのsendは、キャプチャーの宛先(For session:行)のセッションに送信され、それ以外の場合は最も最近アクティブだったセッションに送信されます。記録された宛先がある場合、--rerouteを渡さない限り異なる--sessionを拒否するため、リルートする前に相手に確認してください。
  • exportはインクとクリックを焼き込み、音声を同期させた1つの.mp4を書き出します(デフォルト~/Movies/Scrawl/<bundle>.mp4)。--zoomはアクティビティに向けてズームインします。--no-ink、--no-clicks、--hevc、--fpsも利用可能です。
  • ビデオとオーディオは、相手が設定で変更しない限り、キャプチャーから7日後にゴミ箱に移動します。その後はzoom、frames、exportでビデオを読めなくなりますが、frames/、コンタクトシート、scrawl.jsonは残ります。
  • scrawl <command> --helpですべてのフラグを一覧表示し、scrawl skillはインストールされているバージョンが認識するこのガイドを出力します。

関連スキル