A Native SDK desktop app for managing agent skills across project and global installs.
This project uses vercel-labs/native with a React/Vite WebView frontend:
app.zondeclares the native app shell.frontend/srccontains the React UI and shadcn-style components.src/main.zigwires the Native SDK runner, WebView frontend, bridge commands, and model.src/model.zigcontains model state and update messages.
Install the Native SDK CLI, then run the app:
npm install -g @native-sdk/cli
native devnative dev starts the Vite frontend automatically and serves the production bundle from
frontend/dist for packaged builds.
native check
native test
native devInstall the mise-managed tools and hk hooks with:
mise install
mise exec -- hk check --allThe hooks run repository hygiene checks plus gitleaks, oxlint, and oxfmt. Commit messages are checked against the conventional commit format.
SkillManager keeps skill operations inside the app process. It scans SKILL.md files directly, copies local skill folders directly, fetches public GitHub skill files with Zig HTTP APIs, and does not route scan/install/update/remove through npx skills, git, curl, or another skill CLI subprocess.
Supported scan roots:
- Project Codex/shared skills:
.agents/skills - Global Codex skills:
~/.codex/skills - Claude Code skills:
.claude/skillsand~/.claude/skills - Cursor global skills:
~/.cursor/skills - OpenCode global skills:
~/.config/opencode/skills - Gemini CLI global skills:
~/.gemini/skills
Project scope discovers repositories from skills-lock.json (and legacy skills.lock) in the
launch directory, its ancestors, and sibling repositories. Without a lock file, it falls back
to the app launch directory. Global scope resolves from HOME.
Local install copies a directory containing SKILL.md into the selected Project or Global destination and writes .skillmanager.json.
GitHub install accepts public sources such as:
vercel-labs/agent-skillsplus a skill path likeskills/find-docshttps://github.com/vercel-labs/agent-skills/tree/main/skills/find-docs
Update uses .skillmanager.json receipts. Pre-existing skills without receipts still scan and can be removed, but update requires a receipt.