From 00aa703b6c64efe36209081f16f0bd51670270cb Mon Sep 17 00:00:00 2001 From: Zhongwei Li Date: Sun, 30 Nov 2025 08:27:29 +0800 Subject: [PATCH] Initial commit --- .claude-plugin/plugin.json | 12 +++ README.md | 3 + plugin.lock.json | 45 +++++++++++ skills/running-quality-gate/SKILL.md | 116 +++++++++++++++++++++++++++ 4 files changed, 176 insertions(+) create mode 100644 .claude-plugin/plugin.json create mode 100644 README.md create mode 100644 plugin.lock.json create mode 100644 skills/running-quality-gate/SKILL.md diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..4141631 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "leapmultix-skill-running-quality-gate", + "description": "Skill running-quality-gate from LeapMultix", + "version": "1.0.0", + "author": { + "name": "Julien LE SAUX", + "email": "contact@jls42.org" + }, + "skills": [ + "./skills" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..5086540 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# leapmultix-skill-running-quality-gate + +Skill running-quality-gate from LeapMultix diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..bd3044e --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,45 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:jls42/leapmultix:leapmultix-marketplace/skills/running-quality-gate", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "be98896d2ca7584a35156f13961f6806121e6feb", + "treeHash": "8eac4f912ab9397c2bfae5d5d3da4699105aec8188bfc3c63e29d67500e1f964", + "generatedAt": "2025-11-28T10:19:14.543089Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "leapmultix-skill-running-quality-gate", + "description": "Skill running-quality-gate from LeapMultix", + "version": "1.0.0" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "33be6a48fdf96a9c6da33697173091febc087e1725e02ecbcea7551ef578144d" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "d6f4ff6440ad75f4ce1a6b7711d3601c1963d67453238580b190fcba82b6b225" + }, + { + "path": "skills/running-quality-gate/SKILL.md", + "sha256": "6e5f19bc6eb2698159939c93a6bd63d4a2d665a7dfc64d2f60b7f8835ed78c97" + } + ], + "dirSha256": "8eac4f912ab9397c2bfae5d5d3da4699105aec8188bfc3c63e29d67500e1f964" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file diff --git a/skills/running-quality-gate/SKILL.md b/skills/running-quality-gate/SKILL.md new file mode 100644 index 0000000..8367a80 --- /dev/null +++ b/skills/running-quality-gate/SKILL.md @@ -0,0 +1,116 @@ +--- +name: running-quality-gate +description: Executes all quality checks (format, lint, tests, i18n, coverage). Use before commits, PRs, or releases to ensure quality standards +allowed-tools: Read, Grep, Glob, Bash +--- + +# Porte de Qualité + +Exécute vérifications de qualité pour garantir standards avant commit/merge/release. + +## Table des matières + +- [Quand utiliser](#quand-utiliser) +- [Standards obligatoires](#standards-obligatoires) +- [Scripts npm](#scripts-npm) +- [Workflow séquentiel](#workflow-séquentiel) +- [Gestion des échecs](#gestion-des-échecs) +- [Checklist avant commit](#checklist-avant-commit) +- [En cas de doute](#en-cas-de-doute) + +## Quand utiliser + +- Avant créer commit +- Avant créer PR +- Avant merger vers main +- Avant release +- En CI/CD pipeline + +## Standards obligatoires + +**MUST PASS :** + +1. Formatage code (Prettier) +2. Linting (ESLint) +3. Tests unitaires (Jest) +4. Couverture ≥ 80% (Branches, Functions, Lines, Statements) +5. i18n synchronisé (fr.json, en.json, es.json) + +**Recommandés :** + +- Pas d'erreurs console +- Dead code vérifié +- Audit sécurité (`npm audit`) + +## Scripts npm + +Trouve et utilise : + +- `npm run format:check` - Vérifier formatage +- `npm run format` - Formater automatiquement +- `npm run lint` - Linter +- `npm run lint:fix` - Auto-fix linting +- `npm test` ou `npm run verify` - Tests + coverage +- `npm run i18n:compare` - Synchronisation traductions +- `npm run dead-code` - Détection code mort + +## Workflow séquentiel + +1. **Format :** `npm run format:check` + - Si ✗ : `npm run format` → commit changements +2. **Lint :** `npm run lint` + - Si ✗ : `npm run lint:fix` ou corrige manuellement +3. **Tests :** `npm test` + - Si ✗ : Identifier/corriger test échoué +4. **Coverage :** Vérifier rapport (≥ 80%) + - Si < 80% : Ajouter tests manquants +5. **i18n :** `npm run i18n:compare` + - Si désynchronisé : Ajouter clés manquantes +6. **Optionnels :** dead-code, audit + +**Total : < 2 min** + +## Gestion des échecs + +| Problème | Solution | +| ----------------- | ------------------------- | +| Format échoue | `npm run format` → commit | +| Lint auto-fixable | `npm run lint:fix` | +| Tests échouent | Debug test, corriger code | +| Coverage < 80% | Ajouter tests critiques | +| i18n désyncé | Ajouter clés manquantes | + +## Checklist avant commit + +- [ ] format:check ✅ +- [ ] lint ✅ +- [ ] tests ✅ (pas de .skip) +- [ ] coverage ≥ 80% +- [ ] i18n synchronisé +- [ ] console clean (pas de console.log) +- [ ] Code logiquement correct +- [ ] Commit message descriptif + +## En cas de doute + +**Règles absolues :** + +1. Lancer TOUS les scripts avant commit +2. Ne JAMAIS bypass vérifications +3. Corriger erreurs une par une +4. Re-lancer quality gate jusqu'à 100% pass +5. CI/CD doit être vert avant merge + +**Exécution rapide :** + +```bash +npm run format:check && npm run lint && npm test +``` + +**Références :** + +- Scripts npm (package.json) +- ESLint config (eslint.config.js) +- Prettier config (.prettierrc) +- Jest config (jest.config.cjs) +- CI/CD (.gitlab-ci.yml or .github/workflows)