@sellable/mcp 0.1.957 → 0.1.959
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/agents/post-find-leads-message-scout.md +4 -4
- package/agents/registry.json +1 -1
- package/dist/server.js +2 -2
- package/dist/tools/campaigns.js +5 -4
- package/dist/tools/prompts.d.ts +12 -4
- package/dist/tools/prompts.js +23 -7
- package/dist/tools/refill-v3-advance.js +1 -1
- package/dist/tools/refill-v3-campaign-work.d.ts +6 -0
- package/dist/tools/refill-v3-continue-contract.d.ts +4 -0
- package/dist/tools/refill-v3-continue-contract.js +3 -0
- package/dist/tools/refill-v3-continue.d.ts +18 -5
- package/dist/tools/refill-v3-continue.js +177 -85
- package/dist/tools/registry.d.ts +6 -2
- package/package.json +1 -1
- package/skills/create-campaign/SKILL.md +3 -3
- package/skills/create-campaign-v2/SKILL.md +1 -1
- package/skills/create-campaign-v2/SOUL.md +2 -1
- package/skills/create-campaign-v2/core/policy.md +2 -2
- package/skills/create-campaign-v2/references/approval-gate-framing.md +2 -1
- package/skills/create-campaign-v2/references/message-approach.md +25 -16
- package/skills/create-campaign-v2/references/parallel-critique-protocol.md +2 -2
- package/skills/create-campaign-v2/references/sample-validation-loop.md +1 -1
- package/skills/create-campaign-v2-tail/SKILL.md +2 -2
- package/skills/create-campaign-v2-validation/SKILL.md +2 -2
- package/skills/{conversation-chess → draft-message}/SKILL.md +2 -2
- package/skills/{conversation-chess → draft-message}/compiled/follow-up/endpoint.md +1 -1
- package/skills/{conversation-chess → draft-message}/compiled/follow-up/semantic.md +3 -3
- package/skills/{conversation-chess → draft-message}/compiled/manifest.json +22 -22
- package/skills/{conversation-chess → draft-message}/compiled/opener/endpoint.md +1 -1
- package/skills/{conversation-chess → draft-message}/compiled/opener/semantic.md +3 -3
- package/skills/{conversation-chess → draft-message}/compiled/reply/endpoint.md +1 -1
- package/skills/{conversation-chess → draft-message}/compiled/reply/semantic.md +3 -3
- package/skills/{conversation-chess → draft-message}/installed/SKILL.md +7 -6
- package/skills/first-campaign-onboarding/SKILL.md +8 -7
- package/skills/generate-messages/SKILL.md +13 -11
- package/skills/refill-sends/SKILL.md +7 -0
- package/skills/refill-sends-workflow/SKILL.md +7 -0
- package/skills/weekly-campaign-summary/SKILL.md +1 -1
- /package/skills/{conversation-chess → draft-message}/core/input-contract.md +0 -0
- /package/skills/{conversation-chess → draft-message}/core/situation-index.json +0 -0
- /package/skills/{conversation-chess → draft-message}/modes/follow-up.md +0 -0
- /package/skills/{conversation-chess → draft-message}/modes/opener.md +0 -0
- /package/skills/{conversation-chess → draft-message}/modes/reply.md +0 -0
- /package/skills/{conversation-chess → draft-message}/references/follow-ups.md +0 -0
- /package/skills/{conversation-chess → draft-message}/references/opener-editor.md +0 -0
- /package/skills/{conversation-chess → draft-message}/references/openers.md +0 -0
- /package/skills/{conversation-chess → draft-message}/references/rapport.md +0 -0
- /package/skills/{conversation-chess → draft-message}/references/replies.md +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: sellable-dev-
|
|
3
|
-
description: Draft from the explicitly selected
|
|
2
|
+
name: sellable-dev-draft-message
|
|
3
|
+
description: Draft from the explicitly selected Draft Message mode.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Draft Message
|
|
7
7
|
|
|
8
8
|
One draft for the actual sender/situation. Rules/modes/examples loaded: select relevant ones; never fetch assets. Synthetic examples and histories: their facts, links and outcomes are not customer evidence. Creative rapport needs scoped permission.
|
|
9
9
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "conversation-chess-compiled/v1",
|
|
3
|
-
"compilerSha256": "
|
|
3
|
+
"compilerSha256": "8ae72b0245fff2ee08d0b6e7ec1ba611956a8ac194f091bf4c35e71fe0ef4ffb",
|
|
4
4
|
"selectedModes": [
|
|
5
5
|
"OPENER",
|
|
6
6
|
"REPLY",
|
|
@@ -90,47 +90,47 @@
|
|
|
90
90
|
"utf16Characters": 3429
|
|
91
91
|
},
|
|
92
92
|
"compiled/opener/endpoint.md": {
|
|
93
|
-
"sha256": "
|
|
94
|
-
"utf8Bytes":
|
|
95
|
-
"utf16Characters":
|
|
93
|
+
"sha256": "ac515f8e5eeca13b18a18a2e72c3a0e0a6bc46b63f108f766efc1b869620ddc8",
|
|
94
|
+
"utf8Bytes": 22694,
|
|
95
|
+
"utf16Characters": 22548
|
|
96
96
|
},
|
|
97
97
|
"compiled/opener/semantic.md": {
|
|
98
|
-
"sha256": "
|
|
99
|
-
"utf8Bytes":
|
|
100
|
-
"utf16Characters":
|
|
98
|
+
"sha256": "6929c7f351a81e006aae335b7e47f5beabc4e33f795052c54bd3e458626228f9",
|
|
99
|
+
"utf8Bytes": 22385,
|
|
100
|
+
"utf16Characters": 22241
|
|
101
101
|
},
|
|
102
102
|
"compiled/opener/manifest.json": {
|
|
103
|
-
"sha256": "
|
|
103
|
+
"sha256": "14a2fd9ff3bcfddef9bdcb30a25f4228ec56a053982552184e2a61bcb317e278",
|
|
104
104
|
"utf8Bytes": 1728,
|
|
105
105
|
"utf16Characters": 1728
|
|
106
106
|
},
|
|
107
107
|
"compiled/reply/endpoint.md": {
|
|
108
|
-
"sha256": "
|
|
109
|
-
"utf8Bytes":
|
|
110
|
-
"utf16Characters":
|
|
108
|
+
"sha256": "067abd6a6270d3a09d1ec8fbebfe38e061e46f762693e61bb59a412d7e31861d",
|
|
109
|
+
"utf8Bytes": 12477,
|
|
110
|
+
"utf16Characters": 12431
|
|
111
111
|
},
|
|
112
112
|
"compiled/reply/semantic.md": {
|
|
113
|
-
"sha256": "
|
|
114
|
-
"utf8Bytes":
|
|
115
|
-
"utf16Characters":
|
|
113
|
+
"sha256": "f3dc1d637a3629e1f80750af1ff856a9cb9a036e871fed1540da2f8b43462684",
|
|
114
|
+
"utf8Bytes": 12168,
|
|
115
|
+
"utf16Characters": 12124
|
|
116
116
|
},
|
|
117
117
|
"compiled/reply/manifest.json": {
|
|
118
|
-
"sha256": "
|
|
118
|
+
"sha256": "7b3746fa5a1a11a5896f4b6631e1b9ab98a5b0fa248e5fc546e7e881698fcfc4",
|
|
119
119
|
"utf8Bytes": 1528,
|
|
120
120
|
"utf16Characters": 1528
|
|
121
121
|
},
|
|
122
122
|
"compiled/follow-up/endpoint.md": {
|
|
123
|
-
"sha256": "
|
|
124
|
-
"utf8Bytes":
|
|
125
|
-
"utf16Characters":
|
|
123
|
+
"sha256": "c81746801468832fe05ec996756dc550b6138683f89326578d5d0d9e2deb77ca",
|
|
124
|
+
"utf8Bytes": 8726,
|
|
125
|
+
"utf16Characters": 8692
|
|
126
126
|
},
|
|
127
127
|
"compiled/follow-up/semantic.md": {
|
|
128
|
-
"sha256": "
|
|
129
|
-
"utf8Bytes":
|
|
130
|
-
"utf16Characters":
|
|
128
|
+
"sha256": "9db268a5d21811e4ac0b45b651f7439eb2da8eff99e47381eb9c7c2e531efc37",
|
|
129
|
+
"utf8Bytes": 8417,
|
|
130
|
+
"utf16Characters": 8385
|
|
131
131
|
},
|
|
132
132
|
"compiled/follow-up/manifest.json": {
|
|
133
|
-
"sha256": "
|
|
133
|
+
"sha256": "65a2454e9f1e0055afca8b02c17bf28e054aba77d86cbcaea398e813db2412d1",
|
|
134
134
|
"utf8Bytes": 1432,
|
|
135
135
|
"utf16Characters": 1432
|
|
136
136
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Draft Message
|
|
2
2
|
|
|
3
3
|
One draft for the actual sender/situation. Rules/modes/examples loaded: select relevant ones; never fetch assets. Synthetic examples and histories: their facts, links and outcomes are not customer evidence. Creative rapport needs scoped permission.
|
|
4
4
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: sellable-dev-
|
|
3
|
-
description: Draft from the explicitly selected
|
|
2
|
+
name: sellable-dev-draft-message
|
|
3
|
+
description: Draft from the explicitly selected Draft Message mode.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Draft Message
|
|
7
7
|
|
|
8
8
|
One draft for the actual sender/situation. Rules/modes/examples loaded: select relevant ones; never fetch assets. Synthetic examples and histories: their facts, links and outcomes are not customer evidence. Creative rapport needs scoped permission.
|
|
9
9
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Draft Message
|
|
2
2
|
|
|
3
3
|
One draft for the actual sender/situation. Rules/modes/examples loaded: select relevant ones; never fetch assets. Synthetic examples and histories: their facts, links and outcomes are not customer evidence. Creative rapport needs scoped permission.
|
|
4
4
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: sellable-dev-
|
|
3
|
-
description: Draft from the explicitly selected
|
|
2
|
+
name: sellable-dev-draft-message
|
|
3
|
+
description: Draft from the explicitly selected Draft Message mode.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Draft Message
|
|
7
7
|
|
|
8
8
|
One draft for the actual sender/situation. Rules/modes/examples loaded: select relevant ones; never fetch assets. Synthetic examples and histories: their facts, links and outcomes are not customer evidence. Creative rapport needs scoped permission.
|
|
9
9
|
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: Draft
|
|
2
|
+
name: draft-message
|
|
3
|
+
description: Draft one opener, reply or follow-up as the current sender, from their offer and the conversation. Nothing is sent. Start with the Sellable get_subskill_prompt tool for subskillName draft-message.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Sellable
|
|
6
|
+
# Sellable Draft Message
|
|
7
7
|
|
|
8
|
-
Use this skill for one
|
|
8
|
+
Use this skill for one message draft, in either campaign approach
|
|
9
|
+
(Conversations or Message Testing). It does not send messages, schedule,
|
|
9
10
|
book, approve templates, enroll prospects or change stored sender context.
|
|
10
11
|
Campaign creation and row persistence remain with their existing owners.
|
|
11
12
|
|
|
12
|
-
1. Load `mcp__sellable__get_subskill_prompt({ subskillName: "
|
|
13
|
+
1. Load `mcp__sellable__get_subskill_prompt({ subskillName: "draft-message" })`.
|
|
13
14
|
Read every page using its `nextOffset` until `hasMore` is false. Do not
|
|
14
15
|
reconstruct the prompt from memory, a repository or a plugin-cache path.
|
|
15
16
|
2. Load `core/input-contract.md` through
|
|
16
|
-
`mcp__sellable__get_subskill_asset({ subskillName: "
|
|
17
|
+
`mcp__sellable__get_subskill_asset({ subskillName: "draft-message", assetPath: "..." })`.
|
|
17
18
|
Then load the selected guide and examples from the root prompt:
|
|
18
19
|
OPENER uses `modes/opener.md` + `references/openers.md` + `references/rapport.md` +
|
|
19
20
|
`references/opener-editor.md`; REPLY uses
|
|
@@ -245,8 +245,8 @@ continue in the same conversation; do not ask the user to run another command.
|
|
|
245
245
|
sending account: the latter belongs at Settings, not before the draft.
|
|
246
246
|
The flow's order and state gates still hold: the campaign exists before
|
|
247
247
|
anyone is imported, the source is chosen before the import, sample rows
|
|
248
|
-
exist before filters and messages run, and
|
|
249
|
-
anything is queued. Who decides each one is set by the next section. Offer
|
|
248
|
+
exist before filters and messages run, and in Message Testing the template
|
|
249
|
+
is saved before anything is queued. Who decides each one is set by the next section. Offer
|
|
250
250
|
CRM or meeting integrations only as optional context when helpful.
|
|
251
251
|
4. Reuse an existing draft for the same goal. Never create a duplicate because
|
|
252
252
|
onboarding resumed in a new session.
|
|
@@ -304,11 +304,12 @@ for the message template: those are yours to decide and report.
|
|
|
304
304
|
**How the first message is written.** The first campaign uses the
|
|
305
305
|
Conversations approach from the workflow's `references/message-approach.md`:
|
|
306
306
|
create it with `messageApproach: "conversation"`, write no message template,
|
|
307
|
-
and let Sellable
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
307
|
+
and let Sellable write each first message for the person. Use Message Testing
|
|
308
|
+
(`"message_test"`, one approved message to everyone) only when the customer
|
|
309
|
+
asks to send the same message to everyone, to test copy, or to approve exact
|
|
310
|
+
wording; then the template steps of the workflow apply and you approve the
|
|
311
|
+
template yourself as before. Name the approach to the customer with the
|
|
312
|
+
one-line descriptions in `references/message-approach.md`.
|
|
312
313
|
|
|
313
314
|
**Approval 1: direction.** After research, write the brief, create the
|
|
314
315
|
campaign with it (`create_campaign`), and post one message in this shape. The
|
|
@@ -1,24 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: generate-messages
|
|
3
|
-
description: Draft campaign recommendations and row messages through
|
|
3
|
+
description: Draft campaign recommendations and row messages through draft-message while preserving approved templates, scoped context and review ownership.
|
|
4
4
|
visibility: internal
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Generate Messages
|
|
8
8
|
|
|
9
|
-
Own campaign drafting mechanics.
|
|
9
|
+
Own campaign drafting mechanics. draft-message owns NEW, UNAPPROVED copy.
|
|
10
10
|
Do not combine its conversational move with a second product-clarity, CTA,
|
|
11
11
|
three-candidate, finalizer or writer-agent recipe. Explicit operator instructions
|
|
12
12
|
and approved template authority remain intact; no new writing-strategy flag exists.
|
|
13
13
|
`useMessagingTemplate` and `messagingModeChoice` are review/delivery choices.
|
|
14
|
+
A Conversations campaign (`messageApproach: "conversation"`) has no template
|
|
15
|
+
and skips Mode 0; its first messages are written per row by the backend.
|
|
14
16
|
|
|
15
17
|
## Execution Modes
|
|
16
18
|
|
|
17
19
|
### Mode 0: Message Drafting Branch
|
|
18
20
|
|
|
19
21
|
If you are the main task fulfilling a create-campaign request, you remain the
|
|
20
|
-
campaign parent while drafting inline. Loading generate-messages or
|
|
21
|
-
|
|
22
|
+
campaign parent while drafting inline. Loading generate-messages or
|
|
23
|
+
draft-message does not turn you into the read-only scout. Only an actually delegated
|
|
22
24
|
scout returns its recommendation without campaign writes. As the parent, use
|
|
23
25
|
the existing `update_campaign` active and ready handoff below, then show the
|
|
24
26
|
recommendation for review. Complete that durable handoff before your final ready
|
|
@@ -37,7 +39,7 @@ Missing saved filter rubrics does not block this branch: the parent may still
|
|
|
37
39
|
be saving filters. Keep the first valid recommendation usable when only later
|
|
38
40
|
filter/enrichment detail changes; an enriched rewrite needs explicit opt-in.
|
|
39
41
|
|
|
40
|
-
Use the attested campaign/client/offer basis and the
|
|
42
|
+
Use the attested campaign/client/offer basis and the draft-message loading path below.
|
|
41
43
|
Mode 0 does not require a connected senderId: sender selection belongs to
|
|
42
44
|
Settings after message approval. Do not call get_sender/list_senders during
|
|
43
45
|
create-campaign message review. Use supplied scoped company/default facts
|
|
@@ -97,7 +99,7 @@ An approved literal template is rendered by the existing deterministic owner;
|
|
|
97
99
|
do not generate replacement copy, replace its approved claims or use a stale
|
|
98
100
|
cached draft instead. Template tokens may be filled only within their approved
|
|
99
101
|
semantics. Explicit operator revision is a proposed change until its existing
|
|
100
|
-
approval owner accepts it. New unapproved recommendations use
|
|
102
|
+
approval owner accepts it. New unapproved recommendations use draft-message.
|
|
101
103
|
|
|
102
104
|
Draft one row before scaling. Show the message; save to an empty message cell
|
|
103
105
|
only within the caller's requested drafting scope and report “Draft saved (not
|
|
@@ -179,8 +181,8 @@ Without that permission, use honest present reactions and general humor.
|
|
|
179
181
|
|
|
180
182
|
## Reference Asset Loading
|
|
181
183
|
|
|
182
|
-
1. Load `get_subskill_prompt({subskillName:"
|
|
183
|
-
2. Through `get_subskill_asset`, load
|
|
184
|
+
1. Load `get_subskill_prompt({subskillName:"draft-message"})` completely.
|
|
185
|
+
2. Through `get_subskill_asset`, load draft-message's
|
|
184
186
|
`core/input-contract.md` completely.
|
|
185
187
|
3. Select the actual workKind and load its guide/examples named by the root:
|
|
186
188
|
OPENER: `modes/opener.md`, `references/openers.md` and `references/rapport.md`;
|
|
@@ -201,13 +203,13 @@ Load assets through MCP, not repository/plugin-cache/local file paths. Missing
|
|
|
201
203
|
required assets returns existing `blocked` / `retry-needed`; do not draft from
|
|
202
204
|
memory or invent a native schema field. Track exact loaded IDs internally.
|
|
203
205
|
No mandatory old gold-standard examples, cleanup pack, parallel critics or
|
|
204
|
-
multi-angle finalizer applies to
|
|
206
|
+
multi-angle finalizer applies to draft-message. If the user explicitly supplies a
|
|
205
207
|
specific approved template or different writing instruction, preserve it
|
|
206
208
|
within the same factual, scope and approval boundaries.
|
|
207
209
|
|
|
208
210
|
## Draft And Check Once
|
|
209
211
|
|
|
210
|
-
Follow the selected
|
|
212
|
+
Follow the selected draft-message situation. Confirm, reveal something relevant, react,
|
|
211
213
|
answer, clarify or close as appropriate; no universal sentence/bubble count,
|
|
212
214
|
forced question, product explanation or CTA. Pay the latest owed answer before
|
|
213
215
|
advancing. Keep human and business topics available without forcing both into
|
|
@@ -240,7 +242,7 @@ senders, template text cannot assume one person's story/post ownership. Resolve
|
|
|
240
242
|
that at the actual row sender or choose a portable factual shape.
|
|
241
243
|
|
|
242
244
|
For offline `message-validation.md`, record Status, Mode, Lead Sample Basis,
|
|
243
|
-
current sender/offer sources, selected
|
|
245
|
+
current sender/offer sources, selected draft-message mode/example IDs, supported/missing
|
|
244
246
|
facts, the rendered sample messages, token rules when relevant, Findings and
|
|
245
247
|
Recommendation. Distinguish illustrative examples from observed responses.
|
|
246
248
|
Do not require candidate permutations, scores from imaginary agents or a long
|
|
@@ -823,6 +823,13 @@ process lives. If a server restart reports that retained attention is missing,
|
|
|
823
823
|
stop with `continuation_reconciliation_required` and the exact scope and last
|
|
824
824
|
receipt; do not invent a replacement run or claim the prior effect failed.
|
|
825
825
|
Never treat a timeout as zero effect.
|
|
826
|
+
A result carrying `recoveredFromError` means the continuation's work failed,
|
|
827
|
+
the MCP re-observed once, and the world had moved: handle that result by its
|
|
828
|
+
own kind and name the error in the final report. A thrown error is not a
|
|
829
|
+
terminal: the MCP still holds the run's current credential, so call
|
|
830
|
+
`refill_v3_advance` once more with the identical workspace, scope, campaignId,
|
|
831
|
+
and yolo grant. Report a blocker only if that fresh call fails with the same
|
|
832
|
+
error.
|
|
826
833
|
Continue the authorized refill across every connected sender and requested
|
|
827
834
|
lane until the coordinator returns row-complete terminal evidence. Preserve the
|
|
828
835
|
rubric, message, caps, and exclusions; pending work needs no renewed approval.
|
|
@@ -456,6 +456,13 @@ Each call answers with exactly one of six results:
|
|
|
456
456
|
restarted MCP reports missing retained attention, stop with
|
|
457
457
|
`continuation_reconciliation_required`, the exact scope, and the last receipt;
|
|
458
458
|
do not open a replacement run for an uncertain effect.
|
|
459
|
+
A result carrying `recoveredFromError` means the continuation's work failed,
|
|
460
|
+
the MCP re-observed once, and the world had moved: handle that result by its
|
|
461
|
+
own kind and name the error in the final report. A thrown error is not a
|
|
462
|
+
terminal: the MCP still holds the run's current credential, so call
|
|
463
|
+
`refill_v3_advance` once more with the identical workspace, scope,
|
|
464
|
+
campaignId, and yolo grant. Report a blocker only if that fresh call fails
|
|
465
|
+
with the same error.
|
|
459
466
|
Interpret its world wrappers
|
|
460
467
|
by their outer kind: `world_terminal` means `advanceResult` is already the
|
|
461
468
|
canonical `awaiting_external_change`, `complete`, or `blocked` terminal, so
|
|
@@ -29,7 +29,7 @@ Optional from the invoking prompt: workspace (default: active workspace), Slack
|
|
|
29
29
|
:fire: *Wins this week*
|
|
30
30
|
• *{Name}* ({short title}, @ {Company}, {size} staff) — _"{their words, ≤140 chars}"_
|
|
31
31
|
|
|
32
|
-
:speech_balloon: *
|
|
32
|
+
:speech_balloon: *Replies waiting on you*
|
|
33
33
|
• *{Name}* ({context}) — _"{quote}"_
|
|
34
34
|
|
|
35
35
|
:calendar: *Already working on next week*
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|