Skip to main content
OrcBot’s skills system is the interface between the LLM’s reasoning and the outside world. Skills are executable functions that the agent can call to perform actions: search the web, send messages, run commands, manipulate files, and more.

Architecture

Skill Types

1. Core Skills

Purpose: Built-in tools registered at agent startup. Implementation: Agent.ts (lines 908-2500+) — registerInternalSkills() Registration:
Categories: Full list: See SKILLS.md

2. Dynamic Plugins

Purpose: Hot-reloadable TypeScript/JavaScript files for custom skills. Location: ~/.orcbot/plugins/*.ts or ./plugins/*.ts Format:
Loading:
Hot Reload: OrcBot clears the require cache before each load, so you can edit plugins without restarting:
Safety:

3. Agent Skills (SKILL.md)

Purpose: Declarative skill packages following the agentskills.io spec. Location: ~/.orcbot/plugins/skills/*/SKILL.md Format:

Error Handling

  • If the page is protected by CAPTCHA, inform the user
  • If selectors fail, try alternative patterns (XPath, data attributes)
  • If rate-limited, suggest adding delays between requests
Level 2: Full instructions (activated on-demand)
Installation:
Skill matching (auto-activation):

Skill Interface

Metadata Flags

isResearch:
  • Higher tool repetition budget (10 vs. 5)
  • Used for: web_search, browser_navigate, http_fetch
  • Prevents premature loop detection during research
isSideEffect:
  • Subject to strict deduplication
  • Used for: send_telegram, send_whatsapp, write_file
  • Prevents duplicate messages/writes
isDeep:
  • Resets transparency nudge timer
  • Counts as “substantive progress”
  • Used for: web_search, browser_navigate, run_command, deep_reason
  • Tells termination review: “real work was done”
isDangerous:
  • Requires explicit confirmation in autonomy mode
  • Used for: run_command, delete_file, install_npm_dependency
  • Blocks execution if user approval not granted
isElevated:
  • Requires admin privileges
  • Filtered out for non-admin tasks
  • Used for: run_command, write_file, manage_config, browser_navigate
isParallelSafe:
  • Can be executed in parallel with other parallel-safe tools
  • Used for: read_file, http_fetch (read-only operations)
  • Enables concurrent execution in multi-agent scenarios

Skill Execution Flow

Tool Definitions (Native Tool Calling)

For LLMs that support native function calling (OpenAI, Google), SkillsManager generates JSON schemas:
Passed to LLM:

Skill Context (AgentContext)

All skill handlers receive a context object:

Prompt Injection

Compact mode (after step 1):
Activated skills (after activate_skill called):

Skill Discovery

List all skills:
Inspect skill:

Creating Skills

Option 1: Core Skill (Hardcoded)

Edit Agent.ts and register:

Option 2: Dynamic Plugin

Create ~/.orcbot/plugins/my-skill.ts:
Reload plugins via TUI or restart agent.

Option 3: Agent Skill (SKILL.md)

Create directory structure:
Write SKILL.md:
Restart agent or use:

Option 4: Self-Generated Plugin (create_custom_skill)

Ask the agent:

Self-Repair

When a plugin fails to load (syntax error, missing dependency), OrcBot auto-triggers repair:
The self_repair_skill handler:
  1. Reads the broken plugin file
  2. Analyzes the error (syntax, type, import)
  3. Calls LLM to generate a fix
  4. Writes corrected code
  5. Reloads plugins
  6. Validates the fix

Skill Validation

For Agent Skills (SKILL.md), OrcBot validates against the spec:
Validation rules:
  • Name: lowercase, alphanumeric + hyphens, no consecutive hyphens, 1-64 chars
  • Description: 10-1024 chars
  • Compatibility: 500 chars max
  • Body: < 500 lines (warning only, large skills are valid)

Parallel Execution

Skills marked isParallelSafe: true can run concurrently:
Unsafe for parallel execution:
  • write_file (race conditions)
  • send_telegram (message ordering)
  • run_command (shared stdout)

Configuration

Further Reading