Score a GitHub repo's contribution-friendliness from live merge and maintainer evidence.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:he-yufeng/dsh-tool-radar
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
English | 中文
A repo_radar tool plugin for 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'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
dsh plugin --profile <name> add github:he-yufeng/dsh-tool-radar
or from npm (once published):
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):
{
"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
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
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-git-graph★ 9321
Git branch selector and Git graph for the dsh web GUI: switch branches and explore branch-lane and commit history from the conversation header.
Akimiya-z/codex-guard#dsh★ 133
Pre-submit pull-request hygiene checks inside DeepSeek Harness: scans the current diff for TODO leftovers, hardcoded secrets, and non-conventional commit subjects.
Cerbur/clutch-dsh#clutch-dsh-worktree★ 34
Adds a Worktree view to DSH Web UI that groups Sessions by Git worktree while keeping DSH as the source of truth.
lehhair/dsh-diff-viewer★ 26
PiUI-style diff viewer replacing the stock DiffBlock for write/edit tool calls.
DamonKoy/dsh-web-ui#dsh-git-graph★ 25
Git branch selector and Git graph in the conversation header of the dsh web GUI.
PerryLink/dsh-github★ 24
Official-grade GitHub CI integration: a composite action.yml, a polling PR review bot with idempotent inline comments and a status-check gate, plus PR/issues tools with every write gated by human approval.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.