Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Claude Code Skills

Each ENC Protocol app ships a Claude Code skill — an installable agent capability that makes Claude understand when to invoke the app and how. After installation, Claude Code surfaces it as a /enc <app> slash command in your project.

Install a skill

# 1. Install the global enc CLI once
npm install -g @enc-protocol/cli --registry https://npm-registry.ocrybit.workers.dev/
 
# 2. Add a skill to your project (current dir)
enc skill add hello

That command npm-installs @enc-protocol/skill-hello, then symlinks its SKILL.md into ./.claude/commands/hello.md. Claude Code picks it up as the /enc hello slash command.

Skill anatomy

A skill is a single SKILL.md file with YAML frontmatter:

---
name: enc-hello
description: Interact with the enc-protocol `hello` app — write data_types (messages); read views (messages).
---
 
# enc-hello
 
Use this skill to interact with the enc-protocol `hello` app via the `enc` CLI.
 
App-level commands (preferred, v2 app-driven surface):
 
- `enc hello submit messages '<json>'`
    [write] dataType → post
- `enc hello query messages`
    [read] → post
 
Enclave-level commands (low-level, backward compat):
 
- `enc hello post` (aliases: `p`)
    [write] event: `submit`
    Example: `enc hello submit post '{"body":"hello world"}'`
 
## When to use this skill
 
- The user asks about the `hello` app on enc-protocol.
- The user wants to perform a protocol operation that maps to one of the commands above.
 
## Output formats
 
- Default: human-readable text (one event per line for queries).
- `--json` for structured JSON output (preferred when chaining commands).
- `--mem` for in-process backend; default is cf via NODE_URL.

How Claude Code uses it

  1. Discovery — Claude Code scans .claude/commands/*.md on session start. The frontmatter name + description go into the available-skills list.

  2. Invocation — when the user's request matches the description (e.g. "post a hello message"), Claude picks the skill and follows the body. The body tells Claude which command to run via Bash.

  3. Execution — Claude shells out to enc hello submit messages '{"draft":"hi"}'. Output comes back over stdout — plain text by default, JSON with --json.

  4. Removalenc skill remove hello deletes the symlink.

Why skills over MCP?

The whole skill interface is enc <app> ... via Bash. The SKILL.md tells Claude when to use it and what to invoke. No MCP server is needed — agents that can shell out (Claude Code, Codex, Aider) consume skills directly.

MCP would be useful for browser-only / sandboxed agents that can't shell out — that path is left open via the per-app SDK, but not implemented today.

Available skill packages

SkillPackageSource app
/enc hello@enc-protocol/skill-hellohello
/enc dm@enc-protocol/skill-dmdm
/enc group@enc-protocol/skill-groupgroup
/enc personal@enc-protocol/skill-personalpersonal
/enc registry@enc-protocol/skill-registryregistry
/enc timeline@enc-protocol/skill-timelinetimeline
/enc super@enc-protocol/skill-supersuper
/enc wallet@enc-protocol/skill-walletwallet
/enc appstore@enc-protocol/skill-appstorehost app
/enc node@enc-protocol/skill-nodehost app

Generation

Each skill's SKILL.md is auto-generated by lib/codegen/skill-codegen.mjs in impl-cli from the app's cli.json. Lists every typed command (submit + query), examples, flags, and the underlying enclaves. Drift-checked via enc gen --check.

To regenerate after schema changes:

cd impl-cli
enc gen skill hello   # regenerates cli/hello/skill/SKILL.md

See also