Bundle
dsh-tool-radar
Repo health radar for DeepSeek Harness: score a GitHub repo's contribution-friendliness before the agent commits to it
- Source
- he-yufeng
- License
- MIT
- Updated
- Updated 6 days ago
Readme
# dsh-tool-radar
English | [中文](README_CN.md)
A `repo_radar` tool plugin for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (`dsh`). Before the agent burns a session on an unfamiliar GitHub repo, score its contribution-friendliness from live evidence, not vibes.
## What it does
One model-facing tool, `repo_radar`, returning a 0-100 score with the evidence attached:
- **Merge history** — recently merged PR count and median days from open to merge.
- **Queue health** — open PR count, stale (>90d) ratio, and queue-vs-merge-volume imbalance.
- **Maintainer responsiveness** — median days to the first maintainer comment on recently merged PRs.
- **External-contributor friendliness** — how often outside contributors (NONE/CONTRIBUTOR/FIRST_TIMER) actually get merged.
- **Verdict with reasoning** — every scoring rule leaves a plain-language note, plus machine-readable risk flags (`no_recent_merges`, `stale_pr_backlog`, `slow_maintainer_response`, `mostly_internal_merges`, `queue_overload`).
Verdict bands: `Contribute` (70+), `Consider` (45-69), `Avoid` (<45). The scoring rules are ported from [GitSense](https://github.com/he-yufeng/GitSense)'s radar, which runs this exact formula daily.
API cost stays bounded: one repo call, one closed-PR sample, one open-PR sample, and maintainer-response probes on at most five merged PRs. Unauthenticated by default; `GITHUB_TOKEN` (or `GH_TOKEN`) raises the rate limit and is used only in the `Authorization` header — never logged, never in output.
## Install
```sh
dsh plugin --profile <name> add github:he-yufeng/dsh-tool-radar
```
or from npm (once published):
```sh
dsh plugin --profile <name> add dsh-tool-radar
```
## Tool reference
| Parameter | Type | Required | Meaning |
|---|---|---|---|
| `repo` | string | yes | Repository as `owner/name` or a full GitHub URL. |
| `skills` | array | no | Skill keywords matched against the repo's languages (e.g. `["python", "llm"]`). |
Result shape (one canonical JSON value):
```json
{
"repo": "HKUDS/Vibe-Trading",
"stars": 33428,
"primaryLanguage": "Python",
"score": 100,
"recommendation": "Contribute",
"breakdown": {
"mergedPrs": 22,
"openPrs": 5,
"staleRatio": 0,
"medianMergeDays": 0.8,
"medianMaintainerResponseDays": 0.6,
"externalMergedRatio": 0.95,
"skillMatches": [],
"stars": 33428
},
"notes": [
"some recent merges",
"fast median merge time",
"stale PR ratio looks manageable",
"maintainers respond quickly",
"outside contributors are getting merged"
],
"riskFlags": []
}
```
Errors are honest: a missing or private repo, a rate-limit hit, or a malformed `owner/repo` input raises a typed `GitHubError` instead of returning a misleading score.
## Development
```sh
npm install
npm run build # tsc -> lib/
npm test # vitest (network fully stubbed)
```
Layout:
```
src/
index.ts # plugin entry: name / inject / apply
tool.ts # repo_radar tool definition
collect.ts # bounded GitHub sampling -> radar inputs
score.ts # the scoring rules (ported from GitSense radar.py)
github.ts # minimal API client; token hygiene lives here
test/
radar.test.ts
```
## License
MIT
Install
dsh plugin --profile web add github:he-yufeng/dsh-tool-radar#c116c11fa3d2c7ba5b003a649c1e0803a46107c5
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-tool-radar from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.