project-idea-validator

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Project Idea Validator — Discover What Already Exists Before You Build

项目创意验证工具 — 动手开发前先了解已有成果

You have access to the TinyFish CLI (
tinyfish
), a tool that runs browser automations from the terminal using natural language goals. This skill uses it to search GitHub and Dev.to in parallel, then synthesizes results into a gap analysis report.
你可以使用TinyFish CLI(
tinyfish
),这是一个通过自然语言目标在终端运行浏览器自动化的工具。本技能会用它并行搜索GitHub和Dev.to,然后将结果合成为差距分析报告。

Pre-flight Check (REQUIRED)

前置检查(必填)

Before making any TinyFish call, always run BOTH checks:
1. CLI installed?
PowerShell:
powershell
Get-Command tinyfish; tinyfish --version
bash/zsh:
bash
which tinyfish && tinyfish --version || echo "TINYFISH_CLI_NOT_INSTALLED"
If not installed, stop and tell the user:
Install the TinyFish CLI:
npm install -g @tiny-fish/cli
2. Authenticated?
powershell
tinyfish auth status
If not authenticated, stop and tell the user:
You need a TinyFish API key. Get one at: https://agent.tinyfish.ai/api-keys
Then authenticate:
Option 1 — CLI login (interactive):
tinyfish auth login
Option 2 — PowerShell (current session only):
powershell
$env:TINYFISH_API_KEY="your_api_key_here"
Option 3 — PowerShell (persist across sessions):
powershell
[System.Environment]::SetEnvironmentVariable("TINYFISH_API_KEY", "your_api_key_here", "User")
Then close and reopen PowerShell for it to take effect.
Option 4 — bash/zsh (Mac/Linux):
bash
export TINYFISH_API_KEY="your_api_key_here"
Option 5 — Claude Code settings: Add to
~/.claude/settings.local.json
:
json
{
  "env": {
    "TINYFISH_API_KEY": "your_api_key_here"
  }
}
Do NOT proceed until both checks pass.

在调用任何TinyFish命令前,务必完成以下两项检查:
1. 是否已安装CLI?
PowerShell:
powershell
Get-Command tinyfish; tinyfish --version
bash/zsh:
bash
which tinyfish && tinyfish --version || echo "TINYFISH_CLI_NOT_INSTALLED"
如果未安装,请停止操作并告知用户:
安装TinyFish CLI:
npm install -g @tiny-fish/cli
2. 是否已完成认证?
powershell
tinyfish auth status
如果未认证,请停止操作并告知用户:
你需要一个TinyFish API密钥。请前往以下地址获取:https://agent.tinyfish.ai/api-keys
然后进行认证:
选项1 — CLI登录(交互式):
tinyfish auth login
选项2 — PowerShell(仅当前会话):
powershell
$env:TINYFISH_API_KEY="your_api_key_here"
选项3 — PowerShell(跨会话持久化):
powershell
[System.Environment]::SetEnvironmentVariable("TINYFISH_API_KEY", "your_api_key_here", "User")
然后关闭并重新打开PowerShell使设置生效。
选项4 — bash/zsh(Mac/Linux):
bash
export TINYFISH_API_KEY="your_api_key_here"
选项5 — Claude Code设置: 添加至
~/.claude/settings.local.json
json
{
  "env": {
    "TINYFISH_API_KEY": "your_api_key_here"
  }
}
必须在两项检查都通过后才能继续。

What This Skill Does

本技能的功能

Given a project idea (e.g. "a CLI tool that converts Figma designs to Tailwind components"), this skill:
  1. Searches GitHub for existing repos with similar purpose, tech stack, or keywords
  2. Searches Dev.to for articles, tutorials, or project showcases covering the same problem
It then synthesizes findings into a structured gap analysis: what exists, how mature it is, and where the opportunity still lives.

给定一个项目创意(例如:"将Figma设计转换为Tailwind组件的CLI工具"),本技能会:
  1. GitHub上搜索具有相似用途、技术栈或关键词的现有仓库
  2. Dev.to上搜索涵盖同一问题的文章、教程或项目展示
随后将结果合成为结构化的差距分析:已有哪些成果、领域成熟度如何,以及仍存在哪些机会。

Core Command

核心命令

bash
tinyfish agent run --url <url> "<goal>"
bash
tinyfish agent run --url <url> "<goal>"

