mcpbeat

Plugin Audit

vercel/plugin-audit

Audit vercel-plugin performance on real-world projects. Extracts tool calls from Claude Code conversation logs, tests hook matching against actual inputs, identifies pattern coverage gaps, and checks plugin cache staleness. Use when asked to audit, test, or investigate plugin skill injection on a real project.

3k tokens
context cost
the whole folder, loaded on every use
3
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
240
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/vercel/vercel-plugin --skill plugin-audit

What comes with it

8 374 bytes besides the instruction
references/log-format.md
scripts/batch-match.mjs

The instruction itself

9 sections, as written by the author

Plugin Audit

Audit how well vercel-plugin skill injection performs on real-world Claude Code sessions.

Workflow

1. Locate conversation logs

Find JSONL conversation logs for a target project:

ls -lt ~/.claude/projects/-Users-*-<project-name>/*.jsonl

The path uses the project's absolute path with slashes replaced by hyphens and a leading hyphen.

2. Extract tool calls

Parse the JSONL log to extract all tool_use entries. Each line is a JSON object with message.content[] containing type: "tool_use" blocks. Extract name and input fields. Group by tool type (Bash, Read, Write, Edit).

3. Test hook matching

Use the exported pipeline functions directly — do NOT shell out to the hook script for each test. Import from the hooks directory:

import { loadSkills, matchSkills } from "./hooks/pretooluse-skill-inject.mjs";
import { createLogger } from "./hooks/logger.mjs";

Call loadSkills() once, then matchSkills(toolName, toolInput, compiledSkills) for each tool call. This is fast and gives exact match results.

4. Identify gaps

Compare matched skills against what SHOULD have matched based on the project's technology stack. Common gap categories:

  • Path pattern gaps: Files that should trigger a skill but don't (e.g., src/db/schema.ts not matching vercel-storage)
  • Bash pattern gaps: Commands that should trigger but don't (e.g., missing package manager variants)
  • Dedup masking: Skills that matched but were deduped before injection
  • Budget/cap drops: Skills matched but dropped by the 12KB budget or 3-skill ceiling

5. Check plugin cache staleness

Compare the installed plugin cache against the dev version:

# Cache location
~/.claude/plugins/cache/vercel-labs-vercel-plugin/vercel-plugin/<version>/

# Compare skill content
diff <(grep 'pattern' skills/<skill>/SKILL.md) <(grep 'pattern' ~/.claude/plugins/cache/.../skills/<skill>/SKILL.md)

Check ~/.claude/plugins/installed_plugins.json for version and git SHA.

Report Format

Produce a structured report with:

  • Session summary: Project, date, tool call count, model
  • Match matrix: Table of tool calls × matched skills (with match type)
  • Coverage gaps: Unmatched tool calls that should have matched, with suggested pattern additions
  • Dedup timeline: Order of skill injections and what got deduped
  • Cache status: Whether installed version matches dev, with specific diffs

References

  • Log format details
  • Test script for batch matching

How to use it

Copy the folder

Take vercel/plugin-audit from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.