Oh My Til
Obsidian plugin with embedded Claude Code terminal, MCP server, and TIL learning dashboard
Ask AI about Oh My Til
Powered by Claude Β· Grounded in docs
I know everything about Oh My Til. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Oh My TIL
English | νκ΅μ΄
A Claude Code plugin for AI-powered TIL (Today I Learned) learning workflow. Works as a standalone CLI (npx oh-my-til) or as an Obsidian plugin with embedded Claude Code terminal.

Features
- Embedded Terminal β Claude Code terminal in Obsidian sidebar (xterm.js + node-pty)
- Built-in MCP Server β Claude Code can directly access your vault via HTTP
- Learning Dashboard β TIL statistics and category breakdown at a glance
- Auto-installed Skills β
/til,/research,/backlog,/save,/til-review,/til-lint,/dashboardcommands ready out of the box - Spaced Repetition (SRS) β SM-2 algorithm-based review scheduling for TIL notes
- Markdown Link Detection β
[text](path)links in terminal are clickable and open notes (CJK-aware) - Backlog-to-TIL Trigger β Click an empty backlog link to start a TIL session
- File Watcher β Newly created TIL files open automatically in the editor
How It Works
Command Palette β Open Terminal β Claude Code starts
β Run /til, /backlog, /research, /save, /til-review, /til-lint, /dashboard skills
β Claude researches β interactive learning β saves TIL markdown
β New file detected β opens in editor
Installation
Option A: Claude Code Plugin (Recommended)
Install directly as a Claude Code plugin β skills, MCP server, and hooks are auto-registered.
Prerequisites: Node.js 18+ / Claude Code v1.0.33+
# Add marketplace (project scope recommended β only active in this TIL vault)
claude plugin marketplace add https://github.com/SongYunSeop/oh-my-til.git --scope project
# Install plugin
claude plugin install oh-my-til@oh-my-til --scope project
Skills are namespaced: /oh-my-til:til, /oh-my-til:research, /oh-my-til:backlog, etc.
Option B: Standalone CLI (without Obsidian)
Prerequisites: Node.js 18+ / Claude Code CLI (claude)
-
Install the Claude Code plugin (Option A above) β skills and MCP server are auto-registered.
-
Start Claude Code and use
/til,/research,/backlogskills right away:cd ~/my-til claude -
(Optional) Register MCP server β lets Claude Code query your TIL files (stdio mode, works with Claude Desktop):
claude mcp add oh-my-til -- npx oh-my-til mcp ~/my-til
Option C: Obsidian Plugin
Prerequisites: Obsidian v1.5.0+ / Node.js 18+ / Claude Code CLI (claude)
Using npx (Recommended)
Install the Obsidian plugin directly:
npx oh-my-til install-obsidian /path/to/your/vault
Electron version is auto-detected on macOS. To override:
ELECTRON_VERSION=37.10.2 npx oh-my-til install-obsidian /path/to/your/vault
To find your Electron version, open Obsidian's Developer Tools (Ctrl+Shift+I) and run
process.versions.electron.
Manual Installation (from source)
git clone https://github.com/SongYunSeop/oh-my-til.git
cd oh-my-til
npm install
ELECTRON_VERSION=<your-electron-version> npm run deploy -- /path/to/your/vault
After installation, restart Obsidian and enable Oh My TIL in Settings > Community plugins.
MCP Server Setup (Optional)
The plugin includes a built-in MCP server so Claude Code can access your vault directly:
claude mcp add --transport http oh-my-til http://localhost:22360/mcp
Configuration
| Setting | Default | Description |
|---|---|---|
| Shell Path | System default | Shell to use in the terminal |
| Auto Launch Claude | true | Run claude when terminal opens |
| Resume Last Session | false | Resume previous Claude session (--continue) |
| Font Size | 13 | Terminal font size (px) |
| Font Family | Menlo | Terminal font (Menlo, SF Mono, Fira Code, JetBrains Mono, etc.) |
| Line Height | 1.0 | Terminal line spacing (1.0 = default, up to 2.0) |
| TIL Path | til | TIL folder path |
| Auto Open New TIL | true | Open new TIL files in editor automatically |
| Open Dashboard on Startup | false | Open learning dashboard when Obsidian starts |
| Claude Args | (empty) | Additional arguments passed to claude command |
MCP Tools
When the MCP server is connected, Claude Code can use these tools:
| Tool | Description |
|---|---|
til_list | List TIL files grouped by category (supports search filter) |
til_save_note | Save a TIL note with validated frontmatter and path conventions (auto backlog check) |
til_backlog_status | Backlog progress summary with checkbox counts |
til_backlog_check | Mark a backlog item as done by slug (standalone use) |
til_get_context | Get existing knowledge context for a topic (files, links, unresolved mentions) |
til_recent_context | Recent learning activity grouped by date |
til_dashboard | Learning statistics summary |
til_review_list | Due review cards list + stats (SRS, supports include_content) |
til_review_update | Record review result or remove from review |
Claude Skills
The plugin auto-installs these skills to .claude/skills/:
| Skill | Command | Description |
|---|---|---|
| til | /til <topic> [category] | Research a topic β interactive learning β save TIL |
| research | /research <topic> [category] | Research a topic and create a learning backlog |
| backlog | /backlog [category] | View learning backlog and progress |
| save | (auto-invoked by /til) | Save TIL markdown with Daily note, MOC, and backlog updates |
| til-review | /til-review [category] | SRS-based spaced repetition review session (SM-2 algorithm) |
| til-lint | /til-lint [category] | TIL wiki health-check β missing frontmatter, broken links, orphan TILs, unprocessed raw sources |
| dashboard | /dashboard | Learning dashboard β stats, activity heatmap, categories, backlog progress |
| omt-setup | /omt-setup [subcommand] | Unified setup β init, deploy, and manage oh-my-til |
| setup-obsidian | /setup-obsidian | Install the Obsidian desktop plugin in the current vault |
Development
npm run dev # Watch mode (esbuild)
npm test # Run tests (vitest)
npm run rebuild-pty # Rebuild node-pty for Obsidian's Electron
npm run deploy -- /path # Deploy to vault
npm run deploy -- --refresh-skills /path # Deploy with skill/rule refresh
Project Structure
src/
βββ core/ # Platform-independent pure logic
β βββ backlog.ts # Backlog parsing/formatting (pure functions)
β βββ context.ts # Learning context helpers (pure functions)
β βββ stats.ts # TIL statistics (pure functions)
β βββ srs.ts # Spaced repetition (SM-2 algorithm, review cards/stats)
β βββ migrate-links.ts # Wikilink [[]] β [](path) conversion (internal utility)
β βββ keyboard.ts # Shift+Enter β \n (multiline support)
β βββ env.ts # macOS PATH resolution (Homebrew)
β βββ skills.ts # Version comparison / placeholder substitution
β βββ cli.ts # CLI argument parsing (pure functions)
β βββ config.ts # Config file parsing/loading (pure functions)
β βββ markdown.ts # Markdown β HTML conversion (no external deps)
β βββ profile.ts # Static site page generation (profile, TIL pages, category index)
β βββ index.ts # Barrel export
βββ ports/ # Adapter interfaces
β βββ storage.ts # FileStorage interface
β βββ metadata.ts # MetadataProvider interface
βββ adapters/ # Port implementations
β βββ fs-adapter.ts # node:fs based (standalone)
β βββ obsidian-adapter.ts # Obsidian App based
βββ mcp/ # MCP server (port-dependent, Obsidian-free)
β βββ context.ts # Learning context tools (topic matching, category extraction)
β βββ tools.ts # MCP tool definitions (FileStorage + MetadataProvider)
βββ cli/ # Standalone CLI entry point
β βββ index.ts # npx oh-my-til mcp / install-obsidian / deploy
β βββ obsidian-install.ts # Auto-install Obsidian plugin (Electron detection, node-pty rebuild)
βββ obsidian/ # Obsidian platform adapter
βββ main.ts # Plugin entry point
βββ settings.ts # Settings tab & interface
βββ watcher.ts # File watcher β open in editor
βββ terminal/
β βββ TerminalView.ts # Sidebar terminal (ItemView + xterm.js)
β βββ MarkdownLinkProvider.ts # 3 ILinkProviders: Markdown, Filepath, OSC 8
β βββ pty.ts # PTY process manager (node-pty)
βββ dashboard/
βββ DashboardView.ts # Learning dashboard (ItemView)
Tech Stack
| Runtime | TypeScript, Obsidian Plugin API |
| Terminal | xterm.js, node-pty |
| MCP | @modelcontextprotocol/sdk |
| Build | esbuild |
| Test | vitest |
Roadmap
- Embedded Claude Code terminal
- Built-in MCP server
- Learning dashboard (basic stats)
- Standalone CLI (
npx oh-my-til) β use without Obsidian - Spaced Repetition (SRS) β SM-2 based review scheduling
- Backlog progress bars in dashboard
- Configurable TIL folder path
- Rich dashboard β recent TILs, streaks, weekly summary
- Dynamic code blocks (
til-moc,til-daily) β auto-render TIL lists without Dataview - Multi-terminal tabs β run multiple Claude Code sessions
- Note linking β auto-insert backlinks to related notes
Acknowledgments
- claude-code-terminal β Original xterm.js + node-pty Obsidian integration pattern
- Obsidian Developer Docs
- MCP TypeScript SDK
