Referencia · som-skill-library

Skills

SOM lleva el contexto; las skills llevan el conocimiento. Una skill es una regla escrita una sola vez, por la redacción, y legible por todas las herramientas. Declara lo que es cierto — la herramienta dueña del executor es la única que actúa.

El modelo

Las skills declaran. Los executors actúan.

1

La skill declara

Un archivo de skill enuncia una condición y lo que es cierto cuando se cumple — un flag sigue en pie, se aplica un hold, se justifica un enriquecimiento. Nunca ejecuta nada, nunca escribe el estado de la Story y nunca cambia el contenido.

2

El executor invoca (recall)

Los executors viven dentro de las herramientas de los fabricantes. Cada uno compara los mensajes entrantes con los adverts de las skills — el bloque recall, legible por máquina — y publica lo que la skill declara como skill.warning.raised.

3

La herramienta actúa

El MAM impide vincular un Asset retenido, el playout rechaza el paso a antena, el CMS retiene una ruta. Cada uno a su manera, y cada uno decidiendo por sí mismo. Nadie recibe una orden.

Forma abierta, política de la casa. Las skills siguen el formato abierto agentskills.io ↗: un archivo markdown con frontmatter YAML. La biblioteca compartida es genérica; cada redacción carga sobre ella sus propios valores. Tu política sigue siendo tuya, y una redacción puede implementar SOM 1.0 por completo sin usar la biblioteca en absoluto.

Anatomía

Un archivo: frontmatter para las máquinas, prosa para las personas

---
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
Identidad

skill_id como publisher/name, un skill_version semver, las versiones de schema de SOM contra las que se resuelve, una category y un lifecycle.

El advert

recall indica qué tipos de herramienta pueden recoger la skill, las condiciones sobre rutas de la Story (field y field_change) y qué mensajes provocan una revisión. Las rutas son literales y se comprueban contra el schema publicado; los valores pueden tomarse como plantilla de la configuración de la casa.

Instancia configurada

Un archivo genérico con los valores de una casa cargados, vigilando una condición. Una casa ejecuta varias a partir del mismo archivo — una restricción judicial con alcance story, una cifra sin confirmar con alcance link — y registra una fila de advert por cada instancia configurada.

Severidad

hold / flag / inform, en minúsculas para siempre. Una skill declara en severity_range cuáles de ellas puede producir.

GarantíaValorQué significa
auto_change_contentfalseEl único valor permitido. Lo que se retiene es una acción, nunca el contenido — un executor que edita para liberar ha roto el modelo.
fail_closedtrueUn valor ilegible se trata como si la condición se cumpliera, con la severidad más alta que tenga la skill. Nunca se permite el silencio ante una restricción ilegible.
output_messages["skill.warning.raised"]Una skill tiene una sola forma de decir algo. Nunca escribe el estado de la Story.
depends[]El encadenamiento ocurre a través del bus, no mediante dependencias declaradas. Un hold se anuncia contra el estado del flag, sin importar quién lo haya levantado.

som-skill-library 0.2.2

Diez skills de referencia y una propuesta

Todas lifecycle: draft, origin: reference, resueltas contra SOM 1.0. Busca tu tipo de herramienta en la tabla de consulta, lee las skills de esa fila y configúralas para tu casa.

