Agent skill · Audited from source
modal
skill · lobehub/lobehubNOASSERTION licenceAudited 28 Oct 2026 · source c7f871eafcc5
Is it safe? With care — CAUTION, grade B (89/100). We read this skill's source at commit c7f871eafcc5 and found no filesystem, network or shell access and no hard-coded secrets. The audit raised 4 findings, 0 critical or high. What it does: Use for modals, dialogs and confirmations with createModal, confirmModal, ModalHost or base-ui modal APIs.
Cite
Cite this page
ModelsAtlas. “modal (lobehub/lobehub)”. Retrieved 28 Oct 2026. https://modelsatlas.com/skills/lobehub/modal
3 skills are called “modal”. You are viewing lobehub/lobehub.
- lobehub/lobehub★ 84k!CAUTION
- davila7/claude-code-templates★ 32k✓SAFE
- paperclipai/companies★ 919!CAUTION
Trust audit
Audit 0.4.1 · source read 28 Oct 2026
CAUTION means the audit found things worth knowing before you trust this skill. Grade B is shared by 13,985 of 14,816 audited skills.
What the source does
- FilesystemNone observedNo reads or writes in the source
- NetworkNone observedNo outbound calls in the source
- ShellNone observedNo commands run in the source
- DependenciesPinnedNothing floats
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | WARN | 4 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | NA | 0 |
L2 Instructions | Prompt injection, authority framing, hidden directives | PASS | 0 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass.
Findings (4)
MEDIUMInventory / provenanceinv.symlink · .claude/skills
.claude/skills
- Why
- link not followed
- Fix
- —
MEDIUMInventory / provenanceinv.symlink · .codex/skills
.codex/skills
- Why
- link not followed
- Fix
- —
MEDIUMInventory / provenanceinv.symlink · .cursor/skills
.cursor/skills
- Why
- link not followed
- Fix
- —
MEDIUMInventory / provenanceinv.symlink · .gemini/skills
.gemini/skills
- Why
- link not followed
- Fix
- —
Audit 0.4.1 · source sha c7f871eafcc5 · 28 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisherlobehub GitHub organizationOwner of the repository this skill is read from
- Source folderlobehub/lobehub/.agents/skills/modalThe exact folder we audited
- LicenceNOASSERTIONAs the repository states it
- Commit pinned for this verdictc7f871eafcc5A new audit runs when the source changes
- Repository statusNot archivedPushed today
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: Use for modals, dialogs and confirmations with createModal, confirmModal, ModalHost or base-ui modal APIs.
---
name: modal
description: 'Use for modals, dialogs and confirmations with createModal, confirmModal, ModalHost or base-ui modal APIs.'
user-invocable: false
---
# Modal Imperative API Guide
## Recommended: `@lobehub/ui/base-ui`
New code should use the **base-ui** modal stack (headless primitives, not antd `Modal`):
- `createModal`, `confirmModal`, `ModalHost` from `@lobehub/ui/base-ui`
- `useModalContext` from `@lobehub/ui/base-ui` inside modal **content**
Body slot: pass **`content`** (or `children`; runtime uses `content ?? children`).
### Global `ModalHost` (required)
Base-ui `createModal` renders through a **separate** host from the root package. The app must mount **`ModalHost`** from `@lobehub/ui/base-ui` once near the root (e.g. next to other global hosts). Without it, `createModal` calls will not appear.
If the project only mounts `ModalHost` from `@lobehub/ui`, add a second lazy `ModalHost` from `@lobehub/ui/base-ui` until all imperative modals are migrated.
### Why imperative?
| Mode | Characteristics | Recommended |
| ----------- | ------------------------------------ | ----------- |
| Declarative | `open` state + `<Modal />` | ❌ |
| Imperative | Call `createModal()`, no local state | ✅ |
### File structure
```
features/
└── MyFeatureModal/
├── index.tsx # export createXxxModal
└── MyFeatureContent.tsx # modal body
```
### 1. Content (`MyFeatureContent.tsx`)
```tsx
'use client';
import { useModalContext } from '@lobehub/ui/base-ui';
import { useTranslation } from 'react-i18next';
export const MyFeatureContent = () => {
const { t } = useTranslation('namespace');
const { close } = useModalContext();
return <div>{/* ... */}</div>;
};
```
### 2. `createModal` (`index.tsx`)
```tsx
'use client';
import { createModal } from '@lobehub/ui/base-ui';
import { t } from 'i18next';
import { MyFeatureContent } from './MyFeatureContent';
export const createMyFeatureModal = () =>
createModal({
content: <MyFeatureContent />,
footer: null,
maskClosable: true,
styles: {
content: { overflow: 'hidden', padding: 0 },
},
title: t('myFeature.title', { ns: 'setting' }),
width: 'min(80%, 800px)',
});
```
### 3. Usage
```tsx
import { createMyFeatureModal } from '@/features/MyFeatureModal';
const handleOpen = useCallback(() => {
createMyFeatureModal();
}, []);
return <Button onClick={handleOpen}>Open</Button>;
```
### i18n
- **Content**: `useTranslation` in components.
- **`createModal` options**: `import { t } from 'i18next'` where hooks are unavailable.
### `useModalContext`
```tsx
const { close, setCanDismissByClickOutside } = useModalContext();
```
### Closing: which callback actually fires
`close()` — from `useModalContext()` inside the content, or from the returned
`ModalInstance` — only flips the stack entry to `open: false`. It does **not** go
through base-ui's dismissal path, so:
| callback | user dismissal (Esc / backdrop / header ✕) | `close()` from content or instance |
| ---------------------- | ------------------------------------------ | ---------------------------------- |
| `onOpenChange` | fires | **does not fire** |
| `onOpenChangeComplete` | fires with `false` | fires with `false` |
Put caller-side cleanup (clearing an editing flag, resetting the provider's
`open` state) on **`onOpenChangeComplete`**. Wiring it to `onOpenChange` looks
correct until a footer button closes the modal, and then the caller never learns
it went away — typically leaving a flag set so the modal cannot be reopened.
`createModal` only ever completes with `false` (the imperative renderer supplies
the argument itself and never forwards the prop to base-ui), but still guard on
it — other base-ui primitives such as `DropdownMenu` do report both directions,
and the guard keeps the call site from depending on that difference:
```tsx
onOpenChangeComplete: (open) => {
if (!open) onClosed?.();
},
```
### Common options (base-ui)
`ImperativeModalProps` builds on `BaseModalProps`: `title`, `width`, `maskClosable`, `open`, `onOpenChange`, `footer`, `styles` / `classNames` (keys: `backdrop`, `popup`, `header`, `title`, `close`, `content`, ...).
| Property | Notes |
| -------------- | ---------------------------------------- |
| `content` | Main body (preferred name vs `children`) |
| `maskClosable` | Click outside to dismiss |
| `styles.*` | Semantic regions, not antd `styles.body` |
### Confirm
```tsx
import { confirmModal } from '@lobehub/ui/base-ui';
confirmModal({
title: '...',
content: '...',
okText: '...',
cancelText: '...',
onOk: async () => {},
});
```
---
## Legacy: `@lobehub/ui` (root)
`createModal` from the root `@lobehub/ui` entry is typed as **antd `Modal` props** (`children`, `allowFullscreen`, `getContainer`, `destroyOnHidden`, `styles.body`, etc.). App code no longer imports it; do not reintroduce it — use **`@lobehub/ui/base-ui`**.
---
## Examples
- Base-ui (preferred): follow sections above; ensure **base-ui `ModalHost`** is mounted.
- Base-ui call sites: `src/features/SkillStore/index.tsx`, `src/features/LibraryModal/CreateNew/index.tsx`Excerpt, first 5,379 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit c7f871e
git clone https://github.com/lobehub/lobehub git -C lobehub checkout c7f871eafcc5
The author documents no install command, so this uses the repository directly. Our verdict covers commit c7f871eafcc5 only.
Works in
The author has not said which agents this skill supports, and we have not tested it in any.
Audit history
Every audit, every source change
- !CAUTION B 89 / 100
first audit · source
c7f871eafcc5
README badge
For maintainers · shows the latest audit
[](https://modelsatlas.com/skills/lobehub/modal/)
The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.
Similar skills
lobehub/lobehub
Use for the OSS repository map, code-layer lookup, apps/packages/src ownership and business stubs.
lobehub/lobehub
Use for Linear issues, LOBE-xxx links, status updates, completion comments and sub-issue trees.
lobehub/lobehub
Use for user-facing strings and react-i18next locale keys, namespaces, interpolation, translations or bun run i18n.
lobehub/lobehub
Use for keyboard shortcuts, registration, key combinations, scope, conflicts and shortcut tooltips.
lobehub/lobehub
Use for Drizzle schemas and queries: tables, indexes, relations, joins and inferred types. Rollout belongs to db-migrations.
lobehub/lobehub
Electron desktop development guide — IPC handlers, controllers, preload scripts, window/menu management.
Add this badge to your README
[](https://modelsatlas.com/skills/lobehub/modal/)
<a href="https://modelsatlas.com/skills/lobehub/modal/"><img src="https://modelsatlas.com/skills/lobehub/modal/badge.svg" alt="ModelsAtlas: CAUTION B"></a>
Questions about modal
What does the modal skill do?
Is modal safe to install?
What can modal access on my machine?
How current is this page?
Sources
- github.com/lobehub/lobehub/tree/canary/.agents/skills/modal — the audited source at commit c7f871eafcc5 and every finding aboveObserved · 28 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What does the modal skill do?
- Is modal safe to install?
- What can modal access on my machine?