{"id":47516132,"url":"https://github.com/DeerYang/git-gamify","last_synced_at":"2026-04-01T07:00:45.475Z","repository":{"id":305689384,"uuid":"1023601192","full_name":"DeerYang/git-gamify","owner":"DeerYang","description":"A command-line tool that turns your Git workflow into a fun RPG. Level up, unlock achievements, and make every commit rewarding.","archived":false,"fork":false,"pushed_at":"2026-03-13T07:22:20.000Z","size":126,"stargazers_count":24,"open_issues_count":2,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-13T17:37:35.012Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DeerYang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-21T12:06:40.000Z","updated_at":"2026-03-13T07:22:23.000Z","dependencies_parsed_at":"2025-07-21T14:46:03.225Z","dependency_job_id":"79e0273b-4f1b-442d-9da7-89a45720d35f","html_url":"https://github.com/DeerYang/git-gamify","commit_stats":null,"previous_names":["deeryang/git-gamify"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DeerYang/git-gamify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeerYang%2Fgit-gamify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeerYang%2Fgit-gamify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeerYang%2Fgit-gamify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeerYang%2Fgit-gamify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DeerYang","download_url":"https://codeload.github.com/DeerYang/git-gamify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeerYang%2Fgit-gamify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31269179,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T06:57:45.811Z","status":"ssl_error","status_checked_at":"2026-04-01T06:57:42.389Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-03-27T13:00:30.249Z","updated_at":"2026-04-01T07:00:45.469Z","avatar_url":"https://github.com/DeerYang.png","language":"Python","funding_links":[],"categories":["\u003ca name=\"productivity\"\u003e\u003c/a\u003eProductivity"],"sub_categories":[],"readme":"\u003cdiv align=\"right\"\u003e\n  \u003cb\u003e\u003ca href=\"README.md\"\u003eEnglish\u003c/a\u003e\u003c/b\u003e | \u003ca href=\"README_zh.md\"\u003e中文\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003eGit-Gamify\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    Turn your daily Git workflow into a lightweight RPG loop.\n    \u003cbr /\u003e\n    Earn XP, level up, and unlock achievements from real Git usage.\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/pypi/v/git-gamify.svg?color=blue\" alt=\"PyPI Version\"\u003e\n  \u003cimg src=\"https://img.shields.io/pypi/pyversions/git-gamify.svg\" alt=\"Python Versions\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-green.svg\" alt=\"License\"\u003e\n\u003c/p\u003e\n\n---\n\n\u003cimg width=\"834\" height=\"364\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/871085f4-4abc-4551-911c-a836e640ce09\" /\u003e\n\n## What Is Git-Gamify\n\nGit-Gamify wraps your normal `git` usage (`commit`, `push`) and adds a game layer:\n\n- XP and level progression\n- achievement unlocks\n- reward messages on level up\n- profile/stat display commands\n\nThe core goal is to keep your existing Git habits intact while adding immediate feedback and motivation.\n\n## Features\n\n- Progressive XP system for commits and pushes\n- Daily decay/cap mechanics to avoid farming\n- Streak and behavior-based achievements\n- Local profile persistence per Git identity (`user.email`)\n- Multi-language support (`en`, `zh`)\n- Rich terminal UI output\n\n## Installation\n\nRequirements:\n\n- Python 3.8+\n- Git\n\nInstall from PyPI:\n\n```bash\npip install git-gamify\n```\n\nOr install this repo in editable mode:\n\n```bash\npip install -e .\n```\n\n## Quick Start\n\n1. Add shell wrapper so your normal `git` command is routed through Git-Gamify.\n2. Restart terminal.\n3. Use Git as usual (`git commit`, `git push`).\n4. Check progress with `gg profile`.\n\n## Shell Setup\n\n### PowerShell (Required)\n\nEdit your profile:\n\n```powershell\nnotepad $PROFILE\n```\n\nAdd:\n\n```powershell\nfunction git {\n    gg git @args\n}\n```\n\nRestart PowerShell.\n\n### Bash / Zsh (Required)\n\nAdd to `~/.bashrc` or `~/.zshrc`:\n\n```bash\nfunction git() {\n    gg git \"$@\"\n}\n```\n\nReload shell (`source ~/.bashrc` / `source ~/.zshrc`) or restart terminal.\n\n## Autocompletion\n\n### CLI Completion for `gg`\n\nRun once:\n\n```powershell\ngg --install-completion powershell\n```\n\n(`bash` and `zsh` are also supported via Typer installer.)\n\n### PowerShell: Keep Both `gg` and Wrapped `git` Completion\n\nWhen `git` is wrapped as a PowerShell function, default `git` completion can disappear because completion was attached to native `git.exe`, not your function.\n\nUse this profile setup:\n\n```powershell\nImport-Module PSReadLine\nImport-Module posh-git\n$GitPromptSettings.EnablePromptStatus = $false\n\nfunction git {\n    gg git @args\n}\n\nSet-PSReadLineKeyHandler -Chord Tab -Function MenuComplete\n\n# gg completion\n$scriptblock = {\n    param($wordToComplete, $commandAst, $cursorPosition)\n    $Env:_GG_COMPLETE = \"complete_powershell\"\n    $Env:_TYPER_COMPLETE_ARGS = $commandAst.ToString()\n    $Env:_TYPER_COMPLETE_WORD_TO_COMPLETE = $wordToComplete\n    gg | ForEach-Object {\n        $commandArray = $_ -Split \":::\"\n        $command = $commandArray[0]\n        $helpString = $commandArray[1]\n        [System.Management.Automation.CompletionResult]::new(\n            $command, $command, \"ParameterValue\", $helpString\n        )\n    }\n    $Env:_GG_COMPLETE = \"\"\n    $Env:_TYPER_COMPLETE_ARGS = \"\"\n    $Env:_TYPER_COMPLETE_WORD_TO_COMPLETE = \"\"\n}\nRegister-ArgumentCompleter -Native -CommandName gg -ScriptBlock $scriptblock\n\n# bridge completion for wrapped git function\nRegister-ArgumentCompleter -CommandName git -ScriptBlock {\n    param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n    $line = $commandAst.ToString()\n    $lastWord = $wordToComplete\n    GitTabExpansion $line $lastWord | ForEach-Object {\n        [System.Management.Automation.CompletionResult]::new($_, $_, \"ParameterValue\", $_)\n    }\n}\n```\n\nNotes:\n\n- `Import-Module posh-git` is required for `GitTabExpansion`.\n- If startup throws `cannot find 'gg'`, ensure `gg` is installed in the active Python environment and available in `PATH`.\n- `main`/branch text in prompt is from `posh-git` prompt feature, not Git-Gamify runtime.\n\n## Commands\n\n### `gg profile`\n\nShow user profile, level progress, and unlocked achievements.\n\n```bash\ngg profile\n```\n\nOptions:\n\n- `gg profile --stats` or `gg profile -s`\n- `gg profile --reset`\n\n### `gg config`\n\nRead or update config values.\n\n```bash\ngg config --get language\ngg config --set language=zh\ngg config --set language=en\n```\n\n### `gg doctor`\n\nPrint local diagnostics (environment, git, and project status) for troubleshooting.\n\n```bash\ngg doctor\n```\n\n### `gg help`\n\nShow internal command help.\n\n```bash\ngg help\n```\n\n## Data Storage\n\nUser data is stored locally under:\n\n- Windows: `%USERPROFILE%\\.git-gamify`\n- Unix-like: `~/.git-gamify`\n\nProfiles are keyed by a hash of your Git `user.email`.\n\n## Development\n\nCreate and use a virtual environment:\n\n```powershell\npy -m venv .venv\n.\\.venv\\Scripts\\Activate.ps1\npip install -e .\npip install pytest\npytest -q -p no:cacheprovider\n```\n\n## License\n\nMIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDeerYang%2Fgit-gamify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDeerYang%2Fgit-gamify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDeerYang%2Fgit-gamify/lists"}