Envelope Team
Design and generate .envelope.json AI agent team definition files — the open standard for building and deploying multi-agent teams on Envelope.
When to Use This Skill
- User asks to build, design, or generate an Envelope team
- User describes a workflow that could be automated by a team of AI agents
- User wants to create a
.envelope.json file for deployment
- User needs help with agent hierarchy, access policies, or gates
What This Skill Does
- Takes a natural-language description of the team's purpose
- Designs the agent hierarchy (supervisor → managers → workers)
- Generates a schema-valid
.envelope.json file
- Includes access policies, variables, secrets, and gates as appropriate
- Explains any schema concepts the user asks about
How to Use
Basic Usage
Build me an Envelope team for customer support triage — one supervisor,
two agents that read Zendesk tickets, and a Slack notifier for escalations.
Create an Envelope team definition for outbound sales — an SDR manager
overseeing two SDRs who work HubSpot leads and a RevOps analyst.
With human-in-the-loop gates
Build an Envelope team that drafts marketing emails and pauses for
human approval before sending.
Example
User: "Build me an Envelope team for content moderation — a supervisor and two reviewer agents that check posts against community guidelines."
Output:
{
"$schema": "https://schema.openenvelope.org/team/v1.json",
"name": "Content Moderation Team",
"slug": "content-moderation",
"version": "1.0.0",
"description": "A supervisor and two reviewer agents that check posts against community guidelines.",
"visibility": "team",
"category": "ops",
"requiredVariables": ["companyName"],
"requiredSecrets": ["MODERATION_API_KEY"],
"metadata": { "generatedBy": "Claude Code · openenvelope.org" },
"agents": [
{
"key": "supervisor",
"name": "Moderation Supervisor",
"role": "supervisor",
"capabilities": ["Route content to reviewer agents", "Aggregate decisions", "Escalate edge cases"],
"model": "anthropic:claude-sonnet-4-5",
"systemPrompt": "You supervise the content moderation team at {{companyName}}. Delegate each item to a reviewer and consolidate their verdicts."
},
{
"key": "policy-reviewer",
"name": "Policy Reviewer",
"role": "reviewer",
"capabilities": ["Check content against community guidelines", "Flag policy violations"],
"model": "anthropic:claude-haiku-3-5",
"systemPrompt": "You review content for policy violations at {{companyName}}. Return a verdict of approve, flag, or remove with a reason.",
"reportsToKey": "supervisor",
"accessPolicy": {
"accessPolicyVersion": "1",
"rules": [
{ "host": "api.moderation-service.com", "action": "allow" },
{ "host": "*", "action": "deny" }
]
}
},
{
"key": "spam-reviewer",
"name": "Spam Reviewer",
"role": "reviewer",
"capabilities": ["Detect spam, bot activity, and duplicate content"],
"model": "anthropic:claude-haiku-3-5",
"systemPrompt": "You detect spam and bot activity at {{companyName}}. Return a verdict of approve, flag, or remove with a confidence score.",
"reportsToKey": "supervisor"
}
]
}
Schema Reference
Top-level fields
| Field |
Required |
Description |
$schema |
yes |
Always https://schema.openenvelope.org/team/v1.json |
name |
yes |
Human-readable team name |
slug |
yes |
URL-safe, lowercase, hyphens only |
version |
yes |
Semver e.g. "1.0.0" |
description |
yes |
What this team does |
visibility |
yes |
"public" · "team" · "private" |
requiredVariables |
no |
Non-sensitive config, interpolated via {{varName}} |
requiredSecrets |
no |
API keys, stored encrypted, injected as ${SECRET_NAME} |
schedule |
no |
Cron schedule { cron, timezone, task } |
agents |
yes |
Agent definitions |
gates |
no |
Human-in-the-loop checkpoints |
Agent fields
| Field |
Required |
Description |
key |
yes |
Unique identifier within this file |
name |
yes |
Display name |
role |
yes |
Free-form e.g. "supervisor", "analyst", "sdr" |
capabilities |
yes |
What this agent can do — used for delegation routing |
model |
yes |
e.g. anthropic:claude-sonnet-4-5, anthropic:claude-haiku-3-5 |
systemPrompt |
yes |
Agent instructions. Use {{varName}} and ${SECRET_NAME} |
reportsToKey |
no |
key of manager agent. Omit for the top-level supervisor |
accessPolicy |
no |
Outbound HTTP allowlist |
Hierarchy rule
Exactly one agent should have no reportsToKey — this is the supervisor that receives the initial task. All others reference their manager's key.
Access policy
"accessPolicy": {
"accessPolicyVersion": "1",
"rules": [
{ "host": "api.example.com", "action": "allow" },
{ "host": "*", "action": "deny" }
]
}
Human-in-the-loop gates
"gates": [
{
"name": "approval-check",
"type": "approval",
"trigger": { "afterAgent": "drafter" },
"onApprove": "continue",
"onReject": "halt"
}
]
Tips
- Use
anthropic:claude-sonnet-4-5 for supervisors and managers; anthropic:claude-haiku-3-5 for leaf agents doing repetitive work
- Put anything org-specific (company name, support email, Slack channel) in
requiredVariables
- End access policy rules with
{ "host": "*", "action": "deny" } for a strict allowlist
- Add gates before any agent that sends emails, posts publicly, or makes purchases
- Validate before deploying:
npx @openenvelope/schema validate ./team.envelope.json
Links
1---2name: envelope-team3description: Design and generate .envelope.json AI agent team definitions — the open standard for multi-agent teams with hierarchy, access policies, human-in-the-loop gates, and cron schedules.4---5
6# Envelope Team
7
8Design and generate `.envelope.json` AI agent team definition files — the open standard for building and deploying multi-agent teams on [Envelope](https://openenvelope.org).
9
10## When to Use This Skill
11
12- User asks to build, design, or generate an Envelope team
13- User describes a workflow that could be automated by a team of AI agents
14- User wants to create a `.envelope.json` file for deployment
15- User needs help with agent hierarchy, access policies, or gates
16
17## What This Skill Does
18
191. Takes a natural-language description of the team's purpose
202. Designs the agent hierarchy (supervisor → managers → workers)
213. Generates a schema-valid `.envelope.json` file
224. Includes access policies, variables, secrets, and gates as appropriate
235. Explains any schema concepts the user asks about
24
25## How to Use
26
27### Basic Usage
28
29```
30Build me an Envelope team for customer support triage — one supervisor,
31two agents that read Zendesk tickets, and a Slack notifier for escalations.
32```
33
34```
35Create an Envelope team definition for outbound sales — an SDR manager
36overseeing two SDRs who work HubSpot leads and a RevOps analyst.
37```
38
39### With human-in-the-loop gates
40
41```
42Build an Envelope team that drafts marketing emails and pauses for
43human approval before sending.
44```
45
46## Example
47
48**User**: "Build me an Envelope team for content moderation — a supervisor and two reviewer agents that check posts against community guidelines."
49
50**Output**:
51
52```json
53{
54 "$schema": "https://schema.openenvelope.org/team/v1.json",
55 "name": "Content Moderation Team",
56 "slug": "content-moderation",
57 "version": "1.0.0",
58 "description": "A supervisor and two reviewer agents that check posts against community guidelines.",
59 "visibility": "team",
60 "category": "ops",
61 "requiredVariables": ["companyName"],
62 "requiredSecrets": ["MODERATION_API_KEY"],
63 "metadata": { "generatedBy": "Claude Code · openenvelope.org" },
64 "agents": [
65 {
66 "key": "supervisor",
67 "name": "Moderation Supervisor",
68 "role": "supervisor",
69 "capabilities": ["Route content to reviewer agents", "Aggregate decisions", "Escalate edge cases"],
70 "model": "anthropic:claude-sonnet-4-5",
71 "systemPrompt": "You supervise the content moderation team at {{companyName}}. Delegate each item to a reviewer and consolidate their verdicts."
72 },
73 {
74 "key": "policy-reviewer",
75 "name": "Policy Reviewer",
76 "role": "reviewer",
77 "capabilities": ["Check content against community guidelines", "Flag policy violations"],
78 "model": "anthropic:claude-haiku-3-5",
79 "systemPrompt": "You review content for policy violations at {{companyName}}. Return a verdict of approve, flag, or remove with a reason.",
80 "reportsToKey": "supervisor",
81 "accessPolicy": {
82 "accessPolicyVersion": "1",
83 "rules": [
84 { "host": "api.moderation-service.com", "action": "allow" },
85 { "host": "*", "action": "deny" }
86 ]
87 }
88 },
89 {
90 "key": "spam-reviewer",
91 "name": "Spam Reviewer",
92 "role": "reviewer",
93 "capabilities": ["Detect spam, bot activity, and duplicate content"],
94 "model": "anthropic:claude-haiku-3-5",
95 "systemPrompt": "You detect spam and bot activity at {{companyName}}. Return a verdict of approve, flag, or remove with a confidence score.",
96 "reportsToKey": "supervisor"
97 }
98 ]
99}
100```
101
102## Schema Reference
103
104### Top-level fields
105
106| Field | Required | Description |
107|---|---|---|
108| `$schema` | yes | Always `https://schema.openenvelope.org/team/v1.json` |
109| `name` | yes | Human-readable team name |
110| `slug` | yes | URL-safe, lowercase, hyphens only |
111| `version` | yes | Semver e.g. `"1.0.0"` |
112| `description` | yes | What this team does |
113| `visibility` | yes | `"public"` · `"team"` · `"private"` |
114| `requiredVariables` | no | Non-sensitive config, interpolated via `{{varName}}` |
115| `requiredSecrets` | no | API keys, stored encrypted, injected as `${SECRET_NAME}` |
116| `schedule` | no | Cron schedule `{ cron, timezone, task }` |
117| `agents` | yes | Agent definitions |
118| `gates` | no | Human-in-the-loop checkpoints |
119
120### Agent fields
121
122| Field | Required | Description |
123|---|---|---|
124| `key` | yes | Unique identifier within this file |
125| `name` | yes | Display name |
126| `role` | yes | Free-form e.g. `"supervisor"`, `"analyst"`, `"sdr"` |
127| `capabilities` | yes | What this agent can do — used for delegation routing |
128| `model` | yes | e.g. `anthropic:claude-sonnet-4-5`, `anthropic:claude-haiku-3-5` |
129| `systemPrompt` | yes | Agent instructions. Use `{{varName}}` and `${SECRET_NAME}` |
130| `reportsToKey` | no | `key` of manager agent. Omit for the top-level supervisor |
131| `accessPolicy` | no | Outbound HTTP allowlist |
132
133### Hierarchy rule
134
135Exactly one agent should have no `reportsToKey` — this is the supervisor that receives the initial task. All others reference their manager's `key`.
136
137### Access policy
138
139```json
140"accessPolicy": {
141 "accessPolicyVersion": "1",
142 "rules": [
143 { "host": "api.example.com", "action": "allow" },
144 { "host": "*", "action": "deny" }
145 ]
146}
147```
148
149### Human-in-the-loop gates
150
151```json
152"gates": [
153 {
154 "name": "approval-check",
155 "type": "approval",
156 "trigger": { "afterAgent": "drafter" },
157 "onApprove": "continue",
158 "onReject": "halt"
159 }
160]
161```
162
163## Tips
164
165- Use `anthropic:claude-sonnet-4-5` for supervisors and managers; `anthropic:claude-haiku-3-5` for leaf agents doing repetitive work
166- Put anything org-specific (company name, support email, Slack channel) in `requiredVariables`
167- End access policy rules with `{ "host": "*", "action": "deny" }` for a strict allowlist
168- Add gates before any agent that sends emails, posts publicly, or makes purchases
169- Validate before deploying: `npx @openenvelope/schema validate ./team.envelope.json`
170
171## Links
172
173- [openenvelope.org](https://openenvelope.org) — deploy and run teams
174- [schema.openenvelope.org/team/v1.json](https://schema.openenvelope.org/team/v1.json) — JSON schema
175- [npmjs.com/package/@openenvelope/schema](https://www.npmjs.com/package/@openenvelope/schema) — TypeScript types + validator
176- [openenvelope.org/mcp](https://openenvelope.org/mcp) — run teams via MCP from Claude.ai or ChatGPT