Claude
Skills
Sign in
Back

mac-camera

Included with Lifetime
$97 forever

Take a photo using the MacBook's built-in camera and analyze it with Claude's vision. Use this skill whenever the user wants to capture a photo from their webcam/camera, see what's in front of the camera, take a selfie, snap a picture, or visually inspect something using the laptop camera. Also trigger when users say things like "look at this", "what do you see", "take a picture", "use my camera", "capture what's on my desk", or any request that involves using the MacBook's physical camera to see the real world. This is specifically for the built-in laptop camera — not screenshots or screen capture.

Image & Video

What this skill does


# Mac Camera — Capture & Analyze Photos

Take a photo with the MacBook camera, then analyze it with Claude's vision. No permission prompt needed — the user installed this skill and macOS enforces its own camera permission.

## Capture & Verify (single Bash call)

Run the entire capture in **one** Bash call. The script detects the available tool, takes the photo, verifies it, and retries once on failure:

```bash
PHOTO_PATH="/tmp/camera_$(date +%Y%m%d_%H%M%S).jpg"
ERR_LOG="/tmp/camera_err_$$.log"

capture_imagesnap() {
  imagesnap -w 2 "$PHOTO_PATH" 2>"$ERR_LOG"
}

capture_ffmpeg() {
  ffmpeg -f avfoundation -video_size 1280x720 -framerate 30 -i "0" -t 2 -update 1 -y "$PHOTO_PATH" 2>"$ERR_LOG"
}

verify() {
  if [ -f "$PHOTO_PATH" ] && [ "$(stat -f%z "$PHOTO_PATH" 2>/dev/null || stat -c%s "$PHOTO_PATH" 2>/dev/null)" -gt 5000 ]; then
    return 0
  fi
  return 1
}

# Detect tool
if command -v imagesnap &>/dev/null; then
  TOOL=imagesnap
elif command -v ffmpeg &>/dev/null; then
  TOOL=ffmpeg
else
  echo "NO_TOOL: install imagesnap (brew install imagesnap) or ffmpeg"
  exit 1
fi

# Attempt capture (with 1 retry)
for attempt in 1 2; do
  [ "$attempt" -eq 2 ] && echo "Retry..." && sleep 1
  "capture_$TOOL"
  if verify; then
    echo "OK path=$PHOTO_PATH size=$(stat -f%z "$PHOTO_PATH" 2>/dev/null || stat -c%s "$PHOTO_PATH" 2>/dev/null) tool=$TOOL"
    rm -f "$ERR_LOG"
    exit 0
  fi
done

echo "CAPTURE_FAILED after 2 attempts. Error log:"
cat "$ERR_LOG"
rm -f "$ERR_LOG"
exit 1
```

## Analyze the Photo

Use Claude's `Read` tool on the photo path printed by the script:

```
Read(file_path="<the PHOTO_PATH from output>")
```

Describe what you see naturally. Do not ask "want to know anything specific?" — just describe the scene and let the user follow up if they want.

## Troubleshooting

| Problem | Likely cause | Fix |
|---------|-------------|-----|
| Black/dark image | Camera warmup insufficient | Increase `-w` to 3s (imagesnap) or `-t` to 3s (ffmpeg) |
| "No camera found" | Camera in use by another app | Close FaceTime, Zoom, etc. |
| Permission denied | macOS camera permission not granted | System Settings > Privacy & Security > Camera > enable Terminal/iTerm |
| ffmpeg device error | Wrong device index | Run `ffmpeg -f avfoundation -list_devices true -i "" 2>&1` and try index "1" or "2" |
| File <5KB | Corrupted capture | Script auto-retries; if still fails, check error log output |

Related in Image & Video