Skip to main content

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

  1. Kopieren: Repo kopieren oder als Vorlage nutzen, in fyos-plugin-<name> umbenennen (der Installer erkennt Plugin-Pakete am Präfix fyos-plugin-).
  2. 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_…), Ordner skills/wetter, ui/wetter.html, bilder/wetter-1.svg und die Einträge in pyproject.toml.
  3. Installieren und prüfen: uv pip install -e ".[test]" && python3 -m pytest -q.
  4. Werkzeuge ersetzen: in plugin.py describe_tools und call an dein Vorhaben anpassen, die App in ui/<name>.html, den Skill in fyos_plugin_<name>/skills/<name>/SKILL.md, den Katalogeintrag in fyos-katalog.yaml. Tests mitziehen.
  5. Ausliefern: python3 tools/sauber.py . muss still sein, dann committen. Das Hub-Bild mit docker 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)

Source distribution for fyos-plugin-vorlage 0.1.0
File Size Uploaded Provenance
fyos_plugin_vorlage-0.1.0.tar.gz 26.0 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for fyos-plugin-vorlage 0.1.0
File Interpreter ABI Platform
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page