{"id":49849069,"url":"https://github.com/luna-prompts/skillnote","last_synced_at":"2026-05-16T11:00:54.705Z","repository":{"id":341246629,"uuid":"1164543274","full_name":"luna-prompts/skillnote","owner":"luna-prompts","description":"The open-source skill registry for AI coding agents. Create, manage, and distribute SKILL.md files across Openclaw, Claude Code, Cursor, Codex, OpenHands, Antigravity, and more.","archived":false,"fork":false,"pushed_at":"2026-05-10T16:25:21.000Z","size":6248,"stargazers_count":43,"open_issues_count":1,"forks_count":7,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-10T16:34:43.062Z","etag":null,"topics":["ai-coding-agents","ai-tools","antigravity","claude-code","codex","cursor","developer-tools","docker","fastapi","nextjs","open-source","openhands","python","self-hosted","skill-md","skill-registry","skills","typescript","windsurf"],"latest_commit_sha":null,"homepage":"https://www.lunaprompts.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luna-prompts.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-23T07:50:40.000Z","updated_at":"2026-05-06T13:51:43.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/luna-prompts/skillnote","commit_stats":null,"previous_names":["luna-prompts/skillnote"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/luna-prompts/skillnote","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luna-prompts%2Fskillnote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luna-prompts%2Fskillnote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luna-prompts%2Fskillnote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luna-prompts%2Fskillnote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luna-prompts","download_url":"https://codeload.github.com/luna-prompts/skillnote/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luna-prompts%2Fskillnote/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33072981,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-coding-agents","ai-tools","antigravity","claude-code","codex","cursor","developer-tools","docker","fastapi","nextjs","open-source","openhands","python","self-hosted","skill-md","skill-registry","skills","typescript","windsurf"],"created_at":"2026-05-14T14:00:19.876Z","updated_at":"2026-05-16T11:00:54.699Z","avatar_url":"https://github.com/luna-prompts.png","language":"TypeScript","funding_links":[],"categories":["Skills \u0026 Plugins"],"sub_categories":["Notable Skills \u0026 Plugins"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"public/logo.svg\" width=\"88\" height=\"88\" alt=\"SkillNote\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eS K I L L N O T E\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eThe open-source skill registry for AI coding agents.\u003c/strong\u003e\n  \u003cbr /\u003e\n  Self-host your team's \u003ccode\u003eSKILL.md\u003c/code\u003e library. Version it, scope it, and ship it to Claude Code and OpenClaw from one CLI.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/skillnote\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/skillnote.svg?label=npm\u0026color=cb3837\u0026logo=npm\" alt=\"npm version\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/skillnote\"\u003e\u003cimg src=\"https://img.shields.io/npm/dt/skillnote.svg?label=downloads\u0026color=brightgreen\" alt=\"npm total downloads\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/luna-prompts/skillnote/pkgs/container/skillnote-api\"\u003e\u003cimg src=\"https://img.shields.io/badge/ghcr.io-multi--arch-2496ED?logo=docker\u0026logoColor=white\" alt=\"Docker images on GHCR\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://clawhub.ai/latentloop07/skillnote\"\u003e\u003cimg src=\"https://img.shields.io/badge/clawhub-skillnote-F97316\" alt=\"On clawhub\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/luna-prompts/skillnote/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"License\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/GazU4amU6H\"\u003e\u003cimg src=\"https://img.shields.io/badge/Discord-Join%20us-5865F2?logo=discord\u0026logoColor=white\" alt=\"Discord\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/luna-prompts/skillnote\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/luna-prompts/skillnote?style=social\" alt=\"Stars\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#quick-start\"\u003e\u003cstrong\u003eQuick start\u003c/strong\u003e\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"#the-8000-character-problem\"\u003eWhy\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"#agent-support\"\u003eAgents\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"#architecture\"\u003eArchitecture\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"#faq\"\u003eFAQ\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://discord.gg/GazU4amU6H\"\u003eDiscord\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/connect-browse-r9.png\" width=\"100%\" alt=\"SkillNote Connect page browsing Claude Code and OpenClaw as official agent integrations, each shown with its canonical mark\" /\u003e\n\u003c/p\u003e\n\n---\n\n## The 8,000-character problem\n\nClaude Code shares **~8,000 characters** across every active skill description ([docs](https://docs.anthropic.com/en/docs/claude-code/skills)). Past that limit, descriptions silently truncate. The system prompt forbids using skills that aren't listed in context, so truncated skills are both invisible *and* explicitly off-limits ([#13343](https://github.com/anthropics/claude-code/issues/13343), [#40121](https://github.com/anthropics/claude-code/issues/40121)).\n\nIn practice, past ~15 active skills your skills stop working and you can't tell which ones. New teammates have no way to discover what skills the project depends on. Updating a shared skill means re-zipping and re-uploading for everyone. And private skills, like deploy procedures, compliance workflows, or internal API patterns, have nowhere safe to live.\n\n**SkillNote is a self-hosted registry that fixes that.** Per-project collections scope which skills load. Live sync pushes browser edits to every connected agent within 60 seconds. Agents rate skills 1 to 5 after using them, so you finally have signal on what works. Your skills stay on your infrastructure. Your servers, your rules.\n\n| Without SkillNote | With SkillNote |\n| --- | --- |\n| Skills truncate past ~15 active | Collections scope to 15 per project |\n| `~/.claude/skills/` per laptop | One registry, every agent |\n| Re-zip + re-upload to share an edit | Edit in browser, every session picks it up in 60s |\n| No signal on what actually works | Agents rate every skill they use, 1-5 + comment |\n| Private skills have nowhere safe | Self-hosted; never leaves your network |\n\n---\n\n## Quick start\n\n```bash\nnpx skillnote start\n```\n\nOpens \u003chttp://localhost:3000\u003e.\n\nRequires **Docker** (running) and **Node.js 20+**. The CLI pulls the published images from GHCR, brings up the web + API + Postgres stack, waits for healthchecks, and opens the dashboard. About 30 seconds on a warm cache.\n\n```text\n┌────────────────────────────────────────────┐\n│  SkillNote ▸  the skill registry for AI    │\n│  v0.5.2 · github.com/luna-prompts/skillnote│\n└────────────────────────────────────────────┘\n◇  Prerequisites ok\n◇  Images pulled\n◇  Containers running\n◇  Services healthy\n\n╭────────┬──────────────────────────────╮\n│ Web UI │ http://localhost:3000        │\n│ API    │ http://localhost:8082        │\n╰────────┴──────────────────────────────╯\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eOther ways to install\u003c/b\u003e\u003c/summary\u003e\n\n**Docker Compose directly** (no Node):\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/luna-prompts/skillnote/cli-v0.5.4/deploy/docker-compose.yml -o docker-compose.yml\ndocker compose up -d\n```\n\n**LAN-accessible** for teammates on the same network:\n\n```bash\nSKILLNOTE_HOST=\u003cyour-lan-ip\u003e docker compose up -d\n```\n\n**Podman**: `npx skillnote start` is Docker-only, but the Compose path and `install.sh` both work with `podman compose` (Podman 4+) or `podman-compose`.\n\n**Building from source** (contributors):\n\n```bash\ngit clone https://github.com/luna-prompts/skillnote.git\ncd skillnote \u0026\u0026 ./install.sh\n```\n\n`install.sh` builds from local source instead of pulling published images. Auto-detects `docker compose`, `podman compose`, or `podman-compose`.\n\n\u003c/details\u003e\n\n### Lifecycle commands\n\n```text\nnpx skillnote start         # boot + open UI\nnpx skillnote stop          # halt; volumes preserved\nnpx skillnote restart       # stop + start\nnpx skillnote status        # health table (--json for scripts)\nnpx skillnote logs [svc]    # tail logs (-f to follow)\nnpx skillnote open          # open UI (--app for chromeless)\nnpx skillnote doctor        # 11 health checks\nnpx skillnote reset --confirm   # DESTRUCTIVE: drops all data\n```\n\n---\n\n## Wire up your AI agent\n\nAfter the backend is running, install the plugin for your agent.\n\n### Claude Code\n\n```bash\nnpx skillnote connect claude-code\nsource ~/.zshrc      # or ~/.bashrc\n```\n\nRuns the canonical `/setup/agent` script: registers the plugin marketplace in `~/.claude/settings.json`, installs the SkillNote plugin into `~/.claude/plugins/`, drops picker binaries in `~/.skillnote/bin/`, and adds a shell wrapper. Run `claude` in any project, and the collection picker appears on first launch:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/terminal/picker4.png\" width=\"640\" alt=\"SkillNote collection picker in Claude Code terminal showing Conventions, DevOps, and Frontend collections\" /\u003e\n\u003c/p\u003e\n\nPick a collection (it's saved to `.skillnote.json`) and your scoped skills load on every session.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ci\u003eOr, paste this prompt into a fresh Claude Code session\u003c/i\u003e\u003c/summary\u003e\n\n\u003cbr /\u003e\n\n```text\nInstall SkillNote on my machine and wire it into this Claude Code session.\n\n1. If http://localhost:8082/health doesn't respond, run:\n   npx skillnote start --no-browser -d\n2. If ~/.claude/plugins/skillnote/ doesn't exist, run:\n   curl -sf http://localhost:8082/setup | bash\n3. source ~/.zshrc\n4. Confirm: claude --version, ls ~/.claude/plugins/skillnote/\n5. Report what collection picker options you see when running `claude`.\n```\n\n\u003c/details\u003e\n\n### OpenClaw\n\n```bash\nclawhub install skillnote\n```\n\nThat's the whole install for the default `localhost:8082` setup. If the backend isn't running, the skill auto-bootstraps it on first sync.\n\nThe skill ships `sync.sh` (60s catalog sync), `log-watcher.py` (analytics daemon), `install-backend.sh` (bootstrap), and an always-loaded `SKILL.md` that grafts a persistent `\u003cskillnote v1\u003e` block into `~/.openclaw/workspace/AGENTS.md`.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ci\u003eNon-default host or alternative install\u003c/i\u003e\u003c/summary\u003e\n\n\u003cbr /\u003e\n\nFor a non-default host:\n\n```bash\nexport SKILLNOTE_BASE_URL=\"http://your-server:8082\"\nclawhub install skillnote\necho 'export SKILLNOTE_BASE_URL=\"http://your-server:8082\"' \u003e\u003e ~/.zshrc\n```\n\nOr scripted (no clawhub):\n\n```bash\nnpx skillnote start --no-browser -d\nnpx skillnote connect openclaw\n```\n\n\u003c/details\u003e\n\n\u003e Cursor, Codex, Antigravity, and OpenHands are on the roadmap. [Open an issue](https://github.com/luna-prompts/skillnote/issues) if you want to help build an adapter.\n\n---\n\n## Features\n\n### Per-project collections\n\nClaude Code shares ~8,000 characters across every active skill description; past ~15 skills, descriptions silently truncate and truncated skills won't trigger. Collections scope which skills load per project: frontend project gets React + testing patterns, API project gets error handling + deploy conventions. Same registry, different active sets, no context wasted.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/collections.png\" width=\"100%\" alt=\"Collections page with skill counts and progress bars\" /\u003e\n\u003c/p\u003e\n\nIf your folder name matches a collection, the plugin recommends it automatically.\n\n### Import from any GitHub repo\n\nThe community has published thousands of `SKILL.md` files since Anthropic released the format. Paste a GitHub URL, shorthand (`garrytan/gstack`), a tree URL to a subfolder, or a Claude Code marketplace manifest (`anthropic.json`). SkillNote shallow-clones the repo, scans every `SKILL.md`, validates frontmatter, and opens a workspace where you pick exactly what to install.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/marketplace-workspace.png\" width=\"100%\" alt=\"Marketplace workspace showing skills from garrytan/gstack with select-all, filter, and per-skill preview pane\" /\u003e\n\u003c/p\u003e\n\nSome popular registries to try:\n\n- [**`anthropics/skills`**](https://github.com/anthropics/skills): Anthropic's official Agent Skills repository\n- [**`ComposioHQ/awesome-claude-skills`**](https://github.com/ComposioHQ/awesome-claude-skills): 800+ community skills, the largest curated set\n- [**`alirezarezvani/claude-skills`**](https://github.com/alirezarezvani/claude-skills): 600+ skills for Claude Code, Codex, Gemini CLI, Cursor, and more\n- [**`garrytan/gstack`**](https://github.com/garrytan/gstack): Garry Tan's 50+ opinionated YC-flavored tools (CEO, Designer, Eng Manager, etc.)\n- [**`obra/superpowers`**](https://github.com/obra/superpowers): Jesse Vincent's agentic skills framework\n\n### Live sync, every agent\n\nEdit a skill in the browser and every running Claude Code or OpenClaw session picks up the change within 60 seconds. Claude Code re-syncs on every prompt and hot-reloads `SKILL.md` mid-session. OpenClaw's `sync.sh` runs on a 60s throttle. One person updates a skill, everyone gets it. New teammates run the setup command once and inherit every skill the team has built.\n\n### Agent reviews\n\nMost skill setups are fire-and-forget. SkillNote closes the loop. After applying a skill, the agent rates it 1-5 and describes what it did. OpenClaw additionally posts a `linked_usage_id` correlating each rating to the specific task that produced it. You see which skills are actually being used, which ones break, and how performance changes across versions.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/analytics-dashboard.png\" width=\"100%\" alt=\"Analytics dashboard with total calls, unique skills, agent breakdown, and skill leaderboard\" /\u003e\n\u003c/p\u003e\n\n### Version history\n\nEvery save creates a snapshot. Browse, compare, and restore any version in one click. Published versions use semver and ship as checksummed ZIP bundles.\n\n### Skill push\n\nWhen Claude Code notices you correct the same thing three times (\"use pnpm, not npm\"), it offers to turn it into a skill. The skill is pushed to SkillNote and syncs to every connected agent in 60 seconds. What one person teaches once becomes a skill everyone has.\n\n---\n\n## Agent support\n\n| Agent | Status | Mechanism |\n| --- | --- | --- |\n| **Claude Code** | Supported | Native plugin (`~/.claude/plugins/skillnote/`) with 6 lifecycle hooks |\n| **OpenClaw** | Supported | clawhub skill bundle with `sync.sh` + analytics daemon |\n| Cursor | Planned | Roadmap |\n| Codex CLI | Planned | Roadmap |\n| Antigravity | Planned | Roadmap |\n| OpenHands | Planned | Roadmap |\n\nWant to help build an adapter? [Open an issue](https://github.com/luna-prompts/skillnote/issues) or join us on [Discord](https://discord.gg/GazU4amU6H).\n\n---\n\n## Architecture\n\n```\n┌──────────────────────────────────────────────────────┐\n│                                                      │\n│   SkillNote Server (Docker)                          │\n│                                                      │\n│   Web UI        REST API       PostgreSQL            │\n│   :3000         :8082          (storage + notify)    │\n│                                                      │\n└────────────────────┬─────────────────────────────────┘\n                     │\n                  REST API\n                     │\n        ┌────────────┴────────────┐\n        ▼                         ▼\n┌────────────────────┐   ┌────────────────────┐\n│ Claude Code plugin │   │  OpenClaw skill    │\n│                    │   │                    │\n│ ~/.claude/         │   │ ~/.openclaw/       │\n│   plugins/         │   │   skills/          │\n│   skillnote/       │   │   skillnote/       │\n│                    │   │                    │\n│ 6 lifecycle hooks  │   │ sync.sh + daemon   │\n│ Per-project picker │   │ AGENTS.md graft    │\n└────────────────────┘   └────────────────────┘\n```\n\nSkillNote uses each agent's native skill system. For Claude Code that's hooks plus plugin format, with `SessionStart`, `UserPromptSubmit`, `PostToolUse`, `PostCompact`, `SubagentStart`, and `Stop`. Only `SessionStart` blocks (for ~1 second to sync); every other hook runs async, so you never wait for SkillNote.\n\nFor OpenClaw it's a clawhub-installable bundle with `sync.sh` (catalog), `log-watcher.py` (analytics), and an AGENTS.md graft that keeps the agent consulting the registry on every task.\n\nSkills are written as local `SKILL.md` files, not piped through a network abstraction. That means every [Claude Code frontmatter feature](https://docs.anthropic.com/en/docs/claude-code/skills), including `allowed-tools`, `context: fork`, `effort`, and `model`, works natively. These features only work with on-disk `SKILL.md` files, which is why SkillNote syncs to disk instead of serving skills over a network protocol.\n\nFor the full HLD see [`docs/openclaw-hld.md`](docs/openclaw-hld.md).\n\n---\n\n## SKILL.md format\n\n```markdown\n---\nname: pdf-extractor\ndescription: Extract text and tables from PDF files. Use when the user mentions PDFs or scanned documents.\ncollections: [data, documents]\nallowed-tools: Read Write Bash(pdftotext *)\ncontext: fork\n---\n\n# PDF Extractor\n\nWhen the user provides a PDF file:\n1. Use `pdftotext` to extract raw text\n2. Identify tables and format them as markdown\n3. Preserve headings and document structure\n```\n\n---\n\n## Security \u0026 deployment\n\nSkillNote is built for trusted environments: a developer's laptop, a team VM on a private network, or a self-hosted server behind a VPN. Out of the box it has **no authentication** on the web UI or API; anything that can reach `:3000` and `:8082` can read and write skills.\n\n- **Local-only (default):** `npx skillnote start` binds to `localhost`. Safe.\n- **LAN-only:** set `SKILLNOTE_HOST=\u003clan-ip\u003e` to expose to teammates on the same network. Assumes the LAN is trusted.\n- **Internet-exposed:** never bind `:3000` or `:8082` directly to a public IP. Put it behind a reverse proxy (Caddy, Nginx, Traefik) with basic auth, OAuth, or a Tailscale/Cloudflare Tunnel.\n- **Marketplace imports:** every install writes `SKILL.md` files that your agent will read. Review the workspace preview before importing from unfamiliar sources.\n\nAuth on the API is on the roadmap. Until then, treat reachability as the access boundary.\n\n---\n\n## Tech stack\n\n| Layer | Technology |\n| --- | --- |\n| CLI | Node 20+, TypeScript, commander, [@clack/prompts](https://www.npmjs.com/package/@clack/prompts) |\n| Frontend | Next.js 16, React 19, TypeScript, Tailwind CSS 4, Tiptap, PWA |\n| Backend | Python 3.12, FastAPI, SQLAlchemy 2, Alembic |\n| Claude Code plugin | Bash, Python, Claude Code Plugin API |\n| OpenClaw skill | Bash (`sync.sh`), Python (`log-watcher.py`), clawhub bundle |\n| Database | PostgreSQL 16 |\n| Distribution | npm (`skillnote`), GHCR multi-arch images, Docker Compose |\n\n---\n\n## FAQ\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eWhat is SkillNote?\u003c/b\u003e\u003c/summary\u003e\n\n\u003cbr /\u003e\n\nSkillNote is an open-source, self-hosted registry for Anthropic's [Agent Skills format](https://docs.anthropic.com/en/docs/claude-code/skills). You run it on your own infrastructure (a laptop, a team VM, a private server), and it gives your team one place to create, version, and share `SKILL.md` files across Claude Code, OpenClaw, and other coding agents. The web UI lets you edit skills in a Notion-style editor; the CLI plugin syncs your registry into each agent's native skill system so the skills hot-reload mid-session.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eHow is SkillNote different from MCP?\u003c/b\u003e\u003c/summary\u003e\n\n\u003cbr /\u003e\n\nMCP (Model Context Protocol) is a wire protocol for talking to tools over a network. Skills are local `SKILL.md` files that the agent reads from disk. The two solve different problems: MCP lets an agent call a remote service; skills tell an agent *how* to do something with instructions, examples, and frontmatter directives like `allowed-tools` or `context: fork`. SkillNote distributes the second kind. It syncs skills to disk because that's where features like `allowed-tools`, `context: fork`, `effort`, and `model` are actually evaluated by Claude Code, and they don't work over a network protocol.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eHow do I share Claude Code skills across my team?\u003c/b\u003e\u003c/summary\u003e\n\n\u003cbr /\u003e\n\nRun SkillNote on a server your team can reach (`SKILLNOTE_HOST=\u003clan-ip\u003e docker compose up -d` for a LAN, or behind a reverse proxy for a remote team). Everyone installs the SkillNote plugin into Claude Code with `npx skillnote connect claude-code`. From then on, any edit anyone makes in the SkillNote web UI propagates to every running Claude Code session in 60 seconds. New teammates run the connect command once and inherit every skill the team has built.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eIs SkillNote free?\u003c/b\u003e\u003c/summary\u003e\n\n\u003cbr /\u003e\n\nYes. SkillNote is MIT licensed and self-hosted. There is no cloud tier, no paid plan, and no usage telemetry. You run it on your own machines and own your data.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eClaude Code: skills from another collection are showing up\u003c/b\u003e\u003c/summary\u003e\n\n\u003cbr /\u003e\n\nClaude Code discovers skills from parent directories. If you ran `claude` in a parent folder (`~/projects/`) and picked a collection, those skills persist in `~/projects/.claude/skills/` and leak into every subdirectory project.\n\n```bash\nrm -rf ~/path/to/parent/.claude/skills/skillnote-*\n```\n\nAlways run `claude` from the actual project directory, not from umbrella folders.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eClaude Code: plugin changes not taking effect\u003c/b\u003e\u003c/summary\u003e\n\n\u003cbr /\u003e\n\nClaude Code loads plugins at startup. If you reinstall the plugin while Claude Code is running, quit and restart it for the new plugin to load.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eOpenClaw: no \u003ccode\u003esn-*\u003c/code\u003e skills appear after install\u003c/b\u003e\u003c/summary\u003e\n\n\u003cbr /\u003e\n\nCheck that `sync.sh` ran successfully on first session:\n\n```bash\n~/.openclaw/skills/skillnote/sync.sh\nls ~/.openclaw/skills/sn-* | head\n```\n\nIf sync produces nothing, verify `~/.openclaw/skills/skillnote/config.json` has a `host` field pointing at a reachable backend (`curl -sf $host/health`).\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eOpenClaw: agent stopped using SkillNote mid-conversation\u003c/b\u003e\u003c/summary\u003e\n\n\u003cbr /\u003e\n\nThe `\u003cskillnote v1\u003e` block in `~/.openclaw/workspace/AGENTS.md` is what tells the agent to consult the registry on every task. If it gets removed (manual edit, regenerated by another tool), `sync.sh` re-grafts it on the next run.\n\n```bash\ngrep -c '\u003cskillnote v1\u003e' ~/.openclaw/workspace/AGENTS.md\n# expected: 1\n```\n\nIf `0`, run `~/.openclaw/skills/skillnote/sync.sh` once and re-check.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eOpenClaw: analytics daemon isn't running\u003c/b\u003e\u003c/summary\u003e\n\n\u003cbr /\u003e\n\n```bash\nPID=$(cat ~/.openclaw/skills/skillnote/.log-watcher.pid 2\u003e/dev/null) \u0026\u0026 kill -0 $PID 2\u003e/dev/null \u0026\u0026 echo alive || echo dead\n```\n\nIf dead, the next `sync.sh` run relaunches it.\n\n\u003c/details\u003e\n\n---\n\n## Contributing\n\n1. Fork the repo\n2. `git checkout -b feat/my-feature`\n3. Commit with [Conventional Commits](https://www.conventionalcommits.org/)\n4. Push and open a PR\n\n[`CLAUDE.md`](CLAUDE.md) has the architectural patterns and conventions. [`docs/`](docs/) has design docs and HLDs.\n\nActive development happens on [Discord](https://discord.gg/GazU4amU6H).\n\n---\n\n## Contributors\n\n\u003ca href=\"https://github.com/luna-prompts/skillnote/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=luna-prompts/skillnote\" alt=\"Contributors\" /\u003e\n\u003c/a\u003e\n\n---\n\n## License\n\nMIT \u0026copy; [Luna Prompts](https://github.com/luna-prompts)\n\n\u003cp align=\"center\"\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"https://github.com/luna-prompts/skillnote\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/luna-prompts/skillnote?style=for-the-badge\u0026logo=github\u0026label=Star%20us\" alt=\"Star us\" /\u003e\u003c/a\u003e\n  \u003cbr /\u003e\u003cbr /\u003e\n  Built by \u003ca href=\"https://github.com/luna-prompts\"\u003e\u003cstrong\u003eLuna Prompts\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluna-prompts%2Fskillnote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluna-prompts%2Fskillnote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluna-prompts%2Fskillnote/lists"}