Index
skills
¶
Skill system — reusable multi-tool compositions.
Classes¶
SkillExecutor
¶
SkillExecutor(tool_executor: ToolExecutor, *, bus: Optional[EventBus] = None)
Execute a skill manifest step-by-step.
Each step's arguments_template supports {key} placeholders
that are resolved from the context dict (populated by prior step outputs).
Source code in src/openjarvis/skills/executor.py
Functions¶
run
¶
run(manifest: SkillManifest, *, initial_context: Optional[Dict[str, Any]] = None) -> SkillResult
Execute all steps in a skill manifest.
Source code in src/openjarvis/skills/executor.py
SkillTool
¶
SkillTool(manifest: SkillManifest, executor: SkillExecutor)
Bases: BaseTool
Wraps a SkillManifest as a BaseTool that agents can invoke.
Follows the same adapter pattern as MCPToolAdapter.
Source code in src/openjarvis/skills/tool_adapter.py
SkillManifest
dataclass
¶
SkillManifest(name: str, version: str = '0.1.0', description: str = '', author: str = '', steps: List[SkillStep] = list(), required_capabilities: List[str] = list(), signature: str = '', metadata: Dict[str, Any] = dict())
Manifest describing a reusable skill.
Functions¶
manifest_bytes
¶
Serialize the manifest (excluding signature) for signing/verification.
Source code in src/openjarvis/skills/types.py
SkillStep
dataclass
¶
A single step in a skill pipeline.
Functions¶
load_skill
¶
load_skill(path: str | Path, *, verify_signature: bool = False, public_key: Optional[bytes] = None, scan_for_injection: bool = False) -> SkillManifest
Load a skill manifest from a TOML file.
Expected format:
[skill]
name = "research_and_summarize"
version = "0.1.0"
description = "Search web and summarize results"
author = "openjarvis"
required_capabilities = ["network:fetch"]
signature = ""
[[skill.steps]]
tool_name = "web_search"
arguments_template = '{"query": "{query}"}'
output_key = "search_results"
[[skill.steps]]
tool_name = "think"
arguments_template = '{"thought": "Summarize: {search_results}"}'
output_key = "summary"