claude-gladiator — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited claude-gladiator (Agent Skill) and scored it 45/100 (orange). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 1 high-severity and 3 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 4 flagged
A base64 string of 128+ characters appears in a documentation file. Encoded prompt injection hides the hostile instruction in base64 — invisible to keyword filters — and relies on the agent's ability to decode it at runtime. There is no normal authoring reason to embed a multi-hundred-byte base64 blob in skill docs.
*.sig, SIGNATURES) outside the documentation.The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Continuous learning. Observes tool failures and prompts reflection at session end to evolve rules, hooks, and skills.
| Hook | When | Action | ||
|---|---|---|---|---|
| **PostToolUse(Bash\ | Edit\ | Write)** | After tool failure | Observes the error pattern (silent on success) |
| Stop | Session ending | Prompts reflection if unprocessed observations exist |
| Command | Description |
|---|---|
/review-gladiator [topic] | Batch learn from accumulated observations and session history |
Tool failures trigger observation automatically:
gladiator_observe(
summary: "<what failed and how it was fixed>",
context: {error, tool, before, after},
tags: ["error", "<tool_name>"]
)gladiator_reflect() — cluster observations into recommendationssearch_conversations("project or topic") — related past workget_error_solutions("specific error") — for error clustersfind_tool_patterns("tool name") — for tool workflow clustersgladiator_reflect() — cluster observationssearch("cluster tag") — check if best-in-class solution already existslist_recent_sessions() to get session refsgladiator_observe(source: "conversation", session_ref: <ref>) for relevant sessionsgladiator_reflect() to cluster all observations| Sibling | Value | How |
|---|---|---|
| Historian | Past solutions enrich reflection | get_error_solutions(), search_conversations(), find_tool_patterns() |
| Oracle | Existing tools found before creating new | Search oracle for best-in-class solutions during reflection |
| Praetorian | n/a | Gladiator has its own persistence |
| Vigil | n/a | Different concerns (files vs patterns) |
| Situation | Call |
|---|---|
| Tool failure (auto) | gladiator_observe(summary, context={error, tool, before, after}, tags=["error", tool]) |
| User correction | gladiator_observe(summary, context={before, after}, tags=["correction"]) |
| Convention found | gladiator_observe(summary, tags=["convention", "domain"]) |
| Decision made | gladiator_observe(summary, tags=["architecture", "decision"]) |
claude mcp add gladiator -- npx claude-gladiator-mcp~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.