Agent skill

Summarize Call

by reysu in reysu/ai-life-skills

Transcribe a call recording with speaker diarization, summarize it, and create Obsidian vault notes (call note, transcript, person notes for participants).

MITAuto-check: notesMedia & Creative

Install Summarize Call

skills CLI
$ npx skills add reysu/ai-life-skills --skill summarize-call -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install reysu/ai-life-skills summarize-call --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/reysu/ai-life-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/summarize-call .claude/skills/summarize-call && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
summarize-call
GitHub stars
270
Token cost
~3.8k tokens
SKILL.md length
1,479 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
MIT

At a glance

Transcribe a call recording with speaker diarization, summarize it, and create Obsidian vault notes (call note, transcript, person notes for participants).

  • Works in 8 steps: Bootstrap check (first run) → 5: Determine depth mode → Choose transcription method → …
  • Tasks that involve Transcription
  • SKILL.md covers Requirements, Configuration, Trigger and Inputs, plus 9 more sections
  • Calls uv, brew and apt; reaches api.elevenlabs.io; needs ELEVENLABS_API_KEY and HF_TOKEN

What it does

Summarize Call is an agent skill from reysu/ai-life-skills. Transcribe a call recording with speaker diarization, summarize it, and create Obsidian vault notes (call note, transcript, person notes for participants). Works with video or audio files. Supports local transcription (mlxwhisper + pyannote) or ElevenLabs Scribe.

Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Media & Creative, covering Transcription, Text to speech and voice and Speech recognition and synthesis. It works with ElevenLabs, Obsidian and FFmpeg. The licence is MIT.

When your agent uses it

  • Tasks that involve Transcription
  • Tasks that involve Text to speech and voice
  • Tasks that involve Speech recognition and synthesis

Example prompts

  • “/summarize-call”

Requirements

  • Python 3
  • A credential in ELEVENLABS_API_KEY

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Bootstrap check (first run)
  2. 5: Determine depth mode
  3. Choose transcription method
  4. Extract audio
  5. Transcribe + diarize
  6. Summarize
  7. Create vault notes
  8. Handle mid-call name-drops

What it can do on your machine

Read from SKILL.md and the folder at commit cd3e454. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • uv
    • brew
    • apt
    • dnf
    • pip
    • ffmpeg

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.elevenlabs.io

    Also links to:

    • huggingface.co
    • ffmpeg.org
    • elevenlabs.io

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • ELEVENLABS_API_KEY
    • HF_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Summarize Call loads about 3.8k tokens when it runs. Until then it costs about 70 tokens; SKILL.md has 1,479 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~70
When it runs · the whole SKILL.md, loaded when a task matches
~3.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteRuns commands with sudoSKILL.md:102
    - Linux (Debian/Ubuntu): `sudo apt install ffmpeg`
  • NoteRuns commands with sudoSKILL.md:103
    - Linux (Fedora/RHEL): `sudo dnf install ffmpeg`

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from reysu/ai-life-skills at commit cd3e454, republished under its MIT licence (© reysu). 1,479 words, ~3,816 tokens.

