DEVELOPER TOOLS/开发者工具·CODING-AGENT
trailhq/Graft
Turbocharge Claude Code, Cursor, Codex, Gemini & every coding agent: faster, cheaper, with contextual understanding specific to your codebase.
怎么装:Install: npm install -g @nanonets/graft # install the CLI, once
02 / 现在的位置02 / Why now
首次发现FIRST SEEN
03 OCT 202603 OCT 2026
增长GROWTH
+0.3%+0.3%
9.5k → 9.6k stars · 2 个快照9.5k → 9.6k stars · 2 snapshots
状态STATUS
持续活跃Active
03 / 它能帮你做什么03 / What it helps you do
04 / 安装04 / Install
$ Node 用户的安装方式。The install route for Node users.
$ README 里给出的安装方式。The installation method given in the README.
两种装法选一个即可 —— 上面那条给命令行用户,下面那条给写代码的用户。Pick one of the two — the first is for command-line users, the second for people writing code.
05 / 限制与风险05 / Limits and risk
风险不是警告,是可信度的一部分。以下结论只基于文档静态扫描,我们不会执行项目里的任何代码。Risk here is evidence, not an alarm. These findings come from static scanning of the docs; we never execute a project’s code.
限制LIMITS
需检查Needs review
静态扫描STATIC SCAN
01安装时执行脚本Runs a script during installpackage.json
postinstall: node scripts/postinstall.mjs
这里只做静态扫描:读 README、SKILL.md 和依赖清单,不执行代码。没有命中不代表安全。This is static scanning only: we read the README, SKILL.md and dependency list, and never execute code. No findings does not mean safe.
依赖:Dependencies:@anthropic-ai/sdk, commander, dotenv, gray-matter, openai, tree-sitter, tree-sitter-go, tree-sitter-java, tree-sitter-kotlin, tree-sitter-php, tree-sitter-python, tree-sitter-r
{
"agents": [
{
"agent": "claude-code",
"evidence": "tree: .claude/"
},
{
"agent": "cursor",
"evidence": "readme: …aude/skills/graft/SKILL.md`, `.cursor/rules/graft.mdc`, `.kiro/steering/g…"
},
{
"agent": "windsurf",
"evidence": "readme: …`.kiro/steering/graft.md`, `.windsurf/rules/graft.md`, `.grok/skill…"
},
{
"agent": "opencode",
"evidence": "readme: …on file — `AGENTS.md` (Codex, OpenCode and other CLIs that read it),…"
}
],
"apiKey": "nAI-compatible format), your `GRAFT_API_KEY`, `GRAFT_MODEL`, and — for the `openai`",
"docker": null,
"taxonomy": {
"scores": {
"design": 0,
"ai-tools": 3,
"dev-tools": 7,
"indie-web": 0,
"skill-agent": 13,
"productivity": 3
},
"primary": "dev-tools",
"secondary": "coding-agent"
},
"localRuntime": null,
"skillMdTotal": 1,
"skillMdErrors": [],
"treeTruncated": false,
"categoryScores": {
"data": 3,
"agent": 0,
"media": 0,
"design": 0,
"browser": 0,
"devtool": 1,
"security": 0,
"marketing": 0,
"productivity": 0
},
"classification": [
{
"signal": "1 SKILL.md with name + description",
"weight": 0.95
},
{
"signal": "skills/ directory with 1 markdown files",
"weight": 0.75
},
{
"signal": "README describes a Claude / Agent Skill",
"weight": 0.7
},
{
"signal": "README ships an mcpServers config for this server",
"weight": 0.7
},
{
"signal": "MCP topic + README",
"weight": 0.6
},
{
"signal": "description mentions AI",
"weight": 0.2
}
],
"scannedSources": [
"readme",
".claude/skills/graft/SKILL.md"
],
"skillMdFetched": 1
}