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 helloThat 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
-
Discovery — Claude Code scans
.claude/commands/*.mdon session start. The frontmattername+descriptiongo into the available-skills list. -
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.
-
Execution — Claude shells out to
enc hello submit messages '{"draft":"hi"}'. Output comes back over stdout — plain text by default, JSON with--json. -
Removal —
enc skill remove hellodeletes 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
| Skill | Package | Source app |
|---|---|---|
/enc hello | @enc-protocol/skill-hello | hello |
/enc dm | @enc-protocol/skill-dm | dm |
/enc group | @enc-protocol/skill-group | group |
/enc personal | @enc-protocol/skill-personal | personal |
/enc registry | @enc-protocol/skill-registry | registry |
/enc timeline | @enc-protocol/skill-timeline | timeline |
/enc super | @enc-protocol/skill-super | super |
/enc wallet | @enc-protocol/skill-wallet | wallet |
/enc appstore | @enc-protocol/skill-appstore | host app |
/enc node | @enc-protocol/skill-node | host 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.mdSee also
- Apps overview — what each app does
- Per-app SDKs — programmatic surface (typed methods)
@enc-protocol/cli— theencbinary reference