csansoon/hostel-platforms

Comprendre et modifier les plateformes Hostel – les plateformes par défaut (ios, android, macos, windows, linux), leurs prérequis machine, les devices et labels, ainsi que vos propres plateformes avec leurs scripts.

Qu'est-ce que hostel-platforms ?

Cette compétence permet de gérer les plateformes dans Hostel, le système de réservation de machines pour l'automatisation. Elle couvre les plateformes intégrées (ios, android, macos, windows, linux) et la création de plateformes personnalisées (ex : tvOS). Pour chaque plateforme, elle décrit les devices disponibles, les contraintes OS, les outils requis (Xcode, Java, OpenSSH) et les scripts associés (provision, prepare, screenshot, reset, health). Elle explique également l'utilisation des labels pour filtrer les machines et des devices pour sélectionner des configurations spécifiques. La compétence s'applique à tout agent utilisant Hostel (Claude Code, Cursor, etc.) pour acquérir ou configurer des environnements de développement, notamment pour les tests mobiles ou les builds multiplateformes.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/csansoon/hostel/tree/HEAD/skills/hostel-platforms

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Plateformes

Une plateforme est ce qu'un invité demande (hostel acquire <plateforme>). Il en existe deux types :

TypeNomsQuelles machines le servent
Plateforme OSlinux, macos, windowsToute machine avec cet OS, automatiquement. Ne jamais la lister dans platforms.
Plateforme deviceios, android, ou vos propresMachines qui la listent dans platforms.

Des outils comme Node, Java ou pnpm ne sont pas des plateformes : ils sont déclarés dans les fichiers mise du dépôt (hostel-use) ou dans la clé tools de la machine (hostel-rooms).

hostel platforms              # pour tout le monde : créneaux libres, file d'attente, devices
hostel config platforms       # pour les admins : NOM, TYPE, MACHINES, SOURCE

Les plateformes par défaut

Le binaire intègre ios, android, macos et windows. linux est une plateforme OS sans scripts.

PlateformeDevicesOS de la machinePrérequis machine
iosiphone-17-pro, ipad-pro-13 (max 2)macOSXcode et un runtime iOS Simulator, installés manuellement. La plateforme nécessite le label xcode-26.5. Variables d'env optionnelles : HOSTEL_IOS_RUNTIME (ex. 26.5), DEVELOPER_DIR.
androidpixel-9, pixel-tablet (max 2)Linux ou macOSJava 17 ou plus : définir tools = { java = "21" } sur la machine. Linux : /dev/kvm utilisable par l'utilisateur du room (ajouter un label tel que kvm), et les paquets de l'émulateur ou sudo sans mot de passe. Le provision télécharge environ 5 Go (timeout 30 min). Variables d'env optionnelles : HOSTEL_ANDROID_API (36), HOSTEL_ANDROID_TAG (google_apis), HOSTEL_ANDROID_PORT (5554).
macosaucunmacOSBuilds headless : rien. Apps de bureau : le label desktop, une connexion automatique de l'utilisateur du room, un écran déverrouillé, l'enregistrement d'écran pour /usr/libexec/sshd-keygen-wrapper, et le mode automatisation sans mot de passe (sudo automationmodetool enable-automationmode-without-authentication).
windowsaucunWindowsServeur OpenSSH. Apps de bureau : le label desktop et la tâche "Hostel desktop" dans une session de bureau connectée et déverrouillée.
linuxaucunLinuxUn serveur SSH.

Ce que les plateformes fournissent aux commandes :

  • ios : nouveaux simulateurs propres pour chaque lease ; SIMULATOR_UDID (premier device) et SIMULATOR_UDIDS.
  • android : émulateurs en lecture seule à partir d'un snapshot propre ; ANDROID_SERIAL, ANDROID_SERIALS, ANDROID_HOME.
  • Un lease nécessitant desktop est exclusif : il prend toute la machine.

