CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

add-talk

Add new conference talks to the talks portfolio repository. Handles fetching metadata from sched.co URLs or manual input, generating talk directories with README.md files, fuzzy-matching slide PDFs from ~/Downloads/, and staging all changes. Use when user says "add talk", "new talk", "add these talks", provides sched.co URLs, or mentions adding a presentation or conference entry.

Quality

89%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Workflow

Determine the input path based on what the user provides:

  • sched.co URLs provided → Follow "Fetch from sched.co" then continue to Step 2
  • No URLs / other source → Ask user for: title, date, location (with flag emoji), event name, event link, co-speakers (if any), description. Then continue to Step 2

Step 1: Fetch from sched.co

For each sched.co URL:

  1. Fetch the URL with curl using a browser User-Agent header (sched.com blocks default agents and WebFetch):
    curl -sL -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0" "URL"
  2. sched.co short URLs redirect (302) to the full sched.com URL. Follow redirects with -L.
  3. Extract the <script type="application/ld+json"> block from the HTML. This contains structured metadata:
    • name → talk title (strip speaker names after the dash)
    • startDate → talk date (extract YYYY-MM-DD)
    • description → abstract (HTML, convert <br><br> to paragraph breaks)
    • location.address.streetAddress → city/country
    • superEvent.name → event name
  4. Speaker names and companies are embedded in the name field after a dash. Parse them to populate co-speakers (exclude Juraci Paixao Krohling from the list).
  5. The original sched.co short URL becomes the event link.

Process all URLs in parallel when multiple are provided.

Step 2: Create directories and READMEs

For each talk:

  1. Create the directory: YYYY/YYYY-MM-DD-event-slug/
  2. Create a README.md following the template in readme-template.md

The event slug should be a short, descriptive kebab-case name derived from the event and talk topic (e.g., kubecon-eu-taming-wasteful-telemetry, observability-day-otel-gateways).

Step 3: Find and copy slides

  1. List PDF files in ~/Downloads/:
    ls -la ~/Downloads/*.pdf
  2. For each talk, tokenize the title into keywords and match against filenames (case-insensitive)
  3. If a strong match is found, copy it:
    cp ~/Downloads/"matched-file.pdf" YYYY/YYYY-MM-DD-event-slug/slides.pdf
  4. If no match is found, inform the user which talks are missing slides

Step 4: Stage changes

Stage all new files:

git add YYYY/

Never commit — only stage for review.

Important notes

  • Location format always includes a flag emoji (e.g., "Amsterdam, Netherlands 🇳🇱")
  • YouTube recording URLs use the short youtu.be format
  • When a talk has no description (e.g., welcome/opening remarks), omit the Abstract section from the README
Repository

jpkrohling/talks

Path

.claude/skills/add-talk/SKILL.md

Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.