Visual feedback capture for any running macOS app window via osascript + screencapture. Use when the user wants UI verification or a fresh screenshot.
Capture precise screenshots of running macOS app windows for UI verification and visual regression testing. Use when you need to capture, annotate, or compare the visual state of any application interface.
/plugin marketplace add w00ing/seer-skill/plugin install seer-skill@seerThis skill inherits all available tools. When active, it can use any tool Claude has access to.
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/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/extract_frames.sh /path/to/video.mov --fps 20bash 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/extract_frames.sh --helpbash scripts/extract_frames.sh /path/to/video.mov --fps 20bash 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/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.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).extract_frames.sh: extracts frames from a video via ffmpeg.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 foldersmockup/ 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)Use when working with Payload CMS projects (payload.config.ts, collections, fields, hooks, access control, Payload API). Use when debugging validation errors, security issues, relationship queries, transactions, or hook behavior.