agentleFS
SyladSylad/claude-code-codex/.claude/skills/test-tool/SKILL.md

test-tool

Skill0 starsChanged 12 days agoMITView on GitHub

Use when the user wants to evaluate a third-party Claude Code tool (npm package, GitHub repo, plugin marketplace) before adopting it. Triggers on phrases like "/test-tool", "on teste X", "let's evaluate X", "is X any good?", or when the user shares a GitHub URL of a tool to assess. Runs the systematic test bench protocol (snapshot → install in sandbox → verify pollution → minimal usage → verdict → cleanup) and ships the verdict to the claude-code-codex Tools tested catalog.

  • Deletes or force-pushes

The file

We split this skill into the rules it gives an agent

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

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If the global pollution is unacceptable, abort here and go to Step 8 (cleanup) immediately.

    line 106
  2. Distinctive:

    Run 3-5 commands that exercise the tool's main value proposition.

    line 110
  3. Very specific:

    A --dry-run truthfulness check: : if the tool advertises --dry-run (or --no-global, --scope local, --preview), run it then immediately …

    line 114
  4. Distinctive:

    Always provide cleanup commands, even if the user adopts (so they can roll back later).

    line 131
  5. Very specific:

    Remove from settings.json enabledPlugins (with timestamped .bak backup)

    line 151
  6. Distinctive:

    Always update all of these :

    line 159
  7. Very specific:

    If verdict is reject + watchlist with significant lessons → set caseStudyHref: "/case-studies/<tool>"

    line 168
  8. Very specific:

    Use the existing case-studies/ruflo.astro as template

    line 170

≈ “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

Test Tool

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).

When to use

  • ✅ User says "on teste X", "let's try X", "/test-tool", or shares a GitHub repo / npm package URL with intent to evaluate.
  • ✅ A tool already in claude-code-codex/frontend/src/data/tools-tested.ts with status to-test or browsed needs a real verdict.
  • ✅ Periodic re-test of a watchlisted tool (cf watchlist_tools_to_revisit.md) that hit a maturity milestone.

When NOT to use

  • ❌ The user is asking about a tool but hasn't decided to test it yet — answer the question without spinning up the protocol.
  • ❌ The tool requires deep integration (auth, API keys, paid tier, multi-day setup) — the 8-step protocol assumes a quick evaluation, not a full migration.
  • ❌ The tool doesn't target Claude Code / the Anthropic ecosystem — out of scope.

The 8-step protocol

Track each step with TodoWrite from the start.

Step 1 — Snapshot global state

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/ | sort

Save these outputs as the "before" reference.

Step 2 — Inspect npm package + repo

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 -200

Red flags to surface immediately to user :

  • npm latest tag points to alpha / prerelease
  • License is non-OSS or absent
  • Last push > 6 months ago (unless ≥1k stars)
  • README install command is npx <tool> with no --dry-run flag mentioned
  • README claims "auto-detect everything" → likely invasive

Step 3 — Read install instructions VERY carefully

Look for :

  • A --dry-run or --scope local flag (good sign)
  • A uninstall command (good sign)
  • Phrases like "automatically configures your environment" (warning)
  • Bun / Deno / Python / Rust runtime requirements (potential bootstrap pain)
  • Marketplace registration vs project-local install (the latter is safer)

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.

Step 4 — Sandbox install (if possible)

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 command

For tools that ONLY install globally (~/.claude/), warn the user and ask for explicit OK before proceeding. Don't auto-run a global install.

Step 5 — Verify post-install diff

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 -20

Compare 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.

Step 6 — Minimal usage test

Run 3-5 commands that exercise the tool's main value proposition. Aim for :

  • Smallest example from README
  • A "does it actually work" smoke test
  • An "edge case" check (empty input, missing arg, etc.)
  • A --dry-run truthfulness check : if the tool advertises --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.

Step 7 — Verdict

Categorize the outcome :

VerdictCriteria
adoptUseful, clean install/uninstall, no global pollution surprises, mature, license OK
skillifyUseful concept but install too invasive / overkill — extract the idea into a Claude Code skill instead (see /skillify)
reject + watchlistNot adoptable today, but interesting enough to re-evaluate when [specific conditions]. Add to watchlist_tools_to_revisit.md.
reject hardToo invasive / abandoned / wrong target audience / license issue. Don't watchlist — drop.

Step 8 — Cleanup

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 ruflo

The script handles all 5 layers of pollution :

  1. Remove from installed_plugins.json
  2. Remove from known_marketplaces.json
  3. Remove from settings.json enabledPlugins (with timestamped .bak backup)
  4. rm -rf ~/.claude/plugins/marketplaces/<marketplace>/
  5. 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.

Output — Where the verdict lands

Always update all of these :

  1. Memory note at ~/.claude/projects/<project>/memory/<tool>_test_<YYYY-MM-DD>.md :
    • Frontmatter type: project
    • Sections : Setup, Snapshot diff, What works, Pitfalls, Verdict, Cleanup commands, Conditions for re-evaluation
  2. Watchlist at ~/.claude/projects/<project>/memory/watchlist_tools_to_revisit.md :
    • Append entry with verdict + re-test conditions (only if status reject + watchlist)
  3. Tools tested catalog at claude-code-codex/frontend/src/data/tools-tested.ts :
    • Set status correctly (tested, to-test, or browsed)
    • If verdict is reject + watchlist with significant lessons → set caseStudyHref: "/case-studies/<tool>"
  4. Case study (only if rich lessons) at claude-code-codex/frontend/src/pages/case-studies/<tool>.astro :
    • Use the existing case-studies/ruflo.astro as template
    • Sections : Pourquoi tester / Ce qu'on a testé / Verdict (panneau vert + panneau rouge) / Leçons à reprendre / Watchlist conditions
  5. MEMORY.md index updated with the new memory line.

Skip 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.


Examples

Example A — ruvnet/ruflo (2026-05-08) :

  • Snapshot OK, package alpha → flagged
  • Sandbox install with --no-global ➜ flag broken, modified ~/.claude/CLAUDE.md anyway
  • Cleanup --force incomplete (left .mcp.json, CLAUDE.md, ruvector.db)
  • Verdict : reject + watchlist (re-test conditions in memory)
  • Case study : /case-studies/ruflo with 8 lessons reprised (skill SPARC, skillify pattern, etc.)

Example B — thedotmack/claude-mem (2026-05-10) :

  • Stable v13.0.1, 74k stars, recent push ✓
  • BUT --help triggered full install (marketplace registered, plugin enabled, settings.json modified)
  • Bun runtime required, install failed mid-way without rollback
  • Verdict : reject + watchlist (re-test if --help becomes safe + uninstall command appears)

Anti-patterns

  • ❌ Skipping the snapshot (Step 1). Without baseline, you can't prove what got polluted.
  • ❌ Running <tool> --help before reading the README. Some installers misuse --help.
  • ❌ Auto-modifying ~/.claude/settings.json to undo damage — the Self-Modification hook will (rightly) block, and the user owns this file.
  • ❌ Adopting a tool without writing the cleanup script first. If you can't undo the install, don't install.
  • ❌ Skipping the case study when the test produced a transferable insight ("the user agreed not to adopt but learned 3 things") — those lessons evaporate without the case study.
  • ❌ Updating only the catalog without writing the memory note. The catalog is for visitors; the memory is for future sessions.

Companion skills

  • /skillify — when verdict is "skillify" (extract the idea into a custom skill)
  • /save — captures session-level meta-learnings; this skill captures tool-level findings

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.