empiricaai/empirica/services-auditor
Claude Code and agent skill by empiricaai/empirica
- community
Checking that the SKILL.md file is still in the repository.
Use when the user runs `empirica scan --explain` or asks you to audit running AI services. You read the deterministic scanner snapshot, judge each AI-touching process against the bundled security corpus, and emit findings/assumptions/unknowns with confidence + cited corpus sections. Two-tier judgment (cheap AI-touching pre-filter, then full taxonomy with citation). Read-only by design — never kill processes or modify configuration; emit `recommended_action` strings only. Tracks citation coverag…
Install
npx vskill@latest install empiricaai/empirica/services-auditorSKILL.md
Services Auditor — AI judgment over a deterministic scanner snapshot
This skill fires when an AI agent is asked to reason about the running state of an AI-touching machine. The deterministic scan (empirica scan) gives you the snapshot — what's actually executing right now. Your job is to judge each AI-touching entry against the bundled security corpus and emit empirica artifacts with confidence and citation.
You are not a separate process. You are the AI session that the user asked to audit. Run inside a normal empirica transaction.
When to use
- The user typed
empirica scan --explainand a system-reminder
pointed you here.
- The user said "audit running services," "what AI agents are dangerous
here," "review the scan output," or similar.
- A scheduled
services-auditloop fired (Phase 3, future) and woke
you with this skill referenced.
If you only need the inventory itself (no judgment), point the user at empirica scan instead.
Phase 0 — PREFLIGHT
Open a transaction with the audit work_type so the Sentinel weights your evidence sources correctly:
Phase 1 — Read inputs
Two files are load-bearing:
1. The scanner snapshot
Always read the most recent saved snapshot (the user gets this via empirica scan --explain which auto-saves):
If absent, run empirica scan --save yourself first, then read it.
2. The bundled security corpus
Summary-grade notes on five frameworks, in the corpus/ directory next to this SKILL.md (the base directory shown when the skill loads). A file of the same name in ~/.empirica/security-corpus/ overrides the shipped one. Each file's header states its Edition and the date it was last Verified against the published source; read both before you rely on a file.
| File | Source | Labels you cite | |
|---|---|---|---|
owasp-llm-top10.md | OWASP Top 10 for LLM Applications | LLM-A01 … LLM-A12 | |
owasp-agentic-top10.md | OWASP Top 10 for Agentic Applications | Agentic-A01 … Agentic-A10 | |
nist-ai-rmf.md | NIST AI RMF 1.0 | the headings, e.g. GOVERN-1, MEASURE-2 | |
mitre-atlas.md | MITRE ATLAS | the official AML.T#### (technique) and AML.TA#### (tactic) IDs | |
google-saif.md | Google SAIF | SAIF-1 … SAIF-6 |
The LLM-A##, Agentic-A##, SAIF-# and NIST heading labels are the corpus's own, kept stable so a citation stays valid. Every section also shows the framework's official identifier: put the official ID in the artifact text a person will read, and the label beside it. Where our label does not match the official entry of the same number (the file says so), trust the official one. Section bodies are summaries and mostly not compared with the published text; the files mark what was not checked. If a file is more than 180 days past its Verified date, say so in the finding instead of presenting it as current.
Phase 2 — Two-tier judgment
Tier 1 — Cheap AI-touching pre-filter
Walk the snapshot's process list. For each row, classify in one short pass: AI-touching (true / false).
A process is AI-touching if any of:
- cmdline contains
claude,cursor,codex,aider,gh copilot,
gemini, ollama, vllm, llama-cpp, lmstudio, openai, anthropic, cohere, huggingface, replicate, qdrant, chromadb, weaviate, pinecone, langchain, crewai, autogen
- holds an env var name matching
*_API_KEYfor an AI vendor (cross-
reference process_env.var_names_only if available)
- listens on a port commonly used by local AI tooling (11434 ollama,
8000/8080 generic LLM servers, 6333 qdrant default, 6379 redis if flagged in registered MCP servers)
- is registered as an MCP server in
~/.claude/mcp.json
Filter the ~hundreds of processes down to a working set of ~10–30. Most processes (browsers, terminals, system daemons) are not AI-touching and don't need full taxonomy judgment.
Tier 2 — Full taxonomy per AI-touching process
For each survivor, judge against the corpus and emit one artifact.
Confidence ladder (per the proposal):
| Confidence | Citation present? | Artifact type | Behavior | |
|---|---|---|---|---|
| ≥ 0.95 | yes | finding-log | high-trust | |
| 0.6 – 0.95 | yes | assumption-log | medium-trust, logged | |
| < 0.6 | _any_ | unknown-log | needs human review | |
| _any_ | no | unknown-log | uncited downgrades |
Emission examples (use the batch form when emitting many at once via log-artifacts; the single-verb form is fine for one-off artifacts):
Citation discipline (load-bearing)
Every finding and assumption you emit MUST cite at least one corpus section ID. The citation goes in the artifact text itself (human-readable) AND optionally as a source-add + sourced_from edge for graph traversal.
Uncited findings are downgraded to `unknown` regardless of model confidence. This is not negotiable — it is the trust-grounding contract that makes the auditor's output auditable.
Phase 3 — Coverage tracking
The paper (COVERAGE_VECTORS_PAPER_OUTLINE.md) defines coverage as inspected / relevant. Track yours explicitly so the user can see what fraction of the relevant material you actually inspected:
| Dimension | Numerator | Denominator | |
|---|---|---|---|
| Process coverage | processes you full-judged in tier 2 | AI-touching processes after tier 1 filter | |
| Citation coverage | unique corpus sections you cited | corpus sections that exist (count the ## headings that carry an ID, across the 5 files) | |
| Listener coverage | listeners you judged | total listeners in network.connections |
Surface the numbers in your final summary, e.g.:
A 95%-confidence finding with 13% citation coverage is honest. A 95%-confidence finding without a coverage report is not.
Phase 4 — POSTFLIGHT
Close the transaction with grounded vectors that reflect what you actually did:
Phase 3 (future) wires a biweekly cron loop that fires this skill automatically. Today, the user runs it on demand.
Out of scope (V1)
- Process killing or config mutation. Read-only.
recommended_action
strings only. Empirica does not execute them; the user does.
- Network packet inspection. Metadata only — connection 5-tuple +
listening ports. Same posture as Phase 1.
- Multi-host fleet view. Separate product (
empirica fleet). - Hosted-agent inventory (cloud operators on user's account) —
Phase 4+ — needs API token introspection.
- RAG over the corpus. Phase 4 — needs Qdrant collection.
- Fine-grained semantic confidence calibration over many runs —
comes from coverage paper validation work, not the auditor itself.
Anti-patterns
- Emitting findings without citation. Downgrade to unknown.
- Listing every process in the system as "interesting." Tier 1 must
filter aggressively. Most processes are not AI-touching.
- Skipping the snapshot read. The deterministic snapshot is the
ground truth — reasoning from memory or guess is uncited and breaks the contract.
- Inflating confidence to clear the citation requirement. The
ladder gates by both — confidence ≥ 0.95 + cited is the only "finding" path. Inflating confidence to dodge an honest "unknown" is exactly the failure mode the auditor exists to flag in others.
- Killing processes or pushing config changes. Read-only by
design. If you observe a vulnerability that warrants action, the user takes the action.
Sister skill: /services-audit-cron
For unattended scheduled scans (Phase 3), invoke /services-audit-cron to register the canonical biweekly cron loop. Body is one command (empirica services-audit) that does scan + diff + notify-on-novelty; loop registry + heartbeat handle the schedule. Complementary, not redundant: services-auditor is on-demand AI judgment; the cron loop is automated novelty detection.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingempirica/plugins/claude-code-integration/skills/services-auditor/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/empiricaai/empirica/services-auditor)