Referenz · som-skill-library
Skills
SOM trägt Kontext; Skills tragen Wissen. Ein Skill ist eine Regel, einmal von der Redaktion geschrieben und von jedem Tool lesbar. Er deklariert, was wahr ist — handeln tut allein das Tool, dem der Executor gehört.
Das Modell
Skills deklarieren. Executors handeln.
Der Skill deklariert
Eine Skill-Datei nennt eine Bedingung und was wahr ist, wenn sie zutrifft — ein Flag besteht, ein Hold greift, eine Anreicherung ist angebracht. Sie führt nie etwas aus, schreibt nie Story-Zustand und ändert nie Inhalte.
Der Executor lädt per Recall
Executors leben in den Tools der Hersteller. Jeder gleicht eingehende Nachrichten mit den adverts der Skills ab — dem maschinenlesbaren recall-Block — und veröffentlicht, was der Skill deklariert, als skill.warning.raised.
Das Tool handelt
Das MAM lässt ein zurückgehaltenes Asset nicht festschreiben, das Playout verweigert den Take, das CMS hält einen Pfad an. Jedes auf seine Weise, und jedes entscheidet selbst. Niemand bekommt einen Befehl.
Offene Form, Hauspolitik. Skills folgen dem offenen Format von agentskills.io ↗: eine Markdown-Datei mit YAML-Frontmatter. Die gemeinsame Bibliothek ist generisch; eine Redaktion lädt ihre eigenen Werte dagegen. Ihre Richtlinien bleiben Ihre, und eine Redaktion kann SOM 1.0 vollständig implementieren, ohne die Bibliothek überhaupt zu nutzen.
Anatomie
Eine Datei: Frontmatter für Maschinen, Prosa für Menschen
---
skill_id: smart-stories/hold-while-flagged
skill_version: 0.2.2
som_schema_version: ["1.0.0"]
skill_type: REFERENCE
category: compliance
lifecycle: draft
recall: # the advert
target_system_type: [mam, playout, rundown,
cms, compliance_hub]
conditions:
- kind: field
path: editorial_gates[].gate_type
op: equals
value: "{{ config.gate_type }}"
- kind: field
path: editorial_gates[].status
op: equals
value: PENDING
recall_on: ["story.context", …]
state_path: editorial_gates[].status
output_messages: ["skill.warning.raised"]
severity_range: [hold]
auto_change_content: false
fail_closed: true
migration_policy: GATED
disclosure_level: L2
depends: []
---
# hold-while-flagged
…what it is, config surface, runtime loop,
output contract, worked configurations,
eval set, open items, vendor build notesskill_id als publisher/name, eine skill_version nach Semver, die SOM-Schema-Versionen, gegen die er aufgelöst wird, eine category und ein lifecycle.
recall nennt, welche Tool-Typen den Skill aufgreifen dürfen, die Bedingungen über Story-Pfade (field und field_change) und welche Nachrichten einen Blick auslösen. Pfade sind literal und werden gegen das veröffentlichte Schema geprüft; Werte können aus der Konfiguration des Hauses per Template befüllt werden.
Eine generische Datei, geladen mit den Werten eines Hauses, die eine Bedingung beobachtet. Ein Haus betreibt mehrere aus derselben Datei — eine gerichtliche Einschränkung mit story-Scope, eine unbestätigte Zahl mit link-Scope — und registriert pro konfigurierter Instanz eine advert-Zeile.
hold / flag / inform, dauerhaft kleingeschrieben. Ein Skill deklariert in severity_range, welche davon er erzeugen kann.
| Garantie | Wert | Was sie bedeutet |
|---|---|---|
auto_change_content | false | Der einzige zulässige Wert. Zurückgehalten wird eine Aktion, niemals der Inhalt — ein Executor, der editiert, um freizugeben, hat das Modell gebrochen. |
fail_closed | true | Ein unlesbarer Wert gilt so, als ob die Bedingung zutrifft — mit der lautesten Severity, die der Skill hat. Schweigen bei einer unlesbaren Einschränkung ist nie erlaubt. |
output_messages | ["skill.warning.raised"] | Ein Skill hat genau einen Weg, etwas zu sagen. Er schreibt nie Story-Zustand. |
depends | [] | Verkettung geschieht über den Bus, nicht über deklarierte Abhängigkeiten. Ein Hold bezieht sich per advert auf den Flag-Zustand — gleich, wer das Flag gesetzt hat. |
som-skill-library 0.2.2
Zehn Referenz-Skills, einer vorgeschlagen
Alle lifecycle: draft, origin: reference, aufgelöst gegen SOM 1.0. Suchen Sie Ihren Tool-Typ in der Lookup-Tabelle, lesen Sie die Skills in dieser Zeile und konfigurieren Sie sie für Ihr Haus.
| Skill | Deklariert | Kategorie | Severity | Per Recall geladen von |
|---|---|---|---|---|
raise-flag-on-match | Ein benanntes Flag an einer Story, wenn ein konfiguriertes Feld auf einen konfigurierten Wert passt — schon beim Anlegen, bevor überhaupt Medien existieren. | compliance · X=1 | flaginform | planningrundownmamgraphicsdiscovery |
hold-while-flagged | Eine benannte Aktion, die zurückgehalten wird, solange ein Flag eines konfigurierten Typs besteht — aufgehoben nur durch eine Freigabe gleicher oder höherer Autorität auf demselben Scope. | compliance · X=1 | hold | mamplayoutrundowncmscompliance_hub |
gate-by-scope | Ob das Gate eines Zielpfads ein bestimmtes Telling gerade jetzt zulässt. Immer mit Scope auf dem Link. | compliance · X=1 | holdinform | cmsplayoutrundownmamdistribution |
record-provenance-on-ingest | Dass die Herkunft einer Quelle erfasst wird, sobald sie in eine Story gelangt — auch eine fehlende C2PA-Kette, erfasst als fehlend. | compliance · X=1 | inform | mamingestverificationdiscoveryarchive |
flag-on-mismatch | Eine Abweichung, wenn ein gebundenes Asset oder Rundown-Element einen Wert trägt, den die Story nicht mehr hat — mit Nennung beider Werte. | editorial · X=2 | flaginform | rundowngraphicscmsplayout |
apply-clearance | Welche Version aus einem vorbereiteten Versionssatz eine Freigabe aktuell macht und welche sie ablöst. | workflow · X=3 | inform | playoutrundownmamcmsgraphics |
enrich-on-condition | Dass eine benannte Anreicherung für ein Asset angebracht ist, solange eine konfigurierte Bedingung gilt. Die Anreicherung selbst führt er nie aus. | workflow · X=3 | inform | mamverificationmultimodaltranscriptioningest |
match-and-propose | Eine Kandidaten-Story für einen losen Clip, ab einer hausintern festgelegten Konfidenz. Die Bestätigung ist ein menschlicher Akt, der anderswo erfasst wird. | workflow · X=3 | inform | multimodalmamdiscoveryingestrundown |
select-provider-by-context | Welchen Anbieter die Richtlinie des Hauses für eine Fähigkeit ergibt, gegeben den Story-Kontext. Er weist nie zu und ruft nie auf. | workflow · X=3 | inform | transcriptionverification |
surface-on-context-match | Ein Element aus einer beobachteten Quelle, das zur laufenden Story passt, samt Herkunft. Additiv, abseits des kritischen Pfads. | workflow · X=3 | inform | transcriptionverificationdiscoverymarkets_datamamplanning |
declare-context-on-commitvorgeschlagen | Den Story-Kontext, der auf einem Link gilt, wenn ein Asset einem Ziel zugesagt wird. | workflow · X=3 | inform | playoutmamgraphics |
Wenn Skills aufeinandertreffen
Holds verbinden sich per Konjunktion
Wo mehrere Gates denselben Sachverhalt im selben Telling binden, wird er nur ausgespielt, wenn jedes davon es erlaubt. „Das Restriktivste gewinnt“ und „Der Eigentümer der Story hat Vorrang“ wurden am 29. Juli 2026 formell zurückgezogen.
Der Vorrang zwischen zwei Skills, die bei derselben Aktion kollidieren, ist eine eigene Frage, geordnet nach X (Kategorie: compliance 1, editorial 2, workflow 3), Y (Herkunft — jeder Skill der Bibliothek hat 5) und Z, das allein das veröffentlichende Haus festlegt.
Ein Skill, der zugleich einen Zustand deklariert und etwas zurückhält, säße an zwei Positionen gleichzeitig. Darum ist „Flag und Hold“ zwei Skills: flag-on-mismatch deklariert das Flag, und hold-while-flagged bezieht sich per advert auf den Flag-Zustand — gleich, wer das Flag gesetzt hat, ein Skill oder eine Juristin.
Deshalb ist depends überall leer: Eine deklarierte Abhängigkeit würde die Richtung umkehren und beim ersten Versionswechsel einen Zyklus erzeugen.
Fail-closed. Ein unlesbarer Konfigurations- oder Story-Wert gilt so, als ob die Bedingung zutrifft, mit der lautesten Severity, die der Skill hat, und detail nennt, was nicht gelesen werden konnte. Lässt sich eine Regel nicht auswerten, bleibt die Ausgabe, die sie schützt, zurückgehalten, und ein Mensch entscheidet.
Was einen Hold nicht aufhebt: verstrichene Zeit, ein Flag, das in einem späteren Snapshot einfach fehlt, eine Freigabe auf einem anderen Scope, eine niedrigere Autorität, ein Neustart des Executors oder das Aufheben eines anderen Flags. Einen Hold aufzuheben ist nie eine Anweisung, das Asset freizugeben.
Validierung
Die Bibliothek prüft sich selbst
Fünf Skripte werden mit der Bibliothek ausgeliefert, und jedes stellt eine andere Frage — auch, ob die Dokumente mit den Dateien übereinstimmen, die sie beschreiben.
cd som/skills
python3 scripts/validate_som_skill.py skills/<name>.md # one skill file is legal
python3 scripts/check_library.py skills/ # the library holds together
python3 scripts/check_paths.py skills/ # every path resolves against
# ../schema/story-context.schema.json
python3 scripts/build_lookup_table.py . --check # the table matches the adverts
python3 scripts/check_cover_claims.py . # the docs match the filesEine Lücke wird benannt statt versteckt: check_paths.py löst nur literale Pfade auf. Ein Wert {{ config.* }} ist unbekannt, bis ein Haus ihn konfiguriert — einen fehlerhaften konfigurierten Pfad abzufangen, ist daher Arbeit des Hauses bei der Registrierung.
Ehrlich offen
Was die Bibliothek nicht zu klären beansprucht
- Wie Autorität verglichen wird. „Freigegeben durch gleiche oder höhere Autorität auf demselben Scope“ ist die Arbeitsposition der Bibliothek; die Rangfolge liefert jedes Haus als
authority_scale. Keine Gruppe hat das ratifiziert. - Wer eine ausgelöste Warnung in Gate-Zustand überführt. Ein auslösender Skill veröffentlicht nur eine Warnung; ein Hold-Skill liest
editorial_gates[]. Was das eine ins andere überführt, ist noch nicht definiert. - Tag-Abgleich mit Schema-Qualifizierung. Skills gleichen
tags[].valueheute ohne Rücksicht auf das Schema ab; obnewsroom:sportstattsportabgeglichen werden soll, ist offen. - Demo-Konfiguration. Die konfigurierten Instanzen aus dem IBC-Walkthrough nennen einzelne Hersteller und werden in 1.0 nicht veröffentlicht, bis jeder Hersteller zugestimmt hat.
Weiter: die erste Nachricht validieren und veröffentlichen →