# PRD: Маркетплейс готовых ИИ-агентов (MVP)

> **Дата:** 2026-08-26 | **Версия:** 1.1 | **Статус:** Draft
> **Ревизия:** 2026-08-27 | **Основание:** `product/00-research-evidence-base.md` (27.08.2026, ~70 источников, ~60 карточек T1/T2)

> **Ревизия 2026-08-27 — что изменилось и почему:**
> - FR расширены: installer (npx + doctor), guardrails, версионирование — продукт = Agent Kit, не ZIP (Находки 3,5,9; ZIP 2.1.243 SIGSEGV).
> - NFR усилен безопасностью: не слить бюджет/данные — hard-limits, dry-run, лимиты на платные операции.
> - Data Model: поля для guardrails, версий, канала обновлений, результатов `doctor`.
> - Конкурентный контекст в Scope: SkillPacks 1990₽ / ClaudeSkills от 2900₽ / ИИ-офис 1292 скила — рынок НЕ Genesis.
> - Связанная правка Spec: `product/12-specification-writing.md` Rev 2026-08-27.

---

## 1. Overview

Русскоязычный сайт-каталог готовых ИИ-агентов для предпринимателей. Пользователь выбирает агента, скачивает версию для своей рабочей среды и устанавливает по готовой инструкции. Доставка через Telegram-бота.

**Продуктовая гипотеза:** Предприниматели готовы платить за готовые пакеты ИИ-агентов, самостоятельно устанавливать их и применять для решения рабочих задач.

**Целевая аудитория:** Предприниматели, владельцы микро- и среднего бизнеса в России, знакомые с ChatGPT, заинтересованные в ИИ-агентах, без технической команды.

---

## 2. User Stories

### Как предприниматель, я хочу...

| # | Story | Приоритет |
|---|---|---|
| US-1 | ...увидеть каталог агентов и понять, какой подходит для моей задачи | Must |
| US-2 | ...выбрать платформу (Codex/Claude/OpenCode) и купить агент | Must |
| US-3 | ...получить ZIP-архив через Telegram после оплаты | Must |
| US-4 | ...установить агента по понятной инструкции | Must |
| US-5 | ...получить первый результат от агента | Must |
| US-6 | ...отправить сообщение о проблеме через Telegram-бота | Should |
| US-7 | ...узнать о бесплатных агентах и попробовать один из них | Should |
| US-8 | ...найти агента по задаче через фильтры | Should |

### Как администратор, я хочу...

| # | Story | Приоритет |
|---|---|---|
| US-9 | ...получать уведомления о новых заявках | Must |
| US-10 | ...подтверждать оплату и отправлять архив | Must |
| US-11 | ...видеть список заявок и их статусы | Should |
| US-12 | ...изменять цены и описания без правки кода | Should |

---

## 3. Functional Requirements

### 3.1 Сайт

| # | Требование | AC |
|---|---|---|
| FR-1 | Главная страница с заголовком, категориями, популярными агентами, «Как это работает», FAQ | AC-1, AC-14 |
| FR-2 | Каталог с карточками агентов | AC-2, AC-3 |
| FR-3 | Фильтры по задаче, цене, платформе | AC-4 |
| FR-4 | Карточка агента: название, описание, ограничения, требования, цена, платформа, кнопка покупки | AC-3 |
| FR-5 | Кнопка «Купить» → переход в Telegram | AC-5 |
| FR-6 | Страница «Как установить» для 3 платформ | AC-11 |
| FR-7 | Служебные страницы (оферта, политика, контакты) | — |
| FR-8 | SEO: title, description, OG, sitemap, robots.txt | — |
| FR-9 | Адаптивность: 320px+ | AC-14 |

### 3.2 Telegram-бот

| # | Требование | AC |
|---|---|---|
| FR-10 | Приём ID агента и платформы из ссылки | AC-5 |
| FR-11 | Показ названия, версии, цены | AC-6 |
| FR-12 | Фиксация заявки | AC-6 |
| FR-13 | Уведомление администратора | AC-7 |
| FR-14 | Подтверждение оплаты → отправка архива | AC-8 |
| FR-15 | Автоматическая выдача бесплатных архивов | AC-9 |
| FR-16 | Приём сообщений о проблемах | AC-10 |
| FR-17 | Хранение: пользователь, пакет, платформа, дата, статус, оплата, выдача | — |

### 3.3 Installer, Guardrails, Версионирование (Agent Kit)

| # | Требование | AC | Эвидэнс |
|---|---|---|---|
| FR-18 | One-command installer: `npx @smarket/agent-kit install <package>@<version>` — без `npm install -g`/`pip install`/`git clone` на первом шаге; npx-first + веб-фолбэк (ZIP 2.1.243 SIGSEGV) | AC-15 | Находка 3 (H/T1) |
| FR-19 | `doctor` — проверка окружения до/после установки: Node/зависимости, токены, права, сеть/VPN; явные коды ошибок и «зелёная галочка: агент готов»; команда `doctor --check` + отправка результата в бота | AC-15 | Находка 3; time-to-first-task |
| FR-20 | Guardrails в коде транспорта (не в промпте): hard-limits на внешние действия (почта, Директ, CRM, платежи), локальное хранение токенов, readback-проверка, подтверждение перед необратимыми действиями | AC-16 | Находка 5 (H): $80k штрафы, удаление писем, Волков «запреты в коде транспорта» |
| FR-21 | `dry-run` по умолчанию для деструктивных/платных операций; флаг `--apply` только с явным подтверждением; бюджет-лимиты на прогон (см. NFR-6) | AC-16 | Находка 5 |
| FR-22 | Карточка агента честно раскрывает guardrails: «что НЕ делает», «что меняет», «какие доступы запрашивает», «сколько стоит типовой прогон» | AC-16 | Находка 5, P0-3 |
| FR-23 | Версионирование Kit'а: пин версий моделей/промптов в пакете, semver, смена модели одной строкой, канал обновлений, оповещение в Telegram-боте о доступной версии | AC-17 | Находка 9 (H) |
| FR-24 | Откат: хранение `delivered_version` + `previous_version`, команда `rollback`, запрет silent autoupdate без подтверждения (урок ZIP 2.1.243) | AC-17 | ZIP 2.1.243 |

