SkillAgentSearch skills...

Giil

Zero-setup bash CLI that downloads full-resolution images from iCloud/Dropbox/Google Photos share links, bridging iPhone screenshots to remote AI coding sessions

Install / Use

/learn @Dicklesworthstone/Giil
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<p align="center"> <img src="https://img.shields.io/badge/version-3.0.0-blue?style=for-the-badge" alt="Version" /> <img src="https://img.shields.io/badge/platform-macOS%20%7C%20Linux-blueviolet?style=for-the-badge" alt="Platform" /> <img src="https://img.shields.io/badge/runtime-Node.js%2018+-purple?style=for-the-badge" alt="Runtime" /> <img src="https://img.shields.io/badge/License-MIT%2BOpenAI%2FAnthropic%20Rider-blue-the-badge" alt="License" /> </p> <h1 align="center">giil</h1> <h3 align="center">Get Image [from] Internet Link</h3> <p align="center"> <strong>A zero-setup CLI that downloads full-resolution images from cloud photo shares</strong> </p> <p align="center"> The missing link between your iPhone screenshots and remote AI coding sessions.<br/> Share an image via iCloud, paste the link into your SSH terminal, and your AI assistant can see it instantly. </p> <p align="center"> <em>Single-file bash script with embedded Node.js extractor. Auto-installs all dependencies.<br/> Supports single photos, entire albums, JSON metadata output, and base64 encoding.</em> </p>
<p align="center">
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/giil/main/install.sh?v=3.0.0" | bash
</p>

🎯 The Primary Use Case: Remote AI-Assisted Debugging

The scenario: You're SSH'd into a remote server running Claude Code, Codex, or another AI coding assistant. You need to debug a UI issue on your iPhone, but how do you get that screenshot to your remote terminal session?

┌─────────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   iPhone    │────▶│  iCloud     │────▶│  Photos.app │────▶│  Share Link │
│ Screenshot  │     │   Sync      │     │   (Mac)     │     │   (Copy)    │
└─────────────┘     └─────────────┘     └─────────────┘     └─────────────┘
                                                                   │
                                                                   ▼
┌─────────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  AI Agent   │◀────│    giil     │◀────│   Paste     │◀────│ Remote SSH  │
│  Analyzes   │     │  Downloads  │     │   URL       │     │  Terminal   │
└─────────────┘     └─────────────┘     └─────────────┘     └─────────────┘

The workflow:

  1. Screenshot the UI bug on your iPhone
  2. Wait a moment for iCloud to sync to your Mac
  3. Right-click the image in Photos.app → Share → Copy iCloud Link
  4. Paste the link into your remote terminal session
  5. Run giil and the image is now local to your remote machine
# On your remote server (SSH session with Claude Code/Codex)
giil "https://share.icloud.com/photos/0a1Abc_xYz..." --format json

# AI assistant can now analyze the screenshot directly
# {"path": "/tmp/icloud_20240115_143022.jpg", "width": 1170, "height": 2532, ...}

Comparison:

| Without giil | With giil | |--------------|-----------| | Download image locally, SCP to server, tell AI the path | One command, AI sees it instantly | | Email yourself, download on server, hope it works | Paste link, done | | Set up complex file sync between devices | Just use iCloud's built-in sharing | | Break your flow to context-switch between devices | Stay in your terminal |

This bridges your Apple devices and remote AI coding sessions. No file transfers, no context switching, no friction.


Table of Contents


💡 Why giil Exists

Cloud photo sharing services present unique challenges for automation:

| Problem | Why It's Hard | How giil Solves It | |---------|---------------|-------------------| | JavaScript-heavy SPAs | Standard curl/wget can't execute JS or render pages | Headless Chromium via Playwright (or direct download for Dropbox) | | Dynamic image loading | Images load asynchronously from CDN after page render | Network interception captures CDN responses | | No direct download links | URLs are session-specific and expire quickly | Clicks native Download button or intercepts live requests | | Copy/paste loses quality | Manual screenshots result in compressed/cropped images | Captures original resolution from source | | HEIC format on Apple devices | Many tools can't process Apple's HEIC/HEIF format | Platform-aware conversion (sips/heif-convert) | | Platform fragmentation | Each service has different URL patterns and APIs | Automatic platform detection with optimized strategies |

