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.

1

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.

2

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.

3

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 notes
Identität

skill_id als publisher/name, eine skill_version nach Semver, die SOM-Schema-Versionen, gegen die er aufgelöst wird, eine category und ein lifecycle.

Das advert

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.

Konfigurierte Instanz

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.

Severity

hold / flag / inform, dauerhaft kleingeschrieben. Ein Skill deklariert in severity_range, welche davon er erzeugen kann.

GarantieWertWas sie bedeutet
auto_change_contentfalseDer einzige zulässige Wert. Zurückgehalten wird eine Aktion, niemals der Inhalt — ein Executor, der editiert, um freizugeben, hat das Modell gebrochen.
fail_closedtrueEin 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.

SkillDeklariertKategorieSeverityPer Recall geladen von
raise-flag-on-matchEin benanntes Flag an einer Story, wenn ein konfiguriertes Feld auf einen konfigurierten Wert passt — schon beim Anlegen, bevor überhaupt Medien existieren.compliance · X=1flaginform
planning
rundown
mam
graphics
discovery
hold-while-flaggedEine 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=1hold
mam
playout
rundown
cms
compliance_hub
gate-by-scopeOb das Gate eines Zielpfads ein bestimmtes Telling gerade jetzt zulässt. Immer mit Scope auf dem Link.compliance · X=1holdinform
cms
playout
rundown
mam
distribution
record-provenance-on-ingestDass die Herkunft einer Quelle erfasst wird, sobald sie in eine Story gelangt — auch eine fehlende C2PA-Kette, erfasst als fehlend.compliance · X=1inform
mam
ingest
verification
discovery
archive
flag-on-mismatchEine Abweichung, wenn ein gebundenes Asset oder Rundown-Element einen Wert trägt, den die Story nicht mehr hat — mit Nennung beider Werte.editorial · X=2flaginform
rundown
graphics
cms
playout
apply-clearanceWelche Version aus einem vorbereiteten Versionssatz eine Freigabe aktuell macht und welche sie ablöst.workflow · X=3inform
playout
rundown
mam
cms
graphics
enrich-on-conditionDass eine benannte Anreicherung für ein Asset angebracht ist, solange eine konfigurierte Bedingung gilt. Die Anreicherung selbst führt er nie aus.workflow · X=3inform
mam
verification
multimodal
transcription
ingest
match-and-proposeEine 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=3inform
multimodal
mam
discovery
ingest
rundown
select-provider-by-contextWelchen 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=3inform
transcription
verification
surface-on-context-matchEin Element aus einer beobachteten Quelle, das zur laufenden Story passt, samt Herkunft. Additiv, abseits des kritischen Pfads.workflow · X=3inform
transcription
verification
discovery
markets_data
mam
planning
declare-context-on-commit
vorgeschlagen
Den Story-Kontext, der auf einem Link gilt, wenn ein Asset einem Ziel zugesagt wird.workflow · X=3inform
playout
mam
graphics

Lookup-Tabelle ↗ · Konventionen ↗ · Alle Skill-Dateien ↗

Wenn Skills aufeinandertreffen

Holds verbinden sich per Konjunktion

Ein einziger Hold heißt: zurückgehalten

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.

Verkettung über den Bus

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 files

Eine 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[].value heute ohne Rücksicht auf das Schema ab; ob newsroom:sport statt sport abgeglichen 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 →