CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/speaker-toolkit

Six-skill presentation system: ingest talks into a rhetoric vault, run interactive clarification, generate a speaker profile, create presentations that match your documented patterns, produce the deck illustrations + thumbnail visual layer, and publish talk pages to a Jekyll shownotes site. Includes a 102-entry Presentation Patterns taxonomy (91 observable, 11 unobservable go-live items) for scoring, brainstorming, and go-live preparation.

78

1.18x
Quality

91%

Does it follow best practices?

Impact

77%

1.18x

Average score across 27 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

schemas-config.mdskills/vault-clarification/references/

Vault Config & Intent Schemas

Config Fields — Clarification Session Questions

Fields below template_skip_patterns are asked during Step 4 (first session only) when empty. The question column shows what to ask the speaker.

Config fieldQuestion
speaker_name"Name as it appears on slides?"
speaker_handle"Social handle for footers?"
speaker_website"Website for talk resources?"
shownotes.source.type"Where do your shownotes live? Local Jekyll, Hugo, Eleventy, Astro, a remote URL, or no shownotes site?"
shownotes.source.path_or_url"Path (or base URL) to the shownotes site root?"
shownotes.source.talks_subdir"Subdirectory under the site root where talk entries live? (e.g., _talks, content/talks)"
shownotes.url.base"Base URL where the shownotes site is deployed?"
shownotes.url.template"Permalink template for a single talk? (e.g., /talks/{slug}/, /{yyyy}-{mm}-{dd}-{slug}/). Verify against your deployed URLs before confirming."
shownotes.thumbnail_path_template"Where in the site repo does the SSG template expect the talk thumbnail? (e.g., assets/images/thumbnails/{slug}-thumbnail.png)"
shownotes.slug_convention.template"Convention for talk slugs? (e.g., {venue-compact}{yy}-{short-id}devnexus26-robocoders). What components and format?"
shownotes.ssg_template_pointer"Which SSG template file encodes the URL/thumbnail conventions (so they can be re-derived after a redesign)? e.g., _layouts/default.html for Jekyll."
template_pptx_path"PowerPoint template path?"
presentation_file_convention"File organization? (default: {conference}/{year}/{talk-slug}/)"
publishing_process.export_format"How do you export final decks — PDF, keep .pptx only, or both?"
publishing_process.export_method"How do you produce the PDF? (e.g., PowerPoint AppleScript, LibreOffice CLI, manual)"
publishing_process.qr_code"Do you put QR codes in your decks? If yes, what do they link to?"
publishing_process.qr_code.shortener"Do you use a URL shortener for QR links? Options: bitly, rebrandly, or none."
publishing_process.qr_code.bitly_domain(Only if shortener=bitly) "Do you have a custom Bitly domain? (e.g., jbaru.ch) — save the domain, or null to record no custom domain (default bit.ly)."
publishing_process.qr_code.rebrandly_domain(Only if shortener=rebrandly) "What custom domain do you use with Rebrandly? (e.g., jbaru.ch) — save the domain, or null to record no custom domain (default)."
publishing_process.qr_code.shortener_setup(Only if shortener=bitly or rebrandly) "Add your API key to {vault_root}/secrets.json (chmod 600). Format: {\"bitly\": {\"api_token\": \"...\"}} or {\"rebrandly\": {\"api_key\": \"...\"}}. Alternatively, install the Bitly or Rebrandly MCP server for agent-driven shortening."
gemini_api_key"Add your Gemini API key to {vault_root}/secrets.json under gemini.api_key (chmod 600). Format: {\"gemini\": {\"api_key\": \"...\"}}. Get a key from https://aistudio.google.com/app/apikey. The GEMINI_API_KEY env var also works as a fallback."
publishing_process.additional_steps"Any other distribution steps after exporting?"

Full Config Schema

See the canonical schema and field reference in ../../vault-profile/references/schemas-config.md. That file also documents the migration path for vaults created before the unified shownotes block.

Confirmed Intents Schema

Stored in the confirmed_intents array of the tracking database. Populated during clarification sessions when the speaker confirms a pattern is intentional.

{
  "confirmed_intents": [{
    "pattern": "delayed_self_introduction",
    "intent": "deliberate|accidental|context_dependent",
    "rule": "Use two-phase intro: brief bio at slide 3, full re-intro mid-talk",
    "note": "Speaker confirmed this is an intentional rhetorical device"
  }]
}

Improvement Goals Schema

Stored in the improvement_goals array of the tracking database. This is the artifact that closes the coaching loop: the speaker picks 1–2 focus areas, and a later ingress run checks whether the targeted issue actually moved. Without it the system diagnoses but never verifies that the speaker acted.

Owner: vault-clarification owns the record shape and migrations (it creates and retires goals during a session). Reader/updater: vault-ingress reads active goals and writes only the verification fields (status, current_value, last_checked, checked_by) — never the shape. On a record whose schema_version it does not recognize, vault-ingress treats it as read-only "no usable goal" and skips verification; the next clarification session migrates it.

{
  "improvement_goals": [{
    "id": "reduce-shortchanged",
    "schema_version": 1,
    "issue": "Shortchanged — rushing the final third under time pressure",
    "kind": "antipattern|underuse|pacing|other",
    "antipattern_id": "shortchanged (null unless kind=antipattern)",
    "metric": "fraction of recent talks exhibiting Shortchanged",
    "baseline_value": "4 of last 6 (0.67)",
    "target": "at or below 1 of 3 (0.33)",
    "set_date": "2026-06-11",
    "set_by": "vault-clarification",
    "status": "active|improving|achieved|stalled|regressed|retired",
    "current_value": "",
    "last_checked": null,
    "checked_by": null
  }]
}
  • kind ties the goal to a coaching surface: antipattern (a recurring antipattern to reduce), underuse (a signature pattern to stop dropping, or an underused pattern to start using), pacing (hit the time/slide budget), other (free-form).
  • antipattern_id is set only when kind is antipattern; it is null for underuse, pacing, and other goals (no antipattern exists to reference).
  • baseline_value is captured from Section 15 of rhetoric-style-summary.md at the moment the goal is set — the fixed yardstick the next run measures against.
  • target is the speaker's own stated aim, not a generic standard.
  • Verification rubric (how vault-ingress sets status) lives in ../../vault-ingress/references/processing-rules.md Improvement Goal Verification.

skills

.mcp.json

README.md

tile.json