red-bucket Skill
Dieser Skill führt KI-Agenten in die Interaktion mit red-bucket-Servern ein. red-bucket ist ein zentraler Hub für KI-Agenten-Assets (Skills, MCP-Konfigurationen, Anweisungen wie CLAUDE.md und AGENTS.md, Subagenten, Plugins), die nach user/bucket-Namensräumen organisiert sind, und bietet eine dynamische formatübergreifende Übersetzung zwischen codex, claude, agents und openclaw.
Agenten-Richtlinien & Invarianten
- Authentifizierung: Alle Schreiboperationen und der Zugriff auf private Buckets, die dem Benutzer gehören, erfordern
Authorization: Bearer <token>. Das Lesen öffentlicher Buckets ist anonym und erfordert keinen Header. - Anmeldedaten-Sicherheit: Geben Sie niemals Passwörter, API-Tokens oder Geheimnisse in der Ausgabe oder in Benutzertranskripten aus, protokollieren Sie sie nicht und geben Sie sie nicht preis.
- Private-Bucket-404-Invariante: Jede Anfrage an einen privaten Bucket oder dessen Unterressourcen von einem nicht authentifizierten Aufrufer oder einem Nicht-Eigentümer MUSS HTTP
404 Not Foundzurückgeben (niemals403 Forbidden). Nicht-Eigentümer können nicht unterscheiden, ob ein privater Bucket existiert oder nicht. - Kontingente & Grenzen:
- Standard-Bucket-Kontingent: 5 Buckets pro Benutzer (Überschreitung gibt
403mit dem Codebucket_quota_exceededzurück). - Bucket-Speichergrenze: 10 MB pro Bucket (Überschreitung gibt
413mit dem Codebucket_storage_exceededzurück).
- Standard-Bucket-Kontingent: 5 Buckets pro Benutzer (Überschreitung gibt
- API-Bereich: Alle Endpunkte befinden sich unter
/api/v1/.
Die Drei-Namen-Regel
Vermischen oder verwechseln Sie diese drei Operationen niemals:
copy(POST /api/v1/users/{username}/buckets/{bucket}/copies): Dupliziert ein Asset aus einem lesbaren Quell-Bucket in Ihren eigenen Ziel-Bucket mit Herkunftsverlauf. Gibt einInstallRecordJSON-Objekt zurück.install-script(GET /api/v1/users/{username}/buckets/{bucket}/install-script): Gibt ausführbaren Shell-Skript-Text zurück, der übersetzte Assets herunterlädt und im lokalen Dateisystem platziert.translated fetch(GET .../translated): Ruft rohe übersetzte Bytes oder ein Zip-Archiv ab, das für eine bestimmte Ziel-Plattform dynamisch transformiert wurde.
Installation & Erkennung
1. Agenten-Skill-Installation (über npx skills)
Um diesen Skill in einer Agentenumgebung zu installieren:
# Globale Installation für den Agentenzugriff
npx skills add 370025263/red-bucket --skill red-bucket -g -y
# Verfügbare Skills auflisten, ohne zu installieren
npx skills add 370025263/red-bucket --list
2. Der gebündelte Client: scripts/rb.mjs
Dieser Skill enthält einen eigenen Client. Er benötigt Node 18+ und sonst nichts – kein sh, kein curl, kein unzip, kein jq, kein npm install. Bevorzugen Sie ihn gegenüber manuellen HTTP-Aufrufen; er erledigt die Ursprungsnormalisierung, Dateiberechtigungen und atomare Schreibvorgänge korrekt.
node <skill-verzeichnis>/scripts/rb.mjs login --client claude
node <skill-verzeichnis>/scripts/rb.mjs status
node <skill-verzeichnis>/scripts/rb.mjs logout
node <skill-verzeichnis>/scripts/rb.mjs install alice/tools --target claude
node <skill-verzeichnis>/scripts/rb.mjs create alice/tools --visibility private --description "my kit"
node <skill-verzeichnis>/scripts/rb.mjs upload alice/tools ./my-skill --type skill --harness claude --path skills/my-skill
login gibt den Link aus und wartet dann --wait Sekunden (Standard 20) auf den Browser. Falls Ihr Shell-Tool ein Timeout hat, ist das in Ordnung: Bei Timeout wird mit 0 beendet, der ausstehende Code bleibt in pending.json neben der Auth-Datei erhalten, und eine entsprechende Meldung wird ausgegeben. Sagen Sie dem Benutzer, er solle zustimmen und dann login oder status erneut ausführen; das Token wird dann gesammelt und gespeichert. Es wird kein zweiter Code ausgestellt, solange der erste noch gültig ist, also „wiederholen“ Sie niemals, indem Sie den Prozess abbrechen und neu starten.
install schreibt in das aktuelle Verzeichnis; --dest DIR oder $RED_BUCKET_DEST legt ein anderes Ziel fest. --origin URL oder $RED_BUCKET_URL verweist auf einen selbst gehosteten Server. Private Buckets funktionieren, sobald Sie angemeldet sind – derselbe Befehl, der die gespeicherten Anmeldedaten verwendet.
create und upload sind die Veröffentlichungsseite. upload sendet jede Datei im lokalen Verzeichnis als ein Asset: Textdateien als Text, alles andere als Base64, verwurzelt bei --path (Standard: der eigene Name des Verzeichnisses). --type gibt an, was das Asset ist (skill, mcp, instructions, subagent, plugin) und --harness gibt an, für welche Plattform es geschrieben wurde – der Server übersetzt von dort. Der Server validiert das Asset und der Client gibt genau das aus, was beanstandet wurde, z. B. validation failed: SKILL.md: SKILL.md missing. Beide benötigen eine Anmeldung. Bevorzugen Sie diese gegenüber manuell erstellten POST .../assets-Bodies: Die rohen Endpunkte unten sind der Vertrag, der Client ist das Werkzeug.
3. Installieren eines Buckets ohne diesen Skill
GET .../install-script?target=<harness> mit Accept: text/plain gibt ein eigenständiges Node-Programm zurück. Speichern Sie den Body als rb-install.mjs und führen Sie node rb-install.mjs aus. Gleiche Node-only-Abhängigkeit, gleiche RED_BUCKET_URL / RED_BUCKET_DEST-Überschreibungen.
(Für private Buckets gibt es kein einfügbares öffentliches Programm: Rufen Sie stattdessen GET .../translated mit Authorization: Bearer <token> auf, oder verwenden Sie einfach rb.mjs install, während Sie angemeldet sind.)
Anmelden und wo das Token lebt
Das Lesen öffentlicher Buckets erfordert nichts. Alles, was schreibt – das Erstellen eines Buckets, das Hochladen eines Assets, das Öffnen eines Issues oder eines Pull Requests – benötigt ein Bearer-Token.
Fragen Sie den Benutzer niemals nach seinem red-bucket-Passwort. Verwenden Sie die unten beschriebene Browser-Weitergabe. Dies ist der einzige zulässige Weg für einen Agenten, ein Token zu erhalten.
Wo das Token aufbewahrt wird
$RED_BUCKET_AUTH falls gesetzt, diese genaue Datei
%APPDATA%\red-bucket\auth.json unter Windows
${XDG_CONFIG_HOME:-~/.config}/red-bucket/auth.json überall sonst
Schauen Sie zuerst dort nach. Wenn bereits ein gültiger Eintrag für diesen Ursprung existiert, verwenden Sie ihn – schicken Sie den Benutzer nicht erneut durch den Browser für ein Token, das Sie bereits haben.
Verzeichnismodus 0700, Dateimodus 0600. Schreiben Sie atomar (temporäre Datei im selben Verzeichnis, dann umbenennen), damit eine unterbrochene Schreiboperation keine halbe Datei hinterlässt. Struktur, nach Ursprung verschlüsselt, damit ein selbst gehosteter Server und der öffentliche Server koexistieren können:
{
"version": 1,
"hosts": {
"https://redbucket.store": {
"username": "stone91",
"token": "...",
"created_at": "2026-09-03T04:07:19Z",
"client": "claude"
}
}
}
Identität in dieser Reihenfolge auflösen: $RED_BUCKET_TOKEN, falls gesetzt, dann der Eintrag in dieser Datei, dessen Schlüssel mit dem Ursprung übereinstimmt, mit dem Sie kommunizieren, dann anonym. Senden Sie es als Authorization: Bearer <token>.
Normalisieren Sie den Ursprung, bevor Sie ihn als Schlüssel verwenden, sowohl beim Schreiben als auch beim Nachschlagen: Schema und Host in Kleinbuchstaben, einen abschließenden Schrägstrich entfernen, den Port entfernen, wenn es der Standard für das Schema ist. Also sind https://RedBucket.store:443/ und https://redbucket.store ein Schlüssel, nicht drei. Wenn Sie dies überspringen, senden Sie den Benutzer erneut durch den Browser für ein Token, das Sie bereits haben, und hinterlassen einen doppelten Eintrag.
Wenn die Datei nicht geparst werden kann oder version eine Zahl ist, die Sie nicht erkennen, behandeln Sie dies als fehlende Anmeldedaten – fallen Sie auf anonym zurück und teilen Sie dem Benutzer mit, dass die Datei fehlerhaft zu sein scheint. Löschen oder überschreiben Sie niemals eine Datei, die Sie nicht lesen konnten; sie könnte Tokens eines anderen Tools enthalten.
Lesen, ändern und schreiben Sie die gesamte Datei in einem Durchgang und halten Sie das Fenster kurz. Wenn zwei Plattformen gleichzeitig anmelden, lesen beide, schreiben beide, und die langsamere löscht den Eintrag der anderen. Die obige Methode „Temp-Datei-dann-umbenennen“ verhindert eine abgerissene Datei, aber kein verlorenes Update.
Geben Sie das Token niemals aus, geben Sie es niemals im Transkript weiter, schreiben Sie es niemals in ein Repository und setzen Sie es niemals in einen Shell-Befehl, den der Benutzer in seinem Scrollback sehen kann.
Ein Token erhalten: die Browser-Weitergabe
Das Token wird vom Server ausgestellt und direkt an Ihren Prozess übergeben. Es durchläuft niemals die Konversation.
1. Starten Sie es.
POST /api/v1/auth/device
{"client": "claude"}
201 gibt Ihnen device_code, user_code, verification_url_complete, expires_in (600) und interval (5).
Der device_code ist die geheime Hälfte – sie bleibt in Ihrem Prozess. Der user_code ist der kurze, den der Mensch liest.
2. Zeigen Sie dem Menschen den Link. Etwa so:
Öffnen Sie dies, um sich anzumelden oder ein Konto zu erstellen: https://redbucket.store/link/BQ7K-2M4X Die Seite sollte den Code BQ7K-2M4X anzeigen. Ich warte.
Sie öffnen ihn in einem Browser, melden sich an, falls sie es noch nicht getan haben, und erhalten einen Bildschirm, der Ihren Client nennt und auflistet, was sie gewähren. Sie drücken auf „Autorisieren“ oder „Ablehnen“.
3. Fragen Sie ab, nicht schneller als interval Sekunden:
POST /api/v1/auth/device/token
{"device_code": "..."}
{"status": "pending"}– warten Sie weiter.{"status": "denied"}– sie haben abgelehnt. Hören Sie auf und sagen Sie es klar.{"status": "approved", "token": ..., "user": {...}}– Sie haben es.404– der Code ist abgelaufen oder wurde bereits abgeholt. Bieten Sie an, neu zu starten. Der device_code ist für die einmalige Verwendung bestimmt; eine zweite erfolgreiche Abfrage ist immer eine404.
4. Speichern Sie es unter dem obigen Pfad und sagen Sie nur Angemeldet als <benutzername>.
Abmelden
POST /api/v1/auth/logout mit dem Token widerruft dieses eine Token serverseitig. Löschen Sie dann den Eintrag dieses Hosts aus der Auth-Datei. Führen Sie beides durch; eines ohne das andere hinterlässt entweder ein lebendiges Token auf dem Server oder ein totes auf der Festplatte.
Es gibt keinen red-bucket MCP-Server
mcp in red-bucket ist eine Art von Asset, die ein Bucket enthalten kann, kein Server, den wir betreiben. Dieser Skill, der mit /api/v1/ spricht, ist die gesamte Client-Integration. Suchen Sie nicht nach einem MCP-Endpunkt, mit dem Sie sich verbinden können.
Benutzerseitige Abläufe & API-Operationen
1. Benutzerregistrierung, Anmeldung und Profil
-
Registrieren:
POST /api/v1/auth/register Content-Type: application/json { "username": "alice", "email": "[email protected]", "password": "strongpassword123" }- Antwort:
201 CreatedmitLocation: /api/v1/users/aliceund öffentlichemUser-Objekt (Passwörter mit Argon2id gehasht; bei Registrierung wird kein Token ausgestellt).
- Antwort:
-
Anmelden:
POST /api/v1/auth/login Content-Type: application/json { "email": "[email protected]", "password": "strongpassword123" }- Antwort:
200 OKmit{"token": "<opaque_token>", "token_type": "bearer", "user": { ... }}.
- Antwort:
-
Profil abrufen (
me):GET /api/v1/users/me Authorization: Bearer <token>- Antwort:
200 OKmit Benutzerdetails (einschließlichemail,bucket_quota,bucket_count).
- Antwort:
2. Bucket aus einer Vorlage erstellen
Erstellen Sie einen Bucket unter dem Namensraum des authentifizierten Benutzers:
POST /api/v1/users/{username}/buckets
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "dev-skills",
"visibility": "public",
"description": "Allgemeine Entwicklungs-Agenten-Skills",
"template": "claude"
}
- Zulässige Vorlagen:
codex,agents,claude,openclaw(oder weglassen für einen leeren Bucket). Diese Liste wächst;GET /api/v1/templatesist die aktuelle. - Sichtbarkeit:
publicoderprivate(Standard istprivate). - Antwort:
201 CreatedmitLocation: /api/v1/users/{username}/buckets/{name}undBucketJSON. - Fehler:
403(bucket_quota_exceededbei Überschreitung von 5 Buckets),409(bucket_name_taken).
3. Assets hochladen
Laden Sie ein Asset mit Formatvalidierung und Kontingentprüfung hoch:
POST /api/v1/users/{username}/buckets/{bucket}/assets
Authorization: Bearer <token>
Content-Type: application/json
{
"type": "skill",
"source_harness": "claude",
"path": "skills/calculator",
"files": [
{
"path": "SKILL.md",
"content_text": "---\nname: calculator\ndescription: Arithmetische Berechnungen durchführen\n---\n\n# Rechner-Skill\n"
}
]
}
- Asset-Typen:
skill,mcp,instructions,subagent,plugin. - Quell-Plattformen:
claude,codex,agents,openclaw. Diese Liste wächst;GET /api/v1/translation-matrixist die aktuelle. Lehnen Sie niemals eine Plattform ab, die der Benutzer nennt, nur weil sie in dieser Datei fehlt – lassen Sie den Server antworten. - Dateiinhalt kann als
content_text(UTF-8) odercontent_base64bereitgestellt werden. - Antwort:
201 CreatedmitLocation: /api/v1/users/{username}/buckets/{bucket}/assets/{asset_id}. - Fehler:
413(bucket_storage_exceededbei Überschreitung des Bucket-Limits von 10 MB),422(validation_failedmit spezifischen Regel- und Pfadverletzungen).
4. Anonymes Durchsuchen & Übersetzter Abruf
-
Bucket durchsuchen (Öffentlich / Anonym):
GET /api/v1/users/{username}/buckets/{bucket} -
Dateibaum & Blobs durchsuchen:
GET /api/v1/users/{username}/buckets/{bucket}/tree GET /api/v1/users/{username}/buckets/{bucket}/blob/{*path} -
Kompletten Bucket für Ziel-Plattform übersetzt abrufen:
GET /api/v1/users/{username}/buckets/{bucket}/translated?target=codex- Antwort:
200 OK(binäres Zip-Archiv, HeaderX-Red-Bucket-Lossy: true|false).
- Antwort:
-
Einzelnes Asset übersetzt abrufen:
GET /api/v1/users/{username}/buckets/{bucket}/assets/{asset_id}/translated?target=codex- Antwort:
200 OK(rohe übersetzte Bytes oder Zip-Archiv).
- Antwort:
5. Installationsskript ausführen
Rufen Sie das für eine Ziel-Plattform generierte Shell-Installationsskript ab:
GET /api/v1/users/{username}/buckets/{bucket}/install-script?target=claude
Accept: text/plain
- Antwort:
200 OKmit rohem Shell-Skript-Text. - Wird clientseitig ausgeführt, um das übersetzte Zip-Archiv herunterzuladen und Dateien in lokale Plattformverzeichnisse zu platzieren.
6. Asset in eigenen Bucket kopieren (Herkunftsverfolgung)
Kopieren Sie ein Asset aus einem Quell-Bucket in Ihren eigenen Ziel-Bucket:
POST /api/v1/users/{username}/buckets/{dest_bucket}/copies
Authorization: Bearer <token>
Content-Type: application/json
{
"source_username": "bob",
"source_bucket": "public-skills",
"source_asset_id": 12,
"dest_path": "skills/calculator"
}
- Antwort:
201 CreatedmitLocation: /api/v1/users/{username}/buckets/{dest_bucket}/copies/{copy_id}undInstallRecordJSON-Objekt. - Validiert das Quell-Asset, überprüft das 10-MB-Kontingent und zeichnet die Herkunft auf.
7. Issues und Kommentare
-
Issue erstellen:
POST /api/v1/users/{username}/buckets/{bucket}/issues Authorization: Bearer <token> Content-Type: application/json { "title": "Fehler in der Rechner-Skill-Übersetzung", "body": "Wenn die Übersetzung für codex durchgeführt wird …" }- Antwort:
201 CreatedmitLocationund Issue-Objekt.
- Antwort:
-
Issue auflisten:
GET /api/v1/users/{username}/buckets/{bucket}/issues -
Kommentar hinzufügen:
POST /api/v1/users/{username}/buckets/{bucket}/issues/{issue_id}/comments
8. Asset löschen
DELETE /api/v1/users/{username}/buckets/{bucket}/assets/{asset_id}
Authorization: Bearer <token>
- Antwort:
204 No Content. - Nur der Bucket-Eigentümer kann löschen. Setzt die Speichernutzung des Buckets zurück.
9. Bucket löschen
DELETE /api/v1/users/{username}/buckets/{bucket}
Authorization: Bearer <token>
- Antwort:
204 No Content. - Löscht den Bucket und alle seine Assets unwiderruflich. Gibt den Bucket-Namen und das Kontingent für die Zukunft frei.
Verteilte Knoten & Offline-Modus
- Lokaler Edge-Server: Stellen Sie
$RED_BUCKET_URL=http://localhost:9999ein, um red-bucket lokal ohne Live-Netzwerk zu betreiben. Router/Handler spiegeln die öffentliche API für Entwicklung und Tests. - Keine externen Abhängigkeiten für Installationsskripte: Das aus
GET .../install-scriptgenerierte Node-Programm erfordert nur Node.js.
Warum das wichtig ist
KI-Agenten sind keinem einzelnen Ökosystem verpflichtet. Ein Skill, der für claude geschrieben wurde, sollte nicht umgeschrieben werden müssen, um in codex zu laufen. red-bucket fungiert als der zentrale Übersetzer und Verteilungspunkt – denken Sie an npm, aber mit einem plattformübergreifenden Formatübersetzer zwischen den Zeilen.
Agenten, die diesen Skill installiert haben, erhalten nicht nur einen Ordner voller Markdown-Dateien; sie erhalten einen Client, der die gesamte API kennt, eine Reihe von Invarianten, die das Design leiten (insbesondere die private-404-Regel) und einen browserbasierten Authentifizierungsablauf, der niemals Token im Klartext im Transkript preisgibt.
Nächste Schritte
- Schauen Sie sich die öffentlichen Buckets an:
GET /api/v1/users/alice/buckets(keine Authentifizierung erforderlich). - Melden Sie sich über den Browser an (starten Sie den Gerätecode-Ablauf, zeigen Sie dem Benutzer den Link, fragen Sie ab, bis er/sie genehmigt).
- Installieren Sie einen Bucket lokal mit
rb.mjs install <benutzername>/<bucket> --target claude. - Erstellen und veröffentlichen Sie Ihren eigenen Bucket mit
rb.mjs createundrb.mjs upload.