Agent skill

Uploading Files

by oaustegard in oaustegard/claude-skills

File-upload bridge for Claude Code on the Web. An agent skill from oaustegard/claude-skills.

MITAuto-check passedBackend & APIs

Install Uploading Files

skills CLI
$ npx skills add oaustegard/claude-skills --skill uploading-files -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install oaustegard/claude-skills uploading-files --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/uploading-files .claude/skills/uploading-files && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
uploading-files
GitHub stars
150
Token cost
~1.2k tokens
SKILL.md length
656 words
Files
4 (incl. scripts)
Skills in repo
66
Repo updated
First seen
Licence
MIT

At a glance

File-upload bridge for Claude Code on the Web. An agent skill from oaustegard/claude-skills.

  • Works in 3 steps: Create the upload branch → Fetch files → Cleanup
  • The user wants to upload
  • SKILL.md covers When to use, Workflow, How it works and Constraints, plus 1 more section
  • Runs Python scripts from its folder; calls python3 and git; needs GH_TOKEN and GITHUB_TOKEN

What it does

Uploading Files is an agent skill from oaustegard/claude-skills. File-upload bridge for Claude Code on the Web. CCotw has no native file mount; this skill creates a throwaway GitHub branch the user can drop files onto via the github.com web UI, then fetches them locally on the next turn. Use when the user wants to upload, share, or send files into the session, or when a task clearly needs files the user has on disk that aren't in the repo.

Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including scripts (for example `CHANGELOG.md`, `README.md` and `scripts/upload.py`).

It sits in Backend & APIs, covering File uploads and storage and Frontend development. It works with GitHub. The repository describes itself as: My collection of Claude skills. The licence is MIT.

When your agent uses it

  • The user wants to upload
  • Send files into the session
  • A task clearly needs files the user has on disk that arent in the repo

Example prompts

  • “/uploading-files”

Requirements

  • Python 3
  • A credential in GITHUB_TOKEN

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Create the upload branch
  2. Fetch files
  3. Cleanup

What it can do on your machine

Read from SKILL.md and the folder at commit cf49d47. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • GH_TOKEN
    • GITHUB_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Uploading Files loads about 1.2k tokens when it runs. Until then it costs about 99 tokens; SKILL.md has 656 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~99
When it runs · the whole SKILL.md, loaded when a task matches
~1.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from oaustegard/claude-skills at commit cf49d47, republished under its MIT licence (© oaustegard). 656 words, ~1,247 tokens.

Download SKILL.mdSave it as .claude/skills/uploading-files/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
uploading-files
description
File-upload bridge for Claude Code on the Web. CCotw has no native file mount; this skill creates a throwaway GitHub branch the user can drop files onto via the github.com web UI, then fetches them locally on the next turn. Use when the user wants to upload, share, or send files into the session, or when a task clearly needs files the user has on disk that aren't in the repo.
metadata.version
0.1.1

Uploading Files

Claude Code on the Web has no file-upload widget and no shared mount. Whenever the user needs to get a file (image, PDF, CSV, doc, archive, anything) into the session, route them through a temporary GitHub branch on the working repo's origin remote.

When to use

Trigger this skill when:

  • The user asks to upload, attach, share, or send a file
  • A task clearly needs a file the user has locally that isn't in the repo (e.g. "summarize this PDF", "the spreadsheet I exported", "the screenshot from earlier")
  • You're about to ask the user to paste a long binary or large text blob — offer upload instead

Don't trigger when the file is already in the repo, on a public URL you can fetch, or short enough to paste inline.

Workflow

The script lives at /mnt/skills/user/uploading-files/scripts/upload.py once installed. It must be run from inside the working git repo (it uses origin and cwd).

Step 1 — Create the upload branch
bash
python3 /mnt/skills/user/uploading-files/scripts/upload.py init

This creates upload-<short-session-id> on origin (from the default branch) and prints a GitHub upload URL. Show that URL to the user on its own line, with no surrounding markdown — no **bold**, no [link](...), no backticks. Some chat renderers concatenate trailing punctuation/markup onto the URL when the user clicks it, breaking the branch name. Bare URL only. Then tell them:

Open that link, drag the file(s) into the page, scroll to the bottom and click Commit changes (the default options are fine). Reply here when done.

Then stop and wait for the user. Do not pretend they've uploaded.

Step 2 — Fetch files

After the user confirms the upload:

bash
python3 /mnt/skills/user/uploading-files/scripts/upload.py fetch

