git-personality
Analyze a git repository's commit history and assign the developer (or team) a D&D-style personality archetype — based entirely on real signals from git data. No LLM, no API key, no magic. Pure Python + subprocess.
Installation
pip install git-personality
Or install from source:
git clone https://github.com/yourname/git-personality
cd git-personality
pip install -e .
Usage
# Analyze the current repository
git-personality
# Analyze a specific repository
git-personality --repo /path/to/repo
# Analyze a specific author
git-personality --author "Jane"
# Limit to recent history
git-personality --since "6 months ago"
# Combine options
git-personality --repo ~/projects/myapp --author "alice@example.com" --since "1 year ago"
Alignments
| Alignment | Archetype | Description |
|---|---|---|
| Lawful Good | The Senior Engineer | Small commits, tests, docs, conventional messages |
| Neutral Good | The Pragmatist | Decent practices, gets things done |
| Chaotic Good | The Hacker | Ships fast, skips process, but fixes bugs |
| Lawful Neutral | The Process Bot | Follows conventions religiously, never writes tests |
| True Neutral | The Balanced Dev | Mixed signals, no strong tendencies |
| Chaotic Neutral | The Cowboy | Unpredictable, huge commits, works in bursts |
| Lawful Evil | The Legacy Keeper | Perfect process, but never deletes dead code |
| Neutral Evil | The Tech Debt Merchant | Ships features, never fixes anything |
| Chaotic Evil | The Chaos Agent | Force pushes main, "fix" is 90% of messages |
Dimensions Analyzed
Lawful vs. Chaotic axis
- Commit message quality — One-word commits ("fix", "wip") = Chaotic. Conventional commits ("feat:", "fix:") = Lawful.
- Commit size — Giant commits (500+ lines) = Chaotic. Small, focused commits = Lawful.
- Timing — Weekend/late-night commits = Chaotic. Business hours = Lawful.
- Consistency — Regular cadence = Lawful. Sporadic bursts = Chaotic.
Good vs. Evil axis
- Test discipline — Commits touching test files = Good. Never touching tests = Evil.
- Documentation — Commits touching README/docs = Good. Ignoring docs = Evil.
- Bug fixing — Commits that mention fixing bugs = Good. Never fixing anything = Evil.
Requirements
- Python 3.8+
gitinstalled and accessible onPATHclick >= 8.0rich >= 13.0
License
MIT
Metadata
Release files for git-personality 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| git_personality-1.0.0.tar.gz | 14.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| git_personality-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.1 kB
Release files / git_personality-1.0.0.tar.gz
| Download URL | git_personality-1.0.0.tar.gz |
|---|---|
| Size | 14.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1c44cce574c1dc756370ab24139500409239a41a0f6ab0e8892c44c8211b4228
|
|
BLAKE2b-256 checksum How to use checksums |
0795da8625fdc72d01595e354653f5eeaffe64aa376bf1db2f27b688976c2ed7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.6
|
Release files / git_personality-1.0.0-py3-none-any.whl
| Download URL | git_personality-1.0.0-py3-none-any.whl |
|---|---|
| Size | 13.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3d068f72f5e34d59f037e07f2c3e6bbd0f698e7b0d16fd6dca0c61dd413cde28
|
|
BLAKE2b-256 checksum How to use checksums |
8a8ed07f0439879ab10491d10d4563d4880ba7ce483a4210f9e4030955c487e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.6
|