github-rep 0.1.0__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,245 @@
1
+ Metadata-Version: 2.4
2
+ Name: github-rep
3
+ Version: 0.2.0
4
+ Summary: Analyze a GitHub profile and get honest, actionable advice for building real reputation
5
+ Author-email: Basil Alshukaili <basilalshukaili@gmail.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/basilalshukaili/github-rep
8
+ Project-URL: Bug Tracker, https://github.com/basilalshukaili/github-rep/issues
9
+ Keywords: github,open-source,developer-tools,profile,reputation,cli
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Software Development :: Version Control :: Git
20
+ Requires-Python: >=3.9
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: requests>=2.31
24
+ Requires-Dist: rich>=13.0
25
+ Requires-Dist: typer>=0.9
26
+ Requires-Dist: python-dateutil>=2.8
27
+ Provides-Extra: dev
28
+ Requires-Dist: pytest>=7; extra == "dev"
29
+ Requires-Dist: responses>=0.25; extra == "dev"
30
+ Requires-Dist: pytest-cov>=4; extra == "dev"
31
+ Dynamic: license-file
32
+
33
+ # github-rep
34
+
35
+ [![PyPI version](https://img.shields.io/pypi/v/github-rep.svg)](https://pypi.org/project/github-rep/)
36
+ [![Python versions](https://img.shields.io/pypi/pyversions/github-rep.svg)](https://pypi.org/project/github-rep/)
37
+ [![CI](https://github.com/basilalshukaili/github-rep/actions/workflows/ci.yml/badge.svg)](https://github.com/basilalshukaili/github-rep/actions/workflows/ci.yml)
38
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
39
+
40
+ **Score any GitHub user's reputation across 11 honest signals and get a prioritized fix list — in under 30 seconds.**
41
+
42
+ ---
43
+
44
+ ## Why this exists
45
+
46
+ GitHub profiles are the de-facto developer resume. Most advice on building GitHub reputation is either
47
+ vague ("just contribute more") or gameable (spam-stars, low-effort PRs). This tool measures the signals
48
+ that actually matter to recruiters, maintainers, and other developers — and tells you exactly what to
49
+ fix first, ordered by impact.
50
+
51
+ ---
52
+
53
+ ## Install
54
+
55
+ ```bash
56
+ pip install github-rep
57
+ ```
58
+
59
+ Requires Python 3.9+. No configuration needed — works unauthenticated (60 req/hr) or with a GitHub
60
+ token for 5000 req/hr.
61
+
62
+ ---
63
+
64
+ ## Quickstart
65
+
66
+ ```bash
67
+ # Analyze any GitHub user
68
+ github-rep analyze-profile torvalds
69
+
70
+ # Use a token to avoid rate limits
71
+ export GITHUB_TOKEN=ghp_yourtoken
72
+ github-rep analyze-profile sindresorhus
73
+
74
+ # Machine-readable JSON output
75
+ github-rep analyze-profile gvanrossum --json
76
+
77
+ # Show all findings, including low-priority ones
78
+ github-rep analyze-profile octocat --verbose
79
+
80
+ # Compare multiple profiles side by side
81
+ github-rep compare torvalds gvanrossum sindresorhus
82
+
83
+ # Check your API rate limit
84
+ github-rep rate-limit
85
+ ```
86
+
87
+ ---
88
+
89
+ ## Sample output
90
+
91
+ ```
92
+ $ github-rep analyze-profile torvalds
93
+
94
+ ╭──────────────────────────────── GitHub Profile ─────────────────────────────╮
95
+ │ @torvalds | Linus Torvalds │
96
+ │ │
97
+ │ Followers: 305,509 | Public repos: 12 | Stars earned: 246,028 │
98
+ ╰──────────────────────────────────────────────────────────────────────────────╯
99
+ Grade: B (78/100)
100
+ Tier: Active developer
101
+
102
+ Score Breakdown
103
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━┓
104
+ ┃ Dimension ┃ Score ┃ Max ┃
105
+ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━┩
106
+ │ Profile Completeness │ 4 │ 10 │
107
+ │ Readme Quality │ 12 │ 15 │
108
+ │ Star Signal │ 20 │ 20 │
109
+ │ Contribution Streak │ 15 │ 15 │
110
+ │ Repo Diversity │ 7 │ 10 │
111
+ │ Description Quality │ 10 │ 10 │
112
+ │ Topic Tags │ 0 │ 5 │
113
+ │ Fork Ratio │ 5 │ 5 │
114
+ │ Recent Activity │ 5 │ 10 │
115
+ │ Release Cadence │ 0 │ 5 │
116
+ │ Profile Readme │ 0 │ 5 │
117
+ └──────────────────────────┴────────┴───────┘
118
+
119
+ Priority fixes:
120
+ [HIGH] Missing bio
121
+ Your bio is empty. It is the first thing visitors read.
122
+ Fix: Write 1-2 sentences: your focus, what you build, your superpower.
123
+
124
+ What is working:
125
+ [GOOD] Strong star signal (246028 total, top repo: 235147)
126
+ [GOOD] Active recent commits (0d ago)
127
+ [GOOD] All repos have descriptions
128
+ ```
129
+
130
+ Grades: **A** (≥80) · **B** (≥65) · **C** (≥50) · **D** (≥35) · **F**
131
+
132
+ ---
133
+
134
+ ## The 11 scored dimensions
135
+
136
+ | # | Dimension | Max pts | What it measures |
137
+ |---|-----------|--------:|------------------|
138
+ | 1 | Profile Completeness | 10 | Name, bio, avatar, location, website / social link |
139
+ | 2 | README Quality | 15 | Top repo README length, code examples, install instructions |
140
+ | 3 | Star Signal | 20 | Total stars earned across all repos (log-scaled) |
141
+ | 4 | Contribution Streak | 15 | Days since last profile activity |
142
+ | 5 | Repo Diversity | 10 | Number of public repos and language breadth |
143
+ | 6 | Description Quality | 10 | Fraction of repos with meaningful descriptions |
144
+ | 7 | Topic Tags | 5 | Repos tagged with relevant GitHub topics |
145
+ | 8 | Fork Ratio | 5 | Proportion of original work vs. forked repos |
146
+ | 9 | Recent Activity | 10 | Repos with pushes in the last 90 days |
147
+ | 10 | **Release Cadence** | 5 | Published GitHub Releases on top repos |
148
+ | 11 | **Profile README** | 5 | Presence and quality of the username/username profile README |
149
+
150
+ **Total: 100 points.**
151
+
152
+ Dimensions 10 and 11 are new in v0.2.0 and measure signals that indicate a polished,
153
+ production-ready presence — publishing versioned releases and curating a profile page.
154
+
155
+ ---
156
+
157
+ ## All flags
158
+
159
+ ```
160
+ github-rep analyze-profile <username> [OPTIONS]
161
+ ```
162
+
163
+ | Flag | Description |
164
+ |------|-------------|
165
+ | `--json` | Machine-readable JSON output (all scores + findings) |
166
+ | `--verbose` / `-v` | Show all findings including low-priority improvements |
167
+ | `--token` / `-t` | GitHub PAT (also reads `GITHUB_TOKEN` env var) |
168
+ | `--top N` | Number of top repos to deep-analyze (default: 10) |
169
+ | `--help` | Show help and exit |
170
+
171
+ ---
172
+
173
+ ## JSON output
174
+
175
+ ```bash
176
+ github-rep analyze-profile gvanrossum --json
177
+ ```
178
+
179
+ ```json
180
+ {
181
+ "username": "gvanrossum",
182
+ "total": 72,
183
+ "grade": "B",
184
+ "tier": "Active developer",
185
+ "breakdown": {
186
+ "profile_completeness": 8,
187
+ "readme_quality": 12,
188
+ ...
189
+ },
190
+ "findings": [
191
+ {
192
+ "category": "topic_tags",
193
+ "severity": "medium",
194
+ "title": "Most repos have no topic tags",
195
+ "detail": "Missing from GitHub Explore category pages entirely.",
196
+ "fix": "Add topics to your top 3 repos today - GitHub UI, takes 2 minutes."
197
+ }
198
+ ]
199
+ }
200
+ ```
201
+
202
+ ---
203
+
204
+ ## Caching
205
+
206
+ Results are cached for 5 minutes under `~/.cache/github-rep/` to avoid hitting rate limits when
207
+ running the tool multiple times. Delete the cache directory to force a fresh fetch.
208
+
209
+ ---
210
+
211
+ ## FAQ
212
+
213
+ **Do I need a GitHub token?**
214
+ No. Unauthenticated usage gets 60 API requests per hour — enough for a single profile analysis.
215
+ Set `GITHUB_TOKEN` to get 5000 requests per hour and avoid hitting limits when comparing many profiles.
216
+
217
+ **How is the score calculated?**
218
+ Each dimension is scored independently against fixed max points (totalling 100). There is no
219
+ machine learning or relative ranking — the score reflects the absolute presence or absence of
220
+ each signal.
221
+
222
+ **Can I game the score?**
223
+ You could game every individual metric, but you would also genuinely improve your GitHub presence
224
+ in the process. The signals are chosen because they correlate with real reputation value.
225
+
226
+ **Why does a well-known developer score lower than expected?**
227
+ Some high-reputation developers (including Linus Torvalds) score below 80 because they skip
228
+ signals like topic tags, profile READMEs, or GitHub Releases. The tool measures profile
229
+ hygiene signals, not absolute influence.
230
+
231
+ **How often should I re-run this?**
232
+ After each batch of improvements. Treat it like `npm audit` — run it, fix the findings, move on.
233
+
234
+ ---
235
+
236
+ ## Contributing
237
+
238
+ See [CONTRIBUTING.md](CONTRIBUTING.md). Bug reports and improvements welcome — open an issue on
239
+ [github.com/basilalshukaili/github-rep](https://github.com/basilalshukaili/github-rep/issues).
240
+
241
+ ---
242
+
243
+ ## License
244
+
245
+ MIT — see [LICENSE](LICENSE).
@@ -0,0 +1,213 @@
1
+ # github-rep
2
+
3
+ [![PyPI version](https://img.shields.io/pypi/v/github-rep.svg)](https://pypi.org/project/github-rep/)
4
+ [![Python versions](https://img.shields.io/pypi/pyversions/github-rep.svg)](https://pypi.org/project/github-rep/)
5
+ [![CI](https://github.com/basilalshukaili/github-rep/actions/workflows/ci.yml/badge.svg)](https://github.com/basilalshukaili/github-rep/actions/workflows/ci.yml)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
7
+
8
+ **Score any GitHub user's reputation across 11 honest signals and get a prioritized fix list — in under 30 seconds.**
9
+
10
+ ---
11
+
12
+ ## Why this exists
13
+
14
+ GitHub profiles are the de-facto developer resume. Most advice on building GitHub reputation is either
15
+ vague ("just contribute more") or gameable (spam-stars, low-effort PRs). This tool measures the signals
16
+ that actually matter to recruiters, maintainers, and other developers — and tells you exactly what to
17
+ fix first, ordered by impact.
18
+
19
+ ---
20
+
21
+ ## Install
22
+
23
+ ```bash
24
+ pip install github-rep
25
+ ```
26
+
27
+ Requires Python 3.9+. No configuration needed — works unauthenticated (60 req/hr) or with a GitHub
28
+ token for 5000 req/hr.
29
+
30
+ ---
31
+
32
+ ## Quickstart
33
+
34
+ ```bash
35
+ # Analyze any GitHub user
36
+ github-rep analyze-profile torvalds
37
+
38
+ # Use a token to avoid rate limits
39
+ export GITHUB_TOKEN=ghp_yourtoken
40
+ github-rep analyze-profile sindresorhus
41
+
42
+ # Machine-readable JSON output
43
+ github-rep analyze-profile gvanrossum --json
44
+
45
+ # Show all findings, including low-priority ones
46
+ github-rep analyze-profile octocat --verbose
47
+
48
+ # Compare multiple profiles side by side
49
+ github-rep compare torvalds gvanrossum sindresorhus
50
+
51
+ # Check your API rate limit
52
+ github-rep rate-limit
53
+ ```
54
+
55
+ ---
56
+
57
+ ## Sample output
58
+
59
+ ```
60
+ $ github-rep analyze-profile torvalds
61
+
62
+ ╭──────────────────────────────── GitHub Profile ─────────────────────────────╮
63
+ │ @torvalds | Linus Torvalds │
64
+ │ │
65
+ │ Followers: 305,509 | Public repos: 12 | Stars earned: 246,028 │
66
+ ╰──────────────────────────────────────────────────────────────────────────────╯
67
+ Grade: B (78/100)
68
+ Tier: Active developer
69
+
70
+ Score Breakdown
71
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━┓
72
+ ┃ Dimension ┃ Score ┃ Max ┃
73
+ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━┩
74
+ │ Profile Completeness │ 4 │ 10 │
75
+ │ Readme Quality │ 12 │ 15 │
76
+ │ Star Signal │ 20 │ 20 │
77
+ │ Contribution Streak │ 15 │ 15 │
78
+ │ Repo Diversity │ 7 │ 10 │
79
+ │ Description Quality │ 10 │ 10 │
80
+ │ Topic Tags │ 0 │ 5 │
81
+ │ Fork Ratio │ 5 │ 5 │
82
+ │ Recent Activity │ 5 │ 10 │
83
+ │ Release Cadence │ 0 │ 5 │
84
+ │ Profile Readme │ 0 │ 5 │
85
+ └──────────────────────────┴────────┴───────┘
86
+
87
+ Priority fixes:
88
+ [HIGH] Missing bio
89
+ Your bio is empty. It is the first thing visitors read.
90
+ Fix: Write 1-2 sentences: your focus, what you build, your superpower.
91
+
92
+ What is working:
93
+ [GOOD] Strong star signal (246028 total, top repo: 235147)
94
+ [GOOD] Active recent commits (0d ago)
95
+ [GOOD] All repos have descriptions
96
+ ```
97
+
98
+ Grades: **A** (≥80) · **B** (≥65) · **C** (≥50) · **D** (≥35) · **F**
99
+
100
+ ---
101
+
102
+ ## The 11 scored dimensions
103
+
104
+ | # | Dimension | Max pts | What it measures |
105
+ |---|-----------|--------:|------------------|
106
+ | 1 | Profile Completeness | 10 | Name, bio, avatar, location, website / social link |
107
+ | 2 | README Quality | 15 | Top repo README length, code examples, install instructions |
108
+ | 3 | Star Signal | 20 | Total stars earned across all repos (log-scaled) |
109
+ | 4 | Contribution Streak | 15 | Days since last profile activity |
110
+ | 5 | Repo Diversity | 10 | Number of public repos and language breadth |
111
+ | 6 | Description Quality | 10 | Fraction of repos with meaningful descriptions |
112
+ | 7 | Topic Tags | 5 | Repos tagged with relevant GitHub topics |
113
+ | 8 | Fork Ratio | 5 | Proportion of original work vs. forked repos |
114
+ | 9 | Recent Activity | 10 | Repos with pushes in the last 90 days |
115
+ | 10 | **Release Cadence** | 5 | Published GitHub Releases on top repos |
116
+ | 11 | **Profile README** | 5 | Presence and quality of the username/username profile README |
117
+
118
+ **Total: 100 points.**
119
+
120
+ Dimensions 10 and 11 are new in v0.2.0 and measure signals that indicate a polished,
121
+ production-ready presence — publishing versioned releases and curating a profile page.
122
+
123
+ ---
124
+
125
+ ## All flags
126
+
127
+ ```
128
+ github-rep analyze-profile <username> [OPTIONS]
129
+ ```
130
+
131
+ | Flag | Description |
132
+ |------|-------------|
133
+ | `--json` | Machine-readable JSON output (all scores + findings) |
134
+ | `--verbose` / `-v` | Show all findings including low-priority improvements |
135
+ | `--token` / `-t` | GitHub PAT (also reads `GITHUB_TOKEN` env var) |
136
+ | `--top N` | Number of top repos to deep-analyze (default: 10) |
137
+ | `--help` | Show help and exit |
138
+
139
+ ---
140
+
141
+ ## JSON output
142
+
143
+ ```bash
144
+ github-rep analyze-profile gvanrossum --json
145
+ ```
146
+
147
+ ```json
148
+ {
149
+ "username": "gvanrossum",
150
+ "total": 72,
151
+ "grade": "B",
152
+ "tier": "Active developer",
153
+ "breakdown": {
154
+ "profile_completeness": 8,
155
+ "readme_quality": 12,
156
+ ...
157
+ },
158
+ "findings": [
159
+ {
160
+ "category": "topic_tags",
161
+ "severity": "medium",
162
+ "title": "Most repos have no topic tags",
163
+ "detail": "Missing from GitHub Explore category pages entirely.",
164
+ "fix": "Add topics to your top 3 repos today - GitHub UI, takes 2 minutes."
165
+ }
166
+ ]
167
+ }
168
+ ```
169
+
170
+ ---
171
+
172
+ ## Caching
173
+
174
+ Results are cached for 5 minutes under `~/.cache/github-rep/` to avoid hitting rate limits when
175
+ running the tool multiple times. Delete the cache directory to force a fresh fetch.
176
+
177
+ ---
178
+
179
+ ## FAQ
180
+
181
+ **Do I need a GitHub token?**
182
+ No. Unauthenticated usage gets 60 API requests per hour — enough for a single profile analysis.
183
+ Set `GITHUB_TOKEN` to get 5000 requests per hour and avoid hitting limits when comparing many profiles.
184
+
185
+ **How is the score calculated?**
186
+ Each dimension is scored independently against fixed max points (totalling 100). There is no
187
+ machine learning or relative ranking — the score reflects the absolute presence or absence of
188
+ each signal.
189
+
190
+ **Can I game the score?**
191
+ You could game every individual metric, but you would also genuinely improve your GitHub presence
192
+ in the process. The signals are chosen because they correlate with real reputation value.
193
+
194
+ **Why does a well-known developer score lower than expected?**
195
+ Some high-reputation developers (including Linus Torvalds) score below 80 because they skip
196
+ signals like topic tags, profile READMEs, or GitHub Releases. The tool measures profile
197
+ hygiene signals, not absolute influence.
198
+
199
+ **How often should I re-run this?**
200
+ After each batch of improvements. Treat it like `npm audit` — run it, fix the findings, move on.
201
+
202
+ ---
203
+
204
+ ## Contributing
205
+
206
+ See [CONTRIBUTING.md](CONTRIBUTING.md). Bug reports and improvements welcome — open an issue on
207
+ [github.com/basilalshukaili/github-rep](https://github.com/basilalshukaili/github-rep/issues).
208
+
209
+ ---
210
+
211
+ ## License
212
+
213
+ MIT — see [LICENSE](LICENSE).
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "github-rep"
7
- version = "0.1.0"
7
+ version = "0.2.0"
8
8
  description = "Analyze a GitHub profile and get honest, actionable advice for building real reputation"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -37,8 +37,8 @@ dev = ["pytest>=7", "responses>=0.25", "pytest-cov>=4"]
37
37
  github-rep = "github_rep.cli:app"
38
38
 
39
39
  [project.urls]
40
- Homepage = "https://github.com/basilalshukaili/github-reputation-engine"
41
- "Bug Tracker" = "https://github.com/basilalshukaili/github-reputation-engine/issues"
40
+ Homepage = "https://github.com/basilalshukaili/github-rep"
41
+ "Bug Tracker" = "https://github.com/basilalshukaili/github-rep/issues"
42
42
 
43
43
  [tool.setuptools.packages.find]
44
44
  where = ["src"]
@@ -0,0 +1 @@
1
+ __version__ = "0.2.0"