gitsense-radar 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,37 @@
1
+ name: CI
2
+ on:
3
+ push:
4
+ branches: [main]
5
+ pull_request:
6
+ branches: [main]
7
+ jobs:
8
+ test:
9
+ runs-on: ${{ matrix.os }}
10
+ strategy:
11
+ fail-fast: false
12
+ matrix:
13
+ os: [ubuntu-latest, windows-latest]
14
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
15
+ steps:
16
+ - uses: actions/checkout@v6
17
+ - uses: actions/setup-python@v6
18
+ with:
19
+ python-version: ${{ matrix.python-version }}
20
+ cache: pip
21
+ - run: python -m pip install -U pip
22
+ - run: python -m pip install -e ".[dev]"
23
+ - run: python -m ruff check .
24
+ - run: python -m pytest tests/ -v
25
+ - run: python -m compileall -q gitsense tests
26
+
27
+ package:
28
+ runs-on: ubuntu-latest
29
+ steps:
30
+ - uses: actions/checkout@v6
31
+ - uses: actions/setup-python@v6
32
+ with:
33
+ python-version: "3.13"
34
+ cache: pip
35
+ - run: python -m pip install -U pip build twine
36
+ - run: python -m build
37
+ - run: python -m twine check dist/*
@@ -0,0 +1,25 @@
1
+ name: Publish
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+ id-token: write
11
+
12
+ jobs:
13
+ publish:
14
+ runs-on: ubuntu-latest
15
+ environment: pypi
16
+ steps:
17
+ - uses: actions/checkout@v6
18
+ - uses: actions/setup-python@v6
19
+ with:
20
+ python-version: "3.13"
21
+ cache: pip
22
+ - run: python -m pip install -U pip build twine
23
+ - run: python -m build
24
+ - run: python -m twine check dist/*
25
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,9 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ dist/
5
+ build/
6
+ .venv/
7
+ .ruff_cache/
8
+ .pytest_cache/
9
+ .tmp/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Yufeng He
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,267 @@
1
+ Metadata-Version: 2.4
2
+ Name: gitsense-radar
3
+ Version: 0.2.0
4
+ Summary: AI-powered open source contribution finder and repo radar
5
+ Project-URL: Homepage, https://github.com/he-yufeng/GitSense
6
+ Project-URL: Repository, https://github.com/he-yufeng/GitSense
7
+ Author-email: Yufeng He <40085740+he-yufeng@users.noreply.github.com>
8
+ License-Expression: MIT
9
+ License-File: LICENSE
10
+ Keywords: agent,ai,contribution,github,llm,maintainer,open-source,pr
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Requires-Python: >=3.10
19
+ Requires-Dist: click>=8.0
20
+ Requires-Dist: httpx>=0.24
21
+ Requires-Dist: openai>=1.0
22
+ Requires-Dist: rich>=13.0
23
+ Provides-Extra: dev
24
+ Requires-Dist: pytest>=7.0; extra == 'dev'
25
+ Requires-Dist: ruff>=0.4; extra == 'dev'
26
+ Description-Content-Type: text/markdown
27
+
28
+ <div align="center">
29
+
30
+ # GitSense
31
+
32
+ **Find your next open source contribution, then check whether the repo is worth your PR.**
33
+
34
+ Tell it your skills → it searches GitHub for open issues you can fix → ranks them by match → scores repos by maintainer responsiveness and PR merge patterns.
35
+
36
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
37
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
38
+ [![CI](https://github.com/he-yufeng/GitSense/actions/workflows/ci.yml/badge.svg)](https://github.com/he-yufeng/GitSense/actions)
39
+
40
+ **[English](README.md) | [中文](README_CN.md)**
41
+
42
+ </div>
43
+
44
+ ---
45
+
46
+ ## The Problem
47
+
48
+ You want to contribute to open source, but finding the right issue is painful. You scroll through hundreds of issues on GitHub, most of which are either claimed, too vague, out of your skill range, or just not worth the effort. By the time you find something decent, you've burned an hour on browsing alone.
49
+
50
+ **GitSense** does the searching for you. It queries GitHub for open, unassigned issues across thousands of repos, then uses an LLM to rank them by how well they match YOUR specific skills and tell you exactly how to get started.
51
+
52
+ The new Radar mode answers the next question: is this repo actually worth your PR? It checks public PR history, stale backlog, outsider merge ratio, and maintainer response time before you invest a weekend in a repo that might ignore good work.
53
+
54
+ ## Quick Start
55
+
56
+ ```bash
57
+ pip install gitsense-radar
58
+ ```
59
+
60
+ ```bash
61
+ # Find issues matching your skills
62
+ gitsense find --skills python,llm,cuda
63
+
64
+ # Target repos with 500+ stars
65
+ gitsense find --skills rust,wasm --stars 500
66
+
67
+ # Filter by label
68
+ gitsense find --skills python --labels bug
69
+
70
+ # Prefer recently active, low-noise issues
71
+ gitsense find --skills python,llm --updated-days 30 --max-comments 10
72
+
73
+ # Scan a specific repo
74
+ gitsense scan vllm-project/vllm --skills python,cuda
75
+
76
+ # Score repos before spending a weekend on a PR
77
+ gitsense radar vllm-project/vllm microsoft/qlib --skills python,llm --out radar.md
78
+ ```
79
+
80
+ ## Demo
81
+
82
+ ```bash
83
+ $ gitsense find --skills python,llm,cuda --stars 1000
84
+ ```
85
+
86
+ ```
87
+ Found 24 candidates.
88
+ Ranking with gpt-4o-mini...
89
+
90
+ ╭──────────── GitSense Results ────────────╮
91
+ │ Skills: python, llm, cuda │
92
+ │ Results: 8 issues ranked by match │
93
+ ╰──────────────────────────────────────────╯
94
+
95
+ 1. [9/10] vllm-project/vllm
96
+ Fix CUDA graph memory leak in speculative decoding
97
+ https://github.com/vllm-project/vllm/issues/36200
98
+ Labels: bug, good first issue
99
+ Perfect match — requires CUDA + Python + LLM inference knowledge.
100
+ How to start: Look at vllm/spec_decode/worker.py, the graph
101
+ capture context isn't releasing GPU memory on exception paths.
102
+
103
+ 2. [8/10] triton-lang/triton
104
+ Type inference fails for constexpr in nested loops
105
+ https://github.com/triton-lang/triton/issues/9650
106
+ Labels: bug
107
+ Strong match — Python compiler internals, related to GPU kernels.
108
+ How to start: Check code_generator.py visit_For, similar to #9547.
109
+
110
+ 3. [7/10] huggingface/transformers
111
+ ...
112
+ ```
113
+
114
+ ## How It Works
115
+
116
+ 1. **Search** — Builds targeted GitHub search queries from your skills (e.g. `python is:issue is:open no:assignee stars:>=100`). Searches across all of GitHub, not just repos you follow.
117
+
118
+ 2. **Filter** — Deduplicates results, skips archived / already-assigned / stale issues by default, and can drop noisy threads with too many comments.
119
+
120
+ 3. **Rank** — Sends the candidates to an LLM along with your skill profile. The LLM scores each issue 1-10 on match quality and provides:
121
+ - Why it's a good match (or not)
122
+ - A concrete hint on how to approach the fix
123
+
124
+ 4. **Display** — Renders ranked results in a clean terminal UI with Rich.
125
+
126
+ 5. **Radar** — Scores target repos from public PR signals: recent merged PRs, open/stale PR backlog, median merge time, maintainer response time, outside contributor merge ratio, and skill fit.
127
+
128
+ ## Usage
129
+
130
+ ### Find across all of GitHub
131
+
132
+ ```bash
133
+ # Basic — search by skills
134
+ gitsense find --skills python,fastapi,postgres
135
+
136
+ # High-star repos only
137
+ gitsense find --skills go,kubernetes --stars 5000
138
+
139
+ # Bug fixes only
140
+ gitsense find --skills typescript,react --labels bug
141
+
142
+ # Skip LLM ranking (faster, just raw results)
143
+ gitsense find --skills python --no-llm
144
+
145
+ # Use a specific model
146
+ gitsense find --skills python --model anthropic/claude-sonnet-4
147
+
148
+ # Show more results
149
+ gitsense find --skills python --limit 15
150
+
151
+ # Focus on fresh issues and avoid long unresolved debates
152
+ gitsense find --skills python,llm --updated-days 30 --max-comments 10
153
+
154
+ # Include assigned issues when you are intentionally scanning a repo backlog
155
+ gitsense find --skills python --include-assigned
156
+ ```
157
+
158
+ ### Scan a specific repo
159
+
160
+ ```bash
161
+ # List all open unassigned issues
162
+ gitsense scan pytorch/pytorch
163
+
164
+ # Filter by your skills
165
+ gitsense scan HKUDS/LightRAG --skills python,rag
166
+
167
+ # Scan only recently active issues
168
+ gitsense scan vllm-project/vllm --skills python,cuda --updated-days 14
169
+ ```
170
+
171
+ ### Score repos before opening a PR
172
+
173
+ ```bash
174
+ # Compare a few target repos
175
+ gitsense radar vllm-project/vllm microsoft/qlib MoonshotAI/kimi-cli --skills python,llm
176
+
177
+ # Use a file, one owner/repo per line
178
+ gitsense radar --targets targets.txt --skills python,agents --out radar.md
179
+
180
+ # Treat PRs older than two weeks as stale
181
+ gitsense radar stanfordnlp/dspy --stale-days 14
182
+ ```
183
+
184
+ Radar is not a prediction oracle. It is a fast triage pass for contributors who care about ROI: recent merge velocity, maintainer response time, stale PR ratio, outsider-friendliness, and whether the repo matches your skill stack.
185
+
186
+ ## Configuration
187
+
188
+ ### GitHub Token (recommended)
189
+
190
+ Without a token you get 10 requests/minute. With a token, 30/minute:
191
+
192
+ ```bash
193
+ export GITHUB_TOKEN=your-github-token
194
+ ```
195
+
196
+ ### LLM Provider
197
+
198
+ GitSense uses an OpenAI-compatible API for ranking. Without an API key, it still works — you just don't get skill-match scoring.
199
+
200
+ ```bash
201
+ # OpenAI
202
+ export OPENAI_API_KEY=your-openai-key
203
+
204
+ # OpenRouter (100+ models)
205
+ export OPENROUTER_API_KEY=your-openrouter-key
206
+
207
+ # Local (Ollama)
208
+ export OPENAI_BASE_URL=http://localhost:11434/v1
209
+ export OPENAI_API_KEY=ollama
210
+ ```
211
+
212
+ ## Who Is This For?
213
+
214
+ - **Developers building their open source resume** — Find high-impact issues in popular repos that match your skills, so your contributions actually get noticed.
215
+ - **Job seekers targeting specific companies** — `gitsense scan microsoft/autogen --skills python,agents` to find issues in repos you want on your resume.
216
+ - **Hackathon participants** — Quickly find bugs you can fix in a few hours.
217
+ - **Experienced developers looking for side projects** — Discover interesting challenges across the ecosystem that match your expertise.
218
+
219
+ ## FAQ
220
+
221
+ **Does this replace looking at issues manually?**
222
+ No. GitSense is a first-pass filter that saves you the time of scrolling through hundreds of issues. You should still read the issue thread and understand the codebase before committing to a contribution.
223
+
224
+ **How accurate is the LLM ranking?**
225
+ The LLM is good at matching keywords and assessing complexity from issue descriptions. It can't tell you whether the maintainers will actually merge your PR or how the codebase is structured. Think of it as a smart sort, not an oracle.
226
+
227
+ **Does this cost money?**
228
+ GitHub search is free (rate-limited without a token). LLM ranking costs whatever your provider charges per call — typically $0.001-0.01 per search with gpt-4o-mini. Use `--no-llm` to skip ranking entirely.
229
+
230
+ ## Roadmap
231
+
232
+ - [ ] Profile mode: read your GitHub profile to auto-detect skills
233
+ - [ ] Watch mode: get daily/weekly digests of new matching issues
234
+ - [x] Repo radar: assess maintainer responsiveness before you invest time
235
+ - [ ] PR success prediction: estimate merge probability for a specific draft PR
236
+
237
+ ## Contributing
238
+
239
+ Contributions welcome. If GitSense helped you find your first open source contribution, that's the best feedback possible.
240
+
241
+ ## Release
242
+
243
+ Releases are published through GitHub Actions with PyPI Trusted Publishing. No PyPI token is stored in the repository.
244
+
245
+ Before publishing for the first time, configure a PyPI trusted publisher for:
246
+
247
+ - project name: `gitsense-radar`
248
+ - owner: `he-yufeng`
249
+ - repository: `GitSense`
250
+ - workflow: `publish.yml`
251
+ - environment: `pypi`
252
+
253
+ Then publish a GitHub release, or run the `Publish` workflow manually. The workflow builds the package, runs `twine check`, and uploads the verified artifacts to PyPI.
254
+
255
+ ## License
256
+
257
+ [MIT](LICENSE)
258
+
259
+ ---
260
+
261
+ <div align="center">
262
+
263
+ **If GitSense helped you find a good issue to work on, give it a star!**
264
+
265
+ [Report a Bug](https://github.com/he-yufeng/GitSense/issues) · [Request a Feature](https://github.com/he-yufeng/GitSense/issues)
266
+
267
+ </div>
@@ -0,0 +1,240 @@
1
+ <div align="center">
2
+
3
+ # GitSense
4
+
5
+ **Find your next open source contribution, then check whether the repo is worth your PR.**
6
+
7
+ Tell it your skills → it searches GitHub for open issues you can fix → ranks them by match → scores repos by maintainer responsiveness and PR merge patterns.
8
+
9
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
10
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
11
+ [![CI](https://github.com/he-yufeng/GitSense/actions/workflows/ci.yml/badge.svg)](https://github.com/he-yufeng/GitSense/actions)
12
+
13
+ **[English](README.md) | [中文](README_CN.md)**
14
+
15
+ </div>
16
+
17
+ ---
18
+
19
+ ## The Problem
20
+
21
+ You want to contribute to open source, but finding the right issue is painful. You scroll through hundreds of issues on GitHub, most of which are either claimed, too vague, out of your skill range, or just not worth the effort. By the time you find something decent, you've burned an hour on browsing alone.
22
+
23
+ **GitSense** does the searching for you. It queries GitHub for open, unassigned issues across thousands of repos, then uses an LLM to rank them by how well they match YOUR specific skills and tell you exactly how to get started.
24
+
25
+ The new Radar mode answers the next question: is this repo actually worth your PR? It checks public PR history, stale backlog, outsider merge ratio, and maintainer response time before you invest a weekend in a repo that might ignore good work.
26
+
27
+ ## Quick Start
28
+
29
+ ```bash
30
+ pip install gitsense-radar
31
+ ```
32
+
33
+ ```bash
34
+ # Find issues matching your skills
35
+ gitsense find --skills python,llm,cuda
36
+
37
+ # Target repos with 500+ stars
38
+ gitsense find --skills rust,wasm --stars 500
39
+
40
+ # Filter by label
41
+ gitsense find --skills python --labels bug
42
+
43
+ # Prefer recently active, low-noise issues
44
+ gitsense find --skills python,llm --updated-days 30 --max-comments 10
45
+
46
+ # Scan a specific repo
47
+ gitsense scan vllm-project/vllm --skills python,cuda
48
+
49
+ # Score repos before spending a weekend on a PR
50
+ gitsense radar vllm-project/vllm microsoft/qlib --skills python,llm --out radar.md
51
+ ```
52
+
53
+ ## Demo
54
+
55
+ ```bash
56
+ $ gitsense find --skills python,llm,cuda --stars 1000
57
+ ```
58
+
59
+ ```
60
+ Found 24 candidates.
61
+ Ranking with gpt-4o-mini...
62
+
63
+ ╭──────────── GitSense Results ────────────╮
64
+ │ Skills: python, llm, cuda │
65
+ │ Results: 8 issues ranked by match │
66
+ ╰──────────────────────────────────────────╯
67
+
68
+ 1. [9/10] vllm-project/vllm
69
+ Fix CUDA graph memory leak in speculative decoding
70
+ https://github.com/vllm-project/vllm/issues/36200
71
+ Labels: bug, good first issue
72
+ Perfect match — requires CUDA + Python + LLM inference knowledge.
73
+ How to start: Look at vllm/spec_decode/worker.py, the graph
74
+ capture context isn't releasing GPU memory on exception paths.
75
+
76
+ 2. [8/10] triton-lang/triton
77
+ Type inference fails for constexpr in nested loops
78
+ https://github.com/triton-lang/triton/issues/9650
79
+ Labels: bug
80
+ Strong match — Python compiler internals, related to GPU kernels.
81
+ How to start: Check code_generator.py visit_For, similar to #9547.
82
+
83
+ 3. [7/10] huggingface/transformers
84
+ ...
85
+ ```
86
+
87
+ ## How It Works
88
+
89
+ 1. **Search** — Builds targeted GitHub search queries from your skills (e.g. `python is:issue is:open no:assignee stars:>=100`). Searches across all of GitHub, not just repos you follow.
90
+
91
+ 2. **Filter** — Deduplicates results, skips archived / already-assigned / stale issues by default, and can drop noisy threads with too many comments.
92
+
93
+ 3. **Rank** — Sends the candidates to an LLM along with your skill profile. The LLM scores each issue 1-10 on match quality and provides:
94
+ - Why it's a good match (or not)
95
+ - A concrete hint on how to approach the fix
96
+
97
+ 4. **Display** — Renders ranked results in a clean terminal UI with Rich.
98
+
99
+ 5. **Radar** — Scores target repos from public PR signals: recent merged PRs, open/stale PR backlog, median merge time, maintainer response time, outside contributor merge ratio, and skill fit.
100
+
101
+ ## Usage
102
+
103
+ ### Find across all of GitHub
104
+
105
+ ```bash
106
+ # Basic — search by skills
107
+ gitsense find --skills python,fastapi,postgres
108
+
109
+ # High-star repos only
110
+ gitsense find --skills go,kubernetes --stars 5000
111
+
112
+ # Bug fixes only
113
+ gitsense find --skills typescript,react --labels bug
114
+
115
+ # Skip LLM ranking (faster, just raw results)
116
+ gitsense find --skills python --no-llm
117
+
118
+ # Use a specific model
119
+ gitsense find --skills python --model anthropic/claude-sonnet-4
120
+
121
+ # Show more results
122
+ gitsense find --skills python --limit 15
123
+
124
+ # Focus on fresh issues and avoid long unresolved debates
125
+ gitsense find --skills python,llm --updated-days 30 --max-comments 10
126
+
127
+ # Include assigned issues when you are intentionally scanning a repo backlog
128
+ gitsense find --skills python --include-assigned
129
+ ```
130
+
131
+ ### Scan a specific repo
132
+
133
+ ```bash
134
+ # List all open unassigned issues
135
+ gitsense scan pytorch/pytorch
136
+
137
+ # Filter by your skills
138
+ gitsense scan HKUDS/LightRAG --skills python,rag
139
+
140
+ # Scan only recently active issues
141
+ gitsense scan vllm-project/vllm --skills python,cuda --updated-days 14
142
+ ```
143
+
144
+ ### Score repos before opening a PR
145
+
146
+ ```bash
147
+ # Compare a few target repos
148
+ gitsense radar vllm-project/vllm microsoft/qlib MoonshotAI/kimi-cli --skills python,llm
149
+
150
+ # Use a file, one owner/repo per line
151
+ gitsense radar --targets targets.txt --skills python,agents --out radar.md
152
+
153
+ # Treat PRs older than two weeks as stale
154
+ gitsense radar stanfordnlp/dspy --stale-days 14
155
+ ```
156
+
157
+ Radar is not a prediction oracle. It is a fast triage pass for contributors who care about ROI: recent merge velocity, maintainer response time, stale PR ratio, outsider-friendliness, and whether the repo matches your skill stack.
158
+
159
+ ## Configuration
160
+
161
+ ### GitHub Token (recommended)
162
+
163
+ Without a token you get 10 requests/minute. With a token, 30/minute:
164
+
165
+ ```bash
166
+ export GITHUB_TOKEN=your-github-token
167
+ ```
168
+
169
+ ### LLM Provider
170
+
171
+ GitSense uses an OpenAI-compatible API for ranking. Without an API key, it still works — you just don't get skill-match scoring.
172
+
173
+ ```bash
174
+ # OpenAI
175
+ export OPENAI_API_KEY=your-openai-key
176
+
177
+ # OpenRouter (100+ models)
178
+ export OPENROUTER_API_KEY=your-openrouter-key
179
+
180
+ # Local (Ollama)
181
+ export OPENAI_BASE_URL=http://localhost:11434/v1
182
+ export OPENAI_API_KEY=ollama
183
+ ```
184
+
185
+ ## Who Is This For?
186
+
187
+ - **Developers building their open source resume** — Find high-impact issues in popular repos that match your skills, so your contributions actually get noticed.
188
+ - **Job seekers targeting specific companies** — `gitsense scan microsoft/autogen --skills python,agents` to find issues in repos you want on your resume.
189
+ - **Hackathon participants** — Quickly find bugs you can fix in a few hours.
190
+ - **Experienced developers looking for side projects** — Discover interesting challenges across the ecosystem that match your expertise.
191
+
192
+ ## FAQ
193
+
194
+ **Does this replace looking at issues manually?**
195
+ No. GitSense is a first-pass filter that saves you the time of scrolling through hundreds of issues. You should still read the issue thread and understand the codebase before committing to a contribution.
196
+
197
+ **How accurate is the LLM ranking?**
198
+ The LLM is good at matching keywords and assessing complexity from issue descriptions. It can't tell you whether the maintainers will actually merge your PR or how the codebase is structured. Think of it as a smart sort, not an oracle.
199
+
200
+ **Does this cost money?**
201
+ GitHub search is free (rate-limited without a token). LLM ranking costs whatever your provider charges per call — typically $0.001-0.01 per search with gpt-4o-mini. Use `--no-llm` to skip ranking entirely.
202
+
203
+ ## Roadmap
204
+
205
+ - [ ] Profile mode: read your GitHub profile to auto-detect skills
206
+ - [ ] Watch mode: get daily/weekly digests of new matching issues
207
+ - [x] Repo radar: assess maintainer responsiveness before you invest time
208
+ - [ ] PR success prediction: estimate merge probability for a specific draft PR
209
+
210
+ ## Contributing
211
+
212
+ Contributions welcome. If GitSense helped you find your first open source contribution, that's the best feedback possible.
213
+
214
+ ## Release
215
+
216
+ Releases are published through GitHub Actions with PyPI Trusted Publishing. No PyPI token is stored in the repository.
217
+
218
+ Before publishing for the first time, configure a PyPI trusted publisher for:
219
+
220
+ - project name: `gitsense-radar`
221
+ - owner: `he-yufeng`
222
+ - repository: `GitSense`
223
+ - workflow: `publish.yml`
224
+ - environment: `pypi`
225
+
226
+ Then publish a GitHub release, or run the `Publish` workflow manually. The workflow builds the package, runs `twine check`, and uploads the verified artifacts to PyPI.
227
+
228
+ ## License
229
+
230
+ [MIT](LICENSE)
231
+
232
+ ---
233
+
234
+ <div align="center">
235
+
236
+ **If GitSense helped you find a good issue to work on, give it a star!**
237
+
238
+ [Report a Bug](https://github.com/he-yufeng/GitSense/issues) · [Request a Feature](https://github.com/he-yufeng/GitSense/issues)
239
+
240
+ </div>