Skip to content

Skills

UGENT has full compatibility with Claude Code skill files (.claude/skills/ convention). Skills are Markdown files with YAML frontmatter that define reusable agent behaviors.

Enabling Skills

toml
[skills]
enabled = true
root_dir = "~/.ugent/skills"
max_body_bytes = 40000
max_listed = 200

Skill File Format

Each skill is a Markdown file with frontmatter:

markdown
---
name: deep-research
description: Conducts comprehensive web research with multiple search rounds
argument-hint: "[topic]"
allowed-tools: web_search, web_fetch, delegate_task
agent: researcher
model: opus
effort: high
---

# Deep Research Skill

When invoked, conduct a multi-round research workflow:

1. Search for the topic using multiple search engines
2. Read and summarize the top results
3. Cross-reference claims across sources
4. Produce a well-cited report

Supported Frontmatter Fields

All 19 Agent Skills standard fields are supported:

FieldDescription
nameSkill name (lowercase, hyphens, max 64 chars)
descriptionWhen to use this skill
argumentsExpected arguments
argument-hintUsage hint shown to the model
allowed-toolsTools the skill may use (space-separated or array)
disallowed-toolsTools the skill must not use
agentPreferred agent role
modelPreferred model name
effortEffort level: low, medium, high, max
contextfork signals delegation to a sub-agent
shellShell execution settings
hooksLifecycle event hooks
pathsGlob patterns for context-sensitive activation
disable-model-invocationHide from agent listing
user-invocableShow in user menu
general-purposeGeneral purpose flag
licenseLicense info
compatibilityCompatibility notes
metadataCustom metadata

Skill Body Processing

When a skill is loaded, the body passes through a 3-phase pipeline:

1. Variable Substitution

Replaces variables in the skill body:

  • ${UGENT_SKILL_DIR} — path to the skill's directory
  • ${UGENT_SESSION_ID} — current session ID
  • $ARGUMENTS — all arguments passed to the skill
  • $1, $2 — positional arguments
  • $named_arg — named arguments

2. Shell Command Injection

Inline shell commands within skill bodies:

Current git branch: !`git branch --show-current`

System info:
```!
uname -a
rustc --version

Controlled by `shell_execution_enabled` in skills settings. Commands run in the skill directory with configurable timeout and output cap. Single-pass: output is never re-scanned.

### 3. Skills Firewall

Scans skill bodies for authority-grab attempts and injection patterns. When `block_malicious_skills` is enabled in `firewall.toml`, skills with Critical findings are refused at load time. Otherwise, suspicious content is wrapped in untrusted-boundary markers.

## Loading Skills

Skills are loaded via `load_skill()` or the `/skill` command:

/skill deep-research


Or from the agent's system prompt — the agent can invoke skills autonomously when the description matches the user's request.

## Visibility Control

```yaml
disable-model-invocation: true   # Hide from agent's skill listing
user-invocable false             # Hide from user menu

Tool Name Mapping

Claude Code tool names are automatically mapped to UGENT equivalents:

Claude CodeUGENT
Bashbash
Readread_file
Writewrite_file
Globfind_files
Grepsearch_files

Model names (sonnet, opus, haiku) are mapped to configured provider targets. Effort strings (low through max) are mapped directly.

Paths Activation

yaml
paths:
  - "src/**/*.rs"
  - "Cargo.toml"

When set, the skill is only active when the workspace matches the glob patterns. Useful for project-specific skills.

Context Fork

yaml
context: fork

Signals that the skill should execute in a delegated sub-agent context via delegate_task rather than direct injection into the current conversation.

Disable Flag

Skip loading all skills for a session:

bash
ugent --disable-skills

No skill index prompt is injected into the system prompt.

Skill Overrides

Per-skill enable/disable without removing files:

toml
[skills.skill_overrides]
"deep-research" = { enabled = true, force_body = false }
"deprecated-skill" = { enabled = false }

Released under the Private Beta License.