@sellable/install 0.1.145 → 0.1.147
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/bin/sellable-install.mjs +34 -19
- package/package.json +1 -1
- package/skill-templates/create-campaign.md +43 -30
package/bin/sellable-install.mjs
CHANGED
|
@@ -794,11 +794,15 @@ which posts are being sampled in the watched app. The watch guide should say
|
|
|
794
794
|
that we are checking people from these posts to confirm the right people are
|
|
795
795
|
actually engaging and the source is viable.
|
|
796
796
|
|
|
797
|
-
|
|
798
|
-
content. Show a \`Watch link:\` line once
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
797
|
+
Only the first brief approval handoff should include live campaign access after
|
|
798
|
+
the readable inline content. Show a short \`Watch link:\` line once, immediately
|
|
799
|
+
after shell creation and before brief approval. Later approval gates should
|
|
800
|
+
describe what the already-open campaign app is showing and rely on
|
|
801
|
+
currentStep/watchNarration; do not print the URL again unless the user asks or a
|
|
802
|
+
recovery path must replace a missing/broken link. In normal customer runs, do
|
|
803
|
+
not show local draft filenames or filesystem paths unless the user asks for
|
|
804
|
+
debug artifacts. The link is for deeper inspection; never use it as a substitute
|
|
805
|
+
for showing the content in chat.
|
|
802
806
|
|
|
803
807
|
Never mention MCP namespaces, prompt chunking, plugin cache paths, missing
|
|
804
808
|
linked skill versions, runbooks, or local skill files in normal customer-facing
|
|
@@ -807,14 +811,18 @@ copy.
|
|
|
807
811
|
## Codex Watch Link Handoff
|
|
808
812
|
|
|
809
813
|
When a campaign tool returns \`watchUrl\`, treat it as a user-opened app link, not
|
|
810
|
-
as permission to drive the browser. A valid handoff link must be
|
|
811
|
-
|
|
812
|
-
|
|
814
|
+
as permission to drive the browser. A valid first handoff link must be the exact
|
|
815
|
+
\`create_campaign.watchUrl\` value: a direct
|
|
816
|
+
\`/campaign-builder/{campaignId}?mode=claude|codex\` URL with \`workspaceId\` and
|
|
817
|
+
\`token\` query parameters for auto-login. \`create_campaign.watchUrl\`,
|
|
813
818
|
\`create_campaign({ campaignId }).watchUrl\`, and \`get_campaign.watchUrl\` are all
|
|
814
|
-
acceptable only when they return that direct campaign-builder shape.
|
|
819
|
+
acceptable only when they return that direct campaign-builder shape. Never
|
|
820
|
+
derive, shorten, reconstruct, or print a bare \`/campaign-builder/{campaignId}\`
|
|
821
|
+
URL.
|
|
815
822
|
|
|
816
823
|
Never call browser-opening tools, shell \`open\`, Computer Use, or in-app browser
|
|
817
|
-
automation just because a watch link exists. Print the
|
|
824
|
+
automation just because a watch link exists. Print the first watch link exactly
|
|
825
|
+
once, directly before the brief approval question, in this shape:
|
|
818
826
|
|
|
819
827
|
\`\`\`text
|
|
820
828
|
Campaign shell is ready. We'll keep building the campaign in this chat.
|
|
@@ -831,6 +839,9 @@ the link lands on auth, 404, permission, blank, or a visible error state, recove
|
|
|
831
839
|
a fresh watch link once with \`create_campaign({ campaignId })\` or \`get_campaign\`
|
|
832
840
|
and print that link. Do not claim the browser was opened, inspected, or
|
|
833
841
|
synchronized.
|
|
842
|
+
Do not print another \`Watch link:\` line during source/provider selection or
|
|
843
|
+
normal approval turns unless the user explicitly asks for the link or you are
|
|
844
|
+
recovering a missing/broken URL.
|
|
834
845
|
|
|
835
846
|
After every \`update_campaign({ campaignId, currentStep })\`, use
|
|
836
847
|
\`get_campaign_navigation_state\` when available as a compact orientation check:
|
|
@@ -1007,13 +1018,15 @@ recommendation; you can replace it with your current offer."
|
|
|
1007
1018
|
Before the identity gate, use this customer-facing shape:
|
|
1008
1019
|
|
|
1009
1020
|
\`\`\`text
|
|
1010
|
-
|
|
1021
|
+
You're in {workspace}.
|
|
1011
1022
|
|
|
1012
|
-
|
|
1013
|
-
context to recommend a target, offer, proof, and lead source, then you can
|
|
1014
|
-
correct anything stale before I build from it.
|
|
1023
|
+
Excited to help you launch your LinkedIn outbound campaign.
|
|
1015
1024
|
|
|
1016
|
-
|
|
1025
|
+
We're at setup: first I'll use your LinkedIn profile to understand the company,
|
|
1026
|
+
then I'll draft the campaign brief, help choose where to find buyers, review
|
|
1027
|
+
messages, and wait for final launch approval.
|
|
1028
|
+
|
|
1029
|
+
What's your LinkedIn profile URL or handle?
|
|
1017
1030
|
\`\`\`
|
|
1018
1031
|
|
|
1019
1032
|
Do not silently ask Codex intake or approval questions as plain chat when
|
|
@@ -1345,10 +1358,12 @@ approval should show who we are targeting, why they should care, the offer/CTA,
|
|
|
1345
1358
|
proof, lead source hypothesis, message angle, risks/assumptions, and what
|
|
1346
1359
|
happens after approval.
|
|
1347
1360
|
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1361
|
+
Only the first brief approval handoff should print the campaign watch URL. After
|
|
1362
|
+
that, every approval should say what the already-open app is showing, but must
|
|
1363
|
+
not include another \`Watch link:\` line unless the user explicitly asks for the
|
|
1364
|
+
link again or a recovery path needs to replace a broken/missing URL. Local
|
|
1365
|
+
artifacts are optional debug/UAT diagnostics only; do not surface file paths or
|
|
1366
|
+
local draft filenames in normal customer runs.
|
|
1352
1367
|
|
|
1353
1368
|
This applies especially to message approvals. Never ask someone to approve a
|
|
1354
1369
|
message they cannot see. Show the subject, tokenized template, a filled sample
|
package/package.json
CHANGED
|
@@ -287,12 +287,16 @@ Use rendered Markdown for user review surfaces, not fenced code blocks. Keep
|
|
|
287
287
|
lines short, use indexed section labels and bullets, and translate internal
|
|
288
288
|
sourcing terms into plain language.
|
|
289
289
|
|
|
290
|
-
|
|
291
|
-
content. Show a short `Watch link:` line once
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
290
|
+
Only the first brief approval handoff should include live campaign access after
|
|
291
|
+
the readable inline content. Show a short `Watch link:` line once, immediately
|
|
292
|
+
after shell creation and before brief approval. Later approval gates should
|
|
293
|
+
describe what the already-open campaign app is showing and rely on
|
|
294
|
+
currentStep/watchNarration; do not print the URL again unless the user asks or a
|
|
295
|
+
recovery path must replace a missing/broken link. In normal customer runs, do
|
|
296
|
+
not show `Open artifact:` lines, raw filesystem paths, or local draft filenames.
|
|
297
|
+
Local artifacts are debug/UAT-only unless the user asks for them. The link is
|
|
298
|
+
for deeper inspection; never use it as a substitute for showing the content in
|
|
299
|
+
chat.
|
|
296
300
|
|
|
297
301
|
Never mention MCP namespaces, prompt chunking, plugin cache paths, missing
|
|
298
302
|
linked skill versions, runbooks, npm/package details, repo-local files, VPS or
|
|
@@ -302,14 +306,18 @@ copy.
|
|
|
302
306
|
## Codex Watch Link Handoff
|
|
303
307
|
|
|
304
308
|
When a campaign tool returns `watchUrl`, treat it as a user-opened app link, not
|
|
305
|
-
as permission to drive the browser. A valid handoff link must be
|
|
306
|
-
|
|
307
|
-
|
|
309
|
+
as permission to drive the browser. A valid first handoff link must be the exact
|
|
310
|
+
`create_campaign.watchUrl` value: a direct
|
|
311
|
+
`/campaign-builder/{campaignId}?mode=claude|codex` URL with `workspaceId` and
|
|
312
|
+
`token` query parameters for auto-login. `create_campaign.watchUrl`,
|
|
308
313
|
`create_campaign({ campaignId }).watchUrl`, and `get_campaign.watchUrl` are all
|
|
309
|
-
acceptable only when they return that direct campaign-builder shape.
|
|
314
|
+
acceptable only when they return that direct campaign-builder shape. Never
|
|
315
|
+
derive, shorten, reconstruct, or print a bare `/campaign-builder/{campaignId}`
|
|
316
|
+
URL.
|
|
310
317
|
|
|
311
318
|
Never call browser-opening tools, shell `open`, Computer Use, or in-app browser
|
|
312
|
-
automation just because a watch link exists. Print the
|
|
319
|
+
automation just because a watch link exists. Print the first watch link exactly
|
|
320
|
+
once, directly before the brief approval question, in this shape:
|
|
313
321
|
|
|
314
322
|
```text
|
|
315
323
|
Campaign shell is ready. We'll keep building the campaign in this chat.
|
|
@@ -331,6 +339,9 @@ Never print a placeholder watch link such as "Open campaign" or "link will
|
|
|
331
339
|
update once the shell is created." If the shell is not created yet, call
|
|
332
340
|
`create_campaign` first. If `create_campaign` does not return `watchUrl`, stop
|
|
333
341
|
and surface the missing watch-link error before lead sourcing.
|
|
342
|
+
Do not print another `Watch link:` line during source/provider selection or
|
|
343
|
+
normal approval turns unless the user explicitly asks for the link or you are
|
|
344
|
+
recovering a missing/broken URL.
|
|
334
345
|
|
|
335
346
|
After every `update_campaign({ campaignId, currentStep })`, use
|
|
336
347
|
`get_campaign_navigation_state` when available as a compact orientation check:
|
|
@@ -552,14 +563,15 @@ the run. Treat YOLO as `interactionMode: "autonomous"` plus an intake policy:
|
|
|
552
563
|
Before the identity gate, use this customer-facing shape:
|
|
553
564
|
|
|
554
565
|
```text
|
|
555
|
-
|
|
566
|
+
You're in {workspace}.
|
|
556
567
|
|
|
557
|
-
|
|
558
|
-
context to recommend a target, offer, proof, and lead source, then you can
|
|
559
|
-
correct anything stale before I build from it.
|
|
568
|
+
Excited to help you launch your LinkedIn outbound campaign.
|
|
560
569
|
|
|
561
|
-
|
|
562
|
-
|
|
570
|
+
We're at setup: first I'll use your LinkedIn profile to understand the company,
|
|
571
|
+
then I'll draft the campaign brief, help choose where to find buyers, review
|
|
572
|
+
messages, and wait for final launch approval.
|
|
573
|
+
|
|
574
|
+
What's your LinkedIn profile URL or handle?
|
|
563
575
|
```
|
|
564
576
|
|
|
565
577
|
Do not silently ask Codex intake or approval questions as plain chat when
|
|
@@ -684,26 +696,27 @@ updates.
|
|
|
684
696
|
been written. Your IMMEDIATE next visible message branches on
|
|
685
697
|
`isReturningUser` from the tool result:
|
|
686
698
|
|
|
687
|
-
- If `isReturningUser === true`,
|
|
688
|
-
|
|
689
|
-
(substituting `activeWorkspaceName` exactly):
|
|
699
|
+
- If `isReturningUser === true`, use `activeWorkspaceName` when present,
|
|
700
|
+
otherwise `activeWorkspaceId`, as `{workspaceLabel}`:
|
|
690
701
|
|
|
691
702
|
```text
|
|
692
|
-
You're in
|
|
693
|
-
```
|
|
703
|
+
You're in {workspaceLabel}.
|
|
694
704
|
|
|
695
|
-
|
|
705
|
+
Excited to help you launch your LinkedIn outbound campaign. We're at setup: first I'll use your LinkedIn profile to understand the company, then I'll draft the campaign brief, help choose where to find buyers, review messages, and wait for final launch approval.
|
|
696
706
|
|
|
697
|
-
|
|
707
|
+
What's your LinkedIn profile URL or handle?
|
|
708
|
+
```
|
|
698
709
|
|
|
699
|
-
- If `isReturningUser === false`,
|
|
700
|
-
|
|
710
|
+
- If `isReturningUser === false`, use `activeWorkspaceName` when present,
|
|
711
|
+
otherwise `activeWorkspaceId`, as `{workspaceLabel}`:
|
|
701
712
|
|
|
702
|
-
|
|
703
|
-
|
|
713
|
+
```text
|
|
714
|
+
You're set up in {workspaceLabel}.
|
|
715
|
+
|
|
716
|
+
Excited to help you launch your LinkedIn outbound campaign. We're at setup: first I'll use your LinkedIn profile to understand the company, then I'll draft the campaign brief, help choose where to find buyers, review messages, and wait for final launch approval.
|
|
704
717
|
|
|
705
|
-
|
|
706
|
-
|
|
718
|
+
What's your LinkedIn profile URL or handle?
|
|
719
|
+
```
|
|
707
720
|
|
|
708
721
|
No other lines. No "all set", no "signed in", no other acknowledgement.
|
|
709
722
|
|