Yoga Go Desktop UI
chapar-rest/chapar
Guides building desktop interfaces with the Yoga Go framework: Body views, layout nodes, widgets, dialogs and headless builds.
Steps for adding a one-time launch or announcement modal to the Warp desktop GUI, gated by a feature flag and tracked by a settings field.
$ npx skills add warpdotdev/warp --skill gui-create-launch-modal -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install warpdotdev/warp gui-create-launch-modal --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/warpdotdev/warp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/gui-create-launch-modal .claude/skills/gui-create-launch-modal && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "gui-create-launch-modal" agent skill from https://github.com/warpdotdev/warp/tree/master/.agents/skills/gui-create-launch-modal into .claude/skills/gui-create-launch-modal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gui-create-launch-modal", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/warpdotdev/warp/tree/master/.agents/skills/gui-create-launch-modalType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add warpdotdev/warp --skill gui-create-launch-modal -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install warpdotdev/warp gui-create-launch-modal --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/warpdotdev/warp.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/gui-create-launch-modal .agents/skills/gui-create-launch-modal && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "gui-create-launch-modal" agent skill from https://github.com/warpdotdev/warp/tree/master/.agents/skills/gui-create-launch-modal into .agents/skills/gui-create-launch-modal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gui-create-launch-modal", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add warpdotdev/warp --skill gui-create-launch-modal -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install warpdotdev/warp gui-create-launch-modal --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/warpdotdev/warp.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/gui-create-launch-modal .cursor/skills/gui-create-launch-modal && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "gui-create-launch-modal" agent skill from https://github.com/warpdotdev/warp/tree/master/.agents/skills/gui-create-launch-modal into .cursor/skills/gui-create-launch-modal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gui-create-launch-modal", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/warpdotdev/warp.git --path .agents/skills/gui-create-launch-modal--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add warpdotdev/warp --skill gui-create-launch-modal -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install warpdotdev/warp gui-create-launch-modal --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/warpdotdev/warp.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/gui-create-launch-modal .gemini/skills/gui-create-launch-modal && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "gui-create-launch-modal" agent skill from https://github.com/warpdotdev/warp/tree/master/.agents/skills/gui-create-launch-modal into .gemini/skills/gui-create-launch-modal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gui-create-launch-modal", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install warpdotdev/warp gui-create-launch-modalInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add warpdotdev/warp --skill gui-create-launch-modal -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/warpdotdev/warp.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/gui-create-launch-modal .github/skills/gui-create-launch-modal && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "gui-create-launch-modal" agent skill from https://github.com/warpdotdev/warp/tree/master/.agents/skills/gui-create-launch-modal into .github/skills/gui-create-launch-modal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gui-create-launch-modal", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add warpdotdev/warp --skill gui-create-launch-modal -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install warpdotdev/warp gui-create-launch-modal --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/warpdotdev/warp.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/gui-create-launch-modal .opencode/skills/gui-create-launch-modal && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "gui-create-launch-modal" agent skill from https://github.com/warpdotdev/warp/tree/master/.agents/skills/gui-create-launch-modal into .opencode/skills/gui-create-launch-modal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gui-create-launch-modal", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
gui-create-launch-modalSteps for adding a one-time launch or announcement modal to the Warp desktop GUI, gated by a feature flag and tracked by a settings field.
This skill applies only to Warp's GUI desktop front-end, not its headless TUI, and treats the orchestration launch modal as the reference implementation. It lays out a checklist spanning eight places: a feature flag, a settings field, trigger logic in the one-time modal model, the view files, workspace wiring, debug actions, a hero image and any new icons.
The steps then go in order. Custom icons are added to the icon enum with an SVG in the same format as existing ones, a new variant is added to the feature flag list and enabled for dogfood builds, and one private boolean settings field per modal, synced globally, records whether the user has already seen it. The excerpt cuts off at the model step, and the description adds that colors must come from Warp theme tokens and terminal theme colors.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f571865. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are rust).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
warp.devFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Warp One-Time Launch Modal loads about 3.1k tokens when it runs. Until then it costs about 78 tokens; SKILL.md has 502 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from warpdotdev/warp at commit f571865, republished under its AGPL-3.0 licence (© warpdotdev). 502 words, ~3,117 tokens.
.claude/skills/gui-create-launch-modal/SKILL.md (or your agent's skills folder).Scope — GUI desktop app only. This skill applies to Warp's GUI desktop front-end (the app/ crate on the WarpUI pixel/GPU framework). It does not apply to the headless TUI front-end (crates/warp_tui; cell-grid TuiElement library under crates/warpui_core/src/elements/tui), which has its own components, tests, and change-verification workflow. For TUI work, see the tui-ui-guidelines, tui-testing, and tui-verify-change skills instead.
Create a one-time launch modal — the feature-announcement design used for launches like "Orchestrate any agent, anywhere" or "Warp is now open-source."
app/src/workspace/view/orchestration_launch_modal/ — the canonical, most up-to-date example of this pattern.
warp_features/src/lib.rsapp/src/settings/ai.rsapp/src/workspace/one_time_modal_model.rsapp/src/workspace/view/<name>_launch_modal/app/src/workspace/view.rs and app/src/workspace/mod.rsapp/src/workspace/action.rsapp/assets/async/png/onboarding/<name>_launch_banner.pngcrates/warp_core/src/ui/icons.rs + SVG in app/assets/bundled/svg/If the modal uses icons not yet in the Icon enum, add them before writing the view.
In crates/warp_core/src/ui/icons.rs:
// Add to enum
YourIconName,
// Add to From<Icon> for &'static str match
Icon::YourIconName => "bundled/svg/your-icon-name.svg",Drop the SVG file at app/assets/bundled/svg/your-icon-name.svg. Use the same 24×24 viewBox format as existing icons.
Add to crates/warp_features/src/lib.rs:
/// Enables the <name> launch modal.
<YourModalName>LaunchModal,Enable for dogfood:
pub const DOGFOOD_FLAGS: &[FeatureFlag] = &[
FeatureFlag::<YourModalName>LaunchModal,
// ...
];Add to app/src/settings/ai.rs inside define_settings_group!(AISettings, ...).
Pattern: one boolean field per modal, globally synced (not respecting user sync), private.
// This is not a user-visible setting - it's merely a one-time flag to track if the
// <name> launch modal has been shown to the user.
//
// We model it as a setting so it's only shown once to a given user regardless of the number of
// devices they use.
did_check_to_trigger_<name>_launch_modal: DidShow<Name>LaunchModal {
type: bool,
default: false,
supported_platforms: SupportedPlatforms::ALL,
sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::No),
private: true,
}File: app/src/workspace/one_time_modal_model.rs
is_<name>_launch_modal_open: bool,new()is_<name>_launch_modal_open: false,In the AuthComplete → !is_existing_user branch, add to the AISettings::handle update block alongside the other pre-dismissals. Without this, new users see the modal on their second startup after onboarding.
if let Err(e) = settings
.did_check_to_trigger_<name>_launch_modal
.set_value(true, ctx)
{
log::warn!("Failed to mark <name> launch modal as dismissed: {e}");
}pub fn is_<name>_launch_modal_open(&self) -> bool {
self.is_<name>_launch_modal_open && self.target_window_id.is_some()
}
pub fn mark_<name>_launch_modal_dismissed(&mut self, ctx: &mut ModelContext<Self>) {
self.set_<name>_launch_modal_open(false, ctx);
}
#[cfg(debug_assertions)]
pub fn force_open_<name>_launch_modal(&mut self, ctx: &mut ModelContext<Self>) {
self.set_<name>_launch_modal_open(true, ctx);
}fn set_<name>_launch_modal_open(&mut self, is_open: bool, ctx: &mut ModelContext<Self>) -> bool {
if self.is_<name>_launch_modal_open != is_open {
self.is_<name>_launch_modal_open = is_open;
ctx.emit(OneTimeModalEvent::VisibilityChanged { is_open });
return true;
}
false
}is_any_modal_open|| self.is_<name>_launch_modal_openfn check_and_trigger_<name>_launch_modal(&mut self, ctx: &mut ModelContext<Self>) -> bool {
if !FeatureFlag::<Name>LaunchModal.is_enabled() {
return false;
}
let ai_settings = AISettings::as_ref(ctx);
if *ai_settings.did_check_to_trigger_<name>_launch_modal {
return false;
}
AISettings::handle(ctx).update(ctx, |settings, ctx| {
if let Err(e) = settings
.did_check_to_trigger_<name>_launch_modal
.set_value(true, ctx)
{
log::warn!("Failed to mark <name> launch modal as dismissed: {e}");
}
});
let should_show = !matches!(ChannelState::channel(), Channel::Integration);
self.set_<name>_launch_modal_open(should_show, ctx);
should_show
}check_and_trigger_all_modalsInsert before check_and_trigger_hoa_onboarding:
if self.check_and_trigger_<name>_launch_modal(ctx) {
return;
}Create app/src/workspace/view/<name>_launch_modal/mod.rs:
mod view;
pub use view::{init, <Name>LaunchModal, <Name>LaunchModalEvent};Create app/src/workspace/view/<name>_launch_modal/view.rs. Copy from orchestration_launch_modal/view.rs and adapt. Key details:
appearance.theme().surface_3() (or another surface_* token when needed)appearance.theme().main_text_color(...) and appearance.theme().sub_text_color(...)appearance.theme().surface_overlay_1() / surface_overlay_2()appearance.theme().outline()appearance.theme().terminal_colors().normal.magentaappearance.theme().ansi_overlay_1(magenta) for low-alpha backgroundsapp/assets/async/png/onboarding/<name>_launch_banner.pngMODAL_WIDTH/HERO_HEIGHT (420/92 ≈ 4.57), wrap the hero ConstrainedBox in Clipped::new(...) to prevent horizontal bleed when cover() scales itClipped; images only taller (aspect ratio < 4.57) are fine without itconst MODAL_WIDTH: f32 = 420.;
const HERO_HEIGHT: f32 = 92.;
const HERO_IMAGE_PATH: &str = "async/png/onboarding/<name>_launch_banner.png";
fn render_hero(&self) -> Box<dyn Element> {
let hero = Clipped::new( // only needed if image ratio > 4.57
ConstrainedBox::new(
Image::new(AssetSource::Bundled { path: HERO_IMAGE_PATH }, CacheOption::Original)
.with_corner_radius(CornerRadius::with_top(Radius::Pixels(8.)))
.cover()
.top_aligned()
.finish(),
)
.with_width(MODAL_WIDTH)
.with_height(HERO_HEIGHT)
.finish(),
)
.finish();
// ... close button overlay via Stack + add_positioned_child
}Use the standard badge — 24 px tall, 8 px horizontal padding, 14 px font, pill corners, with magenta sourced from terminal theme colors:
fn render_badge(appearance: &Appearance) -> Box<dyn Element> {
let magenta = appearance.theme().terminal_colors().normal.magenta;
let text = Text::new_inline("New".to_string(), appearance.ui_font_family(), 14.)
.with_color(magenta.into())
.finish();
ConstrainedBox::new(
Container::new(
Flex::row()
.with_cross_axis_alignment(CrossAxisAlignment::Center)
.with_main_axis_size(MainAxisSize::Min)
.with_child(text)
.finish(),
)
.with_horizontal_padding(8.)
.with_background(Fill::Solid(appearance.theme().ansi_overlay_1(magenta)))
.with_corner_radius(CornerRadius::with_all(Radius::Percentage(50.)))
.finish(),
)
.with_height(24.)
.finish()
}Always use https://, not http://:
const LEARN_MORE_URL: &str = "https://warp.dev/your-blog-link";app/src/workspace/view.rs// Module declaration (top)
pub(crate) mod <name>_launch_modal;
// Import
use crate::workspace::view::<name>_launch_modal::{<Name>LaunchModal, <Name>LaunchModalEvent};
// Struct field
<name>_launch_modal: ViewHandle<<Name>LaunchModal>,
// In Workspace::new()
let <name>_launch_view = ctx.add_typed_action_view(<Name>LaunchModal::new);
ctx.subscribe_to_view(&<name>_launch_view, |me, _, event, ctx| {
me.handle_<name>_launch_modal_event(event, ctx);
});
// In struct initialization
<name>_launch_modal: <name>_launch_view,
// In OneTimeModalModel subscription handler
} else if model_ref.is_<name>_launch_modal_open() {
me.focus_<name>_launch_modal(ctx);
// In View::render (inside the should_show_modal block)
if should_show_modal && one_time_modal_model.is_<name>_launch_modal_open() {
stack.add_child(ChildView::new(&self.<name>_launch_modal).finish());
}Add event handler and focus helper:
fn handle_<name>_launch_modal_event(&mut self, event: &<Name>LaunchModalEvent, ctx: &mut ViewContext<Self>) {
match event {
<Name>LaunchModalEvent::Close => {
OneTimeModalModel::handle(ctx).update(ctx, |model, ctx| {
model.mark_<name>_launch_modal_dismissed(ctx);
});
self.focus_active_tab(ctx);
ctx.notify();
}
}
}
fn focus_<name>_launch_modal(&mut self, ctx: &mut ViewContext<Self>) {
ctx.focus(&self.<name>_launch_modal);
}app/src/workspace/mod.rs// In pub fn init()
view::<name>_launch_modal::init(app);
// In debug bindings block
EditableBinding::new(
"workspace:open_<name>_launch_modal",
"[Debug] Open <Name> Launch Modal",
WorkspaceAction::Open<Name>LaunchModal,
)
.with_context_predicate(id!("Workspace")),
EditableBinding::new(
"workspace:reset_<name>_launch_modal_state",
"[Debug] Reset <Name> Launch Modal State",
WorkspaceAction::Reset<Name>LaunchModalState,
)
.with_context_predicate(id!("Workspace")),In app/src/workspace/action.rs:
/// Open the <Name> Launch Modal (for debugging)
#[cfg(debug_assertions)]
Open<Name>LaunchModal,
/// Reset the <name> launch modal dismissed state (for debugging)
#[cfg(debug_assertions)]
Reset<Name>LaunchModalState,Add both variants to the is_visible_in_command_palette false arm.
In app/src/workspace/view.rs TypedActionView::handle_action:
#[cfg(debug_assertions)]
Open<Name>LaunchModal => {
OneTimeModalModel::handle(ctx).update(ctx, |model, ctx| {
model.force_open_<name>_launch_modal(ctx);
});
ctx.notify();
}
#[cfg(debug_assertions)]
Reset<Name>LaunchModalState => {
AISettings::handle(ctx).update(ctx, |settings, ctx| {
if let Err(e) = settings
.did_check_to_trigger_<name>_launch_modal
.set_value(false, ctx)
{
log::warn!("Failed to reset <name> launch modal state: {e}");
}
});
}| User type | Sees modal? |
|---|---|
| New signup | No — pre-dismissed in AuthComplete new-user branch |
| Not signed in | No — trigger never fires without AuthComplete |
| Existing user, flag enabled | Yes — on first startup after cloud prefs load |
| Integration channel | No — suppressed by Channel::Integration check |
| Already seen it | No — setting persists globally across devices |
© warpdotdev, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/gui-create-launch-modal of warpdotdev/warp.
Open the folder on GitHubat commit f571865
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in warpdotdev/warp, which our catalogue first saw on October 7, 2026.
Warp One-Time Launch Modal next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Warp One-Time Launch Modal this skillwarpdotdev/warp | 65k | 1 repos | ~3.1k | Automated safety check: Pass | AGPL-3.0 | |
| Yoga Go Desktop UIchapar-rest/chapar | 714 | — | ~2.8k | Automated safety check: Pass | BSD-3-Clause | |
| Design Dnazanwei/design-dna | 1.9k | 1 repos | ~2.1k | Automated safety check: Pass | MIT | |
| Design Guidepaperclipai/paperclip | 98k | 1 repos | ~3.1k | Automated safety check: Pass | MIT | |
| Web Designxiaopu-ai/web-design | 783 | — | ~3k | Automated safety check: Pass | MIT | |
| Liuguang Banlan UIsickn33/agentic-awesome-skills | 47k | 1 repos | ~2.5k | Automated safety check: Pass | MIT |
chapar-rest/chapar
Guides building desktop interfaces with the Yoga Go framework: Body views, layout nodes, widgets, dialogs and headless builds.
zanwei/design-dna
Extract, define, and apply design DNA across three dimensions: design system (tokens), design style (qualitative feel), and visual effects (Canvas, WebGL, 3D, particles, shaders, scroll effects…
paperclipai/paperclip
Paperclip UI design system guide for building consistent, reusable frontend components.
xiaopu-ai/web-design
Web 视觉设计 SKILL。输入 PRD / 参考 URL / 截图 / 关键词(任意组合),先产出一份标准化 DESIGN.md 设计规范,用户确认后据此生成 UI/UX、视觉、动效、响应式全部达标的 web 代码。专攻 web 端:Landing Page、Portfolio、产品页、博客、个人站、SaaS 介绍页等。当用户说"帮我做个网站""设计一个页面""参考 XX…
sickn33/agentic-awesome-skills
Implements an interface in one of two named color modes, iridescent white or colorful black, from a parameterized starter that reports measured color intensity.
senlindesign/taste-skill
Reverse-engineers a website's design from its URL into a Markdown and JSON pair holding concrete tokens and the trade-offs behind the look.
warpdotdev/warp
Builds or updates a design system in Figma from a codebase in ordered phases: discovery, variables and tokens, components, theming and documentation, with checkpoints.
warpdotdev/warp
Required groundwork before any use_figma call: the rules and reference files for running JavaScript in a Figma file through the Plugin API without common failures.
warpdotdev/warp
Authors and edits file-based Warp software factory definitions rooted at factory.yaml, covering agents, automations, scorers and webhooks, and validates them before a pull request.
warpdotdev/warp
Turns a Figma frame or component into production code that matches the design, using the Figma MCP server and the project's own design system.
warpdotdev/warp
Migrates the compatible subset of settings and global file-based MCP servers from the Warp desktop app into Warp Agent CLI without exposing credentials or state.
warpdotdev/warp
Creates project-specific design system rules from your codebase so coding agents implement Figma designs with your components, naming and tokens.
Works with
Categories
Steps for adding a one-time launch or announcement modal to the Warp desktop GUI, gated by a feature flag and tracked by a settings field. This skill applies only to Warp's GUI desktop front-end, not its headless TUI, and treats the orchestration launch modal as the reference implementation. It lays out a checklist spanning eight places: a feature flag, a settings field, trigger logic in the one-time modal model, the view files, workspace wiring, debug actions, a hero image and any new icons.
Warp One-Time Launch Modal fits situations like: adding a feature announcement or onboarding modal to the Warp desktop app; showing a modal exactly once per user on startup; wiring a new launch modal behind a feature flag.
Run `npx skills add warpdotdev/warp --skill gui-create-launch-modal -a claude-code`. Or copy the skill folder (.agents/skills/gui-create-launch-modal in warpdotdev/warp) into .claude/skills/gui-create-launch-modal in your project. Claude Code loads it when a task matches its description.
Run `npx skills add warpdotdev/warp --skill gui-create-launch-modal -a codex`. Or copy the skill folder (.agents/skills/gui-create-launch-modal in warpdotdev/warp) into .agents/skills/gui-create-launch-modal in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add warpdotdev/warp --skill gui-create-launch-modal -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gui-create-launch-modal, .gemini/skills/gui-create-launch-modal, .github/skills/gui-create-launch-modal and .opencode/skills/gui-create-launch-modal in your project.
SKILL.md names no scripts, command-line tools or credentials: Warp One-Time Launch Modal is instructions for the agent only. Our summary lists: A checkout of the Warp repository.
SKILL.md names 1 domain. In commands or code: warp.dev; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Warp One-Time Launch Modal is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Warp One-Time Launch Modal: Yoga Go Desktop UI (chapar-rest/chapar, 714 stars), Design Dna (zanwei/design-dna, 1.9k stars), Design Guide (paperclipai/paperclip, 98k stars) and Web Design (xiaopu-ai/web-design, 783 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
warpdotdev (a GitHub organization) maintains it in warpdotdev/warp, which has 65,380 GitHub stars. The repository holds 46 skills in this directory. The repository was last updated on October 7, 2026.
Source: warpdotdev/warp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.