---
name: xios-extend
description: Build a new XIOS component (a new tag backed by a JavaScript class, an XSL skin and CSS) or a new process operation (a new operation name backed by a JavaScript function), in an application or in xios-core itself. Use only when asked to create, add or extend a custom component or operation, or when no Core component or operation can do the job; not for writing ordinary views and processes (xios-views, xios-process).
---

<!-- Generated by npm run gen:skill from tools/skill/extend/SKILL.md - do not edit. -->

# Extending XIOS

First look for a Core component (xios-views) or operation (xios-process) that does the job; build your own only when none does. Two homes:

- **In an application** (app author): the module sits next to the app and the app declares it; xios is not touched.
- **In xios-core** (framework contributor): `ui/<Dir>/` or `operations/PO_<name>.js`, registered in `config/system.xml`, with its doc, schema and tests.

Common to both:

- A component or an operation is an ES module (`export`), loaded on first use. The framework's classes and objects are globals (`Component`, `Container`, `EVT_EventObject`, `SYS_URL`, `sys`, `xml`, `HTML`): never import them, and keep the module self-contained (no relative imports).
- Pick a name nobody uses: a component tag that is not in `config/system.xml` (an app's tag silently replaces the system one), an operation name that is not built in.
- Write only the supported API, the way the files below show it.

- [component.md](component.md) - declare it, the class, the skin, the CSS, the accessibility duties, registration in xios-core, tests
- [operation.md](operation.md) - declare it, the function and its arguments, attributes and `{...}`, aliases and documents, errors, registration in xios-core, tests
