К основному содержанию
скилл CX Codex

sender-profile-architect — скилл для Claude Code: обзор и установка

Скилл помогает спроектировать архитектуру профилей отправителя в Sent v3 для мультиарендных систем. Пригодится при настройке биллинга, номеров WABA и 10DLC.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add sentdm/sent-plugin --skill sender-profile-architect -a claude-code
Открыть на GitHub

Что делает sender-profile-architect

Скилл помогает спланировать границы тенантов в Sent v3 до вызова провижининга. Он задаёт правила изоляции брендов и разграничивает наследование контактов с шаблонами. Для живых операций с MCP этот скилл отсылает к sent-profile-provisioning, а сам фокусируется на общей схеме системы.

В архитектуре Sent v3 критично разделять типы ключей. Ключ организации в связке с заголовком x-profile-id отправляет вызовы от имени дочернего профиля, но делит с ним лимиты организации. Профильный ключ изолирует рейт-лимиты и не принимает x-profile-id: при попытке передать заголовок API вернёт 403. Старый заголовок x-sender-id запрещён.

События вебхуков Sent не содержат идентификатор тенанта вашей базы. Из-за этого входящие события придётся маршрутизировать через локальную связку сохранённых message_id или телефонных номеров. Скилл прямо запрещает определять владельца только по account_id, чтобы не смешать данные разных клиентов одной организации.

Какие задачи решает

  • Разделить профили тенантов и каналы связи
  • Настроить скоупинг ключей API и заголовков x-profile-id
  • Выбрать схему подключения WABA для тенантов
  • Спроектировать маппинг message_id для вебхуков

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

  • Спроектируй модель изоляции тенантов для Sent v3 с раздельной оплатой и номерами WABA.
  • Помоги настроить наследование брендов 10DLC и шаблонов через POST /v3/profiles.
  • Как привязать входящие вебхуки Sent к конкретным арендаторам в нашей базе?

Как установить sender-profile-architect

1Через Skills CLI (Vercel)

npx skills add sentdm/sent-plugin --skill sender-profile-architect -a claude-code

2Вручную: положить файлы

~/.claude/skills/sender-profile-architect/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/sender-profile-architect/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о sender-profile-architect

Как установить sender-profile-architect в Claude Code?

Выполните команду npx skills add sentdm/sent-plugin --skill sender-profile-architect -a claude-code.

Зачем нужен скилл sender-profile-architect?

Он помогает архитектурно спланировать разделение тенантов, ключей API, номеров и кампаний в сервисе Sent до создания ресурсов.

В чём разница между ключом профиля и ключом организации в Sent v3?

Ключ организации может действовать от имени дочернего профиля через заголовок x-profile-id, расходуя общий пул лимитов. Ключ профиля изолирует вызовы и при передаче x-profile-id выдаёт ошибку 403.

Исходный текст

SKILL.md · MIT
---
name: sender-profile-architect
description: Designs Sent Sender Profile architecture for multi-tenant, multi-brand, and multi-channel systems. Use for API-key scoping, x-profile-id, isolation, inheritance, sharing, billing, WABA, 10DLC campaigns, webhooks, or tenant offboarding.
---

# Sender Profile Architect

A Sender Profile is the operational boundary for tenant identity, channel configuration, inherited resources, billing, and credentials. Use this skill before provisioning when a poor boundary would mix brands, compliance posture, rate-limit impact, or webhook ownership.

For live MCP profile lifecycle operations use `sent-profile-provisioning`; for market requirements use `sent-compliance`. MCP selects an acting profile with optional `profileId` on ordinary account tools for organization grants only. `sender_profiles.*` tools operate on target `id` and reject acting `profileId`. REST headers below are not MCP arguments.

## Recommended tenancy model

When tenants require isolation, recommend one Sent organization with one Sender Profile per tenant. A shared profile is appropriate only when the tenants genuinely share one brand, sender resources, compliance posture, billing/rate-limit expectations, and operational blast radius.

Do not recommend pooled-by-default architecture. Make the isolation decision explicit using [references/multi-tenancy-patterns.md](references/multi-tenancy-patterns.md).

## Authentication patterns

Sent v3 supports both:

