Use for SPIP translation/i18n work — creating, editing, or auditing language files (lang/prefix_XX.php, lang/paquet-prefix_XX.php), naming keys, adding translations, using _T() / <:module:key:>, or debugging missing/untranslated strings.
Use when developing a SPIP plugin (paquet.xml present, _pipelines.php, spip_* table references in PHP) or when the user asks about plugin architecture, pipelines, hooks, or the SPIP PHP/SQL API. SPIP 4.1+. Not for template/squelettes work — use the spip-squelettes skill for that.
Use when creating, reviewing, or debugging SPIP CVT forms — canonical HTML wrappers, field/global errors, `charger`/`verifier`/`traiter`/`identifier`, or when deciding whether Saisies or Verifier are appropriate.
Use when writing, reading, or debugging SPIP logs — spip_log(), journal(), log constants, log file location, gravité levels, or log rotation. For SPIP 4.1+.
Guides automated testing of SPIP plugins and squelettes using PHPUnit — the standard test tool for SPIP. Covers the full self-contained setup (composer, spip-cli), unit tests with lightweight mocks, and integration tests against a real SPIP instance. Use whenever the user wants to test, verify, or validate a SPIP plugin or squelette — even if they don't mention PHPUnit — including questions like "how do I test my plugin", "I want to make sure my filtre works", or "how do I write tests for my autorisation / CVT form /
Use for any SPIP template question — BOUCLE loops, balises, critères, filtres, INCLURE, pagination, image filters, recursive trees, AJAX reloads. Covers public squelettes and plugin squelettes (espace privé, modèles). Trigger even when the user doesn't say "squelette". Not for PHP hooks/pipelines → use spip-plugins.