### 3.4 Аналитика

| # | Требование | AC |
|---|---|---|
| FR-25 | События сайта: catalog_view, package_view, platform_selected, buy_clicked, telegram_started | — |
| FR-26 | События бота: bot_start, package_selected, platform_selected, payment_confirmed, package_delivered, support_requested | — |
| FR-27 | События Kit'а: install_started, doctor_passed/failed, dry_run_executed, guardrail_triggered, upgrade_available/applied, rollback_executed | — |

---

## 4. Non-Functional Requirements

| # | Требование | Значение | Эвидэнс |
|---|---|---|---|
| NFR-1 | Время загрузки страницы | <3 секунды | — |
| NFR-2 | Доступность сайта | 99% | — |
| NFR-3 | Размер ZIP-архива | <50 МБ (ограничение Telegram) | — |
| NFR-4 | Время установки (пользователь) | <15 минут; метрика — time-to-first-successful-task | Находка 3 |
| NFR-5 | Поддержка: время ответа | <24 часа | — |
| NFR-6 | Безопасность: не слить бюджет/данные | Hard-limits по умолчанию: лимит платных вызовов/сообщений на прогон, `dry-run` перед первым `apply`, локальное хранение токенов (не в промпте/логах), readback + подтверждение перед необратимым действием, аудит-лог каждого внешнего вызова | Находка 5 (H): $80k штрафы, удаление писем |
| NFR-7 | Надёжность рантайма/обновлений | npx-first + веб-фолбэк, версионированный откат, запрет silent autoupdate; 100% 15 сборок зелёные на чистой среде до релиза | ZIP 2.1.243 SIGSEGV |
| NFR-8 | Свежесть Kit'а | Пин моделей, канал обновлений; регресс-тест при смене модели перед публикацией | Находка 9 (Polza V4 поломка) |

---

## 5. Data Model

### 5.1 Telegram-бот: заявка

```json
{
  "user_id": "telegram_user_id",
  "username": "telegram_username",
  "package_id": "string",
  "platform": "codex|claude_code|opencode",
  "created_at": "datetime",
  "status": "new|contacted|pending_payment|paid|delivered|installed|error|refund|closed",
  "payment_confirmed": "boolean",
  "delivered_version": "string",
  "previous_version": "string | null",
  "available_version": "string | null",
  "has_issue": "boolean",
  "install_result": "string",
  "doctor_result": {
    "passed": "boolean",
    "checks": "{ node: ok|fail, tokens: ok|fail, permissions: ok|fail, network: ok|fail }",
    "error_code": "string | null",
    "checked_at": "datetime"
  },
  "guardrails": {
    "dry_run_default": "boolean",
    "hard_limits": "{ max_paid_calls: number, max_messages: number, max_cost_rub: number }",
    "requires_confirm": ["delete_email", "send_campaign", "charge_api"],
    "last_triggered": "string | null"
  },
  "versions": {
    "kit_version": "string (semver)",
    "pinned_model": "string",
    "prompt_version": "string",
    "channel": "stable|beta"
  }
}
```

### 5.2 Пакет (Kit) — версионирование и guardrails

```json
{
  "package_id": "string",
  "kit_version": "string (semver)",
  "previous_kit_version": "string | null",
  "platforms": ["claude_code", "codex", "opencode"],
  "pinned_model": "string",
  "prompt_version": "string",
  "installer": { "command": "npx @smarket/agent-kit install <id>@<ver>", "fallback": "web_download_url" },
  "guardrails": {
    "hard_limits": "{ max_paid_calls, max_messages, max_cost_rub }",
    "dry_run_default": true,
    "blocked_actions": ["string"],
    "confirm_before": ["string"]
  },
  "not_does": "string (что агент НЕ делает)",
  "changes_what": "string (что меняет во внешних системах)"
}
```

---

## 6. Open Questions

| # | Вопрос | Владелец | Дедлайн |
|---|---|---|---|
| OQ-1 | Какой фреймворк для сайта? (Next.js / Astro / другой) | Разработчик | До начала разработки |
| OQ-2 | Какой язык для бота? (Python / Node.js / другой) | Разработчик | До начала разработки |
| OQ-3 | Где хостить архивы? (S3 / VPS / другой) | Разработчик | До начала разработки |
| OQ-4 | Какой размер каталога при запуске? (5 / 10 / 12 агентов) | Владелец продукта | До запуска |
| OQ-5 | Нужны ли фильтры в MVP? (Must / Should / Could) | Владелец продукта | До начала разработки |
