English: README.en.md
fyos-plugin-vorlage
Ein vollständiges, lauffähiges Muster für ein Plugin von FYOS — For Your Own Sake. Es folgt Schritt für Schritt
der Anleitung docs/ERWEITERN.md in
fyos-os. Kopiere das Repo, benenne es um, ersetze die Werkzeuge durch deine.
Was drin ist
| Pfad | Zweck |
|---|---|
fyos_plugin_vorlage/plugin.py |
VorlagePlugin: Werkzeuge vorlage.hallo (lesend) und vorlage.notiz_setzen (schreibend, mit Trockenlauf; ein echter Lauf braucht bestaetigt: true), Konfiguration, Geheimnis, Fehlerarten, Oberfläche anmelden |
fyos_plugin_vorlage/ui/vorlage.html |
die App (ui://vorlage/vorlage.html) mit der gemeinsamen Brücke des Hubs: Frische-Stempel am Panel („Stand vor 2 Min.“, nach 5 Minuten „veraltet“) und „Speichern“ als Anfrage (Plan zeigen, Rückfrage, erst nach „Ja“ schreiben) |
fyos_plugin_vorlage/fyos-katalog.yaml, bilder/ |
Katalogeintrag für den Installer mit Skizze und »Was daraus wird« |
fyos_plugin_vorlage/skills/vorlage/SKILL.md |
Wissen für den Agenten (wann welches Werkzeug, Fallen); reist im Paket mit |
pyproject.toml |
Paket, Entry-Points mcp_hub.plugins (Hub), fyos.katalog (Installer) und fyos.skills (Skills) |
Dockerfile |
Hub-Bild mit diesem Plugin; installiert mit uv, ein eigener Paketindex steht per FYOS_INDEX_URL vor PyPI |
hub-config.beispiel.yaml |
Eintrag in der Hub-Konfiguration: config: und secrets: |
begleiter/hallo_per_rest.py |
Begleitskript: Werkzeug von außen über /hub/call aufrufen (--notiz zeigt den Plan, erst --ja speichert) |
tests/ |
pytest gegen den echten Hub-Kern, dazu ein Test, der die Vorlage umbenennt und die Kopie testet |
tools/sauber.py, .sauber/ |
Sauberkeits-Prüfung (keine privaten Adressen, Konten, Geheimnisse im Repo) |
.gitea/workflows/ci.yml |
CI: Sauberkeit, dann Tests (Pakete mit uv, Paketindex vor PyPI) |
.github/workflows/ |
dasselbe auf GitHub: tests.yml (Tests und Geheimnis-Scan), pypi.yml (veröffentlicht das Paket auf einen Tag v* per Trusted Publishing) |
umbenennen.py |
benennt Paket, Plugin und Werkzeuge in einem Schritt um |
LICENSE, NOTICE |
Apache License 2.0 und Urheberhinweis; für ein abgeleitetes Plugin anpassen (siehe Lizenz) |
README.en.md |
englische Fassung dieser Datei |
Ausprobieren
Installiert wird mit uv statt mit pip; der Grund steht im Abschnitt Pakete mit uv, der eigene Index zuerst.
uv venv && . .venv/bin/activate
uv pip install -e /pfad/zu/fyos-os/hub # der Hub (Paket fyos-hub)
uv pip install -e ".[test]"
python3 -m pytest -q
python3 -m mcp_hub.server # Hub auf Port 8080; die Vorlage lädt über den Entry-Point
curl -s localhost:8080/hub/call -H 'Content-Type: application/json' \
-d '{"tool":"vorlage.hallo","arguments":{"name":"Alex"}}'
Die App öffnet sich in der Shell unter /os?offen=app:vorlage__hallo.
Schreiben geht in zwei Schritten, als Anfrage statt als Aktion (docs/ERWEITERN.md im Repo fyos-os, Abschnitt 3.6):
erst der Plan, dann die Bestätigung. Die App macht das mit „Speichern“ von selbst, von außen sieht es so aus:
curl -s localhost:8080/hub/call -H 'Content-Type: application/json' \
-d '{"tool":"vorlage.notiz_setzen","arguments":{"text":"Milch kaufen","__dry_run__":true}}' # nur der Plan
curl -s localhost:8080/hub/call -H 'Content-Type: application/json' \
-d '{"tool":"vorlage.notiz_setzen","arguments":{"text":"Milch kaufen","bestaetigt":true}}' # speichert wirklich
Umbenennen in 5 Schritten
- Kopieren: Repo kopieren oder als Vorlage nutzen, in
fyos-plugin-<name>umbenennen (der Installer erkennt Plugin-Pakete am Präfixfyos-plugin-). - Umbenennen:
python3 umbenennen.py wetter(Probe zuerst mit--trocken). Das Skript ersetzt Paket (fyos_plugin_wetter), Plugin-Name und Werkzeug-IDs (wetter.hallo), Klasse (WetterPlugin), Umgebungsvariablen (FYOS_WETTER_…), Ordnerskills/wetter,ui/wetter.html,bilder/wetter-1.svgund die Einträge inpyproject.toml. - Installieren und prüfen:
uv pip install -e ".[test]" && python3 -m pytest -q. - Werkzeuge ersetzen: in
plugin.pydescribe_toolsundcallan dein Vorhaben anpassen, die App inui/<name>.html, den Skill infyos_plugin_<name>/skills/<name>/SKILL.md, den Katalogeintrag infyos-katalog.yaml. Tests mitziehen. - Ausliefern:
python3 tools/sauber.py .muss still sein, dann committen. Das Hub-Bild mitdocker build --build-arg HUB_BILD=<registry>/fyos-os/hub:main -t mein-hub:main .bauen (braucht das Paket Pakete aus einem eigenen Index, kommt--build-arg FYOS_INDEX_URL=<Index-URL>dazu) oder das Paket über den Installer wählen (siehe ERWEITERN.md, Abschnitt 10).
Danach umbenennen.py löschen oder behalten, wie du magst; die Tests, die die Umbenennung prüfen
(tests/test_paket.py, Gruppe »Umbenennen«), lassen sich mit ihm entfernen.
Pakete mit uv, der eigene Index zuerst
Dockerfile und CI installieren mit uv statt mit pip. Ein eigener Paketindex (zum Beispiel
die PyPI-Registry deines Git-Servers) steht per --index vor PyPI: im Dockerfile als Bau-Argument FYOS_INDEX_URL, in der
CI als Repo-Variable FYOS_PIP_INDEX. Dazu steht --index-strategy first-index ausdrücklich im Befehl: uv nimmt ein Paket
nur aus dem ersten Index, der es führt. Ein Paket gleichen Namens auf PyPI kann ein Paket aus deinem Index so nicht
verdrängen (Dependency Confusion); mit pip --extra-index-url wäre das möglich, weil pip die höchste Version aus allen
Indizes nimmt. Die Version von uv ist im Dockerfile und in der CI fest. Mehr dazu in docs/ERWEITERN.md im Repo
fyos-os, Abschnitt 10.3.
Was nicht ins Repo gehört
Tokens, Passwörter, Schlüssel, .env-Dateien, echte Adressen deiner Geräte, Namen von Personen. Geheimnisse stehen in
der Umgebung des Hubs oder unter /run/secrets/, im Repo nur ihr Name. tools/sauber.py fängt die gröbsten Fehler ab.
Ein Plugin-Repo mit persönlicher Konfiguration bleibt privat.
Lizenz
FYOS Plugin-Vorlage steht unter der Apache License, Version 2.0 (SPDX-Kennung Apache-2.0).
Copyright 2026 sirfyyn and FYOS CONTRIBUTORS
Der vollständige Lizenztext steht in LICENSE, der Urheberhinweis in NOTICE.
Für ein eigenes Plugin auf Grundlage dieses Musters: Die Lizenz deines Plugins wählst du selbst. Was du vom Muster
übernimmst, bleibt unter Apache-2.0; behalte dafür LICENSE und die Urheberzeile in NOTICE bei und ergänze deine eigene.
Trage deine Lizenz und deine Urheberzeile außerdem in pyproject.toml (license, authors) und in NOTICE ein;
umbenennen.py ändert sie nicht.
Metadata
Release files for fyos-plugin-vorlage 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| fyos_plugin_vorlage-0.1.0.tar.gz | 26.0 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fyos_plugin_vorlage-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.8 kB
Release files / fyos_plugin_vorlage-0.1.0.tar.gz
| Download URL | fyos_plugin_vorlage-0.1.0.tar.gz |
|---|---|
| Size | 26.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b413283caa17ba31e329ed8367507afab6cecd15b7459bfe85c9bb0bd76b3eb6
|
|
BLAKE2b-256 checksum How to use checksums |
3632179de876c1a919c381da9257c31bf9ce3f7c0b8400181a130b5ec1c8aad0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fyos_plugin_vorlage-0.1.0-py3-none-any.whl
| Download URL | fyos_plugin_vorlage-0.1.0-py3-none-any.whl |
|---|---|
| Size | 19.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
235cc7b8cdd48b15ab42696294fe4ee012713c4e5d9638e5889cb74a360fc2bb
|
|
BLAKE2b-256 checksum How to use checksums |
ae2070f87ebb9fb1be08c0720c8d2974d30cfbb784ea653b43a171c5e7ce0893
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logSecurity for fyos-plugin-vorlage 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for fyos_plugin_vorlage-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.