@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.
Files changed (56) hide show
  1. package/README.md +2 -2
  2. package/cli/account-reply-operations.mjs +24 -1
  3. package/cli/agents.mjs +42 -10
  4. package/cli/audience-operations.mjs +1 -1
  5. package/cli/audienti.mjs +33 -18
  6. package/cli/campaign-find.mjs +155 -0
  7. package/cli/campaign-operations.mjs +8 -4
  8. package/cli/campaigns.mjs +34 -3
  9. package/cli/cohort-operations.mjs +1 -1
  10. package/cli/discovery-operations.mjs +2 -1
  11. package/cli/discovery.mjs +2 -1
  12. package/cli/kv-operations.mjs +17 -0
  13. package/cli/kv.mjs +58 -0
  14. package/cli/mcp.mjs +2 -2
  15. package/cli/outcome-operations.mjs +19 -0
  16. package/cli/outcomes.mjs +16 -0
  17. package/cli/owner-account-client.mjs +1 -1
  18. package/cli/{approach-operations.mjs → playbook-operations.mjs} +15 -15
  19. package/cli/progress.mjs +7 -7
  20. package/cli/question-operations.mjs +4 -4
  21. package/cli/questions.mjs +4 -4
  22. package/cli/queue-operations.mjs +7 -6
  23. package/cli/queue.mjs +4 -3
  24. package/cli/recipient-operations.mjs +1 -1
  25. package/cli/recipients.mjs +6 -2
  26. package/cli/rooms-operations.mjs +4 -4
  27. package/cli/rooms.mjs +4 -4
  28. package/cli/secret-operations.mjs +7 -0
  29. package/cli/secrets.mjs +30 -0
  30. package/cli/sender-account-operations.mjs +6 -2
  31. package/cli/sender-accounts.mjs +13 -8
  32. package/cli/skills.mjs +5 -5
  33. package/cli/tools-operations.mjs +18 -10
  34. package/cli/tools.mjs +48 -20
  35. package/cli/work-execution-operations.mjs +6 -0
  36. package/cli/work-execution.mjs +3 -3
  37. package/cli/work-operations.mjs +4 -3
  38. package/cli/work.mjs +2 -2
  39. package/cli/workspaces.mjs +24 -14
  40. package/package.json +2 -2
  41. package/skills/agent-rooms/SKILL.md +13 -11
  42. package/skills/agent-rooms/references/commands.md +2 -2
  43. package/skills/audienti/SKILL.md +80 -0
  44. package/skills/getting-started/SKILL.md +186 -158
  45. package/skills/getting-started/references/audience.md +72 -7
  46. package/skills/getting-started/references/campaign-draft.md +53 -11
  47. package/skills/getting-started/references/capabilities.md +219 -0
  48. package/skills/getting-started/references/mailbox-check.md +64 -0
  49. package/skills/getting-started/references/outcome-checks.md +89 -0
  50. package/skills/getting-started/references/replies.md +152 -0
  51. package/skills/getting-started/references/reply-checks.md +54 -0
  52. package/skills/playbook-design/SKILL.md +132 -0
  53. package/skills/{approach-design → playbook-design}/references/fields.md +28 -22
  54. package/source-manifest.json +54 -43
  55. package/skills/approach-design/SKILL.md +0 -104
  56. 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 |