cowatch
Skill0 starsChanged 4 months agoMITView on GitHub
Use when Gera wants to watch/hear a live event WITH Servy in near-real-time — a keynote, conference, launch, or any public live stream — and react together as it happens, or catch up on demand. Also when he drops a YouTube live URL and says "watch this with me", "co-watch this", "attend this event", "tell me what they announce", or asks mid-event "what did they just say about X". Triggers — "co-watch", "watch this live", "watch with me", "what's happening in the event", "what did they just announce", "/cowatch".
In this repository50 other files it gives its agents.
- aegisSkill
- agent-builderSkill
- agents-team-builderSkill
- ai-applySkill
- auditSkill
- bottleneckSkill
- buildSkill
- capability-radarSkill
- clay-leadsSkill
- deepforkSkill
- design-blueprintSkill
- evalSkill
- fable-modeSkill
- financesSkill
- forgeSkill
- framework-builderSkill
- grill-meSkill
- hooks-builderSkill
- level-upSkill
- loops-builderSkill
- meeting-hudSkill
- multi-brainSkill
- nate-watchSkill
- onboardSkill
- plugin-builderSkill
- ponytailSkill
- presentSkill
- prompt-evalSkill
- radar-harvestSkill
- rag-forgeSkill
- rlsgateSkill
- rnd-loopSkill
- rndSkill
- roastSkill
- routines-builderSkill
- servy-routineSkill
- session-handoffSkill
- skill-builderSkill
- skill-harvestSkill
- sparkSkill
- storm-researchSkill
- studySkill
- talkSkill
- taste-skillSkill
- verify-loopSkill
- verify-specificsSkill
- wheel-of-lifeSkill
- workanaSkill
- workaround-builderSkill
- workflow-builderSkill
The file
We split this skill into the rules it gives an agent
12 rules. About 0 are common, 4 are distinctive, and 8 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 23
Never fabricate: Only react to text that is actually in the transcript file.
- Distinctive: line 27
External publishing stays gated: If Gera wants a LinkedIn post from the event, draft it and show him first (voice rules).
- Very specific: line 32
Default --mode cowatch, --model base.en, --interval 60, ingest OFF.
- Very specific: line 37
If live_status is not is_live/post_live, tell Gera it is not live and stop.
- Very specific: line 42
Wait until the first record appears in knowledge/live/<sid>.jsonl (capturer healthy).
- Very specific: line 43
If the state file flips to status: error or no record appears, fail fast and report.
- Distinctive: line 54
Max-quiet: if 3 ticks pass with no reaction, drop one light check-in so you never vanish.
- Very specific: line 55
Read knowledge/live/<sid>.state.json.
- Very specific: line 57
Read the JSONL/state via small python3 -c "import live_capture as lc.
- Distinctive: line 61
No loop. Tell Gera capturing is live ("ask me anything — 'what did they just say about X', or 'summarize the last 10 min'").
- Very specific: line 66
When the capturer reports status: ended:
- Very specific: line 67
If
--ingest: run the wiki-ingest tail (the nate-watch pattern) — write a digest page in references/, update references/index.md, append …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
/cowatch — live event co-watching
Servy watches a live event WITH Gera in near-real-time. A background capturer
(scripts/live_capture.py) turns the stream's audio into a rolling JSONL
transcript via local whisper; this skill reads new transcript past a cursor and
either reacts when something notable lands (co-watch) or answers on demand
(catch-up). Near-real-time means ~1.5-2.5 min behind live — chunk length plus
whisper time. Full design: docs/superpowers/specs/2026-06-02-cowatch-live-event-design.md.
Scope (v1)
- Source:
webonly (public YouTube/stream URLs via yt-dlp).systemaudio andmicare designed but NOT built yet — if Gera asks for those, say so and point to the spec. - Engine: whisper.cpp (
whisper-cli), models at~/.local/whisper.cpp/models/(base.endefault,small.enfor more accuracy / slower).
Hard rules
- Never fabricate. Only react to text that is actually in the transcript file. Auto-captions garble names/numbers — flag uncertainty, do not "correct" to what you assume.
- SoftServe boundary: v1 is
web/public only, so it is unrestricted. (Whensystem/micland, confirm it is not a client/Internal+ meeting before capturing — see spec §3.) - External publishing stays gated. If Gera wants a LinkedIn post from the event, draft it and show him first (voice rules); never auto-publish.
Step 0 — args
Parse <url> [--mode cowatch|catchup] [--model base.en] [--ingest] [--interval 60].
Default --mode cowatch, --model base.en, --interval 60, ingest OFF.
Step 1 — verify the stream + launch the capturer
- Confirm it is a real live stream and a legit channel:
yt-dlp --no-warnings --print "%(live_status)s|%(channel)s|%(channel_is_verified)s|%(title)s" <url>- If
live_statusis notis_live/post_live, tell Gera it is not live and stop. - Surface the channel + verified flag so Gera knows the source is trustworthy.
- If
- Derive a session id:
<today>-<slug-of-title>(uselive_capture.session_id/slugify). - Launch the capturer in the background (Bash
run_in_background: true):python3 scripts/live_capture.py --source web --url "<url>" --session "<sid>" --model <model> - Wait until the first record appears in
knowledge/live/<sid>.jsonl(capturer healthy). If the state file flips tostatus: erroror no record appears, fail fast and report.
Step 2a — co-watch mode (it talks)
Drive an interval loop (use the /loop skill at --interval seconds, or self-pace). Each tick:
- Read cursor:
read_cursor(knowledge/live/<sid>.cursor). recs, new_cursor = read_new_records(knowledge/live/<sid>.jsonl, cursor).- Judge notability through Gera's lens — react only if a record contains: an announcement, a product/feature/version name, a number/benchmark, a demo, or anything touching his stack (LangChain/LangGraph, Claude Code, Cursor, agents, Azure AI) or Jumpstart/R&D. If notable, post a short reaction with a why-it-matters-to-Gera line. If not, stay silent.
write_cursor(...)to the new cursor.- Max-quiet: if 3 ticks pass with no reaction, drop one light check-in so you never vanish.
- Read
knowledge/live/<sid>.state.json; whenstatus == ended, leave the loop → Step 3.
Read the JSONL/state via small python3 -c "import live_capture as lc; ..." calls (cheap), not by
loading the whole file into context.
Step 2b — catch-up mode (it waits)
No loop. Tell Gera capturing is live ("ask me anything — 'what did they just say about X', or
'summarize the last 10 min'"). On each question, read new records / the buffer and answer from the
transcript only. Notice status == ended opportunistically and offer Step 3.
Step 3 — end of event
When the capturer reports status: ended:
- If
--ingest: run the wiki-ingest tail (the nate-watch pattern) — write a digest page inreferences/, updatereferences/index.md, appendreferences/log.md, register the raw transcript inknowledge/README.md, run the build-a-capability gate. Then offer a LinkedIn draft. - If not: save the transcript, tell Gera where it lives (
knowledge/live/<sid>.jsonl), and offer ingestion as a follow-up. The transcript is gitignored (knowledge/*), so it stays local.
Files
- Engine:
scripts/live_capture.py(tested:python3 scripts/tests/test_live_capture.py). - Output:
knowledge/live/<sid>.jsonl(transcript),.state.json(capturer state),.cursor(skill read-cursor),.segments/(temp WAVs, auto-cleaned). - To stop early: terminate the background capturer process; it flips
status: endedon SIGTERM.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

