git-deployer
Deploy static site content to GitHub Pages or any git-backed host.
When to Use
- GitHub Pages updates — You have a local build/output directory and want to push it to a
username.github.io repo or a Pages branch (gh-pages, main) - Static site deployment — Hugo, Jekyll, Gatsby, Docusaurus, or any static site with a git-hosted output
- Automated CI replacement — Instead of setting up GitHub Actions, you want a one-command deploy from your machine
- Syncing local → remote — You edit content locally and need to push changes to a hosted git repository
Workflow
Local Site Directory → /tmp/clone → File Copy → Commit → Force Push → Done
- Clone or init — If the remote repo exists, clone it to
/tmp/{reponame}. Otherwise initialize a fresh clone - Copy files — Sync your local site directory contents into the clone (clean copy, not append)
- Commit — Stage all files, commit with auto-generated timestamp message
- Force push — Push to remote with force flag to overwrite remote state
- Report — Output success/failure with commit hash and push result
Usage
Via skill invocation (from agent)
Provide the following arguments:
site_path — Absolute path to the local site directory (the content to deploy)remote_url — Full git URL (e.g., https://github.com/user/repo.git or git@github.com:user/repo.git)branch — Branch to deploy to (default: main)
Via script directly
./scripts/deploy.sh /path/to/site git@github.com:user/repo.git [branch]
Output
- Success — Shows commit hash, remote URL, branch, and push status
- Failure — Shows error message with exit code and which step failed
Requirements
git must be installed and configured with credentials for the remote- SSH key or HTTPS token auth must be set up for the remote repository
- Site path must exist and contain files
Notes
- Uses
--force push — this will overwrite remote state. Use with caution on shared branches - Clone happens in
/tmp and is not cleaned up automatically (intentional: allows inspection) - Commit message format:
Deploy: YYYY-MM-DD HH:MM:SS UTC