Joystick (Direct Input) icon Joystick (Direct Input) — DirectInput joystick control for ARC: drive movement panels, control servos, assign button scripts, variable speed and rumble feedback. Try it →
 
ARCx Testing Robot Skill Robot Skill

Arcx Testing Robot Skill

by Synthiam Inc.

ARCx testing scaffold showcasing skill lifecycle, config JSON, control commands, UI, timer, and static assets for developer reference

Requires ARCx v30 (Updated 9/27/2026)
Tags: Examples
Compatible with: Compatible with Microsoft Windows 10 or 11 Windows Compatible with ARM Linux (Raspberry pi, etc) ARM Compatible with Linux Linux Compatible with MacOS MacOS

How to add the Arcx Testing Robot Skill robot skill

  1. Load the most recent release of ARCx on a compatible operating system (Get ARCx).
  2. Press the + Skills menu from the top menu bar in ARCx.
  3. Choose the Examples category tab.
  4. Press the Arcx Testing Robot Skill icon to add the robot skill to your project.

Don't have a robot yet?

Follow the Getting Started Guide to build a robot and use the Arcx Testing Robot Skill robot skill.


How to use the Arcx Testing Robot Skill robot skill

ARCx Testing Robot Skill

A scaffold and playground robot skill. This is not a real robot skill - it controls nothing and is not useful in a robot project. It exists so that a developer writing a new ARCx skill has a working example of every part of the skill lifecycle in one small file, and so that ARCx itself has something to test the skill host against.

If you are looking for a skill to use, this is not it. If you are writing one, start here.

What it demonstrates

Part of a skill Where to look
Worker lifecycle - constructor, Setup(), Initialize(), DisposeOverride() and why each one exists RobotSkillWorker.cs, top to bottom; every method carries a comment explaining what belongs in it
Window size, height and allowing multiple instances Setup()
Saving and loading configuration as JSON in the project OnSetConfiguration() and GetConfigOnProjectSave()
Declaring the configuration type so the AI agent gets a JSON Schema for it GetConfigurationType()
Running a timer and refreshing the window from it the _timer field and its tick handler
Control commands - declaring them and handling them GetSupportedControlCommands() and ControlCommand()
A main window with buttons, a progress bar, an image and a log RobotSkillUIMain.razor
A configuration dialog with text, numeric and servo selector fields RobotSkillUIConfig.razor
Shipping a static asset with a skill the capture.jpg image referenced from the main window

The window

ARCx Testing  <a href='/Support/Skills/Skills-Overview' target='_top'>robot skill</a> robot skill window

  • An image, purely to show that a skill can ship and display one.
  • A progress bar that animates while the timer is running.
  • Counter - a number the timer increments.
  • Start / Stop - run or stop the timer. The button's text, colour and icon come from the worker, which is the pattern to copy for any window that reflects worker state.
  • Reset Timer - set the counter back to zero.
  • Increment - add one by hand.
  • A log.

Configuration

ARCx Testing  <a href='/Support/Skills/Skills-Overview' target='_top'>robot skill</a> configuration settings

Three fields, each present to demonstrate a control type rather than to do anything:

Setting Meaning
String value A text field. Default Default value.
Some number A numeric field limited to -50..50. Default 5.
Select Servo The standard ARCx servo selector, showing how to put one in a configuration dialog.

The Window tab sets the robot skill's window title, its size on the workspace and notes about what it does in this project.

Window configuration tab

Using it as a starting point

  1. Copy the folder and rename the project, the namespace and the assembly.
  2. Give plugin.json a new GUID, your own name and description, and a real category.
  3. Strip out the parts you do not need - the timer, the image, the example configuration fields - and keep the lifecycle overrides.
  4. Replace title.png with your own icon.

Note that the version number in plugin.json is high (28) because this skill is rebuilt constantly during ARCx development; that is not a model to copy.

See also

  • Example - Draw On Canvas - the other example skill, for live graphics
  • Manuals/RobotSkill-Services-And-Core.md and Manuals/RobotSkill-UI-Components.md in the ARCx source

Control Commands for the Arcx Testing Robot Skill robot skill

There are Control Commands available for this robot skill which allows the skill to be controlled programmatically from scripts or other robot skills. These commands enable you to automate actions, respond to sensor inputs, and integrate the robot skill with other systems or custom interfaces. If you're new to the concept of Control Commands, we have a comprehensive manual available here that explains how to use them, provides examples to get you started and make the most of this powerful feature.

Control Command Manual

This robot skill has 3 control commands, listed below. Send them from a JavaScript or Python script, from Blockly, or from another robot skill.

The first value is always the window title, which is the name in the title bar of the robot skill on your workspace. It starts out as ARCx Testing Robot Skill, which is what every example below uses. If you rename the robot skill, or add a second copy of it to the project, use the title as it appears on that window instead.

ControlCommand() can be shortened to CC(), and both spellings work in JavaScript and in Python. The examples are JavaScript; Python is the same call, except that true and false are written True and False.

IsRunning

Is the current timer running? Returns true|false if running

Syntax

ControlCommand("ARCx Testing Robot Skill", "IsRunning")

Returns: Boolean [true or false]

Example

var result = ControlCommand("ARCx Testing Robot Skill", "IsRunning");

Start

This will start the counter

Syntax

ControlCommand("ARCx Testing Robot Skill", "Start")

Returns: Boolean [true or false]

Example

var result = ControlCommand("ARCx Testing Robot Skill", "Start");

Stop

This will stop the counter

Syntax

ControlCommand("ARCx Testing Robot Skill", "Stop")

Returns: Boolean [true or false]

Example

var result = ControlCommand("ARCx Testing Robot Skill", "Stop");

This list is read out of the robot skill itself each time its package is uploaded, so it matches the published version (v30).


ARC Pro

Upgrade to ARC Pro

Elevate your robot's capabilities to the next level with Synthiam ARC Pro, unlocking a world of possibilities in robot programming.