Run the Skill Action runtime CLI to inspect skill packages, validate packages, resolve actions, validate input, and execute actions or skills with RFC-aligned request and response handling. Use when Codex needs to drive `skill-action-runtime` from the shell, interpret its structured output, or debug package loading, validation, resolution, and execution failures.
This skill provides guidance for using the local skill-action-runtime CLI as a transport wrapper over the runtime.
The CLI is not a separate orchestration system. Treat it as a shell transport for the runtime protocol:
data.statusUse the smallest command that answers the question:
list-skillslist-actionsvalidate-skill-packageresolve-actionvalidate-action-inputexecute-actionexecute-skillPrefer --output json when you need to inspect or quote fields programmatically.
Prefer on happy-path runs so large step payloads do not get pulled into context unless you are debugging.
--trace-level noneThe CLI loads packages in this order:
--skill-package <dir> entries--skills-dir <dir> direct children that contain skill.jsonskill.json<cwd>/skills direct children that contain skill.jsonDo not assume recursive discovery.
Do not rely on cwd inference when the session started outside the repo or from a generic directory such as ~/General.
In those cases, use an explicit absolute --skill-package path.
If the target package and action are already known, do not start with --help.
Go straight to one of:
validate-skill-packageresolve-actionvalidate-action-inputexecute-skillRead CLI help only when the command surface itself is the unknown.
If a package SKILL.md already gives the exact public execution path, do not pre-read skill.json, handler modules, or implementation files before the first run.
For resolve-action, validate-action-input, execute-action, and execute-skill, the CLI supports two request styles:
--skill-id, --action-id, --input-file, and execution options--request-json, --request-file, or stdin when the required target flag is omittedUse full request payloads when you need to test exact protocol shapes.
Treat these as different classes of failure:
ok: falseok: true and data.status: "failed"Do not blur them in the report.
Do not assume repository source files or RFC files are available at runtime.
Use the command contracts and handler compatibility guidance bundled with this skill.
Treat --handler-module as a runtime-cli-specific extension, not as RFC-core runtime behavior.
When primitive handlers are involved, prefer the dual-key compatibility strategy described by action-skill-creator.
Decide which of these you need:
entry_actionCheck the executable before constructing bigger commands:
command -v skill-action-runtime
If it is missing, stop and surface the exact install command:
pnpm add -g @rien7/skill-action-runtime-cli
Confirm which package set should be visible. Use explicit flags when ambiguity would matter.
--skill-package for one or a few specific packages.--skills-dir when the caller wants every direct child package in a skills/ folder.--skill-package in review, debugging, and reproducible examples.Use convenience flags for routine checks.
Use --request-json, --request-file, or stdin for exact protocol requests.
For input payloads:
--input-file <path>--input-json <json>For full request objects:
--request-file <path>--request-json <json>execute-action and execute-skill support:
--dry-run--trace-level none|basic|full--timeout-ms <ms>--max-depth <n>--max-steps <n>--dry-run and trace options are runtime-cli-specific execution extensions rather than RFC-core protocol fields.
Use --dry-run when you want implementation-level validation and trace behavior without invoking primitive handlers.
Do not confuse CLI --dry-run with a workflow-defined input field such as dry_run; the CLI flag skips primitive handlers, while an input field may intentionally keep earlier primitives live.
Read the outer envelope first:
ok: false: protocol failure before execution startedok: true plus data.status: "succeeded": execution successok: true plus data.status: "failed": execution started but failedThe CLI exits non-zero for both protocol failures and execution failures.
List discovered skills:
skill-action-runtime list-skills --skills-dir ./skills --output json
List actions:
skill-action-runtime list-actions --skill-package ./skills/my-skill --output json
Validate one or more skill packages:
skill-action-runtime validate-skill-package --skills-dir ./skills --output json
Resolve an action:
skill-action-runtime resolve-action --skill-package ./skills/my-skill --request-json '{"skill_id":"my.skill","action_id":"workflow.main"}' --output json
Validate action input:
skill-action-runtime validate-action-input --skill-package ./skills/my-skill --action-id workflow.main --input-file ./input.json --output json
Execute an action:
skill-action-runtime execute-action --skill-package ./skills/my-skill --skill-id my.skill --action-id workflow.main --input-file ./input.json --output json
Execute a skill:
skill-action-runtime execute-skill --skill-package ./skills/my-skill --skill-id my.skill --trace-level none --input-file ./input.json --output json
Use a full protocol request over stdin when you need to test exact runtime envelopes:
echo '{"skill_id":"my.skill","action_id":"workflow.main","input":{"value":4}}' \
| skill-action-runtime execute-action --skill-package /absolute/path/to/skills/my-skill --output json
validate-skill-package checks package-level consistency such as entry_action and nested action locality.resolve-action proves top-level addressability, not successful execution.validate-action-input proves input-schema acceptance, not handler availability.execute-skill always enters through the package entry_action.--trace-level none for happy-path proof and increase trace only when you need step-level debugging.--handler-module extension and primitive execution fails, check whether the addressed primitive action has a loaded handler under primitiveHandlers.action_id and JSON.stringify([skill_id, action_id]) so the package stays usable without source inspection.error.code and error.message for protocol failures.