Skip to content

Skills & Tools

A Skill is a composable bundle of tools that provides capabilities to Nodes. Skills group related tools with shared configuration requirements.

FieldTypeRequiredDescription
idstringREQUIREDUnique identifier. Referenced by node skills arrays. MUST be non-empty.
namestringREQUIREDHuman-readable name.
descriptionstringREQUIREDWhat this skill provides.
categorySkillCategoryREQUIREDFunctional category.
configRecord<string, ConfigField>REQUIREDConfiguration fields required by this skill.
toolsTool[]REQUIREDTools this skill provides to nodes.

The category field classifies a skill’s function. Valid values:

CategoryDescription
gitSource control operations (commits, PRs, code search).
observabilityError tracking, logs, metrics, incident management.
tasksIssue tracking and project management.
notificationMessaging and alerting.
generalCatch-all for skills that don’t fit other categories.

Each entry in a skill’s config map declares a configuration value the skill needs.

FieldTypeRequiredDefaultDescription
descriptionstringREQUIREDHuman-readable description of this config field.
requiredbooleanOPTIONALfalseWhether this field must be provided for the skill to function.
envstringOPTIONALDefault environment variable name to read this value from.

A conforming executor MUST resolve config values using the following precedence:

  1. Explicit overrides — values passed directly to the executor at invocation.
  2. Environment variables — if an env field is set, read from process.env[env].

If a required config field cannot be resolved from either source, the skill MUST be treated as unavailable. The executor SHOULD NOT fail the workflow — the skill is silently excluded, and any node that listed it will execute without that skill’s tools.

FieldTypeRequiredDescription
namestringREQUIREDTool name. MUST be unique within the skill.
descriptionstringREQUIREDWhat this tool does. Provided to the AI model for tool selection.
input_schemaJSON Schema objectREQUIREDJSON Schema defining the tool’s input parameters.
handlerfunctionREQUIRED (runtime)Implementation-defined. Receives validated input and a context object. Not serialized.

A conforming executor:

  • MUST validate tool inputs against input_schema before invoking the handler.
  • MUST provide a ToolContext to the handler containing resolved config values and a logger.
  • Tool outputs are opaque JSON values. They are included in the execution trace and available to the AI model within the current node’s execution.
  • If a tool handler throws, the error is surfaced to the AI model as a tool result. The executor MUST NOT crash.

The specification defines the following well-known skill IDs. Implementations SHOULD support these when the required config is available. Implementations MAY support additional skills beyond this registry.

IDCategoryRequired ConfigDescription
githubgitGITHUB_TOKENGitHub code search, issues, pull requests.
lineartasksLINEAR_API_KEYLinear issue tracking.
slacknotificationSLACK_WEBHOOK_URLSlack messaging.
sentryobservabilitySENTRY_AUTH_TOKENSentry error tracking.
datadogobservabilityDD_API_KEY, DD_APP_KEYDatadog logs and metrics.
betterstackobservabilityBETTERSTACK_API_TOKENBetterStack incident management.
notificationnotificationvariesMulti-channel notifications.
supabasegeneralSUPABASE_URL, SUPABASE_SERVICE_ROLE_KEYSupabase database operations.
# Skill definition (programmatic, not YAML — shown for illustration)
id: github
name: GitHub
description: Search code, manage issues and pull requests on GitHub.
category: git
config:
GITHUB_TOKEN:
description: GitHub personal access token or installation token.
required: true
env: GITHUB_TOKEN
tools:
- name: search_code
description: Search for code across repositories.
input_schema:
type: object
properties:
query: { type: string }
repo: { type: string }
required: [query]
- name: create_issue
description: Create a new issue in a repository.
input_schema:
type: object
properties:
repo: { type: string }
title: { type: string }
body: { type: string }
required: [repo, title]

The canonical JSON Schema for validating Skill definitions is available at spec.sweny.ai/schemas/skill.json.