@rashwright/cli
v1.4.0
Published
CLI rs-ui pour Rashwright UI Mobile
Maintainers
Readme
@rashwright/cli — v1.4.0 · Commande rs-ui & rs-ui-reset
CLI officiel Rashwright UI Mobile pour React Native / Expo. Inspiré de la philosophie shadcn/ui : tu installes un composant, tu possèdes son code source.
Plus de
node_modulesopaque. Plus de surprise quant à la compatibilité Expo SDK.
⚡ Prise en main en 30 secondes
1) Installer le CLI
# Option A — Global (recommandé)
bun add -g @rashwright/cli
# ou avec npm :
npm install -g @rashwright/cli
# Option B — Exécution directe sans installation
bunx @rashwright/cli <commande>
# ou :
npx @rashwright/cli <commande>2) Initialiser Rashwright dans un projet Expo
# Dans un projet Expo existant :
cd mon-app-expo/
rs-ui init --yes
# Nouveau projet Expo avec thème Cyber Cyan & Liquid Glass :
rs-ui init --glass --theme cyan --sdk 58 --yes
# Initialiser avec un thème personnalisé en ligne de commande :
rs-ui init --theme custom --primary "#00D9FF" --secondary "#1E293B" --dark-primary "#38BDF8"3) Ajouter des composants & Skills IA
# Ajoute le composant ET son skill IA (skills/rs-ui/drawer/SKILL.md)
rs-ui add drawer
# Ajouter sans installer le skill IA
rs-ui add drawer --no-skills
# Ajout multiple
rs-ui add button card accordion form
# Prévisualiser les modifications avant d'écraser un composant personnalisé
rs-ui add button --diff
# Mode interactif avec cases à cocher :
rs-ui add
# Ajouter l'ensemble du catalogue (61 composants) :
rs-ui add --all4) Réinitialiser le projet starter (reset)
# Mode interactif sécurisé (archive par défaut dans rs-ui-example/) :
rs-ui reset
# ou via l'alias binaire :
rs-ui-reset
# Suppression définitive explicite :
rs-ui reset --delete📋 Commandes disponibles
rs-ui --help| Commande | Description |
|---|---|
| rs-ui init [name] | Configure Rashwright dans un projet existant ou initialise un nouveau projet Expo avec skill IA global. |
| rs-ui add [components...] | Ajoute un ou plusieurs composants ou templates autonomes (-t, --template) avec leurs dépendances natives et Skills IA associés (--skills). |
| rs-ui reset / rs-ui-reset | Nettoie les fichiers de démo et showcase du starter (archivage dans rs-ui-example/ ou suppression --delete). |
| rs-ui list | Liste les composants disponibles ou les templates autonomes (-t, --templates) avec statut d'installation. |
| rs-ui info <component> | Affiche la fiche technique détaillée d'un composant (versions, dépendances, plateformes, etc.). |
| rs-ui doctor | Évalue l'environnement (SDK, dépendances, types) et diagnostique la présence et validité des Skills IA. |
| rs-ui remove <component> | Supprime un composant, retire son Skill IA associé et vérifie les dépendances. |
| rs-ui update [components...] | Met à jour les composants avec détection de diff par SHA-256 et support 3-Way Merge. |
| rs-ui upgrade [components...] | Met à niveau les composants vers la dernière version du registre avec fusion différentielle (3-Way Merge) et réécriture d'alias (--alias). |
| rs-ui template <list\|info\|remove> | Explore, inspecte ou nettoie les 10 templates métiers autonomes (chat, finance, social, etc.). |
| rs-ui mcp | Démarre le serveur MCP IA (JSON-RPC 2.0 stdio) avec 9 outils d'assistance (génération, audit a11y, conversion styling). |
🔧 Options détaillées
Options pour rs-ui init
--template <id>: Sélectionne un template starter initial (minimal,auth,onboarding,dashboard,commerce,settings,showcase).--theme <preset>: Preset de couleurs (default,emerald,violet,amber,rose,slate,green,red,cyan,custom).--primary <hex>/--dark-primary <hex>: Couleur primaire light / dark personnalisée.--secondary <hex>/--dark-secondary <hex>: Couleur secondaire light / dark personnalisée.--accent <hex>/--dark-accent <hex>: Couleur d'accent light / dark personnalisée.--skills: Installe le Skill IA Global et les starters (skills/rs-ui/) (activé par défaut).--no-skills: Désactive l'installation des Skills IA.--glass: Active le moteur Liquid Glass (expo-bluretexpo-linear-gradient).--sdk <version>: Version cible du SDK Expo (54à57oulatest).
Options pour rs-ui add
-t, --template <name>: Installe un template autonome complet (auth,dashboard,commerce,settings, etc.) danssrc/components/templates/<name>/.--skills: Installe automatiquementskills/rs-ui/<component>/SKILL.md(activé par défaut).--no-skills: Ignore la copie des Skills IA.--diff: Affiche un diff textuel (LCS) avant d'écraser un composant existant.--all: Installe l'intégralité des 61 composants disponibles.--force: Réinstalle les composants même s'ils sont déjà présents.--dry-run: Simule l'installation sans écriture sur disque.
Options pour rs-ui reset
--delete/--hard: Supprime définitivement les fichiers démo au lieu de les archiver.--yes: Confirme l'opération sans confirmation interactive.--dry-run: Simule la réinitialisation.
🤖 Système de Skills IA
Rashwright UI Mobile intègre un système complet de documentation et de contexte destiné aux agents de développement IA (Antigravity, Cursor, Gemini CLI, Claude Code, GitHub Copilot) :
mon-projet-expo/
├── skills/
│ └── rs-ui/
│ ├── SKILL.md # Skill Global (architecture, tokens, Glass UI, règles)
│ ├── button/
│ │ └── SKILL.md # Skill Button (props, types, code ownership)
│ └── drawer/
│ └── SKILL.md # Skill Drawer (props, Reanimated, gesture handler)Chaque SKILL.md contient :
- Frontmatter YAML standardisé (
name,description,version,category,dependencies,supportsGlass). - Exemples d'utilisation, Props API typée, pièges fréquents et intégration de thème.
- Diagnostiqué automatiquement via
rs-ui doctor.
🔒 Configuration & Lockfile rashwright-ui.json
Le fichier de configuration trace l'état complet du starter, des thèmes et des composants :
{
"version": 1,
"componentsPath": "src/components/ui",
"theme": "default",
"themePreset": "cyan",
"glass": true,
"typescript": true,
"packageManager": "bun",
"starter": {
"installed": true,
"reset": true,
"archived": true,
"resetAt": "2026-10-08T10:45:00.000Z"
},
"components": {
"button": "1.0.0",
"drawer": "1.0.0"
}
}🆕 Nouveautés v0.7.3 — Correctif dépendances manquantes (expo-router, react-dom, react-native-web)
- 🐛 Fix :
ConfigError: Cannot resolve entry fileau démarrage :"main": "expo-router/entry"était écrit danspackage.jsonmaisexpo-routern'était jamais installé (absent deCORE_EXPO_DEPS). Metro ne pouvait pas résoudre le point d'entrée et refusait de démarrer.expo-routerest désormais la première entrée deCORE_EXPO_DEPS. - 🐛 Fix :
react-dometreact-native-webmanquants pour le web : Leapp.jsongénéré par Expo inclut"web"dans sa configuration, ce qui active le mode web. Sansreact-dometreact-native-web, Expo affichait "It looks like you're trying to use web support but don't have the required dependencies installed". Ces deux packages sont désormais dansCORE_EXPO_DEPSet installés viaexpo installpour garantir des versions compatibles SDK.
Pour réparer un projet existant généré par une version antérieure :
bunx expo install expo-router react-dom react-native-web🆕 Nouveautés v0.7.2 — Correctif rs-ui init . (régression 0.7.1)
- 🐛 Fix :
bun installéchoue avecrs-ui init .: La v0.7.1 forçait incorrectementuseCurrentDirectory = truepour l'argument".", ce qui sautait l'étapecreate-expo-app .et laissait le projet sanspackage.json. La commandebun installéchouait alors avec "Bun could not find a package.json file to install from". Correction :projectName = "."+useCurrentDirectory = false→targetDir = join(cwd, ".") = cwd→create-expo-app .crée bien lepackage.jsondans le répertoire courant avantbun install. - 🐛 Fix :
installProjectDependenciesappelé sur un projet existant : L'étape A (bun install) est désormais conditionnée àisFreshProject: elle est sautée si un projet Expo existe déjà (qui a déjà sesnode_modules). - 🐛 Fix :
isFreshProjecthissé dans le scope externe : La variable est maintenant accessible en Phase 10 (installation), quelle que soit la branche de création choisie.
🆕 Nouveautés v0.7.1 — Correctifs critiques rs-ui init
- 🐛 Fix ordre d'installation (
ConfigError: expo is not installed) : L'ordre des phases d'installation est désormais garanti :bun install(Étape A) installeexpodansnode_modulesavant quebunx expo install(Étape B) ne soit appelé. Cela élimine leConfigError: Cannot determine the project's Expo SDK version because the module expo is not installed. - 🐛 Fix
TS2307: Cannot find module './App': Le fichierindex.tsrésiduel du template Expoblank-typescript(qui importait./App) est maintenant supprimé lors de la génération en mode Expo Router. Lepackage.jsonest mis à jour vers"main": "expo-router/entry". - 🐛 Fix fausse réussite :
Le CLI distingue désormais une initialisation complète d'une initialisation partielle. Si une étape d'installation échoue, le résumé affiche
⚠ Initialisation partielleavec les commandes exactes pour réparer manuellement — plus de faux✔ Rashwright UI Mobile est opérationnel !. - 🐛 Fix
rs-ui init .: L'argument"."est correctement reconnu comme « installer dans le répertoire courant » en mode interactif et--yes, sans créer de sous-dossier"."ni redemander inutilement. - 🧪 Tests de non-régression :
4 nouveaux tests CRITICAL/REGRESSION dans
package-manager.test.tsetinit.test.tsverrouillent ces comportements.
🆕 Nouveautés v1.2.0 — Cycle de Vie CLI, 3-Way Merge, Outils MCP IA & Nouveaux Templates
- 🔄 Commande
rs-ui upgrade& 3-Way Merge :- Mise à jour différentielle intelligente des composants préservant les modifications personnalisées de l'utilisateur.
- Résolution des conflits avec marqueurs Git standard (
<<<<<<< LOCAL/>>>>>>> REGISTRY) sans écrasement brutal. - Drapeau
--no-mergepour forcer l'écrasement si souhaité.
- 🪄 AST Transformers & Options
--alias:- Réécriture chirurgicale des alias d'import (
@/vers~/ou@app/) surrs-ui add,rs-ui updateetrs-ui upgrade. - Adaptation automatique aux conventions de projet existantes (ex: Expo Router
~/components).
- Réécriture chirurgicale des alias d'import (
- 🤖 Serveur MCP IA Élargi (
rs-ui mcp) :generate_screen: composition assistée par IA d'écrans mobiles complets prêts pour la production.audit_accessibility: audit automatique ARIA, détection des cibles tactiles trop petites (<44px) et des labels manquants.convert_styling: convertisseur bidirectionnel instantané entreStyleSheet.createet classes NativeWind Tailwind.
- 📦 3 Nouveaux Templates Métiers Autonomes (10 templates au total) :
chat: messagerie instantanée fluide avec bulles Glass, liste de messages et barre de saisie.finance: portefeuille financier, carte de solde avec bascule de confidentialité et historique des opérations.social: carrousel de stories horizontales et fil d'actualités avec likes interactifs et commentaires.- Commande
rs-ui template remove <name>pour désinstaller proprement les fichiers d'un template.
- ⚡ Bun Install
--force& Fix NativeWind v5 :- Résolution automatique des conflits de verrouillage de dépendances NativeWind v5 RC / Tailwind v4 via
bun install --force.
- Résolution automatique des conflits de verrouillage de dépendances NativeWind v5 RC / Tailwind v4 via
- 🧪 Quality Gate 100% Vert :
- 43 suites de tests, 212 tests unitaires Vitest réussis sur 212, 0 erreur TypeScript strict (
check-typesexit 0).
- 43 suites de tests, 212 tests unitaires Vitest réussis sur 212, 0 erreur TypeScript strict (
🆕 Nouveautés v1.0.1 — Templates Premium, SDK 58 Stable & Fix NativeWind
- 💎 Templates Autonomes Enrichis :
auth: Écrans dédiés séparéssign-in.tsxetsign-up.tsx+ nouveau composantGoogleAuthButtonvectoriel haptique Glass.commerce: Catalogue completproducts-screen.tsx(recherche, filtres, compteur) et écran détail produitproduct-detail-screen.tsx(productId) avec sélection de variantes, notation et bouton panier sticky.onboarding: Redirection automatique vers l'écran d'accueilonboarding-home-screen.tsx(HomeScreen).dashboard: Sélecteur de périodes (7j, 30j, 90j, 1 an), barre d'actions rapides et métriques interactives.settings: Sélecteur 3 modes d'apparence (Système, Clair, Sombre) relié àuseTheme(), contrôle Liquid Glass & notifications.
- 🚀 Expo SDK 58 Stable : Prise en charge officielle de SDK 58 configuré en Recommandé par défaut dans
rs-ui init. - ⚙️ Fix NativeWind Dark Mode : Ajout automatique de
darkMode: "class"danstailwind.config.jset configuration de"userInterfaceStyle": "automatic"+expo-system-ui. - 🧩 Component-Detector Automatique (Modèle shadcn/ui) :
- Détection récursive et installation conditionnelle des logiques internes (
hooks/use-responsive.ts,lib/responsive.ts, utilitaireslib/upload/) et packages Expo/npm manquants (expo-device,react-native-reanimated).
- Détection récursive et installation conditionnelle des logiques internes (
- 🧪 Quality Gate 100% Vert : 194 tests Vitest passés sur 40 suites, 0 erreur TypeScript strict (
bunx tsc --noEmitexit 0).
🆕 Nouveautés v1.4.0 — Commande rs-ui fix, Showcase & Code Preview
- Commande
rs-ui fix(Auto-Remédiation) : Réparation automatique en un clic de la configuration et de l'environnement (plugin Reanimated Babel, dépendances natives Expo, déclaration CSS NativeWind, synchronisation des fiches IA Skills). - Showcase Storybook Mobile (
rs-ui showcase) : Environnement de test et prévisualisation mobile/web avec options--web,--port,--theme,--inject. - Aperçu Code TSX (
rs-ui info --preview) : Affichage d'un exemple canonique prêt à copier directement dans la console. - Suite de tests E2E Maestro : 6 flows déclaratifs automatisés (
bun run test:e2e). - Nouveaux composants clés : Support et synchronisation de 68 composants et 10 templates autonomes.
🆕 Nouveautés v1.0.0 — Release Majeure & Serveur MCP IA
- Serveur Model Context Protocol (MCP) IA (
rs-ui mcp) : Serveur stdio JSON-RPC 2.0 pour assistants IA (Cursor, Claude Desktop, VS Code) avec commandes d'inspection temps réel. - Moteur Responsive & Grille Multi-Colonnes : Détecteur de breakpoints standard (
sm,md,lg,xl,2xl) danslib/responsive.tsetuseResponsive(). - Recherche Floue Haute Vitesse (
rs-ui search <query>) : Recherche instantanée dans le registre avec suggestions. - Comparateur Visuel (
rs-ui diff [component]) : Diff side-by-side couleur avec le registre officiel. - Dual Engine Styling : Prise en charge native NativeWind v4/v5 et StyleSheet standardisé.
🆕 Nouveautés v0.9.0 — Intégration NativeWind & Indépendance Native
- Support NativeWind v4 & v5 dans
rs-ui init:- Prompt interactif
confirm(activé par défaut) pour configurer NativeWind lors de l'init. - Choix explicite de version : v4 Stable (Tailwind v3.4,
tailwind.config.js) ou v5 Next-Gen (Tailwind v4 CSS-first, sans config JS). - Flags CLI :
--nativewind [v4|v5]pour activer,--no-nativewindpour désactiver. - Génération automatique :
global.css,tailwind.config.js(v4),metro.config.js,babel.config.js,nativewind-env.d.ts. - Persistance dans
rashwright-ui.json:nativewind.enabled,nativewind.version,nativewind.css.
- Prompt interactif
- Indépendance native absolue : Tous les 61 composants restent 100% fonctionnels sans NativeWind (
StyleSheet.create+useTheme()par défaut). NativeWind est toujours opt-in. - Primitives Headless Mobiles (v0.8.0 inclus) :
useControllableState,useDisclosure,buildAccessibilityProps— zéro dépendance externe. - Registre RFC v4 : Hooks (
use-device,use-back-handler, etc.) et libs (primitives,upload) installables viars-ui add. - Quality Gate : 35 suites de tests, 171 tests Vitest, 0 erreur TypeScript strict.
🆕 Nouveautés v0.7.0 — Templates Engine & Architecture /src
- Starter Templates Engine (
--template) : Choix parmi 7 templates starters complets (showcase,minimal,auth,onboarding,dashboard,commerce,settings) utilisant exclusivement les composants Rashwright UI Mobile et l'architecture standardisée. - Single Installation Flow & Clean SDK Resolution :
rs-uiprend le contrôle complet du bootstrap : sélection explicite du SDK Expo (54, 55, 56, 57).- Utilisation du squelette minimal
blank-typescript@<SDK>avec--no-installet--no-agents-md. - Élimination totale de la double installation : une seule phase d'installation finale pour toutes les dépendances Expo et NPM.
- Normalisation multiplateforme robuste des chemins sous Windows/macOS/Linux.
- CLI Hooks Subsystem : Exécution de hooks shell personnalisés (
post-add,post-update, etc.) configurables dansrashwright-ui.json(hooks). - Multi-Registres Scoped : Commande
rs-ui registry(add,list,remove) et support des composants sous scope (ex:@equipe/badge). - TypeScript 5.x/6.x Modernisation : Suppression définitive de
baseUrletignoreDeprecationsobsolètes. - Branding CLI unifié : Banner ASCII art Rashwright (
printBanner) partagé et testé.
🆕 Nouveautés v0.3.0
- Système de Skills IA : Distribution de 61 skills composants, 4 skills modules core et 1 skill global avec gestion
--skills/--no-skills. - Commande
rs-ui reset& aliasrs-ui-reset: Archivage sécurisé dansrs-ui-example/ou suppression définitive--delete, génération d'un écran d'accueil minimal avecuseTheme(). - Thèmes élargis : Ajout de 3 nouveaux presets (
green,red,cyan) portant le total à 9 presets. - Moteur de Thème Personnalisé (Custom Engine) : Assistant interactif à 2 étapes (couleurs obligatoires puis facultatives) et options CLI directes (
--primary,--secondary, etc.). - Diagnostic enrichi (
rs-ui doctor) : Audit complet de la présence et de la cohérence des Skills IA. - Résolution TypeScript TS5101 : Fix du flag
ignoreDeprecations: "5.0"supporté en TypeScript 5.x.
🆘 Support & Liens
- Bugs et suggestions : GitHub Issues
- Documentation contributeur : CONTRIBUTOR.md
- Guide de démarrage rapide : Quick-Start.md
Licence MIT · Rashwright office.
