Show off your coding contributions without leaking corporate IP
Project description
update your github contribution graph to reflect the work you actually did while working from another account
shōmei (証明) is a CLI tool that safely updates your personal github graph to reflect the work you did from a corp github account, without ever exposing proprietary code or company IP.
transforms your commits into safe, sanitized commits, and publishes them to your personal github profile, so your contribution graph reflects your real effort.
Showcase your contributions without leaking your company's IP.
The Problem
i’m sure by now you’ve seen posts like this floating around the web.
many developers don’t use their personal github at work, and when they leave a company and start applying elsewhere, it can look like they didn’t do anything the past year, at least to some recruiters. let’s be honest, most devs don’t really care about this stuff, and it doesn’t prove your competency in any real sense, especially since it can easily be faked. this tool is just for those who want to keep everything in order and show that they were active while working from another account.
shōmei solves this by safely updating your activity graph to reflect your previous work.
Features
- IP protection: replaces all source code with safe placeholders
- contribution showcase: rewrites commits to reflect your personal work
- smart filtering: only processes your own commits
Quick Start
Installation
From PyPI (recommended):
pip install shomei
One-command Linux install:
curl -sSL https://raw.githubusercontent.com/petarran/shomei/main/scripts/install.sh | bash
From Homebrew (macOS/Linux):
# Add our tap and install
brew tap petarran/shomei
brew install shomei
From source:
git clone https://github.com/petarran/shomei.git
cd shomei
make install-user # or: pip install -e .
First Run
# Initialize configuration with your personal details
shomei init
# Analyze a repository to see what would be processed
shomei analyze /path/to/your/repo
# Process a repository (dry run first!)
shomei process /path/to/your/repo --dry-run
# Process for real
shomei process /path/to/your/repo
Usage
Commands
shomei init
initialize your configuration file with personal details.
shomei init
# prompts for:
# - Personal name for commits
# - Personal email for commits
# Shows welcome message and contributing info
shomei logo
display the shōmei ASCII logo.
shomei logo
shomei contribute
Show information about contributing to shōmei.
shomei analyze <repo_path>
analyze a repository to show what would be processed.
shomei analyze /path/to/repo
# shows:
# - commit analysis by author
# - files that will be stripped/preserved
# - repository statistics
shomei process <repo_paths...>
process one or more repositories and create sanitized versions.
# process current directory
shomei process
# process specific repositories
shomei process /path/to/repo1 /path/to/repo2
# dry run (preview only)
shomei process --dry-run /path/to/repo
# override personal details
shomei process --personal-email "you@example.com" --personal-name "Your Name" /path/to/repo
Options
--dry-run: Preview changes without applying them--personal-email: Override personal email from config--personal-name: Override personal name from config--placeholder-text: Custom text to replace file contents--output-dir: Specify output directory for sanitized repo--verbose: Enable verbose logging--config: Path to configuration file
Configuration
Configuration is stored in ~/.shomei/config.yml:
personal_name: "Your Name"
personal_email: "you@example.com"
placeholder_text: "[STRIPPED] Corporate content removed for privacy"
keep_branches: ["main", "master"]
strip_file_extensions: [".py", ".js", ".ts", ".java", ".cpp", ".c", ".h", ".go", ".rs", ".php"]
preserve_file_extensions: [".md", ".txt", ".yml", ".yaml", ".json", ".gitignore"]
How It Works
Step 1: Repository Detection
- verifies
.gitfolder exists - supports multi-repo mode
Step 2: Git User Detection
- auto-reads
git config user.nameandgit config user.email - prompts for confirmation/change
Step 3: Commit Filtering
- only keeps commits authored by your corporate email
- uses GitPython for robust filtering
Step 4: Commit Rewriting
- replaces author/committer with your personal info
- optionally sanitizes commit messages
Step 5: Content Stripping
- replaces every file with
placeholder.txt - prevents any corporate IP from leaving the machine
Step 6: Cleanup
- keeps only main/master branch
- deletes all other branches and tags
Step 7: Output
- creates sanitized repository ready for personal use
- safe to push to public GitHub
Safety Features
- Content Stripping: all source code is replaced with placeholder text
- Author Filtering: only processes your own commits
- Dry Run Mode: preview all changes before applying
- Temporary Processing: works on copies, never modifies originals
- Configurable File Types: choose what gets stripped vs. preserved
Requirements
- Python 3.10+
- Git installed and accessible
- Dependencies: GitPython, Click, Rich, PyYAML
Package Distribution
Automated Releases
this project uses GitHub Actions for automated releases:
-
create a release tag:
git tag -a v1.0.0 -m "Release v1.0.0" git push origin v1.0.0
-
GitHub Actions will automatically:
- run tests on multiple Python versions
- build distribution packages
- publish to PyPI
- create GitHub release with changelog
Adding to Package Managers
Homebrew (macOS/Linux):
# Add to Homebrew core or create a custom tap
# brew install petarran/shomei/shomei
Chocolatey (Windows):
# choco install shomei
Scoop (Windows):
# scoop install shomei
Arch Linux (AUR):
# yay -S shomei
Setup Development Environment
# clone and setup
git clone https://github.com/petarran/shomei.git
cd shomei
# install development dependencies
pip install -e ".[dev]"
# run tests
pytest
# format code
black shomei/
# lint code
flake8 shomei/
# type checking
mypy shomei/
Project Structure
shomei/
├── shomei/
│ ├── __init__.py # Package initialization
│ ├── cli.py # CLI entry point
│ ├── core.py # Main processing logic
│ ├── config.py # Configuration management
│ ├── git_utils.py # Git utilities
│ └── utils.py # Helper functions
├── setup.py # Package setup
├── requirements.txt # Dependencies
└── README.md # This file
Contributing
- fork the repository
- create a feature branch (
git checkout -b feature/amazing-feature) - commit your changes (
git commit -m 'Add amazing feature') - push to the branch (
git push origin feature/amazing-feature) - open a Pull Request
License
this project is licensed under the MIT License - see the LICENSE file for details.
Disclaimer
shōmei is designed to help developers showcase their contributions while protecting corporate IP. however:
- always review the output before pushing to ensure no sensitive information remains
- use dry-run mode to preview changes
- consider your company's policies before using this tool
- the authors are not responsible for any data leaks or policy violations
Acknowledgments
- built with GitPython for robust Git operations
- CLI powered by Click for excellent user experience
- beautiful output thanks to Rich
made with ❤️ for developers who want to showcase their work safely.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file shomei-0.1.0.tar.gz.
File metadata
- Download URL: shomei-0.1.0.tar.gz
- Upload date:
- Size: 18.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45af4cc35310b1b87388a1e8567a19a04dc153a72bbfcda83fa5b93465fdae87
|
|
| MD5 |
fd3a09d3a46fec2ce9e91c283e0609f9
|
|
| BLAKE2b-256 |
eced9fd18db935a2ce3b306a61c42e9030540b0ada16a7feca99110cf0960499
|
File details
Details for the file shomei-0.1.0-py3-none-any.whl.
File metadata
- Download URL: shomei-0.1.0-py3-none-any.whl
- Upload date:
- Size: 16.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46a29d29a98be74b7b246ca219ec95077412f56a9b956037998eaefd93db1bdb
|
|
| MD5 |
5db1fdcbc422046cd73c150f169cdb08
|
|
| BLAKE2b-256 |
ca54ad5a0cb949737bf53d89f350c1db6e0174267e1ab6ceee0212469265444f
|