@audienti/cli 0.2.0-exora.4 → 0.2.0-exora.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/cli/account-reply-operations.mjs +24 -1
- package/cli/agents.mjs +42 -10
- package/cli/audience-operations.mjs +1 -1
- package/cli/audienti.mjs +33 -18
- package/cli/campaign-find.mjs +155 -0
- package/cli/campaign-operations.mjs +8 -4
- package/cli/campaigns.mjs +34 -3
- package/cli/cohort-operations.mjs +1 -1
- package/cli/discovery-operations.mjs +2 -1
- package/cli/discovery.mjs +2 -1
- package/cli/kv-operations.mjs +17 -0
- package/cli/kv.mjs +58 -0
- package/cli/mcp.mjs +2 -2
- package/cli/outcome-operations.mjs +19 -0
- package/cli/outcomes.mjs +16 -0
- package/cli/owner-account-client.mjs +1 -1
- package/cli/{approach-operations.mjs → playbook-operations.mjs} +15 -15
- package/cli/progress.mjs +7 -7
- package/cli/question-operations.mjs +4 -4
- package/cli/questions.mjs +4 -4
- package/cli/queue-operations.mjs +7 -6
- package/cli/queue.mjs +4 -3
- package/cli/recipient-operations.mjs +1 -1
- package/cli/recipients.mjs +6 -2
- package/cli/rooms-operations.mjs +4 -4
- package/cli/rooms.mjs +4 -4
- package/cli/secret-operations.mjs +7 -0
- package/cli/secrets.mjs +30 -0
- package/cli/sender-account-operations.mjs +6 -2
- package/cli/sender-accounts.mjs +13 -8
- package/cli/skills.mjs +5 -5
- package/cli/tools-operations.mjs +18 -10
- package/cli/tools.mjs +48 -20
- package/cli/work-execution-operations.mjs +6 -0
- package/cli/work-execution.mjs +3 -3
- package/cli/work-operations.mjs +4 -3
- package/cli/work.mjs +2 -2
- package/cli/workspaces.mjs +24 -14
- package/package.json +2 -2
- package/skills/agent-rooms/SKILL.md +13 -11
- package/skills/agent-rooms/references/commands.md +2 -2
- package/skills/audienti/SKILL.md +80 -0
- package/skills/getting-started/SKILL.md +186 -158
- package/skills/getting-started/references/audience.md +72 -7
- package/skills/getting-started/references/campaign-draft.md +53 -11
- package/skills/getting-started/references/capabilities.md +219 -0
- package/skills/getting-started/references/mailbox-check.md +64 -0
- package/skills/getting-started/references/outcome-checks.md +89 -0
- package/skills/getting-started/references/replies.md +152 -0
- package/skills/getting-started/references/reply-checks.md +54 -0
- package/skills/playbook-design/SKILL.md +132 -0
- package/skills/{approach-design → playbook-design}/references/fields.md +28 -22
- package/source-manifest.json +54 -43
- package/skills/approach-design/SKILL.md +0 -104
- package/skills/getting-started/references/inventory.md +0 -52
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: approach-design
|
|
3
|
-
description: Create, reuse or revise an Audienti approach template, the stages and steps a prospect moves through from first touch to the goal. Use during getting started, when a campaign has no approach, and whenever you or the owner have a new outreach idea.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Approach design
|
|
7
|
-
|
|
8
|
-
An approach template is the playbook a campaign follows: the stages a prospect moves
|
|
9
|
-
through, the steps in each stage (channel, action, wait), the goal stage, the ways out
|
|
10
|
-
(off-ramps) and the voice. Audienti stores every approach with revisions, so a good one
|
|
11
|
-
is written once and reused by many campaigns. Planning tasks (`prospects.plan`) read the
|
|
12
|
-
campaign's approach to decide each prospect's next step, so a campaign without one
|
|
13
|
-
cannot be worked.
|
|
14
|
-
|
|
15
|
-
Use this skill when:
|
|
16
|
-
|
|
17
|
-
- You are getting started and the workspace has no approach yet.
|
|
18
|
-
- A queue task says a campaign needs an approach (**Draft an approach template**, or a
|
|
19
|
-
**Get campaign ready** task that says "pick an approach template").
|
|
20
|
-
- You or the owner have a new idea for how to reach people: a new channel order, a
|
|
21
|
-
different first touch, a new voice, a new goal.
|
|
22
|
-
|
|
23
|
-
## Rules
|
|
24
|
-
|
|
25
|
-
- Reuse before you create. Most new campaigns fit an approach that already exists.
|
|
26
|
-
- Use only channels you can cover with accounts you reported (LinkedIn, Email, Phone).
|
|
27
|
-
Do not draft a phone step if no one can call.
|
|
28
|
-
- One approach is one strategy. A correction to the same strategy (a wait, a step's
|
|
29
|
-
wording, a missing off-ramp) is a new revision. A different strategy is a new
|
|
30
|
-
approach, so the two can be compared in Analytics.
|
|
31
|
-
- Saving an approach never changes campaigns already pinned to it. Pin the new
|
|
32
|
-
revision on purpose.
|
|
33
|
-
- Never invent results or proof points for the voice. Use the owner's words.
|
|
34
|
-
- Ask the owner before a new approach is used for outreach. Nothing is sent without
|
|
35
|
-
their approval.
|
|
36
|
-
|
|
37
|
-
## 1. Reuse first
|
|
38
|
-
|
|
39
|
-
1. `audienti approach list` shows the workspace's approaches and their latest revision.
|
|
40
|
-
2. `audienti approach show ID` shows the stages, steps, goal and voice.
|
|
41
|
-
3. If one fits the campaign's offer, audience and your channels, use it. Say in one
|
|
42
|
-
line why it fits, then go to step 4 (pin it).
|
|
43
|
-
|
|
44
|
-
## 2. Draft a new approach
|
|
45
|
-
|
|
46
|
-
Start from the owner's offer, the audience and the channels you have. A good default
|
|
47
|
-
for founder-led or agent-led outbound has five to six stages:
|
|
48
|
-
|
|
49
|
-
1. **Ready** (Agent): the prospect is in the campaign. No steps.
|
|
50
|
-
2. **Warming** (Agent, optional): view the profile, like a recent post. Skip it when
|
|
51
|
-
LinkedIn is not available.
|
|
52
|
-
3. **Outreach underway** (Agent): the touches, in order, with waits. For example a
|
|
53
|
-
connection request (wait 21 days), a message "Only if connected" (wait 5), a first
|
|
54
|
-
email (wait 4). Completes to the **Unresponsive** off-ramp when every step is done
|
|
55
|
-
and nobody replied.
|
|
56
|
-
4. **In conversation** (Assignee): the prospect replied. A person drafts or approves
|
|
57
|
-
the reply. Completion `stay`.
|
|
58
|
-
5. **Meeting requested** (Assignee).
|
|
59
|
-
6. **Meeting booked** (Assignee, goal, `goalDays` 0).
|
|
60
|
-
|
|
61
|
-
Write `instructions` on each step as coaching for whoever does it: what to say, what
|
|
62
|
-
evidence to lead with, what to avoid. Write `voice` as two or three sentences in the
|
|
63
|
-
owner's style. See [fields and an example request](references/fields.md) for every
|
|
64
|
-
field and the rules Audienti checks.
|
|
65
|
-
|
|
66
|
-
## 3. Save it
|
|
67
|
-
|
|
68
|
-
1. Write the request to a file: `expectedRevision` 0 and no `id` for a new approach;
|
|
69
|
-
the approach's `id` and its current revision number to revise one. Use a fresh
|
|
70
|
-
`requestId` (a UUID) and fresh UUIDs for every stage, step and off-ramp `key`.
|
|
71
|
-
Keep the same keys when you revise, so progress already recorded stays on its stage.
|
|
72
|
-
2. `audienti approach save --file REQUEST.json`. Over MCP use `approach_save`.
|
|
73
|
-
3. If the save fails, read the error, fix that field and retry with the same
|
|
74
|
-
`requestId`. If it reports a revision conflict, run `approach show ID` and apply your
|
|
75
|
-
change to the newer revision.
|
|
76
|
-
|
|
77
|
-
## 4. Ask the owner and pin it
|
|
78
|
-
|
|
79
|
-
1. Ask in Audienti, not in chat: `audienti ask "Use this approach for CAMPAIGN?"
|
|
80
|
-
--context "SUMMARY" --option "Use it" --option "Change it"`. Put the stages, the
|
|
81
|
-
touches with their waits, the goal and the voice in the context as a short list.
|
|
82
|
-
2. When they answer, apply their changes as a new revision.
|
|
83
|
-
3. Pin it to the campaign with `approachPin` `{ "id": APPROACH_ID, "revision": N }`:
|
|
84
|
-
in `audienti campaign create` for a new campaign, or in the campaign's draft update
|
|
85
|
-
for a draft. An active campaign keeps its pin; to try a new approach, make a
|
|
86
|
-
successor (below).
|
|
87
|
-
|
|
88
|
-
## New ideas
|
|
89
|
-
|
|
90
|
-
When you or the owner have a new idea for how to reach people:
|
|
91
|
-
|
|
92
|
-
1. Write the idea as one change: "Lead with email instead of a connection request",
|
|
93
|
-
"Add a phone step after the second email", "Offer a teardown, not a demo".
|
|
94
|
-
2. If it is a correction, save a new revision of the same approach.
|
|
95
|
-
3. If it is a different strategy, save a new approach named for the idea.
|
|
96
|
-
4. Test it with `audienti campaign successor ID` that changes only the approach, so
|
|
97
|
-
the old and new campaigns can be compared. Name what changed in the campaign notes.
|
|
98
|
-
5. Ask the owner before the successor starts.
|
|
99
|
-
|
|
100
|
-
## Done
|
|
101
|
-
|
|
102
|
-
Close your queue task with a note that names the approach, its revision and the
|
|
103
|
-
campaign it is pinned to: `audienti queue done TASK --note "Saved Founder-led outbound
|
|
104
|
-
r1, pinned to Logistics UK test"`.
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# Tool inventory format
|
|
2
|
-
|
|
3
|
-
Report what your runtime can use right now. One entry per connector or tool family.
|
|
4
|
-
|
|
5
|
-
```json
|
|
6
|
-
{
|
|
7
|
-
"runtime": { "name": "Claude Code", "model": "claude-opus-5-5" },
|
|
8
|
-
"entries": [
|
|
9
|
-
{ "category": "web_search", "name": "Web search", "access": ["read"], "status": "connected" },
|
|
10
|
-
{ "category": "email", "name": "Gmail", "access": ["read", "write", "send"], "status": "connected", "via": "Composio", "tools": ["gmail.search", "gmail.create_draft"] },
|
|
11
|
-
{ "category": "spreadsheet", "name": "Google Sheets", "access": ["read", "write"], "status": "connected" },
|
|
12
|
-
{ "category": "linkedin", "name": "LinkedIn", "access": ["read", "send"], "status": "connected", "via": "Composio" },
|
|
13
|
-
{ "category": "crm", "name": "Salesforce", "access": ["read"], "status": "needs_sign_in" },
|
|
14
|
-
{ "category": "scheduling", "name": "Routines", "access": ["write"], "status": "connected" }
|
|
15
|
-
]
|
|
16
|
-
}
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Fields
|
|
20
|
-
|
|
21
|
-
- `runtime.name`: your product or runtime as the owner knows it. `runtime.model` is
|
|
22
|
-
optional.
|
|
23
|
-
- `category`: one of `web_search`, `web_browse`, `people_data`, `company_data`,
|
|
24
|
-
`email`, `linkedin`, `social`, `crm`, `spreadsheet`, `docs`, `chat`, `calendar`,
|
|
25
|
-
`tasks`, `files`, `code`, `scheduling`, `memory`, `other`.
|
|
26
|
-
- `name`: the connector name as the owner would recognize it (Gmail, HubSpot, Slack,
|
|
27
|
-
X). At most 80 characters. One entry per category and name.
|
|
28
|
-
- `access`: any of `read`, `write`, `send`. `send` means it can deliver a message to
|
|
29
|
-
another person (email, DM, post). Drafting is `write`.
|
|
30
|
-
- `status`: `connected` when you can call it now, `needs_sign_in` when it is installed
|
|
31
|
-
but signed out, `unavailable` when it exists but fails.
|
|
32
|
-
- `via`: optional. How you reach it when it is not built in: an integration hub or
|
|
33
|
-
aggregator such as Composio or Treg, or an MCP server name. Leave it out for native
|
|
34
|
-
connectors built into your runtime.
|
|
35
|
-
- `tools`: optional tool IDs you would call, at most 16.
|
|
36
|
-
|
|
37
|
-
At most 64 entries and 32 KiB. Leave out anything you cannot call. Never include
|
|
38
|
-
account secrets, tokens or personal data about the owner's contacts.
|
|
39
|
-
|
|
40
|
-
## Categories, with examples
|
|
41
|
-
|
|
42
|
-
| Category | Examples |
|
|
43
|
-
| --- | --- |
|
|
44
|
-
| `web_search`, `web_browse` | built-in search, a browser, a fetch tool |
|
|
45
|
-
| `people_data`, `company_data` | enrichment or lookup providers |
|
|
46
|
-
| `email` | Gmail, Outlook |
|
|
47
|
-
| `linkedin`, `social` | LinkedIn seat tools, X, Reddit |
|
|
48
|
-
| `crm` | Salesforce, HubSpot, Attio |
|
|
49
|
-
| `spreadsheet`, `docs` | Google Sheets, Excel, Notion, Google Docs |
|
|
50
|
-
| `chat`, `calendar`, `tasks` | Slack, Google Calendar, Linear |
|
|
51
|
-
| `files`, `code` | file storage, a code or shell sandbox |
|
|
52
|
-
| `scheduling`, `memory` | routines, cron, saved memories |
|