name: mac-camera description: >- 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.
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:
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 |