Upload local folders, skills, config lists, or source-code projects to GitHub through the user's logged-in Chrome session on macOS. Use when Codex should create a GitHub repository, sync a local text-based project tree into it, or publish OpenClaw/Codex skills without relying on gh or preconfigured git credentials.
Resources
3Install
npx skillscat add liuyuqingsuser-prog/github-web-uploader-skill Install via the SkillsCat registry.
GitHub Web Uploader
Overview
Use this skill when local gh or git push setup is missing, but the user is already logged into GitHub in Google Chrome.
The workflow exports GitHub cookies from Chrome, launches a separate automated Chrome window, optionally creates a repository, then writes the local project tree into GitHub through the web UI.
When the target repository already has the same file content, the uploader skips that file instead of creating a redundant commit.
Best Fit
This skill is optimized for text-based project trees:
- OpenClaw or Codex skills
- config folders and manifest lists
- scripts, source code, and small app repositories
For binary-heavy software bundles, prefer zipping first or using normal git later.
Quick Start
python3 scripts/github_upload.py \
--source /absolute/path/project \
--repo-name my-project \
--create-repo \
--visibility private
python3 scripts/github_upload.py \
--source /absolute/path/skill \
--repo-owner my-user \
--repo-name my-skill \
--create-repo \
--visibility private \
--description "Reusable Codex skill"
python3 scripts/github_upload.py \
--source /absolute/path/config-list \
--repo-name config-list \
--dry-runWorkflow
- Confirm the user is already logged into
https://github.comin Google Chrome. - Point
--sourceat the local folder to publish. - Use
--create-repowhen the target repo does not exist yet. - Default to
privateunless the user explicitly wants a public repo. - Run
--dry-runfirst when you want to verify login and the upload plan without creating commits. - Read the returned JSON and share the final repository URL.
Behavior
- Exports live GitHub cookies from Chrome.
- Recursively scans the source folder.
- Skips common junk by default:
.git/node_modules/__pycache__/.DS_Store.pydeps/
- Treats the source as a text-first tree.
- Creates missing files in GitHub or edits existing ones in place.
- Skips unchanged files when the remote and local contents already match.
- Creates one commit per changed file for reliability in the web UI.
Guardrails
- macOS only.
- Requires Google Chrome with an active GitHub login.
- Optimized for UTF-8 text files.
- If binary files are detected, either use
--skip-binaryor remove them before upload. - If the repo owner is omitted, the script tries to infer the default signed-in owner from GitHub's new-repo page.
Resources
scripts/github_upload.py
Python wrapper for dependency bootstrapping, cookie export, source-tree scanning, manifest generation, and invoking the browser uploader.
scripts/github_upload.js
Playwright-based GitHub uploader that creates repositories and writes files through the GitHub web interface.