Plugins de publication
Partagez votre plugin avec la communauté bext en le publiant dans le registre des plugins à l'adresse plugins. bext.dev. Les plugins peuvent être gratuits ou payants, et le registre gère la découverte, la gestion des versions, les audits de sécurité et les paiements.
Conditions préalables#
Avant de publier, assurez-vous que votre plugin :
- Possède un
plugin.tomlvalide avec tous les champs obligatoires remplis. - Réussit
bext plugin testsans échec. - Possède un
README.mddans le répertoire racine du plugin. - N'inclut pas les secrets, les informations d'identification ou les fichiers
.env.
Authentifiez-vous auprès du registre :
bext auth login
Cela ouvre une fenêtre de navigateur pour l'authentification OAuth. Votre jeton API est stocké dans ~/.config/bext/credentials.toml.
Édition#
cd my-plugin
bext plugin publish
La CLI regroupe votre répertoire de plugins, le télécharge dans le registre et exécute un audit de sécurité automatisé. La commande :
- Valide la structure
plugin.tomlet les champs obligatoires. - Vérifie que le champ
nameest disponible (pas déjà pris par un autre éditeur). - Regroupe la source du plugin, le manifeste, le README et les fichiers de test.
- Télécharge le bundle vers les plugins. bext.dev.
- Déclenche le pipeline automatisé d’audit de sécurité et de qualité.
- Renvoie l'URL de la version publiée.
Publishing maintenance-mode@0.1.0...
Validating manifest... OK
Bundling 3 files (4.2 KB)... OK
Uploading to plugins.bext.dev... OK
Security audit... PASSED (score: 92/100)
Published: https://plugins.bext.dev/plugins/maintenance-mode/0.1.0
Gestion des versions#
Les plugins suivent versionnement sémantique. Augmentez le champ version dans plugin.toml avant chaque publication :
[manifest]
name = "maintenance-mode"
version = "0.2.0"
Le registre refuse de republier une version existante. Utilisez --force uniquement pour les versions préliminaires ( 0.x.x ) :
bext plugin publish --force
Les utilisateurs peuvent épingler une version spécifique ou utiliser une plage :
# bext.config.toml
[plugins.maintenance-mode]
version = "^0.2.0" # Compatible with 0.2.x
Lorsqu'une nouvelle version est publiée, bext informe les utilisateurs sur lesquels le plugin est installé via la CLI :
$ bext dev
Plugin update available: maintenance-mode 0.2.0 -> 0.3.0
Run `bext plugins install maintenance-mode` to upgrade to the latest
Audit de sécurité#
Chaque plugin publié passe par un audit de sécurité automatisé qui vérifie :
- Analyse statique : recherche les modèles de vulnérabilité connus (utilisation d'évaluation, pollution de prototype, tentatives de traversée de chemin).
- Examen des autorisations -- signale les plugins demandant des autorisations étendues (
allowed_urls = ["*"]). - Analyse des dépendances -- pour les plugins WASM, vérifie les bibliothèques liées par rapport aux bases de données CVE connues.
- Conformité Sandbox -- vérifie que le plugin fonctionne proprement dans ses limites de ressources déclarées.
- Examen de la source -- vérifie le code obscurci ou tente de contourner les restrictions du bac à sable.
Les résultats sont visibles sur la page de registre du plugin et résumés sous forme d'un score de 0 à 100.
Niveau de qualité#
Le registre attribue un score de qualité basé sur :
| Facteur | Poids | Description |
|---|---|---|
| Couverture des tests | 25% | Pourcentage d'hameçons exportés couverts par les tests |
| Documentation | 20% | Longueur du fichier README, exemples de code, documents de configuration |
| Audit de sécurité | 25% | Résultats de l'analyse de sécurité automatisée |
| Entretien | 15% | Fréquence de publication, temps de réponse aux problèmes |
| Usage | 15% | Nombre d'installations, installations actives |
Les plugins ayant un score inférieur à 50 sont signalés par un avertissement sur la page de registre.
Tarification : plugins gratuits et payants#
Plugins gratuits#
La valeur par défaut. Les utilisateurs installent et utilisent votre plugin gratuitement :
[manifest]
name = "security-headers"
version = "1.0.0"
pricing = "free"
Plugins payants#
Facturez des frais mensuels par installation. Les revenus sont répartis à 80/20 (vous conservez 80 %, bext conserve 20 %) :
[manifest]
name = "advanced-waf-rules"
version = "1.0.0"
pricing = "paid"
[pricing]
monthly_usd = 9.99
trial_days = 14
Pour recevoir des paiements, connectez votre compte Stripe :
bext plugin connect-stripe
Cela lance le flux d’intégration de Stripe Connect. Une fois connectés, les paiements sont déposés automatiquement sur votre compte Stripe avec un échéancier de paiement glissant sur 30 jours.
Les utilisateurs voient le prix sur la page de registre et sont invités à s'abonner lors de l'installation :
$ bext plugins install advanced-waf-rules
This is a paid plugin: $9.99/month (14-day free trial)
Subscribe? [y/N]: y
Subscription created. Plugin installed.
Gestion des abonnements#
Affichez les revenus de votre plugin et le nombre d'abonnés :
bext plugin revenue advanced-waf-rules
Les utilisateurs peuvent annuler à tout moment :
bext plugin unsubscribe advanced-waf-rules
Le plugin continue de fonctionner jusqu'à la fin de la période de facturation en cours.
Mettre à jour un plugin publié#
# Edit plugin.toml to bump version
# Make your changes
bext plugin test # Verify tests pass
bext plugin publish # Upload new version
Dépublication#
Vous pouvez dépublier une version dans les 72 heures suivant la publication. Après cela, les versions sont immuables pour protéger les utilisateurs qui en dépendent :
bext plugin unpublish maintenance-mode@0.1.0
Pour déprécier un plugin (suppression logicielle avec message) :
bext plugin deprecate maintenance-mode --message "Use maintenance-mode-v2 instead"
Les plugins obsolètes fonctionnent toujours mais affichent un avertissement pendant bext dev et bext build.
Les versions du plugin sont immuables après 72 heures. Si vous publiez une version défectueuse et que vous manquez cette fenêtre, vous devez publier une nouvelle version du correctif : bext plugin unpublish sera rejetée. Testez localement avec bext plugin test avant chaque publication.
Page du plugin#
Chaque plugin publié obtient une page à plugins.bext.dev/plugins/<name> affichant :
- README rendu au format HTML
- Historique des versions avec journaux des modifications
- Score d'audit de sécurité
- Niveau de qualité
- Nombre d'installations et installations actives
- Référence de configuration (générée automatiquement à partir de
plugin.toml) - Détails des prix (pour les plugins payants)
En rapport#
- Présentation du système de plugins — types de fonctionnalités, niveaux sandbox et registre des plugins
- Construire un plugin — échafauder, tester et préparer un plugin pour la publication
- Plugins QuickJS — le bac à sable le plus courant pour les plugins communautaires publiés
- Plugins WASM — publication de plugins Rust/Go/C compilés
- Référence de configuration — comment les sections
[plugins.*]sont câblées