webrobot-plugin-dev

Build WebRobot plugins with Scala ETL stages and Java JAX-RS REST API endpoints.

Updated Apr 29, 2026
One-click install
npx skills add https://github.com/WebRobot-Ltd/claude-code-webrobot-skills --skill webrobot-plugin-dev-webrobot-ltd
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: webrobot-plugin-dev
Source: https://github.com/WebRobot-Ltd/claude-code-webrobot-skills/tree/main/skills/webrobot-plugin-dev
Command: npx skills add https://github.com/WebRobot-Ltd/claude-code-webrobot-skills --skill webrobot-plugin-dev-webrobot-ltd

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Extending the WebRobot data platform requires knowledge of two distinct plugin architectures — Scala-based ETL stages loaded via Java ServiceLoader and Java JAX-RS REST API plugins — each with strict conventions for manifests, multi-tenancy, database access, and Spark serialization that are easy to get wrong. ## Core Features & Use Cases - ETL Plugin Development: Implement WTransformStage, WPartitionStage, WSinkStage, and other stage types in Scala with Gradle, including ServiceLoader registration, manifest.json authoring, and LLM-enabled per-row enrichment via WebroStageContext. - REST API Plugin Development: Build JAX-RS resources in Java with Maven, covering multi-tenant organization_id filtering, JDBC access patterns, kernel ORM services, and Flyway migrations. - Stage Catalog Discovery: Query the public stage catalog API before naming new stages to avoid collisions that silently override existing stages. - Use Case: A partner wants to add a sentiment analysis stage to their pipelines. The Skill guides them to implement a WPartitionStage using ctx.llm.infer, register it via ServiceLoader, declare it in manifest.json, and verify no name collision against the live catalog. ## Quick Start Ask the assistant to create a new WebRobot ETL plugin with a transform stage that scores rows, or a REST API plugin exposing endpoints for a new domain.

Frequently Asked Questions about webrobot-plugin-dev

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a custom ETL stage for WebRobot pipelines?▼

Implement a stage interface such as WTransformStage or WSinkStage in Scala, register the class in META-INF/services matching the fully-qualified interface name, and declare the stage with its args in manifest.json. Build with Gradle using the webrobot-plugin-sdk from JitPack.

How do I build a REST API plugin with JAX-RS for WebRobot?▼

Create a Java class annotated with @Singleton and @Path, implement endpoints with @RequiresScopes, and resolve the tenant via OrganizationContextHelper.getOrganizationId. Package it with Maven, add Flyway migrations under db/migration, and declare the entrypoint in manifest.json.

When should I use WPartitionStage instead of WTransformStage?▼

Use WPartitionStage when the stage needs WebroStageContext access, such as ctx.llm.infer, ctx.query, or ctx.execute for per-row enrichment. WTransformStage is stateless and serialized to Spark workers, so it receives no context.

Why does my WebRobot plugin stage name silently override another stage?▼

Stage name collisions at plugin load silently override existing stages. Query the public catalog endpoint at /webrobot/api/catalog/stages before naming a new stage to verify the ID is not already registered.

How does multi-tenancy work in WebRobot REST API plugins?▼

Every domain table must include organization_id, resolved from the JWT via OrganizationContextHelper.getOrganizationId and never from the request body. All queries must filter by organization_id to isolate tenant data.

Why does my Spark stage fail serialization with HttpClient fields?▼

Non-Serializable fields like HttpClient must be declared as @transient lazy val so they are re-created after deserialization on each executor. Without this, Spark throws a NotSerializableException when shipping the stage to workers.