npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

oh-my-til

v1.6.1

Published

Oh My TIL — Claude Code plugin for TIL learning workflow, with Obsidian integration

Readme

Oh My TIL

License: MIT Obsidian Version

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.

Oh My TIL — Terminal + TIL note

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, /dashboard commands 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)

  1. Install the Claude Code plugin (Option A above) — skills and MCP server are auto-registered.

  2. Start Claude Code and use /til, /research, /backlog skills right away:

    cd ~/my-til
    claude
  3. (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. Skills follow it automatically (resolved CLI-first: --til-pathTIL_PATH env → oh-my-til.json → Obsidian setting → default) | | 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 | | til_get_path | Return the vault's configured TIL folder path (fallback for environments without the SessionStart hook) |

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 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

  • [x] Embedded Claude Code terminal
  • [x] Built-in MCP server
  • [x] Learning dashboard (basic stats)
  • [x] Standalone CLI (npx oh-my-til) — use without Obsidian
  • [x] 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) — auto-render TIL lists without Dataview
  • [ ] Multi-terminal tabs — run multiple Claude Code sessions
  • [ ] Note linking — auto-insert backlinks to related notes

Acknowledgments

License

MIT