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.
Use when a speaker and talk are confirmed and their bio and talk pages need to be added to the event site.
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
SafeThe 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.
- •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.
Examples
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 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 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.
Titlehere is the display title of the talk, unlike the program YAML wheretitleis a slug. Do not confuse the two.Speakersis 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,.pngand.webpall 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 inspeakers/imagematches 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 filesThis 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.mdFrom 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 installationopenskills 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 syncManual 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.
Writing Fragments
Content
Mine raw writing fragments through a relentless interview, without imposing structure. Capture ideas, quotes, and leading words for later use.
UI Copywriting & Auditing
Content
Write or audit user-facing UI copy including buttons, errors, empty states, and tooltips across the monorepo, following the design system source of truth.
Music MIDI Extraction
Content
Extracts the MIDI or score from an existing music production via the CogMusic MCP tool and confirms availability.