Choose the smallest extension#
Use a declarative mapping for a bounded vendor text/JSON format. Use a plugin for a new codec, output, screen, scoring provider, importer or hook. Both paths use public contracts and keep another plugin’s database and private implementation out of your extension.
The Apache-2.0 core, public SDK, scaffold and testkits are downloadable independently of the private application repository. The full clinical-facing application contains separately licensed features. Package imports and commands retain their compatible @i2l-sim / i2l-sim names after the OpenHealthSim website rename.
Start from a complete kit#
Download the author kit 1.0.0. It includes exact first-party SDK tarballs, a locked author project, source type definitions, generated service/hook references, the complete Acme example, an interface scaffold, the coding-agent skill and licence notices.
Unzip it into a new authoring folder. Use Node.js 22 or 24 with npm, then run node setup.mjs. Setup verifies the download’s file hashes and installs the pinned public third-party dependencies with lifecycle scripts disabled. Internet access to the public npm registry is required for those dependencies. The first-party SDK resolves from local tarballs; it does not depend on those packages being publicly published.
The kit’s Acme verification, TypeScript checks and scaffold/Acme lifecycle tests were run from a fresh extraction of the emitted ZIP. This is authoring compatibility evidence, not a physical device, clinical or full platform certification. Follow the exact commands.
Ask a coding agent to help#
Download the complete plugin skill, including SKILL.md, the plugin reference, package inspector, Apache licence and notice. Install the entire i2l-sim-plugin folder in your coding agent’s skill directory, or attach all of its files when the agent supports file context. A lone pasted front page omits the reference and helper.
Open the author kit as the agent’s working folder. Download the request template, replace its bracketed questions with fictional samples and your desired result, and ask the agent to use the skill. The helper can scaffold and test; it does not grant administrator approval, paid-service consent or publication authority.
Keep the host boundary#
- Import
@i2l-sim/kernelpublic exports rather than Cordis directly. - Declare injected services and contribute through their public ports and documented slots. A type declaration alone does not supply a provider or permission.
- Keep all registrations, listeners and awaited work owned by the contributor context. Retire a late result after unload or replacement.
- Use
sessions.dispatchfor session changes and read projections for screens. Use the plugin’s own storage namespace. - Preserve the host’s shared React/kernel identities. Do not install a second SDK dependency tree into a running lab.
- Review actual network/listener permissions and configuration before enabling. An enabled plugin has full host access.
From tests to a lab#
The author kit works without the full application. To install and exercise the actual UI/device path, obtain the application separately, use an owned dev profile and separate data directory, and follow its ordinary install/permission controls. A mock contract test does not prove real network delivery, DOM interaction or a vendor protocol. Test those boundaries before a lab install.
Inspect the actual package inventory and licence notices. Publish only with the package owner’s approval. Store packaging, registry submission, human approval, inactive installation and enable are separate operations. The tested local Store scope does not imply an official public registry or live OAuth deployment.
Continue#
- Build your first plugin — tested Acme and scaffold commands.
- Public SDK reference — generated services and hooks, plus extension boundaries.
- Install a community release — the lab administrator’s workflow.
- Watch the plugin walkthrough.