SkillDeclaraCategoríaSeveridadInvocada por
raise-flag-on-matchUn flag con nombre sobre una Story cuando un campo configurado coincide con un valor configurado — desde su creación, incluso antes de que exista ningún medio.compliance · X=1flaginform
planning
rundown
mam
graphics
discovery
hold-while-flaggedUna acción con nombre retenida mientras siga en pie un flag de un tipo configurado, liberada solo por una aprobación de autoridad igual o superior en el mismo alcance.compliance · X=1hold
mam
playout
rundown
cms
compliance_hub
gate-by-scopeSi el gate de una ruta de destino permite un Telling ahora mismo. Siempre con alcance de link.compliance · X=1holdinform
cms
playout
rundown
mam
distribution
record-provenance-on-ingestQue la procedencia de una fuente queda registrada al entrar en una Story — incluida una cadena C2PA ausente, registrada como ausente.compliance · X=1inform
mam
ingest
verification
discovery
archive
flag-on-mismatchUna discrepancia cuando un Asset vinculado o un elemento de la escaleta lleva un valor que la Story ya no tiene — nombrando ambos valores.editorial · X=2flaginform
rundown
graphics
cms
playout
apply-clearanceQué miembro de un conjunto de versiones preparado pasa a ser el vigente con una aprobación, y a qué miembros sustituye.workflow · X=3inform
playout
rundown
mam
cms
graphics
enrich-on-conditionQue un enriquecimiento con nombre está justificado para un Asset mientras se cumpla una condición configurada. Nunca ejecuta el enriquecimiento.workflow · X=3inform
mam
verification
multimodal
transcription
ingest
match-and-proposeUna Story candidata para un clip suelto, con una confianza igual o superior a la fijada por la casa. La confirmación es un acto humano que se registra en otro lugar.workflow · X=3inform
multimodal
mam
discovery
ingest
rundown
select-provider-by-contextQué proveedor resuelve la política de la casa para una capacidad, dado el contexto de la historia. Nunca asigna ni invoca.workflow · X=3inform
transcription
verification
surface-on-context-matchUn elemento de una fuente monitorizada que coincide con la Story en curso, con su procedencia. Aditivo, fuera de la ruta crítica.workflow · X=3inform
transcription
verification
discovery
markets_data
mam
planning
declare-context-on-commit
propuesta
El contexto de la historia que se aplica en un link cuando un Asset se vincula a un destino.workflow · X=3inform
playout
mam
graphics

Tabla de consulta ↗ · Convenciones ↗ · Todos los archivos de skills ↗

Cuando las skills se encuentran

Los holds se combinan por conjunción

Basta un hold para retener

Cuando varios gates condicionan el mismo hecho en el mismo Telling, solo se sirve cuando todos lo permiten. «Gana el más restrictivo» y «el propietario de la Story tiene prioridad» se retiraron formalmente el 29 de julio de 2026.

La precedencia entre dos skills que chocan en la misma acción es otra cuestión, y se ordena por X (categoría: compliance 1, editorial 2, workflow 3), Y (origen — todas las skills de la biblioteca son 5) y Z, que solo fija la casa que publica.

Encadenamiento a través del bus

Una skill que declarara un estado y además retuviera algo ocuparía dos posiciones a la vez. Por eso «marcar y retener» son dos skills: flag-on-mismatch declara el flag, y hold-while-flagged se anuncia contra el estado del flag — lo haya levantado quien lo haya levantado, una skill o un abogado.

Por eso depends está vacío en todas partes: declarar una dependencia la invertiría y crearía un ciclo en el primer cambio de versión.

Fail-closed. Un valor de configuración o de la Story que no se puede leer se trata como si la condición se cumpliera, con la severidad más alta que tenga la skill, y detail indica qué no se pudo leer. Si una regla no se puede evaluar, la salida que protege sigue retenida y decide una persona.

Lo que no levanta un hold: el paso del tiempo, que el flag simplemente no aparezca en un snapshot posterior, una aprobación en otro alcance, una autoridad inferior, un reinicio del executor o la aprobación de otro flag. Liberar un hold nunca es una instrucción de liberar el Asset.

Validación

La biblioteca se comprueba a sí misma

La biblioteca incluye cinco scripts, y cada uno responde a una pregunta distinta — incluida la de si los documentos coinciden con los archivos que describen.

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

Hay un hueco que se nombra en lugar de ocultarse: check_paths.py solo resuelve rutas literales. Un valor {{ config.* }} es imposible de conocer hasta que una casa lo configura, así que detectar una ruta configurada incorrecta es trabajo de la casa en el momento del registro.

Abierto, con honestidad

Lo que la biblioteca no pretende resolver

  • Cómo se compara la autoridad. «Aprobado por una autoridad igual o superior en el mismo alcance» es la posición de trabajo de la biblioteca, con el orden que aporta cada casa como authority_scale. Ningún grupo lo ha ratificado.
  • Quién convierte una advertencia levantada en estado de gate. Una skill de tipo raise solo publica una advertencia; una skill de tipo hold lee editorial_gates[]. Qué materializa una cosa en la otra aún no está definido.
  • Coincidencia de etiquetas calificadas por esquema. Hoy las skills comparan tags[].value sin tener en cuenta el esquema; sigue abierto si deben coincidir con newsroom:sport en lugar de con sport.
  • Configuración de la demo. Las instancias configuradas que se usaron en el recorrido del IBC nombran a fabricantes concretos y no se publican en 1.0, a la espera del visto bueno de cada fabricante.

Siguiente: valida y publica tu primer mensaje →