
Skill Creator
A local-first workbench for Agent skills
Skill Creator is a local-first workbench for Agent skills. A thin CLI manages a single daemon; the daemon serves one shell with three apps — Workspaces, Creator, Repository — plus an agent panel on a headless DSH kernel. Skills are discovered, validated, and installed through the ccski SDK; every mutation from an agent arrives as a proposal that a human approves.
$skill-creator start
daemon up · loopback http · ipc lock held
webui mounted · 32-byte token minted
tray: mounted · window shown (app mode)
ready · /workspaces /creator /repository

Three apps, one shell
/workspaces
Workspaces
Index the Global Workspace and imported workspaces. Inside each provider, discover, filter, inspect, validate, and enable or disable skills; compare them against upstream lock hashes and reinstall what drifted.
- Global Workspace (~) aggregates agent global roots; read and manage, never a write target
- Every operation carries an explicit Workspace + Provider identity
- Skills Update compares the skills-CLI lock hash with upstream — read-only check, apply only reinstalls confirmed-outdated skills
first layer of skill scoping
/creator
Creator
Create, load, edit, and delete SKILL.md documents inside imported Workspace.Providers, with a change log per document.
- Frontmatter round-trips through gray-matter; unknown valid fields pass through
- Updates and deletes carry a SHA-256 content revision — concurrent edits are rejected, never last-write-wins
- Documents land as direct children of the provider root through atomic writes
revision-checked editing
/repository
Repository
Scan a Git source, pin the clone to one immutable commit, preview skills, dry-run, then install into one or many imported Workspace.Providers.
- Preview and install share the same pinned snapshot and session
- Per-skill, per-target results with local Skill IDs issued only after full re-verification
- Curated and user Discover sources; user sources accept https Git URLs only
one pinned Git commit
In the shell


Agent panel
shell-level drawer
DSH kernel sessions beside your work
The right-hand panel hosts agent sessions on a headless DSH kernel (agent / session / llm / approval). Sessions stream frames, ask questions through approval cards, and survive tab switches; the panel resizes from 320 to 720 px and collapses without destroying the session.
model routes
Provider endpoints as tabs — nine wire protocols across CN and international providers, per-model context window, effort, and I/O types, with one-click connection testing.
focus modes
create / manage / explore / general sessions; focused modes narrow the kernel tool surface to the product allowlist, general keeps the full surface with native bash.
approvals
ask_user_question approval cards in the transcript; MCP mutations are *_propose tools that only execute after a human approves the proposal in the panel.
native file picking
Attachment buttons open the OS-native file dialog through the daemon; real paths flow into prompt attachments with daemon-side size guards and thumbnail previews.

security model
Local by construction, not by configuration
Every trusting boundary in the product, listed; these rows restate the README's security section without change.
| Surface | Rule |
|---|---|
| HTTP transport | listens on 127.0.0.1 only; /api/health and the static SPA perform no filesystem mutation |
| WebUI auth | 32-byte web token per daemon boot, delivered via URL fragment, captured to the tab’s sessionStorage, verified before the WebSocket upgrade |
| IPC | single-instance lock; runtime dir 0700 and socket 0600 (named pipe on Windows) |
| Paths | the server resolves opaque workspace / provider / skill IDs; mutations never accept caller-composed output paths |
| Writes | temp-file-plus-rename atomic commits; update and delete reject on SHA-256 revision mismatch |
| Repository | preview and install bind to one pinned clone session; installs re-verify canonical path, non-symlink SKILL.md, and frontmatter identity |
| MCP | mutations are *_propose tools producing proposals; execution runs only after human approval (stdio form is read-only) |
| External input | decoded to unknown, then Zod safeParse; incompatible snapshots project to empty, everything else fails typed |
get started
Install globally, start once
One CLI, one daemon. start waits for the WebUI and tray to mount, then shows the native window; web mode opens the system browser, headless prints the recovery hint.
npm install -g skill-creator
skill-creator start
skill-creator status # pid · version · port · tray state
skill-creator stop| Requirement | Detail |
|---|---|
| Node.js | ≥ 24.0.0 (node:zlib zstd for kernel persistence; matches the package engines field) |
| Git | callable as git by the daemon process |
| macOS / Windows | arm64 and x64 — native app window via OpenTray ext-webview (appMode: true) |
| Linux | web mode by default: tray icon + system browser; --web / --no-web override on any platform |
- GitHub ↗ source, issues, and releases
- npm ↗ skill-creator on the registry
- jixoai ↗ the family of projects
Development happens in the open: clone the repository and run pnpm install, then pnpm dev.