Sweep a marketplace or catalogue with a keyless classification API: one pass for category, one multi-label pass for prohibited, counterfeit and misstated-condition signals, one for review-abuse…
MITAuto-check passed
Install Listing Hygiene Check
skills CLI
$ npx skills add mrmps/classifier-dev --skill listing-hygiene-check -a claude-code
Project install by default; add -g for ~/.claude/skills/.
Install the "listing-hygiene-check" agent skill from https://github.com/mrmps/classifier-dev/tree/main/skills/listing-hygiene-check into .claude/skills/listing-hygiene-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "listing-hygiene-check", then confirm the skill loads.
Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Type this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
skills CLI
$ npx skills add mrmps/classifier-dev --skill listing-hygiene-check -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "listing-hygiene-check" agent skill from https://github.com/mrmps/classifier-dev/tree/main/skills/listing-hygiene-check into .agents/skills/listing-hygiene-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "listing-hygiene-check", then confirm the skill loads.
Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add mrmps/classifier-dev --skill listing-hygiene-check -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "listing-hygiene-check" agent skill from https://github.com/mrmps/classifier-dev/tree/main/skills/listing-hygiene-check into .cursor/skills/listing-hygiene-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "listing-hygiene-check", then confirm the skill loads.
Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
skills CLI
$ npx skills add mrmps/classifier-dev --skill listing-hygiene-check -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "listing-hygiene-check" agent skill from https://github.com/mrmps/classifier-dev/tree/main/skills/listing-hygiene-check into .gemini/skills/listing-hygiene-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "listing-hygiene-check", then confirm the skill loads.
Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Installs for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
skills CLI
$ npx skills add mrmps/classifier-dev --skill listing-hygiene-check -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "listing-hygiene-check" agent skill from https://github.com/mrmps/classifier-dev/tree/main/skills/listing-hygiene-check into .github/skills/listing-hygiene-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "listing-hygiene-check", then confirm the skill loads.
GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add mrmps/classifier-dev --skill listing-hygiene-check -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "listing-hygiene-check" agent skill from https://github.com/mrmps/classifier-dev/tree/main/skills/listing-hygiene-check into .opencode/skills/listing-hygiene-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "listing-hygiene-check", then confirm the skill loads.
OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Facts
Skill name
listing-hygiene-check
GitHub stars
424
Token cost
~1.5k tokens
SKILL.md length
595 words
Files
1
Skills in repo
21
Repo updated
First seen
Licence
MIT
At a glance
Sweep a marketplace or catalogue with a keyless classification API: one pass for category, one multi-label pass for prohibited, counterfeit and misstated-condition signals, one for review-abuse…
SKILL.md covers When not to use this, Pass 1 — category, with an…, Pass 2 — policy signals,… and Pass 3 — review abuse, on the…, plus 3 more sections
Calls curl; reaches classifier.dev
What it does
Listing Hygiene Check is an agent skill from mrmps/classifier-dev. Sweep a marketplace or catalogue with a keyless classification API: one pass for category, one multi-label pass for prohibited, counterfeit and misstated-condition signals, one for review-abuse patterns, severity set by the calibrated confidence band, and a queue file only a person acts on. Use on "check these listings", "find counterfeits", "audit the catalogue", "are these reviews fake", or before a category goes live.
Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: Zero-shot text classification over plain HTTP — no API key, no account. One Cloudflare Worker, a CLI, and an MCP server. https://classifier.dev. The licence is MIT.
Example prompts
“check these listings”
“find counterfeits”
“audit the catalogue”
“/listing-hygiene-check”
What it can do on your machine
Read from SKILL.md and the folder at commit 629df75. It shows what the files ask for, not the result of running them.
Tool permissions
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Runs code
Shell commands in SKILL.md call:
curl
From the folder's file list and the shell code blocks in SKILL.md.
Network
Hosts in commands or code, which the agent is likely to contact:
classifier.dev
From URLs in SKILL.md, links to its own repository left out.
Credentials
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Context cost
Listing Hygiene Check loads about 1.5k tokens when it runs. Until then it costs about 112 tokens; SKILL.md has 595 words of instructions outside code blocks.
Always· name and description, kept in context so the agent knows when to use it
~112
When it runs· the whole SKILL.md, loaded when a task matches
~1.5k
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
Safety
Auto-check passed
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
Download SKILL.mdSave it as .claude/skills/listing-hygiene-check/SKILL.md (or your agent's skills folder).
name
listing-hygiene-check
description
Sweep a marketplace or catalogue with a keyless classification API: one pass for category, one multi-label pass for prohibited, counterfeit and misstated-condition signals, one for review-abuse patterns, severity set by the calibrated confidence band, and a queue file only a person acts on. Use on "check these listings", "find counterfeits", "audit the catalogue", "are these reviews fake", or before a category goes live.
license
MIT
Check listings and reviews for the usual abuse
classifier.dev tags text against labels you write and returns a score per
label. No key. Three passes over a catalogue export give a category, a set of
policy signals and a review-abuse read, each with a number. It removes nothing
and messages nobody. It fills a queue.
When not to use this
Enforcement. Nothing here suspends a seller, delists an item or answers a
trademark claim. Those need a person, usually with counsel.
Anything turning on the image, the invoice, the seller's history or a brand's
authorised-seller list. This reads listing text only.
Prohibited lists (knives, supplements, safety marks) differ by market. Write
the labels per market, with whoever owns policy.
Pass 1 — category, with an escape hatch
"labels": ["consumer electronics and accessories", "kitchen and home",
"health and supplements", "knives and weapons", "none of these"]
Single label. Miscategorisation is an old listing trick, and a category that
disagrees with a signal is a strong review candidate. Keep none of these:
without it every listing lands in a category whatever it sells.
Pass 2 — policy signals, multi-label
A listing can break two rules at once, so ask for every label that applies.
curl -s https://classifier.dev/v1/classify \
-H 'content-type: application/json' \
-d '{
"labels": ["counterfeit or replica of a known brand",
"restricted or prohibited item: weapons, drugs, live animals",
"unapproved health or medical claim",
"condition misstated: used or refurbished sold as new",
"pushes the buyer to contact or pay off the platform",
"no policy problem found"],
"instructions": "Flag every signal the listing text actually shows. Do not flag a signal that is only implied by the category.",
"multi": true, "max_labels": 3,
"inputs": ["Aple AirPads Pro 1:1 Original Quality, sealed box, same chip as retail. Message us on WhatsApp for bulk pricing.",
"Cast Iron Skillet 26cm, pre-seasoned, oven safe to 260C, made in Portugal, 2.9kg"]
}'
Real output. labels holds everything at or above 0.7, most likely first;
scores holds all six either way:
["pushes the buyer to contact or pay off the platform", "counterfeit or replica of a known brand"]
counterfeit 0.79 restricted 0.01 health claim 0.03
condition 0.21 off platform 0.93 no problem 0.22
["no policy problem found"]
every risk score 0.03 or lower no problem 0.72
Two labels fired on one listing: the misspelled brand and the off-platform
contact are separate violations with separate remedies.
Pass 3 — review abuse, on the reviews
Reviews are their own corpus. Classify review text, max_labels: 2:
"labels": ["paid or incentivised review: free product, refund or discount for the review",
"duplicated or templated text",
"the seller writing as a customer",
"solicits reviews off platform",
"ordinary review, positive or negative"]
Measured on six real-shaped reviews: "Got this free in exchange for my honest
review" scored incentivised 0.98; one offering a discount code for any review
fired incentivised 0.98 and off-platform 0.96 together. A negative two-star
review scored ordinary, 0.93 — say in instructions that abuse is not a bad
rating, or the pass becomes a sentiment filter.
Severity from the score band
Per signal, not per listing. Each label carries its own score:
0.9 and above — high severity. Queue it at the top and suppress the
listing from promoted placements pending a check, which is reversible.
0.5 to 0.9 — medium. Queue for review. Nothing changes for the seller.
Under 0.5 — log the score and move on.
Nothing is delisted, deleted or messaged by this. A person works the queue.
Clear a listing on the risk scores, not the clean label. Multi-label scores
are independent, and no policy problem found has no reason to be high: clean
listings came back at 0.72, 0.77 and 0.78, with every risk score at 0.04 or
lower. Auto-clear when max(risk scores) < 0.5, never on the clean label.
Show full SKILL.md (178 more words)Show less
The queue file
One JSON object per line, written by your code, never by the classifier:
{"id":"L-101","category":"consumer electronics and accessories","cat_conf":1.0,
"signals":[["off platform",0.93],["counterfeit",0.79]],"severity":"high","action":"none yet"}
Keep every score, the ones under 0.5 included. When a reviewer overturns a flag
you need the number behind it to say whether the label or the threshold was
wrong.
Pitfalls
max_labels truncates and 0.7 is the floor. Four problems return three
at max_labels: 3, and a signal at 0.6 is missing from labels entirely.
The scores map has everything; your medium band lives there.
labels can be empty. A plain chef's knife listing returned []: no risk
signal reached 0.7 and neither did no policy problem found, at 0.58. Code
that reads labels[0] breaks here. Read scores.
Multi-label results have no confidence field. Each label has its own
score and the bands apply per score; reading confidence here is a KeyError.
Sellers adapt. Re-read the 0.5 to 0.9 band monthly: evasions appear there
as near-ties before they appear as confident hits.
Limits per IP: 3,000 classifications a minute, 20,000 a day. Three passes
over 1,000 listings is 3,000; a 429 carries Retry-After.
Listing Hygiene Check next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
Listing Hygiene Check compared with similar skills
Skill
Stars
Used in
Tokens
Auto-check
Licence
Repo updated
Listing Hygiene Check this skillmrmps/classifier-dev
A skill your agent uses when the user asks to "watch my list health over time", "flag decaying / unengaged subscribers on a schedule", "why is my open rate drifting down / bounces creeping up", or…
A skill your agent uses when reviewing rendered HTML, interactive components, or design-system patterns related to Use correct definition list structure.
Full-sweep mode: runs a unified analysis across all quality dimensions — code decay, architecture, tech debt, and test quality — then applies fixes directly to the codebase.
Label each context chunk keep, drop or replace-with-a-pointer and pass the survivors through byte for byte instead of summarising, with key-shaped chunks decided locally and never sent, and a…
Label each page of an intake packet with a document type and a page role before extraction runs, so only confident pages reach an extractor and the rest reach a person.
Filter hundreds or thousands of headlines, search results or feed items against a written brief before opening any of them, using a two-stage cascade that spends a fast model on everything and a…
424 GitHub stars~1.5k tokensUpdated 3 days ago
Auto-check passed
Questions about Listing Hygiene Check
What does Listing Hygiene Check do?
Sweep a marketplace or catalogue with a keyless classification API: one pass for category, one multi-label pass for prohibited, counterfeit and misstated-condition signals, one for review-abuse…. Listing Hygiene Check is an agent skill from mrmps/classifier-dev. Sweep a marketplace or catalogue with a keyless classification API: one pass for category, one multi-label pass for prohibited, counterfeit and misstated-condition signals, one for review-abuse patterns, severity set by the calibrated confidence band, and a queue file only a person acts on.
How do I install Listing Hygiene Check in Claude Code?
Run `npx skills add mrmps/classifier-dev --skill listing-hygiene-check -a claude-code`. Or copy the skill folder (skills/listing-hygiene-check in mrmps/classifier-dev) into .claude/skills/listing-hygiene-check in your project. Claude Code loads it when a task matches its description.
How do I install Listing Hygiene Check in Codex?
Run `npx skills add mrmps/classifier-dev --skill listing-hygiene-check -a codex`. Or copy the skill folder (skills/listing-hygiene-check in mrmps/classifier-dev) into .agents/skills/listing-hygiene-check in your project. Codex loads it when a task matches its description.
Can I use Listing Hygiene Check in Cursor, Gemini CLI or GitHub Copilot?
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mrmps/classifier-dev --skill listing-hygiene-check -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/listing-hygiene-check, .gemini/skills/listing-hygiene-check, .github/skills/listing-hygiene-check and .opencode/skills/listing-hygiene-check in your project.
What does Listing Hygiene Check need to run?
Going by SKILL.md and its folder, Listing Hygiene Check needs the command-line tools its instructions call (curl).
Does Listing Hygiene Check access the network?
SKILL.md names 1 domain. In commands or code: classifier.dev; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Is Listing Hygiene Check safe to install?
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
What licence does Listing Hygiene Check use?
Listing Hygiene Check is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
How many tokens does Listing Hygiene Check use?
About 1.5k tokens (SKILL.md is roughly 6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
What are the alternatives to Listing Hygiene Check?
Skills that share tags, products or a category with Listing Hygiene Check: List Hygiene Monitor (aaron-he-zhu/aaron-marketing-skills, 2.9k stars), Music List (ruvnet/ruflo, 74k stars), Semantic Lists (thedaviddias/Front-End-Checklist, 74k stars) and List Structure (thedaviddias/Front-End-Checklist, 74k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Who maintains Listing Hygiene Check?
mrmps (a GitHub user) maintains it in mrmps/classifier-dev, which has 424 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 7, 2026.
Source: mrmps/classifier-dev on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.