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):- Project Workspace:
.kubiya/skills/(in your project directory) - User Global:
~/.kubiya/skills/(in your home directory)
Creating a Custom Skill
Step 1: Create the Skill Directory
Step 2: Create the Skill Manifest (skill.yaml)
Theskill.yaml file defines your Skill’s metadata, configuration schema, and dependencies.
Minimal Example:
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 arequirements.txt:
Environment Variables
Custom Skills can require environment variables for API keys, credentials, or configuration:- Define in skill.yaml:
- Set on the Worker:
- Access in Python:
Skill Discovery and Loading
Custom Skills are automatically discovered when:- Control Plane starts: Skills in
.kubiya/skills/are scanned at startup - Worker initializes: Skills are loaded when a worker starts
- Dynamic loading: Controlled by
KUBIYA_ENABLE_DYNAMIC_SKILLSenvironment variable (default: true)
Using Custom Skills
Once loaded, custom Skills appear in the Skills dashboard and CLI alongside built-in Skills: UI:- Navigate to Skills > New Skill
- Select your custom Skill type from the dropdown
- Configure the Skill instance
- Assign to agents, teams, or environments
Custom Skill Best Practices
- Schema Validation: Define comprehensive JSON Schema in your
skill.yamlto validate configuration - Error Handling: Implement robust error handling in your Python code
- Documentation: Include detailed descriptions in your
skill.yamlmetadata - Versioning: Use semantic versioning for your custom Skills
- Dependencies: Keep
pythonDependenciesminimal and specify version ranges - Security: Never hardcode credentials; use environment variables
- Testing: Test your Skills locally before deploying to production workers
Troubleshooting Custom Skills
Skill not appearing in dashboard:- Verify
skill.yamlis valid YAML format - Check that
apiVersionandkindare correct - Ensure file is in
.kubiya/skills/<skill-name>/skill.yaml - Check worker logs for validation errors
- Verify Python module name matches
implementations.agno.module - Check that class name matches
implementations.agno.class - Ensure all
pythonDependenciesare installed on the worker - Verify environment variables are set if marked as required
- 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