Synthèse automatique
Vérifie les tarifs par token des modèles IA auprès des pages officielles des fournisseurs, met à jour backend/core/providers/pricing.py et régénère le rapport PRICING.md, uniquement dans le dépôt Chatty.
Points forts
- Applique deux garde-fous explicites : refus d'agir hors du dépôt Chatty et saut du re-fetch si les prix ont déjà été vérifiés dans la conversation en cours.
- Interdit toute invention de tarif : un modèle absent de la page officielle est laissé hors de MODEL_PRICING et signalé comme « unknown » plutôt que deviné.
- Génère PRICING.md à partir du code mis à jour (avec URL source et date de vérification par modèle) au lieu de laisser diverger des chiffres saisis à la main.
- Couvre aussi les modèles dynamiques récemment apparus, via l'union des clés existantes et des listes de modèles des fournisseurs.
Limites
- Fortement lié au dépôt Chatty : chemins de fichiers, fournisseurs et garde-fou d'identité sont codés en dur, donc peu réutilisable ailleurs.
- Dépend de WebFetch sur quatre pages de tarification dont la structure peut changer ou devenir inaccessible, ce qui peut rendre des modèles « unverifiable ».
- Ne couvre que le tier STANDARD et les fournisseurs listés (Anthropic, OpenAI, Google, Together) ; les autres tiers ou fournisseurs restent non traités.
À lancer lors de toute PR qui ajoute ou modifie des modèles, touche core/providers/ ou core/agents/usage/, ou sur demande explicite de vérification des prix.
À ne pas utiliser en dehors du dépôt Chatty, ni lorsqu'il faut des tarifs pour des fournisseurs ou des paliers de facturation non couverts par le skill.
Analyse de sécurité
SûrThe skill is narrowly scoped to the Chatty repository and only edits pricing metadata files. It explicitly forbids secret handling, avoids destructive commands, and uses network access solely to read public pricing pages. The automatic git commit is a mild operational concern but not a security risk.
- •Automatically commits changes to git without an explicit user confirmation step, though it is guarded to a specific repo and files.
- •Uses WebFetch against external pricing pages and may call local provider model-list endpoints if credentials are configured, but does not send secrets out.
Exemples
I just added Gemini 2.5 Flash to the provider model list — run price-check and show me the diff table before I open the PR.Check prices: is our model pricing current? Refresh pricing.py and PRICING.md if anything changed.Is pricing current? If any model's rate isn't on the official page, leave it out and tell me which ones are unknown.name: price-check description: Verify and refresh AI model pricing in Chatty's pricing.py from official provider pricing pages, and regenerate PRICING.md. Run during any PR that touches providers or usage. Skips re-fetching if pricing was already verified earlier in the current chat. Only operates inside the Chatty repo.
price-check
Keeps backend/core/providers/pricing.py (MODEL_PRICING + PRICING_SOURCES) current with published per-token rates and regenerates the reviewable report backend/core/providers/PRICING.md. No provider's models API exposes price, so this skill is the maintenance mechanism that keeps the usage/cost dashboard accurate as new models are added dynamically.
When to run
- During any PR that adds/changes models or touches
core/providers/orcore/agents/usage/(required by the projectCLAUDE.md→ Model Pricing). - On request: "check prices", "refresh model pricing", "is pricing current?".
Guard 1 — ship only in the Chatty repo
Before writing or committing anything, confirm this is the Chatty repo:
git remote -vcontainswwilson1017/chatty, ORCLAUDE.mdstarts with# ChattyANDbackend/core/providers/pricing.pyexists.
If neither holds, STOP: report that price-check only runs in the Chatty repo, and make no changes.
Guard 2 — skip if already verified this chat
If model pricing was already fetched/verified earlier in THIS conversation, or backend/core/providers/PRICING.md already shows Last verified: <today> with no pending diff, do NOT re-fetch. Reuse the in-session results and report "already current". Re-fetching wastes calls and risks rate limits.
Procedure
- Model set. Union of the keys in
MODEL_PRICINGand each provider's current model list — the fallback*_MODELSconstants, plus (if credentials are configured) whatGET /api/providers/{provider}/modelsreturns. This prices newly-surfaced dynamic models, not just legacy ones. - Fetch current STANDARD-tier rates (USD per 1M input / output tokens) via WebFetch from the official pages:
- Anthropic —
https://platform.claude.com/docs/en/about-claude/models/overview - OpenAI —
https://developers.openai.com/api/docs/pricing - Google —
https://ai.google.dev/gemini-api/docs/pricing - Together —
https://www.together.ai/pricingRecord tier caveats (e.g. Gemini 2.5 Pro is the ≤200K-prompt tier) in a code comment.
- Anthropic —
- Diff against the current
MODEL_PRICING; classify each model: added / changed / unchanged / unverifiable. - Never fabricate. If a model's rate isn't on the official page, leave it OUT of
MODEL_PRICINGand report it as "unknown" — the usage dashboard already flags unpriced paid models (is_priced/ per-agenthas_unknown_pricing). Do NOT guess from memory or community posts. - Write
backend/core/providers/pricing.py:MODEL_PRICING[model] = (input, output)PRICING_SOURCES[model] = (source_url, "<YYYY-MM-DD>")— use the current session date. Keep proven legacy entries (the dashboard prices historical rows by model id via longest-prefix match).
- Regenerate
backend/core/providers/PRICING.mdfrom the updatedpricing.py(do not hand-author divergent numbers): a header lineLast verified: <YYYY-MM-DD> (price-check)followed by a per-provider tablemodel | input $/M | output $/M | source | verified. - Report a concise diff table to the user. When run during a PR, also place the diff in the PR description.
Commit
- Commit
pricing.pyandPRICING.mdtogether, e.g.Refresh model pricing (price-check <YYYY-MM-DD>). - No
Co-Authored-Byor "Generated with Claude Code" footers (repo policy). - Never commit secrets; never run
gcloud secrets/--set-secretscommands.
Notes
- The session date is authoritative for the
verifieddate — read it from the environment context, don't compute it in code. - This skill is committed into the Chatty repo so it travels with the project; it is the canonical place to evolve the pricing-refresh workflow.
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/model-price-check-mrwak9bz/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/model-price-check-mrwak9bz' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/model-price-check-mrwak9bz/download' --output '.skill-downloads/model-price-check-mrwak9bz/SKILL.md.part' && mv '.skill-downloads/model-price-check-mrwak9bz/SKILL.md.part' '.skill-downloads/model-price-check-mrwak9bz/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.
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/model-price-check-mrwak9bz/SKILL.md' && test -s '.skill-downloads/model-price-check-mrwak9bz/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/price-check' && cp -R '.skill-downloads/model-price-check-mrwak9bz' '.claude/skills/price-check'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/model-price-check-mrwak9bz'openskills read 'model-price-check-mrwak9bz'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/model-price-check-mrwak9bz/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.
Bonnes pratiques React Hook Form
Developpement
Maîtrisez React Hook Form : évitez les anti-patterns, gérez les abonnements, et traitez correctement reset, dirty state et entrées contrôlées.
Migration Emotion vers Mantine
Developpement
Migrer les styled-components Emotion vers des composants Mantine avec style props et modules CSS. Pour convertir .styled.tsx ou supprimer les imports @emotion.
Détecteur de dérive de périmètre
Developpement
Analyse les diffs git par rapport à une intention pour détecter la dérive de périmètre, fichiers non liés et PR trop larges, puis suggère de garder, diviser ou justifier.