Flags

标志

FlagPurpose
--url <url>
Target website URL
--sync
Wait for full result (no streaming)
--async
Submit and return immediately
--pretty
Human-readable formatted output

标志用途
--url <url>
目标网站URL
--sync
等待完整结果(无流式输出)
--async
提交后立即返回
--pretty
生成人类可读的格式化输出

Step-by-Step Workflow

分步工作流程

Step 1 — Search GitHub

步骤1 — 搜索GitHub

Search for existing repositories matching the idea. Run with
--sync
since you need the full list before synthesizing.
bash
tinyfish agent run --sync --url "https://github.com/search?q=<keywords>&type=repositories&s=stars&o=desc" \
  "Extract the top 10 search results as JSON: [{\"name\": str, \"owner\": str, \"description\": str, \"stars\": str, \"url\": str, \"last_updated\": str}]"
Example for a Figma-to-Tailwind CLI idea:
bash
tinyfish agent run --sync \
  --url "https://github.com/search?q=figma+tailwind+cli&type=repositories&s=stars&o=desc" \
  "Extract the top 10 repositories as JSON: [{\"name\": str, \"owner\": str, \"description\": str, \"stars\": str, \"url\": str, \"last_updated\": str}]"

搜索与创意匹配的现有仓库。使用
--sync
标志,因为你需要完整列表才能进行结果合成。
bash
tinyfish agent run --sync --url "https://github.com/search?q=<keywords>&type=repositories&s=stars&o=desc" \
  "Extract the top 10 search results as JSON: [{\"name\": str, \"owner\": str, \"description\": str, \"stars\": str, \"url\": str, \"last_updated\": str}]"
Figma转Tailwind CLI创意的示例:
bash
tinyfish agent run --sync \
  --url "https://github.com/search?q=figma+tailwind+cli&type=repositories&s=stars&o=desc" \
  "Extract the top 10 repositories as JSON: [{\"name\": str, \"owner\": str, \"description\": str, \"stars\": str, \"url\": str, \"last_updated\": str}]"

Step 2 — Search Dev.to

步骤2 — 搜索Dev.to

Search for articles and project posts covering the same problem space. Run in parallel with Step 1 results processing.
bash
tinyfish agent run --sync --url "https://dev.to/search?q=<keywords>" \
  "Extract the top 10 articles as JSON: [{\"title\": str, \"author\": str, \"tags\": [str], \"published_at\": str, \"url\": str, \"reactions\": str}]"
Example:
bash
tinyfish agent run --sync \
  --url "https://dev.to/search?q=figma+tailwind+component+generator" \
  "Extract the top 10 articles as JSON: [{\"title\": str, \"author\": str, \"tags\": [str], \"published_at\": str, \"url\": str, \"reactions\": str}]"

搜索涵盖同一问题领域的文章和项目帖子。与步骤1的结果处理并行执行。
bash
tinyfish agent run --sync --url "https://dev.to/search?q=<keywords>" \
  "Extract the top 10 articles as JSON: [{\"title\": str, \"author\": str, \"tags\": [str], \"published_at\": str, \"url\": str, \"reactions\": str}]"
示例:
bash
tinyfish agent run --sync \
  --url "https://dev.to/search?q=figma+tailwind+component+generator" \
  "Extract the top 10 articles as JSON: [{\"title\": str, \"author\": str, \"tags\": [str], \"published_at\": str, \"url\": str, \"reactions\": str}]"

Parallel Execution

并行执行

Steps 1 and 2 are independent — run them at the same time. Do NOT wait for GitHub before starting Dev.to.
Good — Parallel calls:
bash
undefined
步骤1和步骤2相互独立——应同时运行。不要等待GitHub搜索完成后再启动Dev.to搜索。
正确做法 — 并行调用:
bash
undefined

Fire both simultaneously

同时触发两个调用

tinyfish agent run --sync --url "https://github.com/search?q=<keywords>&type=repositories&s=stars&o=desc"
"Extract top 10 repositories as JSON: [{"name": str, "owner": str, "description": str, "stars": str, "url": str, "last_updated": str}]" &
tinyfish agent run --sync --url "https://dev.to/search?q=<keywords>"
"Extract top 10 articles as JSON: [{"title": str, "author": str, "url": str, "reactions": str}]" &
wait

