# pulumi-component

Скилл ведёт агента по написанию классов ComponentResource в Pulumi: интерфейс аргументов, дочерние ресурсы, registerOutputs.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 1500 установок · ★ 78
- Автор: pulumi
- Лицензия: Apache-2.0 · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/pulumi/agent-skills/tree/HEAD/pulumi/skills/pulumi-component/SKILL.md
- Обновлён: 2026-10-09
- HTML: https://affpapa.org/nevibecode/skills/pulumi-component

## Что делает

ComponentResource собирает связанные ресурсы инфраструктуры в один логический блок. В выводе `pulumi preview` и `pulumi up` он выглядит как один узел, а дочерние ресурсы вложены внутрь. Скилл описывает весь цикл работы с такими компонентами: от создания класса до публикации пакета.

Внутри разобраны четыре обязательных элемента компонента. Нужно унаследоваться от `ComponentResource` и вызвать `super()` с type URN вида `<package>:<module>:<type>`, принять name, args и `ComponentResourceOptions`, проставить `parent: this` у всех дочерних ресурсов и вызвать `registerOutputs()` последней строкой конструктора. Без `registerOutputs()` компонент зависает в состоянии «creating» в консоли Pulumi, а выходные значения не попадают в state. Отдельный раздел — имена дочерних ресурсов: жёстко заданное имя вроде `my-bucket` даёт коллизию при втором экземпляре компонента, поэтому имя берут от параметра `name`.

Ещё скилл разбирает проектирование args-интерфейса: свойства оборачивают в `Input<T>`, чтобы принимались и обычные значения, и `Output<T>` от других ресурсов. Для общих паттернов Pulumi — работы с Output, секретами, алиасами — в описании указан отдельный скилл `pulumi-best-practices`.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add pulumi/agent-skills --skill pulumi-component -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/pulumi-component/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/pulumi-component/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add pulumi/agent-skills --skill pulumi-component -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/pulumi-component/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add pulumi/agent-skills --skill pulumi-component -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/pulumi-component/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install pulumi/agent-skills pulumi-component
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/pulumi-component/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add pulumi/agent-skills --skill pulumi-component -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/pulumi/agent-skills --path pulumi/skills/pulumi-component
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/pulumi-component/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add pulumi/agent-skills --skill pulumi-component -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/pulumi/agent-skills/tree/HEAD/pulumi/skills/pulumi-component/SKILL.md

## Когда брать
- собрать повторяемый компонент из разрозненных ресурсов
- спроектировать args-интерфейс, который принимает Output от других ресурсов
- сделать компонент пригодным для нескольких языков Pulumi
- опубликовать пакет компонента
- разобраться, почему компонент завис в состоянии creating

## Примеры запросов агенту
- Помоги написать ComponentResource для статического сайта на S3
- Спроектируй args-интерфейс компонента так, чтобы он принимал Output от других ресурсов
- Почему мой компонент висит в creating в консоли Pulumi?

## Похожие
- [pulumi](https://affpapa.org/nevibecode/skills/pulumi.md) — скилл · 304 установки
- [aws-cdk](https://affpapa.org/nevibecode/skills/aws-cdk.md) — скилл · 9500 установок
- [aws-cdk-development](https://affpapa.org/nevibecode/skills/aws-cdk-development.md) — скилл · 1200 установок
- [render-deploy](https://affpapa.org/nevibecode/skills/render-deploy.md) — скилл · 559 установок
- [webflow-code-component:deploy-guide](https://affpapa.org/nevibecode/skills/webflow-code-componentdeploy-guide.md) — скилл · 987 установок
- [terraform-data-engineering-infrastructure](https://affpapa.org/nevibecode/skills/terraform-data-engineering-infrastructure.md) — скилл · 1800 установок

Из того же набора: [pulumi/agent-skills](https://affpapa.org/nevibecode/by/pulumi/agent-skills.md) — 13 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
