CommunityCodierung & Entwicklunggithub.com

csansoon/hostel-platforms

Verstehen und Verwalten von Hostel-Plattformen – die Standard-Plattformen (iOS, Android, macOS, Windows, Linux), deren Anforderungen auf dem Rechner, Geräte und Labels sowie eigene Plattformen mit Skripten. Verwenden Sie es, wenn der Benutzer sagt: „iOS/Android zu einer Maschine hinzufügen“, „Was braucht der Mac für iOS?“, „Android-Emulator startet nicht“, „Gerät hinzufügen“, „eigene Plattform erstellen“ (z. B. tvOS) oder „das Bereitstellungs-/Vorbereitungsskript ändern“.

Was ist hostel-platforms?

Diese Skill ermöglicht es, die von Hostel verwalteten Plattformen vollständig zu verstehen und anzupassen. Hostel unterscheidet zwischen Betriebssystem-Plattformen (Linux, macOS, Windows), die automatisch von jeder Maschine mit dem entsprechenden OS bedient werden, und Geräteplattformen (iOS, Android, eigene). Für jede Plattform werden die benötigten Labels, Geräte, Umgebungsvariablen und Maschinenanforderungen detailliert beschrieben. Der Benutzer kann eigene Plattformen erstellen, Standard-Plattformen verändern und Maschinen bestimmte Plattformen zuweisen. Die Skill-Dokumentation erklärt die verfügbaren Befehle (`hostel platforms`, `hostel config platforms`), die Struktur der Plattform-Definitionen (`platform.toml`, Skripte) und die Ausführungsschritte (Provision, Prepare, Screenshot, Reset, Health). Sie unterstützt die gängigen Betriebssysteme macOS, Linux und Windows und gibt klare Anleitungen zur Fehlerbehebung. Besonders nützlich ist die Skill für DevOps-Ingenieure und CI/CD-Administratoren, die mit Hostel virtuelle Maschinen und Geräte für Tests und Builds bereitstellen.

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

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Plattformen

Eine Plattform ist das, was ein Gast anfordert (hostel acquire <platform>). Es gibt zwei Arten:

ArtNamenWelche Maschinen bedienen sie
OS-Plattformlinux, macos, windowsJede Maschine mit diesem Betriebssystem, automatisch. Niemals in platforms aufführen.
Geräteplattformios, android oder eigeneMaschinen, die sie in platforms aufführen.

Werkzeuge wie Node, Java oder pnpm sind keine Plattformen: Die mise-Dateien des Repositories deklarieren sie (hostel-use) oder der tools-Schlüssel der Maschine (hostel-rooms).

hostel platforms              # für alle: freie Slots, Warteschlange, Wartezeit, Geräte
hostel config platforms       # für Admins: NAME, ART, MASCHINEN, QUELLE

Die Standard-Plattformen

Das Binärprogramm enthält ios, android, macos und windows integriert. linux ist eine OS-Plattform ohne Skripte.

PlattformGeräteMaschinen-BetriebssystemWas die Maschine benötigt
iosiphone-17-pro, ipad-pro-13 (max. 2)macOSXcode und eine iOS-Simulator-Laufzeitumgebung, installiert von einer Person. Die Plattform erfordert das Label xcode-26.5. Optionale Maschinen-env: HOSTEL_IOS_RUNTIME (z. B. 26.5), DEVELOPER_DIR.
androidpixel-9, pixel-tablet (max. 2)Linux oder macOSJava 17 oder höher: Setzen Sie tools = { java = "21" } auf der Maschine. Linux: /dev/kvm muss vom Raum-Benutzer nutzbar sein (geben Sie der Maschine ein Label wie kvm), und die Emulator-Pakete oder sudo ohne Passwort. Die Bereitstellung lädt ca. 5 GB herunter (Timeout 30 Min.). Optionale env: HOSTEL_ANDROID_API (36), HOSTEL_ANDROID_TAG (google_apis), HOSTEL_ANDROID_PORT (5554).
macoskeinemacOSHeadless-Builds: nichts. Desktop-Apps: das Label desktop, ein automatischer Login des Raum-Benutzers, ein entsperrter Bildschirm, Bildschirmaufzeichnung für /usr/libexec/sshd-keygen-wrapper und Automatisierungsmodus ohne Passwort (sudo automationmodetool enable-automationmode-without-authentication).
windowskeineWindowsOpenSSH-Server. Desktop-Apps: das Label desktop und die Aufgabe „Hostel Desktop“ in einer angemeldeten, entsperrten Desktop-Sitzung.
linuxkeineLinuxEin SSH-Server.

Was die Plattformen an Befehle weitergeben:

  • ios: neue, saubere Simulatoren für jede Leihe; SIMULATOR_UDID (erstes Gerät) und SIMULATOR_UDIDS.
  • android: schreibgeschützte Emulatoren aus einem sauberen Snapshot; ANDROID_SERIAL, ANDROID_SERIALS, ANDROID_HOME.
  • Eine Leihe, die desktop erfordert, ist exklusiv: Sie belegt die gesamte Maschine.

Jeder Raum erhält auch agent-device (tippen, tippen, Bildschirm lesen) und unter Windows winapp. mise.agent_device = false (hostel config settings set) deaktiviert dies.

Die vollständige Mac- und Windows-Vorbereitung (Benutzer, Remote-Login, Auto-Login, die Desktop-Aufgabe) finden Sie in docs/static-room-setup.md.