Download SKILL.mdSave it as .claude/skills/summarize-call/SKILL.md (or your agent's skills folder).
name
summarize-call
description
Transcribe a call recording with speaker diarization, summarize it, and create Obsidian vault notes (call note, transcript, person notes for participants). Works with video or audio files. Supports local transcription (mlx_whisper + pyannote) or ElevenLabs Scribe.
user_invocable
true

Summarize Call

Takes a call recording (video or audio), transcribes it with speaker labels, summarizes it, and writes structured notes into your Obsidian vault.

Requirements

Vault structure — the skill expects these folders inside your Obsidian vault. Folder names are defaults; override them in the Configuration block below if your vault uses different names.

FolderPurpose
03 Meetings/Where call notes and transcripts land
04 People/Person notes for participants
02 Daily/YYYY/MM/Daily notes, named MM-DD-YY ddd.md
_Templates/Note templates — skill installs new person template.md here on first run

CLI tools — install these before first use, or let Step 0 walk you through it:

ToolPurposeInstall
ffmpegExtract audio from video filesmacOS: brew install ffmpeg · Linux: apt install ffmpeg or dnf install ffmpeg · Windows: ffmpeg.org/download.html
mlx_whisper (local path)Local transcriptionpip install mlx-whisper
pyannote.audio (local path)Local speaker diarizationsee Step 1 walkthrough

Alternative to local: set ELEVENLABS_API_KEY to use ElevenLabs Scribe for transcription + diarization in one call (paid, faster, no setup).

Configuration

The skill reads these variables at runtime. Override any of them via environment variables, or edit the defaults here:

VAULT_ROOT       = $VAULT_ROOT        # auto-detected if not set (see Step 0a)
MEETINGS_DIR     = 03 Meetings
PEOPLE_DIR       = 04 People
DAILY_DIR        = 02 Daily
TEMPLATES_DIR    = _Templates

All paths below are relative to $VAULT_ROOT.

Trigger

When the user provides a call recording (MP4, MOV, WAV, MP3, M4A, etc.) and wants it transcribed, summarized, and documented.

Inputs

  • Recording: file path to the recording
  • Participants: names of the people on the call
  • Date/time: extract from filename if possible, otherwise ask
  • Speaker count: default 2, ask if ambiguous

Step 0: Bootstrap check (first run)

Before doing any work, verify the environment is ready. Skip any check that already passes — only prompt the user when something is actually missing.

0a. Resolve the vault root
bash
vault=""
if [ -n "$VAULT_ROOT" ]; then
  vault="$VAULT_ROOT"
else
  dir="$PWD"
  while [ "$dir" != "/" ]; do
    if [ -d "$dir/.obsidian" ]; then vault="$dir"; break; fi
    dir="$(dirname "$dir")"
  done
fi
echo "Vault: ${vault:-NOT FOUND}"

If no vault is found, ask the user:

What's the absolute path to your Obsidian vault? Recommended: use a new, dedicated Obsidian vault for this skill — not your existing personal vault. The skill creates and modifies many notes and folders, and a clean vault avoids polluting your existing notes. If you don't have one yet, create an empty folder, open it in Obsidian (File → Open vault as folder), and paste that path here.

After they answer, validate that <answer>/.obsidian/ exists before using it — if not, warn that the path doesn't look like an Obsidian vault (they may need to open it in Obsidian first) and ask them to confirm or re-enter. Use the validated answer as $VAULT_ROOT for the session (and suggest they set it permanently in their shell profile).

0b. Check required folders
bash
for d in "$MEETINGS_DIR" "$PEOPLE_DIR" "$DAILY_DIR" "$TEMPLATES_DIR"; do
  [ -d "$VAULT_ROOT/$d" ] || echo "MISSING: $d"
done

For each missing folder, ask the user: "Create <folder> in your vault? [y/N]" — if yes, mkdir -p "$VAULT_ROOT/<folder>".

0c. Check required CLI tools
bash
command -v ffmpeg >/dev/null 2>&1 || echo "MISSING: ffmpeg"

If ffmpeg is missing, ask the user before installing. Install command depends on the platform:

  • macOS: brew install ffmpeg
  • Linux (Debian/Ubuntu): sudo apt install ffmpeg
  • Linux (Fedora/RHEL): sudo dnf install ffmpeg
  • Windows: download from https://ffmpeg.org/download.html
0d. Install the person template if missing

If $VAULT_ROOT/$TEMPLATES_DIR/new person template.md does not exist, ask the user which version to install:

Install person template — which version?

  1. Minimal (default, works in any vault)
  2. Full (requires Dataview plugin + Obsidian Bases)

Copy the chosen template from the repo's shared templates/ directory (sibling of this skill dir, i.e. ../templates/) into $VAULT_ROOT/$TEMPLATES_DIR/new person template.md. If the file already exists, leave it alone — the user may have customized it.

Once Step 0 passes, proceed to Step 0.5.

Step 0.5: Determine depth mode

Before transcribing, establish which depth the user wants:

  1. Scan the invocation first. If the user's request already specifies a mode, use it and skip the prompt:
    • Words like minimal, fast, quick, --minimal, -m → minimal mode
    • Words like detailed, deep, full, --detailed, -d → detailed mode
  2. Otherwise, prompt. No default — if unspecified, ask every time:

Depth?

  1. Detailed (best results) — person notes for every person mentioned, including third parties name-dropped mid-call (celebrities, YouTubers, mutual friends). Public figures get researched biographies.
  2. Minimal (fast) — person notes for call participants only. Name-drops mid-call stay as dangling wikilinks.

This keeps interactive runs explicit while letting scheduled tasks / cron / /loop pass the mode in the invocation (e.g. /summarize-call ~/call.mp4 minimal) without blocking on input.

The chosen mode determines how Step 6 runs.

Step 1: Choose transcription method

Ask the user:

Transcription method?

  1. Local (mlx_whisper + pyannote — free, private, slower, requires setup)
  2. ElevenLabs Scribe (paid, faster, handles transcription + diarization in one call)
Option A: Local — walkthrough if not set up

If the user picks local, verify each component and walk them through any missing piece:

1. mlx_whisper

bash
command -v mlx_whisper >/dev/null 2>&1 || echo "MISSING: mlx_whisper"

If missing, ask before installing: pip install mlx-whisper

2. pyannote.audio environment

Check for the venv at ~/.local/share/summarize-call/pyannote-env (persists across reboots, XDG-compliant):

bash
PYANNOTE_ENV="${XDG_DATA_HOME:-$HOME/.local/share}/summarize-call/pyannote-env"
[ -d "$PYANNOTE_ENV" ] || echo "MISSING: pyannote venv"

If missing, walk through setup:

bash
mkdir -p "$(dirname "$PYANNOTE_ENV")"
# Create venv with uv (or python3 -m venv if uv not installed)
uv venv "$PYANNOTE_ENV"
source "$PYANNOTE_ENV/bin/activate"
uv pip install pyannote.audio torch torchaudio

3. HuggingFace token

Check for HF_TOKEN:

bash
[ -n "$HF_TOKEN" ] || echo "MISSING: HF_TOKEN"

If missing, tell the user:

You need a HuggingFace token with access to the pyannote gated repos.

  1. Create a token at https://huggingface.co/settings/tokens (choose "Read" scope)
  2. Accept the terms for all three repos while logged in:
  3. Export for this session: export HF_TOKEN="hf_..."
  4. To persist, add that line to your ~/.zshrc (or ~/.bashrc)

Wait for the user to confirm before continuing.

Option B: ElevenLabs Scribe — walkthrough if not set up

If the user picks ElevenLabs, check for the API key:

bash
[ -n "$ELEVENLABS_API_KEY" ] || echo "MISSING: ELEVENLABS_API_KEY"

If missing, tell the user:

You need an ElevenLabs API key.

  1. Grab one at https://elevenlabs.io/app/settings/api-keys
  2. Export for this session: export ELEVENLABS_API_KEY="..."
  3. To persist, add that line to your ~/.zshrc (or ~/.bashrc)

Wait for the user to confirm before continuing.

Before calling Scribe, always print the recording duration and a pricing heads-up so the user can confirm:

This recording is <HH:MM:SS> (<minutes> min). Check ElevenLabs pricing at https://elevenlabs.io/pricing for the current per-minute rate on the Scribe model. Continue? [y/N]

Show full SKILL.md (613 more words)Show less

Step 2: Extract audio

bash
ffmpeg -v quiet -i "<input>" -vn -acodec pcm_s16le -ar 16000 -ac 1 /tmp/<name>.wav -y

Step 3: Transcribe + diarize

Option A: Local (mlx_whisper + pyannote)

Transcribe:

bash
mlx_whisper --model mlx-community/whisper-large-v3-turbo --language en \
  --output-dir /tmp --output-format json \
  --condition-on-previous-text False /tmp/<name>.wav
  • Use --language en for English calls
  • For Japanese: --language ja (or use a kotoba-whisper model for better accuracy)
  • --condition-on-previous-text False prevents whisper hallucination loops
  • Start processing partial results while transcription is still running — don't block

Diarize with pyannote:

python
from pyannote.audio import Pipeline
import torch, os

pipeline = Pipeline.from_pretrained(
    "pyannote/speaker-diarization-3.1",
    use_auth_token=os.environ["HF_TOKEN"]
)
device = "cuda" if torch.cuda.is_available() else ("mps" if torch.backends.mps.is_available() else "cpu")
pipeline.to(torch.device(device))  # GPU if available, CPU otherwise

output = pipeline("/tmp/<name>.wav", num_speakers=<N>)
annotation = output.speaker_diarization
for turn, _, speaker in annotation.itertracks(yield_label=True):
    # save turn.start, turn.end, speaker

Note: use output.speaker_diarization.itertracks(yield_label=True) (not output.itertracks).

Merge transcript + diarization:

  • Map whisper segments to speaker turns by matching timestamps
  • Merge consecutive same-speaker segments into paragraphs
  • Format: [H:MM:SS] **Speaker**: text
Option B: ElevenLabs Scribe
python
import requests, os

url = "https://api.elevenlabs.io/v1/speech-to-text"
headers = {"xi-api-key": os.environ["ELEVENLABS_API_KEY"]}

with open("/tmp/<name>.wav", "rb") as f:
    response = requests.post(
        url,
        headers=headers,
        files={"file": f},
        data={
            "model_id": "scribe_v1",
            "language_code": "<lang>",  # e.g. "eng", "jpn"
            "diarize": "true",
            "timestamps_granularity": "word",
            "num_speakers": <N>
        }
    )

result = response.json()

Scribe handles both transcription AND diarization in one call — no pyannote needed. Format the result the same way: [H:MM:SS] **Speaker**: text.

Step 4: Summarize

  • Model choice depends on depth mode:
    • Detailed: use the highest-quality model available (Opus if the user has access, otherwise Sonnet)
    • Minimal: Sonnet — good enough for conversational content at ~5x lower cost
  • For long transcripts (>3000 words), split into chunks and summarize each in parallel, then combine
  • Extract: key topics, decisions, action items, notable quotes (with speaker attribution)

Step 5: Create vault notes

Transcript file
  • Location: $MEETINGS_DIR/<MM-DD-YY Day Participant1 x Participant2> Transcript.md
  • Content: the merged, speaker-labeled transcript with timestamps
  • Frontmatter:
    yaml
    ---
    date: YYYY-MM-DD
    duration: <seconds>
    meeting: "[[<Call Note Title>]]"
    unread: true
    ---
Call note
  • Location: $MEETINGS_DIR/<MM-DD-YY Day Participant1 x Participant2>.md
  • Frontmatter:
    yaml
    ---
    created: YYYY-MM-DDTHH:MM
    updated: YYYY-MM-DDTHH:MM
    tags: [call]
    date: YYYY-MM-DD
    start: HH:MM
    end: HH:MM
    duration: <seconds>
    people: ["[[Participant 1]]", "[[Participant 2]]"]
    summary: "1-line description of call topics"
    transcript: "[[<Call Note Title> Transcript]]"
    unread: true
    ---
  • No # Title heading — filename is the title
  • Body structure:
    markdown
    > [!tldr]
    > [2-3 sentence overview]
    
    ## Key Topics
    - ...
    
    ## Decisions
    - ...
    
    ## Action Items
    - [ ] ...
    
    ## Notable Quotes
    > [!quote] [[Participant 1]]
    > "..."
    
    ## People Mentioned
    - [[Person Name]] — brief context
  • summary frontmatter field is mandatory — never omit it
  • Wikilink everything — people, companies, products, concepts, places
Person notes
  • For each participant: create at $PEOPLE_DIR/<Full Name>.md using the template at $VAULT_ROOT/$TEMPLATES_DIR/new person template.md
  • Extract ALL biographical details mentioned in the call (location, career, family, background)
  • For mid-call name-drops: behavior depends on depth mode (see Step 6)
Daily note
  • Update $VAULT_ROOT/$DAILY_DIR/YYYY/MM/MM-DD-YY ddd.md (create YYYY/MM/ if missing)
  • No # Title heading — filename is the title
  • Set unread: true in frontmatter
  • Add under a ## calls/meetings section:
    markdown
    - [[<Call Note Title>]] — brief description

Step 6: Handle mid-call name-drops

Detailed mode

For every person, company, product, or concept wikilinked in the call note (that isn't already a note), create a reference or person note:

  • People: research public figures (birthday, career, links); private individuals get minimal notes based only on what was said
  • Concepts / companies / products: create in 07 References/ (or $REFERENCES_DIR if you have the /summarize skill installed) with a 2-4 sentence explanation
  • For large numbers of notes (>10 missing), dispatch parallel subagents (highest available model) in batches of ~20

After all notes are created, audit for dangling links. The regex excludes | (alias), # (heading ref), and ^ (block ref) so [[Target|Alias]], [[Page#Heading]], and [[Page^block]] all resolve to the canonical note name Target / Page:

bash
grep -oE '\[\[[^]|#^]+' "<call_note_path>" | sed 's/\[\[//' | sort -u
for term in <each>; do
  found=$(find "$VAULT_ROOT" -name "$term.md" -not -path "*/.Trash/*" 2>/dev/null | head -1)
  [ -z "$found" ] && echo "MISSING: $term"
done

Re-create any missed notes. The call is not done until zero dangling links remain.

Minimal mode

Create person notes only for call participants (those in the people frontmatter). All other wikilinks — mid-call name-drops, concepts, companies — stay dangling. Skip the audit.

Key rules

  1. Wikilink everything in the call note — every person, company, concept, place
  2. No # Title headings — Obsidian shows filename as title
  3. Never repeat frontmatter in body
  4. summary frontmatter is mandatory on call notes
  5. unread: true on every note created
  6. Model choice: detailed uses the highest available model (Opus if accessible, else Sonnet); minimal uses Sonnet. Never Haiku.
  7. Always --condition-on-previous-text False on mlx_whisper to prevent hallucination loops
  8. Auto-detect device for pyannote (CUDA → MPS → CPU) so it works on any platform
  9. Person note ## updates links to the call note, never the daily note

© reysu, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in summarize-call of reysu/ai-life-skills.

Open the folder on GitHubat commit cd3e454

Compare with similar skills

Summarize Call next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Summarize Call compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Summarize Call this skillreysu/ai-life-skills270—~3.8kAutomated safety check: NotesMIT
Speech To Texttadaspetra/loop2963 repos~2kAutomated safety check: PassMIT
Video Productionspeechlab0210/video-production-skill105—~4.1kAutomated safety check: NotesMIT
Local AI Useamd/skills398—~5kAutomated safety check: NotesMIT
Speech Engineelevenlabs/skills481—~2.5kAutomated safety check: WarnMIT
Watch Videocoreyhaines31/makerskills848—~3.7kAutomated safety check: PassMIT

Similar skills

  • Speech To Text

    tadaspetra/loop

    Transcribe audio to text using ElevenLabs Scribe v2. An agent skill from tadaspetra/loop.

    296 GitHub starsUsed in 3 repos~2k tokens
    Media & CreativeAuto-check passed
  • Video Production

    speechlab0210/video-production-skill

    AI educational video production pipeline. An agent skill from speechlab0210/video-production-skill.

    105 GitHub stars~4.1k tokensUpdated 3 mo ago
    Media & CreativeAuto-check: notes
  • Local AI Use

    amd/skills

    Makes this agent generate images, transcribe audio, and synthesize speech on the user's own machine through a local Lemonade Server instead of a paid cloud API.

    398 GitHub stars~5k tokensUpdated today
    Media & CreativeAuto-check: notes
  • Speech Engine

    elevenlabs/skills

    Add real-time voice conversations to a custom agent runtime with ElevenLabs Speech Engine.

    481 GitHub stars~2.5k tokensUpdated today
    Media & CreativeAuto-check: warnings
  • Watch Video

    coreyhaines31/makerskills

    When you want to extract content from a video — YouTube, Loom, Vimeo, Riverside, Zoom recording, local MP4, X/IG video, anything yt-dlp supports.

    848 GitHub stars~3.7k tokensUpdated 1 mo ago
    Media & CreativeAuto-check passed
  • C Voice

    daxaur/openpaw

    Convert speech to text using sag (ElevenLabs STT) and synthesize speech using say (macOS built-in TTS).

    174 GitHub stars~401 tokensUpdated 4 mo ago
    Media & CreativeAuto-check passed

More from reysu/ai-life-skills

  • Summarize

    reysu/ai-life-skills

    Summarize any content (YouTube video, article, whitepaper/PDF, podcast episode, book chapter, etc.) into a rich Obsidian note with section-by-section breakdowns, wikilinks to all technical concepts…

    270 GitHub stars~7.7k tokensUpdated 1 mo ago
    Auto-check passed

Questions about Summarize Call

What does Summarize Call do?

Transcribe a call recording with speaker diarization, summarize it, and create Obsidian vault notes (call note, transcript, person notes for participants). Summarize Call is an agent skill from reysu/ai-life-skills. Transcribe a call recording with speaker diarization, summarize it, and create Obsidian vault notes (call note, transcript, person notes for participants).

When should I use Summarize Call?

Summarize Call fits situations like: tasks that involve Transcription; tasks that involve Text to speech and voice; tasks that involve Speech recognition and synthesis.

How do I install Summarize Call in Claude Code?

Run `npx skills add reysu/ai-life-skills --skill summarize-call -a claude-code`. Or copy the skill folder (summarize-call in reysu/ai-life-skills) into .claude/skills/summarize-call in your project. Claude Code loads it when a task matches its description.

How do I install Summarize Call in Codex?

Run `npx skills add reysu/ai-life-skills --skill summarize-call -a codex`. Or copy the skill folder (summarize-call in reysu/ai-life-skills) into .agents/skills/summarize-call in your project. Codex loads it when a task matches its description.

Can I use Summarize Call in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add reysu/ai-life-skills --skill summarize-call -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/summarize-call, .gemini/skills/summarize-call, .github/skills/summarize-call and .opencode/skills/summarize-call in your project.

What does Summarize Call need to run?

Going by SKILL.md and its folder, Summarize Call needs the command-line tools its instructions call (uv, brew, apt, dnf, pip and ffmpeg) and credentials named ELEVENLABS_API_KEY and HF_TOKEN. Our summary lists: Python 3; A credential in ELEVENLABS_API_KEY.

Does Summarize Call access the network?

SKILL.md names 4 domains. In commands or code: api.elevenlabs.io; the agent is likely to contact it when it follows the instructions. As links in the text: huggingface.co, ffmpeg.org and elevenlabs.io. This is read from the text; nothing was executed.

Is Summarize Call safe to install?

Our automated static check of SKILL.md found notes only (runs commands with sudo), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Summarize Call use?

Summarize Call is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Summarize Call use?

About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Summarize Call?

Skills that share tags, products or a category with Summarize Call: Speech To Text (tadaspetra/loop, 296 stars), Video Production (speechlab0210/video-production-skill, 105 stars), Local AI Use (amd/skills, 398 stars) and Speech Engine (elevenlabs/skills, 481 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Summarize Call?

reysu (a GitHub user) maintains it in reysu/ai-life-skills, which has 270 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on August 24, 2026.

Source: reysu/ai-life-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.