Skip to main content
Definable ships 9 built-in skills that cover common agent needs. Each provides domain instructions and pre-configured tools.
from definable.skill import Calculator, DateTime, TextProcessing
from definable.skill import FileOperations, HTTPRequests, JSONOperations
from definable.skill import Shell, WebSearch
from definable.skill import MacOS  # macOS control via Desktop Bridge

Calculator

Safe math evaluation via AST parsing. Supports arithmetic, functions (sqrt, log, sin, cos, factorial, etc.), and constants (pi, e).
from definable.skill import Calculator

agent = Agent(model=model, skills=[Calculator()])
agent.run("What is sqrt(144) + 2^8?")
Tools: calculate(expression)

DateTime

Current date/time with timezone support and date difference calculations.
from definable.skill import DateTime

agent = Agent(model=model, skills=[DateTime()])
agent.run("What time is it in UTC+5:30?")
Tools: get_current_time(timezone_name=), date_difference(date1, date2)

TextProcessing

Regex search/replace, text statistics, transformations, and pattern extraction (emails, URLs, phone numbers, etc.).
from definable.skill import TextProcessing

agent = Agent(model=model, skills=[TextProcessing()])
agent.run("Extract all email addresses from this text: ...")
Tools: regex_search, regex_replace, text_stats, text_transform, extract_patterns

FileOperations

Sandboxed file reading, writing, listing, and appending.
from definable.skill import FileOperations

agent = Agent(
  model=model,
  skills=[FileOperations(base_dir="./data", allow_write=False)],
)
agent.run("List all files in the data directory")
base_dir
str
default:"."
Root directory. All paths are sandboxed to this location.
allow_write
bool
default:true
Enable write_file and append_to_file tools. Set to False for read-only access.
max_read_size
int
default:1048576
Maximum file read size in bytes (default: 1 MB).
Tools: read_file, list_files, write_file (if writable), append_to_file (if writable)

HTTPRequests

Make HTTP calls with optional domain restrictions.
from definable.skill import HTTPRequests

agent = Agent(
  model=model,
  skills=[HTTPRequests(allowed_domains={"api.example.com"})],
)
agent.run("GET https://api.example.com/users")
allowed_domains
Set[str]
Domain allowlist. Empty or None allows all domains.
timeout
int
default:30
Request timeout in seconds.
default_headers
Dict[str, str]
Headers included in every request.
Tools: http_get, http_post, http_put, http_patch, http_delete

JSONOperations

Parse, query (dot notation + wildcards), transform, and diff JSON data.
from definable.skill import JSONOperations

agent = Agent(model=model, skills=[JSONOperations()])
agent.run('Extract the name from: {"users": [{"name": "Alice"}]}')
Tools: parse_json, query_json, transform_json, compare_json Query paths support dot notation (users.0.name), array indices, and wildcards (items.*.id).

Shell

Execute shell commands with safety controls.
from definable.skill import Shell

agent = Agent(
  model=model,
  skills=[Shell(allowed_commands={"ls", "cat", "grep", "wc"})],
)
agent.run("Count the lines in all Python files")
allowed_commands
Set[str]
If set, only these base commands are allowed. Overrides blocked list.
blocked_commands
Set[str]
Commands blocked by default: rm, sudo, kill, chmod, shutdown, and other destructive operations.
timeout
int
default:30
Command timeout in seconds.
working_dir
str
Working directory for command execution.
Tools: run_command

WebSearch

Web search (DuckDuckGo by default) and URL content fetching.
from definable.skill import WebSearch

agent = Agent(model=model, skills=[WebSearch()])
agent.run("Search for the latest Python release notes")
max_results
int
default:5
Maximum search results to return.
search_fn
Callable
Custom search function. Signature: (query: str, max_results: int) -> str. Default uses DuckDuckGo.
enable_fetch
bool
default:true
Enable the fetch_url tool for reading web page content.
Tools: search_web, fetch_url (if enabled)
The default DuckDuckGo provider requires duckduckgo-search, which is lazy-imported at first use.

MacOS

Control a Mac like a human: screen capture, mouse/keyboard input, app management, file operations, AppleScript, and system info. Requires the Definable Desktop Bridge to be running.
from definable.skill import MacOS

agent = Agent(
  model=model,
  skills=[MacOS(allowed_apps={"Safari", "TextEdit"})],
)
agent.run("Open Safari and navigate to apple.com")
See the MacOS skill guide for setup, permissions, and the full tool reference. Tools (30 default): screenshot, read_screen, find_text_on_screen, click, type_text, press_key, scroll, drag, open_app, quit_app, activate_app, list_running_apps, open_url, list_windows, focus_window, find_element, get_ui_tree, click_element, set_element_value, read_file, list_files, write_file, move_file, get_clipboard, set_clipboard, run_applescript, system_info, get_battery, set_volume, send_notification Optional dep: pip install 'definable[desktop]' (adds websockets for DesktopInterface)

Summary

SkillToolsOptional Deps
Calculatorcalculate
DateTimeget_current_time, date_difference
TextProcessingregex_search, regex_replace, text_stats, text_transform, extract_patterns
FileOperationsread_file, list_files, write_file, append_to_file
HTTPRequestshttp_get, http_post, http_put, http_patch, http_delete
JSONOperationsparse_json, query_json, transform_json, compare_json
Shellrun_command
WebSearchsearch_web, fetch_urlduckduckgo-search
MacOS30 tools (screen, input, apps, files, system, AppleScript)websockets (optional, for DesktopInterface)