extension-development — скилл для Claude Code: сборка и hot-reload
Скилл для разработки расширений Nimbalyst: собирает, ставит и перезагружает их прямо из запущенного приложения через MCP-инструменты.
npx skills add nimbalyst/nimbalyst --skill extension-development -a claude-codeЧто делает extension-development
Скилл закрывает цикл разработки расширения Nimbalyst без ручных сборок в терминале. Агент вызывает MCP-инструменты mcp__nimbalyst-extension-dev__extension_build, extension_install и extension_reload — последний пересобирает и переустанавливает расширение за один шаг. Сборка идёт через скрипт build проекта: pnpm, если проект на pnpm, иначе npm.
Внутри есть и тестовые инструменты. extension_test_run гоняет Playwright-скрипты против запущенного Nimbalyst по CDP — можно передать инлайновый код или путь к .spec.ts. Плюс extension_test_open_file для открытия файла перед тестом, extension_test_ai_tool для прямого вызова обработчика AI-инструмента расширения и логи процессов для отладки.
Перед работой включите Extension Dev Tools в Settings > Advanced — без этого сборка и установка не пойдут. Каркас проекта удобнее создать через File > New Extension Project или команду /new-extension из Extension Developer Kit. Учтите: extension_install требует уже собранного расширения, а restart_nimbalyst агент должен вызывать только по вашей явной просьбе.
Какие задачи решает
- собрать расширение Nimbalyst без запуска сборки вручную
- переустановить расширение после правки кода за один шаг
- проверить, загрузилось ли расширение и что оно отдаёт
- прогнать Playwright-тест против живого экземпляра приложения
- вызвать обработчик AI-инструмента расширения напрямую, минуя MCP-роутинг
Примеры запросов агенту
- собери расширение в /path/to/my-extension и поставь его
- перезагрузи расширение com.nimbalyst.my-extension
- прогони тест из tests/basics.spec.ts и покажи, что упало
Как установить extension-development
1Через Skills CLI (Vercel)
npx skills add nimbalyst/nimbalyst --skill extension-development -a claude-code2Вручную: положить файлы
~/.claude/skills/extension-development/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/extension-development/
1Через Skills CLI (Vercel)
npx skills add nimbalyst/nimbalyst --skill extension-development -a codex2Вручную: положить файлы
.agents/skills/extension-development/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add nimbalyst/nimbalyst --skill extension-development -a cursor2Вручную: положить файлы
.cursor/skills/extension-development/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install nimbalyst/nimbalyst extension-development2Вручную: положить файлы
.github/skills/extension-development/SKILL.md1Через Skills CLI (Vercel)
npx skills add nimbalyst/nimbalyst --skill extension-development -a gemini-cli2Командой платформы
gemini skills install https://github.com/nimbalyst/nimbalyst --path packages/extensions/extension-dev-kit/claude-plugin/skills/extension-developmentВручную: положить файлы
.devin/skills/extension-development/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add nimbalyst/nimbalyst --skill extension-development -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о extension-development
Как установить extension-development в Claude?
Выполните npx skills add nimbalyst/nimbalyst --skill extension-development -a claude-code. Скилл встанет в ~/.claude/skills/extension-development/SKILL.md.
Что делает extension-development?
Даёт агенту MCP-инструменты для сборки, установки и hot-reload расширений Nimbalyst изнутри запущенного приложения, а также для тестирования через Playwright.
Что нужно включить перед сборкой расширения?
Extension Dev Tools в Settings > Advanced. Без этого инструменты сборки и установки не сработают, а extension_install потребует уже собранного расширения.
Исходный текст
SKILL.md · MIT
---
name: extension-development
description: Build, install, and hot-reload Nimbalyst extensions using MCP tools. Use when developing, testing, or iterating on Nimbalyst extensions.
---
# Extension Development in Nimbalyst
Nimbalyst provides MCP tools for building, installing, and hot-reloading extensions directly from within the running app. This enables rapid iteration on extension development without manually running build commands.
The recommended in-app scaffold flow uses `File > New Extension Project`, `Developer > New Extension Project`, or the Extension Developer Kit's `/new-extension` command. Enable Extension Dev Tools in Settings > Advanced before using the build/install workflow.
## Available MCP Tools
### Build Extension
```
mcp__nimbalyst-extension-dev__extension_build
```
Runs the project's `build` script (usually vite build) with pnpm if the project uses pnpm, npm otherwise.
**Parameters:**
- `path`: Absolute path to the extension project root (directory containing package.json and manifest.json)
**Returns:** Build output including any errors or warnings.
### Install Extension
```
mcp__nimbalyst-extension-dev__extension_install
```
Installs a built extension into the running Nimbalyst instance. The extension must be built first.
**Parameters:**
- `path`: Absolute path to the extension project root
**Returns:** Installation status and any validation warnings.
### Hot Reload Extension
```
mcp__nimbalyst-extension-dev__extension_reload
```
Rebuilds and reinstalls an extension in one step. This is the most common tool for iterating on extension development.
**Parameters:**
- `extensionId`: The extension ID from manifest.json (e.g., "com.nimbalyst.my-extension")
- `path`: Absolute path to the extension project root
**Returns:** Build and reload status.
### Uninstall Extension
```
mcp__nimbalyst-extension-dev__extension_uninstall
```
Removes an installed extension from the running Nimbalyst instance.
**Parameters:**
- `extensionId`: The extension ID to uninstall
### Get Extension Status
```
mcp__nimbalyst-extension-dev__extension_get_status
```
Gets the current status of an installed extension, including whether it loaded successfully and what it contributes.
**Parameters:**
- `extensionId`: The extension ID to query
### Restart Nimbalyst
```
mcp__nimbalyst-extension-dev__restart_nimbalyst
```
Restarts the entire Nimbalyst application. **Only use when explicitly requested by the user.**
## Testing Tools
### Run Playwright Tests
```
mcp__nimbalyst-extension-dev__extension_test_run
```
Execute Playwright scripts against the running Nimbalyst instance via CDP. Supports inline scripts or `.spec.ts` file paths.
**Parameters:**
- `script`: Inline Playwright code (runs inside an async test with `page` connected to Nimbalyst)
- `testFile`: Absolute path to a `.spec.ts` file
- `timeout`: Max execution time in ms (default: 30000)
Provide either `script` or `testFile`, not both.
### Open File for Testing
```
mcp__nimbalyst-extension-dev__extension_test_open_file
```
Opens a file in Nimbalyst and waits for the editor to mount. Use before running tests that need a specific file open.
**Parameters:**
- `filePath`: Absolute path to the file to open
- `waitForExtension`: Extension ID to wait for (waits until the extension's editor container renders)
- `timeout`: Max wait time in ms (default: 5000)
### Test AI Tool Handler
```
mcp__nimbalyst-extension-dev__extension_test_ai_tool
```
Execute an extension's AI tool handler directly and return the result. Bypasses full MCP routing.
**Parameters:**
- `extensionId`: The extension ID
- `toolName`: Tool name without extension prefix (e.g., "get_elements")
- `args`: Arguments object to pass to the handler
- `filePath`: For editor-scoped tools: file path for context
## Development Workflow
### Initial Setup
1. Create extension project with `/new-extension <path> <name> [file-patterns]`
2. Implement the extension code
3. Build with `extension_build`
4. Install with `extension_install`
5. Test in Nimbalyst
### Iteration Loop with Testing
1. Make code changes
2. Run `extension_reload` to rebuild and reinstall
3. Run `extension_get_status` to verify it loaded
4. Run `extension_test_open_file` to open a sample file
5. Run `extension_test_run` with Playwright scripts to verify behavior
6. Use `capture_editor_screenshot` for visual verification
7. Check `get_renderer_debug_logs` for runtime errors
8. Fix issues and repeat from step 1
**Inline test example:**
```
extension_test_run({
script: `
const editor = page.locator('[data-extension-id="com.nimbalyst.my-ext"]');
await expect(editor).toBeVisible();
await editor.locator('.save-btn').click();
await expect(editor.locator('.status')).toHaveText('Saved');
`
})
```
**Test file example:**
```
extension_test_run({ testFile: "/path/to/extension/tests/basics.spec.ts" })
```
### Debugging
1. Check extension status with `extension_get_status`
2. Read logs with `mcp__nimbalyst-extension-dev__get_main_process_logs` (filter by component: "EXTENSION")
3. Check renderer logs with `mcp__nimbalyst-extension-dev__get_renderer_debug_logs`
## Important Notes
- **Always build before install** - `extension_install` requires a pre-built extension
- **Use `extension_reload` for iteration** - It combines build + reinstall in one step
- **Check manifest validation** - Build and install tools validate manifest.json and report warnings
- **Extensions load on app start** - For full reload, user may need to restart Nimbalyst
- **Never restart without permission** - Only use `restart_nimbalyst` when the user explicitly asks
## Common Issues
### "Extension not found" after install
- Check that the extension ID in manifest.json matches what you're querying
- Verify the build output exists in `dist/index.js`
### Build fails
- Check that dependencies were installed in the extension directory (`pnpm install` or `npm install`, matching its lockfile)
- Verify vite.config.ts is properly configured
- Check for TypeScript errors in the output
### Extension doesn't appear
- Use `extension_get_status` to check if it's loaded
- Check the release channel - some extensions require "alpha" channel
- Verify the extension is enabled in Settings > Extensions
© nimbalyst · MIT · nimbalyst/nimbalyst