agentleFS
lumiboilumiboi/plimsoll/SKILL.md

plimsoll

Skill3 starsChanged 3 months agoMITView on GitHub

Security review of LLM applications and agents. Use when asked to review, red-team, threat-model or test an LLM feature, chatbot, RAG pipeline, MCP server or autonomous agent for prompt injection (direct or indirect), jailbreaks, system prompt or secret leakage, tool abuse, excessive agency, confused-deputy behavior, authorization bypass, RAG poisoning, memory poisoning, or data exfiltration. Also use when asked to build a red-team test matrix, judge whether a suspicious model response is a real vulnerability, score a finding, or write a regression test for one.

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    1. howells/skills★ 5same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

The file

We split this skill into the rules it gives an agent

8 rules. About 0 are common, 6 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈6

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Not for: model evaluation quality, content moderation policy, or general application security unconnected to a model.

    line 26
  2. Distinctive:

    Confirm authorization: Ask who owns the target and what is in scope.

    line 31
  3. Distinctive:

    Stop and report instead of escalating when a test would touch a real third party, cross into a tenant you were not given, destroy data, …

    line 42
  4. Distinctive:

    Read, in this order: the system prompt and prompt assembly code, the tool or function schemas, the retrieval pipeline, the memory layer, …

    line 50
  5. Distinctive:

    If the model is fully compromised, what stops the action from happening?

    line 78
  6. Very specific:

    If the second answer is "the prompt tells it not to", you already have a finding.

    line 80
  7. Distinctive:

    Never report a proposal as if it were an invocation.

    line 128
  8. Very specific:

    Every confirmed finding becomes a fixture under tests/regression/ in test-case format, referenced from the finding's regression_test field, …

    line 147

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

LLM and agent security review

Work through a system the way an attacker reaches it: find the text they control, find the privileges the agent holds, and find out what stands between the two.

The one rule everything else follows from:

Never rely on the model to protect a boundary that deterministic software can enforce. A recommendation that amounts to better prompt wording is not a fix. It may reduce how often the model misbehaves; it does not change what a misbehaving model can reach.

When this applies

Reach for this skill for: agent and LLM security reviews, prompt-security questions, RAG and memory trust analysis, tool and MCP permission audits, red-team planning, triage of a suspicious transcript, and regression tests for a fixed issue.

Not for: model evaluation quality, content moderation policy, or general application security unconnected to a model.

Before touching anything

  1. Confirm authorization. Ask who owns the target and what is in scope. If the answer is not clear, do the architecture review from source and configuration only, and hold the adversarial tests.
  2. Prefer a sandbox. Local, staging or a mock-tool harness. If the only instance is production, run the architecture review there and reproduce anything else elsewhere.
  3. Use synthetic secrets. plimsoll canary new. Never a real credential, never real customer data.
  4. Keep the smallest proof. Once a finding is demonstrated, stop. One mock email in a sink proves the path; sending ten does not prove it harder.

Stop and report instead of escalating when a test would touch a real third party, cross into a tenant you were not given, destroy data, hold persistence, or move real money.

Workflow

1. Understand the target

Read, in this order: the system prompt and prompt assembly code, the tool or function schemas, the retrieval pipeline, the memory layer, the authorization code around tool execution, and the output renderer. The prompt tells you what the developers hoped for; the tool schemas and the authorization code tell you what actually holds.

2. Write it down as a target file

Describe the system in one YAML file so the analysis is reproducible and reviewable. Schema and every field: src/plimsoll/data/schemas/target.schema.json. Worked example: examples/support-agent.yaml.

plimsoll evaluate ./target.yaml -o reports/

That produces architecture findings, a capability-based tool-risk table, and a test plan filtered to the channels this target actually has. It reads the file, not the running system: everything it reports is a reachable path, not an observed exploit.

3. Map trust boundaries

