npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

demokiller

v0.7.7

Published

AI agent production gate: kill demos and turn them into production-deliverable systems

Downloads

2,624

Readme

Demo Killer


问题

你花了三个月打磨项目,用 AI 工具加速开发,功能测试都过了,准备上线。

但你心里清楚:生产环境比 demo 严酷得多。

  • API Key 硬编码在源码里
  • 任何接口都没有输入校验
  • Webhook 签名从未验证
  • Admin 路由对所有人开放
  • CORS 全开,没有 CSP,没有 HTTPS 重定向
  • 零测试、零错误处理

你的 linter 给了 87 分。Demo Killer 给你:Launch Blocked


一条命令

npx demokiller inspect . --markdown

不用安装,不用配置。指向任何项目,直接给结论。

verdict: Launch Blocked

  DK-AI-001  blocker  检测到硬编码 API Key
    文件:    src/lib/openai.ts
    后果:    API Key 暴露在源码中,任何有仓库访问权限的人都能看到
    修复:    将 Key 移到环境变量,.env 加入 .gitignore

  DK-CORS-001  high  CORS 允许所有来源
    文件:    src/server.ts
    后果:    任何网站都可以向你的 API 发起认证请求
    修复:    限制 origins 为你的实际域名

每个发现告诉你 什么问题在哪里为什么重要怎么修


它检查什么

Demo Killer 不只是 lint — 它跑的是生产就绪审计

| 检查维度 | 发现什么 | |---------|---------| | 安全 | 硬编码密钥、SQL 注入、XSS、SSRF、命令注入、路径穿越 | | 认证 | 路由缺认证、弱会话配置、Webhook 未签名 | | 输入校验 | 未清洗的请求体、缺少参数检查、无类型安全 | | 错误处理 | 吞异常、缺 try/catch、暴露堆栈 | | 可观测性 | 无日志、无健康检查、无优雅关闭 | | 性能 | N+1 查询、缺超时、无连接池 | | Agent 安全 | Prompt 注入、未检查的工具执行、上下文泄露 | | 业务逻辑 | 支付缺幂等、无事务安全、竞态条件 | | TypeScript | strict 关闭、缺类型声明 | | 测试 | 零测试文件、无 CI | | 依赖 | 已知漏洞、未使用包、缺 lockfile | | 部署 | Docker 缺健康检查、无优雅关闭、无环境变量文档 |

Demo Killer 还会针对 26 种项目类型 跑专属规则 — Python API 和区块链合约检查的完全不同。


结果怎么看

| 判定 | 含义 | |------|------| | Launch Blocked | 有 blocker,不要上线 | | Hardening Required | 有 high 级别问题,上线需风险评估 | | Minor Issues | 有 medium 级别问题,可以上线但要跟踪 | | Production Ready | 无显著问题,可以上线 |

每个发现包含:

  • 文件和行号 — 问题在哪
  • 严重级别 — blocker / high / medium / advisory
  • 后果 — 忽略这个问题在生产环境会发生什么
  • 验收标准 — "修好了"具体长什么样

快速开始

# 全局安装
npm install -g demokiller

# 检查任何项目
demokiller inspect .

# 输出 Markdown(适合 PR 和文档)
demokiller inspect . --format markdown

# 输出 SARIF(接 GitHub Code Scanning)
demokiller inspect . --format sarif > results.sarif

# 只看 blocker
demokiller inspect . --severity blocker

# 保存基线,下次只看新增问题
demokiller inspect . --save-baseline .dk-baseline.json
demokiller recheck .

# 脚手架生成 Agent 集成文件
demokiller init .

或者完全不装:

npx demokiller inspect . --markdown

给 Agent 使用

Demo Killer 是 Agent 原生的。支持 MCP、结构化 JSON、SARIF,能直接生成 Agent 指导文件。

Claude Code

// .claude/settings.json
{
  "mcpServers": {
    "demokiller": {
      "command": "npx",
      "args": ["demokiller-mcp"]
    }
  }
}

然后跟 Claude 说:"跑一下 Demo Killer 检查,把 blocker 全部修掉。"

Cursor / Windsurf / Claude Desktop

{
  "mcpServers": {
    "demokiller": {
      "command": "npx",
      "args": ["demokiller-mcp"]
    }
  }
}

GitHub Actions

- name: Production Gate
  run: npx demokiller inspect . --format sarif > results.sarif

- name: Upload SARIF
  uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: results.sarif

Agent Skill

运行 demokiller init . 后,支持 Skill 的 Agent 会获得 /demokiller 命令 — 自动触发生产就绪检查,优先处理 blocker,生成可执行的修复计划。


支持的项目类型

Demo Killer 检测 26 种项目类型,每种都有专属深度规则。


支持的语言

Demo Killer 能分析 17 种语言,其中 16 种有专属语言规则。

完整规则覆盖 — 专属语言规则 + 路由检测 + 调用图:

