From seer-skill
Captures screenshots and videos of running macOS app windows via osascript, screencapture, and ffmpeg for UI verification, mockups, and visual comparisons in agent workflows.
How this skill is triggered — by the user, by Claude, or both
Slash command
/seer-skill:seerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Capture a precise screenshot of a visible app window, annotate it for quick UI mockups, then compare against baselines to keep visual state in the agent loop.
assets/excalidraw/basic-ux-wireframing-elements.excalidrawlibscripts/annotate_image.pyscripts/capture_app_window.shscripts/compare_images.pyscripts/excalidraw_from_text.pyscripts/extract_frames.shscripts/generate_wireframe_suite.pyscripts/loop_compare.shscripts/migrate_seer_layout.shscripts/mockup_ui.shscripts/record_app_window.shscripts/record_screen.shscripts/record_simulator.shscripts/summarize_video.shscripts/type_into_app.shCapture a precise screenshot of a visible app window, annotate it for quick UI mockups, then compare against baselines to keep visual state in the agent loop.
bash scripts/capture_app_window.sh (defaults to frontmost app, output .seer/capture/app-window-<app>-YYYYMMDD-HHMMSS-<pid>-<rand>.png)bash scripts/capture_app_window.sh /path/to/out.png "Promptlight" (custom output + process name)bash scripts/record_app_window.sh --duration 3 --frames --fps 20bash scripts/record_simulator.sh --duration 3 --summary --summary-sheet --summary-gifbash scripts/record_screen.sh --duration 3bash scripts/record_screen.sh --engine ffmpeg --manual-stop --capture-cursor --capture-clicksbash scripts/extract_frames.sh /path/to/video.mov --fps 20bash scripts/record_app_window.sh --duration 3 --summary --summary-sheet --summary-gifbash scripts/summarize_video.sh /path/to/video.mov --mode scene --sheet --gifbash scripts/mockup_ui.sh --spec spec.jsonbash scripts/mockup_ui.sh --spec spec.json --jsonbash scripts/loop_compare.sh /path/to/out.png web-home$SEER_LOOP_DIR (default .seer/loop)view_image.bash scripts/capture_app_window.sh --helpbash scripts/capture_app_window.sh [out_path] [process_name]
out_path default .seer/capture/app-window-<app>-YYYYMMDD-HHMMSS-<pid>-<rand>.pngprocess_name default frontmost appSEER_OUT_DIR to change default output root (falls back to SEER_TMP_DIR for legacy behavior)bash scripts/type_into_app.sh --helpbash scripts/type_into_app.sh --app "Promptlight" --text "hello" --enterbash scripts/type_into_app.sh --app "Promptlight" --click-rel 120,180 --text "hello"bash scripts/type_into_app.sh --text "hello" --no-activatebash scripts/record_app_window.sh --helpbash scripts/record_app_window.sh --duration 3 --frames --fps 20bash scripts/record_app_window.sh --duration 3 --summary --summary-mode scene --summary-max 24 --summary-sheet --summary-gifbash scripts/record_app_window.sh --simulator --duration 3 --summary --summary-sheetbash scripts/record_simulator.sh --duration 3 --summary --summary-sheetbash scripts/record_screen.sh --helpbash scripts/record_screen.sh --duration 3 --display 1bash scripts/record_screen.sh --duration 3 --region 100,100,800,600bash scripts/record_screen.sh --engine ffmpeg --manual-stop --capture-cursor --capture-clicksbash scripts/record_screen.sh --engine ffmpeg --device-index 1 --duration 20bash scripts/extract_frames.sh --helpbash scripts/extract_frames.sh /path/to/video.mov --fps 20bash scripts/summarize_video.sh --helpbash scripts/summarize_video.sh /path/to/video.mov --mode scene --sheet --gifbash scripts/mockup_ui.sh --helpbash scripts/mockup_ui.sh --spec spec.jsonbash scripts/mockup_ui.sh --spec spec.json --jsonpython3 scripts/excalidraw_from_text.py --helppython3 scripts/excalidraw_from_text.py --text "header: Settings; list: Account, Notifications, Privacy; button: Log out"python3 scripts/excalidraw_from_text.py --text $'screen: Home\nheader: Home\nbutton: Get started\n\nscreen: Settings\nheader: Settings\nlist: Account, Notifications\nbutton: Log out' --theme classic --fidelity mediumcat prompt.txt | python3 scripts/excalidraw_from_text.py --name settingspython3 scripts/excalidraw_from_text.py --text "lib: Search field | Search" --json (explicit Excalidraw library item)python3 scripts/annotate_image.py input.png output.png --spec spec.jsonpython3 scripts/annotate_image.py --spec-help (prints JSON spec schema)annotate_image.py supports top-level defaults (e.g., auto_scale, outline, text_bg), spotlight annotations to dim the background, fit (enabled by default) to auto-adjust rect/spotlight bounds, and anchor/from/to for auto-anchoring labels and arrows.bash scripts/loop_compare.sh --helpbash scripts/loop_compare.sh [--loop-dir <path>] [--resize] [--update-baseline] <current_path> <baseline_name>
SEER_LOOP_DIR to change default loop directory (default .seer/loop).seer/ to .gitignorescripts/capture_app_window.shscripts/record_app_window.sh --duration 3 --frames --fps 20scripts/record_simulator.sh --duration 3 --summary --summary-sheetscripts/record_screen.sh --duration 3scripts/record_screen.sh --engine ffmpeg --manual-stop.record_app_window.sh auto-activates when --process/--simulator is used and warns if frontmost app differs.scripts/loop_compare.sh <current_path> <baseline_name>baselines/, latest/, history/, diffs/, reports/ under .seer/loop (or $SEER_LOOP_DIR)view_image to load the current image and diff image.--summary-mode <scene|fps|keyframes>: selection strategy (default: scene)--summary-scene <threshold>: scene-change sensitivity (default: 0.30)--summary-fps <n>: sampling rate for fps mode (default: 2)--summary-max <n>: cap frame count (default: 24, 0 disables cap)--summary-out <dir>: output folder--summary-sheet: create sheet.png contact sheet--summary-sheet-cols <n>: contact sheet columns (default: auto)--summary-gif: create preview.gif--summary-gif-width <px>: GIF max width (default: 640)capture_app_window.sh: grabs window bounds via System Events and runs screencapture -x -R.record_app_window.sh: records a window region to .mov via screencapture -v (optionally extracts frames).record_simulator.sh: convenience wrapper for iOS Simulator recording.record_screen.sh: records full screen or a region via screencapture or ffmpeg (avfoundation).extract_frames.sh: extracts frames from a video via ffmpeg.summarize_video.sh: extracts representative frames (scene/fps/keyframes) + optional contact sheet or GIF (falls back to fps when scene yields too few frames).type_into_app.sh: focuses app and types text via System Events keystrokes.excalidraw_from_text.py: converts a natural-language-ish prompt into a .excalidraw scene file under .seer/excalidraw/ (supports screen: Name for multi-screen; uses the bundled Excalidraw library when present).annotate_image.py: draws arrows, rectangles, and text on an image (requires python3 -m pip install pillow).mockup_ui.sh: capture window (optional) then annotate using a JSON spec.compare_images.py: compares baseline vs current and emits diff metrics + optional diff image (requires python3 -m pip install pillow).loop_compare.sh: manages baselines, history, and diff outputs for visual regression loops.assets/excalidraw/wireframe-ui-kit.excalidrawlib: default Excalidraw UI library used by excalidraw_from_text.py when present (override with --library or disable with --no-library).assets/excalidraw/basic-ux-wireframing-elements.excalidrawlib: fallback library (smaller) if the UI kit is missing.Under .seer/:
capture/ window screenshotsrecord/ window recordings + extracted frame foldersrecord/ video summaries + contact sheets/GIFsmockup/ annotated mockups + their capture/spec/meta (also writes latest-* convenience copies)excalidraw/ generated .excalidraw scenes (also writes latest-*.excalidraw)loop/ visual regression loop storage (baselines/latest/history/diffs/reports)npx claudepluginhub w00ing/seer-skill --plugin seer-skillControls macOS GUI applications via mouse automation, keyboard input, screenshots, image recognition, and AppleScript execution.
Records, composes, and publishes short desktop validation videos for UX interaction proof. Useful when a screenshot cannot show motion, timing, or audio/visual state.
Captures desktop screenshots (full screen, app/window, region) on macOS/Linux via Python/Bash scripts. Use for explicit requests or when tool-specific capture unavailable.