Skills Guide
Skills in Clara encapsulate cognitive domains and automated agent capabilities. Each skill packages intent recognition, prompt engineering templates, safety policies, and tool execution routines.
Skill Directory Structure
Every Clara skill is organized within its own subpackage under clara/skills/:
clara/skills/email_assistant/
├── __init__.py # Public exports (Workflows and helpers)
├── skill.yaml # Declarative metadata, trigger keywords, and tool schemas
├── prompt.md # System prompt templates, persona, and cognitive rules
└── workflows.py # Python workflow coordinator and intent dispatcher
1. Skill Manifest (skill.yaml)
The skill.yaml file declaratively defines how Clara discovers, activates, and provisions tools for a skill:
name: email_assistant
version: "0.1.0"
display_name: "Email Assistant"
description: "AI-powered email management assistant for Gmail."
category: "Productivity"
# Keyword triggers used for fast intent routing
triggers:
- "email"
- "gmail"
- "inbox"
- "send email"
- "draft email"
# External connections required by this skill
connections:
- service: google
name: gmail
required_scopes:
- "https://www.googleapis.com/auth/gmail.readonly"
- "https://www.googleapis.com/auth/gmail.send"
- "https://www.googleapis.com/auth/gmail.modify"
# Callable tools exposed by the skill to LLM function calling
tools:
- name: send_email
description: "Send an email to one or more recipients."
parameters:
to:
type: string
required: true
subject:
type: string
required: true
body:
type: string
required: true
2. Prompt Template (prompt.md)
prompt.md provides domain-specific instructions to guide LLM reasoning:
Persona: Defines Clara’s role and tone (e.g. executive assistant).
The Cognitive CRUD Loop: Directs the model to parse intents, extract parameters, check ambiguity, execute tools, and format output.
Safety Guardrails: Enforces rules like mandatory confirmation for destructive operations or batch actions.
3. Workflow Implementation (workflows.py)
Workflows coordinate between incoming prompts and connection tools.
from typing import Dict, Any, Optional
from clara.connections.registry import registry
class CustomSkillWorkflow:
"""Example custom workflow implementation."""
def __init__(self, access_token: Optional[str] = None):
self.access_token = access_token
def execute(self, user_prompt: str, context: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
# 1. Parse intent and arguments
# 2. Check safety guardrails
# 3. Invoke connection tools
# 4. Return structured response
return {
"status": "success",
"action": "custom_action",
"reply": f"Completed task: {user_prompt}",
"data": {}
}
Creating a New Skill: Step-by-Step
Create a directory
clara/skills/my_skill/.Define
skill.yamlwith your skill’s triggers and tools.Write
prompt.mdcontaining prompt definitions.Implement
workflows.pyinheriting your business logic.Export your workflow in
clara/skills/__init__.py.