commit e4ba6b249f6783c10e47857ecd47052ab9ea3a26 Author: Zhongwei Li Date: Sun Nov 30 08:27:15 2025 +0800 Initial commit diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..3552796 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "leapmultix-skill-jsdoc-generator", + "description": "Skill jsdoc-generator 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..71e3a37 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# leapmultix-skill-jsdoc-generator + +Skill jsdoc-generator from LeapMultix diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..ce2b657 --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,45 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:jls42/leapmultix:leapmultix-marketplace/skills/jsdoc-generator", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "24d02ee336f5bfa5c48b92750d905d4a5a660bf5", + "treeHash": "df42bec7e426cfb230d5377ae7dc3d6d3d838669f5d40c8a105cff0c2295a2fa", + "generatedAt": "2025-11-28T10:19:13.356494Z", + "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-jsdoc-generator", + "description": "Skill jsdoc-generator from LeapMultix", + "version": "1.0.0" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "84f9f02bbeb9f8aefac12978392ad5ae3caf567d57366c06bc708c963ea66ffa" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "7a76e12fe454e15d4d350545270bf675443792b60e3f286e4cda10eb3e823d94" + }, + { + "path": "skills/jsdoc-generator/SKILL.md", + "sha256": "57e1ded7ad50c765a970cc598a63fa51ffc18bbaf2a16e736b24284a6148f548" + } + ], + "dirSha256": "df42bec7e426cfb230d5377ae7dc3d6d3d838669f5d40c8a105cff0c2295a2fa" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file diff --git a/skills/jsdoc-generator/SKILL.md b/skills/jsdoc-generator/SKILL.md new file mode 100644 index 0000000..5399bfc --- /dev/null +++ b/skills/jsdoc-generator/SKILL.md @@ -0,0 +1,117 @@ +--- +name: generating-jsdoc +description: Automatically generates JSDoc documentation for ES6 modules with @param, @returns, @throws and examples. Use when adding functions, refactoring, or improving documentation +allowed-tools: Read, Write, Grep, Glob, Bash +--- + +# Générateur JSDoc + +Génère documentation JSDoc pour modules ES6 (functions, classes, exports). + +## Table des matières + +- [Quand utiliser](#quand-utiliser) +- [Scripts npm](#scripts-npm) +- [Format JSDoc essentiel](#format-jsdoc-essentiel) +- [Patterns projet](#patterns-projet) +- [Workflow](#workflow) +- [Checklist](#checklist) +- [En cas de doute](#en-cas-de-doute) + +## Quand utiliser + +- Ajout fonctions ou classes +- Refactoring code +- Amélioration documentation +- Avant release +- Onboarding développeurs + +## Scripts npm + +- `npm run analyze:jsdoc` - Couverture JSDoc +- `npm run improve:jsdoc` - Améliorer documentation +- JSDoc HTML generation (si configuré) + +## Format JSDoc essentiel + +**Fonction :** + +```javascript +/** + * Description brève (impératif : "Calcule", pas "Cette fonction") + * + * @param {Type} paramName - Description + * @param {Type} paramName2 - Description + * @returns {Type} Description retour + * @throws {ErrorType} Conditions erreur + * @example + * functionName(value1, value2); // → result + */ +``` + +**Classe :** + +```javascript +/** + * Description classe + * @class + * @extends ParentClass + */ +export class ClassName {} +``` + +**Types :** `string`, `number`, `boolean`, `Array`, `{key: Type}`, `Promise`, `Type1|Type2` + +## Patterns projet + +**Priorités :** + +- Haute : API publiques, fonctions complexes, classes +- Moyenne : Méthodes, callbacks, utilitaires +- Basse : Fonctions privées simples, getters évidents + +**Tags spéciaux :** + +- `@typedef` - Définir types complexes +- `@fires` - Événements émis +- `@deprecated` - Code obsolète +- `@see {@link Name}` - Références croisées + +Examine code existant (modes, utils, core) pour patterns. + +## Workflow + +1. **Analyser :** `npm run analyze:jsdoc` → Identifier gaps +2. **Documenter :** Description + @param + @returns + @example +3. **Enrichir :** Cas limites, erreurs (@throws) +4. **Vérifier :** Code cohérent, types précis, exemples du domaine + +## Checklist + +- [ ] Description brève et impérative +- [ ] @param pour chaque paramètre avec type précis +- [ ] @returns avec type et description +- [ ] @throws si erreurs possibles +- [ ] @example (au moins 1 cas réaliste) +- [ ] @typedef pour types complexes +- [ ] Types précis (pas {Object} générique) +- [ ] Exemples avec valeurs du domaine +- [ ] Cas limites documentés (null, undefined) +- [ ] Cohérent avec reste projet + +## En cas de doute + +**Règles absolues :** + +1. Description impérative (imperative mood) +2. Types explicites (jamais {\*} sauf dernier recours) +3. Exemples du domaine (réalistes) +4. @example obligatoire pour API publiques +5. Maintenir à jour avec refactoring + +**Références :** + +- Code existant patterns (modes, utils) +- `npm run analyze:jsdoc` - Vérifier couverture +- JSDoc.app - Syntaxe spécifique +- Examiner fichiers bien documentés du projet