giil lets you programmatically download full-resolution images from iCloud, Dropbox, Google Photos, and Google Drive share links—which is otherwise impossible without manual browser interaction.

Typical workflow: Debugging a UI issue with Claude Code or Codex on a remote server? Screenshot on iPhone → iCloud syncs → Share link from Photos.app → Paste into SSH terminal → giil fetches it → AI analyzes the image. No SCP, no email, no friction.


✨ Highlights

<table> <tr> <td width="50%">

Zero-Setup Installation

One-liner installer handles everything:

  • Node.js detection/installation
  • Playwright + Chromium (~200MB, cached)
  • Sharp image processing library
  • Optional gum for beautiful CLI output
</td> <td width="50%">

Four-Tier Capture Strategy

Maximum reliability through intelligent fallbacks:

  1. Download button → Original file
  2. CDN interception → Full resolution
  3. Element screenshot → Rendered image
  4. Viewport screenshot → Last resort
</td> </tr> <tr> <td width="50%">

Album Support

Download entire shared albums with --all:

  • Automatic thumbnail detection
  • Sequential full-resolution capture
  • Collision-free filenames with indices
  • Continues on individual failures
</td> <td width="50%">

Flexible Output

Multiple output modes for any workflow:

  • File path → Default, for scripting
  • JSON metadata → Path, datetime, dimensions
  • Base64 → Embedding, piping, APIs
  • Album mode → One output per photo
</td> </tr> <tr> <td width="50%">

Smart Filenames

EXIF-aware datetime stamping:

  • Extracts DateTimeOriginal from EXIF
  • Falls back to capture timestamp
  • Format: icloud_YYYYMMDD_HHMMSS.jpg
  • Automatic collision avoidance
</td> <td width="50%">

Image Processing

MozJPEG compression by default:

  • Optimal size/quality balance
  • --preserve to keep original bytes
  • --convert for format conversion
  • HEIC auto-conversion supported
</td> </tr> </table>

⚡ Quickstart

Installation

One-liner (recommended):

curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/giil/main/install.sh?v=3.0.0" | bash
<details> <summary><strong>Manual installation</strong></summary>
# Download script
curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/giil/main/giil -o ~/.local/bin/giil
chmod +x ~/.local/bin/giil

# Ensure ~/.local/bin is in PATH
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc  # or ~/.bashrc
source ~/.zshrc
</details> <details> <summary><strong>Installation options</strong></summary>
# Custom install directory
DEST=/opt/bin curl -fsSL .../install.sh | bash

# System-wide installation (requires sudo)
GIIL_SYSTEM=1 curl -fsSL .../install.sh | bash

# Skip PATH modification
GIIL_NO_ALIAS=1 curl -fsSL .../install.sh | bash

# Verified installation with SHA256 checksum
GIIL_VERIFY=1 curl -fsSL .../install.sh | bash

# Install specific version
GIIL_VERSION=2.1.0 curl -fsSL .../install.sh | bash
</details> <details> <summary><strong>Checksum verification</strong></summary>

For security-conscious installations, giil supports SHA256 checksum verification:

GIIL_VERIFY=1 curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/giil/main/install.sh | bash

How it works:

  1. Downloads giil script from the release
  2. Fetches giil.sha256 checksum file from the same release
  3. Computes SHA256 of downloaded file
  4. Compares against expected checksum
  5. Aborts installation if mismatch detected

Requirements:

  • Either sha256sum (Linux) or shasum (macOS)
  • GitHub release must include giil.sha256 file

Output on success:

✓ Checksum verified: a1b2c3d4e5f6...
</details>

First Run

giil "https://share.icloud.com/photos/02cD9okNHvVd-uuDnPCH3ZEEA"

Note: First run downloads Playwright Chromium (~200MB). This is cached for future runs in ~/.cache/giil/.


🚀 Usage

giil <icloud-photo-url> [options]

Options

| Flag | Default | Description | |------|---------|-------------| | --output DIR | . | Output directory for saved images | | --preserve | off | Preserve original bytes (skip MozJPEG compression) | | --convert FMT | — | Convert to format: jpeg, png, webp | | --quality N | 85 | JPEG quality 1-100 | | --format FMT | — | S

View on GitHub
GitHub Stars36
CategoryDevelopment
Updated11d ago
Forks5

Languages

Shell

Security Score

80/100

Audited on Mar 26, 2026

No findings