About superwall-editor
superwall-editor is a skill for building, editing, and reviewing Superwall paywalls, onboarding, and web2app flows. It drives the editor in the user's live browser session and discovers available tools rather than relying on fixed tool names.
Key features
- 01Attach to a live editor session
- 02Discover current tools and schemas
- 03Edit paywall and onboarding flows
- 04Verify changes with screenshots
- 05Release the attached session
Use cases
- 01Create or revise a Superwall paywall
- 02Review onboarding or web2app flows
- 03Connect through a pairing code
- 04Inspect tools available in the browser
MCP support
The skill uses the same browser surface exposed by the MCP gateway. It attaches to the live editor session and invokes the tools available there.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ superwall/ skills --skill superwall-editorAfter installing, type/superwall-editorin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/cli.mddesign.mdnative-elements.mdworkflow.mdscripts/sw-editor.shDetails
From the project READMESuperwall Paywall Editor
Paywalls are built in a browser editor that exposes its tools over an authenticated relay. This skill drives the same surface used by the MCP gateway, so every tool runs inside the live browser session the user has open.
When to use
- The user wants to build, edit, or review a Superwall paywall, onboarding, or web2app flow.
- The user pastes a pairing code and asks you to take over editing.
- The user asks "what tools can you run right now?" Discover them via the browser, not from memory.
Start here: attach, then discover
Never assume a tool name or signature from memory. The browser is the source of truth and its tool set changes across releases.
For --agent-name, use your agent's recognized slug, such as codex, claude,
or cursor. Use other for Grok Build, Muse Code, or any agent not listed in
the CLI reference.
Preferred API launch flow:
- Create an auto-expose URL:
scripts/sw-editor.sh expose --application-id <id> --paywall-id <id> --agent-name <agent> --open --wait - Ask the user to complete browser authorization if prompted. The editor auto-exposes; do not ask them to click the expose button.
- Discover what is available right now:
scripts/sw-editor.sh tools - Invoke tools:
scripts/sw-editor.sh call <tool-name> --args '<json>'
Fallback manual flow:
- Ask the user for the pairing code shown in the editor UI.
- Attach:
scripts/sw-editor.sh attach <pairing-code> --agent-name <agent> - Continue with
toolsandcall.
Full CLI reference: references/cli.md.
How to build and edit
- Workflow, build order, and when to use which tool: references/workflow.md
- Native
sw-*elements (multiple-choice, indicator, drawer, picker, lottie, navigation): references/native-elements.md - Design standards, review checkpoints, typography, and conversion principles: references/design.md
Orchestration rules
- Always establish an attachment before editing. Use
expose --open --waitwhen possible, otherwise useattach <pairing-code> --agent-name <agent>.tools,call,status,releaseall require an attached session. - Prefer
expose --open --waitwhen you haveSUPERWALL_API_KEY, an application id, and a paywall id. It uses the same relay as manual pairing but removes the human pairing-code step. - Before calling a tool you have not used this session, run
toolsto confirm it exists and to read the current parameter schema. Tools are defined in the browser bundle, so an updated editor can ship new or renamed tools without changing this skill. - Use
get_screenshot(if present in the tool list) every two or three modifications to verify. Don't fly blind. - Prefer semantic tools (
update_styles,set_text_content,set_dynamic_value,move_nodes) over re-runningwrite_htmlon existing structure. Seereferences/workflow.md. - Prefer native
sw-*elements over hand-rolled<div>recreations whenever the UI represents a semantic control. Seereferences/native-elements.md. - When parsing CLI output, use
jq, not Python. Example:sw-editor.sh call get_subtree --args '...' | jq -r '.content[0].text' - Release when the user is done:
scripts/sw-editor.sh release.
When things go wrong
session_not_ready: the browser disconnected or reloaded. Ask the user to bring the editor tab back, then re-attach. The pairing code rotates, so they must provide the new one.session_locked: another client is already attached. The user either attached from another MCP client, or a previous CLI attachment wasn't released. They can detach from the editor UI and you can retry.unauthorized: the controller token is stale. Re-attach with a fresh pairing code.attach_failed: provide a valid current pairingCode: pairing codes expire after ~10 minutes and rotate on detach. Ask the user to show you the current one.