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.4---56# Evaluate Repository78Thorough 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?"910## Arguments1112$ARGUMENTS — a GitHub URL or `owner/repo` identifier. Examples:13- `/eval-repo https://github.com/pchuri/confluence-cli`14- `/eval-repo pallets/flask`15- Empty: ask the user for the repo1617## Phase 1: Gather Data1819Run `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.2021Before launching subagents, fetch repo metadata with `gh`:2223```bash24gh repo view <owner/repo> --json name,description,createdAt,updatedAt,pushedAt,stargazerCount,forkCount,issues,pullRequests,licenseInfo,primaryLanguage,languages,defaultBranchRef,isArchived,isFork25```2627### Subagent 1: Project History & Maintenance (`subagent_type: standard-worker`)2829Run git commands to assess project health over time:3031- **Age**: first and most recent commit dates32- **Commit count**: total commits33- **Commit frequency**: commits per month over the project's lifetime — look for sustained activity vs. bursts and abandonment34- **Release cadence**: `git tag` — how many releases, how often, is semantic versioning used?35- **Recent activity**: commits in last 3 months — is this actively maintained or dormant?36- **Contributors**: `git shortlog -sne --all` — count of contributors, concentration of commits (bus factor)37- **Bot commits**: look for dependabot, renovate, semantic-release-bot, AI agents (jules, copilot, devin) — what proportion of commits are automated or AI-generated?3839### Subagent 2: Test Coverage & CI (`subagent_type: standard-worker`)4041- **Test files**: find test directories and files, count them relative to source files42- **Test framework**: identify what's used (jest, pytest, mocha, go test, etc.)43- **Coverage configuration**: look for coverage settings in config files (jest.config, pytest.ini, .coveragerc, nyc config)44- **Coverage reports**: check if coverage thresholds are enforced45- **CI/CD**: read workflow files (.github/workflows/, .gitlab-ci.yml, etc.) — what runs on PR/push? Is there a test matrix? Security scanning?46- **Test quality signals**: are tests just checking that functions exist, or do they test behavior with meaningful assertions and edge cases?4748### Subagent 3: Code Quality (`subagent_type: standard-worker`)4950- **File structure**: how is the project organized? Is it modular or monolithic?51- **Largest files**: identify files over 400 lines — are they god files or reasonably large?52- **Language & type safety**: TypeScript vs JavaScript? Type annotations in Python? Strong typing in general?53- **Linting**: is a linter configured (eslint, ruff, golangci-lint)? Is it enforced in CI?54- **Dependencies**: read package manifest — how many dependencies? Are they well-known/maintained or obscure?55- **Code smells**: scan the main source files for:56 - Duplicated patterns (copy-paste code)57 - Deep nesting58 - Overly long functions59 - Broad exception catches60 - Hardcoded values61 - No-op or dead code62- **Documentation**: README quality, inline docs, API documentation63- **Security basics**: secrets in code? Input validation? Dependency audit results?6465### Subagent 4: API & Design (`subagent_type: standard-worker`)6667- **Public API surface**: what does the user actually interact with? Is it clean and well-defined?68- **Error handling**: how does the project handle and communicate errors?69- **Configuration**: how is the project configured? Environment variables, config files, CLI flags?70- **Extensibility**: is there a plugin system, hooks, or clean extension points?71- **Breaking change history**: scan changelogs or release notes for breaking changes — how often do they happen?7273## Phase 2: Synthesize7475Combine subagent findings into a structured assessment. Don't just dump data — interpret it.7677### Health Signals Matrix7879Evaluate each dimension on a simple scale: **Strong / Adequate / Weak / Missing**8081| Dimension | Assessment | Evidence |82|-----------|-----------|----------|83| Maintenance | Active / Sporadic / Dormant / Abandoned | commit frequency, last activity, open issues response time |84| Test Coverage | Comprehensive / Partial / Minimal / None | test file count, coverage config, CI enforcement |85| Code Quality | Clean / Acceptable / Rough / Poor | file sizes, structure, linting, type safety |86| Documentation | Thorough / Adequate / Sparse / None | README depth, API docs, examples |87| Community | Growing / Stable / Stagnant / Solo | contributors, stars, forks, issue/PR activity |88| Bus Factor | Healthy (3+) / Risky (2) / Critical (1) | commit distribution across contributors |89| Security | Proactive / Basic / Reactive / None | audit in CI, dependency scanning, input validation |9091### Red Flags9293Explicitly 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):94- Large proportion of AI-generated commits (Jules, Copilot agents)95- Bus factor of 1 with no succession plan (commits concentrated in a single contributor)96- License incompatible with user's needs97- Known security vulnerabilities in dependencies9899### Green Flags100101Also call out positives that go beyond the baseline:102- CI with test matrix across multiple runtime versions103- Coverage thresholds enforced in CI (not just coverage configured)104- Security scanning in CI105- Bus factor of 3+ with active issue triage and PR review106107## Phase 3: Present the Verdict108109Present findings conversationally, then use `AskUserQuestion` to determine next steps.110111### Report Structure112113```114## Repository Evaluation: <owner/repo>115116### Overview117<1-2 sentences: what it is, what it does>118119### Project Vitals120| Metric | Value |121|--------|-------|122| Created | <date> (<age>) |123| Last activity | <date> |124| Version | <latest tag/release> |125| Stars / Forks | <count> |126| Contributors | <count> (bus factor: <N>) |127| License | <license> |128| Language | <primary language> |129130### Health Assessment131<The health signals matrix from Phase 2>132133### Red Flags134<Bulleted list, or "None identified">135136### Green Flags137<Bulleted list>138139### Code Quality Notes140<2-4 specific observations about the code — not generic, grounded in what you read>141142### Test Coverage143<Specific findings: what's tested, what isn't, how thorough>144145### Verdict146<Clear recommendation: one of>147- **Adopt with confidence** — well-maintained, well-tested, low risk148- **Adopt with caution** — usable but has notable gaps; document what you're accepting149- **Use for reference only** — interesting ideas but not production-ready as a dependency150- **Avoid** — significant quality, maintenance, or security concerns151- **Build your own** — the problem is simple enough that wrapping the underlying API/library directly is safer than this abstraction152153<2-3 sentences explaining the recommendation>154```155156### Ask what to do157158```159AskUserQuestion:160 question: "Based on this evaluation, what would you like to do?"161 header: "Next step"162 multiSelect: false163 options:164 - label: "Adopt it"165 description: "I'll add it as a dependency — thanks for the review"166 - label: "Dig deeper"167 description: "I want to look at specific areas more closely before deciding"168 - label: "Look for alternatives"169 description: "Search for other libraries/tools that solve the same problem"170 - label: "Skip it"171 description: "Not worth it — I'll find another approach"172```173174If the user wants to **dig deeper**, ask what specifically concerns them and focus investigation there.175176If 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).177178## Cleanup179180After the evaluation is complete, remove the cloned repo directory:181182```bash183rm -rf "<dir>"184```185186Note: `rm -rf` is intentionally not pre-approved — the user will see a permission prompt for this cleanup step.187188## Principles1891901. **Evidence over opinion** — every assessment should cite specific files, line counts, commit data, or test results. No "this looks fine" without backing it up.1912. **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.1923. **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.1934. **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.1945. **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."1956. **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.196197## What This Skill Does NOT Do198199- **Audit your own codebase** — use `/mine-challenge` for that200- **Research feasibility of adopting it** — use `/mine-research` if you need to evaluate how this would integrate into your specific project201- **Security audit** — this checks for basic security hygiene (audit in CI, no secrets in code) but won't do a thorough vulnerability assessment202- **Performance benchmarking** — can flag likely performance concerns from code reading but won't run benchmarks203- **License compliance analysis** — flags the license but doesn't evaluate compatibility with your project's license