| Pattern | Headers | Blast radius |
| --- | --- | --- |
| Profile-specific API key | `x-api-key` | Profile-scoped credentials and rate-limit context. Do not add `x-profile-id`. |
| Organization API key acting for a child | `x-api-key` plus `x-profile-id: <profile UUID>` | Organization credential can reach permitted child profiles; rate limits remain in the organization pool. |

Only organization keys may send `x-profile-id`. A profile key that sends it receives `403`. A profile outside the organization returns `404`. `X-Profile-Id` can be echoed in scoped responses.

`x-sender-id` is legacy v1/v2 terminology only. Do not use it for v3 authentication or routing.

Choose profile keys when tenant-level credential isolation and revocation are primary. Choose organization-key scoping for centrally controlled integrations that can protect a broader credential and deliberately accept a shared organization rate-limit pool.

## Profile creation model

Create with `POST /v3/profiles`. `name` is required. Current optional areas include:

- identity: `icon`, `description`, `short_name`;
- sharing: `allow_contact_sharing`, `allow_template_sharing`;
- inheritance: `inherit_contacts`, `inherit_templates`, `inherit_tcr_brand`, `inherit_tcr_campaign`;
- billing: `billing_model`, `billing_contact`, and ephemeral `payment_details`;
- dedicated WABA credentials: `whatsapp_business_account` with `waba_id`, optional `phone_number_id`, and `access_token`;
- a dedicated brand: `brand.contact`, `brand.business`, and `brand.compliance`.

Do not add a separate brand endpoint. A dedicated brand is created with the profile; campaigns are managed under `/v3/profiles/{profileId}/campaigns`.

### Inheritance rules

- `inherit_tcr_brand: true` means the profile uses the organization's brand and cannot submit its own `brand` object.
- `inherit_tcr_campaign: true` makes inherited campaigns read-only for that profile.
- An inherited brand with `inherit_tcr_campaign: false` is a supported dedicated-campaign pattern.
- Sharing flags expose a profile's contacts/templates; inheritance flags consume organization resources. Treat those directions separately.

### Billing and number references

`billing_model` currently supports `profile`, `organization`, and `profile_and_organization`. A profile or fallback billing model requires `billing_contact` when none exists. Card fields are forwarded to the payment processor and must not be logged or persisted.

Profile update can manage `sending_phone_number_profile_id`, `sending_whatsapp_number_profile_id`, `sending_phone_number`, `whatsapp_phone_number`, and `allow_number_change_during_onboarding`. Model reference IDs and direct numbers separately, and prevent cycles when one profile references another.

## WABA choices

There are three distinct paths:

1. Organization Embedded Signup in the dashboard.
2. Child profile inheritance by omitting `whatsapp_business_account` after the organization has a WABA.
3. Dedicated profile WABA using `waba_id` and `access_token`; `phone_number_id` is optional.

There is no public endpoint that starts organization Embedded Signup. Direct credentials on `POST /v3/profiles` are not an “Embedded Signup endpoint.” Use `waba-embedded-signup` for the operational flow.

## 10DLC and campaigns

Use a profile `brand` object for a dedicated brand. Manage campaigns at:

- `GET|POST /v3/profiles/{profileId}/campaigns`
- `PUT|DELETE /v3/profiles/{profileId}/campaigns/{campaignId}`

Use `sms-10dlc-registration` for the payload and policy layer.

## Completion and status handling

Complete a profile with `POST /v3/profiles/{profileId}/complete` and a required `webHookUrl`:

```json
{
  "webHookUrl": "https://example.com/webhooks/profile-complete",
  "sandbox": true
}
```

Status is surface-specific:

- Create response currently demonstrates lowercase `incomplete`.
- Completion `202` means processing started and does not contain a final status.
- Completion `200` currently demonstrates lowercase `completed` for an already-complete profile.
- Completion callbacks can report `COMPLETED`, `SUBMITTED`, or `failed`.
- REST guides and OpenAPI publish different profile status sets.

Do not assert a closed REST enum. Preserve unknown strings and record the endpoint/callback surface that produced them.

## Webhook attribution

Sent events do not contain your application tenant ID. Before sending, persist the returned `message_id` with the tenant and profile. Route outbound status events through that mapping. For inbound messages, map the receiving number/profile resource to the tenant.

