Install
$ agentstack add skill-lifedever-skills-plugin-image-upload ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
image-upload
Upload any image to your own GitHub repo and get back three URL formats — jsDelivr CDN (fast, public), GitHub raw, and Markdown — ready to paste into documentation, blog posts, or chats.
Prerequisites (one-time setup)
- A GitHub repo for images. Create one yourself (public preferred so jsDelivr CDN serves it), e.g.
your-username/images. ghCLI installed and authenticated:
``bash brew install gh gh auth login ``
jqinstalled (for JSON serialization):
``bash brew install jq ``
pngpaste(only for clipboard screenshot mode):
``bash brew install pngpaste ``
- Set environment variables in your shell profile (
~/.zshrcor~/.bashrc):
``bash export IMAGE_HOST_REPO="your-username/images" # required export IMAGE_HOST_BRANCH="master" # optional, default: master export IMAGE_HOST_BASE_DIR="uploads" # optional, default: uploads ` Reload your shell or source ~/.zshrc`.
Per-invocation overrides via --repo, --branch, --base-dir flags also work.
Usage
Upload one or more files:
bash "${CLAUDE_SKILL_DIR}/scripts/upload_image.sh" path/to/image.png
bash "${CLAUDE_SKILL_DIR}/scripts/upload_image.sh" file1.jpg file2.png file3.webp
Upload from clipboard (most recent screenshot, or files copied in Finder):
bash "${CLAUDE_SKILL_DIR}/scripts/upload_image.sh" --clipboard
Auto-copy a specific URL format to system clipboard:
bash "${CLAUDE_SKILL_DIR}/scripts/upload_image.sh" --copy markdown file.png
bash "${CLAUDE_SKILL_DIR}/scripts/upload_image.sh" --copy jsdelivr --clipboard
bash "${CLAUDE_SKILL_DIR}/scripts/upload_image.sh" --copy raw file1.jpg file2.jpg
--copy values: jsdelivr (CDN), raw (GitHub raw), markdown (`` format).
How it works
- Files are renamed to timestamp format:
20260513-143025.jpg. Batch uploads add an index:-1,-2, etc. - Each image is committed to
/YYYY/MM/.in your repo. - Filename conflicts auto-resolve with a numeric suffix.
- Multiple files upload in parallel (with retry on transient 409s from branch HEAD races).
- For each image, three URLs are printed: jsDelivr CDN, GitHub raw, and Markdown.
Calling from Claude Code
The Bash tool does NOT support interactive input, so when invoked through Claude:
- Run the upload without
--copyto get the URLs in stdout. - Use
AskUserQuestionto ask which format the user wants to copy. Options:
- jsDelivr CDN URL
- GitHub Raw URL
- Markdown format
- Don't copy
- Based on the answer, use
echo -n "" | pbcopyto copy that exact format.
When the user runs the script directly in their terminal (not through Claude), the script has its own built-in interactive prompt.
Failure modes
IMAGE_HOST_REPOnot set → script exits with code 2 and prints setup instructionsghnot authenticated → script exits with code 2 and tells user to rungh auth loginjq/pngpastemissing → script exits with helpful install hint- Upload fails after 3 retries → script reports the specific file that failed; other parallel uploads continue
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: lifedever
- Source: lifedever/skills-plugin
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.