At a Glance
Execution Systems
| System | CLI | What Runs | Deterministic | Needs API Key |
|---|---|---|---|---|
| Job Workflows | praisonai workflow run | Shell, Python, actions, agent steps | Mostly ✅ | Only for agent steps |
| Agent Workflows | praisonai workflow run | LLM agents collaborating | ❌ | ✅ |
| Hybrid Workflows | praisonai workflow run | Job + multi-agent steps | Mixed | ✅ |
| Recipes | praisonai recipe run | LLM agents + lifecycle | ❌ | ✅ |
| Slash Commands | /cmd in REPL | Handler functions | ✅ | ❌ |
Extension Systems
| System | Scope | What It Provides |
|---|---|---|
| Tools | Per-agent | Callable functions (@tool, BaseTool) |
| Skills | Per-agent | Declarative expertise (SKILL.md + prompts) |
| Plugins | System-wide | Bundled tools + hooks + skills + recipes |
| Hooks & Callbacks | System-wide | Lifecycle interception and notification |
Execution Systems
1. Job Workflows
Ordered step execution mixing deterministic automation and AI agent steps. Discriminator:type: job in YAML | Engine: JobWorkflowExecutor
Deterministic steps: run: (shell), python: (script), script: (inline Python), action: (custom/built-in)
Agent-centric steps: agent: (AI agent), judge: (quality gate), approve: (approval gate)
--dry-run, agent/judge/approve steps
Job Workflows
Step types, agent steps, flags, conditionals
Custom Actions
YAML-defined, file-based, and built-in actions
2. Agent Workflows
LLM-powered agent pipelines — AI agents collaborate on tasks. Discriminator: Notype field (default) | Engine: Agent Workflow Engine
Agent Workflows
Agent definitions, tasks, process types
2.5. Hybrid Workflows
Combines job workflow steps (deterministic + agent) with multi-agent collaboration steps. Discriminator:type: hybrid in YAML | Engine: HybridWorkflowExecutor
Supports all job workflow step types plus:
workflow:— execute a named agent from theagents:blockparallel:— run multiple sub-steps concurrently
Hybrid Workflows
Multi-agent + deterministic steps in one pipeline
3. Recipes
Packaged, distributable agent workflows with full lifecycle management. CLI:praisonai recipe (separate command group) | Engine: recipe.run()
Discovery (5-tier): $PRAISONAI_RECIPE_PATH → ./recipes/ → ~/.praison/recipes/ → agent_recipes pip package → built-in
pack/publish/pull/install, judge/optimize/apply lifecycle, policy packs, SBOM/audit, HTTP serving, trace replay
Recipes
Recipe structure, lifecycle, governance
4. Slash Commands
Interactive commands in the PraisonAI REPL. User types/cmd — no YAML, no CLI invocation outside REPL.
Extension Systems
5. Tools
Functional actions that agents call to interact with the outside world. Scope: Per-agent | Discovery: Lazy-loaded viapraisonaiagents.tools.registry.py entry points
Implementation options:
- Function-based:
@tooldecorated functions - Class-based:
BaseToolor Pydantic classes for stateful operations - External packages: Pip packages discovered via
entry_points(praisonaiagents.toolsgroup)
Key distinction: Tools are procedural — Python code that does something.
Tools Guide
Built-in tools, custom tools, tool classes
6. Skills
Declarative expertise modules — reusable prompts and knowledge. Scope: Per-agent | Standard: Agent Skills (agentskills.io) | CLI:praisonai skill list/install/validate
Key distinction: Skills are declarative — SKILL.md + prompt templates, not code.
Skills can be generated autonomously using the Identify-Scrape-Synthesize (ISS) pattern.
7. Plugins
System-wide extension bundles — the marketplace unit. Scope: System-wide | Manager:PluginManager (global registry + discovery) | Location: .praison/plugins/, pip packages
A plugin can bundle:
- Tools — adds new agent actions
- Skills — adds agent expertise templates
- Recipes — adds pre-defined agent teams
- Hooks — adds logging, security, monitoring
- Integrations — connects to Slack, Telegram, APIs
Key distinction: Plugins are containers — they deliver tools, skills, hooks, and recipes as a single installable unit.
8. Hooks & Callbacks
Lifecycle interception (hooks) and notification (callbacks). Hooks — middleware functions that can modify agent requests/responses:| Category | Hooks |
|---|---|
| Lifecycle | ON_INIT, ON_SHUTDOWN |
| Agent | BEFORE_AGENT, AFTER_AGENT |
| LLM | BEFORE_LLM, AFTER_LLM |
| Tools | BEFORE_TOOL, AFTER_TOOL |
| Messages | BEFORE_MESSAGE, AFTER_MESSAGE |
How They Relate
Master Comparison
Identity & Scope
| Job Workflows | Hybrid | Agent Workflows | Recipes | Tools | Skills | Plugins | Hooks | |
|---|---|---|---|---|---|---|---|---|
| Type | Execution | Execution | Execution | Execution | Extension | Extension | Extension | Extension |
| AI-powered | Optional | ✅ | ✅ | ✅ | N/A | N/A | N/A | N/A |
| Scope | Project-local | Project-local | Project-local | External | Per-agent | Per-agent | System-wide | System-wide |
| Deterministic | Mostly ✅ | Mixed | ❌ | ❌ | ✅ | N/A | ✅ | ✅ |
Distribution & Lifecycle
| Job Workflows | Agent Workflows | Recipes | Tools | Skills | Plugins | |
|---|---|---|---|---|---|---|
| Registry | ❌ | ❌ | ✅ | ✅ (entry_points) | ❌ | ✅ (pip) |
| pack/publish | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ (pip) |
| judge/optimize | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
| HTTP serve | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
| SBOM/audit | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Versioned | ❌ | ❌ | ✅ | ✅ (pip) | ❌ | ✅ (pip) |
Execution Model
| Job Workflows | Hybrid | Agent Workflows | Recipes | |
|---|---|---|---|---|
| Dry-run | ✅ | ✅ | ❌ | ✅ |
| Agent steps | ✅ agent, judge, approve | ✅ | ✅ (native) | ✅ (native) |
| Multi-agent | ❌ | ✅ workflow:, parallel: | ✅ | ✅ |
| Streaming | ❌ | ❌ | ❌ | ✅ --stream |
| Background | ❌ | ❌ | ❌ | ✅ --background |
| Replay | ❌ | ❌ | ❌ | ✅ export/replay |
Extensibility
| Job Workflows | Hybrid | Agent Workflows | Recipes | |
|---|---|---|---|---|
| Custom actions | ✅ YAML, file, built-in | ✅ (via job engine) | ❌ | ❌ |
| Custom tools | ✅ (agent steps) | ✅ | ✅ Tool plugins | ✅ tools.py |
| Conditionals | ✅ if: expressions | ✅ if: | ❌ (LLM decides) | ❌ (LLM decides) |
| CLI flags | ✅ Custom flags: | ✅ | ❌ | ❌ |
| Env vars | ✅ ${{ env.X }} | ✅ | ❌ | ✅ via config |
| Variables | ✅ vars: + --var | ✅ | ✅ --var | ✅ --var, --input |
Decision Guide
| If you want to… | Use |
|---|---|
| Automate shell commands / CI/CD | Job Workflow |
| Create reusable build actions | Job Workflow + Custom Actions |
| Mix shell + single AI agent in a pipeline | Job Workflow (agent steps) |
| Add a quality gate to a pipeline | Job Workflow (judge: step) |
| Mix shell + multi-agent collaboration | Hybrid Workflow |
| Run checks in parallel | Hybrid Workflow (parallel: step) |
| Orchestrate AI agents on a task | Agent Workflow |
| Share an AI workflow as a package | Recipe |
| Improve AI output iteratively | Recipe (judge/optimize) |
| Serve an AI workflow as an API | Recipe (serve) |
| Generate a job workflow from a prompt | praisonai workflow auto --type job |
| Give an agent a new capability | Tool |
| Give an agent expertise / personality | Skill |
| Add logging / security / guardrails | Hook |
| Bundle tools + skills + hooks for distribution | Plugin |
| Quick interactive commands | Slash Command |
Source Files
| System | Core Implementation | CLI |
|---|---|---|
| Job Workflows | cli/features/job_workflow.py | cli/commands/workflow.py |
| Hybrid Workflows | cli/features/hybrid_workflow.py | cli/commands/workflow.py |
| Agent Workflows | cli/features/workflow.py | cli/commands/workflow.py |
| Workflow Generation | auto.py (JobWorkflowAutoGenerator) | workflow auto --type job |
| Recipes | recipe/core.py + cli/features/recipe.py | cli/commands/recipe.py |
| Tools | praisonaiagents/tools/ | Via agent config |
| Skills | praisonaiagents/skills/ | praisonai skill |
| Plugins | praisonaiagents/plugins/ | praisonai plugin |
| Hooks | praisonaiagents/hooks/ | Programmatic |
| Slash Commands | In-memory registry | /cmd in REPL |

