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.
npx claudepluginhub w00ing/seer-skill --plugin seer-skillThis skill uses the workspace's default tool permissions.
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.shConducts multi-round deep research on GitHub repos via API and web searches, generating markdown reports with executive summaries, timelines, metrics, and Mermaid diagrams.
Dynamically discovers and combines enabled skills into cohesive, unexpected delightful experiences like interactive HTML or themed artifacts. Activates on 'surprise me', inspiration, or boredom cues.
Generates images from structured JSON prompts via Python script execution. Supports reference images and aspect ratios for characters, scenes, products, visuals.
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.
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)