marimo skills
Скиллы команды marimo: правильный формат ноутбуков, перенос из Jupyter и Streamlit, запуск по расписанию, WASM
- 177 ★ репозитория
- Последний коммит
- Apache-2.0
Расширенный доступ
Почему такой уровень
- Скиллы велят агенту запускать ноутбуки через `uv run` и `marimo`, то есть выполнять код вашего проекта.
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add skills/marimo-skillsОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Скиллы велят агенту запускать ноутбуки через `uv run` и `marimo`, то есть выполнять код вашего проекта.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
marimo skills — набор скиллов от команды marimo для агентов, которые пишут реактивные ноутбуки на Python. Скилл `marimo-notebook` задает формат: ноутбук хранится в обычном `.py`, каждая ячейка — функция с декоратором `@app.cell`, зависимости объявлены в блоке PEP 723. Он же объясняет запуск через `uv run` и `marimo run`, режим скрипта для проверки и правило «показывать все элементы интерфейса всегда». Переносом занимаются `jupyter-to-marimo` и `streamlit-to-marimo`. Скилл `marimo-batch` готовит ноутбук к запуску по расписанию: параметры задаются моделью Pydantic. `wasm-compatibility` проверяет ноутбук правилами lint marimo на совместимость с WebAssembly. `implement-paper` вместе с вами превращает научную статью, загруженную через alphaxiv, в интерактивный ноутбук. `anywidget` создает виджеты, `add-molab-badge` добавляет значок molab.
Для кого. Аналитикам данных и исследователям, которые ведут ноутбуки в marimo и хотят, чтобы Claude Code или Codex писал их в нужном формате.
Подходит, если
- Агент пишет ноутбук marimo, а выходит код в стиле Jupyter без `@app.cell` и без блока зависимостей PEP 723.
- Старый ноутбук Jupyter или приложение Streamlit переезжает в marimo.
- Статью хочется разобрать на интерактивном примере, и `implement-paper` собирает ноутбук вместе с вами.
- Ноутбук должен работать по расписанию, а параметры запуска `marimo-batch` выносит в модель Pydantic.
- Перед публикацией в WASM-песочнице надо проверить совместимость: `wasm-compatibility` запускает правила lint marimo.
Не подходит, если
- Вы остаетесь на Jupyter: скиллы заточены под формат marimo и его реактивные ячейки.
- Нужна настройка сервера marimo или его развертывания: скиллы описывают написание и перенос ноутбуков.
- Задача — общая аналитика на pandas без ноутбука: формат marimo там не используется.
Пример запроса к агенту
Переведи ноутбук analysis.ipynb в marimo, раздели расчеты на ячейки и вынеси параметры в слайдеры.Ограничения
Состав набора README не перечисляет, его видно только в папке `skills/` репозитория. Шаблон в `marimo-notebook` показывает marimo 0.20.4 и Python 3.14, в проектах на старых версиях их меняют вручную. Скилл `implement-paper` берет статьи через alphaxiv и работает при доступе к этому сервису. Для запуска ноутбуков примеры используют `uv`, для установки скиллов нужен Node.js с `npx`. Скиллы пишут для агентов, которые поддерживает `npx skills`, и о других инструментах README молчит.
Как отключить. Удалите скиллы тем же CLI, которым ставили, или вручную из каталога скиллов агента. Сами ноутбуки остаются обычными файлами `.py` и продолжают работать.
Частые вопросы
Как поставить скиллы только в Claude Code?
Выполните `npx skills add marimo-team/skills --agent claude-code`. Для OpenCode замените значение флага на `opencode`.
Чем ноутбук marimo отличается от Jupyter в записи?
Это обычный файл `.py`, тогда как Jupyter хранит JSON: ячейки — функции с `@app.cell`, их входы и выходы задают связи, и marimo сам отслеживает зависимости. Блок `# /// script` в начале хранит версии пакетов.
Как понять, что ноутбук идет как скрипт?
Проверка `mo.app_meta().mode == "script"` отличает запуск `uv run` от интерактивного. Скилл советует менять в этом режиме только источник данных, а все элементы интерфейса показывать всегда.
Как проверить ноутбук на совместимость с WASM?
Попросите агента применить скилл `wasm-compatibility`: он прочитает ноутбук, запустит правила lint marimo и сообщит о найденных проблемах.
Как подготовить ноутбук к запуску по расписанию?
Скилл `marimo-batch` советует объявить параметры моделью Pydantic: у каждого поля значение по умолчанию и описание. Так модель становится единым источником правды для пакетной задачи.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
СкиллыАгент работает в одной сессии с вами в запущенном ноутбуке marimo: запускает код в том же ядре и правит ячейки на ходу
Скиллы Probabl для экспериментов по машинному обучению: пайплайн на scikit-learn и skrub, оценка, аудит и подключение к Skore Hub
17 скиллов для вычислительной биологии: RNA-seq, одноклеточный анализ, структуры белков, докинг, литература и графики
pymc-modeling, пять скиллов PyMC Labs, учит агента строить байесовские модели, проверять априоры и читать диагностику.
NVIDIA BioNeMo Agent Toolkit — скиллы для наук о жизни
NVIDIA BioNeMo Agent Toolkit
Скиллы NVIDIA для биологии и химии: агент предсказывает структуры белков, стыкует молекулы, проектирует белки и разбирает геномы
24 скилла по численным методам и материаловедению: агент проверяет устойчивость, сетки, сходимость и запуски на кластере.
Коротко о README
README короткий: команда установки, список поддерживаемых агентов через npx skills и ссылки на описания скиллов в справке Claude. Обратную связь автор просит присылать через issues, Discord или Reddit.
Бейдж для README
Исходный SKILL.md
---
name: marimo-notebook
description: Write a marimo notebook in a Python file in the right format.
---
# Notes for marimo Notebooks
marimo uses Python to create notebooks, unlike Jupyter which uses JSON. Here's an example notebook:
```python
# /// script
# dependencies = [
# "marimo",
# "numpy==2.4.3",
# ]
# requires-python = ">=3.14"
# ///
import marimo
__generated_with = "0.20.4"
app = marimo.App(width="medium")
@app.cell
def _():
import marimo as mo
import numpy as np
return mo, np
@app.cell
def _():
print("hello world")
return
@app.cell
def _(np, slider):
np.array([1,2,3]) + slider.value
return
@app.cell
def _(mo):
slider = mo.ui.slider(1, 10, 1, label="number to add")
slider
return (slider,)