Personal MCP skill registry with local server and Cloudflare Worker proxy
Overview
skillar Your skills. Your agents. One local workspace. English · 한국어 Connect the SKILL.md folders already on your machine to your coding agents. skillar searches them over MCP, records what each session searched and read, and makes that history visible in a local dashboard. Read the migration guide . Both packages own the gisool command; a direct global install collides. Follow the stop, backup, and package-handoff steps rather than using --force. init installs a LaunchAgent on macOS or a systemd user unit on Linux. The daemon listens on 127.0.0.1:8799. Prefer a foreground process? Run skillar init --no-service, then skillar serve. Already using skillar? skillar doctor checks your installation. For a source checkout, see development setup. Capture can also observe skills used natively when runtime hooks or telemetry report them. Skill tracing explains attribution, evidence limits, and the . Core MCP serving and session collection continue if herdr is unavailable.
README
skillar Your skills. Your agents. One local workspace. English · 한국어
Connect the SKILL.md folders already on your machine to your coding agents. skillar searches them over MCP, records what each session searched and read, and makes that history visible in a local dashboard.
Index in place · Read on demand · Keep history local
Quick start · Supported runtimes · Privacy · CLI & configuration
Quick start
macOS or Linux · Node.js 24.15+
Upgrading from gisool? Read the migration guide before installing. Both packages own the
gisoolcommand; a direct global install collides. Follow the stop, backup, and package-handoff steps rather than using--force.
For a fresh installation:
npm install -g skillar
skillar init --dry-run # preview config and service changes; write nothing
skillar init # connect detected runtimes and install the background service
skillar open # open the local dashboard
init installs a LaunchAgent on macOS or a systemd user unit on Linux. The daemon listens on 127.0.0.1:8799. Prefer a foreground process? Run skillar init --no-service, then skillar serve.
Already using skillar? skillar doctor checks your installation. For a source checkout, see development setup.
From a skill folder to a session trace
| Step | What happens |
|---|---|
| Discover | Index existing skill roots without copying or editing their files. Agents search with search_skills and receive ranked candidates. |
| Read | The host reads the chosen SKILL.md and supporting files through standard MCP resources/read. Reading is evidence, not permission to execute. |
| Trace | Inspect sessions, search candidates, skill reads, task → skill → outcome flows, and activity by weekday and hour in the dashboard. |
Capture can also observe skills used natively when runtime hooks or telemetry report them. Skill tracing explains attribution, evidence limits, and the herdr requirement for pane/session tracing. Core MCP serving and session collection continue if herdr is unavailable.
Supported runtimes
| Runtime | --runtime ID |
|---|---|
| Claude Code | claude-code |
| Codex | codex |
| Gemini CLI | gemini |
| Cursor | cursor |
| OmO | omo |
| Gajae Code | gajae |
| OpenClaw | openclaw |
init detects installed runtimes. Select a subset with skillar init --runtime codex,claude-code. Packs configure MCP and runtime-specific telemetry or capture hooks; capture coverage varies by runtime.
Both MCP revision 2026-07-28 and the legacy initialize handshake are supported. Skill bodies require a host resource reader. See protocol and compatibility for headers, stdio, and legacy transport limits.
Privacy and storage
The local daemon stores prompts, searches, loads, and supporting-file reads in SQLite. It listens on loopback only, protects MCP, ingest, and API requests with a local bearer token, and does not upload captured telemetry. The dashboard uses a local authenticated cookie. Connected agents and their model providers handle data separately.
Choose what to retain in ~/.skillar/config.json:
| Setting | Behavior |
|---|---|
captureLevel: "full" |
Store captured text as sent (default). |
captureLevel: "redacted" |
Mask recognized secrets and truncate text to 2,048 characters; this does not guarantee every secret is removed. |
captureLevel: "metadata" |
Keep text digests and lengths, without the text. |
retentionDays |
Delete old sessions; null keeps history. |
Fresh installs use ~/.skillar/; SKILLAR_HOME selects another home. Existing legacy homes and databases are reused according to the migration rules.
| Path in the selected home | Purpose |
|---|---|
config.json |
Port, capture level, retention, and skill roots |
token |
Local bearer token, mode 0600 |
skillar.db |
Skill index, sessions, events, and loads; existing gisool.db stays in place |
logs/daemon.log |
Daemon log |
backups/ |
Per-run configuration backups for rollback |
Keep your setup portable
skillar doctor # check daemon, service, index, capture, and herdr
skillar doctor --json
skillar init --rollback # undo the newest init run
skillar init --rollback --all # undo every run
skillar export ~/skillar-backup # settings only
skillar export ~/skillar-backup --with-history # include sessions, events, and loads
skillar import ~/skillar-backup --dry-run # preview; existing keys are kept
skillar eval # measure search quality
Use skillar open --print to print the dashboard URL without opening a browser. See the CLI guide for import, service management, settings, and protocol details.
Documentation
| Guide | Use it for |
|---|---|
| Local CLI & MCP | Installation, commands, settings, and protocol reference |
| Upgrade & compatibility | Safe package handoff, legacy homes, commands, and identities |
| Skill tracing | Capture coverage, herdr joins, attribution, and evidence limits |
| Architecture | Daemon, storage, ingest, and API design |
Remote registry and team distribution
The local CLI needs no hosted registry. This repository also contains a separate Node.js registry (server/, stdio or Streamable HTTP) and a Cloudflare Worker (worker/) for authenticated distribution from private R2 immutable releases. They implement the SEP-2640 Skills Extension.
The former personal Cloudflare deployment was retired on 2026-10-29. Historical addresses are not maintained endpoints; organization deployments are separate external resources. Self-hosting requires your own configuration and release validation. skillar init --disable-remote can disable a remote registration in connected runtimes.
Contributing
With Node.js 24 and npm, run node scripts/verify.mjs from the checkout to perform the same locked installs, builds, tests, search and plugin checks, and Worker dry-runs as CI. It does not deploy or publish content.
License
MIT. The name comes from 기술 — Korean for skill, craft, or technique.
Recommended Tools
Try a different keyword or remove a filter.
Install
npx skillfish add changeroa/skillar