Communitygithub.com

Varnan-Tech/opendirectory

对 GitHub 仓库进行开发者体验审计,从 10 个维度评分,并输出可分享的“吐槽”报告、优先级行动计划和理想 README 模板。

opendirectory 是什么?

该技能是一个面向 GitHub 仓库的开发者体验 (DX) 审计工具,专门为开源维护者和 DevTool 创始人设计,旨在优化项目在 Show HN、Product Hunt 等平台的首次亮相体验。它通过扫描仓库内容(如 README、配置文件、文档等)和可选地拉取 GitHub API 元数据,严格依照预定义的评分标准,从“首次成功时间”、“README 清晰度”、“安装简便性”、“文档深度”等 10 个维度给出 0-10 分的量化评分,并汇总出总分和等级(A-F)。 除了生成结构化的 `score.json` 评分数据外,该技能的核心产出是一份 250-500 词、语气可自定义(残酷/诚恳/温和)的“吐槽”报告 (`roast.md`),要求引用具体证据(如文件路径、行号)而非泛泛而谈。同时,它还会基于“影响/工作量”的优先级公式,生成一份包含 5-10 个具体修复步骤的行动计划 (`action-plan.md`),以及一份不超过 100 行的理想 README 模板 (`ideal-readme.md`),其中缺失的链接会使用 `<placeholder>` 占位。整个审计过程是只读的,不会修改目标仓库,并内置了多种错误处理(如仓库不可访问、无 GitHub 认证、API 限流等),确保即使在部分数据缺失时也能输出可靠的审计结果。

兼容平台✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/Varnan-Tech/opendirectory/tree/main/skills/dx-roaster

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

DX 吐槽器

对一个 GitHub 仓库的开发者体验进行吐槽。生成四个文件:roast.md、action-plan.md、ideal-readme.md、score.json。专为那些准备在 Show HN、Product Hunt 或任何“前五分钟决定成败”的场合进行产品发布的开源维护者和 DevTool 创始人打造。


关键规则(每次运行前必读)

  1. 在评分之前,先阅读所有三个参考文件。 references/scoring-rubric.md、references/roast-voice-guide.md、references/readme-template.md。评分标准不可协商——必须使用确切的 10 个维度。

  2. 每个维度都要在 0–10 分范围内评分。不能跳过。 缺失数据 = 0 分,而不是“N/A”。

  3. 吐槽必须引用具体发现。 逐字引用糟糕的代码行。引用文件路径。尽可能引用行号。永远不要写像“文档可以写得更好”这样笼统的套话。

  4. 语气很重要。 默认为 honest。根据 references/roast-voice-guide.md 切换语气。brutal 模式有趣但不针对个人。kind 模式鼓励但依然具体。

  5. 行动计划按影响力排序,而非严重程度。 使用 影响 × (1 / 工作量) 公式。一个耗时 5 分钟却能增加 10 分的修复,优先级高于一个耗时 2 小时才能增加 12 分的修复。

  6. 永远不要发明 URL。 在编写 ideal-readme.md 时,对于缺失的链接,使用 <placeholder> 语法。吐槽报告会告诉维护者自行填充。

  7. 永远不要提及维护者或贡献者的名字。 批评的是作品,而不是人。

  8. 严格输出四个文件到 dx-roast/ 目录。不要写入其他位置。不要跳过文件。


第一步:输入

必需:

  • repo — 本地路径(默认 .)或 https://github.com/owner/repo URL

可选:

参数默认值描述
tonehonestbrutal / honest / kind
output_dirdx-roast/四个输出文件的写入位置
compare_to无可选的第二个仓库 URL,用于基准比较

如果 repo 是一个 URL:使用 git clone <url> /tmp/dx-roast-<short-hash> 克隆到一个临时目录。在那里进行扫描。运行结束后删除临时目录。

如果 repo 是 . 或本地路径:在原地扫描,不要修改任何内容。


第二步:发现

