cv4pve-api-powershell — скилл

Модуль PowerShell и навык для Claude Code и Codex: агент находит, запускает и снимает снимки виртуальных машин Proxmox VE по API.

  • 95 ★ репозитория
  • Последний коммит
Скилл

Широкий доступ

Почему такой уровень

  • Командлеты запускают, останавливают, клонируют и удаляют виртуальные машины с правами токена.
  • Токен API Proxmox VE открывает управление кластером, его хранят в переменной окружения.
Все причины и проверки

corsinvest/cv4pve-api-powershell

Установка

Работает в

В терминале, через SkillFoxx CLI

npx skillfoxx add skills/cv4pve-api-powershell

Определит агенты на машине, покажет уровень доступа и зафиксирует версию.

Другие способы установки

Доступ и проверки

Как мы проверяем

Широкий доступИнструмент может менять данные, выполнять команды или работать с секретами.

  • Командлеты запускают, останавливают, клонируют и удаляют виртуальные машины с правами токена.
  • Токен API Proxmox VE открывает управление кластером, его хранят в переменной окружения.

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

Corsinvest.ProxmoxVE.Api — модуль PowerShell 7 с командлетом на каждый метод API Proxmox VE. Он работает на вашей машине и обращается только к API, без SSH и без установки на узлы. Рядом лежит навык `cv4pve-api-powershell` для агентов. Навык объясняет агенту, как подключаться с токеном, искать командлет по пути API (`GET /nodes/{node}/qemu/{vmid}/config` превращается в `Get-PveNodesQemuConfig`) и как читать ответы. Перед любым изменением агент запускает команду с `-WhatIf`, показывает результат и действует только после вашего согласия. Для вызова любого пути есть `Invoke-PveRestApi`.

Для кого. Администраторам Proxmox VE, которые хотят поручить агенту инвентаризацию кластера, снимки и массовые операции с виртуальными машинами.

Подходит, если

  • Перед обновлением нужно снять снимки сорока машин по тегу.
  • Для аудита требуется список всех VM с дисками, выгруженный в CSV.
  • Шаблон надо клонировать десять раз с разными именами.
  • Лабораторный стенд гасится каждый вечер, и действие стоит автоматизировать.

Не подходит, если

  • Нужны действия на самих узлах по SSH: модуль работает только через API.
  • PowerShell 7 недоступен: на Windows PowerShell 5 модуль не рассчитан.
  • Нужен MCP-сервер: здесь лежат модуль и навык.

Пример запроса к агенту

Покажи все виртуальные машины с тегом test и, если все верно, сделай им снимки через -WhatIf, а затем по моей команде по-настоящему.

Ограничения

Нужны PowerShell 7 (`pwsh`) и токен API Proxmox VE; агенту ключ передается через переменную `PVE_API_TOKEN`, и печатать ее нельзя. Каждое изменение сразу уходит в кластер с правами токена. У `Invoke-PveRestApi` нет `-WhatIf`, поэтому метод, путь и параметры агент показывает перед вызовом. Неудачный вызов не бросает исключение: результат проверяется по `IsSuccessStatusCode`. Навык может быть новее установленного модуля: версию проверяют командой `(Get-Module Corsinvest.ProxmoxVE.Api -ListAvailable).Version`.

Как отключить. Удалите навык из каталога агента и модуль командой `Uninstall-Module Corsinvest.ProxmoxVE.Api`. Токен отзовите в интерфейсе Proxmox VE.

Частые вопросы

Как поставить модуль?

В `pwsh` выполните `Install-Module -Name Corsinvest.ProxmoxVE.Api -Scope CurrentUser`. Он обращается только к API Proxmox VE.

Подтверждает ли агент изменения?

Да. Навык требует запустить изменяющую команду с `-WhatIf`, показать строки `What if:` и выполнять вызов после согласия пользователя.

Как агент подключается к кластеру?

Каждая команда начинается с `Connect-PveCluster -HostsAndPorts <хост> -ApiToken $env:PVE_API_TOKEN`: оболочка агента не хранит соединение между вызовами.

Как найти командлет под нужный путь API?

Выполните `Get-Command -Module Corsinvest.ProxmoxVE.Api -Name *Qemu*Snapshot*`, затем `Get-Help <командлет> -Full`.

Что делать, если кластер использует самоподписанный сертификат?

Добавьте `-SkipCertificateCheck` к `Connect-PveCluster`. Навык напоминает об этом агенту.

Обсуждение

Вопросов и отзывов пока нет.

Скиллы

MCP-сервер для Proxmox VE: управление виртуалками, LXC, снапшотами и бэкапами из агента с контролем прав и одобрением команд

MCP-серверШирокий доступ649Звезды репозитория

