Add a speaker and their talk

VerifiedSafe

Creates a speaker bio page, talk page, and headshot for a devopsdays Hugo event site, following the project's slug and TOML frontmatter conventions.

Sby Skills Guide Bot
ContentIntermediate
10/21/2026
Claude Code
#hugo#static-site#content-management#devopsdays#speaker-pages

Recommended for

Automated summary

This skill explains how to add a speaker bio page and talk page to a Hugo-based devopsdays event site.

Strengths

  • Specifies the three files involved (bio, talk, headshot) and the shared slug convention.
  • Flags practical pitfalls such as mixed-case filenames, CRLF line endings, TOML field shape, and the fixed `Type` value.
  • Handles multi-speaker talks and accepted headshot formats.
  • Separates speaker/talk page creation from schedule and program work.

Limitations

  • The supplied text appears truncated at the navigation step, so the procedure may be incomplete.
  • Highly dependent on a specific devopsdays/Hugo repository layout and frontmatter conventions.
  • Does not cover program scheduling, which is delegated to another skill.
When to use it

Use when a speaker and talk are confirmed and their bio and talk pages need to be added to the event site.

When not to use it

Do not use to add a session to the schedule, manage program timing, or edit a site that does not follow this Hugo structure.

Security analysis

Safe
Quality score88/100

The skill is a documentation-style guide for adding speaker and talk markdown files to a Hugo site. The only executable content is a `mkdir -p` and a `cp` from the user's Downloads folder into the repository's assets directory — no deletions, no network calls, no credential handling, no obfuscation, and no attempts to alter the auditor's role. Residual risk is low and limited to ordinary local file operations.

Findings
  • •No allowed-tools are declared, yet the skill includes shell commands (`mkdir -p`, `cp`) the agent would need Bash to run; instructions are benign but the tool requirement is undeclared.
  • •References sibling skill files (`.claude/skills/build-program/SKILL.md`, `.claude/skills/submit-changes/SKILL.md`) whose contents are outside this document and not vetted here.
How this analysis is made

Examples

Add a speaker and talk
Add Jane Doe as a speaker for devopsdays 2026 Boston. Her talk is "Scaling Incident Response" with the abstract: incident response for small teams. Her bio is: Jane leads SRE at Acme. Her headshot is at ~/Downloads/jane.jpg and her GitHub is janedoe.
Add a multi-speaker talk
Add a joint talk for devopsdays 2026 Boston called "Shipping Reliable Platforms" with speakers Jane Doe and Sam Patel. Create each speaker page and one talk page listing both slugs.
Add speaker with accented name
Add María Ramírez as a speaker at devopsdays 2026 Boston. Her talk title is "Observability Without Burnout" and her headshot is ~/Downloads/maria.webp. Use the correct slug and bare image filename.

name: add-speaker description: Use when a devopsdays event has confirmed a speaker and their talk, workshop, ignite, or keynote needs to appear on the event site - covers the speaker bio page, the talk page, the headshot, and multi-speaker talks.

Add a speaker and their talk

Every speaker needs two files that share one slug, plus usually a headshot:

| File | Purpose | |---|---| | content/events/<YYYY>-<city>/speakers/<slug>.md | The bio page | | content/events/<YYYY>-<city>/program/<slug>.md | The talk page: title and abstract | | assets/events/<YYYY>-<city>/speakers/<slug>.<ext> | The headshot |

Adding a speaker does not put them on the schedule. That is .claude/skills/build-program/SKILL.md.

The slug

