The webforJ plugin for AI coding assistants. Bundles the webforJ MCP server and a curated set of Skills so any MCP capable client can build and style webforJ applications with up to date knowledge of the framework.
Pick yours. Each section covers install, update, and uninstall.
Claude Code
Install
claude plugin marketplace add webforj/webforj-ai
claude plugin install webforj@webforj-aiVerify inside Claude Code:
/plugin
/mcp
The webforj plugin appears under Installed. The MCP server appears as
plugin:webforj:webforj-mcp under connected servers.
Update
Enable auto update for the marketplace from the /plugin UI once. From
then on, Claude Code refreshes on launch and pulls new skill content
automatically.
Manual refresh:
/plugin marketplace update webforj-ai
/reload-plugins
Uninstall
claude plugin uninstall webforj@webforj-ai
claude plugin marketplace remove webforj-aiIf you registered the MCP server directly, remove it too:
claude mcp remove webforj-mcpGitHub Copilot CLI
Install
copilot plugin marketplace add webforj/webforj-ai
copilot plugin install webforj@webforj-aiVerify:
copilot plugin listUpdate
copilot plugin update webforjUninstall
copilot plugin uninstall webforj
copilot plugin marketplace remove webforj-aiVS Code + GitHub Copilot
Install
⌘⇧P->Chat: Install Plugin From Source- Paste
webforj/webforj-ai
Update
⌘⇧P -> Chat: Update Plugin -> webforj
Uninstall
⌘⇧P -> Chat: Uninstall Plugin -> webforj
Gemini CLI
Install
gemini extensions install https://github.com/webforj/webforj-aiVerify:
gemini extensions listUpdate
gemini extensions update webforjUninstall
gemini extensions uninstall webforjOpenAI Codex CLI
Install
codex plugin marketplace add webforj/webforj-aiThen open a Codex session and enable the plugin:
codexInside the TUI, type /plugins, select webforj, and press Space to enable it.
Invoking skills in Codex. Codex does not auto load skills by prompt
match the way other clients do. Invoke with the $<plugin>:<skill>
syntax:
$webforj:webforj-styling-apps explain the DWC color model
$webforj:webforj-creating-components how do I wrap a Custom Element?
MCP tools work automatically without the $ prefix.
Update
Codex does not have an update command for local path marketplaces.
Remove and re-add:
codex plugin marketplace remove webforj-ai
codex plugin marketplace add webforj/webforj-aiThen re-enable the plugin from /plugins if needed.
Uninstall
Inside a codex session, /plugins -> select webforj -> press Space to
disable. Then from the shell:
codex plugin marketplace remove webforj-aiCursor
Install the MCP server
Add to ~/.cursor/mcp.json (user scope) or .cursor/mcp.json (project
scope):
{
"mcpServers": {
"webforj-mcp": {
"url": "https://mcp.webforj.com/mcp"
}
}
}Or via the UI: Settings → Developer → Edit Config → MCP Tools and paste the same config.
Install the skills
Cursor auto-discovers skills from ~/.cursor/skills/<skill-name>/ (user
scope) or .cursor/skills/<skill-name>/ (project scope). It also reads
.agents/skills/, .claude/skills/, and .codex/skills/ for cross
client compatibility. Clone this repo and copy the skill folders:
git clone https://github.com/webforj/webforj-ai.git
mkdir -p ~/.cursor/skills
cp -R webforj-ai/skills/* ~/.cursor/skills/Or import via Cursor's UI: Settings → Rules → Add Rule → Remote Rule (Github), then paste a URL pointing to a skill's subdirectory.
Update
-
MCP server: remote URL, always serves the latest. No action needed.
-
Skills:
cd webforj-ai && git pull cp -R skills/* ~/.cursor/skills/
Uninstall
-
MCP server: remove the
webforj-mcpentry from~/.cursor/mcp.json. -
Skills:
rm -rf ~/.cursor/skills/webforj-*
Kiro
Install the MCP server
Add to ~/.kiro/settings/mcp.json (user scope) or
.kiro/settings/mcp.json (workspace scope):
{
"mcpServers": {
"webforj-mcp": {
"type": "http",
"url": "https://mcp.webforj.com/mcp"
}
}
}Install the skills
Kiro reads skills from ~/.kiro/skills/<skill-name>/ (global) or
.kiro/skills/<skill-name>/ (workspace). Clone this repo and copy the
skill folders:
git clone https://github.com/webforj/webforj-ai.git
mkdir -p ~/.kiro/skills
cp -R webforj-ai/skills/* ~/.kiro/skills/Or import via Kiro IDE: Agent Steering & Skills section -> + -> Import a skill -> GitHub, then paste a URL pointing to a skill's subdirectory in this repo.
Update
-
MCP server: remote URL, always serves the latest. No action needed.
-
Skills:
cd webforj-ai && git pull cp -R skills/* ~/.kiro/skills/
Uninstall
-
MCP server: remove the
webforj-mcpentry from~/.kiro/settings/mcp.json. -
Skills:
rm -rf ~/.kiro/skills/webforj-*
Goose
Install the MCP server
Run Goose's interactive configure command and add a remote HTTP extension:
goose configureSelect Add Extension -> Remote Extension (Streamable HTTP). When
prompted:
- Name:
webforj-mcp - Streamable HTTP endpoint URI:
https://mcp.webforj.com/mcp
Install the skills
Goose loads skills from .goose/skills/ (project), .agents/skills/
(portable project), or ~/.config/agents/skills/ (global). Clone this
repo and copy the skill folders:
git clone https://github.com/webforj/webforj-ai.git
mkdir -p ~/.config/agents/skills
cp -R webforj-ai/skills/* ~/.config/agents/skills/Update
-
MCP server: remote URL, always serves the latest. No action needed.
-
Skills:
cd webforj-ai && git pull cp -R skills/* ~/.config/agents/skills/
Uninstall
-
MCP server: run
goose configure, selectRemove Extension, choosewebforj-mcp. -
Skills:
rm -rf ~/.config/agents/skills/webforj-*
Junie (JetBrains)
Install the MCP server
Add to ~/.junie/mcp/mcp.json (user scope) or .junie/mcp/mcp.json
(project scope):
{
"mcpServers": {
"webforj-mcp": {
"url": "https://mcp.webforj.com/mcp"
}
}
}Install the skills
Junie reads skills from ~/.junie/skills/<skill-name>/ (user scope) or
<projectRoot>/.junie/skills/<skill-name>/ (project scope). Clone this
repo and copy the skill folders:
git clone https://github.com/webforj/webforj-ai.git
mkdir -p ~/.junie/skills
cp -R webforj-ai/skills/* ~/.junie/skills/Update
-
MCP server: remote URL, always serves the latest. No action needed.
-
Skills:
cd webforj-ai && git pull cp -R skills/* ~/.junie/skills/
Uninstall
-
MCP server: remove the
webforj-mcpentry from~/.junie/mcp/mcp.json. -
Skills:
rm -rf ~/.junie/skills/webforj-*
Antigravity (Google)
Install the MCP server
Add to ~/.gemini/antigravity/mcp_config.json:
{
"mcpServers": {
"webforj-mcp": {
"serverUrl": "https://mcp.webforj.com/mcp"
}
}
}Or via the UI: Agent pane -> MCP Servers -> Install a server -> paste the URL.
Install the skills
Antigravity reads skills from ~/.gemini/antigravity/skills/ (global) or
<workspace-root>/.agents/skills/ (workspace). Clone this repo and copy
the skill folders:
git clone https://github.com/webforj/webforj-ai.git
mkdir -p ~/.gemini/antigravity/skills
cp -R webforj-ai/skills/* ~/.gemini/antigravity/skills/Update
-
MCP server: remote URL, always serves the latest. No action needed.
-
Skills:
cd webforj-ai && git pull cp -R skills/* ~/.gemini/antigravity/skills/
Uninstall
-
MCP server: remove the
webforj-mcpentry from~/.gemini/antigravity/mcp_config.json. -
Skills:
rm -rf ~/.gemini/antigravity/skills/webforj-*
Other MCP Clients
Install
Any editor or tool that supports Streamable HTTP MCP servers can connect. Add this to your client's MCP configuration:
{
"mcpServers": {
"webforj-mcp": {
"url": "https://mcp.webforj.com/mcp"
}
}
}Update
The MCP server is remote — no action needed.
Uninstall
Remove the webforj-mcp entry from your client's MCP configuration.
Skills fire automatically when your prompt matches their description:
- "Wrap this Custom Element library as a webforJ component."
- "Style this view with the DWC design tokens and add a dark theme."
- "Add login and lock down /admin to admins only."
- "Build a customer form bound to my Customer bean and validate on submit."
- "Upgrade this project from webforJ 25 to 26."
MCP tools work automatically in every client:
- "What webforJ versions are available?" (uses
get_versions) - "Scaffold a new webforJ sidemenu project called CustomerPortal." (uses
create_project) - "Search webforJ docs for @Route annotation and navigation." (uses
search_knowledge_base) - "Show me the full migration guide from the last search result." (uses
get_document) - "What CSS parts and variables does dwc-button expose?" (uses
styles_get_component) - "List every --dwc-space- token."* (uses
styles_list_tokens) - "Validate my app.css - any unknown --dwc- tokens?"* (uses
styles_validate_tokens) - "Generate a theme from brand color #6366f1." (uses
create_theme)
The plugin bundles one MCP server and a curated set of skills.
Remote, hosted at https://mcp.webforj.com/mcp. Exposes these tools:
| Tool | What it does |
|---|---|
get_versions |
List the webforJ majors this server knows about, including the current stable, the active SNAPSHOT, and which majors have data available for the styling tools. |
create_project |
Return the Maven archetype command (and follow-up commands) that scaffold a new webforJ project. |
search_knowledge_base |
Search the indexed docs, JavaDoc, code samples, and Kotlin DSL. Returns ranked snippets with categories. |
get_document |
Pull the full content behind a search result, for migration guides, full tutorials, or long API pages. |
styles_get_component |
Return the real CSS styling surface of a DWC component — CSS custom properties, shadow parts, reflected attributes, and slots. |
styles_list_tokens |
Return the authoritative list of global --dwc-* tokens (palette seeds, color shades, spacing, typography, borders). |
styles_validate_tokens |
Validate every --dwc-* reference in CSS, Java, MDX, or Markdown text and flag invalid tokens with similar-name suggestions. |
create_theme |
Generate a webforJ theme from a primary HSL color, including @AppTheme / @StyleSheet snippets and the full stylesheet. |
| Skill | What it does |
|---|---|
webforj-adding-servlets |
Add custom HTTP endpoints to a webforJ app for REST APIs, webhooks, or third-party servlet integrations. Covers Spring REST controllers, remapping webforJ to a sub-path, and proxying custom servlets through the webforJ config for plain and Spring projects. |
webforj-building-forms |
Build data-entry forms with BindingContext auto-binding, Jakarta-Validation annotations, custom Validator<T> and Transformer<C, M> classes, masked input fields (MaskedTextField / MaskedNumberField / MaskedDateField / MaskedTimeField), Table mask and currency renderers for formatted columns, the MaskDecorator utility for non-input non-Table formatting (labels, exports), and ColumnsLayout for responsive multi-column form grids. |
webforj-creating-components |
Build reusable webforJ components from core components, third-party Web Component libraries, or plain JavaScript libraries. Covers ElementComposite wrappers, component extensions, and page-level utilities. |
webforj-handling-timers-and-async |
Schedule timers, periodic intervals, debounced actions, and background async work using webforJ's thread-safe primitives instead of raw timers or threads. Covers polling, search-as-you-type debouncing, long-running tasks with live progress updates, and async services for plain and Spring projects. |
webforj-localizing-apps |
Add locale and translation support to a webforJ app. Covers supported locales, browser auto-detect, messages.properties bundles, runtime language switching, and custom translation backends for plain and Spring projects. |
webforj-securing-apps |
Protect routes in a webforJ app with login, logout, role-based access, and ownership checks. Covers @AnonymousAccess, @PermitAll, @RolesAllowed, @DenyAll, @RouteAccess SpEL, and custom evaluators. Routes through the recommended Spring Security integration when Spring Boot is on the classpath, and a custom RouteSecurityManager implementation otherwise. |
webforj-styling-apps |
Style and theme webforJ applications using the DWC design-token system (--dwc-* CSS custom properties). Covers OKLCH palette configuration, component styling via CSS variables and ::part(), layout tokens, dark mode, and theme creation. |
webforj-upgrading-versions |
Upgrade a webforJ project to a newer major using the official webforj-rewrite OpenRewrite recipes (introduced in webforJ 26). Includes a manual fallback for source-target pairs without a published recipe (for example 24 to 25). |
Found a bug, want a new skill, or have a fix to send? Open an issue or a pull request on github.com/webforj/webforj-ai. See CONTRIBUTING.md for the maintainer workflow.
MIT. See LICENSE.