MCP-сервер Proxmox VE с 341 инструментом: виртуальные машины, контейнеры, хранилища, кластер и бэкапы, с режимом только чтения.

MCP-серверШирокий доступ77Звезды репозитория

MCP-сервер дает агенту общую с человеком консоль PowerShell 7: команды видны в окне, пароли и коды MFA вводят вручную.

MCP-серверШирокий доступ110Звезды репозитория

devvm создает для каждого проекта отдельную виртуальную машину с нужными языками, где Claude Code и Codex не видят ваши секреты

CLIШирокий доступ599Звезды репозитория

WebSSH-консоль для VPS с MCP-сервером: агент работает на нескольких серверах, а токены с ACL ограничивают инструменты и хосты.

MCP-серверШирокий доступ133Звезды репозитория

Сравнение с похожими

Карточки с тем же главным запросом: чем они отличаются.

ИнструментОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
cv4pve-api-powershell (эта карточка)нет95
Proxmox MCP ServerнетAPI-ключ77MCP-сервер для Proxmox; здесь модуль PowerShell и навык, которые работают из обычной оболочки
ProxmoxMCP-Plusнетключ необязателен649MCP-сервер с расширенными операциями; здесь командлеты на каждый метод API

Коротко о README

Идея проекта — PowerCLI для Proxmox VE: весь API как командлеты, объекты в конвейере, `-WhatIf` и `-Confirm` на изменяющих командах. Для агентов есть отдельная страница документации про Claude Code и Codex.

Бейдж для README

Исходный SKILL.md

---
name: cv4pve-api-powershell
description: "Read and operate a Proxmox VE cluster from PowerShell 7 with the Corsinvest.ProxmoxVE.Api module: list and find VMs, containers and nodes, read configurations, start, stop, snapshot, and call any API endpoint. Use it when the user works in PowerShell or asks for a PowerShell script for Proxmox VE."
---

# cv4pve-api-powershell

The PowerShell module `Corsinvest.ProxmoxVE.Api` has one cmdlet per Proxmox VE API endpoint plus a few
functions for guests and tasks. It needs PowerShell 7 (`pwsh`). Every change goes to the cluster at once,
with the privileges of the token.

## Rules

- Your shell does not keep the connection between commands: start every command with
  `Connect-PveCluster -HostsAndPorts <host> -ApiToken $env:PVE_API_TOKEN`, adding `-SkipCertificateCheck`
  if the nodes have a self-signed certificate. Ask the user for the host; never print the variable.
- Never call `Connect-PveCluster` without `-ApiToken` or `-Credentials`: it waits for `Get-Credential`.
  Do not use `Out-GridView` or `.ToGridView()` either.
- Reads need no agreement. Before any `New-`, `Set-`, `Remove-` cmdlet or guest function that changes
  something (`Start-`, `Stop-`, `Restart-`, `Reset-`, `Suspend-`, `Resume-PveGuest`, `New-`, `Remove-`,
  `Undo-PveGuestSnapshot`, `Unlock-PveGuest`): run the same command with `-WhatIf`, show the user its
  `What if:` lines, and run it for real only after the user agrees.
- `Invoke-PveRestApi` has no `-WhatIf`: before a call with `-Method Set`, `Create` or `Delete`, show the
  method, the path and the parameters and wait for agreement.
- A failed call does not throw: check `IsSuccessStatusCode` of every response; `StatusCode` and
  `ReasonPhrase` say why (400 parameter, 401 token, 403 privilege, 500 server, -1 no answer).
- If a parameter is refused, read `Get-Help <cmdlet> -Full`: this skill can be newer than the module
  (`(Get-Module Corsinvest.ProxmoxVE.Api -ListAvailable).Version`).

## Find the cmdlet

Generated cmdlets follow the API path: `GET /nodes/{node}/qemu/{vmid}/config` is `Get-PveNodesQemuConfig`,
`POST /nodes/{node}/qemu/{vmid}/snapshot` is `New-PveNodesQemuSnapshot`, `PUT` is `Set-`, `DELETE` is
`Remove-`.

```powershell
Get-Command -Module Corsinvest.ProxmoxVE.Api -Name *Qemu*Snapshot*   # cmdlets about QEMU snapshots
Get-Help New-PveNodesQemuSnapshot -Full                              # parameters
```

## Read

```powershell
Get-PveGuest | Select-Object vmid, name, node, type, status          # every VM and container
Get-PveGuest -VmIdOrName '@tag-prod,-@node-pve03'                    # a selection, as in the other cv4pve tools
Get-PveNode
(Get-PveGuest -VmIdOrName 100 | Get-PveNodesQemuConfig).Response.data
```

Сообщить о проблеме