| name | unship |
| description | Compare AI agent-made UI variants locally in a real app, then keep one and clean up unused temporary code. |
| category | development |
| risk | critical |
| source | community |
| source_repo | mbenhard/unship |
| source_type | community |
| date_added | 2026-06-07 |
| author | Marcus Benhard |
| tags | ["ui-variants","frontend","local-first","coding-agents"] |
| tools | ["claude-code","antigravity","cursor","gemini-cli","codex-cli","opencode"] |
| license | MIT |
| license_source | https://github.com/mbenhard/unship/blob/main/LICENSE |
| plugin | {"targets":{"codex":"blocked","claude":"blocked"}} |
Unship
Overview
Unship is a local workflow for comparing AI-generated UI alternatives in the real application instead of accepting one generated version at a time. It adds temporary source-level variants, shows a local browser picker, and then cleans up the unused options after the user chooses.
This skill is for frontend iteration with coding agents. It is not production A/B testing, analytics, feature flagging, or a hosted experiment service.
When to Use This Skill
- Use when the user wants to compare multiple UI, layout, copy, state, flow, or design-system alternatives.
- Use when a coding agent should create several temporary options in real source code and let the user judge them in the running local app.
- Use when the user chooses a visible option and wants the losing temporary code removed before shipping.
Do Not Use This Skill When
- The user needs production experiments, traffic splitting, analytics, or feature flags.
- The app cannot safely render inactive hidden variants because of duplicate active IDs, global scripts, analytics triggers, focus traps, destructive actions, or autoplay side effects.
- The user has not authorized local source edits.
How It Works
1. Install or reuse Unship
Prefer the project-local binary when it exists:
./node_modules/.bin/unship doctor --json --no-update-check
Otherwise install a reviewed, exact CLI version into the project and then run the local binary:
npm install --save-dev @unship/cli@<reviewed-version>
./node_modules/.bin/unship doctor --json --no-update-check
If setup is needed for the local picker, run:
./node_modules/.bin/unship setup --json
Patch only the smallest development-only mount point required to load the picker in the local preview.
2. Create temporary variants
Inspect the relevant page, component, route, or rendered artifact. Add the smallest source-level comparison that lets the user judge real options in context.
Use Unship markup:
<section data-unship-pick="Hero">
<div data-unship-option="Current">...</div>
< = >...
...