# platform-apex-generate

Пишет и рефакторит Apex-классы и триггеры, затем прогоняет код через анализатор и тесты. Пригодится, когда в проекте много Salesforce-кода.

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

## Что делает

Скилл включается, когда в запросе появляется Apex, `.cls` или триггер. Он собирает контекст проекта: как разложены слои service, selector, domain, есть ли уже Trigger Actions Framework. Дальше выбирает самый простой подходящий шаблон из `assets/` и пишет класс вместе с `.cls-meta.xml` и ApexDoc-комментариями.

Работа идёт по фазам. Сначала авторство, потом проверка: анализатор кода через MCP `run_code_analyzer` (запасной вариант — `sf code-analyzer run`) и запуск тестов через `sf apex run test`. Отчёт без строк Analyzer и Testing считается неполным, поэтому скилл обязан вызвать инструменты, прежде чем что-то резюмировать. Тесты он не пишет сам — за это отвечает отдельный скилл `platform-apex-test-generate`, и без него файлы тестов не создаются.

Жёсткие правила встроены в генерацию. SOQL и DML только вне циклов, ключевое слово sharing обязательно на каждом классе, хардкод ID запрещён, `@future` не используется вообще — вместо него Queueable с `System.Finalizer`. Минимальная версия API — 66.0, а CLI `sf` нужен версии 2.0.0 и выше. Если в проекте нет доступа к анализатору или org для тестов, скилл зафиксирует это в отчёте, но код всё равно сгенерирует — проверять его придётся вручную.

## Требования
- Работает с: Salesforce

## Установка

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

1. **Через Skills CLI (Vercel)**
```bash
npx skills add forcedotcom/sf-skills --skill platform-apex-generate -a claude-code
```

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

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add forcedotcom/sf-skills --skill platform-apex-generate -a codex
```

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

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add forcedotcom/sf-skills --skill platform-apex-generate -a cursor
```

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

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install forcedotcom/sf-skills platform-apex-generate
```

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

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add forcedotcom/sf-skills --skill platform-apex-generate -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/forcedotcom/sf-skills --path skills/platform-apex-generate
```

### Windsurf (Devin Desktop)

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

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add forcedotcom/sf-skills --skill platform-apex-generate -a opencode
```

### Claude.ai

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

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

## Когда брать
- сгенерировать Apex-класс нужного типа с ApexDoc и метаданными
- переписать существующий `.cls` под bulk-обработку коллекций
- спроектировать триггер без SOQL и DML внутри циклов
- проверить готовый Apex анализатором и тестами перед деплоем
- заменить `@future` на Queueable с финализатором

## Примеры запросов агенту
- Создай batch-класс для пересчёта статусов контактов
- Отрефактори этот `.cls`: вынеси SOQL из цикла и добавь `with sharing`
- Сделай invocable-метод для вызова из Flow

## Похожие
- [salesforce-apex-cursorrules-prompt-file](https://affpapa.org/nevibecode/rules/salesforce-apex-cursorrules-prompt-file.md) — правило · ★ 41011
- [apex](https://affpapa.org/nevibecode/rules/apex.md) — правило · ★ 40418
- [salesforce-apex-quality](https://affpapa.org/nevibecode/skills/salesforce-apex-quality.md) — скилл · 884 установки
- [salesforce-development](https://affpapa.org/nevibecode/skills/mindrally-salesforce-development.md) — скилл · 659 установок
- [salesforce-developer](https://affpapa.org/nevibecode/skills/salesforce-developer.md) — скилл · 4300 установок
- [salesforce-dx](https://affpapa.org/nevibecode/skills/salesforce-dx.md) — скилл · 688 установок

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

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

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