Быстрый старт
Нужны NeuroSquad и Node.js 18.17 или новее. Никакого аккаунта разработчика; для простого шаблона — никаких инструментов сборки.
1. Создайте карточку
npx @neurosquad/card-sdk create my-card # plain HTML + JS, no build step
npx @neurosquad/card-sdk create my-card --template react # React + Vite + TypeScriptОба шаблона дают одну и ту же рабочую карточку: агенты на холсте с живыми статусами, черновик, который сохраняется в хранилище карточки, входной и выходной порт и инструмент, который могут вызывать подключённые агенты. Прочитайте её, потом меняйте.
Простой шаблон (vanilla):
my-card/
neurosquad-card.json the manifest: name, size, permissions, settings, ports, tools
index.html the page loaded into the card
main.js the card's code
style.css
icon.png square PNG or WebP, 128 KB at most
vendor/ the SDK (card-sdk.js), the UI kit (ui.css), the mock host, the manifest schemaШаблон React: тот же манифест и иконка, папка src/ с main.tsx, App.tsx и i18n.ts и
конфиг Vite, уже настроенный под карточки (относительные URL, никаких встроенных скриптов). Сначала
выполните npm install; npm run build пишет dist/ — именно его загружает приложение.
2. Посмотрите без приложения
Откройте страницу саму по себе — она заработает на мок-хосте с примерами агентов и подключённой заметкой, так что над внешним видом можно работать в любом браузере:
npx serve . # plain template, then open http://localhost:3000
npm run dev # React templateВ консоли браузера им управляет mockHost: mockHost.setAgentStatus('a2', 'working'),
mockHost.setLanguage('ru'), mockHost.sendPortMessage('text', 'hello'). См.
Тесты с мок-хостом.
3. Запустите её вживую в NeuroSquad
В NeuroSquad: Settings → Custom cards → Developer mode. Он позволяет CLI на этом компьютере
попросить подключить папку; слушает только 127.0.0.1.
В папке карточки выполните npx @neurosquad/card-sdk dev. Приложение попросит подтвердить
подключение, а потом покажет тот же диалог разрешений, что увидит пользователь. Примите его.
На холсте: + → Custom card… и выберите свою карточку (у неё значок Dev).
Каждое сохранение перезагружает карточку. Терминал, где запущен dev, печатает журнал карточки —
card.log.*, необработанные ошибки и отклонённые промисы. r — перезагрузить вручную, q —
выйти.
С шаблоном React dev ещё и запускает за вас npm run watch, так что dist/ пересобирается при
каждом сохранении. Передайте --no-build, чтобы запускать свой наблюдатель.
Режим разработчика — не обход согласия: подключённая папка получает ровно те разрешения, что объявлены в её манифесте, и только после того же диалога. Поменяете разрешения в манифесте — карточка спросит снова.
Без CLI. Кнопка Settings → Custom cards → Link a folder… тоже подключает папку — удобно, если вы просто хотите попробовать карточку, которую вам прислали папкой.
4. Проверьте её так, как проверит установщик
npx @neurosquad/card-sdk validatevalidate прогоняет собственные проверки манифеста из приложения и правила установщика для файлов,
предупреждает о том, что заблокирует песочница (встроенные скрипты, внешние файлы), и печатает диалог
установки, который увидят ваши пользователи. pack идёт на шаг дальше и перечисляет, какие именно
файлы будут установлены, вместе с хешем дерева, который записывает приложение. См.
Справочник CLI.
5. Опубликуйте на GitHub
Запушьте папку карточки в репозиторий на GitHub — в отдельный или в папку внутри большого. Это и есть вся публикация. Важно не ошибиться в нескольких вещах:
neurosquad-card.jsonдолжен лежать в корне папки карточки.- Коммитьте результат сборки. Приложение ставит прямо из репозитория и никогда ничего не
собирает. В
.gitignoreшаблона React папкаdist/намеренно не игнорируется. - Ставьте теги на релизы (
v1.0.0) — тогда можно установить фиксированную версию или следить за последним релизом.
Подробнее — в Публикации и обновлениях.
6. Установите её с GitHub
В Settings → Custom cards → Install a card вставьте your-name/my-card (или
your-name/my-cards/pomodoro для карточки из папки pomodoro репозитория, your-name/my-card@v1.0.0
для тега) и нажмите Install. Именно так делают ваши пользователи; см.
Установку карточек сообщества.
Самая маленькая карточка
Шаблон не нужен. Три файла:
{
"manifestVersion": 1,
"name": "hello-card",
"displayName": "Hello",
"version": "0.1.0",
"protocol": 1
}<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<script type="module" src="main.js"></script>
</head>
<body>
<h1 id="title">…</h1>
</body>
</html>// card-sdk.js is dist/card-sdk.js from the @neurosquad/card-sdk package, copied next to this file.
import { connect } from './card-sdk.js'
const card = await connect()
document.getElementById('title').textContent = `Hello from ${card.workspace.name}`
card.setStatus('Ready', { tone: 'success' })Она не просит разрешений, поэтому может только рисовать в своей коробке, пользоваться хранилищем и настройками и менять свою шапку — и это уже полезная карточка.