This downloads everything on the branch (vs default) into ./.uploads/ (filenames are flattened to basenames) and ensures .uploads/ is in .gitignore. Treat the files in .uploads/ like any other local input.

If the script reports "No files on branch yet", the user probably forgot to click commit. Ask them to refresh the upload page and verify they committed, then re-run fetch.

Step 3 — Cleanup

When the uploaded files are no longer needed — typically after the work is done and anything worth keeping has been moved into the repo proper, and before opening a PR — delete the remote branch:

bash
python3 /mnt/skills/user/uploading-files/scripts/upload.py cleanup

Local files in ./.uploads/ are kept (they're gitignored). If the user might want them again, leave them; otherwise rm -rf .uploads after cleanup.

Show full SKILL.md (268 more words)Show less
Optional — status
bash
python3 /mnt/skills/user/uploading-files/scripts/upload.py status

Prints the repo, branch name, whether the branch exists on origin, and the upload URL. Useful when you've context-switched and want to recover the URL without recreating the branch.

How it works

  • Branch name — upload-<short> where <short> is the first hyphen-segment of $CLAUDE_SESSION_ID, or of the most recent transcript filename under ~/.claude/projects/<encoded-cwd>/, or a UTC timestamp tsYYYYMMDD-HHMMSS as fallback. The same session always resolves to the same branch, so re-running init is idempotent.
  • Repo — parsed from git remote get-url origin. Must be a github.com remote.
  • Auth — uses $GH_TOKEN (then $GITHUB_TOKEN, $GITHUB_PAT, $GH_PAT). Token needs Contents: write on the working repo.
  • Network calls — only api.github.com and raw.githubusercontent.com.

Constraints

  • GitHub web upload caps at 25 MB per file. Larger files won't work via this flow.
  • Filenames are flattened to basenames in .uploads/. If the user uploads two files with the same name in different subdirs, the second overwrites the first. Tell them to rename first if it matters.
  • Binary files survive the round-trip fine (raw download, byte-exact).
  • The skill does not read the upload branch's history beyond "what's there now vs default". If the user pushes multiple commits, you get the union of files.

Anti-patterns

  • Don't ask the user to paste binary content (base64, hex dumps). Use this skill.
  • Don't create the branch and immediately try to fetch — the user has to upload first.
  • Don't leave the upload branch around after a PR is opened. It clutters the repo's branch list.
  • Don't commit anything in .uploads/ to the working repo. If a file should be persisted, copy it to a proper location first (and git add from there).

© oaustegard, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (scripts) in uploading-files of oaustegard/claude-skills.

  • SKILL.md
  • CHANGELOG.md
  • README.md
  • scripts/upload.py

Open the folder on GitHubat commit cf49d47

Compare with similar skills

Uploading Files next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Uploading Files compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Uploading Files this skilloaustegard/claude-skills150—~1.2kAutomated safety check: PassMIT
Readme Generator Probeizhi23/README-Generator-Pro113—~472Automated safety check: NotesNone
Maplibre Pmtiles Patternsmaplibre/maplibre-agent-skills151—~4.6kAutomated safety check: PassCustom licence
TakeoverPentesterFlow/agent1.4k—~3.3kAutomated safety check: PassApache-2.0
Fullstack DevHHU3637kr/skills1453 repos~8.6kAutomated safety check: NotesMIT
Fullstack Devinfometa/workbuddyskills346—~1kAutomated safety check: PassMIT

Similar skills

  • Readme Generator Pro

    beizhi23/README-Generator-Pro

    Generate, modify, and render professional README.md files and project introduction HTML pages using the bundled README Generator Pro FastAPI application.

    113 GitHub stars~472 tokensUpdated 3 mo ago
    Backend & APIsAuto-check: notes
  • Maplibre Pmtiles Patterns

    maplibre/maplibre-agent-skills

    Serverless vector and raster tiles with PMTiles for MapLibre GL JS — single-file format, HTTP range requests, hosting on S3/R2/GitHub Pages, generating with Planetiler or tippecanoe, and the pmtiles…

    151 GitHub stars~4.6k tokensUpdated 5 days ago
    Backend & APIsAuto-check passed
  • Takeover

    PentesterFlow/agent

    Subdomain takeover playbook — sweep subdomains for dangling CNAMEs / NS records pointing at unclaimed third-party resources (GitHub Pages, S3, Heroku, Azure, Netlify, Shopify, ...), confirm with the…

    1.4k GitHub stars~3.3k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Fullstack Dev

    HHU3637kr/skills

    Full-stack backend architecture and frontend-backend integration guide.

    145 GitHub starsUsed in 3 repos~8.6k tokens
    Backend & APIsAuto-check: notes
  • Fullstack Dev

    infometa/workbuddyskills

    Full-stack backend architecture and frontend-backend integration guide.

    346 GitHub stars~1k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Dsh Web UI Release

    ningbainb/deepseek-harness-desktop

    Release and publish the dsh-web-ui monorepo (DSH Web GUI plugin family + skin collection) — bump all packages to one unified version, commit and tag, push the vX.Y.Z tag that triggers the GitHub…

    785 GitHub stars~1.4k tokensUpdated 3 days ago
    DevelopmentAuto-check: warnings

More from oaustegard/claude-skills

All 66 skills in this repo
  • Vega-Lite Interactive Charts

    oaustegard/claude-skills

    Builds interactive Vega-Lite charts from uploaded data: analyzes the fields, picks five to ten fitting chart types, and produces a React artifact with the data embedded inline.

    150 GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed
  • Single-File HTML Composer

    oaustegard/claude-skills

    Builds self-contained single-file HTML pages such as reports, decks, postmortems, flowcharts and prototypes from a small spec using a bundled Python composer and templates.

    150 GitHub stars~3.2k tokensUpdated yesterday
    Auto-check passed
  • Declauding

    oaustegard/claude-skills

    Rewrites model-sounding prose into plain technical writing and checks that every claim survives, for PR text, docs, commit messages and similar drafts.

    150 GitHub stars~5.2k tokensUpdated yesterday
    Auto-check passed
  • Preact Developer

    oaustegard/claude-skills

    Guides building standards-based Preact apps with native-first choices, HTM syntax, import maps and vendored ESM, from single-file demos to larger builds.

    150 GitHub stars~4.6k tokensUpdated yesterday
    Auto-check passed
  • Bluesky Zeitgeist Sampler

    oaustegard/claude-skills

    Deprecated sampler that captures short windows of the Bluesky firehose, clusters trending terms and builds an HTML report; replaced by the browsing-bluesky skill.

    150 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Adversarial Review Before Shipping

    oaustegard/claude-skills

    Has a fresh-context adversary attack a blog post, recommendation, analysis brief or piece of code before you ship it, using a profile suited to that kind of artifact.

    150 GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Uploading Files

What does Uploading Files do?

File-upload bridge for Claude Code on the Web. An agent skill from oaustegard/claude-skills. Uploading Files is an agent skill from oaustegard/claude-skills. File-upload bridge for Claude Code on the Web.

When should I use Uploading Files?

Uploading Files fits situations like: the user wants to upload; send files into the session; A task clearly needs files the user has on disk that arent in the repo.

How do I install Uploading Files in Claude Code?

Run `npx skills add oaustegard/claude-skills --skill uploading-files -a claude-code`. Or copy the skill folder (uploading-files in oaustegard/claude-skills) into .claude/skills/uploading-files in your project. Claude Code loads it when a task matches its description.

How do I install Uploading Files in Codex?

Run `npx skills add oaustegard/claude-skills --skill uploading-files -a codex`. Or copy the skill folder (uploading-files in oaustegard/claude-skills) into .agents/skills/uploading-files in your project. Codex loads it when a task matches its description.

Can I use Uploading Files in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add oaustegard/claude-skills --skill uploading-files -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/uploading-files, .gemini/skills/uploading-files, .github/skills/uploading-files and .opencode/skills/uploading-files in your project.

What does Uploading Files need to run?

Going by SKILL.md and its folder, Uploading Files needs Python for the scripts in its folder, the command-line tools its instructions call (python3 and git) and credentials named GH_TOKEN and GITHUB_TOKEN. Our summary lists: Python 3; A credential in GITHUB_TOKEN.

Does Uploading Files access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Uploading Files safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Uploading Files use?

Uploading Files is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Uploading Files use?

About 1.2k tokens (SKILL.md is roughly 5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Uploading Files?

Skills that share tags, products or a category with Uploading Files: Readme Generator Pro (beizhi23/README-Generator-Pro, 113 stars), Maplibre Pmtiles Patterns (maplibre/maplibre-agent-skills, 151 stars), Takeover (PentesterFlow/agent, 1.4k stars) and Fullstack Dev (HHU3637kr/skills, 145 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Uploading Files?

oaustegard (a GitHub user) maintains it in oaustegard/claude-skills, which has 150 GitHub stars. The repository holds 66 skills in this directory. The repository was last updated on October 8, 2026.

Source: oaustegard/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.