| 语言 | 专属规则 | 路由检测 | 调用图 | 污点分析 | |------|---------|---------|--------|---------| | TypeScript | 通用规则 (DK-AGENT, DK-ERR, DK-PERF 等) | ✅ | ✅ | ✅ | | JavaScript | 通用规则 | ✅ | ✅ | ✅ | | Python | 7 条专属 (DK-PY-001~007) | ✅ | ✅ BFS | ✅ | | Go | 20 条专属 (DK-GO-001~020) | ✅ | ⚠️ 正则 | — | | Rust | 15 条专属 (DK-RS-001~015) | ✅ | — | — | | Java | 10 条专属 (DK-JAVA-001~010) | ✅ | — | — | | C / C++ | 10 条专属 (DK-C-001~010) | ✅ | — | — | | Kotlin | 8 条专属 (DK-KT-001~008) | ✅ | — | — | | C# | 8 条专属 (DK-CS-001~008) | ✅ | — | — | | PHP | 8 条专属 (DK-PHP-001~008) | ✅ | — | — | | Ruby | 8 条专属 (DK-RB-001~008) | ✅ | — | — | | Swift | 6 条专属 (DK-SW-001~006) | ✅ | — | — | | Dart | 5 条专属 (DK-DART-001~005) | ✅ | — | — | | Scala | 5 条专属 (DK-SCALA-001~005) | ✅ | — | — | | Shell | 5 条专属 (DK-SHELL-001~005) | ✅ | — | — |

文件级检测 — 通过文件扩展名识别,可运行项目级规则(依赖、Docker、CI/CD 等):

| 语言 | 说明 | |------|------| | Lua | 路由检测 (Lapis) | | Zig | 路由检测 | | Vue | 通过 tree-sitter 解析 |

检测引擎说明: TypeScript/JavaScript 使用 tree-sitter AST 解析 + 完整调用图 + 污点分析。Python 使用 tree-sitter AST + BFS 调用图。Go 使用 tree-sitter AST + 正则调用图。其他语言各有 5-15 条语言专属规则(正则模式匹配)。通用规则(硬编码密钥、CORS、CSP 等)对所有检测到路由的语言均有效。


MCP Server

Demo Killer 作为 MCP 服务器运行,提供 3 个工具给 Agent:

| 工具 | 功能 | |------|------| | inspect_project | 完整审计,JSON 或 Markdown 输出 | | list_launch_blockers | 只返回 blocker 级别发现 | | generate_hardening_plan | 三阶段修复计划:blocker → 加固 → 改进 |

启动服务器:

npx demokiller-mcp

CLI 命令

| 命令 | 用途 | |------|------| | demokiller inspect . | 完整生产就绪审计 | | demokiller inspect . --format markdown | Markdown 输出,适合 PR | | demokiller inspect . --format sarif | SARIF 输出,接 GitHub Code Scanning | | demokiller inspect . --severity blocker | 只看上线阻塞项 | | demokiller inspect . --save-baseline .dk.json | 保存当前状态为基线 | | demokiller recheck . | 对比基线,只看新增问题 | | demokiller init . | 脚手架生成 Agent 集成文件 | | demokiller benchmark benchmarks/list.json | 跑 benchmark 套件 |


自定义规则

Demo Killer 支持通过 .demokiller/plugins/ 目录添加自定义规则。

// .demokiller/plugins/my-rules.json
[
  {
    "ruleId": "CUSTOM-NO-TODO",
    "title": "生产代码中不允许 TODO",
    "severity": "low",
    "confidence": "high",
    "patterns": ["//\\s*TODO"],
    "fileGlobs": [".ts", ".tsx", ".js", ".jsx"],
    "consequence": "TODO 注释表示未完成的工作,不应上线。",
    "acceptanceCriteria": ["上线前解决所有 TODO 注释。"]
  }
]

支持两种检测方式:

  • patterns — 正则匹配(适合简单模式)
  • detect — JavaScript 函数字符串(适合复杂逻辑,如计数、上下文判断)

详见 examples/custom-rule-example.json


vs. 其他工具

| | CodeQL | SonarQube | Semgrep | Snyk | Demo Killer | |---|---|---|---|---|---| | 目的 | 找漏洞 | 找代码坏味道 | 找模式 | 找依赖漏洞 | 找上线阻塞项 | | 输出 | "47 个中等问题" | "D 评级" | "12 个发现" | "3 个高危" | "Launch Blocked" | | 项目类型 | 通用 | 通用 | 通用 | 通用 | 26 种,类型专属规则 | | Agent 原生 | ❌ | ❌ | ❌ | ❌ | ✅ MCP, Skills, JSON, SARIF | | 结论 | 无 | 分数 | 无 | 无 | 4 级结论 | | 后果说明 | 无 | 无 | 无 | 无 | "忽略这个会怎样" | | 验收标准 | 无 | 无 | 无 | 无 | "修好了长什么样" |

CodeQL 告诉你代码有什么问题。Demo Killer 告诉你项目能不能上线。


Roadmap

  • 100+ 真实项目的系统性误报率测量
  • 逐文件分析替换内容拼接(减少跨文件误报)
  • Kotlin、C#、PHP、Ruby、Swift、Scala、Dart、Shell 专属规则 — 已完成
  • VS Code 扩展

License

MIT — 随便用。