Skip to content

Concepts

Tools & skills

The built-in tool catalog, the bundled skills, and how discovery works.

Tools execute; skills instruct. Both complement the host’s coding tools (read, write, edit, bash, grep, find, ls).

Tools

ToolDoes
deviceCall one device: read, write, run inference, or load/unload it
devicesCall several devices at once; each call reports its own result or error
device_stopStop one device or all loaded actuators; never needs approval
execRun Python source or a script file with device access, feedback control and selected image results
recordStart and stop recordings; available only with --enable-recording
skillLoad a skill’s instructions into the conversation
profile_writeValidate and save workspace and device facts, including calibration requests
relative_poseExpress a frame or pose relative to another frame
locate_object_3dCombine a camera, a detection model and depth to find an object’s 3D position
servoPlan and send a joint trajectory to joint or pose targets; waits on the world clock by default (block: false returns immediately)
run_policyRun a policy model once and send its actions to the devices
setup_planRead and update the task’s setup plan and record each step’s outcome (@kinex/setup)
calib_sampleCapture one measured sample for a calibration (@kinex/setup)
calib_computeRun a calibration solver and propose the resulting profile changes (@kinex/setup)
questionAsk you a structured question (standalone Kinex only)
kinex_skillLoad a skill from any Kinex package (standalone Kinex only)

Use bounded Python scripts in exec to combine control, fresh feedback and camera observations. The former closed_loop and settled built-ins have been removed; put their loop state and task-specific stopping checks in Python. See Feedback control.

More detail: Using vision models as tools, Using VLAs as tools.

Bundled skills

SkillPackagePurpose
setup-devicecorePick a guide, provision a driver, write a profile, verify; also repair
onboard-ros2setupROS 2 Jazzy integrations — see ROS 2 onboarding
calibrate-*, verify-base-*setupMeasurement procedures — see Calibration

Discovery

Kinex looks for tools and skills in a .kinex/ folder, searching these places in order:

  1. the .kinex/ nearest the current directory;
  2. .kinex/ folders in enclosing directories further up;
  3. your global config, ~/.config/kinex/;
  4. the tools and skills built into Kinex.

When two places define the same name, the first one found wins. A project can therefore override a global or built-in Python tool or skill by defining one with the same name.

Custom discovery uses the plural tools/ and skills/ directories, including in global config. Move older custom content out of singular tool/ and skill/ directories. Packaged assets/builtin/tool/ and assets/builtin/skill/ paths are unchanged.

Tools

.kinex/tools/
├── my_tool/
│   ├── tool.yaml     # name, kind, description, parameters (JSON Schema)
│   └── tool.py       # implementation
└── helpers.ts        # JS/TS tools, one or more per file
  • Python tools live in their own folder with a tool.yaml manifest and a tool.py. The tool’s name comes from name in the manifest.
  • JS/TS tools are .ts or .js files placed directly in tools/. Each export with a description and an execute function (plus an optional Zod parameters schema) becomes a tool. A default export is named after the file; any other export is named <file>_<export>.
  • Tools are rescanned on every agent step, so a tool you write or edit mid-task is available at the next step.
  • The core tools listed above (device, exec, skill and so on) always take priority. A custom tool with the same name is skipped, and Kinex reports the conflict.

Skills

.kinex/skills/
└── pick-and-place/
    ├── SKILL.md      # frontmatter (name, description), then instructions
    └── references/   # optional supporting files
  • Kinex finds every SKILL.md under skills/, at any depth. The skill’s name comes from name in the frontmatter, or the folder name if that is missing.
  • The agent sees each skill’s name and description up front. When a description matches the task, it loads the full instructions with the skill tool.
  • Write the description carefully. It is what the agent uses to decide whether to load the skill.

Write your own: Custom tools & skills.

Search