**Bad — Sequential calls:**
```bash
tinyfish agent run --sync --url "https://github.com/search?q=<keywords>&type=repositories&s=stars&o=desc"
"Extract top 10 repositories as JSON: [{"name": str, "owner": str, "description": str, "stars": str, "url": str, "last_updated": str}]" &
tinyfish agent run --sync --url "https://dev.to/search?q=<keywords>"
"Extract top 10 articles as JSON: [{"title": str, "author": str, "url": str, "reactions": str}]" &
wait

**错误做法 — 顺序调用:**
```bash

Don't do this — wastes time and gives the same results

请勿这样做——浪费时间且结果相同

tinyfish agent run --url "https://github.com/..." "...also search Dev.to..."

Each source is its own call. Always.

---
tinyfish agent run --url "https://github.com/..." "...also search Dev.to..."

每个数据源都需要单独调用。务必遵守此规则。

---

Step 3 — Synthesize Into a Gap Analysis

步骤3 — 合成为差距分析报告

Once both sources return results, synthesize findings into this structure:
undefined
当两个数据源都返回结果后,将发现整理为以下结构:
undefined

Project Idea Validation: <idea title>

项目创意验证:<创意标题>

What Already Exists

已有成果

  • <project/article> — <what it does, stars/reactions, last active>
  • ...
  • <项目/文章> — <功能介绍、星标/互动数、最后更新时间>
  • ...

Maturity Assessment

成熟度评估

  • GitHub: <active / abandoned / fragmented>
  • Dev.to coverage: <heavy / moderate / sparse>
  • GitHub:<活跃 / 已废弃 / 碎片化>
  • Dev.to覆盖度:<密集 / 中等 / 稀疏>

Gaps & Opportunities

差距与机会

  • <specific gap #1>
  • <specific gap #2>
  • ...
  • <具体差距1>
  • <具体差距2>
  • ...

Verdict

结论

<1–2 sentences: is the space crowded, open, or ripe for a better take?>

Use the raw JSON from both sources as input. Do not hallucinate repo names, star counts, or article titles — only use what TinyFish returned.

---
<1-2句话:该领域是拥挤、开放还是值得推出更优方案?>

以两个数据源返回的原始JSON作为输入。请勿虚构仓库名称、星标数量或文章标题——仅使用TinyFish返回的内容。

---

Keyword Strategy

关键词策略

The quality of results depends heavily on your search terms. Before running, derive 2–3 keyword variants from the idea:
IdeaPrimary keywordsVariant keywords
Figma-to-Tailwind CLI
figma tailwind cli
figma css export
,
design token tailwind
AI code review bot
ai code review github
llm pull request
,
automated code feedback
Markdown-to-Notion sync
markdown notion sync
notion import cli
,
notion api markdown
Run separate parallel calls for each variant if the first pass returns sparse results.

结果的质量很大程度上取决于搜索词。在运行搜索前,从创意中衍生2-3个关键词变体:
创意核心关键词变体关键词
Figma转Tailwind CLI
figma tailwind cli
figma css export
,
design token tailwind
AI代码审查机器人
ai code review github
llm pull request
,
automated code feedback
Markdown转Notion同步工具
markdown notion sync
notion import cli
,
notion api markdown
如果首次搜索结果稀疏,请针对每个变体分别进行并行调用。

Managing Runs

运行管理

bash
undefined
bash
undefined

List recent runs

列出最近的运行记录

tinyfish agent run list
tinyfish agent run list

Get a specific run by ID

通过ID获取特定运行记录

tinyfish agent run get <run_id>
tinyfish agent run get <run_id>

Cancel a running automation

取消正在运行的自动化任务

tinyfish agent run cancel <run_id>

---
tinyfish agent run cancel <run_id>

---

Output

输出

The CLI streams
data: {...}
SSE lines by default. The final result is the event where
type == "COMPLETE"
and
status == "COMPLETED"
— the extracted data is in the
resultJson
field. Read the raw output directly; no script-side parsing is needed.
CLI默认会流式输出
data: {...}
格式的SSE行。最终结果是
type == "COMPLETE"
status == "COMPLETED"
的事件——提取的数据位于
resultJson
字段中。直接读取原始输出即可;无需在脚本端进行解析。