Synthèse automatique
Ce skill pilote l'état visuel du Loomi Pet d'OpenLoomi dans Claude Code et guide l'utilisateur dans la personnalisation de ses sprites et de son thème via le système de fichiers.
Points forts
- Liste explicitement les 9 états universels et précise lesquels sont réservés au watcher et ne doivent pas être déclenchés par Claude.
- Découpe la personnalisation en un arbre de décision clair : thème intégré, personnage maison, override d'un seul sprite, thème par défaut.
- Documente honnêtement les limites du bridge (pas de commande de thème ni d'override) et redirige vers les bons fichiers de configuration.
- Valide les noms d'état avant tout appel HTTP et retombe proprement si l'endpoint OpenLoomi n'existe pas encore.
Limites
- L'endpoint POST /api/pet/state peut être absent du runtime cible : le bridge se contente alors d'un message « would have set state » sans erreur.
- Le changement de thème et l'ajout de personnages passent uniquement par le menu contextuel ou des fichiers hors plugin, jamais par le bridge.
- Le skill est spécifique au plugin OpenLoomi et à son runtime ; il n'a aucun effet en dehors de cet écosystème.
À utiliser quand l'utilisateur veut faire réagir son Loomi Pet, changer d'état, basculer entre renard et capybara, ou ajouter son propre personnage.
À éviter si l'utilisateur n'a pas installé le plugin OpenLoomi ou cherche un contrôle d'interface générique indépendant du pet.
Analyse de sécurité
PrudenceThe skill relies on Bash to run a fixed node script that sends state updates over HTTP to the local OpenLoomi runtime. The script validates state names before making any request and falls back gracefully if the endpoint is missing. No destructive commands, exfiltration, or obfuscation are described, but the combination of Bash execution and network calls warrants a caution rating rather than safe.
- •Uses Bash to execute a node script with wildcard arguments (Bash(node ${CLAUDE_PLUGIN_ROOT}/scripts/loomi-bridge.mjs *)).
- •The bridge script makes HTTP POST requests to a local API endpoint (/api/pet/state), which is network activity for legitimate state changes.
Exemples
/openloomi:pet happy — the build just passed, make Loomi celebrate.I'd rather see the capybara than the fox — how do I switch my Loomi Pet theme?I drew my own cat sprites. Where do I put them so Loomi uses my cat as a pet theme?name: openloomi-pet description: "OpenLoomi Pet sprite & state helper for Claude Code. Use when the user wants to change their Loomi Pet state, switch theme, drop in a custom character, override individual sprites, or ask Claude to mirror its lifecycle onto the pet. Triggers: pet state, /openloomi:pet, set pet, loomi pet, pet to happy, pet to working, pet to thinking, fox sprite, capybara sprite, custom pet theme, pet-custom, pet-config, override pet sprite." allowed-tools: Bash(node ${CLAUDE_PLUGIN_ROOT}/scripts/loomi-bridge.mjs *)
OpenLoomi Pet Sub-skill
The Loomi Pet has 9 universal state names. The plugin ships the fox
(loomi-*) sprite set for branding; the OpenLoomi runtime's
state-resolution watcher renders the matching sprite for whichever
theme you have active (fox or capybara, or any folder under
~/.openloomi/pet-custom/). State set:
| State | When to use |
|---|---|
| happy | A task just completed successfully |
| idle | Loomi is waiting for the next loop tick (watcher-only — do not set from Claude) |
| juggling | Multiple sub-agents are running |
| needsinput | Permission prompt / elicitation dialog visible |
| presenting | Fresh decision requires the user's review (watcher-only — do not set from Claude) |
| sleeping | Local hour outside 6–22 with no pending work (watcher-only — do not set from Claude) |
| sweeping | User dismissed a card just now (watcher-only) |
| thinking | Between steps, awaiting LLM response |
| working | A tool call is in progress (PreToolUse hook fires this) |
Available commands
node ${CLAUDE_PLUGIN_ROOT}/scripts/loomi-bridge.mjs pet <state>— synchronous, returns JSON; use only when the user explicitly asks.- Hooks call
state <name>automatically (fire-and-forget, 2s timeout).
Sprite set is hardcoded in the bridge — invalid state names are rejected
before any HTTP call. The endpoint POST /api/pet/state may not yet exist
in the target OpenLoomi runtime; the bridge falls back to "would have set
state to X — pending OpenLoomi endpoint" without raising an error.
Help the user customize their pet's appearance
The bridge only drives the state — sprite overrides and theme folders
are file-based and live outside the plugin. When the user asks to "change
the pet's look" or "add a custom character", walk them through the file
system. Do not try to write pet-config.json from the bridge; the
bridge has no such command and the runtime's file watcher does the work.
Decision tree
- "I just want the other built-in" → right-click Loomi →
Theme → Fox/Theme → Capybara. Persisted in~/.openloomi/pet-config.jsonunderactiveTheme. Long-press (~600 ms) is the fallback ifcontextmenuis swallowed by the host. - "I want my own character" → drop a folder at
~/.openloomi/pet-custom/<name>/with PNGs named after the states. The watcher auto-discovers it within ~250 ms and the theme appears in the menu. - "I want to change just one sprite" → edit
~/.openloomi/pet-config.json'soverridesmap. Wins over both built-ins and custom-theme sprites for the matching(theme, state)pair. - "I want to make my theme the default" → set
activeThemeto the custom theme's folder name.
What the bridge can and can't do
| User intent | Bridge role |
| ------------------------------------------ | -------------------------------------------------------------------------- |
| Flip to happy mid-task | /openloomi:pet happy — yes |
| Switch fox ↔ capybara | No — that's a menu action or pet-config.json edit; do not try the bridge |
| Add a custom character | No — direct them to ~/.openloomi/pet-custom/<name>/ and the file watcher |
| Override a single sprite | No — direct them to ~/.openloomi/pet-config.json's overrides map |
| Diagnose "the pet isn't switching themes" | Direct them to the troubleshooting section in pet docs |
| Drive the pet from their own tool | Direct them to POST /api/pet/state — see Pet API |
Filename conventions to communicate
When guiding the user through a custom theme, surface these conventions up-front:
- PNG only.
.gif,.webp,.apng,.lottieare silently ignored. - Bare or prefixed names both work.
idle.png,loomi-idle.png,capybara-thinking.png,my-pack-sweeping.pngall normalize correctly (case-insensitive). - One recognizable state PNG is enough. The folder is registered as a theme as soon as it has ≥1 normalized state stem; missing states fall through to the active theme's
idlesprite. - Hidden / dot-prefixed folders are ignored.
.git,.DS_Storeetc.
Override JSON shape to communicate
The overrides map is camelCase on the wire — activeTheme, customThemesDir. Snake_case keys silently no-op the assignment (a unit test in the runtime pins the contract). Use the exact shape:
{
"version": 1,
"activeTheme": "fox",
"customThemesDir": "~/.openloomi/pet-custom",
"overrides": {
"fox": {
"idle": "/absolute/path/to/my-fox-idle.png"
}
}
}
Absolute paths only — the runtime routes them through tauri::convertFileSrc, so relative paths and ~/ prefixes will not resolve.
Common pitfalls to surface
- The folder doesn't show up — usually a missing or mis-named state PNG. Run them through the filename convention table.
- Override doesn't apply — host log line
[loomi-pet/theme] failed to parse ~/.openloomi/pet-config.jsonmeans the JSON itself is malformed and defaults loaded. Host log line[loomi-pet/theme] failed to read <path>: <io error>means the path doesn't resolve. - Theme menu tick is wrong / stuck — almost always a camelCase vs snake_case wire-format mismatch. The widget reads
activeTheme, notactive_theme. sleeping/sweepingrejected by/api/pet/state— those are watcher-only vocabulary; the runtime returns400 invalid_state. Do not POST them from your tool.
What NOT to do from Claude
- Do not try to call
POST /api/pet/statewithsleepingorsweeping. The API rejects them; the watcher owns them. - Do not try to write
pet-config.jsonfrom the bridge. The bridge has no command for it; the file watcher owns updates. - Do not invent new state names.
CAPYBARA_STATESrejects them before any HTTP call. - Do not claim support for non-PNG sprite formats. The asset pipeline is static PNG only.
- Do not say "I'll set up your custom theme for you" if you can only walk them through the file system. The watcher does the work; you guide.
See also
- Customize your Loomi Pet (user docs) — full guide to themes, custom folders, overrides, troubleshooting
- Pet API —
POST /api/pet/statefor external tools - Attention Agent — the desktop pet as a whole
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/openloomi-pet-sprite-state-helper-mtwgrt9y/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/openloomi-pet-sprite-state-helper-mtwgrt9y' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/openloomi-pet-sprite-state-helper-mtwgrt9y/download' --output '.skill-downloads/openloomi-pet-sprite-state-helper-mtwgrt9y/SKILL.md.part' && mv '.skill-downloads/openloomi-pet-sprite-state-helper-mtwgrt9y/SKILL.md.part' '.skill-downloads/openloomi-pet-sprite-state-helper-mtwgrt9y/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Outils déclarés par l’auteur (à vérifier dans votre agent) : Bash(node ${CLAUDE_PLUGIN_ROOT}/scripts/loomi-bridge.mjs *)
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/openloomi-pet-sprite-state-helper-mtwgrt9y/SKILL.md' && test -s '.skill-downloads/openloomi-pet-sprite-state-helper-mtwgrt9y/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/openloomi-pet' && cp -R '.skill-downloads/openloomi-pet-sprite-state-helper-mtwgrt9y' '.claude/skills/openloomi-pet'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/openloomi-pet-sprite-state-helper-mtwgrt9y'openskills read 'openloomi-pet-sprite-state-helper-mtwgrt9y'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/openloomi-pet-sprite-state-helper-mtwgrt9y/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Lecteur PDF
Productivite
Lit et extrait le texte de fichiers PDF (rapports, contrats, tableurs). Gère les fichiers locaux, les URL et les pièces jointes WhatsApp. Utilisez-le dès qu'un contenu PDF est nécessaire, même sans demande explicite.
Workflows de messagerie Discord
Productivite
Utilisez l'outil message pour envoyer, modifier et modérer des messages Discord avec des composants interactifs.
Aperçu interactif des verdicts
Productivite
Générer un aperçu HTML interactif des verdicts (garder/supprimer) pour la revue par le mainteneur, puis traiter le JSON de retour.