Publication sur le Registre
Le marketplace AISCouncil utilise un modèle de distribution à niveaux qui équilibre ouverture et confiance. Vous pouvez distribuer des applications librement par URL, ou les lister dans le registre pour une découverte plus large avec des badges de confiance.
Niveaux de Distribution
| Niveau | Comment Lister | Revue | Badge | Applications Payantes | En Vedette |
|---|---|---|---|---|---|
| Direct Install | L'utilisateur colle n'importe quelle URL de manifeste | Aucune | Aucun | Non | Non |
| Community | PR vers registry/packages.json | Automatisée | "Community" | Oui | Non |
| AI Verified | Community + scan IA payant | Audit de sécurité LLM | "AI Verified" | Oui | Non |
| Verified | Community + revue manuelle de l'équipe | Revue humaine | "Verified" | Oui | Oui |
Direct Install
La méthode de distribution la plus simple. Hébergez votre manifeste et fichiers n'importe où, puis partagez l'URL du manifeste. Les utilisateurs la collent dans la section Sideload pour installer.
- Pas de listing dans le registre nécessaire
- Pas de processus de revue
- Pas de badge de confiance
- Applications gratuites uniquement
- Fonctionne immédiatement
C'est le modèle de distribution natif du web. Voir Sideloading Apps pour les détails.
Community
Le listing standard du registre. Soumettez une pull request pour ajouter votre application à registry/packages.json. Si la validation automatisée passe, la PR peut être fusionnée et votre application apparaît dans l'App Store avec un badge "Community".
- Validation automatisée via
validate.py - Découvrable dans l'App Store
- Supporte les applications gratuites et payantes
- Pas de revue manuelle requise
AI Verified
Une mise à niveau de confiance optionnelle pour les applications Community. Payez pour un scan de sécurité alimenté par LLM qui vérifie votre code pour les logiciels malveillants, l'exfiltration de données, le mauvais usage des permissions, le code obfusqué et les tentatives d'évasion du bac à sable.
- Coûte 19-99 $ par version selon la profondeur du scan
- Le badge est épinglé à un hash de contenu SHA-256
- Les changements de code invalident le badge
- Le badge expire après 12 mois
Le système AI Verified (les endpoints /v1/verify/*) est prévu pour une version future. Le workflow décrit ici sera disponible lorsque ces endpoints seront disponibles.
Verified
Le plus haut niveau de confiance. Un mainteneur de la plateforme révise manuellement votre manifeste, permissions, HTML d'entrée et (pour les plugins) le binaire WASM.
- Nécessite une approbation humaine
- Obtient le badge "Verified"
- Placement en vedette dans l'App Store
- Recommandé pour les applications gérant des données sensibles
Publier une Application Gratuite (Niveau Community)
1. Hébergez Vos Fichiers d'Application
Uploadez votre manifest.json et index.html (plus les ressources) sur un CDN accessible publiquement. Options gratuites populaires :
| Hébergeur | Pattern d'URL | Configuration |
|---|---|---|
| GitHub Pages | yourname.github.io/app-name/ | Activer dans repo Settings > Pages |
| Cloudflare Pages | app-name.pages.dev/ | Connecter le repo dans le dashboard CF |
| Vercel | app-name.vercel.app/ | Importer le repo sur vercel.com |
| Netlify | app-name.netlify.app/ | Importer le repo sur netlify.com |
Assurez-vous que votre manifest.json a le bon base_url pointant vers l'emplacement des fichiers hébergés :
{
"name": "word-counter",
"version": "1.0.0",
"abi": 1,
"type": "mini-program",
"entry": "index.html",
"base_url": "https://yourname.github.io/word-counter/"
}
2. Testez Votre Application
Avant de soumettre, vérifiez que l'application fonctionne en la sideloadant :
- Ouvrez aiscouncil.net
- Allez dans Apps > Sideload
- Collez votre URL de manifeste
- Installez et testez toutes les fonctionnalités
3. Forkez le Référentiel
Allez sur github.com/nicholasgasior/bcz et cliquez sur Fork.
4. Ajoutez Votre Entrée de Package
Éditez registry/packages.json et ajoutez une entrée au tableau packages :
{
"name": "word-counter",
"type": "mini-program",
"version": "1.0.0",
"manifest": "https://yourname.github.io/word-counter/manifest.json",
"tier": "community",
"category": "utilities",
"description": "Count words in your chat history by role",
"icon": "https://yourname.github.io/word-counter/icon.png",
"added": "2026-02-19",
"price": 0,
"currency": "USD",
"seller": null
}
5. Validez
Exécutez le script de validation pour vérifier votre entrée :
python3 registry/validate.py packages
Corrigez les erreurs avant de continuer. Problèmes courants :
| Erreur | Correction |
|---|---|
| Nom ne correspond pas | name dans packages.json doit correspondre à name dans manifest.json |
| Version invalide | Utilisez le format semver : 1.0.0, pas 1.0 ou v1.0.0 |
| Champ requis manquant | Assurez-vous que name, type, version et manifest sont présents |
| Niveau invalide | Doit être community, ai-verified ou verified |
6. Soumettez une Pull Request
Poussez vos changements vers votre fork et créez une PR contre la branche main. Incluez :
- Une brève description de ce que fait votre application
- Un lien vers l'application hébergée pour que les relecteurs puissent la tester
- Des captures d'écran si applicable
Si la validation automatisée passe, la PR peut être fusionnée et votre application apparaîtra dans l'App Store.
Format d'Entrée du Registre de Package
Champs Requis
| Champ | Type | Description |
|---|---|---|
name | string | Nom du package (doit correspondre au name du manifeste) |
type | string | "plugin", "addon" ou "mini-program" |
version | string | Semver (doit correspondre à la version du manifeste) |
manifest | string | URL complète vers le manifest.json hébergé |
Champs Optionnels
| Champ | Type | Défaut | Description |
|---|---|---|---|
tier | string | "community" | "community", "ai-verified" ou "verified" |
category | string | -- | L'un de : productivity, developer, communication, media, utilities, games, education, finance |
description | string | -- | Description du listing du store |
icon | string | -- | URL vers l'icône (PNG 128x128 recommandé) |
added | string | -- | Date ISO 8601 de première publication (ex., "2026-02-19") |
price | number | 0 | Prix en centimes (0 = gratuit, 499 = 4,99 $) |
currency | string | "USD" | Code devise ISO 4217 |
priceType | string | -- | "one-time" pour achat unique |
geoPrice | object | -- | Overrides de prix par zone géographique |
seller | object|null | null | Infos vendeur Stripe Connect (requis pour apps payantes) |
verification | object | -- | Données du badge AI Verified |
Applications Payantes
Définir un Prix
Définissez le champ price en centimes. Par exemple, 4,99 $ = 499 :
{
"name": "pro-editor",
"type": "mini-program",
"version": "2.0.0",
"manifest": "https://cdn.example.com/pro-editor/manifest.json",
"tier": "community",
"price": 499,
"currency": "USD",
"priceType": "one-time",
"seller": {
"name": "DevCo",
"id": "acct_abc123"
}
}
Commission de la Plateforme
La plateforme prend une commission de 15% sur les ventes payantes. Le vendeur reçoit 85% via les paiements Stripe Connect.
| Prix | Commission (15%) | Vendeur Reçoit |
|---|---|---|
| 0,99 $ | 0,15 $ | 0,84 $ |
| 4,99 $ | 0,75 $ | 4,24 $ |
| 9,99 $ | 1,50 $ | 8,49 $ |
| 19,99 $ | 3,00 $ | 16,99 $ |
Géo-Pricing
Vous pouvez définir des prix différents pour différentes zones géographiques en utilisant le champ geoPrice :
"geoPrice": {
"1": 1500,
"2": 1000,
"3": 700,
"4": 400
}
Les niveaux correspondent aux régions de pouvoir d'achat :
- Niveau 1 : USA, Canada, Europe de l'Ouest, Australie, Japon (15,00 $)
- Niveau 2 : Europe de l'Est, Amérique du Sud, Moyen-Orient (10,00 $)
- Niveau 3 : Asie du Sud-Est, Amérique Centrale (7,00 $)
- Niveau 4 : Afrique subsaharienne, Asie du Sud (4,00 $)
La plateforme détecte la région de l'utilisateur depuis l'API et applique le prix de niveau approprié.
Intégration Vendeur
Pour recevoir des paiements, vous avez besoin d'un compte Stripe Connect lié à la plateforme :
- Allez dans Settings > Account > Developer dans l'application AISCouncil
- Cliquez sur Connect Stripe Account
- Complétez le flux d'intégration Stripe Connect
- Votre ID de Compte Stripe Connect (format :
acct_xxx) est attribué - Ajoutez l'objet
sellerà votre entrée de registre :
"seller": {
"name": "Votre Nom ou Société",
"id": "acct_abc123"
}
Les applications payantes nécessitent un objet seller avec un ID de compte Stripe Connect valide. Le script de validation rejettera les entrées payantes sans informations vendeur.
Badge AI Verified
Le système AI Verified est prévu pour une version future. Cette section décrit le workflow prévu.
Le badge AI Verified certifie que le code de votre application a été scanné par un LLM et trouvé exempt de problèmes de sécurité courants.
Niveaux de Scan
| Niveau | Prix | Taille Max | Texte du Badge |
|---|---|---|---|
| Quick | 19 $ | 100 Ko | "AI Scanned" |
| Full | 49 $ | 500 Ko | "AI Verified" |
| Deep | 99 $ | 2 Mo | "AI Verified + Reviewed" |
Workflow (Prévu)
- Publiez d'abord votre application au niveau Community
- Soumettez votre URL de manifeste à
POST /v1/verify/submitavec le niveau de scan - Payez les frais de scan via le checkout Stripe
- Le LLM analyse votre code pour :
- Logiciels malveillants et portes dérobées
- Tentatives d'exfiltration de données
- Mauvais usage des permissions (demander plus que nécessaire)
- Code obfusqué ou minifié qui cache un comportement
- Tentatives d'évasion du bac à sable
- Vérifiez le statut à
GET /v1/verify/status/{jobId} - Si passé, récupérez l'objet
verificationdepuisGET /v1/verify/report/{jobId} - Ajoutez l'objet de vérification à votre entrée de registre :
"verification": {
"hash": "sha256:a1b2c3d4...",
"tier": "full",
"date": "2026-02-19",
"expires": "2027-02-19",
"job_id": "ver_xyz789"
}
- Soumettez une PR avec l'entrée de registre mise à jour
- Le script de validation confirme que le badge est valide via
/v1/verify/badge/{hash}
Règles du Badge
- Le badge est épinglé au hash SHA-256 du HTML d'entrée de votre application
- Tout changement de code invalide le badge (nouveau hash = badge disparu)
- Les badges expirent après 12 mois et doivent être renouvelés
- Les scans échoués fournissent un rapport avec les problèmes à corriger
Badge Verified (Revue Manuelle)
Pour le plus haut niveau de confiance, demandez une vérification manuelle :
- Définissez
"tier": "verified"dans votre entrée de registre - Soumettez une PR
- Un mainteneur de la plateforme révise :
- Les permissions du manifeste (sont-elles justifiées ?)
- Le HTML d'entrée et JavaScript (pas de code malveillant ?)
- La conformité au bac à sable (pas de tentatives d'évasion ?)
- Pour les plugins : analyse du binaire WASM
- Si approuvé : badge accordé, placement en vedette activé
- Si rejeté : des retours sont fournis sur la PR
Les applications vérifiées obtiennent :
- Le badge "Verified" (coche verte)
- Un placement en vedette en haut de l'App Store
- Une confiance accrue des utilisateurs
Mettre à Jour Votre Application
Pour mettre à jour une application publiée :
- Déployez la nouvelle version de vos fichiers d'application sur votre CDN
- Mettez à jour
versiondans votremanifest.json - Mettez à jour
versiondansregistry/packages.json - Soumettez une PR avec l'incrémentation de version
Suivez les conventions semver :
- Patch (1.0.0 -> 1.0.1) : Corrections de bugs, pas de nouvelles fonctionnalités
- Minor (1.0.0 -> 1.1.0) : Nouvelles fonctionnalités, rétrocompatible
- Major (1.0.0 -> 2.0.0) : Changements cassants
Les utilisateurs qui ont déjà installé votre application verront la mise à jour lorsque le registre se rafraîchira (cache quotidien).
Meilleures Pratiques
Description et Icône
- Écrivez une description claire et concise (moins de 256 caractères) qui explique ce que fait l'application
- Utilisez une icône PNG 128x128 avec un fond transparent ou sombre
- Les icônes SVG sont également acceptées et s'affichent nettement à toute taille
Permissions
- Demandez uniquement les permissions que votre application utilise réellement
- Expliquez dans votre description de PR pourquoi chaque permission est nécessaire
- Les applications avec moins de permissions obtiennent plus d'installations
Checklist de Test
Avant de soumettre votre PR :
- L'application s'installe et se lance sans erreurs
- Toutes les fonctionnalités fonctionnent comme décrit
- L'application gère élégamment les refus de permissions (try/catch autour des appels SDK)
- L'application fonctionne en mode sombre (le défaut de la plateforme)
- Les boutons et éléments interactifs font au moins 48px de hauteur
- Le texte fait au moins 14px
-
ais.close()retourne proprement au chat -
python3 registry/validate.py packagespasse -
python3 registry/validate.py manifest path/to/manifest.jsonpasse
Sélection de Catégorie
Choisissez la catégorie la plus appropriée pour votre application :
| Catégorie | Exemples |
|---|---|
productivity | Gestionnaires de tâches, prise de notes, outils de projet |
developer | Éditeurs de code, testeurs d'API, outils de débogage |
communication | Extensions de chat, intégrations email |
media | Éditeurs d'images, outils audio, lecteurs vidéo |
utilities | Calculatrices, convertisseurs, outils système |
games | Jeux interactifs, puzzles |
education | Flashcards, outils de quiz, aides à l'apprentissage |
finance | Suivi de budget, outils crypto, facturation |