documentation
everything you need to know about shōmei
basic usage
1. install shōmei
pip install shomei
2. run from your work repo
cd ~/work/my-project
shomei
3. follow the prompts
shōmei will ask you for:
- your personal GitHub username
- what to name the mirror repository
- your GitHub personal access token
4. wait for it to finish
shōmei will scan your commits, create a repo on your personal GitHub, and mirror all your commit dates. this usually takes a few minutes depending on how many commits you have.
5. check your contribution graph
go to your GitHub profile and refresh. your contribution graph should update within a few minutes.
command-line options
--dry-run
preview what would happen without actually creating anything:
shomei --dry-run
--private
create a private mirror repository instead of public:
shomei --private
--version
check which version of shōmei you have installed:
shomei --version
--help
show help message:
shomei --help
github token setup
you need a GitHub personal access token with repo
permissions. here's how to get one:
- go to GitHub Settings → Developer settings → Personal access tokens
- click "Generate new token (classic)"
- give it a name like "shomei"
- check the
repo
checkbox (full control of private repositories) - click "Generate token"
- copy the token (GitHub only shows it once!)
- save it somewhere safe (like a password manager)
- use it when shomei asks for your token
important: never share your token publicly. treat it like a password. if you accidentally expose it, revoke it immediately and create a new one.
how it works
1. scan commits
runs git log --author your@email.com
to find all your commits in the current repo.
2. extract dates
pulls out just the commit dates. no code, no messages, no file names. just timestamps.
3. create repo
uses GitHub's API to create a new repository on your personal account.
4. mirror commits
creates empty commits with your dates via GitHub's API. no code ever leaves your machine.
5. generate README
creates a README for your mirrored repo with stats, badges, and links back to shōmei.
6. update graph
GitHub automatically updates your contribution graph to show the new commits.
7. done!
your contribution graph now reflects your real work. recruiters can see you're active.
frequently asked questions
is this safe?
yes. shōmei only sends commit dates to GitHub's API. no code, no commit messages (beyond "ci(shōmei): sync work contribution"), no file names. your company's IP never touches the internet.
will this get me in trouble?
we're not lawyers, but: you're not exposing any proprietary code or information. just timestamps. that said, check your company's policies if you're worried.
does this work with private work repos?
yes! shōmei reads your local git log. it doesn't matter if the work repo is public or private. it only reads commit metadata from your local clone.
can I make the mirror repo private?
yep! use the --private
flag: shomei --private
what if I want to delete everything later?
just delete the mirror repo from GitHub. your original work repo is never touched or modified.
can I customize the commit messages?
not yet, but that's a great idea! if you want this feature, open an issue or send a PR.
why not just change the git config on my work repos?
because then you'd be committing to company repos with your personal email, which might break things or violate policies. shōmei keeps everything separate and safe.
does it work with GitLab/Bitbucket/etc?
not yet, only GitHub for now. but adding support for other platforms would be awesome! want to contribute? check out the contributing guide.
can I run this on multiple repos?
yes! just cd into each repo and run shomei
. you'll create a separate mirror repo for each one.
what if I have thousands of commits?
shōmei handles this gracefully. it adds delays between API calls to respect GitHub's rate limits. it might take a while, but it'll work.
I'm getting API errors, what do I do?
check that your GitHub token has repo
permissions and hasn't expired. if it's a rate limit issue, wait a few minutes and try again. if the problem persists, open an issue.
want to contribute?
we'd love your help! whether it's:
- reporting bugs
- suggesting features
- improving docs
- writing code
- or just starring the repo ⭐
check out the contributing guide to get started.