开源项目评分器
Search, evaluate, and curate GitHub open source projects with personalized scoring and deduplication.
Overview
This skill extends basic GitHub search with a structured evaluation pipeline: user preferences define scoring criteria, each project is scored across multiple dimensions, and only projects meeting the threshold are recorded — with deduplication to avoid revisiting previously rated projects.
Core Capabilities
1. Preference Management
Read references/preferences.md at the start of each session. This file contains:
- Project interest areas (or instructions to use per-query topics)
- Scoring dimensions (Innovation, Popularity, Code Quality, Maintenance)
- Dimension weights and passing threshold
- Customization rules
When the user requests changes to preferences (e.g., "add a dimension", "change the
threshold", "adjust weights"), update references/preferences.md immediately and confirm.
2. Project Search
Use scripts/search_github.js to query the GitHub API:
# Flag-based interface (recommended)
scripts/search_github.js -q "<query>" [-n max_results] [-l language] [-s sort] [--date-from YYYY-MM-DD]
# Examples:
scripts/search_github.js -q "LLM inference optimization" -n 10 -l python
scripts/search_github.js -q "web framework" -n 20 -l javascript -s stars
scripts/search_github.js -q "docker kubernetes" -n 15
Flag arguments:
| Flag | Short | Default | Description |
|------|-------|---------|-------------|
| --query | -q | (required) | Search keywords |
| --max-results | -n | 10 | Number of results to return |
| --language | -l | none | Programming language filter, e.g. python, javascript, go, rust |
| --sort | -s | stars | Sort by: stars, updated, created |
| --date-from | — | none | Filter repos pushed/updated after this date |
Parse the returned JSON. Each repository contains full_name, description, stargazers_count,
fork_count, language, updated_at, topics, and html_url.
3. Project Scoring
For each project found, perform the following evaluation:
- Read the project info (name, description, topics)
- Check deduplication: Search
references/rated_projects.mdfor the project's GitHub ID (full_name). If found, skip and note as duplicate. - Score each dimension (1-10) per the rubric in
references/preferences.md:- Innovation (创新性) — 是否提出新思路或独特解决方案
- Popularity (热度) — stars、fork数量及增长趋势
- Practicality (实用性) — 文档完善度、使用场景、能否直接采用
- Maintenance (活跃度) — 最近更新时间、Issue处理速度、社区活跃度
- Calculate weighted score using the weights from preferences
- Determine status:
- Pass: Weighted Score >= threshold (default 6.5)
- Borderline: Within 1.0 point below threshold
- Fail: Below borderline range
4. Record Keeping
For projects that pass the scoring threshold, append an entry to
references/rated_projects.md using this format:
### [SCORE] GitHub_ID - PROJECT_NAME
- **Author**: owner/repo
- **Language**: Primary language
- **Stars**: NNNNN
- **Rated**: YYYY-MM-DD
- **Link**: https://github.com/owner/repo
- **Scores**: Innovation=N Popularity=N Practicality=N Maintenance=N
- **Weighted**: N.NN
- **Keywords**: topic1, topic2
- **Summary**: One-sentence summary.
Deduplication: Before scoring any project, check references/rated_projects.md
for an existing entry with the same GitHub ID (owner/repo). If found, skip the project and inform
the user it was previously rated.
Workflow
Standard Search & Rate Workflow
- Read
references/preferences.mdto load current preferences and scoring criteria - Read
references/rated_projects.mdto load previously rated project IDs - Accept user's search topic/keywords (or use default interests from preferences)
- Run
scripts/search_github.js -q "<query>" -n <count> [-l language] - Parse JSON results, extract project entries
- For each project:
a. Extract GitHub ID from full_name
b. Check deduplication against
references/rated_projects.mdc. If duplicate, skip and note d. If new, score across all dimensions e. Calculate weighted score f. Determine pass/borderline/fail status - Present results to the user in a structured table:
- Project name, language, stars, weighted score, dimension scores, status
- Highlight passed projects, flag borderline ones
- For passed projects, append entries to
references/rated_projects.md - Optionally provide a brief analysis of the batch results
Preference Update Workflow
When the user requests preference changes:
- Read current
references/preferences.md - Apply the requested changes
- Write updated
references/preferences.md - Confirm the changes to the user
History Review Workflow
When the user wants to review previously rated projects:
- Read
references/rated_projects.md - Present the entries, optionally filtered by keyword, language, or score range
Output Format
Present search results in a clear table (must use Chinese table headers):
| # | 项目 | 语言 | Stars | 综合分 | 创新 | 热度 | 实用 | 活跃 | 状态 | |---|------|------|-------|--------|------|------|------|------|------| | 1 | owner/repo | Python | 12.5k | 7.8 | 8 | 9 | 7 | 7 | PASS | | 2 | owner/repo2 | Go | 3.2k | 6.2 | 7 | 6 | 6 | 5 | BORDERLINE |
说明:创新=Innovation, 热度=Popularity, 实用=Practicality, 活跃=Maintenance
For each passed project, also provide a 2-3 sentence summary explaining why it passed and what makes it noteworthy.
Examples
- "帮我搜一下最近热门的 LLM 推理优化开源项目,按我的标准评分"
- "Search GitHub for Docker Kubernetes tools, score and filter the results"
- "查看我之前评过的项目"
- "把评分阈值调到 7.0"
- "给热度维度加大权重到 0.35"
- "今天有什么值得关注的 Python 开源项目吗?"
Resources
scripts/search_github.js: GitHub API search script with language and sort supportreferences/preferences.md: User preferences, scoring dimensions, weights, and thresholdreferences/rated_projects.md: Record of previously rated projects for deduplication
Scan to contact