Evaluate Repository
Thorough assessment of a third-party GitHub repository to decide whether it's worth adopting as a dependency, tool, or reference. Answers the question: "Should I use this?"
Arguments
$ARGUMENTS — a GitHub URL or owner/repo identifier. Examples:
/eval-repo https://github.com/pchuri/confluence-cli
/eval-repo pallets/flask
- Empty: ask the user for the repo
Phase 1: Gather Data
Run get-skill-tmpdir <repo-name>-eval to create a unique directory (use the repository name only — no owner prefix or /; e.g., flask for pallets/flask), then clone the repo into it. Launch parallel subagents to collect data. All subagents work from the cloned repo.
Before launching subagents, fetch repo metadata with gh:
gh repo view <owner/repo> --json name,description,createdAt,updatedAt,pushedAt,stargazerCount,forkCount,issues,pullRequests,licenseInfo,primaryLanguage,languages,defaultBranchRef,isArchived,isFork
Subagent 1: Project History & Maintenance (subagent_type: standard-worker)
Run git commands to assess project health over time:
- Age: first and most recent commit dates
- Commit count: total commits
- Commit frequency: commits per month over the project's lifetime — look for sustained activity vs. bursts and abandonment
- Release cadence:
git tag — how many releases, how often, is semantic versioning used?
- Recent activity: commits in last 3 months — is this actively maintained or dormant?
- Contributors:
git shortlog -sne --all — count of contributors, concentration of commits (bus factor)
- Bot commits: look for dependabot, renovate, semantic-release-bot, AI agents (jules, copilot, devin) — what proportion of commits are automated or AI-generated?
Subagent 2: Test Coverage & CI (subagent_type: standard-worker)
- Test files: find test directories and files, count them relative to source files
- Test framework: identify what's used (jest, pytest, mocha, go test, etc.)
- Coverage configuration: look for coverage settings in config files (jest.config, pytest.ini, .coveragerc, nyc config)
- Coverage reports: check if coverage thresholds are enforced
- CI/CD: read workflow files (.github/workflows/, .gitlab-ci.yml, etc.) — what runs on PR/push? Is there a test matrix? Security scanning?
- Test quality signals: are tests just checking that functions exist, or do they test behavior with meaningful assertions and edge cases?
Subagent 3: Code Quality (subagent_type: standard-worker)
- File structure: how is the project organized? Is it modular or monolithic?
- Largest files: identify files over 400 lines — are they god files or reasonably large?
- Language & type safety: TypeScript vs JavaScript? Type annotations in Python? Strong typing in general?
- Linting: is a linter configured (eslint, ruff, golangci-lint)? Is it enforced in CI?
- Dependencies: read package manifest — how many dependencies? Are they well-known/maintained or obscure?
- Code smells: scan the main source files for:
- Duplicated patterns (copy-paste code)
- Deep nesting
- Overly long functions
- Broad exception catches
- Hardcoded values
- No-op or dead code
- Documentation: README quality, inline docs, API documentation
- Security basics: secrets in code? Input validation? Dependency audit results?
Subagent 4: API & Design (subagent_type: standard-worker)
- Public API surface: what does the user actually interact with? Is it clean and well-defined?
- Error handling: how does the project handle and communicate errors?
- Configuration: how is the project configured? Environment variables, config files, CLI flags?
- Extensibility: is there a plugin system, hooks, or clean extension points?
- Breaking change history: scan changelogs or release notes for breaking changes — how often do they happen?
Phase 2: Synthesize
Combine subagent findings into a structured assessment. Don't just dump data — interpret it.
Health Signals Matrix
Evaluate each dimension on a simple scale: Strong / Adequate / Weak / Missing
| Dimension |
Assessment |
Evidence |
| Maintenance |
Active / Sporadic / Dormant / Abandoned |
commit frequency, last activity, open issues response time |
| Test Coverage |
Comprehensive / Partial / Minimal / None |
test file count, coverage config, CI enforcement |
| Code Quality |
Clean / Acceptable / Rough / Poor |
file sizes, structure, linting, type safety |
| Documentation |
Thorough / Adequate / Sparse / None |
README depth, API docs, examples |
| Community |
Growing / Stable / Stagnant / Solo |
contributors, stars, forks, issue/PR activity |
| Bus Factor |
Healthy (3+) / Risky (2) / Critical (1) |
commit distribution across contributors |
| Security |
Proactive / Basic / Reactive / None |
audit in CI, dependency scanning, input validation |
Red Flags
Explicitly call out any of these if present (focus on the non-obvious ones; obvious failings like no tests or outright abandonment are already covered by the health matrix):
- Large proportion of AI-generated commits (Jules, Copilot agents)
- Bus factor of 1 with no succession plan (commits concentrated in a single contributor)
- License incompatible with user's needs
- Known security vulnerabilities in dependencies
Green Flags
Also call out positives that go beyond the baseline:
- CI with test matrix across multiple runtime versions
- Coverage thresholds enforced in CI (not just coverage configured)
- Security scanning in CI
- Bus factor of 3+ with active issue triage and PR review
Phase 3: Present the Verdict
Present findings conversationally, then use AskUserQuestion to determine next steps.
Report Structure
## Repository Evaluation: <owner/repo>
### Overview
<1-2 sentences: what it is, what it does>
### Project Vitals
| Metric | Value |
|--------|-------|
| Created | <date> (<age>) |
| Last activity | <date> |
| Version | <latest tag/release> |
| Stars / Forks | <count> |
| Contributors | <count> (bus factor: <N>) |
| License | <license> |
| Language | <primary language> |
### Health Assessment
<The health signals matrix from Phase 2>
### Red Flags
<Bulleted list, or "None identified">
### Green Flags
<Bulleted list>
### Code Quality Notes
<2-4 specific observations about the code — not generic, grounded in what you read>
### Test Coverage
<Specific findings: what's tested, what isn't, how thorough>
### Verdict
<Clear recommendation: one of>
- **Adopt with confidence** — well-maintained, well-tested, low risk
- **Adopt with caution** — usable but has notable gaps; document what you're accepting
- **Use for reference only** — interesting ideas but not production-ready as a dependency
- **Avoid** — significant quality, maintenance, or security concerns
- **Build your own** — the problem is simple enough that wrapping the underlying API/library directly is safer than this abstraction
<2-3 sentences explaining the recommendation>
Ask what to do
AskUserQuestion:
question: "Based on this evaluation, what would you like to do?"
header: "Next step"
multiSelect: false
options:
- label: "Adopt it"
description: "I'll add it as a dependency — thanks for the review"
- label: "Dig deeper"
description: "I want to look at specific areas more closely before deciding"
- label: "Look for alternatives"
description: "Search for other libraries/tools that solve the same problem"
- label: "Skip it"
description: "Not worth it — I'll find another approach"
If the user wants to dig deeper, ask what specifically concerns them and focus investigation there.
If the user wants to look for alternatives, use WebSearch to find competing projects, then offer to evaluate the top 2-3 candidates with the same process (abbreviated — skip the full subagent sweep, focus on the health signals matrix for comparison).
Cleanup
After the evaluation is complete, remove the cloned repo directory:
rm -rf "<dir>"
Note: rm -rf is intentionally not pre-approved — the user will see a permission prompt for this cleanup step.
Principles
- Evidence over opinion — every assessment should cite specific files, line counts, commit data, or test results. No "this looks fine" without backing it up.
- Context matters — a personal utility with 20 stars and one maintainer might be perfectly fine for light scripting. A payment processing library with the same profile is a hard no. Calibrate the verdict to the user's likely use case.
- Red flags are not disqualifying on their own — a single-maintainer project with excellent tests and clean code can still be a good choice. Multiple red flags compound.
- Be honest about alternatives — if wrapping the underlying API directly is simpler than using this library, say so. Don't recommend a dependency just because it exists.
- Time is a signal — a project that's been stable for 3 years with infrequent commits is different from one that was abandoned after 3 months. Distinguish between "mature and stable" and "dead."
- AI-generated code is a signal, not a verdict — flag it because it often correlates with less thoughtful design and lower test quality, but judge the output on its own merits.
What This Skill Does NOT Do
- Audit your own codebase — use
/mine-challenge for that
- Research feasibility of adopting it — use
/mine-research if you need to evaluate how this would integrate into your specific project
- Security audit — this checks for basic security hygiene (audit in CI, no secrets in code) but won't do a thorough vulnerability assessment
- Performance benchmarking — can flag likely performance concerns from code reading but won't run benchmarks
- License compliance analysis — flags the license but doesn't evaluate compatibility with your project's license
1---2name: mine-eval-repo3description: "Use when the user says: \"evaluate this repo\", \"should I use this library\", or wants to assess a third-party dependency. Checks test coverage, code quality, maintenance health, bus factor, and maturity."4user-invocable: true5opencode-command: true6---78# Evaluate Repository910Thorough assessment of a third-party GitHub repository to decide whether it's worth adopting as a dependency, tool, or reference. Answers the question: "Should I use this?"1112## Arguments1314$ARGUMENTS — a GitHub URL or `owner/repo` identifier. Examples:15- `/eval-repo https://github.com/pchuri/confluence-cli`16- `/eval-repo pallets/flask`17- Empty: ask the user for the repo1819## Phase 1: Gather Data2021Run `get-skill-tmpdir <repo-name>-eval` to create a unique directory (use the repository name only — no owner prefix or `/`; e.g., `flask` for `pallets/flask`), then clone the repo into it. Launch **parallel subagents** to collect data. All subagents work from the cloned repo.2223Before launching subagents, fetch repo metadata with `gh`:2425```bash26gh repo view <owner/repo> --json name,description,createdAt,updatedAt,pushedAt,stargazerCount,forkCount,issues,pullRequests,licenseInfo,primaryLanguage,languages,defaultBranchRef,isArchived,isFork27```2829### Subagent 1: Project History & Maintenance (`subagent_type: standard-worker`)3031Run git commands to assess project health over time:3233- **Age**: first and most recent commit dates34- **Commit count**: total commits35- **Commit frequency**: commits per month over the project's lifetime — look for sustained activity vs. bursts and abandonment36- **Release cadence**: `git tag` — how many releases, how often, is semantic versioning used?37- **Recent activity**: commits in last 3 months — is this actively maintained or dormant?38- **Contributors**: `git shortlog -sne --all` — count of contributors, concentration of commits (bus factor)39- **Bot commits**: look for dependabot, renovate, semantic-release-bot, AI agents (jules, copilot, devin) — what proportion of commits are automated or AI-generated?4041### Subagent 2: Test Coverage & CI (`subagent_type: standard-worker`)4243- **Test files**: find test directories and files, count them relative to source files44- **Test framework**: identify what's used (jest, pytest, mocha, go test, etc.)45- **Coverage configuration**: look for coverage settings in config files (jest.config, pytest.ini, .coveragerc, nyc config)46- **Coverage reports**: check if coverage thresholds are enforced47- **CI/CD**: read workflow files (.github/workflows/, .gitlab-ci.yml, etc.) — what runs on PR/push? Is there a test matrix? Security scanning?48- **Test quality signals**: are tests just checking that functions exist, or do they test behavior with meaningful assertions and edge cases?4950### Subagent 3: Code Quality (`subagent_type: standard-worker`)5152- **File structure**: how is the project organized? Is it modular or monolithic?53- **Largest files**: identify files over 400 lines — are they god files or reasonably large?54- **Language & type safety**: TypeScript vs JavaScript? Type annotations in Python? Strong typing in general?55- **Linting**: is a linter configured (eslint, ruff, golangci-lint)? Is it enforced in CI?56- **Dependencies**: read package manifest — how many dependencies? Are they well-known/maintained or obscure?57- **Code smells**: scan the main source files for:58 - Duplicated patterns (copy-paste code)59 - Deep nesting60 - Overly long functions61 - Broad exception catches62 - Hardcoded values63 - No-op or dead code64- **Documentation**: README quality, inline docs, API documentation65- **Security basics**: secrets in code? Input validation? Dependency audit results?6667### Subagent 4: API & Design (`subagent_type: standard-worker`)6869- **Public API surface**: what does the user actually interact with? Is it clean and well-defined?70- **Error handling**: how does the project handle and communicate errors?71- **Configuration**: how is the project configured? Environment variables, config files, CLI flags?72- **Extensibility**: is there a plugin system, hooks, or clean extension points?73- **Breaking change history**: scan changelogs or release notes for breaking changes — how often do they happen?7475## Phase 2: Synthesize7677Combine subagent findings into a structured assessment. Don't just dump data — interpret it.7879### Health Signals Matrix8081Evaluate each dimension on a simple scale: **Strong / Adequate / Weak / Missing**8283| Dimension | Assessment | Evidence |84|-----------|-----------|----------|85| Maintenance | Active / Sporadic / Dormant / Abandoned | commit frequency, last activity, open issues response time |86| Test Coverage | Comprehensive / Partial / Minimal / None | test file count, coverage config, CI enforcement |87| Code Quality | Clean / Acceptable / Rough / Poor | file sizes, structure, linting, type safety |88| Documentation | Thorough / Adequate / Sparse / None | README depth, API docs, examples |89| Community | Growing / Stable / Stagnant / Solo | contributors, stars, forks, issue/PR activity |90| Bus Factor | Healthy (3+) / Risky (2) / Critical (1) | commit distribution across contributors |91| Security | Proactive / Basic / Reactive / None | audit in CI, dependency scanning, input validation |9293### Red Flags9495Explicitly call out any of these if present (focus on the non-obvious ones; obvious failings like no tests or outright abandonment are already covered by the health matrix):96- Large proportion of AI-generated commits (Jules, Copilot agents)97- Bus factor of 1 with no succession plan (commits concentrated in a single contributor)98- License incompatible with user's needs99- Known security vulnerabilities in dependencies100101### Green Flags102103Also call out positives that go beyond the baseline:104- CI with test matrix across multiple runtime versions105- Coverage thresholds enforced in CI (not just coverage configured)106- Security scanning in CI107- Bus factor of 3+ with active issue triage and PR review108109## Phase 3: Present the Verdict110111Present findings conversationally, then use `AskUserQuestion` to determine next steps.112113### Report Structure114115```116## Repository Evaluation: <owner/repo>117118### Overview119<1-2 sentences: what it is, what it does>120121### Project Vitals122| Metric | Value |123|--------|-------|124| Created | <date> (<age>) |125| Last activity | <date> |126| Version | <latest tag/release> |127| Stars / Forks | <count> |128| Contributors | <count> (bus factor: <N>) |129| License | <license> |130| Language | <primary language> |131132### Health Assessment133<The health signals matrix from Phase 2>134135### Red Flags136<Bulleted list, or "None identified">137138### Green Flags139<Bulleted list>140141### Code Quality Notes142<2-4 specific observations about the code — not generic, grounded in what you read>143144### Test Coverage145<Specific findings: what's tested, what isn't, how thorough>146147### Verdict148<Clear recommendation: one of>149- **Adopt with confidence** — well-maintained, well-tested, low risk150- **Adopt with caution** — usable but has notable gaps; document what you're accepting151- **Use for reference only** — interesting ideas but not production-ready as a dependency152- **Avoid** — significant quality, maintenance, or security concerns153- **Build your own** — the problem is simple enough that wrapping the underlying API/library directly is safer than this abstraction154155<2-3 sentences explaining the recommendation>156```157158### Ask what to do159160```161AskUserQuestion:162 question: "Based on this evaluation, what would you like to do?"163 header: "Next step"164 multiSelect: false165 options:166 - label: "Adopt it"167 description: "I'll add it as a dependency — thanks for the review"168 - label: "Dig deeper"169 description: "I want to look at specific areas more closely before deciding"170 - label: "Look for alternatives"171 description: "Search for other libraries/tools that solve the same problem"172 - label: "Skip it"173 description: "Not worth it — I'll find another approach"174```175176If the user wants to **dig deeper**, ask what specifically concerns them and focus investigation there.177178If the user wants to **look for alternatives**, use `WebSearch` to find competing projects, then offer to evaluate the top 2-3 candidates with the same process (abbreviated — skip the full subagent sweep, focus on the health signals matrix for comparison).179180## Cleanup181182After the evaluation is complete, remove the cloned repo directory:183184```bash185rm -rf "<dir>"186```187188Note: `rm -rf` is intentionally not pre-approved — the user will see a permission prompt for this cleanup step.189190## Principles1911921. **Evidence over opinion** — every assessment should cite specific files, line counts, commit data, or test results. No "this looks fine" without backing it up.1932. **Context matters** — a personal utility with 20 stars and one maintainer might be perfectly fine for light scripting. A payment processing library with the same profile is a hard no. Calibrate the verdict to the user's likely use case.1943. **Red flags are not disqualifying on their own** — a single-maintainer project with excellent tests and clean code can still be a good choice. Multiple red flags compound.1954. **Be honest about alternatives** — if wrapping the underlying API directly is simpler than using this library, say so. Don't recommend a dependency just because it exists.1965. **Time is a signal** — a project that's been stable for 3 years with infrequent commits is different from one that was abandoned after 3 months. Distinguish between "mature and stable" and "dead."1976. **AI-generated code is a signal, not a verdict** — flag it because it often correlates with less thoughtful design and lower test quality, but judge the output on its own merits.198199## What This Skill Does NOT Do200201- **Audit your own codebase** — use `/mine-challenge` for that202- **Research feasibility of adopting it** — use `/mine-research` if you need to evaluate how this would integrate into your specific project203- **Security audit** — this checks for basic security hygiene (audit in CI, no secrets in code) but won't do a thorough vulnerability assessment204- **Performance benchmarking** — can flag likely performance concerns from code reading but won't run benchmarks205- **License compliance analysis** — flags the license but doesn't evaluate compatibility with your project's license