Chaque room reçoit également agent-device (tap, type, lire l'écran) et, sur Windows, winapp. mise.agent_device = false (hostel config settings set) désactive cela.

La préparation complète Mac et Windows (utilisateurs, connexion à distance, connexion automatique, tâche de bureau) se trouve dans docs/static-room-setup.md.

Devices et labels

  • --device <d> sélectionne les devices de la plateforme (répétez-le, jusqu'à max_devices). Sans cela, les devices du dépôt ou le premier device de la plateforme s'appliquent.
  • Les labels sont des mots libres sur les machines (labels = [...]). Une machine est candidate uniquement si elle possède tous les labels requis : ceux de la plateforme (requires), ceux du dépôt (requires dans hostel.toml), et chaque --require.
  • Nommez les labels d'après ce que possède la machine : xcode-26.5, desktop, kvm.
  • Une plateforme ou un device inconnu, ou un label qu'aucune machine ne possède, échoue immédiatement avec le code de sortie 69.

Votre propre plateforme

hostel config platforms new tvos ./tvos --os macos     # un dossier modèle (--os linux|macos|windows)
# éditez ./tvos/platform.toml et les scripts
hostel config platforms push ./tvos                    # vérifie et enregistre ; le nom est celui du dossier
hostel config rooms set mac-mini platforms=ios,tvos     # autorise une machine à la servir

Modifier une plateforme par défaut :

hostel config platforms pull ios ./ios      # les fichiers actuels dans un nouveau dossier
hostel config platforms push ./ios          # enregistre votre version (source : changed)
hostel config platforms reset ios           # revient à la version de cette version
hostel config platforms remove tvos         # refusé tant qu'une machine la liste

push --name <n> enregistre le dossier sous un autre nom. Un push s'applique immédiatement. Un room libre dont la plateforme a changé provisionne à nouveau. Un push n'envoie que platform.toml, README.md et les scripts.

platform.toml

description = "tvOS Simulator"
devices = ["apple-tv-4k"]          # le premier est le défaut (plateformes device uniquement)
max_devices = 1                    # défaut 1
requires = ["xcode-26.5"]          # labels que chaque machine doit avoir
exclusive = false                  # true : le lease prend tout le room
script_timeouts = { provision = "20m" }   # défauts : provision 20m, autres 3m

Un dossier de plateforme OS (linux, macos, windows) peut avoir description, requires, exclusive et script_timeouts, mais pas devices.

Scripts

Noms de fichiers : <étape>.<os>.sh pour macos et linux, <étape>.<os>.ps1 pour windows. L'OS du room sélectionne le fichier. Un nom de script mal orthographié est une erreur.

ÉtapeQuandS'exécute dans
provisionune fois par room, et à nouveau quand les scripts changent : installer et vérifier ce dont la plateforme a besoinhostel/
preparechaque lease, avant qu'il soit prêt : démarrer les devices, écrire leurs informations dans device.envslots/<slot>/
screenshothostel screenshot : $1 est le chemin PNG de sortie, $2 le deviceslots/<slot>/
resetau nettoyage : arrêter et supprimer ce que prepare a démarréslots/<slot>/
healthaprès le nettoyage, lors de la réparation, avant qu'un room chaud prenne un lease : sortir non nul si le room ne peut pas servir la plateformehostel/

Règles :

  • Chaque étape est optionnelle, sauf prepare pour une plateforme device sur chaque OS des machines qui la listent.
  • Chaque étape doit pouvoir être exécutée à nouveau sans problème.
  • Un code de sortie non nul est un échec. Les échecs de provision ou de prepare mettent le room en état Broken et renvoient le lease dans la file d'attente. Les 4 derniers Ko de la sortie vont dans le journal des événements (hostel status <room>).
  • Le helper exécute /bin/sh <script> (pas besoin de bit d'exécution) et arrête son groupe de processus au timeout.
  • Les tools au niveau machine sont installés avant provision, donc les scripts peuvent les utiliser.

Environnement des scripts : HOSTEL_PLATFORM, HOSTEL_PLATFORM_DEVICES (tous les devices de la plateforme), HOSTEL_SLOT, HOSTEL_SLOT_DIR, HOSTEL_WORK_DIR, HOSTEL_CACHE_DIR (conservé entre les leases), HOSTEL_LEASE_ID, et pour prepare, screenshot et reset : HOSTEL_DEVICES (les devices du lease, séparés par des virgules) et HOSTEL_EXCLUSIVE (1 pour un lease occupant tout le room). Également les variables MISE_*, les variables env du provider, de la machine et du slot, et device.env (pour screenshot et reset). Utilisez les variables env de la machine pour faire varier un script entre machines.

Les lignes de device.env (NOM=valeur) vont dans l'environnement de chaque commande du lease. Documentez les noms que votre plateforme écrit.

Vérification

hostel config platforms
hostel status mac-mini       # les événements montrent la sortie du provision et les erreurs

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

Skills associés