Suzent Skills Guide
Sovereign mind. Skills are knowledge you author and own. They are Markdown in your own directory, not a capability a platform grants you and can revoke — which is why they survive
Sovereign mind. Skills are knowledge you author and own. They are Markdown in your own directory, not a capability a platform grants you and can revoke — which is why they survive a change of model or provider intact. See what makes an agent sovereign.
This guide covers the skills system in Suzent and how to use and create skills to extend agent capabilities.
Overview
Skills are specialized knowledge modules that extend the capabilities of AI agents beyond what tools provide. While tools are executable functions (like web search or file operations), skills are contextual knowledge packages that teach the agent how to work in specific domains or with specific systems.
Tools vs Skills
| Aspect | Tools | Skills |
|---|---|---|
| Purpose | Execute actions | Provide knowledge & context |
| Type | Python code | Markdown documentation |
| Examples | WebSearchTool, RunCommandTool | notebook, suzent-devices |
| When Used | Agent calls them to perform tasks | Agent loads them to gain expertise |
Available Skills
Suzent includes focused built-in skills for domain workflows. For example:
notebook
Enables agents to maintain an Obsidian-compatible notebook and follow its vault schema.
Key Information:
- Vault location:
/mnt/notebookin sandbox mode - Supports CommonMark, GitHub Flavored Markdown, LaTeX math, wikilinks, and callouts
- Loads the vault's
schema.mdbefore making notebook changes
suzent-devices
Operates phones, laptops, headless servers, and peer agents connected to Suzent.
Key Information:
- Discovers connected devices and advertised capabilities
- Invokes device commands through the
suzent nodesCLI or REST API - Triggers a linked peer's Suzent agent when conversational reasoning is needed
Skill Structure
Each skill is a directory containing a SKILL.md file and optional resource folders.
Directory Layout
~/.suzent/skills/
└── my-skill/
├── SKILL.md # Required: Main skill definition
├── scripts/ # Optional: Helper scripts
├── references/ # Optional: Reference documents
└── assets/ # Optional: Images, data filesBuilt-in, external, and repository skills remain in their canonical source
directories. Suzent discovers those directories directly instead of copying
them below ~/.suzent/skills/.
SKILL.md Format
Skills use YAML frontmatter followed by markdown content:
---
name: my-skill
description: Brief description of what this skill provides
---
# Skill Content
Your skill documentation goes here. This can include:
- Domain-specific knowledge
- Best practices
- Code examples
- API references
- Workflow guidesRequired Fields:
name: Unique identifier (lowercase, hyphens allowed)description: Brief description shown in skill listings
Body Content:
- Markdown documentation
- Can include code blocks, tables, lists
- Should be clear and actionable for the agent
Using Skills
Enabling Skills
Skills are managed via ~/.suzent/config/skills.json:
{
"enabled": [
"notebook",
"suzent-devices"
]
}You can also toggle skills through the UI or API.
How Agents Load Skills
When enabled, skills are available to agents through the SkillTool:
- Agent sees available skills in its context
- When a task matches a skill's description, agent loads it
- Skill content is injected into agent's context
- Agent gains specialized knowledge for the task
Repository Instructions and Project Context
For each chat, Suzent also loads AGENTS.md and CLAUDE.md from the effective
working directory and every ancestor up to the repository root. Instructions
are applied ancestor-first, so the file closest to the working directory has
final precedence. Identical files are deduplicated.
These repository instructions are separate from the project's durable
context.md core memory. The chat right sidebar's Context tab shows both:
non-empty project context remains editable, while effective repository
instructions are shown as collapsible read-only previews with their host paths.
Skill Paths in Sandbox
Suzent reads skills directly from their source directories; it does not copy
them into a merged library. If a skill source is already below the working
directory or another configured volume, it reuses that mount. For example, a
repository skill may be available as /workspace/.codex/skills/my-skill/ or
/mnt/my-repo/skills/my-skill/. Uncovered sources are mounted read-only below
/mnt/skills/, and the Skills panel shows each skill's effective path.
Creating Custom Skills
Step 1: Create Skill Directory
Create a new directory in ~/.suzent/skills/:
mkdir -p ~/.suzent/skills/my-custom-skillStep 2: Create SKILL.md
Create ~/.suzent/skills/my-custom-skill/SKILL.md:
---
name: my-custom-skill
description: Helps with custom domain tasks
---
# My Custom Skill
## Overview
This skill provides expertise in [your domain].
## Key Concepts
- Concept 1: Explanation
- Concept 2: Explanation
## Common Tasks
### Task 1: Do Something
```bash
# Example command
command --option value
```
### Task 2: Do Something Else
Steps to accomplish this task...
## Best Practices
1. Always do X before Y
2. Never do Z without checking A
3. Use B pattern for C scenarios
## Resources
- [Documentation](https://example.com)
- [API Reference](https://example.com/api)Step 3: Add Resources (Optional)
Add helper scripts, references, or assets:
# Add a helper script
mkdir ~/.suzent/skills/my-custom-skill/scripts
echo "#!/bin/bash\necho 'Helper script'" > ~/.suzent/skills/my-custom-skill/scripts/helper.sh
# Add reference documentation
mkdir ~/.suzent/skills/my-custom-skill/references
cp ~/docs/api-reference.md ~/.suzent/skills/my-custom-skill/references/Step 4: Enable the Skill
Add your skill to ~/.suzent/config/skills.json:
{
"enabled": [
"notebook",
"suzent-devices",
"my-custom-skill"
]
}Step 5: Test the Skill
- Restart Suzent to load the new skill
- Ask the agent to perform a task related to your skill
- Verify the agent loads and uses the skill correctly
Skill Best Practices
For Skill Authors
- Be Specific - Provide concrete, actionable information
- Use Examples - Include code snippets and command examples
- Stay Focused - One skill should cover one domain/system
- Keep Updated - Maintain skills as systems evolve
- Document Resources - List all available scripts and references
Content Guidelines
- Clear Structure - Use headers to organize content
- Actionable - Focus on "how to" rather than "what is"
- Concise - Agents have context limits; be efficient
- Code Examples - Show, don't just tell
- Error Handling - Include common issues and solutions
Naming Conventions
- Skill Names - Use lowercase with hyphens:
my-skill - Descriptions - Keep under 100 characters
- File Names - Always use
SKILL.md(uppercase)
Skill Management
Configuration Location
- Built-in Skills Directory:
./skills/in the Suzent installation - User Skills Directory:
~/.suzent/skills/ - External Skills Directories: paths configured through
SKILLS_DIR - Repository Skills:
skills/and.claude/skills/,.agents/skills/,.codex/skills/, or.grok/skills/in the active repository/working directory - Config File:
~/.suzent/config/skills.json - Sandbox Paths: existing project mounts when possible; otherwise a
read-only path below
/mnt/skills/
Environment Variables
# Advanced extra skill source directories (separate multiple paths with the OS path separator)
SKILLS_DIR=/path/to/custom/skillsReloading Skills
Skills are loaded at startup. To reload:
- Modify
~/.suzent/config/skills.json - Restart the Suzent server
Skill Discovery
The SkillManager automatically discovers skills by:
- Reading built-in, user, and optional
SKILLS_DIRsources directly - Discovering supported skill directories in the active home, repository, and working directory
- Deduplicating identical physical source directories
- Looking for
SKILL.mdfiles and parsing their YAML frontmatter - Reusing existing sandbox mounts or adding read-only mounts for uncovered sources
Older installations that used ~/.suzent/skills/user/ are migrated into the
flat user directory when there is no name collision. Existing
official/ and external/ mirror directories are ignored and are not updated.
Troubleshooting
Skill Not Loading
Problem: Skill doesn't appear in available skills
Solutions:
- Check
SKILL.mdhas valid YAML frontmatter - Verify
nameanddescriptionfields are present - Check file is named exactly
SKILL.md(case-sensitive) - Review server logs for parsing errors
- Ensure skill is in the correct directory
Skill Not Enabled
Problem: Skill exists but agent can't use it
Solutions:
- Check
~/.suzent/config/skills.jsonincludes the skill name - Verify skill name matches exactly (case-sensitive)
- Restart Suzent server after config changes
Invalid SKILL.md Format
Problem: "Invalid SKILL.md format" error
Solutions:
- Ensure YAML frontmatter is enclosed in
---markers - Check YAML syntax (no tabs, proper indentation)
- Verify
nameanddescriptionare strings - Remove any special characters from YAML values
Resources Not Found
Problem: Agent can't access skill resources
Solutions:
- Verify resource folders exist:
scripts/,references/,assets/ - Check file permissions
- Ensure files are in the correct skill directory
- Use the effective path listed for the skill; its resources remain beside
SKILL.md
Advanced Topics
Multi-File Skills
For complex skills, organize content across multiple files:
skills/complex-skill/
├── SKILL.md # Main entry point
├── references/
│ ├── api-guide.md # Detailed API documentation
│ ├── examples.md # Extended examples
│ └── troubleshooting.md
└── scripts/
├── setup.sh
└── validate.pyReference additional files in SKILL.md:
## Additional Resources
For detailed API documentation, see `references/api-guide.md`.
For troubleshooting, see `references/troubleshooting.md`.Dynamic Skills
Skills can reference environment-specific information:
## Configuration
The system is configured with:
- Database: Check `/mnt/config/database.yml`
- API keys: Use the configured provider runtime; do not read secret files directlySkill Dependencies
If a skill requires specific tools or other skills:
## Prerequisites
This skill requires:
- `RunCommandTool` enabled (for running scripts)
- Python 3.8+ installed in sandbox