From langtalk
Hybrid LLM-engineering research — synthesizes a podcast-grounded answer from the Langtalks corpus with current web search results. Triggers on /langtalk, "langtalks", "what does langtalks say about", and LLM-system architecture/trade-off questions where named-practitioner provenance matters.
How this skill is triggered — by the user, by Claude, or both
Slash command
/langtalk:consultThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Combines two sources for every LLM-engineering question:
Combines two sources for every LLM-engineering question:
@langtalks, id UCWPBxQSxychk2M49Fuoq-5A). Provides Israeli-practitioner production stories, named guests, Hebrew quotes, lessons-learned.The skill returns a single synthesized answer in which every claim is tagged inline with its origin ([LT*] for Langtalks, [W*] for web), plus a unified sources footer.
state.json → notebook.nb_id.config.json. No ad-hoc discovery.bootstrap seeds the notebook from the channel's upload history (cap 200).update adds new uploads since last_refresh. Old sources never removed.now - last_refresh > freshness_days (default 7).| Command | What it does |
|---|---|
/langtalk "<question>" | (default) Hybrid mode — fires the langtalks query AND a parallel web search, then synthesizes. |
/langtalk skill-only "<question>" | Skip the web layer; pure langtalks notebook output. |
/langtalk web-only "<question>" | Skip the langtalks layer; pure web search. |
/langtalk update | Pull new Langtalks uploads into the notebook. |
/langtalk status | Print notebook id, source count, freshness. |
/langtalk bootstrap | First-run only: create the notebook and seed all videos. |
When $ARGUMENTS is a free-form question (not a subcommand), Claude MUST execute the hybrid flow:
In a single message, fire both tool calls in parallel:
Tool 1 — Bash to invoke the langtalks layer:
# Plugin install: ${CLAUDE_PLUGIN_ROOT} is set by Claude Code.
# Standalone install: fall back to ~/.claude/skills/langtalk.
SKILL_DIR="${CLAUDE_PLUGIN_ROOT:+$CLAUDE_PLUGIN_ROOT/skills/consult}"
SKILL_DIR="${SKILL_DIR:-$HOME/.claude/skills/langtalk}"
cd "$SKILL_DIR"
ENV_FILE="${CLAUDE_PLUGIN_DATA:-$SKILL_DIR}/.env"
[[ -f "$ENV_FILE" ]] && { set -a; source "$ENV_FILE"; set +a; }
bash ./router.sh "$ARGUMENTS"
This returns: an answer body with [n] citations + a compact _Sources: ..._ italic footer with 1-2 episode URLs.
Tool 2 — WebSearch for the same question:
Search the web for 4-7 high-quality sources (papers, vendor docs, technical blogs) published in the last 18 months. Capture title, URL, and published_at where available.
Combine both into ONE flowing answer of 400-800 words. Every substantive claim must be tagged inline with its origin:
[LT1], [LT2], ... — claims from Langtalks (renumber from langtalks's [n] to the unified scheme)[W1], [W2], ... — claims from web sourcesSynthesis rules:
... cross-encoders generally outperform bi-encoders for the final reranking pass [LT1, W2].(langtalks layer unavailable: <reason>) in the footer.After the answer, print:
--- WHERE THIS CAME FROM ---
LangTalks (<n> episodes cited):
[LT1] "<episode title>" — <YouTube URL>
[LT2] ...
Web (<n> sources):
[W1] <title> — <publisher/year> — <URL>
[W2] ...
LangTalks notebook last refreshed: <iso>
Keep the footer compact. List only sources that were actually tagged in the answer (not every source consulted).
End with a single italic sentence summarizing the split, e.g.:
Web supplied the technical primitives, model names, and 2025-2026 benchmarks; LangTalks supplied the production trade-offs and Israeli-practitioner workflows.
This is the user's quick orientation: at a glance, they see which source pulled the load.
/langtalk skill-only "<q>" — run only router.sh "<q>", pass the langtalks output through verbatim. No WebSearch./langtalk web-only "<q>" — run only WebSearch. No langtalks. Useful when the user knows the topic isn't podcast-relevant./langtalk update / status / bootstrap — passthrough to router.sh <subcmd>. No web layer involved.config.json — channel id, freshness policy, caps.state.json — { notebook: { nb_id, video_ids, videos_meta, last_refresh, ... } }..env — YOUTUBE_API_KEY=… (gitignored; never echo).scripts/common.sh — shared helpers (env, nlm auth, YT API, atomic state).scripts/bootstrap.sh — first-run seeding (now also caches videos_meta: title + url + published_at per video).scripts/update.sh — incremental refresh.scripts/query.sh — langtalks-only answer with [n] citations + compact sources footer.scripts/list.sh — status output.router.sh — entry point. Dispatches subcommands; for free-form questions returns langtalks-only output (the bash layer cannot synthesize with web — the LLM does that per Step 2 above).The bash skill provides ONE half (langtalks) as a primitive. Web search is a Claude Code tool (WebSearch). The hybrid synthesis is performed by Claude Code reading both tool outputs and weaving them. Do not try to call WebSearch from inside query.sh — it's an LLM tool, not a CLI.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub yehuda-yu/langtalk-claude-skill --plugin langtalk