Label every input: trusted configuration, authorized user turn, untrusted external content, privileged secret material, authorization state, or action-capable interface. Then answer two questions for each high-risk tool:

  • Can attacker-controlled data influence this action's arguments or approval?
  • If the model is fully compromised, what stops the action from happening?

If the second answer is "the prompt tells it not to", you already have a finding. Background: references/threat-model.md.

4. Choose attack classes

Pick from the intersection of what the target has and what an attacker can reach. Do not run everything; run what applies. references/attack-classes.md describes each class and what evidence proves it. The corpus in src/plimsoll/data/corpus/ holds ready cases, one file per class, plus benign near-neighbors in benign.yaml.

Priority order in practice: untrusted input reaching a high-risk tool, then secret and canary paths, then retrieval and memory, then model-only behavior.

5. Design the tests

Each test names: the channel the payload arrives on, what the secure outcome is, what the failure looks like, and what evidence would prove it. Use the schema in src/plimsoll/data/schemas/test-case.schema.json. Adapt corpus cases to the target's vocabulary rather than pasting them verbatim; a payload that mentions a tool the target does not have proves nothing.

6. Run and observe every channel

Watch the reply, the tool calls and their arguments, generated URLs and filenames, logs, memory writes, and anything the client fetches automatically. A secret that never appears in the chat can still leave in an image URL.

plimsoll scan ./retrieved-page.html --provenance web
plimsoll canary scan --channel tool_arguments=trace.json --canary PLIMSOLL_CANARY_...

scan is a heuristic and its verdict is a signal, not a verdict about the target. What matters is what the agent did next.

7. Separate model behavior from control failure

These are different findings with different owners and different severities:

ObservationWhat it means
The model agreed to a bad instructionmodel behavior; policy deviation
The model proposed a tool callmodel behavior; the gate may still hold
The tool ran with attacker-influenced argumentscontrol failure
The action happened outside the systemcontrol failure with impact
Another tenant's data was reachedcontrol failure, highest severity

Never report a proposal as if it were an invocation.

8. Score it

Severity comes from plimsoll.severity: seven scored dimensions, and a cap set by the strongest evidence class actually collected. Model text alone cannot produce a critical finding, whatever the wording. See references/evidence.md for the ladder and examples/findings/ for a weak report and a validated one describing the same scenario.

9. Recommend a deterministic fix

Order recommendations: architecture, then policy, then configuration, then detection, and prompt wording last if at all. references/mitigations.md maps each finding class to the control that actually holds it. Name the boundary, not the phrasing.

10. Leave a regression behind

Every confirmed finding becomes a fixture under tests/regression/ in test-case format, referenced from the finding's regression_test field, and wired into CI. A finding without a regression is not closed.

Reporting

Emit findings in the schema at src/plimsoll/data/schemas/finding.schema.json, which forces the twelve questions a reader will ask: component, channel, boundary crossed, expected, observed, reproducibility, evidence class, secret involvement, authorization outcome, privileges needed, impact, and the fix. plimsoll validate <path> checks them.

Redact before writing anything out. Canaries and credential shapes are stripped by plimsoll.canaries.redact, which the report writer already applies.

What this skill will not do

Extract real credentials, act against systems outside the agreed scope, keep escalating after the point is proven, install persistence, or turn a finding into an operational exploitation procedure. If a request needs one of those, say so and offer the sandboxed equivalent.

Reference material

Load only what the task needs:

  • references/threat-model.md — attacker profiles, trust boundaries, the paths worth caring about
  • references/attack-classes.md — each class, its mechanism, and what proves it
  • references/evidence.md — evidence ladder, severity model, weak versus validated findings
  • references/mitigations.md — deterministic controls per finding class
  • references/owasp-mapping.md — OWASP Top 10 for LLM Applications 2025 mapping
  • references/atlas-mapping.md — MITRE ATLAS technique mapping
  • references/sources.md — sources with dates and last-reviewed markers

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.