PicGo Skills: Teach Any AI Agent to Upload Images and Get a Real Link

2026-08-22 | By Molunerfinn

PicGo Skills: Teach Any AI Agent to Upload Images and Get a Real Link

Your agent just finished the README. It rendered a chart, captured a screenshot, dropped ![](./chart.png) into the markdown, and told you it’s done. Then you push, and the image is broken — the file lives on your disk and nowhere else.

The fix has never been the hard part. Knowing when to reach for it is. PicGo Skills is the official Agent Skills collection that teaches your agent exactly that, and it works with whatever agent you already use.

One command, any agent

npx skills@latest add PicGo/skills

Pick the skills you want when prompted, and you’re done.

Because Agent Skills is a shared format rather than one vendor’s plugin API, the same install works across Claude Code, Cursor, Codex, GitHub Copilot, Windsurf, Gemini, Cline, and others. Switch editors next month and your agent still knows how to upload.

What the skill actually teaches

A skill is not a tool. It’s instructions — the judgment an agent needs to use tools well. That distinction matters here, because uploading a file is easy and deciding to upload one is not.

When to upload

The primary trigger is the one that comes up constantly: you’re writing docs and an image needs to go in. A screenshot into a README, a diagram into a blog post, an image into an Obsidian or Notion note. The skill tells the agent to treat that as the default case and just handle it.

When not to upload

This is the half that generic “upload this file” tooling gets wrong.

  • You named a destination. If you said “put this in our Lark drive” or “push it to S3,” PicGo is the wrong tool and the agent should route elsewhere.
  • You wanted a local file. Saving, downloading, and decoding base64 to disk are not uploads.
  • The file looks sensitive. A contract PDF, an archive of internal data, anything whose name suggests confidential — uploaded links are public, so the agent asks first instead of quietly publishing it.
  • You didn’t mention the clipboard. The agent must never guess that your clipboard should be uploaded. It might hold something unrelated, or something private.

How to fail usefully

Upload failures are not all alike, and the skill draws the line that matters: what a retry can fix versus what it can’t.

A network blip or a 5xx is worth one retry. A missing login, an exceeded quota, a rejected file type, or a bad path is not — looping on those wastes your time and the agent’s tokens. For each one the skill points the agent at a single concrete action to tell you about, rather than flailing.

There’s one subtlety in there worth calling out: if the login check itself fails on a network error, that is not the same as being logged out. An agent that conflates the two sends you through a sign-in you never needed.

It uses the setup you already have

The skill routes through whatever is already working on your machine, in order:

  1. The PicGo desktop app, if it’s running — its local server uploads with no install and no login, reusing the image host you configured in the GUI.
  2. The picgo CLI, otherwise.
  3. PicGo Cloud, for anyone starting from scratch, with a free tier that covers casual use.

So if you set up GitHub as your host years ago, that’s where your agent’s screenshots go. Amazon S3, Tencent COS, Qiniu, Upyun, SM.MS, or a third-party PicGo uploader plugin — all of it carries over. Nothing to configure twice, and no second copy of your credentials.

Tested, not just written

Instructions that sound reasonable and instructions that actually change behavior are different things. The skill ships with evals — concrete scenarios with expected outcomes — so its behavior is checked rather than assumed:

  • Given a README and a screenshot, does the agent return a ![](url) markdown image instead of a bare link?
  • Told to upload a PDF to 飞书 (Lark) drive, does it correctly decline to use PicGo?
  • Handed a countersigned NDA, does it confirm before publishing to a public URL?

That last one matters more than it looks. An agent that silently uploads a confidential document to a public host has done real damage, and no amount of “be careful” in a prompt reliably prevents it.

Using DeepSeek Harness?

There’s a dedicated plugin for that: @picgo/dsh-plugin registers a native picgo_upload tool, a /picgo command, and bundles this same skill.

dsh plugin --profile web add @picgo/dsh-plugin

The details are in its own post.

Frequently Asked Questions

Q: Which AI tools does this work with?

A: Any tool that supports the Agent Skills format — Claude Code, Cursor, Codex, GitHub Copilot, Windsurf, Gemini, Cline, and more. The install command is the same everywhere.

Q: Do I need a PicGo account?

A: Only if you use PicGo Cloud. If you already configured GitHub, S3, Tencent COS, Qiniu, or another host in PicGo, the skill uses that and no sign-in is involved.

Q: Do I need the PicGo desktop app running?

A: No. If it happens to be running, the skill prefers it because it’s the fastest path with zero setup. Otherwise it falls back to the picgo CLI.

Q: Can my agent upload my clipboard without asking?

A: No. The skill explicitly instructs the agent never to assume the clipboard should be uploaded — only when you say so.

Q: Are the uploaded links public?

A: Yes, and the skill makes sure the agent tells you that. For anything that looks sensitive, it confirms with you before uploading.

Try it

npx skills@latest add PicGo/skills

The skills are open source on GitHub and listed on skills.sh. If your agent does something the skill should have caught, open an issue — the evals exist precisely so that behavior can be pinned down and fixed.

Happy uploading!