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
nameStringUnique skill identifier
descriptionStringHuman-readable description
tool_pathStringBinary name to execute (e.g., nmap)
argsListArguments with interpolation
requires_rootBoolWhether 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.