test-tool — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited test-tool (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
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.
Evaluates a third-party tool from the Claude Code ecosystem with a reproducible, low-risk protocol. Captures the verdict where it counts (memory + watchlist + Tools tested catalog on the site + case study if the tool taught us something significant).
claude-code-codex/frontend/src/data/tools-tested.ts with status to-test or browsed needs a real verdict.watchlist_tools_to_revisit.md) that hit a maturity milestone.Track each step with TodoWrite from the start.
Capture md5 + listings BEFORE touching anything. This is the "control" we'll diff against post-install :
echo "=== md5 baseline ==="
md5sum ~/.claude/CLAUDE.md ~/.claude/settings.json
echo "=== plugins/ baseline ==="
ls ~/.claude/plugins/marketplaces/ ~/.claude/plugins/cache/
cat ~/.claude/plugins/installed_plugins.json | head -3
cat ~/.claude/plugins/known_marketplaces.json | head -3
echo "=== ~/.claude/ root files ==="
ls ~/.claude/ | sortSave these outputs as the "before" reference.
Cheap surface assessment — should the tool even be tested ?
# npm
npm view <pkg> version description main bin license repository.url
npm dist-tag ls <pkg>
npm view <pkg> versions --json | tail -20 # detect alpha-as-latest anti-pattern
# GitHub
gh repo view <org>/<repo> --json description,stargazerCount,licenseInfo,homepageUrl,pushedAt
gh api repos/<org>/<repo>/readme --jq .content | base64 -d | head -200Red flags to surface immediately to user :
npm latest tag points to alpha / prereleasenpx <tool> with no --dry-run flag mentionedLook for :
--dry-run or --scope local flag (good sign)uninstall command (good sign)Do NOT run `<tool> --help` blindly. Learned 2026-05-10 with claude-mem : its --help triggered the full install (marketplace registered, plugin enabled, settings.json modified). Always read the README first; if --help is the only doc, run it in a sandbox or after explicit user confirmation.
Do NOT trust `--dry-run` on word. Learned 2026-05-10 with claude-code-templates : the flag is documented (\"show what would be copied without actually copying\") but --dry-run --agent X --yes actually downloaded and wrote the file. Test the flag's truthfulness by running it in a sandbox and checking the post-state diff before relying on it. Apply the same skepticism to --scope local, --no-global, --preview.
For tools that genuinely support project-local mode :
SANDBOX=~/projects/developpeur/<tool>-sandbox
mkdir -p $SANDBOX && cd $SANDBOX
git init -b main
# Then run the project-local install commandFor tools that ONLY install globally (~/.claude/), warn the user and ask for explicit OK before proceeding. Don't auto-run a global install.
echo "=== md5 NOW ==="
md5sum ~/.claude/CLAUDE.md ~/.claude/settings.json
echo "=== plugins/ NOW ==="
ls ~/.claude/plugins/marketplaces/ ~/.claude/plugins/cache/
echo "=== new files in ~/.claude/ ==="
find ~/.claude -newer /tmp/.test-tool-marker -type f 2>/dev/null | head -20Compare against Step 1 baseline. List concretely what was added/modified.
If the global pollution is unacceptable, abort here and go to Step 8 (cleanup) immediately.
Run 3-5 commands that exercise the tool's main value proposition. Aim for :
--dry-run (or --no-global, --scope local, --preview), run it then immediately re-snapshot. If ~/.claude/, ./.claude/, or any state was actually written, the flag is a lie — record this as a major caveat in the verdict.Capture stdout + exit codes.
Categorize the outcome :
| Verdict | Criteria |
|---|---|
| adopt | Useful, clean install/uninstall, no global pollution surprises, mature, license OK |
| skillify | Useful concept but install too invasive / overkill — extract the idea into a Claude Code skill instead (see /skillify) |
| reject + watchlist | Not adoptable today, but interesting enough to re-evaluate when [specific conditions]. Add to watchlist_tools_to_revisit.md. |
| reject hard | Too invasive / abandoned / wrong target audience / license issue. Don't watchlist — drop. |
Always provide cleanup commands, even if the user adopts (so they can roll back later).
For tools with a working uninstall command, prefer that.
For tools that polluted ~/.claude/plugins/ (no uninstall, or incomplete one), use the cleanup helper script :
~/projects/developpeur/claude-code-codex/scripts/cleanup-test-tool.sh \
<plugin-id> <marketplace-id>
# Example for claude-mem :
./scripts/cleanup-test-tool.sh claude-mem@thedotmack thedotmack
# Example for ruflo :
./scripts/cleanup-test-tool.sh ruflo-core@ruflo rufloThe script handles all 5 layers of pollution :
installed_plugins.jsonknown_marketplaces.jsonsettings.json enabledPlugins (with timestamped .bak backup)rm -rf ~/.claude/plugins/marketplaces/<marketplace>/rm -rf ~/.claude/plugins/cache/<marketplace>/Important : the user must run the script themselves — Claude is blocked by the Self-Modification hook on ~/.claude/settings.json. Give them the one-liner above with the right <plugin-id> and <marketplace-id> for the tool tested.
Always update all of these :
~/.claude/projects/<project>/memory/<tool>_test_<YYYY-MM-DD>.md :type: project~/.claude/projects/<project>/memory/watchlist_tools_to_revisit.md :reject + watchlist)claude-code-codex/frontend/src/data/tools-tested.ts :status correctly (tested, to-test, or browsed)reject + watchlist with significant lessons → set caseStudyHref: "/case-studies/<tool>"claude-code-codex/frontend/src/pages/case-studies/<tool>.astro :case-studies/ruflo.astro as templateSkip the case study when the verdict is trivial (adopt with no surprises, or reject hard with no transferable lessons). Only invest in a case study when the test taught us something durable about the ecosystem.
Example A — `ruvnet/ruflo` (2026-05-08) :
--no-global ➜ flag broken, modified ~/.claude/CLAUDE.md anyway--force incomplete (left .mcp.json, CLAUDE.md, ruvector.db)/case-studies/ruflo with 8 lessons reprised (skill SPARC, skillify pattern, etc.)Example B — `thedotmack/claude-mem` (2026-05-10) :
--help triggered full install (marketplace registered, plugin enabled, settings.json modified)--help becomes safe + uninstall command appears)<tool> --help before reading the README. Some installers misuse --help.~/.claude/settings.json to undo damage — the Self-Modification hook will (rightly) block, and the user owns this file./skillify — when verdict is "skillify" (extract the idea into a custom skill)/save — captures session-level meta-learnings; this skill captures tool-level findings/sync-site-docs — when the case study lands, this skill keeps the cross-doc references aligned~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.