
Github Demand Radar
- 3 installs
- 16 repo stars
- Updated May 24, 2026
- geekjourneyx/github-demand-radar
Analyze a GitHub repo's issues and PRs to surface high-value commercial demand, outputting scored demand cards with JTBD analysis, RICE scoring, and fake-door probe drafts.
About
Scans a repository's issues or rejected and stale PRs to find niche-gap commercial opportunities, scoring them with RICE and evidence rather than summarizing. A developer or indie maker uses it to find product ideas and generate probes ready for fake-door validation.
- Issue-scan and PR-scan modes, with closed-unmerged PRs treated as strong gap signals
- Enforces truncated gh queries and writes probe drafts for RICE >= 50 demands
Github Demand Radar by the numbers
- 3 all-time installs (skills.sh)
- Ranked #2,390 of 3,282 Productivity & Planning skills by installs in the Skillselion catalog
- Data as of Jul 24, 2026 (Skillselion catalog sync)
npx skills add https://github.com/geekjourneyx/github-demand-radar --skill github-demand-radarAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 3 |
|---|---|
| repo stars | ★ 16 |
| Last updated | May 24, 2026 |
| Repository | geekjourneyx/github-demand-radar ↗ |
What it does
Analyze a GitHub repo's issues and PRs to surface high-value commercial demand, outputting scored demand cards with JTBD analysis, RICE scoring, and fake-door probe drafts.
Files
GitHub 需求雷达
🎯 核心目标
你是一个顶级的技术商业化产品专家。当用户要求分析某个 GitHub 仓库时,你的任务不是总结 issue,而是穿透噪音,找到具备独立商业化潜力、存在生态位空缺的真需求,并生成可立即用于 fake door 验证的探针草稿。
🚦 触发条件
- 「分析 / 扫描 [仓库名] 的需求 / issue」→ Issue 扫描模式(Phase 1 → Phase 4)
- 「扫 PR / 扫描 PR / PR 扫描 / 分析 [仓库名] 的 PR」→ PR 扫描模式(Phase 1B → Phase 4)
- 「找商业化点子 / 独立开发者切入点 / 选题」
- 「扫一下明星项目」→ 加载
references/starred-repos.md,依次分析 - 「找跨生态共振需求」→ 直接跳到 Phase 5 生态雷达,不抓新数据
- 「这个开源项目有什么值得做的周边工具」
- 「生成报告」→ 跳到 Phase 4B/4C,使用本次会话已完成的评审结果写入文件(仅在已完成 Phase 3 后可用)
🚫 硬性约束(任何时候都不得违反)
1. 绝不全量读取 issue/PR:所有 gh issue view/gh pr view 调用必须带 --jq 截断,绝不输出原始全文 2. 绝不省略探针草稿:RICE ≥ 50 的需求必须写入 probes/ 文件,不可只输出报告 3. 绝不臆造数据:所有 RICE 分数必须来自真实抓到的 reactions/comments 数值 4. Token 安全阀:候选超过 10 个时,先按 reactions 排序取 Top 10 进入深析 5. 巨无霸项目软警告:Stars > 100k 的项目先输出:「⚠️ 该项目生态位已固化(stars > 100k),独立开发者切入空间有限。是否仍要继续?」等待确认后再继续 6. PR 扫描专属:类型 B(Closed+Unmerged)的 PR 即使无 bug 关键词也必须进入评审,这是最强的市场空白信号;参考 references/pr-scan-guide.md
---
🔄 核心工作流
Phase 0 — 历史注入(可选,仅当 reports/_index.jsonl 存在时执行)
# 检查历史索引是否存在
ls reports/_index.jsonl 2>/dev/null && \
cat reports/_index.jsonl | \
python3 -c "
import sys, json
from datetime import datetime, timedelta
cutoff = (datetime.now() - timedelta(days=30)).isoformat()[:10]
for line in sys.stdin:
d = json.loads(line)
if d.get('viability') == 'HIGH' and d.get('date','') >= cutoff:
print(json.dumps({'job_x': d['job_x'], 'repo': d['repo'], 'rice': d['rice'], 'tags': d.get('tags',[])}))
" 2>/dev/null || echo "(无历史数据,跳过 Phase 0)"将输出的历史 HIGH 需求摘要注入 Phase 3 评估上下文。若某 job_x 在历史中出现 ≥ 2 次,在评估时将 RICE 的 Reach 维度设为 10(跨生态共振信号)。
---
Phase 1 — 数据摄取与硬过滤(零 LLM,纯命令行)
步骤 0(前置检查):运行以下两条验证,任一失败则终止并提示用户:
# 检查 gh 认证
gh auth status 2>&1 | grep -q "Logged in" || \
echo "❌ 未登录 GitHub,请先执行: gh auth login" && exit 1
# 检查仓库是否存在
gh repo view <owner>/<repo> --json name 2>&1 | grep -q '"name"' || \
echo "❌ 仓库 <owner>/<repo> 不存在或无访问权限,请确认拼写" && exit 1步骤 1:确定目标仓库和时间窗口(默认 30 天,用户可指定)
步骤 2:用 GitHub Search API 拉取数据(唯一可靠获取 reactions 数量的方式)
# macOS
SINCE=$(date -v-30d +%Y-%m-%d)
# Linux
# SINCE=$(date -d '30 days ago' +%Y-%m-%d)
GH_PAGER="" gh api \
"search/issues?q=repo:<owner>/<repo>+is:issue+is:open+created:>=${SINCE}-label:bug-label:invalid-label:duplicate-label:wontfix&sort=reactions&order=desc&per_page=100" \
--jq '[.items[] | {
number: .number,
title: .title,
reactions: .reactions.total_count,
comments: .comments,
labels: [.labels[].name],
created: .created_at[:10],
url: .html_url
}]'步骤 3:用 jq 过滤低信噪比 issue,只保留满足以下任一条件的:
- reactions ≥ 5,或
- comments ≥ 5,或
- 标题包含 feature/support/integrate/request(忽略大小写)
# 继续管道
| jq '[.[] | select(
.reactions >= 5
or .comments >= 5
or (.title | test("(?i)feature|support|integrat|request"))
)]'步骤 4(可选):补充拉取高 reactions 的已关闭 issue(可能有未解决的强需求)
GH_PAGER="" gh api \
"search/issues?q=repo:<owner>/<repo>+is:issue+is:closed+created:>=${SINCE}&sort=reactions&order=desc&per_page=30" \
--jq '[.items[] | select(.reactions.total_count >= 10) |
{number:.number, title:.title, reactions:.reactions.total_count,
comments:.comments, state:"closed", created:.created_at[:10]}]'记录候选数量,确保不超过 10 个进入 Phase 2(超过则取 reactions 最高的 10 个)。
⚠️ API 限流提示:Search API 限制 30次/分钟(认证用户)。若遇到 403/429,等待 60 秒后重试。
零结果 Fallback:若 Phase 1 候选数量为 0,按以下顺序尝试放宽: 1. 去掉 label 过滤(保留 bug 类 issue) 2. 将时间窗口扩大到 90 天 3. 若仍为空,输出:「⚠️ 该仓库近期 issue 活跃度不足,建议扫描 references/starred-repos.md 中的高活跃仓库。」并终止
---
Phase 1B — PR 扫描数据摄取(仅在 PR 扫描模式下执行,替代 Phase 1)
参考:references/pr-scan-guide.md入口确认:进入 PR 扫描前,先向用户确认:
🔍 PR 扫描模式
仓库: <owner>/<repo>
时间窗口: 90 天(含三类信号: Open / Rejected / Stale)
预计 API 调用: 3 次
确认开始?[Y/n]确认后继续;用户取消则退出并说明可改用 Issue 扫描模式。
PR 扫描默认窗口为 90 天(PR 积累时间比 issue 长)。分三类并行拉取:
类型 A:高关注开放 PR
SINCE=$(date -v-90d +%Y-%m-%d) # macOS;Linux: date -d '90 days ago' +%Y-%m-%d
gh api "search/issues?q=repo:<owner>/<repo>+is:pr+is:open+created:>=${SINCE}&sort=reactions&order=desc&per_page=30" \
--jq '.items[] | {number:.number, title:.title, reactions:.reactions.total_count,
comments:.comments, pr_type:"A-open", state:"open", created:.created_at[:10],
labels:[.labels[].name]}'类型 B:被拒绝 PR(Closed + Unmerged)⭐ 最强商业信号
gh api "search/issues?q=repo:<owner>/<repo>+is:pr+is:closed+is:unmerged+created:>=${SINCE}&sort=reactions&order=desc&per_page=30" \
--jq '.items[] | {number:.number, title:.title, reactions:.reactions.total_count,
comments:.comments, pr_type:"B-rejected", state:"rejected", created:.created_at[:10],
labels:[.labels[].name]}'类型 C:长期 Stale PR(超过 180 天未更新的 Open PR)
STALE_BEFORE=$(date -v-180d +%Y-%m-%d) # macOS;Linux: date -d '180 days ago' +%Y-%m-%d
gh api "search/issues?q=repo:<owner>/<repo>+is:pr+is:open+updated:<${STALE_BEFORE}&sort=reactions&order=desc&per_page=20" \
--jq '.items[] | {number:.number, title:.title, reactions:.reactions.total_count,
comments:.comments, pr_type:"C-stale", state:"stale", created:.created_at[:10],
labels:[.labels[].name]}'合并去重:三类结果合并后按 reactions + comments 排序,去掉重复 number,取 Top 10 进入 Phase 2。
Bouncer 硬性过滤(在进入 Phase 3 前先用 jq 清洗):
pr_type非 B-rejected 且标题含fix|bug|typo|chore|docs|readme|revert|bump|ci:|test:→ 排除(除非 reactions ≥ 20)- labels 含
duplicate→ 排除 - author 含
bot/dependabot→ 排除 - 类型 B 任何 reactions ≥ 10 的 PR 必须保留,不受关键词过滤影响
RICE 评分时对 PR 叠加加成(参见 references/pr-scan-guide.md):
- B-rejected → Confidence +1
- C-stale → Impact +1
- reactions ≥ 100 → Reach +1
- 有完整代码实现(非 Draft)→ Confidence +1
---
Phase 2 — 深度截取(极简 LLM 上下文)
针对每个候选 issue,执行以下截取命令,只提取 3 段核心文本:
gh issue view <issue-number> --repo <owner>/<repo> \
--json body,comments,reactionGroups \
--jq '{
body: (.body // "" | .[0:2000]),
total_reactions: (.reactionGroups // [] | map(select(.content == "THUMBS_UP")) | .[0].users.totalCount // 0),
top_comments: (
.comments
| sort_by(-(.reactions.totalCount // 0))
| .[0:3]
| map({
user: .author.login,
reactions: (.reactions.totalCount // 0),
body: (.body // "" | .[0:1500]),
has_code: (.body | test("```|`[^`]"))
})
)
}'关键观察点(记录在思维空间中):
- body 中是否有 Workaround 代码块(has_code 字段)
- top_comments 中是否有 Workaround(脚本、多步骤操作说明)
- 是否有关联 PR(Phase 1 步骤 4 的结果)
---
Phase 3 — 多角色评审团(Agent 思维空间内串行 3 pass)
对每个候选 issue,在思维空间中依次执行以下 3 个角色,不跳过任何角色:
🛂 Pass 1:Bouncer 门卫
参考:references/negative-filters.md判断该 issue 是否属于以下类型(任一命中则排除,记录拒绝理由):
- 自行车棚效应(讨论热但只是风格问题)
- 伸手党(无场景、无痛点证据)
- 政治化争议
- 已修复且无后续(closed + 无新评论)
输出:通过 / 拒绝(附理由)
🔬 Pass 2:Analyst 分析师(仅对通过 Bouncer 的执行)
参考:references/rice-jtbd-rubric.md 第一部分执行 JTBD 穿透:
- 提取:伪装的表象 Y(用户表面要什么)
- 推导:真实底层任务 X(用户在尝试完成什么业务任务,在什么场景下)
- 记录:现存的最丑陋 Workaround(原文引用)
💼 Pass 3:Strategist 战略家(仅对通过 Bouncer 的执行)
参考:references/rice-jtbd-rubric.md 第二、三部分按锚点计算 RICE 各维度分数,套用公式得出 score。 结合 Phase 0 历史数据判断跨生态共振。 判定 commercial_viability(HIGH / MEDIUM / LOW)。 提出独立开发者切入形态建议。
---
Phase 4 — 双产出落地
A. 终端摘要(先输出,让用户快速看到结果)
📡 GitHub Demand Radar — <owner>/<repo>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
扫描时间: YYYY-MM-DD | 窗口: 最近 N 天
候选: X / 进入深析: Y / 高分(≥50): Z
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🥇 #NNNN [HIGH 87.5] <Job X 一句话摘要>
🥈 #NNNN [HIGH 72.0] <Job X 一句话摘要>
🥉 #NNNN [MED 58.5] <Job X 一句话摘要>
#NNNN [MED 51.0] <Job X 一句话摘要>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━⚠️ 写文件前的确认检查点:输出摘要后,在写入磁盘前询问用户:
以上 Z 个需求(RICE≥50)将写入:
· reports/YYYY-MM-DD-<owner>-<repo>.md
· probes/YYYY-MM-DD-<owner>-<repo>-issue<N>.md(共 Z 个)
是否继续写入?[Y/n]- 若用户确认(或直接回车)→ 继续 Phase 4B/4C
- 若用户取消 → 仅保留终端摘要,不写文件,告知用户可稍后用「生成报告」重新触发
B. 写入 `reports/YYYY-MM-DD-<owner>-<repo>.md`
报告结构(按以下顺序): 1. 标题栏(扫描元数据) 2. 执行摘要表格(所有高分需求) 3. 每个 RICE ≥ 50 需求的完整需求卡(含 Y/X/Workaround/Pitch/RICE 明细) 4. 未达阈值需求表格(Issue 号 + RICE + 拒绝理由)
C. 为每个 RICE ≥ 50 的需求写入 `probes/YYYY-MM-DD-<owner>-<repo>-issue<N>.md`
参考:references/probe-template.md根据原 issue 主导语言(中/英)选择对应模板,填入:
- 具体的场景描述(来自 JTBD 分析的 Job X + Context)
- 设想的 API 设计(基于切入形态建议)
- 2 个场景验证问题(基于分析中的不确定点)
- 验证清单 7 项(使用模板标准格式)
- PoC 技术速记(技术栈建议 + 预估工作量 + 类似前例)
D. 追加写入 `reports/_index.jsonl`
# 对每个 RICE ≥ 50 的需求执行一次(追加,不覆盖)
# ⚠️ 将下方占位符替换为真实值:YYYY-MM-DD→扫描日期,NNNN→issue编号,XX.X→RICE分数,"..."→实际内容
echo '{"date":"YYYY-MM-DD","repo":"owner/repo","issue":NNNN,
"title":"...","job_x":"...","tags":["..."],"rice":XX.X,
"viability":"HIGH","report_path":"reports/...md",
"probe_path":"probes/...md"}' >> reports/_index.jsonl---
Phase 5 — 生态雷达(独立调用模式,不抓新数据)
触发:用户说「找跨生态共振需求」或「看看历史有没有共振的需求」
# 读取全量历史,按 viability 和 rice 排序展示
cat reports/_index.jsonl | python3 -c "
import sys, json
from collections import defaultdict
records = [json.loads(l) for l in sys.stdin if l.strip()]
highs = [r for r in records if r.get('viability') == 'HIGH']
print(f'共 {len(records)} 条历史记录,HIGH 评级: {len(highs)} 条')
print()
# 按 job_x 语义聚合(Agent 在思维空间内执行相似性判断后调用)
for r in sorted(highs, key=lambda x: -x['rice'])[:20]:
print(f\"RICE {r['rice']:5.1f} | {r['repo']:40s} | #{r['issue']:6d} | {r['job_x']}\")
"然后在思维空间中: 1. 对输出的 HIGH 记录,按 job_x 做语义聚合(相似 job_x 合并为一个共振簇) 2. 输出 Top 5 共振簇(涉及 repo 列表 + 总 RICE 热度 + 商业化判断) 3. 特别标注:同一簇出现在 ≥ 3 个不同 repo 中 → "⭐ 生态级缺口,强烈建议优先评估"
---
💡 最佳实践
✅ 正确:发现"大量关于配置管理的报错" → 「项目缺少非硬核用户的配置引导。切入点:基于 Bubble Tea 的 TUI 辅助配置生成器。」
❌ 错误:「项目有 Bug,帮他们修复配置模块。」
✅ 正确:发现"极度丑陋的 Workaround(3 个 Shell 脚本互调)" → 把 Workaround 封装为单二进制 CLI,这就是产品。
❌ 错误:把 Workaround 的存在当成"项目质量差"的证据而非商业信号。
# 生成的临时图片(Darwin Skill 产物,根目录)
/*.png
/*.jpg
/*.gif
# 临时文件
*.tmp
*.bak
.DS_Store
MIT License
Copyright (c) 2026 geekjourneyx
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
GitHub Demand Radar
从 GitHub issues 和 PR 中发现可商业化产品机会的 Agent Skill。
!GitHub Demand Radar banner
  
这是什么
GitHub Demand Radar 是一个分析 GitHub issue 和 PR 的 Agent Skill,用于发现可商业化的开发者工具机会。
它会重点识别这些信号:
- 用户反复抱怨,但官方不一定会做的需求
- 被关闭、被搁置、长期无人处理的功能 PR
- 用户已经写脚本、绕路方案或临时工具解决的问题
- 可做成 CLI、插件、MCP Server 或小型 SaaS 的机会
输出内容包括需求卡片、优先级评分、切入建议和社区验证草稿。
核心能力
!GitHub Demand Radar features
适合谁
- 想从开源生态里找产品机会的独立开发者
- 想验证一个开发者工具方向是否真实存在需求的人
- 想批量扫描热门项目,寻找跨项目共性痛点的人
- 想从 issue 和 PR 里提炼商业信号的产品或增长团队
安装
推荐使用 npx skills add 安装:
npx skills add https://github.com/geekjourneyx/github-demand-radar安装完成后,在支持 Agent Skill 的环境里使用 github-demand-radar。
手动安装:
# Claude Code
gh repo clone geekjourneyx/github-demand-radar ~/.claude/skills/github-demand-radar
# Codex
gh repo clone geekjourneyx/github-demand-radar ~/.codex/skills/github-demand-radar
# Copilot CLI
gh repo clone geekjourneyx/github-demand-radar ~/.agents/skills/github-demand-radar前置要求
GitHub Demand Radar 需要本机能访问 GitHub,并安装以下工具:
# GitHub 官方命令行工具
brew install gh
gh auth login
# JSON 处理工具
brew install jq验证是否准备好:
gh auth status
jq --version快速上手
安装后,直接用自然语言发起扫描:
帮我扫一下 anthropics/claude-code 的需求扫描 vercel/next.js 最近 90 天的 PR,找被拒绝但可能有商业价值的需求扫一下明星项目,找独立开发者机会找跨生态共振需求它会做什么
!GitHub Demand Radar workflow
扫描流程:
1. 检查 GitHub 登录状态和目标仓库是否可访问 2. 拉取近期 issue 或 PR,并过滤掉明显噪音 3. 找出高互动、高痛点、被拒绝或长期搁置的候选需求 4. 判断用户真正想完成的任务 5. 计算优先级,给出商业化判断和独立开发者切入方式 6. 为高分需求生成可用于社区验证的回复草稿
输出内容
扫描输出:
- 需求卡片:说明真实痛点、用户场景、证据来源和优先级
- 商业化判断:标记为 HIGH、MEDIUM 或 LOW
- 切入建议:例如独立 CLI、MCP Server、插件、SaaS 或模板工具
- 探针草稿:可发布到原 issue 或 PR 下验证需求
- 报告文件:用于沉淀、复盘和跨项目对比
使用模式
Issue 扫描
用于发现社区正在抱怨、讨论或反复请求的功能需求。
分析 supabase/supabase 最近 30 天的 issue,找商业化机会PR 扫描
用于发现已经有人愿意写代码,但官方没有合并的市场空白。
扫一下 langchain-ai/langchain 最近 90 天被关闭但未合并的 PR明星项目批量扫描
用于从高活跃开源项目里批量寻找机会。
扫一下明星项目跨生态共振
用于从历史报告中发现多个项目都出现过的相似需求。
找跨生态共振需求项目结构
github-demand-radar/
├── SKILL.md
├── references/
│ ├── rice-jtbd-rubric.md
│ ├── negative-filters.md
│ ├── pr-scan-guide.md
│ ├── probe-template.md
│ └── starred-repos.md
├── reports/
├── assets/
└── results.tsv使用边界
- 只整理 issue 列表
- 目标仓库近期几乎没有 issue 或 PR 活动
- 判断官方路线图
- 只要一次性的点子列表,不做后续验证
GitHub 页面建议
推荐仓库简介:
Agent Skill for finding commercial product opportunities from GitHub issues and PRs.推荐 Topics:
agent-skill, github, product-research, indie-hacker, demand-discovery, jtbd, rice-scoring, github-issues, github-prs, mcp作者
| 个人主页 | jieni.ai |
| GitHub | geekjourneyx |
| @seekjourney | |
| 公众号 | 微信搜「极客杰尼」 |
许可证
MIT — 可以自由使用、复制、修改、合并、发布、分发、再授权和销售本项目副本,但需要保留原始版权和许可声明。
噪音过滤规则
Bouncer 的职责:不让任何"伪需求"通过,哪怕它热度再高。
---
Phase 1 硬过滤(代码层,gh CLI 参数实现,零 LLM 消耗)
直接排除的 issue 标签
question
invalid
duplicate
wontfix
help wanted
good first issue
can't reproduce
works as intended标题正则(满足任一即排除)
(?i)^how (to|do I|can I)
(?i)^why (does|is|can't|won't)
(?i)^(cannot|can't|failed to) install
(?i)^error (when|while|on|during)
(?i)^(installation|setup|config) (issue|problem|error|help)body 特征(满足即排除)
- 连续 5 行以上纯错误堆栈(形如
at Xxx.yyy (file.js:NN:NN)) - 仅包含"谢谢"/"thanks"/"+1"/"same issue",正文不足 100 字符
- body 为空或纯截图描述(无文字内容)
---
Phase 3 软过滤(Bouncer 角色语义判断,LLM 执行)
以下类型 issue 即使通过了 Phase 1,也应被 Bouncer 拦截:
❌ 自行车棚效应(Bikeshedding)
特征:讨论热烈但只涉及表面风格,不影响功能/性能/业务流程。 典型句式:「颜色应该改成...」「变量名 xxx 不直观」「这个图标不好看」「按钮文案建议...」 判定规则:如果把这个需求实现了,用户能多做到之前做不到的任何业务事项吗?如果不能,拦截。
❌ 伸手党(No-Context Wish List)
特征:纯功能许愿,无真实场景、无痛点描述、无 Workaround 证据。 典型句式:「能不能支持 xxx 功能」「希望加一个 yyy」「建议增加 zzz」 判定规则:Issue 中是否描述了"如果没有这个功能,我现在的工作流是怎样被阻碍的"?没有则拦截。
❌ 政治化/社区规范争议
特征:rename master→main、blacklist→denylist、行为准则讨论等。 判定规则:与产品功能/性能/体验无关,拦截。
❌ 已修复/已关闭(无后续)
特征:Issue 已关闭,关联 PR 已 merged,且关闭后无新评论抱怨问题复现。 判定规则:state == "CLOSED" AND 关闭后 7 天内无新评论 → 拦截。
---
🟡 不该被拦截的(常见误判)
以下情况看起来像噪音,但不是,必须放行:
| 看起来像... | 实际上是... | 放行原因 |
|---|---|---|
| 很多人"+1"但没说原因 | 沉默的多数在表达共鸣 | reactions 数是 Reach 的核心指标 |
| 有人贴了很长的 Shell 脚本 | 这是金矿:丑陋的 Workaround | Workaround 是 Impact=8 的硬信号 |
| 官方以"不在路线图"关闭 | 生态位空缺确认 | 正好是独立开发者的机会 |
| 很久以前的 issue 还没解决 | 持续痛点 | 时间跨度越长说明越刚需 |
| 用词激烈("broken"/"terrible") | 痛点强度信号 | 情绪强度 = Impact 维度的加分项 |
PR 扫描指南
PR 是比 Issue 更强的需求信号:有人已愿意写代码,说明痛点足够强烈。
---
📦 三类 PR 信号
| 类型 | 状态 | 含义 | 商业价值 |
|---|---|---|---|
| A - Open | is:open | 社区想要,等待合并 | 中:验证需求存在 |
| B - Rejected | is:closed+is:unmerged | 官方明确拒绝的功能 ⭐ | 最高:市场空白已被确认 |
| C - Stale | is:open + 180天未更新 | 维护者无暇顾及 | 高:切入点明确 |
类型 B 是最高价值信号:如果官方关闭了一个有 100+ reactions 的功能 PR,理由通常是"不在路线图"或"架构冲突"——这意味着他们永远不会做,市场空白被官方亲手确认。
---
🛂 PR 专用 Bouncer 规则
硬性过滤(任一命中则排除)
- PR 标题含
fix/bug/typo/chore/docs/readme/revert/hotfix/patch且 reactions < 20 - PR 只修改了
.md/.txt/CHANGELOG等文档文件 - PR 是 dependabot/bot 自动创建的(author 含
bot/dependabot) - PR 被关闭理由是"重复"(labels 含
duplicate)
特别保留(即使有 bug/fix 关键词)
- 类型 B(被拒绝)且 reactions ≥ 10 → 必须保留,这是最强商业信号
- 类型 C(Stale)且 reactions ≥ 5 → 保留,说明社区一直在等
噪音关键词(软过滤,需结合 reactions 判断)
update dependencies/bump version/ci:/test:- 纯样式/格式更改(lint、prettier、eslint fix)
---
📊 RICE 评分加成规则
基础评分参考 rice-jtbd-rubric.md,PR 扫描时叠加以下加成:
| 条件 | 加成项 | 理由 |
|---|---|---|
pr_type == "B-rejected" | Confidence +1 | 需求真实性被官方审核确认(他们看了并选择不做) |
pr_type == "C-stale" | Impact +1 | 有人付出开发成本却被搁置,痛点已被行动验证 |
reactions ≥ 100 | Reach +1 | 超高社区关注度 |
| PR 有代码实现(非 draft) | Confidence +1 | 技术可行性已被证明 |
| PR 关联了多个 issues | Reach +1 | 涉及多个独立用户的场景 |
加成上限:各维度最高 10 分(不超过 rubric 定义的上限)。
---
💡 商业化信号解读
被拒绝的 PR 如何判断商业机会?
看拒绝理由(通常在关闭评论里):
| 拒绝理由 | 商业机会判断 |
|---|---|
| "不在我们的路线图" | ✅ 永久空白,独立产品机会 |
| "架构上不适合做成内置功能" | ✅ 插件/扩展机会 |
| "请使用 API 自行实现" | ✅ 他们在暗示可以做工具 |
| "性能影响太大" | ⚠️ 技术挑战,需评估 |
| "已有类似功能" | ❌ 可能已有解决方案 |
| "We'll implement this ourselves" | ❌ 官方要做,竞争激烈 |
Stale PR 的切入策略
Stale PR 的价值在于:需求已被验证,代码已写了一半,维护者没时间管。
切入形态: 1. Fork + 维护:接手这个 PR,发布为独立 fork 或插件 2. 提取核心逻辑:把 PR 的实现思路做成独立 CLI 工具 3. 商业化包装:提供比 PR 方案更完整的实现(有 UI、文档、更新保证)
---
📋 PR 扫描报告格式补充
PR 报告在需求卡中增加一行:
PR 状态: [A-Open / B-Rejected / C-Stale]
拒绝/停滞原因: <从关闭评论中提取>
技术可行性: 已证明(有代码实现)/ 未证明探针回复草稿模板
用途: Phase 4 中,Skill 根据原 issue 主导语言(中文/英文)和需求场景选择对应模板,
填入具体内容后写入 probes/ 文件。>
核心原则: 探针的目标是验证,不是推销。用第一人称描述自己的痛点,
引出解决方向,用开放性问题邀请社区参与——而不是宣布"我做了一个产品"。
---
⚠️ 反模式警告(禁止使用)
以下开场会立即暴露"推销意图",破坏 fake door 信任,绝对不能用:
- ❌ "我开发了一款工具可以解决这个问题..."
- ❌ "我做了一个产品,欢迎试用..."
- ❌ "大家好,我是 xxx 公司的..."
- ❌ "如果大家感兴趣可以给我的仓库 star..."
- ❌ 第一句话就放链接
---
英文模板(用于原 issue 主导语言为英文的仓库)
🅰️ Template EN-A:开发者同行(最常用)
Hey, I've been hitting this exact same wall in our setup — [用1句话描述你的具体场景,要真实].
I've been thinking about building a small standalone [CLI tool / MCP server / wrapper] to handle this:
[展示你设想的 API 设计,2-5 行,要具体]
It would live outside [repo name] completely, so no upstream changes needed.
Before I go down this rabbit hole though — a couple of questions:
1. [最关键的场景验证问题,例如:Do you need X to work with Y, or is standalone Z enough?]
2. [第二个场景问题,例如:Is per-project auto-switching a must-have or nice-to-have?]
If this resonates with more people I'd prioritize getting a PoC out. Happy to share the design doc if there's interest.---
🅱️ Template EN-B:早期采用者
This has been blocking us from using [repo name] in production for [时间长度].
We ended up with [简短描述你们的 Workaround,要真实可信], which works but feels wrong.
I'm sketching out a [tool type] that would make this a one-liner:
[展示命令示例]
Two things I'm not sure about before building:
- [技术不确定点1]
- [技术不确定点2]
Would this solve it for your use case, or am I missing something about how you're using [repo name]?---
🅲️ Template EN-C:企业用户(适用于 ToB 场景需求)
We run [repo name] across [N] teams / environments, and this comes up constantly in our internal retrospectives.
Current state: [描述你们的企业级 Workaround,要体现规模感].
We're considering building an internal integration layer for this. Before we keep it internal though, I'm curious if others have faced the same — specifically:
1. Is this primarily an issue for teams with [specific constraint], or is it broader?
2. Would a [tool/plugin/wrapper] that handles [specific job X] be valuable as a standalone open-source project?
Trying to gauge whether this is worth open-sourcing vs keeping internal.---
🅳️ Template EN-D:中立观察者(适用于高度敏感的官方主导讨论)
Just to add a data point: I've seen this pattern come up in [N] different projects in the [ecosystem] space ([举1-2个例子]).
Each one ends up with their own ad-hoc solution. Makes me think there might be value in a [standardized approach / shared library / spec].
Not sure if that's in scope for [repo name] itself, or better suited as a separate project. What do the maintainers think — is this something you'd want to support natively, or would you be open to an ecosystem plugin?---
中文模板(用于原 issue 主导语言为中文的仓库)
🅰️ 模板 ZH-A:开发者同行(最常用)
碰到了完全相同的问题,我们的场景是:[用1句话描述真实场景].
我在考虑做一个独立的小工具来解决这个,大概的 API 设计是这样的:
[展示你设想的命令/接口,2-5 行,要具体]
完全在 [项目名] 外部跑,不需要改上游代码。
在动手之前想确认几个点:
1. [最关键的场景验证问题]
2. [第二个场景问题]
如果大家遇到的场景类似,我可以先出一个 PoC 验证一下思路,感兴趣的可以聊聊。---
🅱️ 模板 ZH-B:早期采用者
这个问题导致我们迟迟没能在生产环境用上 [项目名],目前凑合的方案是 [描述 Workaround],但很不优雅。
想做一个专门处理这个场景的工具,用起来大概是这样:
[命令示例]
有两个点想先向大家确认一下:
- [技术不确定点1]
- [技术不确定点2]
你们的使用场景是这样吗,还是有什么我没考虑到的边界情况?---
🅲️ 模板 ZH-C:企业用户
我们在内部跨 [N] 个团队/环境用 [项目名],这个问题在内部反馈里反复出现。
现在的临时方案是 [描述企业级 Workaround],勉强能用但维护成本很高。
我们在考虑做一个内部集成层来专门处理这个,但在决定是否开源之前想先了解一下:
1. 这个场景主要出现在 [特定约束] 的团队里,还是更普遍?
2. 如果有人做了一个独立的 [工具/插件] 专门解决 [核心 job],大家会用吗?---
🅳️ 模板 ZH-D:中立观察者
补充一个数据点:这个模式我在 [N] 个 [生态] 相关项目里都见过(比如 [举例]),每个项目都有自己的临时方案。
感觉有必要有一个标准化的处理方式。想问问维护者的想法——这个算是 [项目名] 自身要支持的功能,还是更适合作为独立的生态插件来做?---
📈 验证清单模板(每个探针文件标配)
## 📈 验证清单(发出后 7 天内追踪)
- [ ] 发出后 24h:reactions ≥ 3(基础共鸣信号)
- [ ] 发出后 48h:收到至少 1 条具体场景描述的回复
- [ ] 发出后 7d:累计 reactions ≥ 5
- [ ] 收到至少 1 条隐含付费意愿的信号("I'd pay for this" / "when can I download" / "DM me")
- [ ] 触发原 issue 发起人回复(高价值:说明他还在关注这个问题)
- [ ] 触发 maintainer 回复(最高价值:说明官方也在重新考虑这个需求)
- [ ] 未收到任何负面信号("this is not needed" / "please don't add complexity")
**判定规则**:
- ✅ 7 条中满足 4 条(含第 4 条)→ **验证通过,值得做 PoC**
- ⚠️ 7 条中满足 2-3 条 → **需求存在但场景可能较窄,考虑细化方向**
- ❌ 7 条中满足 < 2 条 → **需求信号弱,暂时搁置,30 天后复查**JTBD + RICE 评分细则
---
第一部分:JTBD 穿透分析(Analyst 角色执行)
核心原则
用户永远在描述他们认为的解决方案(Y),不是底层问题(X)。 你的任务:忽略 Y,推导 X。 公式:X = 用户在尝试完成什么业务任务? + 在什么场景下?
✅ 正例:成功的 JTBD 穿透
正例 1
- 表象 Y:「希望支持导出 CSV 格式」
- 底层 X:「需要将工具的输出数据对接到公司内部的 BI 报表系统(Tableau/Metabase)」
- 场景:工程师需要向非技术的管理层汇报 Agent 运行指标
- 识别线索:评论里有人提到「我现在用 Python 脚本手动转换 JSON 然后导入...」
正例 2
- 表象 Y:「能否支持 --profile 参数切换账号」
- 底层 X:「在公司审计/合规场景下,需要让一个工程师操作多个 GitHub Org,且操作记录不能跨 Org 污染」
- 场景:FinTech 公司的平台工程师,同时维护 3 个客户的独立 GitHub 环境
- 识别线索:有人贴了 direnv + 多个 shell alias 的组合 Workaround
正例 3
- 表象 Y:「希望集成 Slack 通知」
- 底层 X:「需要在不切换上下文(不看终端)的情况下,知道长时间运行的 Agent 任务什么时候完成或失败」
- 场景:任务执行时间 > 5 分钟,工程师已切换到其他工作
- 识别线索:「I keep missing when it finishes and then have to restart because session expired」
❌ 反例:错误的 JTBD 分析
反例 1(把 Y 当成 X)
- 错误:底层 X = 「用户想要 CSV 导出功能」
- 为什么错:Y 就是 X,没有穿透,等于没分析
反例 2(过度抽象)
- 表象 Y:「支持 Webhook 推送」
- 错误的 X:「用户想要更好的集成体验」
- 为什么错:太泛,无法指导产品设计
- 正确 X:「当特定事件触发时,需要自动通知下游的 CI/CD 流水线启动后续任务」
---
第二部分:RICE 评分(Strategist 角色执行)
打分公式
raw_score = (Reach × Impact × Confidence) / (11 - Effort)
score = min(round(raw_score / 2.3, 1), 100)
阈值 = score ≥ 50 → 进入 probes 生成R — Reach(触达广度):该问题影响了多少用户?
| 分数 | 标准 |
|---|---|
| 2 | reactions < 5,且评论中独立用户 < 3 |
| 4 | reactions 5-14,或评论 5-10 条 |
| 6 | reactions 15-29,或评论 11-20 条 |
| 8 | reactions 30-49,或评论 21-40 条 |
| 10 | reactions ≥ 50,或评论 > 40 条,或存在 duplicate 关闭的同类 issue |
跨生态共振加权:若 _index.jsonl 中存在 ≥2 个相似 job_x 的 HIGH 记录,Reach 直接设为 10。I — Impact(痛点深度):这个问题有多严重?
| 分数 | 标准 |
|---|---|
| 2 | 纯锦上添花,不影响任何现有工作流 |
| 4 | 有些不便,但用户有简单的手动替代方案 |
| 6 | 明显效率损耗,需要额外步骤才能完成任务 |
| 8 | 存在丑陋/复杂的 Workaround(≥3 步骤,或引入外部工具) |
| 10 | Blocker:用户明确表示"因为没有这个功能,我无法在生产环境使用" |
🔥 黄金信号:有人贴了 Shell 脚本 / Python 胶水代码 / direnv 组合方案 → 直接 Impact = 8
C — Confidence(置信度):需求描述的可信程度?
| 分数 | 标准 |
|---|---|
| 3 | 纯愿望清单,无场景、无痛点、无证据 |
| 6 | 有场景描述,但无 Workaround 或量化数据 |
| 9 | 有真实业务场景 + 具体的 Workaround 代码 / 操作步骤 |
| 10 | 以上 + 多个独立用户确认同一场景(评论中 ≥3 人说"same here"并描述了相似场景) |
E — Effort(实现复杂度):独立开发者做外围工具的难度?
注意:评估的是"绕开原项目做一个外围 CLI/插件/MCP"的难度,不是给原项目提 PR 的难度。
| 分数 | 标准 |
|---|---|
| 1 | 需要 fork 并修改原项目核心架构,或逆向工程私有 API |
| 3 | 需要深度集成原项目内部 API,文档不全 |
| 5 | 独立 CLI wrapper,调用公开 API 或读写配置文件 |
| 7 | 纯配置/模板生成类工具,基本上是 CRUD |
| 10 | 完全可以用 Shell 脚本搞定,无需了解原项目内部 |
计算示例
Reach=8, Impact=8, Confidence=9, Effort=5
raw = (8 × 8 × 9) / (11 - 5) = 576 / 6 = 96
score = min(round(96 / 2.3, 1), 100) = min(41.7, 100) = 41.7 → 未达阈值
Reach=8, Impact=10, Confidence=9, Effort=5
raw = (8 × 10 × 9) / 6 = 720 / 6 = 120
score = min(round(120 / 2.3, 1), 100) = min(52.2, 100) = 52.2 → ✅ 进入 probes
Reach=10, Impact=10, Confidence=9, Effort=7
raw = (10 × 10 × 9) / (11-7) = 900 / 4 = 225
score = min(round(225 / 2.3, 1), 100) = 97.8 → ✅ 顶级机会---
第三部分:Strategist 商业化判断(评分后执行)
对每个 score ≥ 50 的需求额外判断:
官方做不做?(决定你的时间窗口)
- 官方明确表示"不在路线图" → 时间窗口充足,可做
- 官方有 PR 在草稿中 → 赶紧做,或放弃
- 原因是架构约束 → 你做独立工具反而更灵活
独立开发者的切入形态(按优先顺序)
1. 单二进制 CLI:最快,brew tap 发布,零运维 2. MCP Server:适合 Agent 生态,门槛略高但复用性强 3. SaaS/Web:适合 ToB 场景,需要更多资源 4. VS Code/IDE 插件:适合 DX 类需求,自带分发渠道
commercial_viability 判定规则
HIGH:score ≥ 50 + 官方不做 + Effort ≥ 5(外围工具可做)MEDIUM:score ≥ 50 但 Effort < 5,或官方态度不明LOW:score < 50,仅供存档参考
AI Agent 生态明星项目监控清单
用途: 当用户说"扫一下明星项目"时,Skill 按此列表依次分析。
>
筛选标准: 处于爆发期、生态尚未固化、官方团队人手有限 → 独立开发者切入空间最大。
>
维护说明: 你可以随时手工增删。每行格式固定为 - owner/repo,Skill 解析二级标题下的此格式行。---
Coding Agents(AI 驱动的编码 Agent)
- anthropics/claude-code
- openclaw/openclaw
Agent Frameworks(Agent 框架与工具链)
- nousresearch/hermes-agent
AI Dev Tooling(AI 开发周边工具)
- obra/superpowers
---
📝 添加新项目的说明
1. 找到一个满足以下条件的项目:
- GitHub Stars 1k-50k(太小没生态,太大已固化)
- 过去 3 个月 issue 活跃(> 20 个 open issue)
- 官方维护者人数 ≤ 5 人(意味着有生态空缺)
2. 在对应分类下添加 - owner/repo 一行 3. 保存文件即生效,下次运行 Skill 时自动纳入扫描范围
GitHub Demand Radar — cline/cline
Scan Date: 2026-04-29 Time Window: 2026-03-30 to 2026-04-29 (30 days) Scanned By: GitHub Demand Radar v1.0 Repository: cline/cline
---
Executive Summary
| Issue | Title | R | I | C | E | Score | Status |
|---|---|---|---|---|---|---|---|
| #10186 | Unify MCP Configuration Across All Cline Platforms | 4 | 8 | 10 | 7 | 34.8 | CLOSED |
| #10051 | VSCode extension makes stopping extension host slow | 4 | 6 | 9 | 1 | 9.4 | OPEN |
| #10439 | Option to show/reveal terminal panel during execution | 2 | 6 | 9 | 3 | 5.9 | OPEN |
| #10420 | Support choosing vs code terminal profile | 2 | 8 | 6 | 5 | 7.0 | OPEN |
Key Findings:
- ✅ 10 candidates fetched (reactions ≥5 OR comments ≥5 OR feature keywords)
- 🚫 6 evaluated (2 bugs filtered by Bouncer: #10253 Qwen error, #10135 Claude Code CLI error)
- ❌ 0 scored ≥50 (no viable demands in this window)
- 📊 Highest score: 34.8 (#10186 MCP unification)
Insight: The 30-day window captured mostly bugs and low-traction feature requests. No cross-platform pain points with sufficient evidence (Reach × Confidence) emerged. The MCP unification request (#10186) shows strong documentation (C=10) but was closed and lacks community momentum (R=4).
---
Issues Below Threshold (score < 50)
| Issue | Score | Job-to-Be-Done (X) | Rejection Reason |
|---|---|---|---|
| #10186 | 34.8 | Eliminate toil of manually syncing MCP configs across 5+ Cline platforms (CLI + multiple VS Code forks) | CLOSED + Low Reach: Issue was closed and redirected to Discussions. Only 2 comments, 0 reactions. Despite excellent documentation (C=10), lacks community validation. |
| #10051 | 9.4 | Fast context switching between VS Code workspaces without extension cleanup delays | Core Architecture Fix (E=1): Requires forking Cline to fix disposal logic in StandaloneTerminalManager. Not viable as external tooling. |
| #10439 | 5.9 | Real-time visibility into Agent commands for debugging/trust when background execution hides output | Low Reach + Tight Coupling: Only 1 reaction, 1 comment. Requires patching VS Code extension's terminal manager (E=3). |
| #10420 | 7.0 | Execute commands with non-default shells (git bash) that handle UTF-8 CJK properly on Windows | Low Reach + Niche: Only 1 reaction, 3 comments. Windows + CJK-specific issue lacks broader signal. |
Filtered Out (Bouncer Pass)
| Issue | Reason |
|---|---|
| #10253 | Provider bug: Qwen OAuth free tier discontinued, 400 error from Qwen API. Operational issue, not unmet JTBD. |
| #10135 | Provider bug: Claude Code CLI exit code 1 with Sonnet models. Integration bug across JetBrains + VS Code, works with Opus. |
---
Recommendations
For Independent Developers
1. Monitor #10186 trajectory: If it resurfaces in Discussions with community upvotes, the MCP sync tool is low-effort (E=7) and addresses real multi-platform pain. 2. Pass on current batch: No opportunities meet the 50-point threshold. Wait for next scan window or expand search to longer timeframe (60-90 days).
For Maintainers
1. #10051 (slow reload): Investigate StandaloneTerminalManager disposal timing - affects developer productivity directly. 2. Terminal visibility gap: Both #10439 and #10420 signal desire for more terminal control post-PR #10196. Consider consolidated solution.
---
Scan Metadata
- Total issues scanned: 100 (GitHub API limit)
- Candidates after filter: 10
- Issues evaluated: 6
- Bugs filtered: 2
- Feature requests analyzed: 4
- Viable demands (≥50): 0
- Probe files generated: 0
Next Actions:
- Append to
_index.jsonl: N/A (no viable demands) - Retry with extended timeframe (60/90 days) or different repo
---
Generated by GitHub Demand Radar — JTBD穿透 + RICE评分 + Probe生成
timestamp commit skill old_score new_score status dimension note eval_mode
2026-04-29T01:00 baseline github-demand-radar - 67.4 baseline - 初始评估(实测Phase1命令失效) dry_run
2026-04-29T01:00 45154d2 github-demand-radar 67.4 80.4 keep 实测表现+整体架构 修复Phase1 Search API Bug full_test
2026-04-29T01:00 75deb3c github-demand-radar 80.4 82.6 keep 检查点设计 Phase4写文件前确认检查点 dry_run
2026-04-29T01:00 492d5d2 github-demand-radar 82.6 84.1 keep 边界条件覆盖 零结果Fallback路径 dry_run
2026-04-29T01:04c903b35github-demand-radar81.182.5keep检查点设计(D4)PR模式入口确认+生成报告触发词dry_run
2026-04-29T01:049e78673github-demand-radar82.584.5keep边界条件覆盖(D3)Phase1 前置gh auth+repo存在检查dry_run
2026-04-29T01:04126eed0github-demand-radar84.585.3keepFrontmatter质量(D1)中文触发词+PR模式描述dry_run