From 056164737d6a5272b0012faa171020d0a0b6fa43 Mon Sep 17 00:00:00 2001 From: Jake Fineman Date: Mon, 14 Sep 2026 11:54:50 -0400 Subject: [PATCH] feat: initial WAVE agent plugin (review + vuln-scan skills) Agent Plugins open standard (root plugin.json). Secret-free: callers supply their own REVIEW_PLANE_KEY. Skills: wave-review (multi-reviewer verdicts via MCP/REST), wave-vuln-scan (Semgrep sweep + validated tracing + finding memory). Marketplace submission is a human step. --- README.md | 23 ++++++++++++++++++++++ plugin.json | 10 ++++++++++ skills/wave-review/SKILL.md | 27 ++++++++++++++++++++++++++ skills/wave-vuln-scan/SKILL.md | 35 ++++++++++++++++++++++++++++++++++ 4 files changed, 95 insertions(+) create mode 100644 README.md create mode 100644 plugin.json create mode 100644 skills/wave-review/SKILL.md create mode 100644 skills/wave-vuln-scan/SKILL.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..744f850 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# wave-cursor-plugin + +WAVE agent plugin for Cursor (Agent Plugins open standard): review-plane and +vuln-scan skills. Secret-free by design — callers supply their own +`REVIEW_PLANE_KEY`. + +## Contents + +- `plugin.json` — Agent Plugins manifest +- `skills/wave-review/` — multi-reviewer verdicts via the WAVE review plane + (MCP `review`/`summarize_review` or REST `POST /v1/review`) +- `skills/wave-vuln-scan/` — the armed scan pattern (Semgrep sweep + validated + tracing + persistent finding memory) + +## Test locally + +Copy this repo to `~/.cursor/plugins/local/wave-cursor-plugin` and reload the +window (or Developer: Reload Window). Confirm the skills appear under Customize. + +## Publish + +Marketplace submission is manual review at cursor.com/marketplace/publish. +Requires the repo public + a human submitter. diff --git a/plugin.json b/plugin.json new file mode 100644 index 0000000..d7ce702 --- /dev/null +++ b/plugin.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", + "name": "wave-cursor-plugin", + "description": "WAVE review plane for Cursor: multi-reviewer code verdicts and the armed vuln-scan pattern", + "version": "0.1.0", + "author": { "name": "WAVE Online, LLC", "url": "https://wave.online" }, + "homepage": "https://github.com/wave-av/wave-cursor-plugin", + "repository": "https://github.com/wave-av/wave-cursor-plugin", + "license": "Apache-2.0" +} diff --git a/skills/wave-review/SKILL.md b/skills/wave-review/SKILL.md new file mode 100644 index 0000000..e4ba113 --- /dev/null +++ b/skills/wave-review/SKILL.md @@ -0,0 +1,27 @@ +--- +name: wave-review +description: "Get a multi-reviewer verdict on a repo or PR from WAVE's review plane (correctness, security, cross-file, design). Use for second-opinion reviews, pre-merge gates, or auditing agent-generated code." +--- + +# WAVE Review + +Call WAVE's review plane for a synthesized multi-reviewer verdict. No secrets in this plugin — the caller supplies their own `REVIEW_PLANE_KEY` (a tenant key from the plane's onboarding). + +## Via MCP (preferred) + +If the `wave-review` MCP server is configured (URL `https://review.wave.online/mcp`, +header `Authorization: Bearer `), call: + +- `review` with `{ "repo": "owner/name" }` → verdict list (reviewer, verdict, evidence, price_cents) +- `summarize_review` with the verdict list → one-paragraph synthesis + +## Via REST (fallback) + +`POST https://review.wave.online/v1/review` with header +`Authorization: Bearer ` and JSON body `{ "repo": "owner/name" }`. + +## Reading the verdict + +- Weight overlapping findings across reviewers more heavily. +- A finding with file:line evidence outranks a general observation. +- Cost note: each verdict returns `price_cents` (metered per reviewer that ran). diff --git a/skills/wave-vuln-scan/SKILL.md b/skills/wave-vuln-scan/SKILL.md new file mode 100644 index 0000000..a4fe887 --- /dev/null +++ b/skills/wave-vuln-scan/SKILL.md @@ -0,0 +1,35 @@ +--- +name: wave-vuln-scan +description: "Run the armed vulnerability-scan pattern: Semgrep MCP sweep plus validated manual tracing with persistent finding memory. Use for scheduled security reviews or pre-release audits." +--- + +# WAVE Vuln Scan + +The scan pattern WAVE runs daily on its own money paths. Two passes, then memory. + +## Pass 1 — Semgrep MCP sweep + +If a Semgrep MCP server is available (`security_check`, `semgrep_scan`), sweep +the target repo first. Treat hits as CANDIDATES, not findings. + +## Pass 2 — validated tracing + +For every candidate, verify exploitability with concrete code tracing. Every +reported issue must include: + +- who the attacker is +- what input they control +- how they reach the vulnerable code +- what impact they gain +- one primary file path (line details go in evidence, not the location) + +Do not report speculative concerns, isolated unsafe-looking APIs without a real +attack path, or low-signal best-practice notes. Do not open a PR from this +workflow unless explicitly asked. + +## Finding memory (dedup across runs) + +Keep `{repo}---flagged-vulnerabilities.json` (100 findings max per file, +`-1`, `-2` overflow). Before scanning, read existing files and never +re-report a present finding. After scanning, append only genuinely new +validated findings. Never create staging/date-based scratch files.