classify — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited classify (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 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 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.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.
<!-- Trigger phrases: classify, classify entry, review queue, triage inbox, /classify [entry_id|--inbox|--batch|--review] -->
Classify runs the classification engine on knowledge entries and lets you triage the review queue for low-confidence predictions.
/classify <entry_id> — classify a specific entry by ID/classify --inbox — classify all unclassified inbox entries in batch (alias for --batch --entry-type inbox)/classify --batch <filters> — classify entries matching composable filters in batch/classify --review — triage entries awaiting human review/classify (no args) — show usage helpSee CONVENTIONS.md — skip if already confirmed this conversation.
| Invocation | Mode |
|---|---|
/classify <entry_id> | Classify by ID |
/classify --inbox | Batch inbox classification (alias for --batch --entry-type inbox) |
/classify --batch <filters> | Batch classification with composable filters |
/classify --review | Review queue triage |
/classify (no args) | Show help |
Optional flags (all modes):
| Flag | Parameter | Description |
|---|---|---|
--project | <name> | Filter by project name |
Batch filter flags (`--batch` mode only):
| Flag | Parameter | Description |
|---|---|---|
--source | <source> | Filter by entry source (e.g. claude-code, manual, import, inference, external) |
--entry-type | <type> | Filter by entry type (e.g. inbox, github, feed, session, etc.) |
--author | <name> | Filter by author name |
--tag-prefix | <prefix> | Filter by tag namespace prefix (e.g. project/billing) |
--project | <name> | Filter by project name |
--unclassified | (none) | Filter to entries with no tags and verification=unverified |
Filters are composable with AND semantics. At least one filter is required when using --batch (reject bare --batch with no filters).
distillery_get to retrieve the entry. If not found, tell the user to check the ID or use /recall.entry_type: best fit from session, bookmark, minutes, meeting, reference, idea, inbox, person, project, digest, github, feedconfidence: 0.0–1.0 based on how clearly the content fitsreasoning: concise explanationsuggested_tags: 2–5 keywordsdistillery_classify with those values.Show entry ID, type, confidence (as <n%> (<level>)), status, reasoning, and suggested tags. For reclassifications, show old and new classification side-by-side. If confidence is below threshold, note the entry was sent to the review queue.
--inbox is a convenience alias for --batch --entry-type inbox. It follows the same process as Mode B2 below with entry_type="inbox" pre-set.
Call distillery_list(entry_type="inbox", limit=50, output_mode="full", content_max_length=300). If --project was specified, also pass project=<name>. If empty, tell the user and stop.
For each entry (max 50), compute classification as in Mode A and call distillery_classify. Track counts: classified (active), review (pending_review), errors.
## Batch Classification Complete
| Entry ID | Preview | Type | Confidence | Status |
|----------|---------|------|------------|--------|
| <id> | <first 60 chars>... | <type> | <n%> (<level>) | <active|review|error> |
Total: <N> processed — <classified> active, <review> review, <errors> errorsIf any sent to review, suggest /classify --review.
--batch with no filters, display an error: "At least one filter is required for --batch mode. See /classify for available filters." and stop.distillery_list arguments from the provided filters:| Flag | distillery_list parameter |
|---|---|
--source | source=<value> |
--entry-type | entry_type=<value> |
--author | author=<value> |
--tag-prefix | tag_prefix=<value> |
--project | project=<value> |
--unclassified | verification="unverified" (the empty-tags constraint is checked post-fetch in Step B2-2) |
Call distillery_list with the composed filters, plus limit=50, output_mode="full", content_max_length=300. If empty, tell the user no entries matched the filters and stop.
If --unclassified was specified, additionally filter the returned entries to only those with tags=[] (empty tags list). This is a post-fetch filter since the store does not support empty-tag queries directly.
For each entry (max 50), compute classification as in Mode A and call distillery_classify. Track counts: classified (active), review (pending_review), errors.
Use the same summary table format as Mode B Step B3.
Call distillery_list(status="pending_review", output_mode="review", limit=20). If --project was specified, also pass project=<name>. If empty, tell the user and stop.
Determine reviewer per CONVENTIONS.md author resolution.
For each entry, display: ID, type, confidence, author, date, reasoning, and a 200-char content preview. Prompt for action:
| Key | Action | MCP Call |
|---|---|---|
a | Approve — keep classification, set active | distillery_resolve_review(action="approve") |
r | Reclassify — prompt for new type, validate against valid types (re-prompt once if invalid) | distillery_resolve_review(action="reclassify", new_entry_type=...) |
x | Archive — remove from knowledge base | distillery_resolve_review(action="archive") |
s | Skip — leave in queue | No MCP call |
Always pass the reviewer name when calling distillery_resolve_review.
## Review Queue Summary
Entries reviewed: <total>
- Approved: <n> | Reclassified: <n> | Archived: <n> | Skipped: <n>Read references/modes.md for the help text to display.
distillery_get before classifying by IDreferences/modes.md for level thresholds)s to skip~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.