```text
message_id -> tenant_id, profile_id, logical_send_id, channel
receiving_number -> tenant_id, profile_id
```

Do not infer tenant ownership from `account_id` alone. Multiple tenant profiles can belong to one organization.

## Design checklist

- [ ] Tenant/brand isolation decision is explicit.
- [ ] Credential pattern and rate-limit/blast radius are documented.
- [ ] Sharing and inheritance directions are intentional.
- [ ] Billing ownership is named.
- [ ] Number references cannot form cycles.
- [ ] WABA path is organization signup, inheritance, or dedicated credentials—not an invented hybrid.
- [ ] Dedicated brand/campaign paths are profile-based.
- [ ] `message_id` and inbound-number mappings support webhook attribution.
- [ ] Unknown profile statuses are tolerated.
- [ ] Tenant offboarding revokes credentials, disables sends, detaches resources safely, and retains audit evidence.

See [references/sender-profile-data-model.md](references/sender-profile-data-model.md) and [references/profile-boundary-examples.md](references/profile-boundary-examples.md) for implementation patterns.

© sentdm · MIT · sentdm/sent-plugin

Похожие скиллы

Всё по теме «Бэкенд и API» →
api-integration-specialist davila7 Скилл для Claude, который ведёт агента по подключению сторонних API: авторизация, повторы, лимиты запросов и вебхуки. 2 978установок setup-zoom-webhooks официальный anthropics Справочник по вебхукам Zoom: подписки, проверка подписей и обработка событий. Нужен при сборке HTTP-интеграции с Zoom. CX Codex +1 2 100установок webhook-integration dodopayments Скилл учит агента принимать вебхуки Dodo Payments: проверять подпись по сырому телу запроса и не обрабатывать одно событие дважды. CX Codex +1 1 100установок encore-webhook encoredev Скилл учит агента принимать входящие вебхуки от Stripe, GitHub, Slack и других сервисов через api.raw() и проверять подписи. CX Codex +1 418установок organization-best-practices better-auth Настраивает мультиарендность, роли и команды в Better Auth. Помогает внедрить разграничение доступа и приглашения участников без ручного поиска сигнатур. CX Codex +1 36 500установок upgrade-stripe stripe Помогает агенту обновить версии Stripe API, вебхуки и SDK, сверяя изменения между текущей и целевой версиями. Пригодится при миграции интеграции Stripe. CX Codex +1 72 900установок

Из того же набора15

sent-account-readiness Скилл проверяет через MCP-инструменты Sent, готов ли аккаунт к отправке: баланс, онбординг, KYC и выбранный Sender Profile. CX Codex +1 2 900установок sent-templates Находит, проверяет статус и удаляет шаблоны сообщений Sent через MCP-инструменты. Пригодится при поиске утверждённых шаблонов и очистке базы. CX Codex +1 2 900установок sent-contacts Скилл для работы с контактами Sent через MCP-инструменты: поиск, импорт списком, сводка по переписке, удаление. Создание и удаление проходят через подтверждение. CX Codex +1 2 900установок sms-10dlc-registration Готовит и проверяет заявку на регистрацию бренда и кампании US A2P 10DLC в Sent: доказательства согласия, сценарии использования, примеры сообщений. CX Codex +1 2 900установок rcs-agent-onboarding Проведёт по шагам подключения RCS и RBM в Sent: чек-лист доказательств, проверка Sender Profile, шаблоны и тесты маршрутизации. CX Codex +1 2 900установок template-builder-ui Скилл помогает спроектировать интерфейс конструктора шаблонов под контракт Sent v3, настроить предпросмотр каналов и валидацию перед отправкой на модерацию. CX Codex +1 2 900установок waba-embedded-signup Помогает подключить WhatsApp Business Account через Sent и не перепутать три разных пути интеграции. Пригодится при настройке профилей, токенов и колбэков. CX Codex +1 2 900установок waba-template-author Скилл преобразует текст рассылки в валидный payload для Sent v3 API и проверяет шаблон на требования политик WhatsApp. Пригодится при сборке служебных, рекламных и OTP-сообщений. CX Codex +1 2 900установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой