Skip to content

Skill System Overview ​

Dalang's skill system is the core extensibility mechanism. Skills are Markdown files with YAML frontmatter that define security tools and their AI context.

How Skills Work ​

skills/nmap_scanner.md
        │
        ├── YAML Frontmatter → Parsed by Rust (tool registration)
        │   ├── name, description
        │   ├── tool_path (binary to execute)
        │   └── args (command arguments with {{target}} interpolation)
        │
        └── Markdown Body → Sent to LLM as system prompt
            ├── # Role (AI persona)
            ├── # Task (what to do)
            └── # Constraints (safety boundaries)

Skill File Structure ​

markdown
---
name: skill_name
description: What this skill does
tool_path: binary_name
args: ["-flag", "{{target}}"]
requires_root: false
---

# Role

You are a [persona description]...

# Task

[What the AI should do]...

# Constraints

[Safety boundaries and limitations]...

Frontmatter Fields ​

FieldTypeRequiredDescription
nameString✅Unique skill identifier
descriptionString✅Human-readable description
tool_pathString❌Binary name to execute (e.g., nmap)
argsList❌Arguments with interpolation
requires_rootBool❌Whether root/sudo is needed

Target Interpolation ​

Use in args to inject the scan target:

yaml
args: ["-sV", "-T4", "{{target}}"]
# Becomes: nmap -sV -T4 192.168.1.1

Skills Without tool_path ​

Skills without a tool_path (like web-audit) use browser tools instead. The AI calls browser-navigate, browser-extract-dom, and browser-evaluate-js based on the skill's task description.

Released under the MIT License.