Speech To Text
tadaspetra/loop
Transcribe audio to text using ElevenLabs Scribe v2. An agent skill from tadaspetra/loop.
Transcribe a call recording with speaker diarization, summarize it, and create Obsidian vault notes (call note, transcript, person notes for participants).
$ npx skills add reysu/ai-life-skills --skill summarize-call -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install reysu/ai-life-skills summarize-call --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "summarize-call" agent skill from https://github.com/reysu/ai-life-skills/tree/main/summarize-call into .claude/skills/summarize-call/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "summarize-call", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/reysu/ai-life-skills/tree/main/summarize-callType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add reysu/ai-life-skills --skill summarize-call -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install reysu/ai-life-skills summarize-call --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/reysu/ai-life-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/summarize-call .agents/skills/summarize-call && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "summarize-call" agent skill from https://github.com/reysu/ai-life-skills/tree/main/summarize-call into .agents/skills/summarize-call/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "summarize-call", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add reysu/ai-life-skills --skill summarize-call -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install reysu/ai-life-skills summarize-call --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/reysu/ai-life-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/summarize-call .cursor/skills/summarize-call && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "summarize-call" agent skill from https://github.com/reysu/ai-life-skills/tree/main/summarize-call into .cursor/skills/summarize-call/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "summarize-call", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/reysu/ai-life-skills.git --path summarize-call--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add reysu/ai-life-skills --skill summarize-call -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install reysu/ai-life-skills summarize-call --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/reysu/ai-life-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/summarize-call .gemini/skills/summarize-call && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "summarize-call" agent skill from https://github.com/reysu/ai-life-skills/tree/main/summarize-call into .gemini/skills/summarize-call/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "summarize-call", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install reysu/ai-life-skills summarize-callInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add reysu/ai-life-skills --skill summarize-call -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/reysu/ai-life-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/summarize-call .github/skills/summarize-call && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "summarize-call" agent skill from https://github.com/reysu/ai-life-skills/tree/main/summarize-call into .github/skills/summarize-call/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "summarize-call", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add reysu/ai-life-skills --skill summarize-call -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install reysu/ai-life-skills summarize-call --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/reysu/ai-life-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/summarize-call .opencode/skills/summarize-call && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "summarize-call" agent skill from https://github.com/reysu/ai-life-skills/tree/main/summarize-call into .opencode/skills/summarize-call/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "summarize-call", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
summarize-callTranscribe 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). 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.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cd3e454. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
uvbrewaptdnfpipffmpegFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.elevenlabs.ioAlso links to:
huggingface.coffmpeg.orgelevenlabs.ioFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
ELEVENLABS_API_KEYHF_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
- Linux (Debian/Ubuntu): `sudo apt install ffmpeg`- 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.
The full file from reysu/ai-life-skills at commit cd3e454, republished under its MIT licence (© reysu). 1,479 words, ~3,816 tokens.
.claude/skills/summarize-call/SKILL.md (or your agent's skills folder).Takes a call recording (video or audio), transcribes it with speaker labels, summarizes it, and writes structured notes into your Obsidian vault.
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.
| Folder | Purpose |
|---|---|
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:
| Tool | Purpose | Install |
|---|---|---|
ffmpeg | Extract audio from video files | macOS: brew install ffmpeg · Linux: apt install ffmpeg or dnf install ffmpeg · Windows: ffmpeg.org/download.html |
mlx_whisper (local path) | Local transcription | pip install mlx-whisper |
pyannote.audio (local path) | Local speaker diarization | see Step 1 walkthrough |
Alternative to local: set ELEVENLABS_API_KEY to use ElevenLabs Scribe for transcription + diarization in one call (paid, faster, no setup).
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 = _TemplatesAll paths below are relative to $VAULT_ROOT.
When the user provides a call recording (MP4, MOV, WAV, MP3, M4A, etc.) and wants it transcribed, summarized, and documented.
Before doing any work, verify the environment is ready. Skip any check that already passes — only prompt the user when something is actually missing.
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).
for d in "$MEETINGS_DIR" "$PEOPLE_DIR" "$DAILY_DIR" "$TEMPLATES_DIR"; do
[ -d "$VAULT_ROOT/$d" ] || echo "MISSING: $d"
doneFor each missing folder, ask the user: "Create <folder> in your vault? [y/N]" — if yes, mkdir -p "$VAULT_ROOT/<folder>".
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:
brew install ffmpegsudo apt install ffmpegsudo dnf install ffmpegIf $VAULT_ROOT/$TEMPLATES_DIR/new person template.md does not exist, ask the user which version to install:
Install person template — which version?
- Minimal (default, works in any vault)
- 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.
Before transcribing, establish which depth the user wants:
minimal, fast, quick, --minimal, -m → minimal modedetailed, deep, full, --detailed, -d → detailed modeDepth?
- 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.
- 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.
Ask the user:
Transcription method?
- Local (mlx_whisper + pyannote — free, private, slower, requires setup)
- ElevenLabs Scribe (paid, faster, handles transcription + diarization in one call)
If the user picks local, verify each component and walk them through any missing piece:
1. mlx_whisper
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):
PYANNOTE_ENV="${XDG_DATA_HOME:-$HOME/.local/share}/summarize-call/pyannote-env"
[ -d "$PYANNOTE_ENV" ] || echo "MISSING: pyannote venv"If missing, walk through setup:
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 torchaudio3. HuggingFace token
Check for HF_TOKEN:
[ -n "$HF_TOKEN" ] || echo "MISSING: HF_TOKEN"If missing, tell the user:
You need a HuggingFace token with access to the pyannote gated repos.
- Create a token at https://huggingface.co/settings/tokens (choose "Read" scope)
- Accept the terms for all three repos while logged in:
- Export for this session:
export HF_TOKEN="hf_..."- To persist, add that line to your
~/.zshrc(or~/.bashrc)
Wait for the user to confirm before continuing.
If the user picks ElevenLabs, check for the API key:
[ -n "$ELEVENLABS_API_KEY" ] || echo "MISSING: ELEVENLABS_API_KEY"If missing, tell the user:
You need an ElevenLabs API key.
- Grab one at https://elevenlabs.io/app/settings/api-keys
- Export for this session:
export ELEVENLABS_API_KEY="..."- 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]
ffmpeg -v quiet -i "<input>" -vn -acodec pcm_s16le -ar 16000 -ac 1 /tmp/<name>.wav -yTranscribe:
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--language en for English calls--language ja (or use a kotoba-whisper model for better accuracy)--condition-on-previous-text False prevents whisper hallucination loopsDiarize with pyannote:
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, speakerNote: use output.speaker_diarization.itertracks(yield_label=True) (not output.itertracks).
Merge transcript + diarization:
[H:MM:SS] **Speaker**: textimport 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.
$MEETINGS_DIR/<MM-DD-YY Day Participant1 x Participant2> Transcript.md---
date: YYYY-MM-DD
duration: <seconds>
meeting: "[[<Call Note Title>]]"
unread: true
---$MEETINGS_DIR/<MM-DD-YY Day Participant1 x Participant2>.md---
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
---# Title heading — filename is the title> [!tldr]
> [2-3 sentence overview]
## Key Topics
- ...
## Decisions
- ...
## Action Items
- [ ] ...
## Notable Quotes
> [!quote] [[Participant 1]]
> "..."
## People Mentioned
- [[Person Name]] — brief contextsummary frontmatter field is mandatory — never omit it$PEOPLE_DIR/<Full Name>.md using the template at $VAULT_ROOT/$TEMPLATES_DIR/new person template.md$VAULT_ROOT/$DAILY_DIR/YYYY/MM/MM-DD-YY ddd.md (create YYYY/MM/ if missing)# Title heading — filename is the titleunread: true in frontmatter## calls/meetings section:- [[<Call Note Title>]] — brief descriptionFor every person, company, product, or concept wikilinked in the call note (that isn't already a note), create a reference or person note:
07 References/ (or $REFERENCES_DIR if you have the /summarize skill installed) with a 2-4 sentence explanationAfter 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:
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"
doneRe-create any missed notes. The call is not done until zero dangling links remain.
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.
# Title headings — Obsidian shows filename as titlesummary frontmatter is mandatory on call notesunread: true on every note created--condition-on-previous-text False on mlx_whisper to prevent hallucination loops## 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
Just SKILL.md in summarize-call of reysu/ai-life-skills.
Open the folder on GitHubat commit cd3e454
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Summarize Call this skillreysu/ai-life-skills | 270 | — | ~3.8k | Automated safety check: Notes | MIT | |
| Speech To Texttadaspetra/loop | 296 | 3 repos | ~2k | Automated safety check: Pass | MIT | |
| Video Productionspeechlab0210/video-production-skill | 105 | — | ~4.1k | Automated safety check: Notes | MIT | |
| Local AI Useamd/skills | 398 | — | ~5k | Automated safety check: Notes | MIT | |
| Speech Engineelevenlabs/skills | 481 | — | ~2.5k | Automated safety check: Warn | MIT | |
| Watch Videocoreyhaines31/makerskills | 848 | — | ~3.7k | Automated safety check: Pass | MIT |
tadaspetra/loop
Transcribe audio to text using ElevenLabs Scribe v2. An agent skill from tadaspetra/loop.
speechlab0210/video-production-skill
AI educational video production pipeline. An agent skill from speechlab0210/video-production-skill.
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.
elevenlabs/skills
Add real-time voice conversations to a custom agent runtime with ElevenLabs Speech Engine.
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.
daxaur/openpaw
Convert speech to text using sag (ElevenLabs STT) and synthesize speech using say (macOS built-in TTS).
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…
Works with
Categories
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).
Summarize Call fits situations like: tasks that involve Transcription; tasks that involve Text to speech and voice; tasks that involve Speech recognition and synthesis.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.