读取以下文件(每个文件可能都不存在——需要记录缺失情况):

  • README.md — 完整内容、结构(标题)、代码块、图片引用、徽章 URL
  • CONTRIBUTING.md、CODE_OF_CONDUCT.md
  • .github/ISSUE_TEMPLATE/、.github/PULL_REQUEST_TEMPLATE.md、.github/CODEOWNERS
  • package.json(描述、首页、仓库、许可证、脚本)、pyproject.toml、Cargo.toml、go.mod
  • LICENSE(存在性和类型)
  • docs/ 文件夹内容(仅文件名和大小)
  • examples/ 或 samples/ 或 cookbook/ 文件夹
  • .github/workflows/*.yml(仅名称和简要的 CI 存在性检查)

如果 repo 是一个 URL,还需要通过 gh 获取:

gh api repos/<owner>/<repo> --jq '{stars: .stargazers_count, forks: .forks_count, watchers: .subscribers_count, pushed_at, description, homepage, topics, default_branch}'
gh api repos/<owner>/<repo>/commits --jq '.[0].commit.author.date' | head -1
gh api repos/<owner>/<repo>/contributors --paginate --jq '[.[] | .login] | length'

如果任何 GitHub API 调用失败,应捕获异常并继续执行。


第三步:对 10 个维度进行评分

对于 references/scoring-rubric.md 中的 10 个维度中的每一个,输出 {score: 0–10, evidence: [...]},其中 evidence 是一个包含 1–3 个短字符串的列表,说明你发现了什么。

示例:

"visual_proof": {
  "score": 4,
  "evidence": [
    "在第 89 行发现 1 张截图(位于折页下方)",
    "没有动画演示 / gif",
    "没有视频"
  ]
}

求和所有分数 → 总分数(0–100)→ 等级(根据评分标准为 A/B/C/D/F)。

保存到 dx-roast/score.json,格式必须如下:

{
  "repo": "<owner/repo 或本地路径>",
  "scanned_at": "<ISO 8601 时间戳>",
  "dimensions": {
    "time_to_first_success": { "score": 7, "evidence": ["..."] },
    "what_is_this_clarity": { "score": 5, "evidence": ["..."] },
    "visual_proof": { "score": 4, "evidence": ["..."] },
    "install_simplicity": { "score": 9, "evidence": ["..."] },
    "runnable_quick_start": { "score": 8, "evidence": ["..."] },
    "documentation_depth": { "score": 6, "evidence": ["..."] },
    "examples": { "score": 5, "evidence": ["..."] },
    "community_signals": { "score": 3, "evidence": ["..."] },
    "trust_signals": { "score": 7, "evidence": ["..."] },
    "marketing_signals": { "score": 4, "evidence": ["..."] }
  },
  "total": 58,
  "grade": "D",
  "tone": "honest"
}

第四步:撰写吐槽

阅读 references/roast-voice-guide.md。应用请求的语气。向 dx-roast/roast.md 写入 250–500 词。

必需结构:

# DX 吐槽:<仓库名>

**评分:<等级>(<总分数>/100)** · 语气:<语气>

<第一段:结论。什么做得不错 + 最大的差距是什么。>

<第二段:引用 2 个具体发现,并附上文件引用。>

<第三段:引用另外 2 个发现,并将其与维度分数联系起来。>

<第四段(可选):最后的转折或与一个知名的优秀仓库进行对比。>

<结尾段:指向 `action-plan.md` 以获取前进路线。>

每次吐槽必须至少引用 score.json 证据数组中的 3 个具体发现。


第五步:生成行动计划

为每个候选修复计算 优先级 = 影响 / 工作量(分钟)。选取前 5–10 个。按优先级降序排列。

对于每个修复,写入到 dx-roast/action-plan.md:

### N. <以祈使语气描述修复,一行>

**原因:** <一句话证明。引用该修复改进了哪个维度。>

**影响力:** +<X> 分 · **工作量:** <5 分钟 / 30 分钟 / 2 小时 / 半天>

**方法:**

1. <具体步骤 1>
2. <具体步骤 2>
3. <具体步骤 3>

<可选的代码/markdown 片段,显示确切变更>

action-plan.md 以以下内容开头:

# 行动计划 —— <仓库名>

当前等级:<等级>(<总分数>/100)
按影响力 × 工作量排列的顶级修复。请按顺序执行。

---

第六步:生成理想 README

阅读 references/readme-template.md。按照“填充规则”部分填充模板。写入 dx-roast/ideal-readme.md。

对于缺失的值,使用像 <homepage_url> 这样的占位符。长度限制:100 行。


第七步:终端摘要

向用户打印此确切格式:

DX 吐槽完成 —— 等级:<等级>(<总分数>/100)

按影响力排列的前 3 个修复:
  1. <修复 1>                                +<X> 分  · <工作量>
  2. <修复 2>                                +<X> 分  · <工作量>
  3. <修复 3>                                +<X> 分  · <工作量>

文件:
  → dx-roast/roast.md          (可分享的结论)
  → dx-roast/action-plan.md    (按优先级排列的修复)
  → dx-roast/ideal-readme.md   (目标状态)
  → dx-roast/score.json        (原始分数)

如果提供了 compare_to,则添加一行比较:

基准:<其他仓库> 得分 <X>/100(等级 <Y>)—— 差距 <delta> 分。

自我 QA(每次运行,在打印终端摘要之前)

  • score.json 中所有 10 个维度都有分数和证据
  • 总分等于各维度分数之和
  • 等级字母与根据评分标准的总分阈值匹配
  • 吐槽引用了至少 3 个来自 score.json 的证据项
  • 吐槽没有提及任何维护者/贡献者的名字
  • 行动计划有 5–10 项,按优先级降序排列
  • 理想 README 少于 100 行
  • 理想 README 对扫描中未找到的任何 URL 使用了 <placeholder>
  • 所有 4 个文件都存在于 output_dir 中
  • roast.md 或 action-plan.md 中没有 <TBD> / <TODO> 占位符

如果任何检查失败,修复并重新运行相应步骤。


错误处理

以下四种故障模式需要显式处理——绝不能让技能静默地产生部分输出而不说明原因。

情况行为
repo 不存在 / 无法克隆 / 无法读取立即退出,并提示消息 仓库不存在或无法访问:<repo>。不要写入任何输出文件。
README.md 缺失仍然运行。将 what_is_this_clarity、visual_proof、runnable_quick_start 和 marketing_signals 的分数评为接近 0。将缺失作为吐槽的开场(“没有 README 本身就是一种声明”)。
仓库是私有的且没有可用的 GitHub 认证尝试本地克隆(git clone <url>);如果失败,退出并提示 仓库是私有的且没有可用的认证。建议用户设置 GITHUB_TOKEN 或传入本地路径。
compare_to URL 失败(网络问题、404、私有等)继续运行,不进行基准比较。在吐槽报告中添加一行:注意:请求对 <compare_to> 进行基准比较,但无法获取。 从终端摘要中省略 基准: 这一行。

在第二步的元数据获取过程中,任何 GitHub API 错误(速率限制、临时 5xx 错误)都将被捕获并在 score.json 的 trust_signals.evidence 中记录为 "github 元数据不可用"。其余运行过程将继续进行。


示例

良好调用:

“吐槽一下我的仓库 https://github.com/myorg/mytool —— 语气:brutal。”

→ 技能克隆、扫描、评分,将 4 个文件写入 dx-roast/,打印摘要。对于一个典型的仓库,总运行时间 <60 秒。

良好比较:

“对当前目录进行 DX 审计。与 https://github.com/vercel/next.js 进行基准比较。”

→ 扫描两者,对当前目录进行评分,在吐槽和摘要中包含基准比较行。


这个技能不做的事情

  • 不会修改目标仓库(只读扫描)
  • 不会运行安全审计或依赖扫描
  • 不会生成营销文案(行动项是具体的,不是“重写以匹配语气”)
  • 不会生成图片或素材(仅使用占位符)
  • 不会发布到社交媒体(仅编写可分享的文本)

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

Varnan-Tech/opendirectory

Use when the user asks to generate a blog cover image, thumbnail, or article header. Automatically uses modern typography, brand logos, and Google Search grounding to create beautiful 16:9 images with Gemini 3.1 Flash Image Preview.

Varnan-Tech/opendirectory

World-class brand strategist and naming expert. Uses an interrogation-led discovery phase to extract your brand's DNA, then applies scientific naming frameworks (Phonosemantics) and automated multi-TLD domain checking.

Varnan-Tech/opendirectory

Use when the user asks to generate or update a project's CLAUDE or AGENTS context file from a codebase scan. Writes a focused file under 100 lines containing only the non-obvious build commands, conventions, and gotchas Claude Code needs.

Varnan-Tech/opendirectory

Use when the user wants to verify cold emails, enrich a lead list, or autonomously guess email addresses from a CSV using ValidEmail.co or the open-source Reacher engine.

Varnan-Tech/opendirectory

Competitive intelligence orchestrator tracking companies across 8+ platforms (GitHub, Twitter, Reddit, HN, PH, YC Jobs) with heat scores and AI briefings.

Varnan-Tech/opendirectory

Give it your product URL or description. It finds your top 5 competitors, runs three-track PR research across all of them (editorial, podcasts, communities), identifies which channels appear most frequently, looks up the journalist or host for each, and returns a tiered outreach list with story angles and ready-to-send cold pitch drafts tailored to your product. Use when asked to find PR opportunities, discover where competitors got featured, build a media outreach list, find which journalists cover my space, or get pitch templates for press coverage.

Varnan-Tech/opendirectory

Generate high-converting, deep-dive growth case studies in MDX format. Use this skill when asked to write a case study or blog post about a company's growth, tech stack, or product-led strategy. It handles the full pipeline (researching the company via Tavily, generating a 16:9 cover image, quality checking the draft, uploading assets to cloud storage, and pushing directly to the target repository).

Varnan-Tech/opendirectory

Scans your project for outdated npm, pip, Cargo, Go, or Ruby packages. Runs a CVE security audit. Fetches changelogs, summarizes breaking changes with Gemini, and opens one PR per risk group (patch, minor, major). Includes Diagnosis Mode for install conflicts. Use when asked to update dependencies, check for outdated packages, open dependency PRs, scan for package updates, audit for CVEs, or flag breaking changes in upgrades. Trigger when a user says "check for outdated packages", "update my dependencies", "open PRs for dependency updates", "scan for CVEs", or "which packages need upgrading".

Varnan-Tech/opendirectory

Generates and updates README.md and API reference docs by reading your codebase's functions, routes, types, schemas, and architecture. Uses graphify to build a knowledge graph first, then writes accurate docs from it. Use when asked to write docs, generate a README, document an API, update stale docs, create an API reference from code, add an architecture section, or document a project in any language. Trigger when a user says their docs are missing, outdated, or wants to document their codebase without writing it manually.

Varnan-Tech/opendirectory

Evaluates expired domain candidates against a target niche, scores them by topical relevance, historical activity level, and history cleanliness, then outputs a ranked shortlist with explainable reasoning and risk flags.

Varnan-Tech/opendirectory

Drafts and designs a complete HTML email newsletter from a topic or content brief. Outputs paste-ready HTML for Loops, Mailchimp, Beehiiv, Resend, or any standard email platform. Includes subject line options and plain-text fallback. Trigger when a user says "write a newsletter", "draft an email newsletter", "create an HTML email", "design an email for my subscribers", or "write a newsletter about [topic]".

Varnan-Tech/opendirectory

Takes a GitHub PR URL or the current branch and writes a plain-English explanation of what it does and why, then posts it as a PR comment. Use when asked to explain a PR, summarize a pull request, write a plain-English description of a PR, add a summary comment to a PR, or understand what a PR changes. Trigger when a user says "explain this PR", "summarize this pull request", "what does this PR do", "add a comment explaining the PR", or shares a GitHub PR URL and asks what it does.

Varnan-Tech/opendirectory

Audit how often LLMs recommend your brand vs competitors and generate a GEO action plan.

Varnan-Tech/opendirectory

Takes a competitor's public GitHub repo URL, fetches their open issues via the GitHub REST API, filters noise locally, clusters issues into 6 demand categories, computes a demand score per issue and per cluster, and outputs a ranked demand gap report with a GTM messaging brief. Use when asked to scan a competitor's GitHub issues, find what their users are begging for, turn GitHub complaints into product positioning, identify competitor feature gaps, or generate messaging from real user demand. Trigger when a user says "scan competitor issues", "what are users asking for on X repo", "find demand gaps in Y", "turn GitHub issues into messaging", or "what should I build based on competitor complaints".

Varnan-Tech/opendirectory

Find recurring confusion in your repo's GitHub Discussions, rank it by urgency, and draft the actual docs fixes and content angles — with verbatim community quotes and source links as evidence.

Varnan-Tech/opendirectory

SEO keyword research workflow for blog generation using Google Trends data. Use when writing blog posts, planning content calendars, or optimizing articles for search engines. Finds breakout keywords, builds content structure, and generates SEO-optimized blog outlines targeting tech and developer audiences.

Varnan-Tech/opendirectory

Generates a professionally designed case study PDF for B2B SaaS sales and marketing. Supports 7 page layouts, 9 style presets, 1-4 page output. Trigger when user says "create a case study", "write a customer story", "make a case study PDF", "design a success story", "turn this customer win into a PDF".

Varnan-Tech/opendirectory

Generates data visualization charts (bar, line, area, pie, doughnut, scatter, radar, treemap) as PNG using Apache ECharts v6. 1080×1080px default, 5 style presets, highlight annotations. Trigger when user says "create a chart", "visualize data", "make a bar chart", "line graph", "pie chart", "data visualization", "chart this data", "plot", "graph", or "visualize these numbers".

Varnan-Tech/opendirectory

Creates professionally designed B2B SaaS e-books in HTML + CSS, exported as print-ready PDF. 3–10 pages, 9 style presets, 11 page layout types. Trigger when user says "create an ebook", "design a lead magnet", "make a PDF guide", "build a gated content piece", "write a B2B ebook", "design a white paper", "create a nurture asset", or "make a PDF report".

Varnan-Tech/opendirectory

Fetches low-star App Store and Google Play reviews, clusters them into broken-promise patterns, and generates a ranked copy brief with positioning opportunities.

相关技能