How this skill is triggered — by the user, by Claude, or both
Slash command
/batterie:versionThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
!`python3 << 'PYEOF'
!`python3 << 'PYEOF' import json, os, subprocess, shutil
plugins_path = os.path.join(os.path.expanduser("~"), ".claude", "plugins", "installed_plugins.json") try: plugins = json.load(open(plugins_path)).get("plugins", {}) except Exception as e: print(f"Could not read installed plugins ({e}).") plugins = {}
batterie = {k.split("@")[0]: v[0] for k, v in plugins.items() if k.endswith("@batterie") and v}
suite = batterie.get("batterie", {}).get("version") if suite: print(f"📦 Batterie suite v{suite}") else: print("📦 Batterie suite — not installed (no batterie@batterie plugin found)")
if batterie: print("\nPlugins:") for name, info in sorted(batterie.items()): marker = " (suite)" if name == "batterie" else "" print(f" - {name}: v{info.get('version', '?')}{marker}")
cli_tools = {"bon": "bon", "passe": "passe", "todoist-gtd": "todoist"} header = False for plugin_name, cli_name in cli_tools.items(): if plugin_name in batterie and shutil.which(cli_name): if not header: print("\nCLI tools:") header = True try: r = subprocess.run([cli_name, "--version"], capture_output=True, text=True, timeout=5) print(f" - {cli_name}: {(r.stdout or r.stderr).strip() or '(no version output)'}") except Exception: print(f" - {cli_name}: (version check failed)") PYEOF`
Tell the user their Batterie suite version (the 📦 line above) — that's the single number to quote ("I'm on Batterie vX") or to check against ("you need ≥ vY"). List the per-plugin versions underneath if useful. If anything looks behind, point them at /batterie:update.
npx claudepluginhub spm1001/batterie-de-savoir --plugin batterieCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.