unship
Helps your agent test and compare AI-generated UI variations within a real app. It allows choosing the best option and cleaning up unnecessary code.
What it does
Helps you compare different AI-generated user interface versions directly within your application. You can see the options side-by-side and choose the best one before removing unused code.
When to use it
- ✓When you want to see multiple design options for a screen.
- ✓When you want to compare different texts for a button or heading.
- ✓When you want to test alternative layouts for a section.
Example of what to ask your AI
“Compare these two versions of the homepage, which one do you prefer?”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
The AI adds special markers to your code to create temporary UI versions. You see them in your browser and choose your favorite. Afterward, the AI removes the unchosen versions and the markers.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add sickn33/agentic-awesome-skills --skill unshipOr download just the file:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/skills/unship/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
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>
<div data-unship-option="Proof-led" hidden>...</div>
<div data-unship-option="Visual" hidden>...</div>
</section>
Keep option labels short and visible. Prefer 2-4 meaningful alternatives unless the user asked for a specific count.
3. Verify comparison readiness
Before handing off to the user, check that:
- the expected
data-unship-pickgroup exists; - the expected option labels exist;
- options are direct children of the group;
- exactly one option is initially visible;
- hidden inactive options remain hidden.
4. Let the user choose
Tell the user the group label, option labels, setup status, and any detected local preview server hints. The user chooses by naming a visible option label in chat.
5. Clean up after selection
When the user picks a winner, keep that option's real source and remove losing options for that group. Remove temporary data-unship-* attributes from settled source.
For final cleanup before shipping, remove all Unship artifacts and run:
./node_modules/.bin/unship check --json
Do not claim cleanup is complete until the check reports clean.
Best Practices
- Keep Unship work local and temporary.
- Preserve the existing app design language unless the user explicitly asks for a different direction.
- Avoid unrelated refactors while variants are temporary.
- Do not put custom tabs, app preferences, or permanent switchers into product UI for Unship comparisons.
- Keep inactive options safe: avoid duplicate active IDs, submit controls, global scripts, analytics triggers, focus traps, destructive side effects, and stateful providers.
Limitations
- Unship does not decide which variant wins; the human chooses.
- Unship does not replace design review, browser QA, accessibility checks, or production release validation.
- Unship is not intended for production traffic, remote analytics, or persistent product experiments.
Security & Safety Notes
- Run commands only in a local project the user has authorized you to modify.
- Do not run
npx @unship/cli@latestor any unpinned remote CLI in automated agent workflows. Pin and review the package version first, then execute the project-local binary. - Treat generated variants as temporary code that must be cleaned before release.
- Before destructive cleanup, confirm the selected option label when the user's choice is ambiguous.
…
FAQ
Is this for production A/B testing?
No, this is for comparing options locally on your computer before they go live. It's not for measuring performance with real users.
Can the AI change my code without permission?
Yes, but only to create temporary versions you can see and approve. You need to authorize local modifications, and the AI removes the extra code afterward.
What if I don't like any of the options?
You can ask the AI to generate new options or keep the original version. The key is that you choose which version remains.
Details
Original description by the author
Compare AI agent-made UI variants locally in a real app, then keep one and clean up unused temporary code.
Popularity
- GitHub stars
- 48k
- Ranking position
- #4691
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
00-andruia-consultant
Helps your agent start or improve AI projects. It analyzes code, suggests tools, and creates action plans in Spanish.
sickn33/agentic-awesome-skills
007
Lets your agent perform security audits and threat modeling. It's useful for protecting projects against attacks and vulnerabilities.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Helps your agent create or improve AI tools. It defines how tools work, writes documentation, and validates the structure.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Lets your agent create a summary about a specific industry. It's useful for understanding the context, rules, usage patterns, and risks of a project, using reliable sources.
sickn33/agentic-awesome-skills
Similar skills
accessibility
Helps your agent create interfaces that everyone can use. Ensures websites and apps work well for people with disabilities, like those who are blind or have reduced mobility.
affaan-m/ECC
design-system
Helps your agent create a design system from existing code. It extracts visual information and checks for consistency, generating a report and an interactive preview.
affaan-m/ECC
liquid-glass-design
Helps your agent create iOS user interfaces with a 'Liquid Glass' effect. Allows adding dynamic and interactive visual effects in SwiftUI and UIKit.
affaan-m/ECC