{}OPF
DocsSchema referenceEdit on GitHub

Tone

Schema for tone records in the pptx.gallery library. Each record names a presentation tone (e.g. 'formal', 'casual', 'inspirational') and carries voice cues, anti-patterns, and sample phrases that AI-driven ge…

Schema $id

https://openpresentation.org/schema/opf-tone/v1

Source

spec/schemas/tone.schema.json

Field index

FieldTypeReqDefaultDescription
$schemaconstyesIdentifies this record as a tone in the openpresentation.org catalog.
idstringyesStable slug used by OPF documents to reference this tone via tone. Lowercase kebab-case.
namestringyesHuman-readable tone name shown in pickers.
summarystringOne-sentence positioning of the tone — when to reach for it.
descriptionstringLonger prose describing the tone and the kinds of decks it suits.
voiceCuesarray<string>Short directives that shape AI generation toward this tone. Phrased as imperatives, e.g. 'use second-person', 'favor short sentences', 'lead with the recommendation'.
avoidarray<string>Anti-patterns that AI generation should not produce when this tone is active.
samplePhrasesarray<string>Short example phrases that exemplify this tone. Used by picker UIs and as few-shot examples for AI generation.
recommendedNarrativesarray<string>Soft cross-link: narrative-catalog ids this tone pairs well with. Used by picker UIs to suggest narratives once a tone is chosen. Validators warn on unknown ids; never error.
tagsarray<string>Free-form labels for filtering and search.
previewobjectVisual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional.

$schema

Type: const · Required · Default:

Identifies this record as a tone in the openpresentation.org catalog.

$schema.json
{
  "$schema": "https://openpresentation.org/schema/opf-tone/v1"
}

id

Type: string · Required · Default: · Pattern: ^[a-z][a-z0-9-]*$

Stable slug used by OPF documents to reference this tone via tone. Lowercase kebab-case.

id.json
{
  "id": "formal"
}

name

Type: string · Required · Default:

Human-readable tone name shown in pickers.

name.json
{
  "name": "Formal"
}

summary

Type: string · Optional · Default:

One-sentence positioning of the tone — when to reach for it.

summary.json
{
  "summary": "Polished, restrained voice for board, investor, and regulator audiences."
}

description

Type: string · Optional · Default:

Longer prose describing the tone and the kinds of decks it suits.

description.json
{
  "description": "Authoritative without being cold. Use third-person constructions, full sentences, and concrete numbers. Avoid hedges and humor that depend on shared in-jokes; rely on clarity and precision to land."
}

voiceCues

Type: array<string> · Optional · Default:

Short directives that shape AI generation toward this tone. Phrased as imperatives, e.g. 'use second-person', 'favor short sentences', 'lead with the recommendation'.

voiceCues.json
{
  "voiceCues": [
    "Use third person.",
    "Lead with the recommendation, then evidence.",
    "Quote concrete numbers; avoid round-tripping ranges."
  ]
}

avoid

Type: array<string> · Optional · Default:

Anti-patterns that AI generation should not produce when this tone is active.

avoid.json
{
  "avoid": [
    "Slang, idioms, or in-jokes.",
    "Hedging language ('maybe', 'sort of', 'I think').",
    "Marketing superlatives ('world-class', 'best-in-class')."
  ]
}

samplePhrases

Type: array<string> · Optional · Default:

Short example phrases that exemplify this tone. Used by picker UIs and as few-shot examples for AI generation.

samplePhrases.json
{
  "samplePhrases": [
    "Q4 revenue grew 18% year over year, led by enterprise expansion.",
    "We recommend approving the Series B raise at $30M.",
    "Net retention was 124%; gross retention was 96%."
  ]
}

recommendedNarratives

Type: array<string> · Optional · Default:

Soft cross-link: narrative-catalog ids this tone pairs well with. Used by picker UIs to suggest narratives once a tone is chosen. Validators warn on unknown ids; never error.

recommendedNarratives.json
{
  "recommendedNarratives": [
    "board-meeting",
    "qbr",
    "scqa"
  ]
}

tags

Type: array<string> · Optional · Default:

Free-form labels for filtering and search.

tags.json
{
  "tags": [
    "business",
    "executive"
  ]
}

preview

Type: object · Optional · Default:

Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional.

preview.json
{
  "preview": {}
}