Blog
Skill Implementation Boundary
How Eva-CLI turns Skills into controlled workflow capabilities instead of raw script execution.
Eva-CLI now has a dedicated Skill implementation plan. The important decision is that Skill is a controlled capability surface, not a raw SKILL.md interpreter and not a Lua-owned host permission path.
Three Skill classes
The design separates workflow_skill, runtime_worker, and lua_skill. A workflow Skill can become a workflow.* capability through SkillAdapter only after manifest, schema, policy, and runtime gate validation. A runtime worker remains display-only outside its matching orchestration mode. A Lua Skill is project-local workflow logic loaded through LuaCapabilityRuntime with generation swap support.
Why this boundary matters
Without this boundary, Skill support can easily become another unrestricted script runner. Eva-CLI keeps source discovery, trust assignment, schema validation, filesystem access, secrets, network policy, timeout, cancellation, audit, and rollback in Rust. Skill logic handles domain workflow, payload mapping, controlled host API orchestration, and result shaping.
Invocation shape
Lua Agents call a stable capability such as workflow.code_review. They do not pass Skill paths, command templates, shell snippets, environment variables, or runtime mode overrides. Rust resolves the call through the Tool Layer, AdapterRouter, SkillAdapter or LuaCapabilityAdapter, then validates both input and output schemas.
The full design is documented in Skill Implementation Plan.