Skip to content
Back to skills

Experimental Chat Popup

ASecurity

"Use and maintain vizro-experimental chat model and floating popup,

  • 247 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 9, 2026
developmentpythonrustbashapibackendsecurity

Works with

  • api
  • mcp

Security analysis

A100/100

Scanned September 9, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill experimental-chat-popup --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Experimental Chat Popup?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Experimental Chat Popup
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-experimental-chat-popup/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-experimental-chat-popup)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: experimental-chat-popup
description: "Use and maintain vizro-experimental chat model and floating popup,
  preserving optional LLM dependencies and security boundaries."
disable-model-invocation: true
metadata:
  disco-role: operating
license: Apache 2.0
---

# Experimental Chat Popup

Use this sub-skill when the task involves `vizro-experimental`, the `Chat` model, floating chat popup, dashboard-agent helper, chat security, or experimental chat examples/docs.

Route elsewhere when the task is mainly about:
- Stable Vizro core dashboard layout/components: `../core-dashboard-build/SKILL.md` and `../core-components-data-actions/SKILL.md`.
- Vizro-MCP agent workflows: `../mcp-agent-workflows/SKILL.md`.

## Experimental caveat

`vizro-experimental` is an incubation package. APIs may change, be removed, or graduate into `vizro-core`. Say this when giving user-facing guidance.

## Chat model

```python
from vizro_experimental.chat.models.chat import Chat

chat = Chat(
    id="assistant",
    placeholder="Ask a question about this dashboard",
    file_upload=False,
    example_questions=["What changed this month?"],
)
```

Live signature in the verified snapshot:

```text
Chat(*, id=<factory>, type='chat', actions=[], placeholder='How can I help you?', file_upload=False, example_questions=[])
```

## Floating popup

The popup package uses lazy exports:

```python
from vizro_experimental.chat.popup import add_chat_popup

add_chat_popup(
    generate_response=lambda messages, **kwargs: "Local deterministic response",
    title="Analytics Assistant",
    streaming=False,
)
```

Available lazy exports:

- `add_chat_popup`
- `create_dashboard_agent`
- `make_generate_response`

There is no `Popup` class exported from `vizro_experimental.chat.popup` in this snapshot.

## Optional dependency boundary

Preserve the BYO callback boundary:

- Users who pass `generate_response` should not need dashboard-agent provider dependencies.
- Do not promote dashboard-agent/pydantic-ai imports to module scope if that would break BYO mode.
- Only load `create_dashboard_agent`/`make_generate_response` when the user explicitly requests agent-backed behavior.

## Security defaults

- Treat chat input and uploaded file content as untrusted.
- Do not leak API keys or environment variables into chat responses or logs.
- Avoid executing user-provided code from chat messages.
- Prefer deterministic/mocked `generate_response` in tests.
- Require explicit provider credentials and network/cost authorization before live LLM calls.

## Repository tests

From `vizro-experimental/`:

```bash
hatch run test-unit tests/unit/test_component.py tests/unit/test_security.py tests/unit/popup/test_popup.py
```

Browser integration tests under `tests/integration/browser/` require a browser backend; do not make them required on a host without Chrome/Chromium.

## Debug checklist

- Is the task using stable core features or truly experimental chat APIs?
- Is the user using `Chat` as a model component or adding the floating popup to an already built Vizro app?
- Is `generate_response` provided? If yes, keep provider dependencies out of the path.
- If using dashboard-agent helpers, are credentials/model/provider settings available and authorized?
- Are tests using mocked local responses rather than live LLM calls?

## Evidence anchors

- `vizro-experimental/src/vizro_experimental/chat/models/chat.py`
- `vizro-experimental/src/vizro_experimental/chat/popup/__init__.py`
- `vizro-experimental/src/vizro_experimental/chat/popup/popup.py`
- `vizro-experimental/src/vizro_experimental/chat/popup/dashboard_agent.py`
- `vizro-experimental/docs/pages/chat/{chat-component,api-reference}.md`
- `vizro-experimental/examples/chat_component/app.py`
- `vizro-experimental/tests/unit/{test_component,test_security}.py`
- `vizro-experimental/tests/unit/popup/test_popup.py`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…