devlens — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited devlens (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
DevLens precomputes a structural graph of a repo: nodes (components, hooks, functions, routes, stores) joined by typed edges (CALLS, IMPORTS, READS_FROM, …), each carrying a technical summary, a business/functional summary, and a security assessment. You query it through the DevLens MCP tools — not by reading files.
Tool names. The DevLens MCP server is bundled with this plugin and registers automatically. Its tools appear to you as mcp__plugin_devlens_devlens__<name>. Throughout these recipes a tool is named by its short <name> (e.g. get_subgraph, find_nodes, get_blast_radius); call the matching mcp__plugin_devlens_devlens__… tool. Every tool is keyed by a graphId (and optionally a commitHash); read each tool's own description for its parameters.
Why this saves tokens: a node summary is ~50 tokens; the underlying file is ~2000. Querying summaries, and using get_blast_radius/get_khop/get_subgraph to fetch only the relevant slice, costs a fraction of reading files. Reach for raw source (get_node_code) only as a last resort.
Standing rule — prefer summaries when available: whenever a node has a technical or business summary, read it (get_node / get_summaries) to understand the code instead of opening the file — it is far cheaper and usually enough. Fall back to get_node_code or reading the file only when no summary exists (structure-only graph) or the summary is genuinely insufficient to act. This applies to every subcommand below.
On a TS/JS/React/Next.js/Node repo, DevLens is the default way to understand code — querying the graph is cheaper and more accurate than grepping. Reach for DevLens (don't Grep/Glob/Read first) whenever you need to:
find_nodes / get_nodes_in_path.get_node / get_summaries (summary first, source last).get_blast_radius / get_khop.get_repo_overview / get_subgraph.This is the fix for "grepping for every little task": don't fan out Grep/Read to reconstruct what a node does or who depends on it — one graph query (a ~50-token summary) replaces several greps and full-file reads.
Use plain Read/Grep/Glob instead when:
Rule of thumb: *DevLens to decide where and what; file tools to make the actual change.* If you catch yourself about to grep to understand a TS/JS/Node symbol, query the graph instead.
Call list_analyzed_repos. If it returns (even an empty list), the MCP is live — proceed. If the tool is not available (no mcp__plugin_devlens_devlens__* tools), the DevLens MCP isn't connected: tell the user and stop. To enable it, they can reinstall/enable this plugin, or register the server directly:
claude mcp add devlens -- npx -y @devlensio/cli mcp(The MCP ships inside the @devlensio/cli package, so no separate install is needed once registered.)
Determine state:
git rev-parse HEADgit status --porcelain (any output = uncommitted/untracked changes)list_analyzed_repos → find the entry whose repo path is this repo; note its graphId and latest analyzed commit. get_repo_overview on that graphId reports its commit coverage.Then apply, in order:
analyze with this repo's path. This refreshes the structure only — existing summaries are inherited for unchanged nodes; new/changed nodes simply have none yet. Then proceed.analyze with summarization enabled. If they decline, continue structure-only and say what's limited.analyze (structure only) first, then ask the user whether to summarize this commit. Proceed structure-only if they decline.Golden rule: structural analyze may run automatically; summarizing requires explicit user permission every time — it costs LLM calls. Never summarize silently.
You were invoked as /devlens $ARGUMENTS. Take the first word ($0) as the subcommand and read the matching recipe file in full, then follow it exactly.
How to use the graph well (applies to every subcommand). These tools are a kit — the quality of your answer comes from orchestrating them, not from dumping the whole graph. Before writing any recipe's output, internalize the methodology in ${CLAUDE_SKILL_DIR}/reference.md → "How to use the graph well". In short:
get_repo_overview (framework, route count, top central nodes). Let its exact counts anchor your output.get_subgraph on central seed nodes returns the cohesive clusters that are the codebase's bounded contexts.get_blast_radius (upstream) and get_khop (downstream) — never invent edges.get_summaries (business + technical) — label things by what they do, not by their names.list_cycles and get_security_issues.get_repo_overview. A thorough, well-structured answer is the goal; a brute-force node dump is not.Routing table:
| Subcommand | Recipe |
|---|---|
init | ${CLAUDE_SKILL_DIR}/commands/init.md |
architecture | ${CLAUDE_SKILL_DIR}/commands/architecture.md |
diagram | ${CLAUDE_SKILL_DIR}/commands/diagram.md |
summary | ${CLAUDE_SKILL_DIR}/commands/summary.md |
security-analysis | ${CLAUDE_SKILL_DIR}/commands/security-analysis.md |
explain | ${CLAUDE_SKILL_DIR}/commands/explain.md |
onboard | ${CLAUDE_SKILL_DIR}/commands/onboard.md |
tech-debt | ${CLAUDE_SKILL_DIR}/commands/tech-debt.md |
impact | ${CLAUDE_SKILL_DIR}/commands/impact.md |
find | ${CLAUDE_SKILL_DIR}/commands/find.md |
changes | ${CLAUDE_SKILL_DIR}/commands/changes.md |
guard | ${CLAUDE_SKILL_DIR}/commands/guard.md |
/devlens): briefly list the subcommands above with one line each, and point to ${CLAUDE_SKILL_DIR}/reference.md for the full tool catalog and when to use each. Do not run analysis./devlens), pick the subcommand that matches their request (e.g. "is this secure?" → security-analysis; "draw the architecture" → diagram).Every tool accepts graphId (default to the graph for the cwd) and an optional commitHash. Default to the cwd graph's latest commit unless the user specifies otherwise.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.