Lowercase, ASCII, hyphen-separated: jane-doe, maria-lopez. Fold accents (Ramírez → ramirez), drop apostrophes and periods (O'Brien → obrien, J.R. Smith → jr-smith).

The Lint Filenames CI job hard-fails on any mixed-case filename, so this is not cosmetic.

1. Speaker page

content/events/<YYYY>-<city>/speakers/<slug>.md. TOML frontmatter, +++ delimiters:

+++
Title = "Jane Doe"
Twitter = ""
linkedin = ""
image = ""
type = "speaker"
linktitle = "jane-doe"

+++

Jane's bio goes here. Markdown works.

The mixed key casing is what the generator produces and what every existing file uses. Hugo is case-insensitive about frontmatter keys, so match the template rather than tidying it.

Optional fields the theme renders: Website, Facebook, Github, Pronouns, twitch, mastodon, bluesky. Give mastodon and bluesky full profile URLs; Twitter and Github take bare usernames without the @.

image is a bare filename, not a path — it resolves against assets/events/<YYYY>-<city>/speakers/. Leave it "" if there is no photo; the theme falls back to a default avatar.

Watch the first line. If the +++ has a trailing space — which happens with CRLF line endings on Windows — the site will not build. Use LF.

2. Talk page

content/events/<YYYY>-<city>/program/<slug>.md:

+++
Talk_date = ""
Talk_start_time = ""
Talk_end_time = ""
Title = "The Real Title Of The Talk"
Type = "talk"
Speakers = ["jane-doe"]
+++

The abstract goes here. Markdown works.
  • Title here is the display title of the talk, unlike the program YAML where title is a slug. Do not confuse the two.
  • Speakers is always an array, even for one speaker, and holds speaker slugs, not names.
  • The Talk_* fields are vestigial — the schedule comes from the program data. Leave them empty.
  • Keep Type = "talk" even for a keynote, workshop, or ignite. Those values have no layout and fall through to a blank template. The program entry is where you mark it as an ignite or workshop.

3. Headshot

Copy into assets/events/<YYYY>-<city>/speakers/<slug>.<ext>, creating the directory if needed:

mkdir -p assets/events/2026-boston/speakers
cp ~/Downloads/jane.jpg assets/events/2026-boston/speakers/jane-doe.jpg
  • .jpg, .png and .webp all work — the extension must match the actual format
  • Square, ideally 600×600. Non-square images get cropped on the speakers index but not on the individual pages
  • Lowercase filename and lowercase extension
  • Then set it in the speaker file: image = "jane-doe.jpg"

Note utilities/add_speakers.sh hardcodes .png for both the check and the destination, so it will happily save a JPEG under a .png name. Writing the files directly avoids that.

4. Two or more speakers on one talk

Create a speaker page for each. Create one talk page listing all of them:

Speakers = ["jane-doe", "sam-patel"]

You can name that talk file after either speaker, or rename it to something combined (doe-patel.md) — as long as the program entry's title matches the filename.

5. Show the speakers page in the nav

The first time an event adds speakers, uncomment the entry in data/events/<YYYY>/<city>/main.yml:

nav_elements:
  - name: speakers

Do this by hand. The sed in utilities/add_speakers.sh that is supposed to do it no longer matches the template and silently does nothing.

You also need content/events/<YYYY>-<city>/speakers.md to exist:

+++
Title = "Speakers"
Type = "speakers"
Description = "Speakers for devopsdays <City> <YYYY>"
+++

6. Verify

  • Both files use the same slug
  • Speakers = [...] holds slugs that match real files in speakers/
  • image matches a file that is actually on disk, with the right extension
  • Preview /events/<YYYY>-<city>/speakers/ and the individual talk page

7. Submit

Follow .claude/skills/submit-changes/SKILL.md.

PR title: [BOS-2026] Add Jane Doe and her talk.

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/add-a-speaker-and-their-talk-mvda874f/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/add-a-speaker-and-their-talk-mvda874f' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/add-a-speaker-and-their-talk-mvda874f/download' --output '.skill-downloads/add-a-speaker-and-their-talk-mvda874f/SKILL.md.part' && mv '.skill-downloads/add-a-speaker-and-their-talk-mvda874f/SKILL.md.part' '.skill-downloads/add-a-speaker-and-their-talk-mvda874f/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/add-a-speaker-and-their-talk-mvda874f/SKILL.md' && test -s '.skill-downloads/add-a-speaker-and-their-talk-mvda874f/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/add-speaker' && cp -R '.skill-downloads/add-a-speaker-and-their-talk-mvda874f' '.claude/skills/add-speaker'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/add-a-speaker-and-their-talk-mvda874f'

openskills read 'add-a-speaker-and-their-talk-mvda874f'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/add-a-speaker-and-their-talk-mvda874f/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills