Files
cleveragents-core/docs/schema/skill.schema.yaml
T
HAL9000 f808abff86 chore(ci): fix pre-commit hook failures
Fix JSON syntax errors in .devcontainer/devcontainer.json (removed
invalid JS-style // comments) and .devcontainer/opencode.json (removed
90+ trailing commas). Apply auto-fixes for end-of-file and trailing
whitespace issues across 100+ files. Fix SIM105 ruff violations in
benchmarks/core_circuit_breaker_bench.py (use contextlib.suppress).

Note: The security fix from issue #7478 (validate_path startswith bypass)
was already delivered to master in commit e18ac5f2. This PR as currently
structured is non-atomic (35 commits across 10+ issues) and needs
significant restructure before merge. This commit only addresses the
CI/pre-commit failures.

ISSUES CLOSED: #7478
2026-06-14 09:51:14 -04:00

245 lines
8.2 KiB
YAML

# ============================================================================
# CleverAgents Skill Configuration Schema
# ============================================================================
#
# Formal YAML schema definition for skill configuration files.
# Skills are reusable, namespaced collections of tools registered via:
# agents skill add --config <file>
#
# This schema is based on the formal JSON Schema defined in
# docs/specification.md (Section "Skill Configuration Files → JSON Schema",
# lines 15157-15362).
#
# Schema Version: 1
# ============================================================================
schema_version: "1"
# ----------------------------------------------------------------------------
# Top-Level Fields
# ----------------------------------------------------------------------------
fields:
# ─── Identity ─────────────────────────────────────────────────
name:
type: string
required: true
pattern: "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$"
description: >
Fully qualified skill name in <namespace>/<name> format.
Examples: local/file-reader, myorg/devops-toolkit
description:
type: string
required: false
description: >
Human-readable description of what this skill provides.
# ─── Tool References ─────────────────────────────────────────
tools:
type: array
required: false
description: >
References to named tools from the Tool Registry.
items:
type: object
required_fields: [name]
additional_properties: false
fields:
name:
type: string
required: true
pattern: "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$"
description: "Fully qualified name of a tool registered in the Tool Registry."
description:
type: string
required: false
description: "Override the tool's registered description within this skill context."
writes:
type: boolean
required: false
description: "Override the tool's writes capability flag."
checkpointable:
type: boolean
required: false
description: "Override the tool's checkpointable capability flag."
# ─── Inline (Anonymous) Tools ────────────────────────────────
inline_tools:
type: array
required: false
description: >
Anonymous tool definitions that exist only within this skill.
Not registered in the Tool Registry.
items:
type: object
required_fields: [name, source, code]
additional_properties: false
fields:
name:
type: string
required: true
description: "Tool name, unique within this skill."
description:
type: string
required: false
description: "Human-readable description of the tool's purpose."
source:
type: string
required: true
const: custom
description: "Source type. Always 'custom' for inline tools."
code:
type: string
required: true
description: >
Python code defining the tool's behavior.
Must contain a run(input_data) function.
input_schema:
type: object
required: false
description: "JSON Schema describing the tool's input parameters."
writes:
type: boolean
required: false
default: false
description: "Whether this tool performs write operations."
checkpointable:
type: boolean
required: false
default: false
description: "Whether this tool supports checkpointing."
side_effects:
type: array
required: false
default: []
items:
type: string
description: >
Descriptions of side effects (e.g., 'network_call', 'schema_mutation').
# ─── Included Skills ─────────────────────────────────────────
includes:
type: array
required: false
description: >
Other skills whose tools are merged into this skill.
items:
type: object
required_fields: [name]
additional_properties: false
fields:
name:
type: string
required: true
pattern: "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$"
description: "Fully qualified skill name to include."
description:
type: string
required: false
description: "Override the included skill's description."
# ─── MCP Server Specifications ───────────────────────────────
mcp_servers:
type: array
required: false
description: >
MCP server specifications for exposing remote tools.
items:
type: object
required_fields: [name, transport]
additional_properties: false
fields:
name:
type: string
required: true
description: "Identifier for the MCP server."
transport:
type: string
required: true
enum: [stdio, sse, streamable-http]
description: "Transport protocol."
command:
type: string
required: false
description: "Command to start the server (required for stdio transport)."
args:
type: array
required: false
items:
type: string
description: "Command-line arguments for the server command."
env:
type: object
required: false
additional_properties:
type: string
description: "Environment variables to set when starting the server."
url:
type: string
required: false
format: uri
description: "Server URL (required for sse and streamable-http transports)."
headers:
type: object
required: false
additional_properties:
type: string
description: "HTTP headers for remote server connections."
tool_filter:
type: object
required: false
additional_properties: false
fields:
include:
type: array
required: false
items:
type: string
description: "Whitelist of tool names to expose."
exclude:
type: array
required: false
items:
type: string
description: "Blacklist of tool names to hide."
# ─── Agent Skills Standard Folders ───────────────────────────
agent_skill_folders:
type: array
required: false
description: >
References to Agent Skills Standard (SKILL.md-based) tool bundles.
items:
type: object
required_fields: [path]
additional_properties: false
fields:
path:
type: string
required: true
description: "Path to the folder containing SKILL.md."
name:
type: string
required: false
description: "Override the skill bundle name."
# ----------------------------------------------------------------------------
# Constraints
# ----------------------------------------------------------------------------
required: [name]
additional_properties: false
# ----------------------------------------------------------------------------
# Key Normalization
# ----------------------------------------------------------------------------
# The schema loader accepts camelCase keys and normalizes them to snake_case:
# inlineTools -> inline_tools
# mcpServers -> mcp_servers
# agentSkillFolders -> agent_skill_folders
# inputSchema -> input_schema
# sideEffects -> side_effects
# toolFilter -> tool_filter
# Legacy camelCase keys emit a warning but are accepted.