{"id":50692368,"url":"https://github.com/yl0711-coder/git-commit-fortune","last_synced_at":"2026-06-09T04:08:49.486Z","repository":{"id":353124478,"uuid":"1218041563","full_name":"yl0711-coder/git-commit-fortune","owner":"yl0711-coder","description":"Read Git history and generate a playful repository fortune in your terminal.","archived":false,"fork":false,"pushed_at":"2026-05-18T10:10:01.000Z","size":30,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-18T12:14:36.871Z","etag":null,"topics":["cli","developer-tooling","fun","git","python","terminal"],"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/yl0711-coder.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":"2026-04-22T13:26:20.000Z","updated_at":"2026-05-18T10:09:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/yl0711-coder/git-commit-fortune","commit_stats":null,"previous_names":["yl0711-coder/git-commit-fortune"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/yl0711-coder/git-commit-fortune","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yl0711-coder%2Fgit-commit-fortune","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yl0711-coder%2Fgit-commit-fortune/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yl0711-coder%2Fgit-commit-fortune/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yl0711-coder%2Fgit-commit-fortune/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yl0711-coder","download_url":"https://codeload.github.com/yl0711-coder/git-commit-fortune/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yl0711-coder%2Fgit-commit-fortune/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34090905,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["cli","developer-tooling","fun","git","python","terminal"],"created_at":"2026-06-09T04:08:48.735Z","updated_at":"2026-06-09T04:08:49.481Z","avatar_url":"https://github.com/yl0711-coder.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Git Commit Fortune\n\nRead a repository's Git history and generate a playful fortune about the codebase.\n\nIt is not a serious analytics tool. It is a small local CLI that turns commit patterns into a screenshot-friendly repository reading.\n\n## Why It Exists\n\nGit history contains patterns:\n\n- too many midnight commits\n- too many commits containing `fix`\n- too many `final`, `temporary`, or `wip` messages\n- weekend commits that should probably have waited\n- short commit messages that hide motive\n\n`git-commit-fortune` reads those signals and turns them into a small fortune report.\n\n## Installation\n\nFrom a source checkout:\n\n```bash\nbin/git-commit-fortune\n```\n\nOr install locally in editable mode:\n\n```bash\npython3 -m pip install -e .\ngit-commit-fortune\n```\n\n## Usage\n\nAnalyze the current repository:\n\n```bash\ngit-commit-fortune\n```\n\nAnalyze another repository:\n\n```bash\ngit-commit-fortune /path/to/repo\n```\n\nUse fewer commits:\n\n```bash\ngit-commit-fortune --limit 30\n```\n\nOnly consult recent commits:\n\n```bash\ngit-commit-fortune --since \"2 weeks ago\"\ngit-commit-fortune --since 2026-01-01\n```\n\nPrint JSON:\n\n```bash\ngit-commit-fortune --json\n```\n\nPrint a compact one-line fortune:\n\n```bash\ngit-commit-fortune --one-line\n```\n\nFail when risky patterns are found:\n\n```bash\ngit-commit-fortune --strict\ngit-commit-fortune --strict --json\n```\n\n## Example Output\n\n```text\nGit Commit Fortune\n\nRepository: /path/to/repo\n\nOmen: The Final That Was Not Final\nFortune level: cursed but deployable\nRepository mood: functional but emotionally unavailable\nSpirit animal: a caffeinated octopus holding a rollback plan\n\nSigns:\n- 80 recent commits were consulted\n- 2 author(s) left fingerprints in the history\n- 26 commit(s) mention fix, bug, or hotfix\n- 7 commit(s) happened after 10 PM or before 6 AM\n- \"final\" appeared 2 time(s), which is rarely final\n\nPrediction:\nA commit called 'final final' will appear before anyone admits defeat.\n\nAdvice:\nBefore the next fix, ask whether the bug is a symptom or a tradition.\n\nLucky command:\ngit log --oneline --grep=final\n```\n\n## One-Line Output\n\n```bash\ngit-commit-fortune --one-line\n```\n\n```text\nGit Commit Fortune: The Calm Before Refactor | mostly harmless | a calm capybara sitting on green CI\n```\n\n## JSON Output\n\n```bash\ngit-commit-fortune --json\n```\n\nJSON output includes:\n\n- repository path\n- generated fortune\n- statistics used by the fortune generator\n- lucky command suggestion\n\nThis is useful if you want to build a badge, dashboard, or another wrapper around the output.\n\n## Strict Mode\n\n`--strict` keeps the normal report output, then exits with code `1` when recent commits contain high-risk patterns.\n\nIt currently fails on signals such as:\n\n- repeated `final` commits\n- unusually common `wip`, `temporary`, or `hack` commits\n- unusually common `fix`, `bug`, or `hotfix` commits\n- unusually common after-hours commits\n- very short commit subjects across a non-trivial history\n\nThis is useful for a lightweight CI check before a release. It is still a playful heuristic, not a quality gate for team performance.\n\n## What It Checks\n\nThe first version looks at recent commit history and detects:\n\n- author count\n- commit count\n- optional Git-native `--since` time window\n- after-hours commits\n- weekend commits\n- average subject length\n- keywords such as `fix`, `bug`, `hotfix`, `wip`, `temporary`, `final`, `hack`, and `release`\n- optional strict-mode findings for CI-friendly exit codes\n\n## Non-Goals\n\nThis project is intentionally small.\n\nIt does not try to be:\n\n- a serious Git analytics platform\n- a productivity tracker\n- a team performance measurement tool\n- a dashboard\n- a remote service\n\nIt should stay local, lightweight, and fun.\n\n## Documentation Maintenance\n\nThis project keeps English and Chinese README files in sync. When updating usage, examples, options, or project positioning in `README.md`, update `README.zh-CN.md` in the same change.\n\n## Development\n\nRun tests:\n\n```bash\nPYTHONPATH=src python3 -m unittest discover -s tests\n```\n\nCompile source:\n\n```bash\npython3 -m compileall src tests\n```\n\nRun the CLI from source:\n\n```bash\nbin/git-commit-fortune --limit 20\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyl0711-coder%2Fgit-commit-fortune","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyl0711-coder%2Fgit-commit-fortune","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyl0711-coder%2Fgit-commit-fortune/lists"}