---
name: Upload Photo
slug: upload-photo
category: DevOps
description: Upload Photo uploads local image files to Vercel Blob and returns public URLs for sharing. Use it whenever an image or screenshot needs a public URL in PR comments, docs, or sharing.
github: "https://github.com/Devin-AXIS/iPolloWork/tree/main/.opencode/skills/upload-photo"
language: TypeScript
stars: 4292
forks: 825
install: "npx degit https://github.com/Devin-AXIS/iPolloWork/tree/main/.opencode/skills/upload-photo ~/.claude/skills/upload-photo"
installs_to: ~/.claude/skills/upload-photo
source_path: .opencode/skills/upload-photo/SKILL.md
collection_size: 25
category_size: 798
collection_url: "https://dirskills.com/collections/Devin-AXIS/iPolloWork"
added: 2026-08-20T07:54:35.429Z
last_synced: 2026-08-20T07:54:35.429Z
canonical_url: "https://dirskills.com/skills/upload-photo"
---

# Upload Photo

Upload Photo uploads local image files to Vercel Blob and returns public URLs for sharing. Use it whenever an image or screenshot needs a public URL in PR comments, docs, or sharing.

**Install:**

```bash
npx degit https://github.com/Devin-AXIS/iPolloWork/tree/main/.opencode/skills/upload-photo ~/.claude/skills/upload-photo
```

## README

# Skill: upload-photo

Upload local image files to Vercel Blob and return public URLs for sharing.

## When to use

Use whenever an image or screenshot needs a public URL, including PR comments, docs, and sharing.

## Requires

`BLOB_READ_WRITE_TOKEN` must be set in the environment. If it is missing, use the `get-env-var` skill to fetch it from Infisical:

```bash
export BLOB_READ_WRITE_TOKEN="$(infisical secrets get BLOB_READ_WRITE_TOKEN --plain --silent)"
```

## Upload

Run the bundled script from the repo root:

```bash
node .opencode/skills/upload-photo/scripts/upload.mjs <file.png> [more files...] [--prefix <path/prefix>] [--stable]
```

It prints one public URL per line (`https://<store>.public.blob.vercel-storage.com/...`). `--prefix` defaults to `uploads/<YYYY-MM-DD>`. By default Vercel Blob appends a random suffix to the pathname for collision safety; `--stable` disables that (`x-add-random-suffix: 0`) for deterministic URLs, so overwrites are possible.

## Embed

Use Markdown:

```markdown
![alt](url)
```

Or HTML for size control in GitHub comments:

```html
<img src="url" width="700">
```

## Rules

- Never log `BLOB_READ_WRITE_TOKEN`.
- The store is public; do not upload anything sensitive.
- Prefer PNG, JPEG, or WebP images.
