Back to skills
SkillHub ClubShip Full StackFull Stack

messagebox

Imported from https://github.com/JasonXuDeveloper/JEngine.

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
2,187
Hot score
99
Updated
March 19, 2026
Overall rating
C4.8
Composite score
4.8
Best-practice grade
F36.0

Install command

npx @skill-hub/cli install jasonxudeveloper-jengine-messagebox

Repository

JasonXuDeveloper/JEngine

Skill path: .claude-plugin/skills/messagebox

Imported from https://github.com/JasonXuDeveloper/JEngine.

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: JasonXuDeveloper.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install messagebox into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/JasonXuDeveloper/JEngine before adding messagebox to shared team environments
  • Use messagebox for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: messagebox
description: MessageBox async modal dialogs for Unity with UniTask. Triggers on: confirmation dialog, modal popup, prompt, alert, user confirmation, yes/no dialog, OK/Cancel, async dialog, await user input, delete confirmation, save confirmation
---

# MessageBox - Async Modal Dialogs

Built on UniTask for non-blocking async operations with automatic object pooling.

## When to Use
- Confirmation dialogs (Yes/No, OK/Cancel)
- Information prompts (OK only)
- Awaiting user decisions in gameplay

## API

### Show Method
```csharp
public static UniTask<bool> Show(
    string title,
    string content,
    string ok = "OK",
    string no = "Cancel"
)
```
Returns `true` for confirm, `false` for cancel.

### Management
- `MessageBox.CloseAll()` - Dismiss all active dialogs (for scene transitions)
- `MessageBox.Dispose()` - Release all pooled instances (app shutdown)
- `MessageBox.ActiveCount` - Currently displayed dialogs
- `MessageBox.PooledCount` - Cached instances in pool

## Patterns

### Confirmation Dialog
```csharp
bool confirmed = await MessageBox.Show(
    "Delete Item",
    "Are you sure you want to delete this item?",
    ok: "Delete",
    no: "Cancel"
);

if (confirmed)
{
    DeleteItem();
}
```

### Custom Button Text
```csharp
bool saved = await MessageBox.Show(
    "Save Changes",
    "Keep your changes?",
    ok: "Save",
    no: "Discard"
);
```

### Single Button (Notification)
```csharp
// Pass null or empty string to hide cancel button
await MessageBox.Show(
    "Success",
    "Operation completed!",
    ok: "OK",
    no: null
);
```

### Clean Up Before Scene Change
```csharp
MessageBox.CloseAll();
SceneManager.LoadScene("NextScene");
```

## Common Mistakes
- Forgetting to await (dialog shows but code continues immediately)
- Not handling both true/false return values
- Not calling CloseAll() before scene transitions
messagebox | SkillHub