Workflows You Don't Code
Reusable agent capabilities with skills and playbooks. Define once, execute anywhere. YAML-driven automation.
On this page
AI agents need reusable capabilities. Without structure, every task starts from scratch—inconsistent outputs, repeated prompts, no quality control. Skills and playbooks give agents consistent, tested capabilities.
The Problem
Building reliable AI workflows requires:
- Consistency: Same task should produce same quality output
- Reusability: Don't rewrite prompts for common operations
- Composability: Combine simple operations into complex workflows
- Versioning: Track changes to agent behaviors
- Testing: Validate agent outputs meet standards
Most teams embed everything in system prompts. They get inconsistent results.
The Solution
SystemPrompt provides skills and playbooks for structured agent capabilities.
Skills: Reusable Capabilities
Skills are atomic agent capabilities:
# services/skills/research.yaml
name: research
description: "Research a topic and summarize findings"
version: "1.0.0"
inputs:
- name: topic
type: string
required: true
- name: depth
type: string
enum: [brief, standard, comprehensive]
default: standard
prompt: |
Research the topic: {{topic}}
Depth level: {{depth}}
- brief: 2-3 key points
- standard: 5-7 key points with sources
- comprehensive: detailed analysis with multiple perspectives
outputs:
- name: summary
type: string
- name: sources
type: array
Using Skills
Agents reference skills by name:
# services/agents/researcher.yaml
name: researcher
skills:
- research
- summarize
- fact_check
system_prompt: |
You are a research assistant.
Use your skills to complete tasks thoroughly.
# Execute skill directly
systemprompt core skills run research --topic "AI safety" --depth comprehensive
# Agent uses skill automatically
systemprompt admin agents message researcher "Research quantum computing"
Playbooks: Multi-Step Workflows
Playbooks define complex workflows:
# services/playbook/content/blog-post.yaml
name: blog-post
description: "Create a complete blog post"
version: "1.0.0"
inputs:
- name: topic
type: string
required: true
- name: tone
type: string
enum: [professional, casual, technical]
default: professional
steps:
- name: research
skill: research
inputs:
topic: "{{topic}}"
depth: comprehensive
outputs:
- research_notes
- name: outline
skill: outline_content
inputs:
notes: "{{research_notes}}"
format: blog
outputs:
- outline
- name: draft
skill: write_content
inputs:
outline: "{{outline}}"
tone: "{{tone}}"
outputs:
- draft
- name: review
skill: review_content
inputs:
content: "{{draft}}"
checklist: [grammar, clarity, accuracy]
outputs:
- feedback
- name: finalize
skill: apply_feedback
inputs:
content: "{{draft}}"
feedback: "{{feedback}}"
outputs:
- final_post
output: "{{final_post}}"
Managing Skills
# List all skills
systemprompt core skills list
# View skill details
systemprompt core skills show research
# Sync skills from files to database
systemprompt core skills sync --direction to-db -y
# Run a skill
systemprompt core skills run research --topic "MCP protocol"
Managing Playbooks
# List all playbooks
systemprompt core playbooks list
# View playbook
systemprompt core playbooks show blog-post
# Execute playbook
systemprompt core playbooks run blog-post --topic "AI Infrastructure"
# Sync playbooks
systemprompt core playbooks sync --direction to-db -y
Skill Discovery
Skills are organized in the filesystem:
services/
├── skills/
│ ├── research.yaml
│ ├── summarize.yaml
│ ├── fact_check.yaml
│ ├── write_content.yaml
│ └── review_content.yaml
├── playbook/
│ ├── content/
│ │ ├── blog-post.yaml
│ │ └── social-post.yaml
│ ├── research/
│ │ └── deep-research.yaml
│ └── guide/
│ └── start.md
Skill Versioning
Track skill changes:
# services/skills/research.yaml
name: research
version: "1.1.0" # Semantic versioning
changelog:
- version: "1.1.0"
changes: "Added depth parameter"
- version: "1.0.0"
changes: "Initial release"
External Skills
Register skills from external sources:
# Register skill from URL
systemprompt core skills register --url https://skills.example.com/research.yaml
# Register from GitHub
systemprompt core skills register --github user/repo/skills/research.yaml
Why This Matters
Consistency
Same skill produces consistent outputs:
| Ad-hoc Prompts | Skills |
|---|---|
| Varies by phrasing | Defined inputs/outputs |
| No structure | Versioned schema |
| Hard to test | Testable |
| Copy-paste errors | Single source of truth |
Composability
Build complex workflows from simple parts:
research → outline → draft → review → publish
↓ ↓ ↓ ↓ ↓
skill skill skill skill skill
Team Collaboration
Skills are shared across:
- Multiple agents
- Multiple projects
- Team members
- Environments (dev → prod)
Quality Control
Validate skill outputs:
# services/skills/research.yaml
validation:
output:
summary:
min_length: 100
max_length: 5000
sources:
min_items: 3
Integration with Agents
Agents automatically use assigned skills:
# services/agents/content-writer.yaml
name: content-writer
skills:
- research
- write_content
- review_content
playbooks:
- blog-post
- social-post
When the agent receives a task, it:
- Identifies relevant skill/playbook
- Executes with proper inputs
- Validates outputs
- Returns structured result
Getting Started
Create a skill:
# services/skills/summarize.yaml
name: summarize
description: "Summarize text content"
inputs:
- name: text
type: string
required: true
- name: max_words
type: integer
default: 100
prompt: |
Summarize the following text in {{max_words}} words or less:
{{text}}
outputs:
- name: summary
type: string
Sync to database:
systemprompt core skills sync --direction to-db -y
Use in an agent:
# services/agents/assistant.yaml
name: assistant
skills:
- summarize
Execute:
systemprompt admin agents message assistant "Summarize this article: [long text]"
See the Skills Reference for detailed configuration options.