Borrowing it
Nothing to install: this file belongs to eddiesanjuan/markupr. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/eddiesanjuan/markupr/main/.claude/commands/security.mdgit clone --depth 1 https://github.com/eddiesanjuan/markuprWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/eddiesanjuan/markupr/security)<a href="https://agentmods.dev/commands/eddiesanjuan/markupr/security"><img src="https://agentmods.dev/badge/commands/eddiesanjuan/markupr/security/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/commands/eddiesanjuan/markupr/security"><img src="https://agentmods.dev/badge/commands/eddiesanjuan/markupr/security.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.01988 |
| Opus 5.5 | $0.00000 | $0.00795 |
| Sonnet 5.5 | $0.00000 | $0.00398 |
| Haiku 4.5 | $0.00000 | $0.00199 |
Grade A, and why
security scanned grade A with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Unrestricted tool accesslowExcessive agency
A wildcard tool grant or "run any command" leaves no least-privilege boundary at all.
- Execute arbitrary commands (via ffmpeg or Whisper with crafted input)? Downgraded: this mod is about security review, or the phrase is quoted, so it is likely naming the pattern rather than instructing it.
Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
- Is ffmpeg invoked via `child_process.spawn` (safer) or `exec` (shell injection risk)? How it starts
The opening of the file, as written. The whole thing — 184 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Security -- Electron Application Security Audit
Perform a thorough security audit of markupr, an Electron app that handles API keys, screen recordings, voice data, and AI API communication. This audit covers Electron-specific attack surfaces, OWASP Top 10 adapted for desktop apps, and markupr's specific threat model.
Threat Model
markupr's attack surface includes:
- API keys (OpenAI, Anthropic) stored via keytar/OS keychain
- Screen recordings and voice recordings saved to disk
- Network traffic to OpenAI Whisper API, Anthropic Claude API, HuggingFace model downloads
- Local Whisper binary downloaded from HuggingFace and executed
- IPC bridge between Electron main and renderer processes
- MCP server accepting tool calls from external AI agents
- CLI tool processing arbitrary video files from disk
- Auto-updater downloading and installing updates from GitHub Releases
Instructions
1. Dependency Vulnerability Scan
cd ~/Projects/markupr && npm audit --omit=dev 2>&1
cd ~/Projects/markupr && npm audit 2>&1
Report all vulnerabilities by severity (critical, high, moderate, low). For each critical/high:
- Which package and what CVE?
- Is it in a production dependency or dev-only?
- Is it actually reachable in markupr's code paths?
2. Hardcoded Secrets Scan
Search the entire codebase for leaked secrets:
cd ~/Projects/markupr && grep -rn "sk-\|api[_-]key\|secret\|token\|password\|credential" src/ --include="*.ts" --include="*.tsx" -i 2>&1
cd ~/Projects/markupr && grep -rn "ANTHROPIC_API_KEY\|OPENAI_API_KEY\|GITHUB_TOKEN" src/ .env* .github/ --include="*.ts" --include="*.tsx" --include="*.yml" --include="*.env*" 2>&1
Verify:
- API keys are ONLY accessed via keytar (
src/main/settings/SettingsManager.ts) - No API keys in environment variables, config files, or committed
.envfiles - No keys in test fixtures or mock data
- The preload script (
src/preload/index.ts) does not expose raw API keys to the renderer - Check
electron-builder.ymlandscripts/notarize.cjsfor hardcoded signing credentials
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 184 lines · 0 tokens per session scan A 07b536381b50
security is a command published in the GitHub repository eddiesanjuan/markupr (18 stars, last pushed 6mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,988 tokens. A static security scan graded it A with 2 findings (unrestricted tool access, runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
bug
Turn one screen recording of a bug into an evidence-backed GitHub issue draft (quote, frames, OCR identifiers, wall-clock; silent recordings work too).
triage-recording
Turn a narrated screencast into precise, evidence-backed findings JSON (bug / feature / question routing with frame evidence).
correlate-with-logs
Walk a recording's remarks against system logs using wall-clock timestamps.
voxpip
Watch any video and get a transcript — even without an API key. Extends /watch with a local speech-to-text fallback.
qa-changes
This skill should be used when the user asks to "QA a pull request", "test PR changes", "verify a PR works", "functionally test changes", or when an automated workflow triggers QA validation of code changes. Provides a structured methodology for setting up the environment, exercising changed behavior, and reporting…
http-service
Build, review or debug a Bun HTTP service. Loads the http-service skill, then works the task through its workflow.