Geräte und Labels

  • --device <d> wählt Geräte der Plattform aus (wiederholbar, bis zu max_devices). Ohne Angabe werden die Geräte des Repositories oder das erste Gerät der Plattform verwendet.
  • Labels sind freie Wörter auf Maschinen (labels = [...]). Eine Maschine ist nur dann ein Kandidat, wenn sie alle erforderlichen Labels besitzt: die requires der Plattform, die requires des Repositories in hostel.toml und jedes --require.
  • Benennen Sie Labels nach dem, was die Maschine hat: xcode-26.5, desktop, kvm.
  • Eine unbekannte Plattform oder ein unbekanntes Gerät oder ein Label, das keine Maschine besitzt, schlägt sofort mit Exit-Code 69 fehl.

Eigene Plattform

hostel config platforms new tvos ./tvos --os macos     # ein Vorlagenordner (--os linux|macos|windows)
# bearbeiten Sie ./tvos/platform.toml und die Skripte
hostel config platforms push ./tvos                    # überprüfen und speichern; der Name ist der Ordnername
hostel config rooms set mac-mini platforms=ios,tvos     # lassen Sie eine Maschine diese Plattform bedienen

Eine Standard-Plattform ändern:

hostel config platforms pull ios ./ios      # die aktuellen Dateien in einen neuen Ordner
hostel config platforms push ./ios          # speichern Sie Ihre Version (Quelle: geändert)
hostel config platforms reset ios           # zurück zur Version dieser Veröffentlichung
hostel config platforms remove tvos         # verweigert, solange eine Maschine sie aufführt

push --name <n> speichert den Ordner unter einem anderen Namen. Ein Push wird sofort wirksam. Ein freier Raum, dessen Plattform geändert wurde, wird erneut bereitgestellt. Ein Push sendet nur platform.toml, README.md und Skripte.

platform.toml

description = "tvOS Simulator"
devices = ["apple-tv-4k"]          # das erste ist der Standard (nur Geräteplattformen)
max_devices = 1                    # Standard 1
requires = ["xcode-26.5"]          # Labels, die jede Maschine haben muss
exclusive = false                  # true: die Leihe belegt den gesamten Raum
script_timeouts = { provision = "20m" }   # Standard: provision 20m, andere 3m

Ein OS-Plattform-Ordner (linux, macos, windows) kann description, requires, exclusive und script_timeouts enthalten, aber nicht devices.

Skripte

Dateinamen: <schritt>.<os>.sh für macos und linux, <schritt>.<os>.ps1 für windows. Das Betriebssystem des Raums wählt die Datei aus. Ein falsch geschriebener Skriptname ist ein Fehler.

SchrittWannLäuft in
provisioneinmal für jeden Raum und erneut, wenn die Skripte geändert werden: Installieren und prüfen, was die Plattform benötigthostel/
preparejede Leihe, bevor sie bereit ist: Starten der Geräte, Schreiben ihrer Fakten in device.envslots/<slot>/
screenshothostel screenshot: $1 ist der Ausgabe-PNG-Pfad, $2 das Gerätslots/<slot>/
resetbei der Bereinigung: Stoppen und Löschen, was prepare gestartet hatslots/<slot>/
healthnach der Bereinigung, bei der Reparatur, bevor ein warmer Raum eine Leihe annimmt: Exit ungleich Null, wenn der Raum die Plattform nicht bedienen kannhostel/

Regeln:

  • Jeder Schritt ist optional, außer prepare für eine Geräteplattform auf jedem Betriebssystem der Maschinen, die sie aufführen.
  • Jeder Schritt muss sicher wiederholbar sein.
  • Ein Exit-Code ungleich Null ist ein Fehler. Fehler bei Provision oder Prepare machen den Raum kaputt und senden die Leihe zurück in die Warteschlange. Die letzten 4 KB der Ausgabe gehen in das Ereignisprotokoll (hostel status <raum>).
  • Der Helfer führt /bin/sh <skript> aus (kein Ausführungsbit erforderlich) und stoppt die Prozessgruppe beim Timeout.
  • Maschinenbezogene tools werden vor provision installiert, sodass Skripte sie verwenden können.

Umgebung der Skripte: HOSTEL_PLATFORM, HOSTEL_PLATFORM_DEVICES (alle Geräte der Plattform), HOSTEL_SLOT, HOSTEL_SLOT_DIR, HOSTEL_WORK_DIR, HOSTEL_CACHE_DIR (zwischen Leihen beibehalten), HOSTEL_LEASE_ID, und für prepare, screenshot und reset: HOSTEL_DEVICES (die Geräte der Leihe, kommagetrennt) und HOSTEL_EXCLUSIVE (1 für eine Ganzraum-Leihe). Außerdem die MISE_*-Variablen, die env des Providers, der Maschine und des Slots sowie device.env (für screenshot und reset). Verwenden Sie Maschinen-env, um ein Skript zwischen Maschinen zu variieren.

device.env-Zeilen (NAME=wert) gehen in die Umgebung jedes Leihe-Befehls ein. Dokumentieren Sie die Namen, die Ihre Plattform schreibt.

Überprüfen

hostel config platforms
hostel status mac-mini       # die Ereignisse zeigen Bereitstellungsausgabe und Fehler

Individual skills in this repo

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

Verwandte Skills