Skills System
Skills are portable, reusable procedural instructions that EdgeCrab loads into its system prompt at session start. Think of them as “how-to guides” the agent can follow: a security-audit skill might walk it through OWASP Top 10 checks; a deploy-k8s skill might outline a safe Kubernetes rollout sequence.
Skills are compatible with agentskills.io — the shared open-source skills registry used by all Nous Research agents.
Skills vs Plugins
Section titled “Skills vs Plugins”First-principles distinction:
- A
skillgives the model reusable instructions. - A
plugingives EdgeCrab an installable runtime extension.
Use a skill when the problem is procedural guidance: checklists, step sequences, examples, task-specific prompting, or bundled helper files/scripts the agent uses through normal tools. Use a plugin when the problem is runtime capability: new tools, hooks, subprocesses, Hermes Python integrations, readiness checks, or install/audit lifecycle.
This overlap matters:
- A plugin can bundle a
SKILL.md. - Standalone skills are still a separate concept from plugins.
edgecrab skills ...manages skills in~/.edgecrab/skills/.edgecrab plugins ...manages plugins in~/.edgecrab/plugins/.- Standalone skills can bundle helper files under
scripts/,references/,templates/, andassets/.
Directory Structure
Section titled “Directory Structure”Each skill is a directory containing a SKILL.md file — not a flat .md file:
~/.edgecrab/skills/├── rust-test-fixer/│ └── SKILL.md├── security-audit/│ └── SKILL.md│ └── checklist.md # optional extra context file└── deploy-k8s/ └── SKILL.md └── examples/ └── deployment.yamlClaude-style helper-script support is included for standalone skills:
${CLAUDE_SKILL_DIR}resolves to the concrete skill directory${CLAUDE_SESSION_ID}resolves to the active EdgeCrab session idskill_viewand preloaded skills both render bundledread_filesand list helper files fromreferences/,templates/,scripts/, andassets/- Claude-style frontmatter fields such as
when_to_use,arguments,argument-hint,allowed-tools,user-invocable,disable-model-invocation,context, andshellare parsed and surfaced inskill_view - EdgeCrab does not auto-execute Claude prompt-shell blocks or fork a dedicated Claude skill sub-agent
EdgeCrab resolves skills in this order:
~/.edgecrab/skills/— primary user skills (highest priority)- Directories in
skills.external_dirsinconfig.yaml - Skills bundled with the binary (read-only)
Local user skills always win when a name conflicts with external or bundled skills.
SKILL.md Format
Section titled “SKILL.md Format”SKILL.md uses a YAML frontmatter block followed by Markdown instructions:
---name: security-auditdescription: Systematic OWASP Top 10 security audit for web applications.category: securityplatforms: - linux - windowsread_files: - references/checklist.mdwhen_to_use: Use when reviewing a service before release or after an incident.---
# Security Audit Workflow
You are performing a security audit. Follow these steps:
1. Check authentication mechanisms for common weaknesses...2. Test for SQL injection entry points...3. Review session management...Frontmatter Fields
Section titled “Frontmatter Fields”| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | Unique identifier (becomes a slash command) |
description | string | yes | Short summary shown in /skills listing |
category | string | no | Hub category (e.g. security, devops, coding) |
platforms | string[] | no | Limit to operating systems (darwin, linux, windows). Omit = all. |
read_files | string[] | no | Extra files in the skill dir to inject as context |
when_to_use | string | no | Claude-style fallback summary when description is absent |
arguments | string[] | no | Claude-style declared argument names |
argument-hint | string | no | Claude-style argument hint shown in skill_view |
allowed-tools | string[] | no | Claude-style advisory metadata |
user-invocable | boolean | no | Hidden from skills_list when false |
Installing Skills
Section titled “Installing Skills”From the Hub
Section titled “From the Hub”edgecrab skills list # list installed skillsedgecrab skills view security-audit # read a skilledgecrab skills search "diagram" # search remote sources by originedgecrab skills install edgecrab:diagramming/ascii-diagram-masteredgecrab skills install hermes-agent:research/ml-paper-writingedgecrab skills install official/security-audit # install from bundled official skillsedgecrab skills install raphaelmansuy/edgecrab/skills/research/ml-paper-writingedgecrab skills update # refresh all remote-installed skillsedgecrab skills update ml-paper-writing # refresh one installed remote skilledgecrab skills remove security-audit # uninstallFrom inside the TUI:
/skills # browse installed skills/skills search diagram # search remote sources/skills install edgecrab:diagramming/ascii-diagram-master/skills update ascii-diagram-master/skills search opens the interactive remote browser. It searches in the background, keeps the UI responsive during slow source refreshes, shows per-source notices in the details pane, and lets you jump back to the installed-skills browser without leaving the overlay.
Manual Installation
Section titled “Manual Installation”mkdir -p ~/.edgecrab/skills/my-skillcat > ~/.edgecrab/skills/my-skill/SKILL.md << 'EOF'---name: my-skilldescription: My custom workflowcategory: custom---
# My Skill
When this skill is active, follow these instructions...EOFNo restart needed — EdgeCrab picks up new skills automatically.
Loading Skills
Section titled “Loading Skills”At Launch
Section titled “At Launch”CLI --skill loads skills into the session-scoped preloaded-skill set before
the first turn runs.
edgecrab -S security-audit "audit the payment service"edgecrab -S "security-audit,code-review" "full review"edgecrab --skill rust-test-fixer --skill code-reviewInside the TUI
Section titled “Inside the TUI”/security-audit # toggle skill on for this sessionEvery installed skill is auto-registered as a slash command. Typing
/security-audit some context activates the skill for the session and sends
some context as the next message. Typing the same skill command again with
no context toggles it off.
Permanently in Config
Section titled “Permanently in Config”skills: preloaded: - security-audit - code-reviewDisabling Skills
Section titled “Disabling Skills”Globally disable without uninstalling:
skills: disabled: - heavy-skillPlatform-specific disable:
skills: platform_disabled: telegram: - heavy-skill # disabled in Telegram, active in CLIExternal Skill Directories
Section titled “External Skill Directories”Share skills across projects or teams:
skills: external_dirs: - ~/.agents/skills # another agent's directory - /shared/team/skills # team skills - ${SKILLS_REPO}/skills # env-var referenceSupports ~ expansion and ${VAR} substitution. External directories are read-only.
Skills vs Memory vs Context Files
Section titled “Skills vs Memory vs Context Files”| Concept | What it is | How it’s populated |
|---|---|---|
| Skills | Procedural workflow instructions | Written by you or hub-installed |
| Memory | Persistent facts about you and your projects | Auto-written by the agent |
| Context files | Project-level instructions (AGENTS.md, etc.) | You write; auto-discovered |
Skills are loaded on demand. Memory is always loaded (unless --skip-memory). Context files are project-scoped.
One more practical rule:
- If you only need to tell the agent how to work, write a skill.
- If you need EdgeCrab itself to expose new runtime behavior, build a plugin.
Example: Writing a Security Audit Skill
Section titled “Example: Writing a Security Audit Skill”---name: security-auditdescription: Run an OWASP-aligned security review of Rust codecategory: security---
# Security Audit
When this skill is active, perform a structured security review:
## Step 1 — Identify entry pointsFind all public HTTP handlers, CLI entry points, and IPC endpoints.List them with file:line references.
## Step 2 — Check input validationFor each entry point, verify:- All user-supplied data is validated before use- Path inputs are sanitized (no traversal)- Integer inputs are range-checked
## Step 3 — Check secrets handlingSearch for hardcoded secrets, passwords, or API keys.Verify secrets are loaded from environment, not source code.
## Step 4 — Generate reportOutput a prioritized list: CRITICAL / HIGH / MEDIUM / LOW.Include file:line for each finding and a one-line fix suggestion.Example: Claude-Style Skill With Python Helper
Section titled “Example: Claude-Style Skill With Python Helper”~/.edgecrab/skills/release-qa/├── SKILL.md├── scripts/│ └── check_release.py└── references/ └── runbook.md---name: release-qawhen_to_use: Use when validating a release candidate before publishing.read_files: - references/runbook.mdarguments: - versionargument-hint: <version>allowed-tools: - read_file - run_terminal---
Run `${CLAUDE_SKILL_DIR}/scripts/check_release.py ${CLAUDE_SESSION_ID}` with the terminal tool.Then follow the runbook.Save as ~/.edgecrab/skills/security-audit/SKILL.md and invoke with:
edgecrab -S security-audit "audit crates/api/"Pro Tips
Section titled “Pro Tips”Keep skills focused. A skill that does one thing well (e.g., “write migration tests”) is more reliable than a monolithic “do everything” skill. The agent follows procedures better when they’re specific.
Use skills for consistent team workflows. Put shared skills in a git repo, then point everyone’s config to it via skills.external_dirs. Now every developer follows the same PR-review checklist.
Layer skills. You can load multiple skills in one session:
edgecrab -S code-review,security-audit "review PR #42"The skills are concatenated in the system prompt. Keep their combined length manageable (< 2000 tokens).
Check what’s loaded. Inside a session, run /skills to see which skills are active and their descriptions.
Frequently Asked Questions
Section titled “Frequently Asked Questions”Q: My skill is a .md file, not a directory. Why doesn’t it load?
Skills must be directories containing a SKILL.md file. A bare security-audit.md is not recognized. Rename it:
mkdir -p ~/.edgecrab/skills/security-auditmv security-audit.md ~/.edgecrab/skills/security-audit/SKILL.mdQ: How long can a skill be?
There’s no hard limit, but skills longer than ~2000 tokens may push other context out of the window. Keep the core procedure concise; reference external files using [see](./checklist.md) inside the skill directory.
Q: Can skills call other skills?
Not directly, but you can reference another skill’s content by putting it in the same directory:
my-complex-skill/ SKILL.md # main instructions (can say "follow checklist.md") checklist.md # sub-procedure loaded as additional contextQ: Can I share skills between EdgeCrab and Hermes Agent?
Yes. Skills are compatible across all agentskills.io agents. Point skills.external_dirs at your Hermes skills directory:
skills: external_dirs: - ~/.hermes/skillsQ: How do I know if a skill from agentskills.io is safe?
Skills are instruction bundles, and they may reference bundled helper files or scripts. They do not become plugins automatically, but they can still tell the agent to run commands through normal tools. Review both SKILL.md and any bundled helper files before installing. The EdgeCrab hub shows source links and contributor info.
Q: When should I use a plugin instead of a skill?
Use a plain skill when all you need is prompt guidance from ~/.edgecrab/skills/. Use a plugin when you also need enable/disable policy, subprocess tools, or Rhai script behavior under ~/.edgecrab/plugins/.
See Also
Section titled “See Also”- Building Your First Skill — Step-by-step guide with testing
- Context Files — How SOUL.md and AGENTS.md interact with skills
- Memory — Persistent facts versus procedural skills
- Plugin System — Skill plugins, tool-server plugins, and script plugins
- CLI Commands —
edgecrab skillssubcommand