Skip to main content
In addition to the built-in Skills, you can create custom Skills to extend Kubiya’s capabilities with organization-specific integrations, tools, or workflows.

Overview

Custom Skills are loaded from the .kubiya/skills/ directory in your home directory or project workspace. They allow you to:
  • Integrate with proprietary APIs and services
  • Create organization-specific tools
  • Package reusable workflow patterns
  • Extend Kubiya without modifying core code

Directory Structure

Create custom Skills in one of these locations (in order of priority):
  1. Project Workspace: .kubiya/skills/ (in your project directory)
  2. User Global: ~/.kubiya/skills/ (in your home directory)
Example Directory Layout:

Creating a Custom Skill

Step 1: Create the Skill Directory

Step 2: Create the Skill Manifest (skill.yaml)

The skill.yaml file defines your Skill’s metadata, configuration schema, and dependencies. Minimal Example:
Full Example with All Options:

Step 3: Create the Python Implementation

Create a Python file (e.g., agno_impl.py) that implements your Skill’s functionality. Example Implementation:

Step 4: (Optional) Add Dependencies

If your Skill requires additional Python packages, create a requirements.txt:

Environment Variables

Custom Skills can require environment variables for API keys, credentials, or configuration:
  1. Define in skill.yaml:
  1. Set on the Worker:
  1. Access in Python:

Skill Discovery and Loading

Important: Custom Skills AvailabilityCustom skills must be available in both locations:
  1. Worker Process: The worker that runs the agent/team must have access to the skill files in .kubiya/skills/
  2. Control Plane API Server: The control plane must also have the skill files to register and manage the skill
Ensure you deploy your custom skills to both the worker nodes and the control plane server, or use a shared filesystem/volume mounted at both locations.
Custom Skills are automatically discovered when:
  1. Control Plane starts: Skills in .kubiya/skills/ are scanned at startup
  2. Worker initializes: Skills are loaded when a worker starts
  3. Dynamic loading: Controlled by KUBIYA_ENABLE_DYNAMIC_SKILLS environment variable (default: true)
Configuration Environment Variables:

Using Custom Skills

Once loaded, custom Skills appear in the Skills dashboard and CLI alongside built-in Skills: UI:
  1. Navigate to Skills > New Skill
  2. Select your custom Skill type from the dropdown
  3. Configure the Skill instance
  4. Assign to agents, teams, or environments
CLI:

Custom Skill Best Practices

  1. Schema Validation: Define comprehensive JSON Schema in your skill.yaml to validate configuration
  2. Error Handling: Implement robust error handling in your Python code
  3. Documentation: Include detailed descriptions in your skill.yaml metadata
  4. Versioning: Use semantic versioning for your custom Skills
  5. Dependencies: Keep pythonDependencies minimal and specify version ranges
  6. Security: Never hardcode credentials; use environment variables
  7. Testing: Test your Skills locally before deploying to production workers

Troubleshooting Custom Skills

Skill not appearing in dashboard:
  • Verify skill.yaml is valid YAML format
  • Check that apiVersion and kind are correct
  • Ensure file is in .kubiya/skills/<skill-name>/skill.yaml
  • Check worker logs for validation errors
Skill fails to load:
  • Verify Python module name matches implementations.agno.module
  • Check that class name matches implementations.agno.class
  • Ensure all pythonDependencies are installed on the worker
  • Verify environment variables are set if marked as required
Skill works locally but not on worker:
  • Check that worker has same Python version
  • Verify all dependencies are installed on worker
  • Ensure environment variables are set on worker
  • Check worker logs for import or runtime errors

Example: Complete Custom Skill

Here’s a complete example of a custom Skill that integrates with an external API: ~/.kubiya/skills/github-helper/skill.yaml:
~/.kubiya/skills/github-helper/github_impl.py:
Usage:
Now your agents can use this custom Skill to interact with GitHub repositories!

Built-in Skills

See all 10 built-in Skills before creating custom ones

CLI Reference

Command-line tools for managing custom Skills

Examples

Real-world custom Skill examples

Overview

Back to Skills overview