mdy-daf-companion
officialClaude Code plugin that opens the latest MDY Daf Yomi shiur in a floating Electron companion.
MDY Daf Companion
MDY Daf Companion is a Claude Code plugin for Daf Yomi learners. It finds the current Rabbi Eli Stefansky / Mercaz Daf Yomi shiur, opens it in a movable floating Electron companion, plays while Claude Code is working, pauses when Claude waits for you, saves progress, and keeps local watch/coding stats.
This is an independent community project. It is not affiliated with or endorsed by Mercaz Daf Yomi, Rabbi Eli Stefansky, YouTube, Google, Anthropic, or Claude unless a future partnership is explicitly announced.
Install
Install through the Claude Code marketplace:
claude plugin marketplace add HershelT/mdy-daf-companion
claude plugin install mdy-daf-companion@mdy-daf-companion
You can run the same commands from inside Claude Code:
/plugin marketplace add HershelT/mdy-daf-companion
/plugin install mdy-daf-companion@mdy-daf-companion
Then start Claude Code normally and submit a prompt. The companion should open automatically when the local hook receives UserPromptSubmit.
Download and source locations:
| Surface | Link |
|---|---|
| Claude marketplace repository | github.com/HershelT/mdy-daf-companion |
| npm package | npmjs.com/package/mdy-daf-companion |
| Issues and support | GitHub Issues |
The npm package is the plugin distribution artifact used by the marketplace. Most users should install through Claude Code rather than running npm install directly.
Requirements
- Claude Code with plugin support.
- Node.js 24 or newer available to the local Claude environment.
- Windows, macOS, or Linux local desktop session for the Electron companion.
- Internet access for Hebcal, MDY/YouTube metadata, and YouTube playback.
Remote/cloud Claude sessions are not supported for local playback. SSH and dev-container sessions are partial because the daemon and Electron companion run wherever Claude Code is running.
First Run
No setup command is required.
- Claude Code loads the plugin hooks.
- The first prompt starts or contacts the local daemon.
- The daemon gets today’s Daf Yomi from Hebcal using the configured timezone.
- The resolver searches MDY/YouTube sources and rejects adjacent daf, chazarah, event, and unrelated videos when they do not match your preference.
- The Electron companion opens with the YouTube shiur and resumes from saved progress if you have watched it before.
- When Claude stops, idles, asks for permission, or ends the session, playback pauses and progress is saved.
If the companion does not open, run:
/mdy-daf-companion:status
For a deeper local health check:
mdy-daf doctor
Daily Use
Common slash commands:
| Command | What it does |
|---|---|
/mdy-daf-companion:status | Show daemon state, current daf, video, and progress. |
/mdy-daf-companion:play | Open or refocus the companion and start playback. |
/mdy-daf-companion:pause | Pause and save progress. |
/mdy-daf-companion:dashboard | Open the in-companion Stats view. |
/mdy-daf-companion:stats | Print watched minutes, coding minutes, ratio, and daf totals. |
/mdy-daf-companion:setup | Optional preferences for language, format, timezone, guard, and auto-open. |
The companion is video-first: the YouTube player fills the window, controls appear on hover/focus, the window can be dragged, and the Stats view opens inside the same Electron app. There is no regular browser player and no browser fallback.
Preferences
Defaults are intentionally usable:
- Language: English
- Format: full Daf
- Timezone: local machine timezone
- Auto-open on prompt submit: enabled
- Shabbos/Yom Tov guard: enabled
- YouTube Data API key: optional
Change preferences with:
/mdy-daf-companion:setup
Or from a terminal where the plugin command is available:
mdy-daf setup --language english --format full --timezone America/Chicago --guard true --auto-open true
Privacy
MDY Daf Companion is local-first.
- The daemon binds to
127.0.0.1. - Local API requests use a random bearer token.
- Settings, progress, resolved metadata, and aggregate stats are stored locally.
- Prompt text, source code, file contents, transcript content, raw tool input, and raw project paths are not stored by default.
- No telemetry, cloud sync, leaderboard, or analytics service is implemented.
- YouTube videos are embedded through YouTube and are not downloaded, mirrored, transcoded, or redistributed.
Read the full policies:
Compatibility
| Claude surface | Status | Notes |
|---|---|---|
| Claude Code CLI local | Supported | Primary install and test path. |
| Claude Desktop local | Supported target | Requires Node.js to be visible to Desktop’s local environment. |
| VS Code extension local | Supported target | Uses the same Claude Code plugin system; install from /plugins. |
| SSH/dev container | Partial | Plugin and Electron run on the remote host unless you add display/forwarding support. |
| Claude web/cloud | Unsupported | No local daemon or Electron surface. |
See Install And Compatibility for validation details.
Update Or Remove
Update the marketplace and plugin:
claude plugin marketplace update mdy-daf-companion
claude plugin update mdy-daf-companion@mdy-daf-companion
Remove the plugin:
claude plugin uninstall mdy-daf-companion@mdy-daf-companion
Use Claude Code’s plugin UI if you installed from Claude Desktop or the VS Code extension.
Development
Clone the repository:
git clone https://github.com/HershelT/mdy-daf-companion.git
cd mdy-daf-companion/mdy-daf-companion
npm install
npm run release:prepare
Run locally without marketplace installation:
cd ..
claude --plugin-dir ./mdy-daf-companion
Useful checks:
npm run check
npm run verify:current-daf
npm run verify:npm-package
claude plugin validate .
The release workflow publishes through npm Trusted Publishing from GitHub Actions. Generated Electron out/ bundles are for optional native smoke testing and are intentionally excluded from the public npm package.
Documentation
- Package README
- Install And Compatibility
- Technical Architecture
- Testing Strategy
- Release And Updates
- Release Validation Log
License
MIT. See LICENSE.