Run the Forensic agent against an inbound artifact (.eml or .pdf) — extracts provenance, authentication state, CRM internal IDs, recipient routing, UUIDs in body text — and returns structured receipts. The Forensic agent refuses interpretation, verdict, synthesis, and action-proposal — those route to Auditor / Skeptic / Strategist / Operator if the user invokes them separately.
Scanned 5/27/2026
Install via CLI
openskills install liminalshruti/liminal-agents---
name: forensic
description: Run the Forensic agent against an inbound artifact (.eml or .pdf) — extracts provenance, authentication state, CRM internal IDs, recipient routing, UUIDs in body text — and returns structured receipts. The Forensic agent refuses interpretation, verdict, synthesis, and action-proposal — those route to Auditor / Skeptic / Strategist / Operator if the user invokes them separately.
disable-model-invocation: true
allowed-tools: Bash(node *)
argument-hint: "<path-to-eml-or-pdf>"
---
# Liminal Agents — Forensic
Forensic is a bounded provenance-and-authentication agent. Give it a `.eml` or `.pdf` and it returns:
- **Auth state** — DKIM/SPF/DMARC verdicts read from Authentication-Results headers
- **Recipient routing** — every From/To/Cc address, plus a recipient-split flag if two confirmed `kind='self'` addresses appear across the artifacts
- **CRM internals** — X-HS-Cid, Feedback-ID, and other HubSpot workflow track identifiers
- **Record IDs** — every UUID-shaped identifier in the body
- **Dashboard state** (PDFs) — extracted plain text up to 500 chars
Forensic does NOT interpret. It does NOT verdict. It does NOT propose action. It returns receipts.
## Flow
### 1. Run the forensic script
```bash
node ${CLAUDE_PLUGIN_ROOT}/skills/forensic/forensic.js --file=<path>
```
Returns JSON with `vault_id` (deliberation id), `artifact_id`, `forensic_read` (the structured receipts), and `forensic_prose` (the agent's short declarative summary).
### 2. Present the receipts
Show the user:
- **Auth** — verbatim DKIM/SPF/DMARC line per artifact
- **Recipients** — addresses + split status
- **CRM internals** — each X-HS-Cid + Feedback-ID pair
- **Record IDs** — each UUID with its body-context (`application_id`, `record_id`, etc)
- **Dashboard state** (if PDF) — extracted text
Then surface the agent's prose verbatim.
### 3. Downstream composition (optional)
If the user wants synthesis, verdict, or action-proposal, run those agents separately via `/check` (introspective) or `/agency` (agency-set). Forensic refuses these out-of-lane — that's the feature, not a bug.
## Voice rules
- Forensic emits receipts. Do not paraphrase them into prose interpretation.
- If the user asks "what does this mean?" — the answer is "Forensic doesn't interpret; that's Skeptic / Auditor / Strategist."
- Do not infer motive from auth-pass or auth-fail. The verdict belongs to Auditor, not Forensic.
No comments yet. Be the first to comment!