feat(llm-security-copilot): port llm-security v5.1.0 to GitHub Copilot CLI

Full port of llm-security plugin for internal use on Windows with GitHub
Copilot CLI. Protocol translation layer (copilot-hook-runner.mjs)
normalizes Copilot camelCase I/O to Claude Code snake_case format — all
original hook scripts run unmodified.

- 8 hooks with protocol translation (stdin/stdout/exit code)
- 18 SKILL.md skills (Agent Skills Open Standard)
- 6 .agent.md agent definitions
- 20 scanners + 14 scanner lib modules (unchanged)
- 14 knowledge files (unchanged)
- 39 test files including copilot-port-verify.mjs (17 tests)
- Windows-ready: node:path, os.tmpdir(), process.execPath, no bash

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-04-09 21:56:10 +02:00
commit f418a8fe08
169 changed files with 37631 additions and 0 deletions

View file

@ -0,0 +1,39 @@
---
name: security-watch
description: Continuous security monitoring — runs diff on a recurring interval
---
# Security Watch
Set up continuous monitoring that runs security diffs on an interval.
## Step 1: Parse Arguments
- Target path = first positional argument or current directory
- `--interval <value>` — monitoring interval (default: 6h). Supports: 30m, 1h, 6h, 12h, 24h.
## Step 2: Create Initial Baseline
```bash
node <plugin-root>/scanners/scan-orchestrator.mjs "<target>" --save-baseline
```
Display baseline summary: verdict, risk score, finding counts.
## Step 3: Start Monitoring
For continuous monitoring, use the watch-cron scanner:
```bash
node <plugin-root>/scanners/watch-cron.mjs [--config <plugin-root>/reports/watch/config.json]
```
Or set up a system cron job / scheduled task:
- **Linux/macOS cron:** `0 */6 * * * node <plugin-root>/scanners/watch-cron.mjs`
- **Windows Task Scheduler:** Create a task that runs the same command on your preferred interval
## Step 4: Advisory
- Results stored in `<plugin-root>/reports/watch/latest.json`
- Use `security-diff` to manually compare against baseline at any time
- Watch-cron overwrites latest.json on each run